From 3110d00ee7cb7e031941e8ccea16ed9a4c4d480b Mon Sep 17 00:00:00 2001 From: nguyen dung Date: Fri, 18 Feb 2022 19:09:35 +0700 Subject: [PATCH] add wp-rocket --- .htaccess | 108 +- wp-config.php | 2 +- wp-content/advanced-cache.php | 81 + wp-content/cache/busting/index.html | 0 wp-content/cache/critical-css/index.html | 0 .../min/1/129b71b95f0aef75c3b9a87a275e7213.js | 8 + .../1/129b71b95f0aef75c3b9a87a275e7213.js.gz | Bin 0 -> 64557 bytes .../1/19cebb0184f1dcc00197285669963163.css | 1 + .../1/19cebb0184f1dcc00197285669963163.css.gz | Bin 0 -> 48345 bytes .../1/28ddaf2bd7547e4cd818ca3342088a73.css | 1 + .../1/28ddaf2bd7547e4cd818ca3342088a73.css.gz | Bin 0 -> 48042 bytes .../min/1/2a9aacae424531c5db9e4be096ae42c1.js | 9 + .../1/2a9aacae424531c5db9e4be096ae42c1.js.gz | Bin 0 -> 65675 bytes wp-content/cache/min/index.html | 0 wp-content/cache/wp-rocket/.htaccess | 3 + wp-content/cache/wp-rocket/index.html | 0 .../index-mobile.html | 861 ++++ .../index-mobile.html_gzip | Bin 0 -> 14804 bytes .../index.html | 879 ++++ .../index.html_gzip | Bin 0 -> 14966 bytes .../index-mobile.html | 1030 ++++ .../index-mobile.html_gzip | Bin 0 -> 22100 bytes .../index.html | 1048 ++++ .../index.html_gzip | Bin 0 -> 22240 bytes .../index-mobile.html | 1024 ++++ .../index-mobile.html_gzip | Bin 0 -> 21957 bytes .../index.html | 1042 ++++ .../index.html_gzip | Bin 0 -> 22105 bytes .../index-mobile.html | 1011 ++++ .../index-mobile.html_gzip | Bin 0 -> 20178 bytes .../index.html | 1029 ++++ .../index.html_gzip | Bin 0 -> 20335 bytes .../index-mobile.html | 1017 ++++ .../index-mobile.html_gzip | Bin 0 -> 20613 bytes .../index.html | 1035 ++++ .../index.html_gzip | Bin 0 -> 20770 bytes .../index-mobile.html | 1080 ++++ .../index-mobile.html_gzip | Bin 0 -> 17987 bytes .../index.html | 1098 ++++ .../index.html_gzip | Bin 0 -> 18141 bytes .../index-mobile.html | 1240 +++++ .../index-mobile.html_gzip | Bin 0 -> 21130 bytes .../index.html | 1258 +++++ .../index.html_gzip | Bin 0 -> 21286 bytes .../index-mobile.html | 1035 ++++ .../index-mobile.html_gzip | Bin 0 -> 22719 bytes .../index.html | 1053 ++++ .../index.html_gzip | Bin 0 -> 22874 bytes .../index-mobile.html | 1228 +++++ .../index-mobile.html_gzip | Bin 0 -> 22457 bytes .../index.html | 1246 +++++ .../index.html_gzip | Bin 0 -> 22609 bytes .../index-mobile.html | 976 ++++ .../index-mobile.html_gzip | Bin 0 -> 20179 bytes .../index.html | 994 ++++ .../index.html_gzip | Bin 0 -> 20334 bytes .../index-mobile.html | 948 ++++ .../index-mobile.html_gzip | Bin 0 -> 18723 bytes .../index.html | 966 ++++ .../index.html_gzip | Bin 0 -> 18875 bytes .../index-mobile.html | 930 ++++ .../index-mobile.html_gzip | Bin 0 -> 18166 bytes .../index.html | 948 ++++ .../index.html_gzip | Bin 0 -> 18317 bytes .../biet-thu-2-tang/index-mobile.html | 830 +++ .../biet-thu-2-tang/index-mobile.html_gzip | Bin 0 -> 12038 bytes .../biet-thu/biet-thu-2-tang/index.html | 848 +++ .../biet-thu/biet-thu-2-tang/index.html_gzip | Bin 0 -> 12209 bytes .../biet-thu-3-tang/index-mobile.html | 876 ++++ .../biet-thu-3-tang/index-mobile.html_gzip | Bin 0 -> 12140 bytes .../biet-thu/biet-thu-3-tang/index.html | 894 ++++ .../biet-thu/biet-thu-3-tang/index.html_gzip | Bin 0 -> 12309 bytes .../index-mobile.html | 804 +++ .../index-mobile.html_gzip | Bin 0 -> 11203 bytes .../biet-thu-nha-vuon-1-tang/index.html | 822 +++ .../biet-thu-nha-vuon-1-tang/index.html_gzip | Bin 0 -> 11381 bytes .../category/biet-thu/index-mobile.html | 968 ++++ .../category/biet-thu/index-mobile.html_gzip | Bin 0 -> 12692 bytes .../localhost/category/biet-thu/index.html | 986 ++++ .../category/biet-thu/index.html_gzip | Bin 0 -> 12861 bytes .../biet-thu/lau-dai/index-mobile.html | 830 +++ .../biet-thu/lau-dai/index-mobile.html_gzip | Bin 0 -> 11950 bytes .../category/biet-thu/lau-dai/index.html | 848 +++ .../category/biet-thu/lau-dai/index.html_gzip | Bin 0 -> 12135 bytes .../category/nha-pho/index-mobile.html | 922 ++++ .../category/nha-pho/index-mobile.html_gzip | Bin 0 -> 12298 bytes .../localhost/category/nha-pho/index.html | 940 ++++ .../category/nha-pho/index.html_gzip | Bin 0 -> 12465 bytes .../nha-pho/nha-pho-3-tang/index-mobile.html | 804 +++ .../nha-pho-3-tang/index-mobile.html_gzip | Bin 0 -> 11206 bytes .../nha-pho/nha-pho-3-tang/index.html | 822 +++ .../nha-pho/nha-pho-3-tang/index.html_gzip | Bin 0 -> 11392 bytes .../nha-pho/nha-pho-4-tang/index-mobile.html | 804 +++ .../nha-pho-4-tang/index-mobile.html_gzip | Bin 0 -> 11215 bytes .../nha-pho/nha-pho-4-tang/index.html | 822 +++ .../nha-pho/nha-pho-4-tang/index.html_gzip | Bin 0 -> 11389 bytes .../nha-pho/nha-pho-5-tang/index-mobile.html | 922 ++++ .../nha-pho-5-tang/index-mobile.html_gzip | Bin 0 -> 12340 bytes .../nha-pho/nha-pho-5-tang/index.html | 940 ++++ .../nha-pho/nha-pho-5-tang/index.html_gzip | Bin 0 -> 12506 bytes .../category/noi-that/index-mobile.html | 922 ++++ .../category/noi-that/index-mobile.html_gzip | Bin 0 -> 12296 bytes .../localhost/category/noi-that/index.html | 940 ++++ .../category/noi-that/index.html_gzip | Bin 0 -> 12462 bytes .../noi-that-biet-thu/index-mobile.html | 830 +++ .../noi-that-biet-thu/index-mobile.html_gzip | Bin 0 -> 11929 bytes .../noi-that/noi-that-biet-thu/index.html | 848 +++ .../noi-that-biet-thu/index.html_gzip | Bin 0 -> 12103 bytes .../noi-that-cafe-nha-hang/index-mobile.html | 804 +++ .../index-mobile.html_gzip | Bin 0 -> 11221 bytes .../noi-that-cafe-nha-hang/index.html | 822 +++ .../noi-that-cafe-nha-hang/index.html_gzip | Bin 0 -> 11399 bytes .../noi-that-chung-cu/index-mobile.html | 804 +++ .../noi-that-chung-cu/index-mobile.html_gzip | Bin 0 -> 11211 bytes .../noi-that/noi-that-chung-cu/index.html | 822 +++ .../noi-that-chung-cu/index.html_gzip | Bin 0 -> 11380 bytes .../noi-that-nha-pho/index-mobile.html | 830 +++ .../noi-that-nha-pho/index-mobile.html_gzip | Bin 0 -> 11884 bytes .../noi-that/noi-that-nha-pho/index.html | 848 +++ .../noi-that/noi-that-nha-pho/index.html_gzip | Bin 0 -> 12069 bytes .../noi-that-van-phong/index-mobile.html | 830 +++ .../noi-that-van-phong/index-mobile.html_gzip | Bin 0 -> 11946 bytes .../noi-that/noi-that-van-phong/index.html | 848 +++ .../noi-that-van-phong/index.html_gzip | Bin 0 -> 12120 bytes .../category/thi-cong/index-mobile.html | 876 ++++ .../category/thi-cong/index-mobile.html_gzip | Bin 0 -> 12139 bytes .../localhost/category/thi-cong/index.html | 894 ++++ .../category/thi-cong/index.html_gzip | Bin 0 -> 12302 bytes .../index-mobile.html | 846 +++ .../index-mobile.html_gzip | Bin 0 -> 13475 bytes .../index.html | 864 ++++ .../index.html_gzip | Bin 0 -> 13645 bytes .../index-mobile.html | 846 +++ .../index-mobile.html_gzip | Bin 0 -> 13026 bytes .../index.html | 864 ++++ .../index.html_gzip | Bin 0 -> 13203 bytes .../wp-rocket/localhost/index-mobile.html | 2447 +++++++++ .../localhost/index-mobile.html_gzip | Bin 0 -> 18608 bytes .../cache/wp-rocket/localhost/index.html | 2465 +++++++++ .../cache/wp-rocket/localhost/index.html_gzip | Bin 0 -> 19245 bytes .../wp-rocket/assets/css/wpr-admin-common.css | 25 + .../wp-rocket/assets/css/wpr-admin-rtl.css | 1 + .../wp-rocket/assets/css/wpr-admin.css | 1 + .../wp-rocket/assets/css/wpr-modal.css | 1 + .../wp-rocket/assets/fonts/icomoon.eot | Bin 0 -> 10952 bytes .../wp-rocket/assets/fonts/icomoon.svg | 39 + .../wp-rocket/assets/fonts/icomoon.ttf | Bin 0 -> 10788 bytes .../wp-rocket/assets/fonts/icomoon.woff | Bin 0 -> 10864 bytes .../wp-rocket/assets/img/automatic.svg | 16 + .../wp-rocket/assets/img/bandwidth.svg | 17 + .../wp-rocket/assets/img/bg-activated.svg | 12 + .../wp-rocket/assets/img/configuration.svg | 20 + .../wp-rocket/assets/img/heartbeat-hover.svg | 5 + .../wp-rocket/assets/img/heartbeat.svg | 5 + .../wp-rocket/assets/img/icon-128x128.png | Bin 0 -> 11341 bytes .../wp-rocket/assets/img/icon-256x256.png | Bin 0 -> 4832 bytes .../wp-rocket/assets/img/imagify-hover.svg | 31 + .../plugins/wp-rocket/assets/img/imagify.svg | 31 + .../plugins/wp-rocket/assets/img/infinite.svg | 5 + .../wp-rocket/assets/img/logo-adblock.svg | 31 + .../wp-rocket/assets/img/logo-cloudflare.svg | 24 + .../wp-rocket/assets/img/logo-cloudflare2.svg | 24 + .../wp-rocket/assets/img/logo-facebook.svg | 1 + .../assets/img/logo-google-analytics.svg | 166 + .../wp-rocket/assets/img/logo-sucuri.png | Bin 0 -> 21221 bytes .../wp-rocket/assets/img/logo-varnish.svg | 1 + .../assets/img/logo-wprocket-dark.svg | 40 + .../assets/img/logo-wprocket-light.svg | 42 + .../assets/img/picto-wprocket-dark.svg | 39 + .../assets/img/picto-wprocket-light.svg | 47 + .../plugins/wp-rocket/assets/img/play-alt.svg | 2 + .../wp-rocket/assets/img/play-hover.svg | 2 + .../plugins/wp-rocket/assets/img/play.svg | 2 + .../plugins/wp-rocket/assets/img/plus.svg | 12 + .../plugins/wp-rocket/assets/img/warning.svg | 14 + .../plugins/wp-rocket/assets/img/youtube.png | Bin 0 -> 662 bytes .../wp-rocket/assets/js/browser-checker.js | 109 + .../assets/js/browser-checker.min.js | 1 + .../wp-rocket/assets/js/cpcss-removal.js | 16 + .../wp-rocket/assets/js/cpcss-removal.min.js | 1 + .../wp-rocket/assets/js/editor/editor.js | 1 + .../wp-rocket/assets/js/lazyload-scripts.js | 108 + .../assets/js/lazyload-scripts.min.js | 3 + .../assets/js/lazyload/11.0.6/lazyload.js | 461 ++ .../assets/js/lazyload/11.0.6/lazyload.min.js | 2 + .../js/lazyload/11.0.6/lazyload.min.js.map | 1 + .../assets/js/lazyload/12.0/lazyload.js | 491 ++ .../assets/js/lazyload/12.0/lazyload.min.js | 2 + .../js/lazyload/12.0/lazyload.min.js.map | 1 + .../assets/js/lazyload/16.1/lazyload.js | 733 +++ .../assets/js/lazyload/16.1/lazyload.min.js | 1 + .../wp-rocket/assets/js/micromodal.min.js | 1 + .../wp-rocket/assets/js/preload-links.js | 255 + .../wp-rocket/assets/js/preload-links.min.js | 3 + .../wp-rocket/assets/js/wpr-admin-common.js | 7 + .../plugins/wp-rocket/assets/js/wpr-admin.js | 2 + .../wp-rocket/assets/js/wpr-admin.js.map | 1 + .../assets/js/wpr-cpcss-heartbeat.js | 36 + .../plugins/wp-rocket/assets/js/wpr-cpcss.js | 146 + .../plugins/wp-rocket/assets/js/wpr-modal.js | 202 + wp-content/plugins/wp-rocket/composer.json | 171 + wp-content/plugins/wp-rocket/composer.lock | 4551 +++++++++++++++++ wp-content/plugins/wp-rocket/contributors.txt | 21 + .../wp-rocket/inc/3rd-party/3rd-party.php | 89 + .../inc/3rd-party/hosting/flywheel.php | 80 + .../inc/3rd-party/hosting/godaddy.php | 130 + .../inc/3rd-party/hosting/kinsta.php | 166 + .../wp-rocket/inc/3rd-party/hosting/nginx.php | 24 + .../inc/3rd-party/hosting/pagely.php | 31 + .../inc/3rd-party/hosting/pressidium.php | 61 + .../inc/3rd-party/hosting/presslabs.php | 98 + .../inc/3rd-party/hosting/siteground.php | 87 + .../inc/3rd-party/hosting/wp-serveur.php | 35 + .../plugins/advanced-custom-fields.php | 18 + .../inc/3rd-party/plugins/age-verify.php | 59 + .../inc/3rd-party/plugins/autoptimize.php | 175 + .../inc/3rd-party/plugins/buddypress.php | 47 + .../plugins/cookies/cookie-notice.php | 81 + .../plugins/cookies/eu-cookie-law.php | 89 + .../inc/3rd-party/plugins/cookies/gdpr.php | 87 + .../plugins/cookies/uk-cookie-consent.php | 73 + .../plugins/cookies/weepie-cookie-allow.php | 53 + .../inc/3rd-party/plugins/custom-login.php | 63 + .../inc/3rd-party/plugins/disqus.php | 22 + .../ecommerce/aelia-currencyswitcher.php | 106 + .../ecommerce/aelia-prices-by-country.php | 66 + .../aelia-tax-display-by-country.php | 69 + .../ecommerce/easy-digital-downloads.php | 52 + .../ecommerce/edd-software-licencing.php | 58 + .../inc/3rd-party/plugins/ecommerce/give.php | 65 + .../plugins/ecommerce/ithemes-exchange.php | 69 + .../3rd-party/plugins/ecommerce/jigoshop.php | 61 + .../woocommerce-currency-converter-widget.php | 83 + .../ecommerce/woocommerce-multilingual.php | 8 + .../3rd-party/plugins/ecommerce/wpshop.php | 66 + .../inc/3rd-party/plugins/envira-gallery.php | 33 + .../inc/3rd-party/plugins/geotargetingwp.php | 115 + .../inc/3rd-party/plugins/i18n/polylang.php | 145 + .../inc/3rd-party/plugins/i18n/wpml.php | 11 + .../inc/3rd-party/plugins/jetpack.php | 187 + .../inc/3rd-party/plugins/mailchimp.php | 36 + .../3rd-party/plugins/mobile/wp-appkit.php | 56 + .../inc/3rd-party/plugins/nginx-helper.php | 149 + .../page-builder/thrive-visual-editor.php | 16 + .../plugins/page-builder/visual-composer.php | 10 + .../plugins/rating/kk-star-ratings.php | 17 + .../plugins/rating/wp-postratings.php | 18 + .../inc/3rd-party/plugins/s2member.php | 18 + .../3rd-party/plugins/security/secupress.php | 90 + .../plugins/security/sf-move-login.php | 82 + .../plugins/security/wps-hide-login.php | 62 + .../plugins/seo/all-in-one-seo-pack.php | 101 + .../plugins/seo/premium-seo-pack.php | 30 + .../3rd-party/plugins/seo/rank-math-seo.php | 91 + .../inc/3rd-party/plugins/seo/seopress.php | 98 + .../plugins/seo/the-seo-framework.php | 153 + .../inc/3rd-party/plugins/seo/yoast-seo.php | 99 + .../3rd-party/plugins/slider/layerslider.php | 13 + .../3rd-party/plugins/slider/meta-slider.php | 17 + .../3rd-party/plugins/slider/soliloquy.php | 31 + .../inc/3rd-party/plugins/sumome.php | 53 + .../inc/3rd-party/plugins/thrive-leads.php | 13 + .../3rd-party/plugins/varnish-http-purge.php | 75 + .../plugins/wp-offload-s3-assets.php | 38 + .../inc/3rd-party/plugins/wp-offload-s3.php | 23 + .../inc/3rd-party/plugins/wp-print.php | 19 + .../inc/3rd-party/plugins/wp-rest-api.php | 48 + .../wp-rocket/inc/3rd-party/themes/avada.php | 68 + .../inc/3rd-party/themes/studiopress.php | 44 + .../wp-rocket/inc/3rd-party/themes/uncode.php | 64 + .../plugins/wp-rocket/inc/API/bypass.php | 31 + .../plugins/wp-rocket/inc/API/preload.php | 112 + .../inc/Addon/Busting/BustingFactory.php | 58 + .../inc/Addon/Busting/FileBustingTrait.php | 478 ++ .../inc/Addon/Cloudflare/APIClient.php | 394 ++ .../Cloudflare/AuthenticationException.php | 7 + .../inc/Addon/Cloudflare/Cloudflare.php | 481 ++ .../inc/Addon/Cloudflare/Subscriber.php | 608 +++ .../Cloudflare/UnauthorizedException.php | 7 + .../inc/Addon/Cloudflare/composer.json | 51 + .../inc/Addon/FacebookTracking/Subscriber.php | 192 + .../Addon/GoogleTracking/GoogleAnalytics.php | 245 + .../Addon/GoogleTracking/GoogleTagManager.php | 200 + .../inc/Addon/GoogleTracking/Subscriber.php | 182 + .../wp-rocket/inc/Addon/ServiceProvider.php | 88 + .../inc/Addon/Varnish/ServiceProvider.php | 36 + .../inc/Addon/Varnish/Subscriber.php | 117 + .../wp-rocket/inc/Addon/Varnish/Varnish.php | 129 + .../wp-rocket/inc/Addon/Varnish/composer.json | 54 + .../wp-rocket/inc/Dependencies/Minify/CSS.php | 752 +++ .../inc/Dependencies/Minify/Exception.php | 20 + .../Minify/Exceptions/BasicException.php | 23 + .../Minify/Exceptions/FileImportException.php | 21 + .../Minify/Exceptions/IOException.php | 21 + .../wp-rocket/inc/Dependencies/Minify/JS.php | 612 +++ .../inc/Dependencies/Minify/Minify.php | 497 ++ .../Minify/data/js/keywords_after.txt | 7 + .../Minify/data/js/keywords_before.txt | 26 + .../Minify/data/js/keywords_reserved.txt | 63 + .../Dependencies/Minify/data/js/operators.txt | 46 + .../Minify/data/js/operators_after.txt | 43 + .../Minify/data/js/operators_before.txt | 43 + .../Dependencies/PathConverter/Converter.php | 204 + .../PathConverter/ConverterInterface.php | 24 + .../PathConverter/NoConverter.php | 23 + .../Dependencies/RocketLazyload/Assets.php | 290 ++ .../Dependencies/RocketLazyload/Iframe.php | 232 + .../inc/Dependencies/RocketLazyload/Image.php | 602 +++ .../inc/Engine/Activation/Activation.php | 100 + .../Engine/Activation/ActivationInterface.php | 12 + .../inc/Engine/Activation/ServiceProvider.php | 53 + .../inc/Engine/Admin/Beacon/Beacon.php | 630 +++ .../Engine/Admin/Beacon/ServiceProvider.php | 41 + .../Admin/Deactivation/DeactivationIntent.php | 161 + .../inc/Engine/Admin/ServiceProvider.php | 45 + .../inc/Engine/Admin/Settings/Page.php | 2141 ++++++++ .../inc/Engine/Admin/Settings/Render.php | 476 ++ .../Engine/Admin/Settings/ServiceProvider.php | 50 + .../inc/Engine/Admin/Settings/Settings.php | 667 +++ .../inc/Engine/Admin/Settings/Subscriber.php | 194 + .../plugins/wp-rocket/inc/Engine/CDN/CDN.php | 371 ++ .../inc/Engine/CDN/RocketCDN/APIClient.php | 273 + .../CDN/RocketCDN/AdminPageSubscriber.php | 277 + .../CDN/RocketCDN/CDNOptionsManager.php | 75 + .../CDN/RocketCDN/DataManagerSubscriber.php | 289 ++ .../CDN/RocketCDN/NoticesSubscriber.php | 300 ++ .../Engine/CDN/RocketCDN/RESTSubscriber.php | 194 + .../Engine/CDN/RocketCDN/ServiceProvider.php | 64 + .../inc/Engine/CDN/RocketCDN/composer.json | 55 + .../Engine/CDN/RocketCDN/views/cta-big.php | 95 + .../Engine/CDN/RocketCDN/views/cta-small.php | 23 + .../CDN/RocketCDN/views/dashboard-status.php | 37 + .../CDN/RocketCDN/views/promote-notice.php | 14 + .../inc/Engine/CDN/ServiceProvider.php | 40 + .../wp-rocket/inc/Engine/CDN/Subscriber.php | 277 + .../inc/Engine/Cache/AdminSubscriber.php | 168 + .../inc/Engine/Cache/AdvancedCache.php | 206 + .../wp-rocket/inc/Engine/Cache/Purge.php | 223 + .../Engine/Cache/PurgeActionsSubscriber.php | 140 + .../inc/Engine/Cache/ServiceProvider.php | 52 + .../wp-rocket/inc/Engine/Cache/WPCache.php | 385 ++ .../inc/Engine/Capabilities/Manager.php | 168 + .../Engine/Capabilities/ServiceProvider.php | 37 + .../inc/Engine/Capabilities/Subscriber.php | 94 + .../Argument/ArgumentResolverInterface.php | 26 + .../Argument/ArgumentResolverTrait.php | 82 + .../Engine/Container/Argument/RawArgument.php | 27 + .../Argument/RawArgumentInterface.php | 13 + .../inc/Engine/Container/Container.php | 305 ++ .../Container/ContainerAwareInterface.php | 20 + .../Engine/Container/ContainerAwareTrait.php | 34 + .../Engine/Container/ContainerInterface.php | 59 + .../Definition/AbstractDefinition.php | 62 + .../Definition/CallableDefinition.php | 23 + .../Container/Definition/ClassDefinition.php | 67 + .../Definition/ClassDefinitionInterface.php | 23 + .../Definition/DefinitionFactory.php | 28 + .../Definition/DefinitionFactoryInterface.php | 17 + .../Definition/DefinitionInterface.php | 30 + .../Container/Exception/NotFoundException.php | 10 + .../ImmutableContainerAwareInterface.php | 22 + .../ImmutableContainerAwareTrait.php | 36 + .../Container/ImmutableContainerInterface.php | 10 + .../Engine/Container/Inflector/Inflector.php | 103 + .../Inflector/InflectorAggregate.php | 53 + .../Inflector/InflectorAggregateInterface.php | 25 + .../Engine/Container/ReflectionContainer.php | 87 + .../AbstractServiceProvider.php | 27 + .../AbstractSignatureServiceProvider.php | 31 + .../BootableServiceProviderInterface.php | 14 + .../ServiceProviderAggregate.php | 88 + .../ServiceProviderAggregateInterface.php | 32 + .../ServiceProviderInterface.php | 26 + .../SignatureServiceProviderInterface.php | 24 + .../inc/Engine/CriticalPath/APIClient.php | 257 + .../inc/Engine/CriticalPath/Admin/Admin.php | 276 + .../inc/Engine/CriticalPath/Admin/Post.php | 224 + .../Engine/CriticalPath/Admin/Settings.php | 160 + .../Engine/CriticalPath/Admin/Subscriber.php | 189 + .../inc/Engine/CriticalPath/CriticalCSS.php | 578 +++ .../CriticalPath/CriticalCSSGeneration.php | 94 + .../CriticalPath/CriticalCSSSubscriber.php | 728 +++ .../inc/Engine/CriticalPath/DataManager.php | 196 + .../Engine/CriticalPath/ProcessorService.php | 338 ++ .../Engine/CriticalPath/RESTCSSSubscriber.php | 55 + .../inc/Engine/CriticalPath/RESTWP.php | 322 ++ .../Engine/CriticalPath/RESTWPInterface.php | 58 + .../inc/Engine/CriticalPath/RESTWPPost.php | 108 + .../Engine/CriticalPath/ServiceProvider.php | 101 + .../Engine/CriticalPath/TransientTrait.php | 25 + .../inc/Engine/Deactivation/Deactivation.php | 106 + .../Deactivation/DeactivationInterface.php | 12 + .../Engine/Deactivation/ServiceProvider.php | 53 + .../Engine/HealthCheck/CacheDirSizeCheck.php | 187 + .../inc/Engine/HealthCheck/HealthCheck.php | 149 + .../Engine/HealthCheck/ServiceProvider.php | 42 + .../Engine/Heartbeat/HeartbeatSubscriber.php | 160 + .../inc/Engine/Heartbeat/ServiceProvider.php | 39 + .../inc/Engine/License/API/Pricing.php | 324 ++ .../inc/Engine/License/API/PricingClient.php | 59 + .../wp-rocket/inc/Engine/License/API/User.php | 121 + .../inc/Engine/License/API/UserClient.php | 87 + .../wp-rocket/inc/Engine/License/Renewal.php | 313 ++ .../inc/Engine/License/ServiceProvider.php | 62 + .../inc/Engine/License/Subscriber.php | 187 + .../wp-rocket/inc/Engine/License/Upgrade.php | 404 ++ .../inc/Engine/License/views/promo-banner.php | 37 + .../License/views/renewal-expired-banner.php | 40 + .../License/views/renewal-soon-banner.php | 44 + .../Engine/License/views/upgrade-popin.php | 61 + .../Engine/License/views/upgrade-section.php | 12 + .../Engine/Media/Embeds/EmbedsSubscriber.php | 214 + .../Engine/Media/Emojis/EmojisSubscriber.php | 95 + .../inc/Engine/Media/LazyloadSubscriber.php | 546 ++ .../inc/Engine/Media/ServiceProvider.php | 54 + .../Optimization/AbstractOptimization.php | 217 + .../Optimization/AdminServiceProvider.php | 44 + .../Engine/Optimization/AssetsLocalCache.php | 188 + .../inc/Engine/Optimization/CSSTrait.php | 220 + .../Optimization/CacheDynamicResource.php | 309 ++ .../Optimization/DelayJS/Admin/Settings.php | 218 + .../Optimization/DelayJS/Admin/Subscriber.php | 139 + .../inc/Engine/Optimization/DelayJS/HTML.php | 175 + .../Optimization/DelayJS/ServiceProvider.php | 39 + .../Optimization/DelayJS/Subscriber.php | 130 + .../GoogleFonts/Admin/Settings.php | 85 + .../GoogleFonts/Admin/Subscriber.php | 59 + .../Optimization/GoogleFonts/Combine.php | 234 + .../Optimization/GoogleFonts/Subscriber.php | 106 + .../Optimization/IEConditionalSubscriber.php | 140 + .../Minify/AbstractMinifySubscriber.php | 133 + .../Minify/CSS/AbstractCSSOptimization.php | 148 + .../Minify/CSS/AdminSubscriber.php | 125 + .../Optimization/Minify/CSS/Combine.php | 322 ++ .../Engine/Optimization/Minify/CSS/Minify.php | 331 ++ .../Optimization/Minify/CSS/Subscriber.php | 85 + .../Minify/JS/AbstractJSOptimization.php | 283 + .../Engine/Optimization/Minify/JS/Combine.php | 846 +++ .../Engine/Optimization/Minify/JS/Minify.php | 344 ++ .../Optimization/Minify/JS/Subscriber.php | 86 + .../Minify/ProcessorInterface.php | 13 + .../Engine/Optimization/ServiceProvider.php | 83 + .../inc/Engine/Preload/AbstractPreload.php | 166 + .../inc/Engine/Preload/AbstractProcess.php | 258 + .../wp-rocket/inc/Engine/Preload/Fonts.php | 140 + .../inc/Engine/Preload/FullProcess.php | 88 + .../wp-rocket/inc/Engine/Preload/Homepage.php | 315 ++ .../Engine/Preload/Links/AdminSubscriber.php | 72 + .../Engine/Preload/Links/ServiceProvider.php | 38 + .../inc/Engine/Preload/Links/Subscriber.php | 209 + .../Preload/PartialPreloadSubscriber.php | 236 + .../inc/Engine/Preload/PartialProcess.php | 44 + .../inc/Engine/Preload/PreloadSubscriber.php | 375 ++ .../inc/Engine/Preload/ServiceProvider.php | 68 + .../wp-rocket/inc/Engine/Preload/Sitemap.php | 367 ++ .../Preload/SitemapPreloadSubscriber.php | 132 + .../wp-rocket/inc/Engine/Support/Data.php | 79 + .../wp-rocket/inc/Engine/Support/Rest.php | 121 + .../inc/Engine/Support/ServiceProvider.php | 42 + .../inc/Engine/Support/Subscriber.php | 45 + .../inc/Engine/WPRocketUninstall.php | 196 + wp-content/plugins/wp-rocket/inc/Plugin.php | 301 ++ .../Hostings/AbstractNoCacheHost.php | 63 + .../inc/ThirdParty/Hostings/Cloudways.php | 117 + .../inc/ThirdParty/Hostings/Dreampress.php | 112 + .../inc/ThirdParty/Hostings/HostResolver.php | 113 + .../Hostings/HostSubscriberFactory.php | 46 + .../inc/ThirdParty/Hostings/O2Switch.php | 126 + .../inc/ThirdParty/Hostings/Pressable.php | 70 + .../inc/ThirdParty/Hostings/Savvii.php | 97 + .../ThirdParty/Hostings/ServiceProvider.php | 50 + .../inc/ThirdParty/Hostings/SpinUpWP.php | 56 + .../inc/ThirdParty/Hostings/WPEngine.php | 113 + .../inc/ThirdParty/Hostings/WordPressCom.php | 39 + .../inc/ThirdParty/NullSubscriber.php | 28 + .../Ecommerce/WooCommerceSubscriber.php | 483 ++ .../ThirdParty/Plugins/Optimization/AMP.php | 159 + .../Plugins/Optimization/Hummingbird.php | 295 ++ .../inc/ThirdParty/Plugins/PDFEmbedder.php | 98 + .../Plugins/PageBuilder/BeaverBuilder.php | 35 + .../Plugins/PageBuilder/Elementor.php | 119 + .../ThirdParty/Plugins/SimpleCustomCss.php | 117 + .../inc/ThirdParty/Plugins/Smush.php | 195 + .../inc/ThirdParty/ReturnTypesTrait.php | 50 + .../inc/ThirdParty/ServiceProvider.php | 101 + .../ThirdParty/SubscriberFactoryInterface.php | 22 + .../inc/ThirdParty/Themes/Bridge.php | 97 + .../wp-rocket/inc/ThirdParty/Themes/Divi.php | 123 + .../plugins/wp-rocket/inc/admin/admin.php | 572 +++ .../plugins/wp-rocket/inc/admin/options.php | 241 + .../wp-rocket/inc/admin/ui/enqueue.php | 103 + .../wp-rocket/inc/admin/ui/meta-boxes.php | 177 + .../wp-rocket/inc/admin/ui/notices.php | 852 +++ .../plugins/wp-rocket/inc/admin/upgrader.php | 375 ++ .../classes/Buffer/class-abstract-buffer.php | 160 + .../inc/classes/Buffer/class-cache.php | 704 +++ .../inc/classes/Buffer/class-config.php | 296 ++ .../inc/classes/Buffer/class-optimization.php | 110 + .../inc/classes/Buffer/class-tests.php | 1122 ++++ .../Cache/class-expired-cache-purge.php | 393 ++ .../class-common-subscribers.php | 57 + .../ServiceProvider/class-database.php | 41 + .../classes/ServiceProvider/class-options.php | 39 + .../class-updater-subscribers.php | 74 + .../Database/class-optimization-process.php | 172 + .../admin/Database/class-optimization.php | 126 + .../classes/admin/class-abstract-options.php | 63 + .../inc/classes/admin/class-logs.php | 183 + .../inc/classes/admin/class-options-data.php | 124 + .../inc/classes/admin/class-options.php | 95 + .../admin/deactivation/class-render.php | 30 + .../busting/class-abstract-busting.php | 135 + .../busting/class-facebook-pickles.php | 1209 +++++ .../classes/busting/class-facebook-sdk.php | 673 +++ .../inc/classes/class-abstract-render.php | 147 + .../class-wp-rocket-requirements-check.php | 251 + .../inc/classes/dependencies/.gitkeep | 0 .../mobiledetectlib/Mobile_Detect.php | 1477 ++++++ .../background-processing/composer.json | 46 + .../wp-async-request.php | 181 + .../wp-background-process.php | 520 ++ .../event-management/class-event-manager.php | 135 + ...ent-manager-aware-subscriber-interface.php | 14 + .../event-management/subscriber-interface.php | 32 + .../interfaces/class-render-interface.php | 21 + .../classes/logger/class-html-formatter.php | 58 + .../inc/classes/logger/class-logger.php | 557 ++ .../classes/logger/class-stream-handler.php | 154 + .../class-expired-cache-purge-subscriber.php | 226 + .../Media/class-webp-subscriber.php | 847 +++ .../Optimization/class-buffer-subscriber.php | 49 + ...lass-dequeue-jquery-migrate-subscriber.php | 85 + .../Plugin/class-information-subscriber.php | 161 + .../class-updater-api-common-subscriber.php | 189 + .../Plugin/class-updater-subscriber.php | 435 ++ .../class-detect-missing-tags-subscriber.php | 202 + .../class-optimization-subscriber.php | 265 + .../Hostings/class-litespeed-subscriber.php | 121 + .../Images/Webp/class-ewww-subscriber.php | 390 ++ .../Images/Webp/class-imagify-subscriber.php | 435 ++ .../Images/Webp/class-optimus-subscriber.php | 152 + .../Webp/class-shortpixel-subscriber.php | 294 ++ .../plugins/Images/Webp/trait-webp-common.php | 69 + .../plugins/Images/Webp/webp-interface.php | 77 + .../plugins/class-mobile-subscriber.php | 396 ++ .../plugins/class-ngg-subscriber.php | 44 + .../class-syntaxhighlighter-subscriber.php | 69 + .../class-bigcommerce-subscriber.php | 169 + .../security/class-sucuri-subscriber.php | 395 ++ .../classes/traits/trait-config-updater.php | 65 + .../inc/classes/traits/trait-memoize.php | 94 + .../traits/trait-updater-api-tools.php | 97 + .../wp-rocket/inc/common/admin-bar.php | 379 ++ .../inc/common/cloudflare-flexible-ssl.php | 111 + .../plugins/wp-rocket/inc/common/purge.php | 631 +++ wp-content/plugins/wp-rocket/inc/compat.php | 3 + .../plugins/wp-rocket/inc/constants.php | 38 + .../plugins/wp-rocket/inc/deprecated/3.2.php | 402 ++ .../plugins/wp-rocket/inc/deprecated/3.3.php | 874 ++++ .../plugins/wp-rocket/inc/deprecated/3.4.php | 719 +++ .../plugins/wp-rocket/inc/deprecated/3.5.php | 911 ++++ .../plugins/wp-rocket/inc/deprecated/3.6.php | 1134 ++++ .../plugins/wp-rocket/inc/deprecated/3.7.php | 340 ++ .../inc/deprecated/DeprecatedClassTrait.php | 93 + .../Optimization/QueryString/Remove.php | 365 ++ .../QueryString/RemoveSubscriber.php | 86 + .../wp-rocket/inc/deprecated/deprecated.php | 3290 ++++++++++++ .../class-minify-html-subscriber.php | 113 + .../Settings/class-beacon-subscriber.php | 58 + .../vendors/classes/class-minify-html.php | 308 ++ .../plugins/wp-rocket/inc/domain-mapping.php | 57 + .../plugins/wp-rocket/inc/front/cookie.php | 23 + .../wp-rocket/inc/front/deferred-js.php | 59 + .../wp-rocket/inc/front/dns-prefetch.php | 35 + .../plugins/wp-rocket/inc/front/images.php | 76 + .../plugins/wp-rocket/inc/front/process.php | 515 ++ .../plugins/wp-rocket/inc/front/protocol.php | 55 + .../plugins/wp-rocket/inc/functions/admin.php | 457 ++ .../plugins/wp-rocket/inc/functions/api.php | 139 + .../plugins/wp-rocket/inc/functions/files.php | 1454 ++++++ .../wp-rocket/inc/functions/formatting.php | 570 +++ .../wp-rocket/inc/functions/htaccess.php | 696 +++ .../plugins/wp-rocket/inc/functions/i18n.php | 563 ++ .../wp-rocket/inc/functions/options.php | 749 +++ .../plugins/wp-rocket/inc/functions/posts.php | 73 + wp-content/plugins/wp-rocket/inc/main.php | 110 + .../vendors/classes/class-imagify-partner.php | 877 ++++ .../classes/class-minify-css-urirewriter.php | 358 ++ .../classes/class-rocket-mobile-detect.php | 1472 ++++++ .../wp-rocket/inc/vendors/ip_in_range.php | 209 + .../plugins/wp-rocket/languages/rocket-ar.mo | Bin 0 -> 30906 bytes .../plugins/wp-rocket/languages/rocket-ar.po | 3057 +++++++++++ .../wp-rocket/languages/rocket-bg_BG.mo | Bin 0 -> 28802 bytes .../wp-rocket/languages/rocket-bg_BG.po | 3035 +++++++++++ .../wp-rocket/languages/rocket-cs_CZ.mo | Bin 0 -> 103101 bytes .../wp-rocket/languages/rocket-cs_CZ.po | 4085 +++++++++++++++ .../wp-rocket/languages/rocket-de_DE.mo | Bin 0 -> 52849 bytes .../wp-rocket/languages/rocket-de_DE.po | 3181 ++++++++++++ .../plugins/wp-rocket/languages/rocket-el.mo | Bin 0 -> 12144 bytes .../plugins/wp-rocket/languages/rocket-el.po | 2973 +++++++++++ .../wp-rocket/languages/rocket-es_ES.mo | Bin 0 -> 103939 bytes .../wp-rocket/languages/rocket-es_ES.po | 4220 +++++++++++++++ .../plugins/wp-rocket/languages/rocket-fi.mo | Bin 0 -> 74944 bytes .../plugins/wp-rocket/languages/rocket-fi.po | 3311 ++++++++++++ .../wp-rocket/languages/rocket-fr_CA.mo | Bin 0 -> 102163 bytes .../wp-rocket/languages/rocket-fr_CA.po | 4137 +++++++++++++++ .../wp-rocket/languages/rocket-fr_FR.mo | Bin 0 -> 104030 bytes .../wp-rocket/languages/rocket-fr_FR.po | 4233 +++++++++++++++ .../wp-rocket/languages/rocket-gl_ES.mo | Bin 0 -> 945 bytes .../wp-rocket/languages/rocket-gl_ES.po | 2943 +++++++++++ .../wp-rocket/languages/rocket-he_IL.mo | Bin 0 -> 9619 bytes .../wp-rocket/languages/rocket-he_IL.po | 2991 +++++++++++ .../plugins/wp-rocket/languages/rocket-hr.mo | Bin 0 -> 102598 bytes .../plugins/wp-rocket/languages/rocket-hr.po | 4220 +++++++++++++++ .../wp-rocket/languages/rocket-hu_HU.mo | Bin 0 -> 948 bytes .../wp-rocket/languages/rocket-hu_HU.po | 2943 +++++++++++ .../wp-rocket/languages/rocket-it_IT.mo | Bin 0 -> 104000 bytes .../wp-rocket/languages/rocket-it_IT.po | 4245 +++++++++++++++ .../plugins/wp-rocket/languages/rocket-ms.mo | Bin 0 -> 5064 bytes .../plugins/wp-rocket/languages/rocket-ms.po | 2949 +++++++++++ .../wp-rocket/languages/rocket-nb_NO.mo | Bin 0 -> 955 bytes .../wp-rocket/languages/rocket-nb_NO.po | 2943 +++++++++++ .../wp-rocket/languages/rocket-nl_NL.mo | Bin 0 -> 35199 bytes .../wp-rocket/languages/rocket-nl_NL.po | 3040 +++++++++++ .../wp-rocket/languages/rocket-pl_PL.mo | Bin 0 -> 109555 bytes .../wp-rocket/languages/rocket-pl_PL.po | 4317 ++++++++++++++++ .../wp-rocket/languages/rocket-pt_BR.mo | Bin 0 -> 104258 bytes .../wp-rocket/languages/rocket-pt_BR.po | 4294 ++++++++++++++++ .../wp-rocket/languages/rocket-ro_RO.mo | Bin 0 -> 106713 bytes .../wp-rocket/languages/rocket-ro_RO.po | 4268 ++++++++++++++++ .../plugins/wp-rocket/languages/rocket-ru.mo | Bin 0 -> 1068 bytes .../plugins/wp-rocket/languages/rocket-ru.po | 2975 +++++++++++ .../wp-rocket/languages/rocket-ru_RU.mo | Bin 0 -> 126335 bytes .../wp-rocket/languages/rocket-ru_RU.po | 4232 +++++++++++++++ .../plugins/wp-rocket/languages/rocket-sr.mo | Bin 0 -> 8428 bytes .../plugins/wp-rocket/languages/rocket-sr.po | 2972 +++++++++++ .../wp-rocket/languages/rocket-sv_SE.mo | Bin 0 -> 3047 bytes .../wp-rocket/languages/rocket-sv_SE.po | 2948 +++++++++++ .../wp-rocket/languages/rocket-tr_TR.mo | Bin 0 -> 108285 bytes .../wp-rocket/languages/rocket-tr_TR.po | 4354 ++++++++++++++++ .../plugins/wp-rocket/languages/rocket-uk.mo | Bin 0 -> 119044 bytes .../plugins/wp-rocket/languages/rocket-uk.po | 3689 +++++++++++++ .../wp-rocket/languages/rocket-uk_UA.mo | Bin 0 -> 119044 bytes .../wp-rocket/languages/rocket-uk_UA.po | 3689 +++++++++++++ .../wp-rocket/languages/rocket-zh_CN.mo | Bin 0 -> 89375 bytes .../wp-rocket/languages/rocket-zh_CN.po | 3730 ++++++++++++++ .../wp-rocket/languages/rocket-zh_TW.mo | Bin 0 -> 48660 bytes .../wp-rocket/languages/rocket-zh_TW.po | 2983 +++++++++++ .../plugins/wp-rocket/languages/rocket.pot | 3739 ++++++++++++++ wp-content/plugins/wp-rocket/uninstall.php | 16 + .../plugins/wp-rocket/vendor/autoload.php | 7 + .../wp-rocket/vendor/composer/ClassLoader.php | 445 ++ .../plugins/wp-rocket/vendor/composer/LICENSE | 21 + .../vendor/composer/autoload_classmap.php | 473 ++ .../vendor/composer/autoload_namespaces.php | 9 + .../vendor/composer/autoload_psr4.php | 15 + .../vendor/composer/autoload_real.php | 55 + .../vendor/composer/autoload_static.php | 533 ++ .../wp-rocket/vendor/composer/installed.json | 315 ++ .../vendor/composer/installers/LICENSE | 19 + .../vendor/composer/installers/composer.json | 107 + .../src/Composer/Installers/AglInstaller.php | 21 + .../Composer/Installers/AimeosInstaller.php | 9 + .../Installers/AnnotateCmsInstaller.php | 11 + .../Composer/Installers/AsgardInstaller.php | 49 + .../Composer/Installers/AttogramInstaller.php | 9 + .../src/Composer/Installers/BaseInstaller.php | 136 + .../Composer/Installers/BitrixInstaller.php | 126 + .../Composer/Installers/BonefishInstaller.php | 9 + .../Composer/Installers/CakePHPInstaller.php | 82 + .../src/Composer/Installers/ChefInstaller.php | 11 + .../Composer/Installers/CiviCrmInstaller.php | 9 + .../Installers/ClanCatsFrameworkInstaller.php | 10 + .../Composer/Installers/CockpitInstaller.php | 34 + .../Installers/CodeIgniterInstaller.php | 11 + .../Installers/Concrete5Installer.php | 13 + .../Composer/Installers/CraftInstaller.php | 35 + .../Composer/Installers/CroogoInstaller.php | 21 + .../Composer/Installers/DecibelInstaller.php | 10 + .../Composer/Installers/DframeInstaller.php | 10 + .../Composer/Installers/DokuWikiInstaller.php | 50 + .../Composer/Installers/DolibarrInstaller.php | 16 + .../Composer/Installers/DrupalInstaller.php | 20 + .../src/Composer/Installers/ElggInstaller.php | 9 + .../Composer/Installers/EliasisInstaller.php | 12 + .../Installers/ExpressionEngineInstaller.php | 29 + .../Installers/EzPlatformInstaller.php | 10 + .../src/Composer/Installers/FuelInstaller.php | 11 + .../Composer/Installers/FuelphpInstaller.php | 9 + .../src/Composer/Installers/GravInstaller.php | 30 + .../Composer/Installers/HuradInstaller.php | 25 + .../Composer/Installers/ImageCMSInstaller.php | 11 + .../src/Composer/Installers/Installer.php | 278 + .../src/Composer/Installers/ItopInstaller.php | 9 + .../Composer/Installers/JoomlaInstaller.php | 15 + .../Composer/Installers/KanboardInstaller.php | 18 + .../Composer/Installers/KirbyInstaller.php | 11 + .../Composer/Installers/KnownInstaller.php | 11 + .../Composer/Installers/KodiCMSInstaller.php | 10 + .../Composer/Installers/KohanaInstaller.php | 9 + .../LanManagementSystemInstaller.php | 27 + .../Composer/Installers/LaravelInstaller.php | 9 + .../Composer/Installers/LavaLiteInstaller.php | 10 + .../Composer/Installers/LithiumInstaller.php | 10 + .../Installers/MODULEWorkInstaller.php | 9 + .../Composer/Installers/MODXEvoInstaller.php | 16 + .../Composer/Installers/MagentoInstaller.php | 11 + .../Composer/Installers/MajimaInstaller.php | 37 + .../src/Composer/Installers/MakoInstaller.php | 9 + .../Composer/Installers/MauticInstaller.php | 25 + .../src/Composer/Installers/MayaInstaller.php | 33 + .../Installers/MediaWikiInstaller.php | 51 + .../Installers/MicroweberInstaller.php | 119 + .../src/Composer/Installers/ModxInstaller.php | 12 + .../Composer/Installers/MoodleInstaller.php | 58 + .../Composer/Installers/OctoberInstaller.php | 47 + .../Composer/Installers/OntoWikiInstaller.php | 24 + .../Composer/Installers/OsclassInstaller.php | 14 + .../src/Composer/Installers/OxidInstaller.php | 59 + .../src/Composer/Installers/PPIInstaller.php | 9 + .../Composer/Installers/PhiftyInstaller.php | 11 + .../Composer/Installers/PhpBBInstaller.php | 11 + .../Composer/Installers/PimcoreInstaller.php | 21 + .../Composer/Installers/PiwikInstaller.php | 32 + .../Installers/PlentymarketsInstaller.php | 29 + .../src/Composer/Installers/Plugin.php | 17 + .../Composer/Installers/PortoInstaller.php | 9 + .../Installers/PrestashopInstaller.php | 10 + .../Composer/Installers/PuppetInstaller.php | 11 + .../Composer/Installers/PxcmsInstaller.php | 63 + .../Composer/Installers/RadPHPInstaller.php | 24 + .../Composer/Installers/ReIndexInstaller.php | 10 + .../Composer/Installers/Redaxo5Installer.php | 10 + .../Composer/Installers/RedaxoInstaller.php | 10 + .../Installers/RoundcubeInstaller.php | 22 + .../src/Composer/Installers/SMFInstaller.php | 10 + .../Composer/Installers/ShopwareInstaller.php | 60 + .../Installers/SilverStripeInstaller.php | 35 + .../Installers/SiteDirectInstaller.php | 25 + .../Composer/Installers/SyDESInstaller.php | 49 + .../Composer/Installers/Symfony1Installer.php | 26 + .../Composer/Installers/TYPO3CmsInstaller.php | 16 + .../Installers/TYPO3FlowInstaller.php | 38 + .../src/Composer/Installers/TaoInstaller.php | 12 + .../Composer/Installers/TheliaInstaller.php | 12 + .../src/Composer/Installers/TuskInstaller.php | 14 + .../Installers/UserFrostingInstaller.php | 9 + .../Composer/Installers/VanillaInstaller.php | 10 + .../Composer/Installers/VgmcpInstaller.php | 49 + .../Composer/Installers/WHMCSInstaller.php | 21 + .../Composer/Installers/WolfCMSInstaller.php | 9 + .../Installers/WordPressInstaller.php | 12 + .../Composer/Installers/YawikInstaller.php | 32 + .../src/Composer/Installers/ZendInstaller.php | 11 + .../Composer/Installers/ZikulaInstaller.php | 10 + .../composer/installers/src/bootstrap.php | 13 + .../vendor/monolog/monolog/CHANGELOG.md | 415 ++ .../wp-rocket/vendor/monolog/monolog/LICENSE | 19 + .../vendor/monolog/monolog/README.md | 94 + .../vendor/monolog/monolog/composer.json | 65 + .../monolog/src/Monolog/ErrorHandler.php | 238 + .../Monolog/Formatter/ChromePHPFormatter.php | 78 + .../Monolog/Formatter/ElasticaFormatter.php | 89 + .../Monolog/Formatter/FlowdockFormatter.php | 116 + .../Monolog/Formatter/FluentdFormatter.php | 88 + .../Monolog/Formatter/FormatterInterface.php | 36 + .../Formatter/GelfMessageFormatter.php | 138 + .../src/Monolog/Formatter/HtmlFormatter.php | 142 + .../src/Monolog/Formatter/JsonFormatter.php | 212 + .../src/Monolog/Formatter/LineFormatter.php | 181 + .../src/Monolog/Formatter/LogglyFormatter.php | 47 + .../Monolog/Formatter/LogstashFormatter.php | 166 + .../Monolog/Formatter/MongoDBFormatter.php | 107 + .../Monolog/Formatter/NormalizerFormatter.php | 180 + .../src/Monolog/Formatter/ScalarFormatter.php | 48 + .../Monolog/Formatter/WildfireFormatter.php | 113 + .../src/Monolog/Handler/AbstractHandler.php | 196 + .../Handler/AbstractProcessingHandler.php | 68 + .../Monolog/Handler/AbstractSyslogHandler.php | 101 + .../src/Monolog/Handler/AmqpHandler.php | 148 + .../Monolog/Handler/BrowserConsoleHandler.php | 241 + .../src/Monolog/Handler/BufferHandler.php | 148 + .../src/Monolog/Handler/ChromePHPHandler.php | 212 + .../src/Monolog/Handler/CouchDBHandler.php | 72 + .../src/Monolog/Handler/CubeHandler.php | 152 + .../monolog/src/Monolog/Handler/Curl/Util.php | 57 + .../Monolog/Handler/DeduplicationHandler.php | 169 + .../Handler/DoctrineCouchDBHandler.php | 45 + .../src/Monolog/Handler/DynamoDbHandler.php | 107 + .../Monolog/Handler/ElasticSearchHandler.php | 128 + .../src/Monolog/Handler/ErrorLogHandler.php | 82 + .../src/Monolog/Handler/FilterHandler.php | 172 + .../ActivationStrategyInterface.php | 28 + .../ChannelLevelActivationStrategy.php | 59 + .../ErrorLevelActivationStrategy.php | 34 + .../Monolog/Handler/FingersCrossedHandler.php | 207 + .../src/Monolog/Handler/FirePHPHandler.php | 195 + .../src/Monolog/Handler/FleepHookHandler.php | 126 + .../src/Monolog/Handler/FlowdockHandler.php | 128 + .../Handler/FormattableHandlerInterface.php | 39 + .../Handler/FormattableHandlerTrait.php | 63 + .../src/Monolog/Handler/GelfHandler.php | 65 + .../src/Monolog/Handler/GroupHandler.php | 117 + .../src/Monolog/Handler/HandlerInterface.php | 90 + .../src/Monolog/Handler/HandlerWrapper.php | 116 + .../src/Monolog/Handler/HipChatHandler.php | 367 ++ .../src/Monolog/Handler/IFTTTHandler.php | 70 + .../src/Monolog/Handler/InsightOpsHandler.php | 62 + .../src/Monolog/Handler/LogEntriesHandler.php | 55 + .../src/Monolog/Handler/LogglyHandler.php | 102 + .../src/Monolog/Handler/MailHandler.php | 67 + .../src/Monolog/Handler/MandrillHandler.php | 68 + .../Handler/MissingExtensionException.php | 21 + .../src/Monolog/Handler/MongoDBHandler.php | 59 + .../Monolog/Handler/NativeMailerHandler.php | 185 + .../src/Monolog/Handler/NewRelicHandler.php | 205 + .../src/Monolog/Handler/NullHandler.php | 45 + .../src/Monolog/Handler/PHPConsoleHandler.php | 243 + .../Handler/ProcessableHandlerInterface.php | 40 + .../Handler/ProcessableHandlerTrait.php | 73 + .../src/Monolog/Handler/PsrHandler.php | 56 + .../src/Monolog/Handler/PushoverHandler.php | 185 + .../src/Monolog/Handler/RavenHandler.php | 234 + .../src/Monolog/Handler/RedisHandler.php | 98 + .../src/Monolog/Handler/RollbarHandler.php | 144 + .../Monolog/Handler/RotatingFileHandler.php | 191 + .../src/Monolog/Handler/SamplingHandler.php | 113 + .../src/Monolog/Handler/Slack/SlackRecord.php | 299 ++ .../src/Monolog/Handler/SlackHandler.php | 221 + .../Monolog/Handler/SlackWebhookHandler.php | 121 + .../src/Monolog/Handler/SlackbotHandler.php | 84 + .../src/Monolog/Handler/SocketHandler.php | 385 ++ .../src/Monolog/Handler/StreamHandler.php | 179 + .../Monolog/Handler/SwiftMailerHandler.php | 111 + .../src/Monolog/Handler/SyslogHandler.php | 67 + .../Monolog/Handler/SyslogUdp/UdpSocket.php | 56 + .../src/Monolog/Handler/SyslogUdpHandler.php | 124 + .../src/Monolog/Handler/TestHandler.php | 177 + .../Handler/WhatFailureGroupHandler.php | 72 + .../Monolog/Handler/ZendMonitorHandler.php | 101 + .../monolog/monolog/src/Monolog/Logger.php | 796 +++ .../src/Monolog/Processor/GitProcessor.php | 64 + .../Processor/IntrospectionProcessor.php | 112 + .../Processor/MemoryPeakUsageProcessor.php | 35 + .../src/Monolog/Processor/MemoryProcessor.php | 63 + .../Processor/MemoryUsageProcessor.php | 35 + .../Monolog/Processor/MercurialProcessor.php | 63 + .../Monolog/Processor/ProcessIdProcessor.php | 31 + .../Monolog/Processor/ProcessorInterface.php | 25 + .../Processor/PsrLogMessageProcessor.php | 50 + .../src/Monolog/Processor/TagProcessor.php | 44 + .../src/Monolog/Processor/UidProcessor.php | 59 + .../src/Monolog/Processor/WebProcessor.php | 113 + .../monolog/monolog/src/Monolog/Registry.php | 134 + .../src/Monolog/ResettableInterface.php | 31 + .../monolog/src/Monolog/SignalHandler.php | 115 + .../monolog/monolog/src/Monolog/Utils.php | 189 + .../wp-rocket/vendor/psr/container/.gitignore | 3 + .../wp-rocket/vendor/psr/container/LICENSE | 21 + .../wp-rocket/vendor/psr/container/README.md | 5 + .../vendor/psr/container/composer.json | 27 + .../src/ContainerExceptionInterface.php | 13 + .../psr/container/src/ContainerInterface.php | 37 + .../src/NotFoundExceptionInterface.php | 13 + .../plugins/wp-rocket/vendor/psr/log/LICENSE | 19 + .../vendor/psr/log/Psr/Log/AbstractLogger.php | 128 + .../log/Psr/Log/InvalidArgumentException.php | 7 + .../vendor/psr/log/Psr/Log/LogLevel.php | 18 + .../psr/log/Psr/Log/LoggerAwareInterface.php | 18 + .../psr/log/Psr/Log/LoggerAwareTrait.php | 26 + .../psr/log/Psr/Log/LoggerInterface.php | 125 + .../vendor/psr/log/Psr/Log/LoggerTrait.php | 142 + .../vendor/psr/log/Psr/Log/NullLogger.php | 30 + .../vendor/psr/log/Psr/Log/Test/DummyTest.php | 18 + .../log/Psr/Log/Test/LoggerInterfaceTest.php | 138 + .../psr/log/Psr/Log/Test/TestLogger.php | 147 + .../wp-rocket/vendor/psr/log/README.md | 58 + .../wp-rocket/vendor/psr/log/composer.json | 26 + .../wp-rocket/views/cache/advanced-cache.php | 81 + .../views/cpcss/activate-cpcss-mobile.php | 42 + .../views/cpcss/metabox/container.php | 30 + .../views/cpcss/metabox/generate.php | 59 + .../views/deactivation-intent/form.php | 157 + .../wp-rocket/views/settings/beacon.php | 25 + .../views/settings/buttons/button.php | 19 + .../wp-rocket/views/settings/buttons/link.php | 19 + .../views/settings/enable-google-fonts.php | 41 + .../views/settings/fields/cache-lifespan.php | 39 + .../views/settings/fields/checkbox.php | 71 + .../views/settings/fields/cnames.php | 123 + .../views/settings/fields/hidden.php | 18 + .../views/settings/fields/import-form.php | 50 + .../views/settings/fields/number.php | 33 + .../views/settings/fields/one-click-addon.php | 68 + .../views/settings/fields/rocket-addon.php | 61 + .../views/settings/fields/rocket-cdn.php | 79 + .../views/settings/fields/select.php | 43 + .../settings/fields/sliding-checkbox.php | 36 + .../wp-rocket/views/settings/fields/text.php | 43 + .../views/settings/fields/textarea.php | 50 + .../wp-rocket/views/settings/navigation.php | 30 + .../views/settings/page-sections/addons.php | 24 + .../settings/page-sections/advanced-cache.php | 24 + .../views/settings/page-sections/cache.php | 24 + .../settings/page-sections/cloudflare.php | 54 + .../settings/page-sections/dashboard.php | 263 + .../views/settings/page-sections/database.php | 29 + .../page-sections/file-optimization.php | 24 + .../settings/page-sections/heartbeat.php | 25 + .../views/settings/page-sections/imagify.php | 49 + .../views/settings/page-sections/license.php | 61 + .../views/settings/page-sections/media.php | 24 + .../views/settings/page-sections/page-cdn.php | 40 + .../views/settings/page-sections/preload.php | 24 + .../views/settings/page-sections/sucuri.php | 55 + .../views/settings/page-sections/tools.php | 119 + .../settings/page-sections/tutorials.php | 65 + .../plugins/wp-rocket/views/settings/page.php | 114 + .../views/settings/partials/documentation.php | 31 + .../settings/partials/getting-started.php | 29 + .../views/settings/partials/sidebar.php | 34 + .../settings/sections/addons-container.php | 33 + .../settings/sections/fields-container.php | 46 + .../views/settings/sections/nocontainer.php | 23 + wp-content/plugins/wp-rocket/wp-rocket.php | 127 + wp-content/wp-rocket-config/index.html | 0 wp-content/wp-rocket-config/localhost.php | 50 + 927 files changed, 271703 insertions(+), 2 deletions(-) create mode 100644 wp-content/cache/busting/index.html create mode 100644 wp-content/cache/critical-css/index.html create mode 100644 wp-content/cache/min/1/129b71b95f0aef75c3b9a87a275e7213.js create mode 100644 wp-content/cache/min/1/129b71b95f0aef75c3b9a87a275e7213.js.gz create mode 100644 wp-content/cache/min/1/19cebb0184f1dcc00197285669963163.css create mode 100644 wp-content/cache/min/1/19cebb0184f1dcc00197285669963163.css.gz create mode 100644 wp-content/cache/min/1/28ddaf2bd7547e4cd818ca3342088a73.css create mode 100644 wp-content/cache/min/1/28ddaf2bd7547e4cd818ca3342088a73.css.gz create mode 100644 wp-content/cache/min/1/2a9aacae424531c5db9e4be096ae42c1.js create mode 100644 wp-content/cache/min/1/2a9aacae424531c5db9e4be096ae42c1.js.gz create mode 100644 wp-content/cache/min/index.html create mode 100644 wp-content/cache/wp-rocket/.htaccess create mode 100644 wp-content/cache/wp-rocket/index.html create mode 100644 wp-content/cache/wp-rocket/localhost/2022/02/12/choang-ngop-voi-mau-biet-thu-3000m2-tan-co-dien-sieu-sang-bt1111121/index-mobile.html create mode 100644 wp-content/cache/wp-rocket/localhost/2022/02/12/choang-ngop-voi-mau-biet-thu-3000m2-tan-co-dien-sieu-sang-bt1111121/index-mobile.html_gzip create mode 100644 wp-content/cache/wp-rocket/localhost/2022/02/12/choang-ngop-voi-mau-biet-thu-3000m2-tan-co-dien-sieu-sang-bt1111121/index.html create mode 100644 wp-content/cache/wp-rocket/localhost/2022/02/12/choang-ngop-voi-mau-biet-thu-3000m2-tan-co-dien-sieu-sang-bt1111121/index.html_gzip create mode 100644 wp-content/cache/wp-rocket/localhost/2022/02/13/cap-nhat-hinh-anh-thi-cong-ngoi-nha-tret-cap-4-mai-thai-dep-160m2-hinh-chu-u-chi-phi-11-ty-dong-tc508108/index-mobile.html create mode 100644 wp-content/cache/wp-rocket/localhost/2022/02/13/cap-nhat-hinh-anh-thi-cong-ngoi-nha-tret-cap-4-mai-thai-dep-160m2-hinh-chu-u-chi-phi-11-ty-dong-tc508108/index-mobile.html_gzip create mode 100644 wp-content/cache/wp-rocket/localhost/2022/02/13/cap-nhat-hinh-anh-thi-cong-ngoi-nha-tret-cap-4-mai-thai-dep-160m2-hinh-chu-u-chi-phi-11-ty-dong-tc508108/index.html create mode 100644 wp-content/cache/wp-rocket/localhost/2022/02/13/cap-nhat-hinh-anh-thi-cong-ngoi-nha-tret-cap-4-mai-thai-dep-160m2-hinh-chu-u-chi-phi-11-ty-dong-tc508108/index.html_gzip create mode 100644 wp-content/cache/wp-rocket/localhost/2022/02/13/hinh-anh-ngoi-nha-cap-4-dep-o-phu-tho-220m2-chi-phi-17-ty-dong-dang-thi-cong-va-hoan-thien-tc505108/index-mobile.html create mode 100644 wp-content/cache/wp-rocket/localhost/2022/02/13/hinh-anh-ngoi-nha-cap-4-dep-o-phu-tho-220m2-chi-phi-17-ty-dong-dang-thi-cong-va-hoan-thien-tc505108/index-mobile.html_gzip create mode 100644 wp-content/cache/wp-rocket/localhost/2022/02/13/hinh-anh-ngoi-nha-cap-4-dep-o-phu-tho-220m2-chi-phi-17-ty-dong-dang-thi-cong-va-hoan-thien-tc505108/index.html create mode 100644 wp-content/cache/wp-rocket/localhost/2022/02/13/hinh-anh-ngoi-nha-cap-4-dep-o-phu-tho-220m2-chi-phi-17-ty-dong-dang-thi-cong-va-hoan-thien-tc505108/index.html_gzip create mode 100644 wp-content/cache/wp-rocket/localhost/2022/02/13/kien-truc-su-tu-van-cai-tao-mat-tien-nha-pho-7-tang-rong-9m-o-bac-ninh-np218110/index-mobile.html create mode 100644 wp-content/cache/wp-rocket/localhost/2022/02/13/kien-truc-su-tu-van-cai-tao-mat-tien-nha-pho-7-tang-rong-9m-o-bac-ninh-np218110/index-mobile.html_gzip create mode 100644 wp-content/cache/wp-rocket/localhost/2022/02/13/kien-truc-su-tu-van-cai-tao-mat-tien-nha-pho-7-tang-rong-9m-o-bac-ninh-np218110/index.html create mode 100644 wp-content/cache/wp-rocket/localhost/2022/02/13/kien-truc-su-tu-van-cai-tao-mat-tien-nha-pho-7-tang-rong-9m-o-bac-ninh-np218110/index.html_gzip create mode 100644 wp-content/cache/wp-rocket/localhost/2022/02/13/ngo-ngang-voi-mau-thiet-ke-biet-thu-250m2-3-tang-co-ho-boi-hien-dai-bt2200921/index-mobile.html create mode 100644 wp-content/cache/wp-rocket/localhost/2022/02/13/ngo-ngang-voi-mau-thiet-ke-biet-thu-250m2-3-tang-co-ho-boi-hien-dai-bt2200921/index-mobile.html_gzip create mode 100644 wp-content/cache/wp-rocket/localhost/2022/02/13/ngo-ngang-voi-mau-thiet-ke-biet-thu-250m2-3-tang-co-ho-boi-hien-dai-bt2200921/index.html create mode 100644 wp-content/cache/wp-rocket/localhost/2022/02/13/ngo-ngang-voi-mau-thiet-ke-biet-thu-250m2-3-tang-co-ho-boi-hien-dai-bt2200921/index.html_gzip create mode 100644 wp-content/cache/wp-rocket/localhost/2022/02/13/sieu-pham-biet-thu-200m2-3-tang-1-tum-co-tang-ham-hien-dai-bac-nhat-bt9270421/index-mobile.html create mode 100644 wp-content/cache/wp-rocket/localhost/2022/02/13/sieu-pham-biet-thu-200m2-3-tang-1-tum-co-tang-ham-hien-dai-bac-nhat-bt9270421/index-mobile.html_gzip create mode 100644 wp-content/cache/wp-rocket/localhost/2022/02/13/sieu-pham-biet-thu-200m2-3-tang-1-tum-co-tang-ham-hien-dai-bac-nhat-bt9270421/index.html create mode 100644 wp-content/cache/wp-rocket/localhost/2022/02/13/sieu-pham-biet-thu-200m2-3-tang-1-tum-co-tang-ham-hien-dai-bac-nhat-bt9270421/index.html_gzip create mode 100644 wp-content/cache/wp-rocket/localhost/2022/02/13/thiet-ke-nha-5-tang-60m2-hien-dai-toi-uu-cong-nang-o-ha-noi-np520070/index-mobile.html create mode 100644 wp-content/cache/wp-rocket/localhost/2022/02/13/thiet-ke-nha-5-tang-60m2-hien-dai-toi-uu-cong-nang-o-ha-noi-np520070/index-mobile.html_gzip create mode 100644 wp-content/cache/wp-rocket/localhost/2022/02/13/thiet-ke-nha-5-tang-60m2-hien-dai-toi-uu-cong-nang-o-ha-noi-np520070/index.html create mode 100644 wp-content/cache/wp-rocket/localhost/2022/02/13/thiet-ke-nha-5-tang-60m2-hien-dai-toi-uu-cong-nang-o-ha-noi-np520070/index.html_gzip create mode 100644 wp-content/cache/wp-rocket/localhost/2022/02/13/thuc-te-mau-nha-cap-4-dep-o-hai-phong-dien-tich-150m2-da-thi-cong-va-hoan-thien-tc510098/index-mobile.html create mode 100644 wp-content/cache/wp-rocket/localhost/2022/02/13/thuc-te-mau-nha-cap-4-dep-o-hai-phong-dien-tich-150m2-da-thi-cong-va-hoan-thien-tc510098/index-mobile.html_gzip create mode 100644 wp-content/cache/wp-rocket/localhost/2022/02/13/thuc-te-mau-nha-cap-4-dep-o-hai-phong-dien-tich-150m2-da-thi-cong-va-hoan-thien-tc510098/index.html create mode 100644 wp-content/cache/wp-rocket/localhost/2022/02/13/thuc-te-mau-nha-cap-4-dep-o-hai-phong-dien-tich-150m2-da-thi-cong-va-hoan-thien-tc510098/index.html_gzip create mode 100644 wp-content/cache/wp-rocket/localhost/2022/02/13/tu-van-chi-phi-xay-nha-5-tang-60m2-dep-mien-che-np621070/index-mobile.html create mode 100644 wp-content/cache/wp-rocket/localhost/2022/02/13/tu-van-chi-phi-xay-nha-5-tang-60m2-dep-mien-che-np621070/index-mobile.html_gzip create mode 100644 wp-content/cache/wp-rocket/localhost/2022/02/13/tu-van-chi-phi-xay-nha-5-tang-60m2-dep-mien-che-np621070/index.html create mode 100644 wp-content/cache/wp-rocket/localhost/2022/02/13/tu-van-chi-phi-xay-nha-5-tang-60m2-dep-mien-che-np621070/index.html_gzip create mode 100644 wp-content/cache/wp-rocket/localhost/2022/02/13/tu-van-thiet-ke-noi-that-dep-cho-nha-ong-hien-dai-nt115109/index-mobile.html create mode 100644 wp-content/cache/wp-rocket/localhost/2022/02/13/tu-van-thiet-ke-noi-that-dep-cho-nha-ong-hien-dai-nt115109/index-mobile.html_gzip create mode 100644 wp-content/cache/wp-rocket/localhost/2022/02/13/tu-van-thiet-ke-noi-that-dep-cho-nha-ong-hien-dai-nt115109/index.html create mode 100644 wp-content/cache/wp-rocket/localhost/2022/02/13/tu-van-thiet-ke-noi-that-dep-cho-nha-ong-hien-dai-nt115109/index.html_gzip create mode 100644 wp-content/cache/wp-rocket/localhost/2022/02/13/tu-van-thiet-ke-noi-that-phong-khach-25m2-ket-hop-phong-tho-dep-o-long-bien-ha-noi-nt526060/index-mobile.html create mode 100644 wp-content/cache/wp-rocket/localhost/2022/02/13/tu-van-thiet-ke-noi-that-phong-khach-25m2-ket-hop-phong-tho-dep-o-long-bien-ha-noi-nt526060/index-mobile.html_gzip create mode 100644 wp-content/cache/wp-rocket/localhost/2022/02/13/tu-van-thiet-ke-noi-that-phong-khach-25m2-ket-hop-phong-tho-dep-o-long-bien-ha-noi-nt526060/index.html create mode 100644 wp-content/cache/wp-rocket/localhost/2022/02/13/tu-van-thiet-ke-noi-that-phong-khach-25m2-ket-hop-phong-tho-dep-o-long-bien-ha-noi-nt526060/index.html_gzip create mode 100644 wp-content/cache/wp-rocket/localhost/2022/02/13/tu-van-thiet-ke-van-phong-lam-viec-bang-go-tu-nhien-phong-cach-tan-co-dien-nt628070/index-mobile.html create mode 100644 wp-content/cache/wp-rocket/localhost/2022/02/13/tu-van-thiet-ke-van-phong-lam-viec-bang-go-tu-nhien-phong-cach-tan-co-dien-nt628070/index-mobile.html_gzip create mode 100644 wp-content/cache/wp-rocket/localhost/2022/02/13/tu-van-thiet-ke-van-phong-lam-viec-bang-go-tu-nhien-phong-cach-tan-co-dien-nt628070/index.html create mode 100644 wp-content/cache/wp-rocket/localhost/2022/02/13/tu-van-thiet-ke-van-phong-lam-viec-bang-go-tu-nhien-phong-cach-tan-co-dien-nt628070/index.html_gzip create mode 100644 wp-content/cache/wp-rocket/localhost/category/biet-thu/biet-thu-2-tang/index-mobile.html create mode 100644 wp-content/cache/wp-rocket/localhost/category/biet-thu/biet-thu-2-tang/index-mobile.html_gzip create mode 100644 wp-content/cache/wp-rocket/localhost/category/biet-thu/biet-thu-2-tang/index.html create mode 100644 wp-content/cache/wp-rocket/localhost/category/biet-thu/biet-thu-2-tang/index.html_gzip create mode 100644 wp-content/cache/wp-rocket/localhost/category/biet-thu/biet-thu-3-tang/index-mobile.html create mode 100644 wp-content/cache/wp-rocket/localhost/category/biet-thu/biet-thu-3-tang/index-mobile.html_gzip create mode 100644 wp-content/cache/wp-rocket/localhost/category/biet-thu/biet-thu-3-tang/index.html create mode 100644 wp-content/cache/wp-rocket/localhost/category/biet-thu/biet-thu-3-tang/index.html_gzip create mode 100644 wp-content/cache/wp-rocket/localhost/category/biet-thu/biet-thu-nha-vuon-1-tang/index-mobile.html create mode 100644 wp-content/cache/wp-rocket/localhost/category/biet-thu/biet-thu-nha-vuon-1-tang/index-mobile.html_gzip create mode 100644 wp-content/cache/wp-rocket/localhost/category/biet-thu/biet-thu-nha-vuon-1-tang/index.html create mode 100644 wp-content/cache/wp-rocket/localhost/category/biet-thu/biet-thu-nha-vuon-1-tang/index.html_gzip create mode 100644 wp-content/cache/wp-rocket/localhost/category/biet-thu/index-mobile.html create mode 100644 wp-content/cache/wp-rocket/localhost/category/biet-thu/index-mobile.html_gzip create mode 100644 wp-content/cache/wp-rocket/localhost/category/biet-thu/index.html create mode 100644 wp-content/cache/wp-rocket/localhost/category/biet-thu/index.html_gzip create mode 100644 wp-content/cache/wp-rocket/localhost/category/biet-thu/lau-dai/index-mobile.html create mode 100644 wp-content/cache/wp-rocket/localhost/category/biet-thu/lau-dai/index-mobile.html_gzip create mode 100644 wp-content/cache/wp-rocket/localhost/category/biet-thu/lau-dai/index.html create mode 100644 wp-content/cache/wp-rocket/localhost/category/biet-thu/lau-dai/index.html_gzip create mode 100644 wp-content/cache/wp-rocket/localhost/category/nha-pho/index-mobile.html create mode 100644 wp-content/cache/wp-rocket/localhost/category/nha-pho/index-mobile.html_gzip create mode 100644 wp-content/cache/wp-rocket/localhost/category/nha-pho/index.html create mode 100644 wp-content/cache/wp-rocket/localhost/category/nha-pho/index.html_gzip create mode 100644 wp-content/cache/wp-rocket/localhost/category/nha-pho/nha-pho-3-tang/index-mobile.html create mode 100644 wp-content/cache/wp-rocket/localhost/category/nha-pho/nha-pho-3-tang/index-mobile.html_gzip create mode 100644 wp-content/cache/wp-rocket/localhost/category/nha-pho/nha-pho-3-tang/index.html create mode 100644 wp-content/cache/wp-rocket/localhost/category/nha-pho/nha-pho-3-tang/index.html_gzip create mode 100644 wp-content/cache/wp-rocket/localhost/category/nha-pho/nha-pho-4-tang/index-mobile.html create mode 100644 wp-content/cache/wp-rocket/localhost/category/nha-pho/nha-pho-4-tang/index-mobile.html_gzip create mode 100644 wp-content/cache/wp-rocket/localhost/category/nha-pho/nha-pho-4-tang/index.html create mode 100644 wp-content/cache/wp-rocket/localhost/category/nha-pho/nha-pho-4-tang/index.html_gzip create mode 100644 wp-content/cache/wp-rocket/localhost/category/nha-pho/nha-pho-5-tang/index-mobile.html create mode 100644 wp-content/cache/wp-rocket/localhost/category/nha-pho/nha-pho-5-tang/index-mobile.html_gzip create mode 100644 wp-content/cache/wp-rocket/localhost/category/nha-pho/nha-pho-5-tang/index.html create mode 100644 wp-content/cache/wp-rocket/localhost/category/nha-pho/nha-pho-5-tang/index.html_gzip create mode 100644 wp-content/cache/wp-rocket/localhost/category/noi-that/index-mobile.html create mode 100644 wp-content/cache/wp-rocket/localhost/category/noi-that/index-mobile.html_gzip create mode 100644 wp-content/cache/wp-rocket/localhost/category/noi-that/index.html create mode 100644 wp-content/cache/wp-rocket/localhost/category/noi-that/index.html_gzip create mode 100644 wp-content/cache/wp-rocket/localhost/category/noi-that/noi-that-biet-thu/index-mobile.html create mode 100644 wp-content/cache/wp-rocket/localhost/category/noi-that/noi-that-biet-thu/index-mobile.html_gzip create mode 100644 wp-content/cache/wp-rocket/localhost/category/noi-that/noi-that-biet-thu/index.html create mode 100644 wp-content/cache/wp-rocket/localhost/category/noi-that/noi-that-biet-thu/index.html_gzip create mode 100644 wp-content/cache/wp-rocket/localhost/category/noi-that/noi-that-cafe-nha-hang/index-mobile.html create mode 100644 wp-content/cache/wp-rocket/localhost/category/noi-that/noi-that-cafe-nha-hang/index-mobile.html_gzip create mode 100644 wp-content/cache/wp-rocket/localhost/category/noi-that/noi-that-cafe-nha-hang/index.html create mode 100644 wp-content/cache/wp-rocket/localhost/category/noi-that/noi-that-cafe-nha-hang/index.html_gzip create mode 100644 wp-content/cache/wp-rocket/localhost/category/noi-that/noi-that-chung-cu/index-mobile.html create mode 100644 wp-content/cache/wp-rocket/localhost/category/noi-that/noi-that-chung-cu/index-mobile.html_gzip create mode 100644 wp-content/cache/wp-rocket/localhost/category/noi-that/noi-that-chung-cu/index.html create mode 100644 wp-content/cache/wp-rocket/localhost/category/noi-that/noi-that-chung-cu/index.html_gzip create mode 100644 wp-content/cache/wp-rocket/localhost/category/noi-that/noi-that-nha-pho/index-mobile.html create mode 100644 wp-content/cache/wp-rocket/localhost/category/noi-that/noi-that-nha-pho/index-mobile.html_gzip create mode 100644 wp-content/cache/wp-rocket/localhost/category/noi-that/noi-that-nha-pho/index.html create mode 100644 wp-content/cache/wp-rocket/localhost/category/noi-that/noi-that-nha-pho/index.html_gzip create mode 100644 wp-content/cache/wp-rocket/localhost/category/noi-that/noi-that-van-phong/index-mobile.html create mode 100644 wp-content/cache/wp-rocket/localhost/category/noi-that/noi-that-van-phong/index-mobile.html_gzip create mode 100644 wp-content/cache/wp-rocket/localhost/category/noi-that/noi-that-van-phong/index.html create mode 100644 wp-content/cache/wp-rocket/localhost/category/noi-that/noi-that-van-phong/index.html_gzip create mode 100644 wp-content/cache/wp-rocket/localhost/category/thi-cong/index-mobile.html create mode 100644 wp-content/cache/wp-rocket/localhost/category/thi-cong/index-mobile.html_gzip create mode 100644 wp-content/cache/wp-rocket/localhost/category/thi-cong/index.html create mode 100644 wp-content/cache/wp-rocket/localhost/category/thi-cong/index.html_gzip create mode 100644 wp-content/cache/wp-rocket/localhost/featured_item/cung-don-xem-mau-nha-2-tang-3-phong-ngu-5x18-khien-cac-gia-chu-tram-tro/index-mobile.html create mode 100644 wp-content/cache/wp-rocket/localhost/featured_item/cung-don-xem-mau-nha-2-tang-3-phong-ngu-5x18-khien-cac-gia-chu-tram-tro/index-mobile.html_gzip create mode 100644 wp-content/cache/wp-rocket/localhost/featured_item/cung-don-xem-mau-nha-2-tang-3-phong-ngu-5x18-khien-cac-gia-chu-tram-tro/index.html create mode 100644 wp-content/cache/wp-rocket/localhost/featured_item/cung-don-xem-mau-nha-2-tang-3-phong-ngu-5x18-khien-cac-gia-chu-tram-tro/index.html_gzip create mode 100644 wp-content/cache/wp-rocket/localhost/featured_item/mau-nha-vuong-mai-nhat-2-tang-hot-nhat-2022/index-mobile.html create mode 100644 wp-content/cache/wp-rocket/localhost/featured_item/mau-nha-vuong-mai-nhat-2-tang-hot-nhat-2022/index-mobile.html_gzip create mode 100644 wp-content/cache/wp-rocket/localhost/featured_item/mau-nha-vuong-mai-nhat-2-tang-hot-nhat-2022/index.html create mode 100644 wp-content/cache/wp-rocket/localhost/featured_item/mau-nha-vuong-mai-nhat-2-tang-hot-nhat-2022/index.html_gzip create mode 100644 wp-content/cache/wp-rocket/localhost/index-mobile.html create mode 100644 wp-content/cache/wp-rocket/localhost/index-mobile.html_gzip create mode 100644 wp-content/cache/wp-rocket/localhost/index.html create mode 100644 wp-content/cache/wp-rocket/localhost/index.html_gzip create mode 100644 wp-content/plugins/wp-rocket/assets/css/wpr-admin-common.css create mode 100644 wp-content/plugins/wp-rocket/assets/css/wpr-admin-rtl.css create mode 100644 wp-content/plugins/wp-rocket/assets/css/wpr-admin.css create mode 100644 wp-content/plugins/wp-rocket/assets/css/wpr-modal.css create mode 100644 wp-content/plugins/wp-rocket/assets/fonts/icomoon.eot create mode 100644 wp-content/plugins/wp-rocket/assets/fonts/icomoon.svg create mode 100644 wp-content/plugins/wp-rocket/assets/fonts/icomoon.ttf create mode 100644 wp-content/plugins/wp-rocket/assets/fonts/icomoon.woff create mode 100644 wp-content/plugins/wp-rocket/assets/img/automatic.svg create mode 100644 wp-content/plugins/wp-rocket/assets/img/bandwidth.svg create mode 100644 wp-content/plugins/wp-rocket/assets/img/bg-activated.svg create mode 100644 wp-content/plugins/wp-rocket/assets/img/configuration.svg create mode 100644 wp-content/plugins/wp-rocket/assets/img/heartbeat-hover.svg create mode 100644 wp-content/plugins/wp-rocket/assets/img/heartbeat.svg create mode 100644 wp-content/plugins/wp-rocket/assets/img/icon-128x128.png create mode 100644 wp-content/plugins/wp-rocket/assets/img/icon-256x256.png create mode 100644 wp-content/plugins/wp-rocket/assets/img/imagify-hover.svg create mode 100644 wp-content/plugins/wp-rocket/assets/img/imagify.svg create mode 100644 wp-content/plugins/wp-rocket/assets/img/infinite.svg create mode 100644 wp-content/plugins/wp-rocket/assets/img/logo-adblock.svg create mode 100644 wp-content/plugins/wp-rocket/assets/img/logo-cloudflare.svg create mode 100644 wp-content/plugins/wp-rocket/assets/img/logo-cloudflare2.svg create mode 100644 wp-content/plugins/wp-rocket/assets/img/logo-facebook.svg create mode 100644 wp-content/plugins/wp-rocket/assets/img/logo-google-analytics.svg create mode 100644 wp-content/plugins/wp-rocket/assets/img/logo-sucuri.png create mode 100644 wp-content/plugins/wp-rocket/assets/img/logo-varnish.svg create mode 100644 wp-content/plugins/wp-rocket/assets/img/logo-wprocket-dark.svg create mode 100644 wp-content/plugins/wp-rocket/assets/img/logo-wprocket-light.svg create mode 100644 wp-content/plugins/wp-rocket/assets/img/picto-wprocket-dark.svg create mode 100644 wp-content/plugins/wp-rocket/assets/img/picto-wprocket-light.svg create mode 100644 wp-content/plugins/wp-rocket/assets/img/play-alt.svg create mode 100644 wp-content/plugins/wp-rocket/assets/img/play-hover.svg create mode 100644 wp-content/plugins/wp-rocket/assets/img/play.svg create mode 100644 wp-content/plugins/wp-rocket/assets/img/plus.svg create mode 100644 wp-content/plugins/wp-rocket/assets/img/warning.svg create mode 100644 wp-content/plugins/wp-rocket/assets/img/youtube.png create mode 100644 wp-content/plugins/wp-rocket/assets/js/browser-checker.js create mode 100644 wp-content/plugins/wp-rocket/assets/js/browser-checker.min.js create mode 100644 wp-content/plugins/wp-rocket/assets/js/cpcss-removal.js create mode 100644 wp-content/plugins/wp-rocket/assets/js/cpcss-removal.min.js create mode 100644 wp-content/plugins/wp-rocket/assets/js/editor/editor.js create mode 100644 wp-content/plugins/wp-rocket/assets/js/lazyload-scripts.js create mode 100644 wp-content/plugins/wp-rocket/assets/js/lazyload-scripts.min.js create mode 100644 wp-content/plugins/wp-rocket/assets/js/lazyload/11.0.6/lazyload.js create mode 100644 wp-content/plugins/wp-rocket/assets/js/lazyload/11.0.6/lazyload.min.js create mode 100644 wp-content/plugins/wp-rocket/assets/js/lazyload/11.0.6/lazyload.min.js.map create mode 100644 wp-content/plugins/wp-rocket/assets/js/lazyload/12.0/lazyload.js create mode 100644 wp-content/plugins/wp-rocket/assets/js/lazyload/12.0/lazyload.min.js create mode 100644 wp-content/plugins/wp-rocket/assets/js/lazyload/12.0/lazyload.min.js.map create mode 100644 wp-content/plugins/wp-rocket/assets/js/lazyload/16.1/lazyload.js create mode 100644 wp-content/plugins/wp-rocket/assets/js/lazyload/16.1/lazyload.min.js create mode 100644 wp-content/plugins/wp-rocket/assets/js/micromodal.min.js create mode 100644 wp-content/plugins/wp-rocket/assets/js/preload-links.js create mode 100644 wp-content/plugins/wp-rocket/assets/js/preload-links.min.js create mode 100644 wp-content/plugins/wp-rocket/assets/js/wpr-admin-common.js create mode 100644 wp-content/plugins/wp-rocket/assets/js/wpr-admin.js create mode 100644 wp-content/plugins/wp-rocket/assets/js/wpr-admin.js.map create mode 100644 wp-content/plugins/wp-rocket/assets/js/wpr-cpcss-heartbeat.js create mode 100644 wp-content/plugins/wp-rocket/assets/js/wpr-cpcss.js create mode 100644 wp-content/plugins/wp-rocket/assets/js/wpr-modal.js create mode 100644 wp-content/plugins/wp-rocket/composer.json create mode 100644 wp-content/plugins/wp-rocket/composer.lock create mode 100644 wp-content/plugins/wp-rocket/contributors.txt create mode 100644 wp-content/plugins/wp-rocket/inc/3rd-party/3rd-party.php create mode 100644 wp-content/plugins/wp-rocket/inc/3rd-party/hosting/flywheel.php create mode 100644 wp-content/plugins/wp-rocket/inc/3rd-party/hosting/godaddy.php create mode 100644 wp-content/plugins/wp-rocket/inc/3rd-party/hosting/kinsta.php create mode 100644 wp-content/plugins/wp-rocket/inc/3rd-party/hosting/nginx.php create mode 100644 wp-content/plugins/wp-rocket/inc/3rd-party/hosting/pagely.php create mode 100644 wp-content/plugins/wp-rocket/inc/3rd-party/hosting/pressidium.php create mode 100644 wp-content/plugins/wp-rocket/inc/3rd-party/hosting/presslabs.php create mode 100644 wp-content/plugins/wp-rocket/inc/3rd-party/hosting/siteground.php create mode 100644 wp-content/plugins/wp-rocket/inc/3rd-party/hosting/wp-serveur.php create mode 100644 wp-content/plugins/wp-rocket/inc/3rd-party/plugins/advanced-custom-fields.php create mode 100644 wp-content/plugins/wp-rocket/inc/3rd-party/plugins/age-verify.php create mode 100644 wp-content/plugins/wp-rocket/inc/3rd-party/plugins/autoptimize.php create mode 100644 wp-content/plugins/wp-rocket/inc/3rd-party/plugins/buddypress.php create mode 100644 wp-content/plugins/wp-rocket/inc/3rd-party/plugins/cookies/cookie-notice.php create mode 100644 wp-content/plugins/wp-rocket/inc/3rd-party/plugins/cookies/eu-cookie-law.php create mode 100644 wp-content/plugins/wp-rocket/inc/3rd-party/plugins/cookies/gdpr.php create mode 100644 wp-content/plugins/wp-rocket/inc/3rd-party/plugins/cookies/uk-cookie-consent.php create mode 100644 wp-content/plugins/wp-rocket/inc/3rd-party/plugins/cookies/weepie-cookie-allow.php create mode 100644 wp-content/plugins/wp-rocket/inc/3rd-party/plugins/custom-login.php create mode 100644 wp-content/plugins/wp-rocket/inc/3rd-party/plugins/disqus.php create mode 100644 wp-content/plugins/wp-rocket/inc/3rd-party/plugins/ecommerce/aelia-currencyswitcher.php create mode 100644 wp-content/plugins/wp-rocket/inc/3rd-party/plugins/ecommerce/aelia-prices-by-country.php create mode 100644 wp-content/plugins/wp-rocket/inc/3rd-party/plugins/ecommerce/aelia-tax-display-by-country.php create mode 100644 wp-content/plugins/wp-rocket/inc/3rd-party/plugins/ecommerce/easy-digital-downloads.php create mode 100644 wp-content/plugins/wp-rocket/inc/3rd-party/plugins/ecommerce/edd-software-licencing.php create mode 100644 wp-content/plugins/wp-rocket/inc/3rd-party/plugins/ecommerce/give.php create mode 100644 wp-content/plugins/wp-rocket/inc/3rd-party/plugins/ecommerce/ithemes-exchange.php create mode 100644 wp-content/plugins/wp-rocket/inc/3rd-party/plugins/ecommerce/jigoshop.php create mode 100644 wp-content/plugins/wp-rocket/inc/3rd-party/plugins/ecommerce/woocommerce-currency-converter-widget.php create mode 100644 wp-content/plugins/wp-rocket/inc/3rd-party/plugins/ecommerce/woocommerce-multilingual.php create mode 100644 wp-content/plugins/wp-rocket/inc/3rd-party/plugins/ecommerce/wpshop.php create mode 100644 wp-content/plugins/wp-rocket/inc/3rd-party/plugins/envira-gallery.php create mode 100644 wp-content/plugins/wp-rocket/inc/3rd-party/plugins/geotargetingwp.php create mode 100644 wp-content/plugins/wp-rocket/inc/3rd-party/plugins/i18n/polylang.php create mode 100644 wp-content/plugins/wp-rocket/inc/3rd-party/plugins/i18n/wpml.php create mode 100644 wp-content/plugins/wp-rocket/inc/3rd-party/plugins/jetpack.php create mode 100644 wp-content/plugins/wp-rocket/inc/3rd-party/plugins/mailchimp.php create mode 100644 wp-content/plugins/wp-rocket/inc/3rd-party/plugins/mobile/wp-appkit.php create mode 100644 wp-content/plugins/wp-rocket/inc/3rd-party/plugins/nginx-helper.php create mode 100644 wp-content/plugins/wp-rocket/inc/3rd-party/plugins/page-builder/thrive-visual-editor.php create mode 100644 wp-content/plugins/wp-rocket/inc/3rd-party/plugins/page-builder/visual-composer.php create mode 100644 wp-content/plugins/wp-rocket/inc/3rd-party/plugins/rating/kk-star-ratings.php create mode 100644 wp-content/plugins/wp-rocket/inc/3rd-party/plugins/rating/wp-postratings.php create mode 100644 wp-content/plugins/wp-rocket/inc/3rd-party/plugins/s2member.php create mode 100644 wp-content/plugins/wp-rocket/inc/3rd-party/plugins/security/secupress.php create mode 100644 wp-content/plugins/wp-rocket/inc/3rd-party/plugins/security/sf-move-login.php create mode 100644 wp-content/plugins/wp-rocket/inc/3rd-party/plugins/security/wps-hide-login.php create mode 100644 wp-content/plugins/wp-rocket/inc/3rd-party/plugins/seo/all-in-one-seo-pack.php create mode 100644 wp-content/plugins/wp-rocket/inc/3rd-party/plugins/seo/premium-seo-pack.php create mode 100644 wp-content/plugins/wp-rocket/inc/3rd-party/plugins/seo/rank-math-seo.php create mode 100644 wp-content/plugins/wp-rocket/inc/3rd-party/plugins/seo/seopress.php create mode 100644 wp-content/plugins/wp-rocket/inc/3rd-party/plugins/seo/the-seo-framework.php create mode 100644 wp-content/plugins/wp-rocket/inc/3rd-party/plugins/seo/yoast-seo.php create mode 100644 wp-content/plugins/wp-rocket/inc/3rd-party/plugins/slider/layerslider.php create mode 100644 wp-content/plugins/wp-rocket/inc/3rd-party/plugins/slider/meta-slider.php create mode 100644 wp-content/plugins/wp-rocket/inc/3rd-party/plugins/slider/soliloquy.php create mode 100644 wp-content/plugins/wp-rocket/inc/3rd-party/plugins/sumome.php create mode 100644 wp-content/plugins/wp-rocket/inc/3rd-party/plugins/thrive-leads.php create mode 100644 wp-content/plugins/wp-rocket/inc/3rd-party/plugins/varnish-http-purge.php create mode 100644 wp-content/plugins/wp-rocket/inc/3rd-party/plugins/wp-offload-s3-assets.php create mode 100644 wp-content/plugins/wp-rocket/inc/3rd-party/plugins/wp-offload-s3.php create mode 100644 wp-content/plugins/wp-rocket/inc/3rd-party/plugins/wp-print.php create mode 100644 wp-content/plugins/wp-rocket/inc/3rd-party/plugins/wp-rest-api.php create mode 100644 wp-content/plugins/wp-rocket/inc/3rd-party/themes/avada.php create mode 100644 wp-content/plugins/wp-rocket/inc/3rd-party/themes/studiopress.php create mode 100644 wp-content/plugins/wp-rocket/inc/3rd-party/themes/uncode.php create mode 100644 wp-content/plugins/wp-rocket/inc/API/bypass.php create mode 100644 wp-content/plugins/wp-rocket/inc/API/preload.php create mode 100644 wp-content/plugins/wp-rocket/inc/Addon/Busting/BustingFactory.php create mode 100644 wp-content/plugins/wp-rocket/inc/Addon/Busting/FileBustingTrait.php create mode 100644 wp-content/plugins/wp-rocket/inc/Addon/Cloudflare/APIClient.php create mode 100644 wp-content/plugins/wp-rocket/inc/Addon/Cloudflare/AuthenticationException.php create mode 100644 wp-content/plugins/wp-rocket/inc/Addon/Cloudflare/Cloudflare.php create mode 100644 wp-content/plugins/wp-rocket/inc/Addon/Cloudflare/Subscriber.php create mode 100644 wp-content/plugins/wp-rocket/inc/Addon/Cloudflare/UnauthorizedException.php create mode 100644 wp-content/plugins/wp-rocket/inc/Addon/Cloudflare/composer.json create mode 100644 wp-content/plugins/wp-rocket/inc/Addon/FacebookTracking/Subscriber.php create mode 100644 wp-content/plugins/wp-rocket/inc/Addon/GoogleTracking/GoogleAnalytics.php create mode 100644 wp-content/plugins/wp-rocket/inc/Addon/GoogleTracking/GoogleTagManager.php create mode 100644 wp-content/plugins/wp-rocket/inc/Addon/GoogleTracking/Subscriber.php create mode 100644 wp-content/plugins/wp-rocket/inc/Addon/ServiceProvider.php create mode 100644 wp-content/plugins/wp-rocket/inc/Addon/Varnish/ServiceProvider.php create mode 100644 wp-content/plugins/wp-rocket/inc/Addon/Varnish/Subscriber.php create mode 100644 wp-content/plugins/wp-rocket/inc/Addon/Varnish/Varnish.php create mode 100644 wp-content/plugins/wp-rocket/inc/Addon/Varnish/composer.json create mode 100644 wp-content/plugins/wp-rocket/inc/Dependencies/Minify/CSS.php create mode 100644 wp-content/plugins/wp-rocket/inc/Dependencies/Minify/Exception.php create mode 100644 wp-content/plugins/wp-rocket/inc/Dependencies/Minify/Exceptions/BasicException.php create mode 100644 wp-content/plugins/wp-rocket/inc/Dependencies/Minify/Exceptions/FileImportException.php create mode 100644 wp-content/plugins/wp-rocket/inc/Dependencies/Minify/Exceptions/IOException.php create mode 100644 wp-content/plugins/wp-rocket/inc/Dependencies/Minify/JS.php create mode 100644 wp-content/plugins/wp-rocket/inc/Dependencies/Minify/Minify.php create mode 100644 wp-content/plugins/wp-rocket/inc/Dependencies/Minify/data/js/keywords_after.txt create mode 100644 wp-content/plugins/wp-rocket/inc/Dependencies/Minify/data/js/keywords_before.txt create mode 100644 wp-content/plugins/wp-rocket/inc/Dependencies/Minify/data/js/keywords_reserved.txt create mode 100644 wp-content/plugins/wp-rocket/inc/Dependencies/Minify/data/js/operators.txt create mode 100644 wp-content/plugins/wp-rocket/inc/Dependencies/Minify/data/js/operators_after.txt create mode 100644 wp-content/plugins/wp-rocket/inc/Dependencies/Minify/data/js/operators_before.txt create mode 100644 wp-content/plugins/wp-rocket/inc/Dependencies/PathConverter/Converter.php create mode 100644 wp-content/plugins/wp-rocket/inc/Dependencies/PathConverter/ConverterInterface.php create mode 100644 wp-content/plugins/wp-rocket/inc/Dependencies/PathConverter/NoConverter.php create mode 100644 wp-content/plugins/wp-rocket/inc/Dependencies/RocketLazyload/Assets.php create mode 100644 wp-content/plugins/wp-rocket/inc/Dependencies/RocketLazyload/Iframe.php create mode 100644 wp-content/plugins/wp-rocket/inc/Dependencies/RocketLazyload/Image.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Activation/Activation.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Activation/ActivationInterface.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Activation/ServiceProvider.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Admin/Beacon/Beacon.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Admin/Beacon/ServiceProvider.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Admin/Deactivation/DeactivationIntent.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Admin/ServiceProvider.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Admin/Settings/Page.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Admin/Settings/Render.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Admin/Settings/ServiceProvider.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Admin/Settings/Settings.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Admin/Settings/Subscriber.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/CDN/CDN.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/APIClient.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/CDNOptionsManager.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/DataManagerSubscriber.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/NoticesSubscriber.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/RESTSubscriber.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/ServiceProvider.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/composer.json create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/views/cta-big.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/views/cta-small.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/views/dashboard-status.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/views/promote-notice.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/CDN/ServiceProvider.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/CDN/Subscriber.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Cache/AdminSubscriber.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Cache/AdvancedCache.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Cache/Purge.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Cache/PurgeActionsSubscriber.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Cache/ServiceProvider.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Cache/WPCache.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Capabilities/Manager.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Capabilities/ServiceProvider.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Capabilities/Subscriber.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Container/Argument/ArgumentResolverInterface.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Container/Argument/ArgumentResolverTrait.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Container/Argument/RawArgument.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Container/Argument/RawArgumentInterface.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Container/Container.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Container/ContainerAwareInterface.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Container/ContainerAwareTrait.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Container/ContainerInterface.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Container/Definition/AbstractDefinition.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Container/Definition/CallableDefinition.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Container/Definition/ClassDefinition.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Container/Definition/ClassDefinitionInterface.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Container/Definition/DefinitionFactory.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Container/Definition/DefinitionFactoryInterface.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Container/Definition/DefinitionInterface.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Container/Exception/NotFoundException.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Container/ImmutableContainerAwareInterface.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Container/ImmutableContainerAwareTrait.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Container/ImmutableContainerInterface.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Container/Inflector/Inflector.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Container/Inflector/InflectorAggregate.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Container/Inflector/InflectorAggregateInterface.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Container/ReflectionContainer.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Container/ServiceProvider/AbstractServiceProvider.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Container/ServiceProvider/AbstractSignatureServiceProvider.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Container/ServiceProvider/BootableServiceProviderInterface.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Container/ServiceProvider/ServiceProviderAggregate.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Container/ServiceProvider/ServiceProviderAggregateInterface.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Container/ServiceProvider/ServiceProviderInterface.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Container/ServiceProvider/SignatureServiceProviderInterface.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/CriticalPath/APIClient.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/CriticalPath/Admin/Admin.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/CriticalPath/Admin/Post.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/CriticalPath/Admin/Settings.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/CriticalPath/Admin/Subscriber.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/CriticalPath/CriticalCSS.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/CriticalPath/CriticalCSSGeneration.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/CriticalPath/CriticalCSSSubscriber.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/CriticalPath/DataManager.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/CriticalPath/ProcessorService.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/CriticalPath/RESTCSSSubscriber.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/CriticalPath/RESTWP.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/CriticalPath/RESTWPInterface.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/CriticalPath/RESTWPPost.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/CriticalPath/ServiceProvider.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/CriticalPath/TransientTrait.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Deactivation/Deactivation.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Deactivation/DeactivationInterface.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Deactivation/ServiceProvider.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/HealthCheck/CacheDirSizeCheck.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/HealthCheck/HealthCheck.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/HealthCheck/ServiceProvider.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Heartbeat/HeartbeatSubscriber.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Heartbeat/ServiceProvider.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/License/API/Pricing.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/License/API/PricingClient.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/License/API/User.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/License/API/UserClient.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/License/Renewal.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/License/ServiceProvider.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/License/Subscriber.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/License/Upgrade.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/License/views/promo-banner.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/License/views/renewal-expired-banner.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/License/views/renewal-soon-banner.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/License/views/upgrade-popin.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/License/views/upgrade-section.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Media/Embeds/EmbedsSubscriber.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Media/Emojis/EmojisSubscriber.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Media/LazyloadSubscriber.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Media/ServiceProvider.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Optimization/AbstractOptimization.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Optimization/AdminServiceProvider.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Optimization/AssetsLocalCache.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Optimization/CSSTrait.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Optimization/CacheDynamicResource.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Optimization/DelayJS/Admin/Settings.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Optimization/DelayJS/Admin/Subscriber.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Optimization/DelayJS/HTML.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Optimization/DelayJS/ServiceProvider.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Optimization/DelayJS/Subscriber.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Optimization/GoogleFonts/Admin/Settings.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Optimization/GoogleFonts/Admin/Subscriber.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Optimization/GoogleFonts/Combine.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Optimization/GoogleFonts/Subscriber.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Optimization/IEConditionalSubscriber.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Optimization/Minify/AbstractMinifySubscriber.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Optimization/Minify/CSS/AbstractCSSOptimization.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Optimization/Minify/CSS/AdminSubscriber.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Optimization/Minify/CSS/Combine.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Optimization/Minify/CSS/Minify.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Optimization/Minify/CSS/Subscriber.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Optimization/Minify/JS/AbstractJSOptimization.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Optimization/Minify/JS/Combine.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Optimization/Minify/JS/Minify.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Optimization/Minify/JS/Subscriber.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Optimization/Minify/ProcessorInterface.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Optimization/ServiceProvider.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Preload/AbstractPreload.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Preload/AbstractProcess.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Preload/Fonts.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Preload/FullProcess.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Preload/Homepage.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Preload/Links/AdminSubscriber.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Preload/Links/ServiceProvider.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Preload/Links/Subscriber.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Preload/PartialPreloadSubscriber.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Preload/PartialProcess.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Preload/PreloadSubscriber.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Preload/ServiceProvider.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Preload/Sitemap.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Preload/SitemapPreloadSubscriber.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Support/Data.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Support/Rest.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Support/ServiceProvider.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/Support/Subscriber.php create mode 100644 wp-content/plugins/wp-rocket/inc/Engine/WPRocketUninstall.php create mode 100644 wp-content/plugins/wp-rocket/inc/Plugin.php create mode 100644 wp-content/plugins/wp-rocket/inc/ThirdParty/Hostings/AbstractNoCacheHost.php create mode 100644 wp-content/plugins/wp-rocket/inc/ThirdParty/Hostings/Cloudways.php create mode 100644 wp-content/plugins/wp-rocket/inc/ThirdParty/Hostings/Dreampress.php create mode 100644 wp-content/plugins/wp-rocket/inc/ThirdParty/Hostings/HostResolver.php create mode 100644 wp-content/plugins/wp-rocket/inc/ThirdParty/Hostings/HostSubscriberFactory.php create mode 100644 wp-content/plugins/wp-rocket/inc/ThirdParty/Hostings/O2Switch.php create mode 100644 wp-content/plugins/wp-rocket/inc/ThirdParty/Hostings/Pressable.php create mode 100644 wp-content/plugins/wp-rocket/inc/ThirdParty/Hostings/Savvii.php create mode 100644 wp-content/plugins/wp-rocket/inc/ThirdParty/Hostings/ServiceProvider.php create mode 100644 wp-content/plugins/wp-rocket/inc/ThirdParty/Hostings/SpinUpWP.php create mode 100644 wp-content/plugins/wp-rocket/inc/ThirdParty/Hostings/WPEngine.php create mode 100644 wp-content/plugins/wp-rocket/inc/ThirdParty/Hostings/WordPressCom.php create mode 100644 wp-content/plugins/wp-rocket/inc/ThirdParty/NullSubscriber.php create mode 100644 wp-content/plugins/wp-rocket/inc/ThirdParty/Plugins/Ecommerce/WooCommerceSubscriber.php create mode 100644 wp-content/plugins/wp-rocket/inc/ThirdParty/Plugins/Optimization/AMP.php create mode 100644 wp-content/plugins/wp-rocket/inc/ThirdParty/Plugins/Optimization/Hummingbird.php create mode 100644 wp-content/plugins/wp-rocket/inc/ThirdParty/Plugins/PDFEmbedder.php create mode 100644 wp-content/plugins/wp-rocket/inc/ThirdParty/Plugins/PageBuilder/BeaverBuilder.php create mode 100644 wp-content/plugins/wp-rocket/inc/ThirdParty/Plugins/PageBuilder/Elementor.php create mode 100644 wp-content/plugins/wp-rocket/inc/ThirdParty/Plugins/SimpleCustomCss.php create mode 100644 wp-content/plugins/wp-rocket/inc/ThirdParty/Plugins/Smush.php create mode 100644 wp-content/plugins/wp-rocket/inc/ThirdParty/ReturnTypesTrait.php create mode 100644 wp-content/plugins/wp-rocket/inc/ThirdParty/ServiceProvider.php create mode 100644 wp-content/plugins/wp-rocket/inc/ThirdParty/SubscriberFactoryInterface.php create mode 100644 wp-content/plugins/wp-rocket/inc/ThirdParty/Themes/Bridge.php create mode 100644 wp-content/plugins/wp-rocket/inc/ThirdParty/Themes/Divi.php create mode 100644 wp-content/plugins/wp-rocket/inc/admin/admin.php create mode 100644 wp-content/plugins/wp-rocket/inc/admin/options.php create mode 100644 wp-content/plugins/wp-rocket/inc/admin/ui/enqueue.php create mode 100644 wp-content/plugins/wp-rocket/inc/admin/ui/meta-boxes.php create mode 100644 wp-content/plugins/wp-rocket/inc/admin/ui/notices.php create mode 100644 wp-content/plugins/wp-rocket/inc/admin/upgrader.php create mode 100644 wp-content/plugins/wp-rocket/inc/classes/Buffer/class-abstract-buffer.php create mode 100644 wp-content/plugins/wp-rocket/inc/classes/Buffer/class-cache.php create mode 100644 wp-content/plugins/wp-rocket/inc/classes/Buffer/class-config.php create mode 100644 wp-content/plugins/wp-rocket/inc/classes/Buffer/class-optimization.php create mode 100644 wp-content/plugins/wp-rocket/inc/classes/Buffer/class-tests.php create mode 100644 wp-content/plugins/wp-rocket/inc/classes/Cache/class-expired-cache-purge.php create mode 100644 wp-content/plugins/wp-rocket/inc/classes/ServiceProvider/class-common-subscribers.php create mode 100644 wp-content/plugins/wp-rocket/inc/classes/ServiceProvider/class-database.php create mode 100644 wp-content/plugins/wp-rocket/inc/classes/ServiceProvider/class-options.php create mode 100644 wp-content/plugins/wp-rocket/inc/classes/ServiceProvider/class-updater-subscribers.php create mode 100644 wp-content/plugins/wp-rocket/inc/classes/admin/Database/class-optimization-process.php create mode 100644 wp-content/plugins/wp-rocket/inc/classes/admin/Database/class-optimization.php create mode 100644 wp-content/plugins/wp-rocket/inc/classes/admin/class-abstract-options.php create mode 100644 wp-content/plugins/wp-rocket/inc/classes/admin/class-logs.php create mode 100644 wp-content/plugins/wp-rocket/inc/classes/admin/class-options-data.php create mode 100644 wp-content/plugins/wp-rocket/inc/classes/admin/class-options.php create mode 100644 wp-content/plugins/wp-rocket/inc/classes/admin/deactivation/class-render.php create mode 100644 wp-content/plugins/wp-rocket/inc/classes/busting/class-abstract-busting.php create mode 100644 wp-content/plugins/wp-rocket/inc/classes/busting/class-facebook-pickles.php create mode 100644 wp-content/plugins/wp-rocket/inc/classes/busting/class-facebook-sdk.php create mode 100644 wp-content/plugins/wp-rocket/inc/classes/class-abstract-render.php create mode 100644 wp-content/plugins/wp-rocket/inc/classes/class-wp-rocket-requirements-check.php create mode 100644 wp-content/plugins/wp-rocket/inc/classes/dependencies/.gitkeep create mode 100644 wp-content/plugins/wp-rocket/inc/classes/dependencies/mobiledetect/mobiledetectlib/Mobile_Detect.php create mode 100644 wp-content/plugins/wp-rocket/inc/classes/dependencies/wp-media/background-processing/composer.json create mode 100644 wp-content/plugins/wp-rocket/inc/classes/dependencies/wp-media/background-processing/wp-async-request.php create mode 100644 wp-content/plugins/wp-rocket/inc/classes/dependencies/wp-media/background-processing/wp-background-process.php create mode 100644 wp-content/plugins/wp-rocket/inc/classes/event-management/class-event-manager.php create mode 100644 wp-content/plugins/wp-rocket/inc/classes/event-management/event-manager-aware-subscriber-interface.php create mode 100644 wp-content/plugins/wp-rocket/inc/classes/event-management/subscriber-interface.php create mode 100644 wp-content/plugins/wp-rocket/inc/classes/interfaces/class-render-interface.php create mode 100644 wp-content/plugins/wp-rocket/inc/classes/logger/class-html-formatter.php create mode 100644 wp-content/plugins/wp-rocket/inc/classes/logger/class-logger.php create mode 100644 wp-content/plugins/wp-rocket/inc/classes/logger/class-stream-handler.php create mode 100644 wp-content/plugins/wp-rocket/inc/classes/subscriber/Cache/class-expired-cache-purge-subscriber.php create mode 100644 wp-content/plugins/wp-rocket/inc/classes/subscriber/Media/class-webp-subscriber.php create mode 100644 wp-content/plugins/wp-rocket/inc/classes/subscriber/Optimization/class-buffer-subscriber.php create mode 100644 wp-content/plugins/wp-rocket/inc/classes/subscriber/Optimization/class-dequeue-jquery-migrate-subscriber.php create mode 100644 wp-content/plugins/wp-rocket/inc/classes/subscriber/Plugin/class-information-subscriber.php create mode 100644 wp-content/plugins/wp-rocket/inc/classes/subscriber/Plugin/class-updater-api-common-subscriber.php create mode 100644 wp-content/plugins/wp-rocket/inc/classes/subscriber/Plugin/class-updater-subscriber.php create mode 100644 wp-content/plugins/wp-rocket/inc/classes/subscriber/Tools/class-detect-missing-tags-subscriber.php create mode 100644 wp-content/plugins/wp-rocket/inc/classes/subscriber/admin/Database/class-optimization-subscriber.php create mode 100644 wp-content/plugins/wp-rocket/inc/classes/subscriber/third-party/Hostings/class-litespeed-subscriber.php create mode 100644 wp-content/plugins/wp-rocket/inc/classes/subscriber/third-party/plugins/Images/Webp/class-ewww-subscriber.php create mode 100644 wp-content/plugins/wp-rocket/inc/classes/subscriber/third-party/plugins/Images/Webp/class-imagify-subscriber.php create mode 100644 wp-content/plugins/wp-rocket/inc/classes/subscriber/third-party/plugins/Images/Webp/class-optimus-subscriber.php create mode 100644 wp-content/plugins/wp-rocket/inc/classes/subscriber/third-party/plugins/Images/Webp/class-shortpixel-subscriber.php create mode 100644 wp-content/plugins/wp-rocket/inc/classes/subscriber/third-party/plugins/Images/Webp/trait-webp-common.php create mode 100644 wp-content/plugins/wp-rocket/inc/classes/subscriber/third-party/plugins/Images/Webp/webp-interface.php create mode 100644 wp-content/plugins/wp-rocket/inc/classes/subscriber/third-party/plugins/class-mobile-subscriber.php create mode 100644 wp-content/plugins/wp-rocket/inc/classes/subscriber/third-party/plugins/class-ngg-subscriber.php create mode 100644 wp-content/plugins/wp-rocket/inc/classes/subscriber/third-party/plugins/class-syntaxhighlighter-subscriber.php create mode 100644 wp-content/plugins/wp-rocket/inc/classes/subscriber/third-party/plugins/ecommerce/class-bigcommerce-subscriber.php create mode 100644 wp-content/plugins/wp-rocket/inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php create mode 100644 wp-content/plugins/wp-rocket/inc/classes/traits/trait-config-updater.php create mode 100644 wp-content/plugins/wp-rocket/inc/classes/traits/trait-memoize.php create mode 100644 wp-content/plugins/wp-rocket/inc/classes/traits/trait-updater-api-tools.php create mode 100644 wp-content/plugins/wp-rocket/inc/common/admin-bar.php create mode 100644 wp-content/plugins/wp-rocket/inc/common/cloudflare-flexible-ssl.php create mode 100644 wp-content/plugins/wp-rocket/inc/common/purge.php create mode 100644 wp-content/plugins/wp-rocket/inc/compat.php create mode 100644 wp-content/plugins/wp-rocket/inc/constants.php create mode 100644 wp-content/plugins/wp-rocket/inc/deprecated/3.2.php create mode 100644 wp-content/plugins/wp-rocket/inc/deprecated/3.3.php create mode 100644 wp-content/plugins/wp-rocket/inc/deprecated/3.4.php create mode 100644 wp-content/plugins/wp-rocket/inc/deprecated/3.5.php create mode 100644 wp-content/plugins/wp-rocket/inc/deprecated/3.6.php create mode 100644 wp-content/plugins/wp-rocket/inc/deprecated/3.7.php create mode 100644 wp-content/plugins/wp-rocket/inc/deprecated/DeprecatedClassTrait.php create mode 100644 wp-content/plugins/wp-rocket/inc/deprecated/Engine/Optimization/QueryString/Remove.php create mode 100644 wp-content/plugins/wp-rocket/inc/deprecated/Engine/Optimization/QueryString/RemoveSubscriber.php create mode 100644 wp-content/plugins/wp-rocket/inc/deprecated/deprecated.php create mode 100644 wp-content/plugins/wp-rocket/inc/deprecated/subscriber/admin/Optimization/class-minify-html-subscriber.php create mode 100644 wp-content/plugins/wp-rocket/inc/deprecated/subscriber/admin/Settings/class-beacon-subscriber.php create mode 100644 wp-content/plugins/wp-rocket/inc/deprecated/vendors/classes/class-minify-html.php create mode 100644 wp-content/plugins/wp-rocket/inc/domain-mapping.php create mode 100644 wp-content/plugins/wp-rocket/inc/front/cookie.php create mode 100644 wp-content/plugins/wp-rocket/inc/front/deferred-js.php create mode 100644 wp-content/plugins/wp-rocket/inc/front/dns-prefetch.php create mode 100644 wp-content/plugins/wp-rocket/inc/front/images.php create mode 100644 wp-content/plugins/wp-rocket/inc/front/process.php create mode 100644 wp-content/plugins/wp-rocket/inc/front/protocol.php create mode 100644 wp-content/plugins/wp-rocket/inc/functions/admin.php create mode 100644 wp-content/plugins/wp-rocket/inc/functions/api.php create mode 100644 wp-content/plugins/wp-rocket/inc/functions/files.php create mode 100644 wp-content/plugins/wp-rocket/inc/functions/formatting.php create mode 100644 wp-content/plugins/wp-rocket/inc/functions/htaccess.php create mode 100644 wp-content/plugins/wp-rocket/inc/functions/i18n.php create mode 100644 wp-content/plugins/wp-rocket/inc/functions/options.php create mode 100644 wp-content/plugins/wp-rocket/inc/functions/posts.php create mode 100644 wp-content/plugins/wp-rocket/inc/main.php create mode 100644 wp-content/plugins/wp-rocket/inc/vendors/classes/class-imagify-partner.php create mode 100644 wp-content/plugins/wp-rocket/inc/vendors/classes/class-minify-css-urirewriter.php create mode 100644 wp-content/plugins/wp-rocket/inc/vendors/classes/class-rocket-mobile-detect.php create mode 100644 wp-content/plugins/wp-rocket/inc/vendors/ip_in_range.php create mode 100644 wp-content/plugins/wp-rocket/languages/rocket-ar.mo create mode 100644 wp-content/plugins/wp-rocket/languages/rocket-ar.po create mode 100644 wp-content/plugins/wp-rocket/languages/rocket-bg_BG.mo create mode 100644 wp-content/plugins/wp-rocket/languages/rocket-bg_BG.po create mode 100644 wp-content/plugins/wp-rocket/languages/rocket-cs_CZ.mo create mode 100644 wp-content/plugins/wp-rocket/languages/rocket-cs_CZ.po create mode 100644 wp-content/plugins/wp-rocket/languages/rocket-de_DE.mo create mode 100644 wp-content/plugins/wp-rocket/languages/rocket-de_DE.po create mode 100644 wp-content/plugins/wp-rocket/languages/rocket-el.mo create mode 100644 wp-content/plugins/wp-rocket/languages/rocket-el.po create mode 100644 wp-content/plugins/wp-rocket/languages/rocket-es_ES.mo create mode 100644 wp-content/plugins/wp-rocket/languages/rocket-es_ES.po create mode 100644 wp-content/plugins/wp-rocket/languages/rocket-fi.mo create mode 100644 wp-content/plugins/wp-rocket/languages/rocket-fi.po create mode 100644 wp-content/plugins/wp-rocket/languages/rocket-fr_CA.mo create mode 100644 wp-content/plugins/wp-rocket/languages/rocket-fr_CA.po create mode 100644 wp-content/plugins/wp-rocket/languages/rocket-fr_FR.mo create mode 100644 wp-content/plugins/wp-rocket/languages/rocket-fr_FR.po create mode 100644 wp-content/plugins/wp-rocket/languages/rocket-gl_ES.mo create mode 100644 wp-content/plugins/wp-rocket/languages/rocket-gl_ES.po create mode 100644 wp-content/plugins/wp-rocket/languages/rocket-he_IL.mo create mode 100644 wp-content/plugins/wp-rocket/languages/rocket-he_IL.po create mode 100644 wp-content/plugins/wp-rocket/languages/rocket-hr.mo create mode 100644 wp-content/plugins/wp-rocket/languages/rocket-hr.po create mode 100644 wp-content/plugins/wp-rocket/languages/rocket-hu_HU.mo create mode 100644 wp-content/plugins/wp-rocket/languages/rocket-hu_HU.po create mode 100644 wp-content/plugins/wp-rocket/languages/rocket-it_IT.mo create mode 100644 wp-content/plugins/wp-rocket/languages/rocket-it_IT.po create mode 100644 wp-content/plugins/wp-rocket/languages/rocket-ms.mo create mode 100644 wp-content/plugins/wp-rocket/languages/rocket-ms.po create mode 100644 wp-content/plugins/wp-rocket/languages/rocket-nb_NO.mo create mode 100644 wp-content/plugins/wp-rocket/languages/rocket-nb_NO.po create mode 100644 wp-content/plugins/wp-rocket/languages/rocket-nl_NL.mo create mode 100644 wp-content/plugins/wp-rocket/languages/rocket-nl_NL.po create mode 100644 wp-content/plugins/wp-rocket/languages/rocket-pl_PL.mo create mode 100644 wp-content/plugins/wp-rocket/languages/rocket-pl_PL.po create mode 100644 wp-content/plugins/wp-rocket/languages/rocket-pt_BR.mo create mode 100644 wp-content/plugins/wp-rocket/languages/rocket-pt_BR.po create mode 100644 wp-content/plugins/wp-rocket/languages/rocket-ro_RO.mo create mode 100644 wp-content/plugins/wp-rocket/languages/rocket-ro_RO.po create mode 100644 wp-content/plugins/wp-rocket/languages/rocket-ru.mo create mode 100644 wp-content/plugins/wp-rocket/languages/rocket-ru.po create mode 100644 wp-content/plugins/wp-rocket/languages/rocket-ru_RU.mo create mode 100644 wp-content/plugins/wp-rocket/languages/rocket-ru_RU.po create mode 100644 wp-content/plugins/wp-rocket/languages/rocket-sr.mo create mode 100644 wp-content/plugins/wp-rocket/languages/rocket-sr.po create mode 100644 wp-content/plugins/wp-rocket/languages/rocket-sv_SE.mo create mode 100644 wp-content/plugins/wp-rocket/languages/rocket-sv_SE.po create mode 100644 wp-content/plugins/wp-rocket/languages/rocket-tr_TR.mo create mode 100644 wp-content/plugins/wp-rocket/languages/rocket-tr_TR.po create mode 100644 wp-content/plugins/wp-rocket/languages/rocket-uk.mo create mode 100644 wp-content/plugins/wp-rocket/languages/rocket-uk.po create mode 100644 wp-content/plugins/wp-rocket/languages/rocket-uk_UA.mo create mode 100644 wp-content/plugins/wp-rocket/languages/rocket-uk_UA.po create mode 100644 wp-content/plugins/wp-rocket/languages/rocket-zh_CN.mo create mode 100644 wp-content/plugins/wp-rocket/languages/rocket-zh_CN.po create mode 100644 wp-content/plugins/wp-rocket/languages/rocket-zh_TW.mo create mode 100644 wp-content/plugins/wp-rocket/languages/rocket-zh_TW.po create mode 100644 wp-content/plugins/wp-rocket/languages/rocket.pot create mode 100644 wp-content/plugins/wp-rocket/uninstall.php create mode 100644 wp-content/plugins/wp-rocket/vendor/autoload.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/ClassLoader.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/LICENSE create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/autoload_classmap.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/autoload_namespaces.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/autoload_psr4.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/autoload_real.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/autoload_static.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installed.json create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/LICENSE create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/composer.json create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/AglInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/AimeosInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/AnnotateCmsInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/AsgardInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/AttogramInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/BaseInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/BitrixInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/BonefishInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/CakePHPInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/ChefInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/CiviCrmInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/ClanCatsFrameworkInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/CockpitInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/CodeIgniterInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/Concrete5Installer.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/CraftInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/CroogoInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/DecibelInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/DframeInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/DokuWikiInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/DolibarrInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/DrupalInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/ElggInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/EliasisInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/ExpressionEngineInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/EzPlatformInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/FuelInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/FuelphpInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/GravInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/HuradInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/ImageCMSInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/Installer.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/ItopInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/JoomlaInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/KanboardInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/KirbyInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/KnownInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/KodiCMSInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/KohanaInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/LanManagementSystemInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/LaravelInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/LavaLiteInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/LithiumInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/MODULEWorkInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/MODXEvoInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/MagentoInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/MajimaInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/MakoInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/MauticInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/MayaInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/MediaWikiInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/MicroweberInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/ModxInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/MoodleInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/OctoberInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/OntoWikiInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/OsclassInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/OxidInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/PPIInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/PhiftyInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/PhpBBInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/PimcoreInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/PiwikInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/PlentymarketsInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/Plugin.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/PortoInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/PrestashopInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/PuppetInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/PxcmsInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/RadPHPInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/ReIndexInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/Redaxo5Installer.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/RedaxoInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/RoundcubeInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/SMFInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/ShopwareInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/SilverStripeInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/SiteDirectInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/SyDESInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/Symfony1Installer.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/TYPO3CmsInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/TYPO3FlowInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/TaoInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/TheliaInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/TuskInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/UserFrostingInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/VanillaInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/VgmcpInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/WHMCSInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/WolfCMSInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/WordPressInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/YawikInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/ZendInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/ZikulaInstaller.php create mode 100644 wp-content/plugins/wp-rocket/vendor/composer/installers/src/bootstrap.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/CHANGELOG.md create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/LICENSE create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/README.md create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/composer.json create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/ErrorHandler.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Formatter/ChromePHPFormatter.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Formatter/ElasticaFormatter.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Formatter/FlowdockFormatter.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Formatter/FluentdFormatter.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Formatter/FormatterInterface.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Formatter/GelfMessageFormatter.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Formatter/HtmlFormatter.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Formatter/JsonFormatter.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Formatter/LineFormatter.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Formatter/LogglyFormatter.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Formatter/LogstashFormatter.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Formatter/MongoDBFormatter.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Formatter/NormalizerFormatter.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Formatter/ScalarFormatter.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Formatter/WildfireFormatter.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/AbstractHandler.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/AbstractSyslogHandler.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/AmqpHandler.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/BrowserConsoleHandler.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/BufferHandler.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/ChromePHPHandler.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/CouchDBHandler.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/CubeHandler.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/Curl/Util.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/DeduplicationHandler.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/DoctrineCouchDBHandler.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/DynamoDbHandler.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/ElasticSearchHandler.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/ErrorLogHandler.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/FilterHandler.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ActivationStrategyInterface.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ChannelLevelActivationStrategy.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ErrorLevelActivationStrategy.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossedHandler.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/FirePHPHandler.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/FleepHookHandler.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/FlowdockHandler.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/FormattableHandlerInterface.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/FormattableHandlerTrait.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/GelfHandler.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/GroupHandler.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/HandlerInterface.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/HandlerWrapper.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/HipChatHandler.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/IFTTTHandler.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/InsightOpsHandler.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/LogEntriesHandler.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/LogglyHandler.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/MailHandler.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/MandrillHandler.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/MissingExtensionException.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/MongoDBHandler.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/NativeMailerHandler.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/NewRelicHandler.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/NullHandler.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/PHPConsoleHandler.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/ProcessableHandlerInterface.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/ProcessableHandlerTrait.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/PsrHandler.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/PushoverHandler.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/RavenHandler.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/RedisHandler.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/RollbarHandler.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/RotatingFileHandler.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/SamplingHandler.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/Slack/SlackRecord.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/SlackHandler.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/SlackWebhookHandler.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/SlackbotHandler.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/SocketHandler.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/SwiftMailerHandler.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/SyslogHandler.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/SyslogUdp/UdpSocket.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/SyslogUdpHandler.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/TestHandler.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/WhatFailureGroupHandler.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/ZendMonitorHandler.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Logger.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Processor/GitProcessor.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Processor/IntrospectionProcessor.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Processor/MemoryPeakUsageProcessor.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Processor/MemoryProcessor.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Processor/MemoryUsageProcessor.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Processor/MercurialProcessor.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Processor/ProcessIdProcessor.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Processor/ProcessorInterface.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Processor/PsrLogMessageProcessor.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Processor/TagProcessor.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Processor/UidProcessor.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Processor/WebProcessor.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Registry.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/ResettableInterface.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/SignalHandler.php create mode 100644 wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Utils.php create mode 100644 wp-content/plugins/wp-rocket/vendor/psr/container/.gitignore create mode 100644 wp-content/plugins/wp-rocket/vendor/psr/container/LICENSE create mode 100644 wp-content/plugins/wp-rocket/vendor/psr/container/README.md create mode 100644 wp-content/plugins/wp-rocket/vendor/psr/container/composer.json create mode 100644 wp-content/plugins/wp-rocket/vendor/psr/container/src/ContainerExceptionInterface.php create mode 100644 wp-content/plugins/wp-rocket/vendor/psr/container/src/ContainerInterface.php create mode 100644 wp-content/plugins/wp-rocket/vendor/psr/container/src/NotFoundExceptionInterface.php create mode 100644 wp-content/plugins/wp-rocket/vendor/psr/log/LICENSE create mode 100644 wp-content/plugins/wp-rocket/vendor/psr/log/Psr/Log/AbstractLogger.php create mode 100644 wp-content/plugins/wp-rocket/vendor/psr/log/Psr/Log/InvalidArgumentException.php create mode 100644 wp-content/plugins/wp-rocket/vendor/psr/log/Psr/Log/LogLevel.php create mode 100644 wp-content/plugins/wp-rocket/vendor/psr/log/Psr/Log/LoggerAwareInterface.php create mode 100644 wp-content/plugins/wp-rocket/vendor/psr/log/Psr/Log/LoggerAwareTrait.php create mode 100644 wp-content/plugins/wp-rocket/vendor/psr/log/Psr/Log/LoggerInterface.php create mode 100644 wp-content/plugins/wp-rocket/vendor/psr/log/Psr/Log/LoggerTrait.php create mode 100644 wp-content/plugins/wp-rocket/vendor/psr/log/Psr/Log/NullLogger.php create mode 100644 wp-content/plugins/wp-rocket/vendor/psr/log/Psr/Log/Test/DummyTest.php create mode 100644 wp-content/plugins/wp-rocket/vendor/psr/log/Psr/Log/Test/LoggerInterfaceTest.php create mode 100644 wp-content/plugins/wp-rocket/vendor/psr/log/Psr/Log/Test/TestLogger.php create mode 100644 wp-content/plugins/wp-rocket/vendor/psr/log/README.md create mode 100644 wp-content/plugins/wp-rocket/vendor/psr/log/composer.json create mode 100644 wp-content/plugins/wp-rocket/views/cache/advanced-cache.php create mode 100644 wp-content/plugins/wp-rocket/views/cpcss/activate-cpcss-mobile.php create mode 100644 wp-content/plugins/wp-rocket/views/cpcss/metabox/container.php create mode 100644 wp-content/plugins/wp-rocket/views/cpcss/metabox/generate.php create mode 100644 wp-content/plugins/wp-rocket/views/deactivation-intent/form.php create mode 100644 wp-content/plugins/wp-rocket/views/settings/beacon.php create mode 100644 wp-content/plugins/wp-rocket/views/settings/buttons/button.php create mode 100644 wp-content/plugins/wp-rocket/views/settings/buttons/link.php create mode 100644 wp-content/plugins/wp-rocket/views/settings/enable-google-fonts.php create mode 100644 wp-content/plugins/wp-rocket/views/settings/fields/cache-lifespan.php create mode 100644 wp-content/plugins/wp-rocket/views/settings/fields/checkbox.php create mode 100644 wp-content/plugins/wp-rocket/views/settings/fields/cnames.php create mode 100644 wp-content/plugins/wp-rocket/views/settings/fields/hidden.php create mode 100644 wp-content/plugins/wp-rocket/views/settings/fields/import-form.php create mode 100644 wp-content/plugins/wp-rocket/views/settings/fields/number.php create mode 100644 wp-content/plugins/wp-rocket/views/settings/fields/one-click-addon.php create mode 100644 wp-content/plugins/wp-rocket/views/settings/fields/rocket-addon.php create mode 100644 wp-content/plugins/wp-rocket/views/settings/fields/rocket-cdn.php create mode 100644 wp-content/plugins/wp-rocket/views/settings/fields/select.php create mode 100644 wp-content/plugins/wp-rocket/views/settings/fields/sliding-checkbox.php create mode 100644 wp-content/plugins/wp-rocket/views/settings/fields/text.php create mode 100644 wp-content/plugins/wp-rocket/views/settings/fields/textarea.php create mode 100644 wp-content/plugins/wp-rocket/views/settings/navigation.php create mode 100644 wp-content/plugins/wp-rocket/views/settings/page-sections/addons.php create mode 100644 wp-content/plugins/wp-rocket/views/settings/page-sections/advanced-cache.php create mode 100644 wp-content/plugins/wp-rocket/views/settings/page-sections/cache.php create mode 100644 wp-content/plugins/wp-rocket/views/settings/page-sections/cloudflare.php create mode 100644 wp-content/plugins/wp-rocket/views/settings/page-sections/dashboard.php create mode 100644 wp-content/plugins/wp-rocket/views/settings/page-sections/database.php create mode 100644 wp-content/plugins/wp-rocket/views/settings/page-sections/file-optimization.php create mode 100644 wp-content/plugins/wp-rocket/views/settings/page-sections/heartbeat.php create mode 100644 wp-content/plugins/wp-rocket/views/settings/page-sections/imagify.php create mode 100644 wp-content/plugins/wp-rocket/views/settings/page-sections/license.php create mode 100644 wp-content/plugins/wp-rocket/views/settings/page-sections/media.php create mode 100644 wp-content/plugins/wp-rocket/views/settings/page-sections/page-cdn.php create mode 100644 wp-content/plugins/wp-rocket/views/settings/page-sections/preload.php create mode 100644 wp-content/plugins/wp-rocket/views/settings/page-sections/sucuri.php create mode 100644 wp-content/plugins/wp-rocket/views/settings/page-sections/tools.php create mode 100644 wp-content/plugins/wp-rocket/views/settings/page-sections/tutorials.php create mode 100644 wp-content/plugins/wp-rocket/views/settings/page.php create mode 100644 wp-content/plugins/wp-rocket/views/settings/partials/documentation.php create mode 100644 wp-content/plugins/wp-rocket/views/settings/partials/getting-started.php create mode 100644 wp-content/plugins/wp-rocket/views/settings/partials/sidebar.php create mode 100644 wp-content/plugins/wp-rocket/views/settings/sections/addons-container.php create mode 100644 wp-content/plugins/wp-rocket/views/settings/sections/fields-container.php create mode 100644 wp-content/plugins/wp-rocket/views/settings/sections/nocontainer.php create mode 100644 wp-content/plugins/wp-rocket/wp-rocket.php create mode 100644 wp-content/wp-rocket-config/index.html create mode 100644 wp-content/wp-rocket-config/localhost.php diff --git a/.htaccess b/.htaccess index 4172da5..dbdcb76 100644 --- a/.htaccess +++ b/.htaccess @@ -1,3 +1,110 @@ +# BEGIN WP Rocket v3.7.5 +# Use UTF-8 encoding for anything served text/plain or text/html +AddDefaultCharset UTF-8 +# Force UTF-8 for a number of file formats + +AddCharset UTF-8 .atom .css .js .json .rss .vtt .xml + +# FileETag None is not enough for every server. + +Header unset ETag + +# Since we’re sending far-future expires, we don’t need ETags for static content. +# developer.yahoo.com/performance/rules.html#etags +FileETag None + + + +Header set X-Powered-By "WP Rocket/3.7.5" +Header unset Pragma +Header append Cache-Control "public" +Header unset Last-Modified + + + + +Header unset Pragma +Header append Cache-Control "public" + + + +# Expires headers (for better cache control) + + ExpiresActive on + ExpiresDefault "access plus 1 month" + # cache.appcache needs re-requests in FF 3.6 (thanks Remy ~Introducing HTML5) + ExpiresByType text/cache-manifest "access plus 0 seconds" + # Your document html + ExpiresByType text/html "access plus 0 seconds" + # Data + ExpiresByType text/xml "access plus 0 seconds" + ExpiresByType application/xml "access plus 0 seconds" + ExpiresByType application/json "access plus 0 seconds" + # Feed + ExpiresByType application/rss+xml "access plus 1 hour" + ExpiresByType application/atom+xml "access plus 1 hour" + # Favicon (cannot be renamed) + ExpiresByType image/x-icon "access plus 1 week" + # Media: images, video, audio + ExpiresByType image/gif "access plus 4 months" + ExpiresByType image/png "access plus 4 months" + ExpiresByType image/jpeg "access plus 4 months" + ExpiresByType image/webp "access plus 4 months" + ExpiresByType video/ogg "access plus 4 months" + ExpiresByType audio/ogg "access plus 4 months" + ExpiresByType video/mp4 "access plus 4 months" + ExpiresByType video/webm "access plus 4 months" + # HTC files (css3pie) + ExpiresByType text/x-component "access plus 1 month" + # Webfonts + ExpiresByType font/ttf "access plus 4 months" + ExpiresByType font/otf "access plus 4 months" + ExpiresByType font/woff "access plus 4 months" + ExpiresByType font/woff2 "access plus 4 months" + ExpiresByType image/svg+xml "access plus 1 month" + ExpiresByType application/vnd.ms-fontobject "access plus 1 month" + # CSS and JavaScript + ExpiresByType text/css "access plus 1 year" + ExpiresByType application/javascript "access plus 1 year" + +# Gzip compression + +# Active compression +SetOutputFilter DEFLATE +# Force deflate for mangled headers + + +SetEnvIfNoCase ^(Accept-EncodXng|X-cept-Encoding|X{15}|~{15}|-{15})$ ^((gzip|deflate)\s*,?\s*)+|[X~-]{4,13}$ HAVE_Accept-Encoding +RequestHeader append Accept-Encoding "gzip,deflate" env=HAVE_Accept-Encoding +# Don’t compress images and other uncompressible content +SetEnvIfNoCase Request_URI \ +\.(?:gif|jpe?g|png|rar|zip|exe|flv|mov|wma|mp3|avi|swf|mp?g|mp4|webm|webp|pdf)$ no-gzip dont-vary + + +# Compress all output labeled with one of the following MIME-types + +AddOutputFilterByType DEFLATE application/atom+xml \ + application/javascript \ + application/json \ + application/rss+xml \ + application/vnd.ms-fontobject \ + application/x-font-ttf \ + application/xhtml+xml \ + application/xml \ + font/opentype \ + image/svg+xml \ + image/x-icon \ + text/css \ + text/html \ + text/plain \ + text/x-component \ + text/xml + + +Header append Vary: Accept-Encoding + + +# END WP Rocket # BEGIN WordPress # Các nội dung nằm giữa "BEGIN WordPress" và "END WordPress" được tạo ra tự động, và chỉ nên được thay đổi thông qua các filter của WordPress. Mọi thay đổi tới thành phần này có thể sẽ bị mất và ghi đè. @@ -9,5 +116,4 @@ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] - # END WordPress \ No newline at end of file diff --git a/wp-config.php b/wp-config.php index 424cc4e..37f1079 100644 --- a/wp-config.php +++ b/wp-config.php @@ -1,5 +1,5 @@ $rocket_path . 'inc/classes/Buffer/class-abstract-buffer.php', + 'WP_Rocket\\Buffer\\Cache' => $rocket_path . 'inc/classes/Buffer/class-cache.php', + 'WP_Rocket\\Buffer\\Tests' => $rocket_path . 'inc/classes/Buffer/class-tests.php', + 'WP_Rocket\\Buffer\\Config' => $rocket_path . 'inc/classes/Buffer/class-config.php', + 'WP_Rocket\\Logger\\HTML_Formatter' => $rocket_path . 'inc/classes/logger/class-html-formatter.php', + 'WP_Rocket\\Logger\\Logger' => $rocket_path . 'inc/classes/logger/class-logger.php', + 'WP_Rocket\\Logger\\Stream_Handler' => $rocket_path . 'inc/classes/logger/class-stream-handler.php', + 'WP_Rocket\\Traits\\Memoize' => $rocket_path . 'inc/classes/traits/trait-memoize.php', + ]; + + if ( isset( $rocket_classes[ $class ] ) ) { + $file = $rocket_classes[ $class ]; + } elseif ( strpos( $class, 'Monolog\\' ) === 0 ) { + $file = $rocket_path . 'vendor/monolog/monolog/src/' . str_replace( '\\', '/', $class ) . '.php'; + } elseif ( strpos( $class, 'Psr\\Log\\' ) === 0 ) { + $file = $rocket_path . 'vendor/psr/log/' . str_replace( '\\', '/', $class ) . '.php'; + } else { + return; + } + + if ( file_exists( $file ) ) { + require $file; + } + } +); + +if ( ! class_exists( '\WP_Rocket\Buffer\Cache' ) ) { + if ( ! defined( 'DONOTROCKETOPTIMIZE' ) ) { + define( 'DONOTROCKETOPTIMIZE', true ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedConstantFound + } + return; +} + +$rocket_config_class = new Config( + [ + 'config_dir_path' => $rocket_config_path, + ] +); + +( new Cache( + new Tests( + $rocket_config_class + ), + $rocket_config_class, + [ + 'cache_dir_path' => $rocket_cache_path, + ] +) )->maybe_init_process(); diff --git a/wp-content/cache/busting/index.html b/wp-content/cache/busting/index.html new file mode 100644 index 0000000..e69de29 diff --git a/wp-content/cache/critical-css/index.html b/wp-content/cache/critical-css/index.html new file mode 100644 index 0000000..e69de29 diff --git a/wp-content/cache/min/1/129b71b95f0aef75c3b9a87a275e7213.js b/wp-content/cache/min/1/129b71b95f0aef75c3b9a87a275e7213.js new file mode 100644 index 0000000..4cc12f5 --- /dev/null +++ b/wp-content/cache/min/1/129b71b95f0aef75c3b9a87a275e7213.js @@ -0,0 +1,8 @@ +(function(html){html.className=html.className.replace(/\bno-js\b/,'js')})(document.documentElement);window._wpemojiSettings={"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/13.1.0\/72x72\/","ext":".png","svgUrl":"https:\/\/s.w.org\/images\/core\/emoji\/13.1.0\/svg\/","svgExt":".svg","source":{"concatemoji":"http:\/\/localhost\/wp-includes\/js\/wp-emoji-release.min.js?ver=5.9"}}; +/*! This file is auto-generated */ +!function(e,a,t){var n,r,o,i=a.createElement("canvas"),p=i.getContext&&i.getContext("2d");function s(e,t){var a=String.fromCharCode;p.clearRect(0,0,i.width,i.height),p.fillText(a.apply(this,e),0,0);e=i.toDataURL();return p.clearRect(0,0,i.width,i.height),p.fillText(a.apply(this,t),0,0),e===i.toDataURL()}function c(e){var t=a.createElement("script");t.src=e,t.defer=t.type="text/javascript",a.getElementsByTagName("head")[0].appendChild(t)}for(o=Array("flag","emoji"),t.supports={everything:!0,everythingExceptFlag:!0},r=0;r+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0");t!==e&&T(e)!==T(t)&&u("HTML tags must be properly nested and closed: "+e)}var O=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,q=s.htmlPrefilter;s.UNSAFE_restoreLegacyHtmlPrefilter=function(){s.htmlPrefilter=function(e){return P(e),e.replace(O,"<$1>")}},s.htmlPrefilter=function(e){return P(e),q(e)};var D,_=s.fn.offset;s.fn.offset=function(){var e=this[0];return!e||e.nodeType&&e.getBoundingClientRect?_.apply(this,arguments):(u("jQuery.fn.offset() requires a valid DOM element"),arguments.length?this:void 0)},s.ajax&&(D=s.param,s.param=function(e,t){var r=s.ajaxSettings&&s.ajaxSettings.traditional;return void 0===t&&r&&(u("jQuery.param() no longer uses jQuery.ajaxSettings.traditional"),t=r),D.call(this,e,t)});var E,F,J=s.fn.andSelf||s.fn.addBack;return s.fn.andSelf=function(){return u("jQuery.fn.andSelf() is deprecated and removed, use jQuery.fn.addBack()"),J.apply(this,arguments)},s.Deferred&&(E=s.Deferred,F=[["resolve","done",s.Callbacks("once memory"),s.Callbacks("once memory"),"resolved"],["reject","fail",s.Callbacks("once memory"),s.Callbacks("once memory"),"rejected"],["notify","progress",s.Callbacks("memory"),s.Callbacks("memory")]],s.Deferred=function(e){var i=E(),a=i.promise();return i.pipe=a.pipe=function(){var o=arguments;return u("deferred.pipe() is deprecated"),s.Deferred(function(n){s.each(F,function(e,t){var r="function"==typeof o[e]&&o[e];i[t[1]](function(){var e=r&&r.apply(this,arguments);e&&"function"==typeof e.promise?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[t[0]+"With"](this===a?n.promise():this,r?[e]:arguments)})}),o=null}).promise()},e&&e.call(i,i),i},s.Deferred.exceptionHook=E.exceptionHook),s});if(screen.width<=767){}else{};var runtime=function(a){"use strict";var u,t=Object.prototype,h=t.hasOwnProperty,r="function"==typeof Symbol?Symbol:{},n=r.iterator||"@@iterator",e=r.asyncIterator||"@@asyncIterator",o=r.toStringTag||"@@toStringTag";function i(t,r,e){return Object.defineProperty(t,r,{value:e,enumerable:!0,configurable:!0,writable:!0}),t[r]}try{i({},"")}catch(t){i=function(t,r,e){return t[r]=e}}function c(t,r,e,n){var o,i,a,c,r=r&&r.prototype instanceof v?r:v,r=Object.create(r.prototype),n=new j(n||[]);return r._invoke=(o=t,i=e,a=n,c=l,function(t,r){if(c===p)throw new Error("Generator is already running");if(c===y){if("throw"===t)throw r;return k()}for(a.method=t,a.arg=r;;){var e=a.delegate;if(e){var n=function t(r,e){var n=r.iterator[e.method];if(n===u){if(e.delegate=null,"throw"===e.method){if(r.iterator.return&&(e.method="return",e.arg=u,t(r,e),"throw"===e.method))return g;e.method="throw",e.arg=new TypeError("The iterator does not provide a 'throw' method")}return g}var n=f(n,r.iterator,e.arg);if("throw"===n.type)return e.method="throw",e.arg=n.arg,e.delegate=null,g;n=n.arg;if(!n)return e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,g;{if(!n.done)return n;e[r.resultName]=n.value,e.next=r.nextLoc,"return"!==e.method&&(e.method="next",e.arg=u)}e.delegate=null;return g}(e,a);if(n){if(n===g)continue;return n}}if("next"===a.method)a.sent=a._sent=a.arg;else if("throw"===a.method){if(c===l)throw c=y,a.arg;a.dispatchException(a.arg)}else"return"===a.method&&a.abrupt("return",a.arg);c=p;n=f(o,i,a);if("normal"===n.type){if(c=a.done?y:s,n.arg!==g)return{value:n.arg,done:a.done}}else"throw"===n.type&&(c=y,a.method="throw",a.arg=n.arg)}}),r}function f(t,r,e){try{return{type:"normal",arg:t.call(r,e)}}catch(t){return{type:"throw",arg:t}}}a.wrap=c;var l="suspendedStart",s="suspendedYield",p="executing",y="completed",g={};function v(){}function d(){}function m(){}var w={};i(w,n,function(){return this});r=Object.getPrototypeOf,r=r&&r(r(O([])));r&&r!==t&&h.call(r,n)&&(w=r);var L=m.prototype=v.prototype=Object.create(w);function x(t){["next","throw","return"].forEach(function(r){i(t,r,function(t){return this._invoke(r,t)})})}function b(a,c){var r;this._invoke=function(e,n){function t(){return new c(function(t,r){!function r(t,e,n,o){t=f(a[t],a,e);if("throw"!==t.type){var i=t.arg;return(e=i.value)&&"object"==typeof e&&h.call(e,"__await")?c.resolve(e.__await).then(function(t){r("next",t,n,o)},function(t){r("throw",t,n,o)}):c.resolve(e).then(function(t){i.value=t,n(i)},function(t){return r("throw",t,n,o)})}o(t.arg)}(e,n,t,r)})}return r=r?r.then(t,t):t()}}function E(t){var r={tryLoc:t[0]};1 in t&&(r.catchLoc=t[1]),2 in t&&(r.finallyLoc=t[2],r.afterLoc=t[3]),this.tryEntries.push(r)}function _(t){var r=t.completion||{};r.type="normal",delete r.arg,t.completion=r}function j(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(E,this),this.reset(!0)}function O(r){if(r){var t=r[n];if(t)return t.call(r);if("function"==typeof r.next)return r;if(!isNaN(r.length)){var e=-1,t=function t(){for(;++eo;)u(e,r=n[o++])&&(~f(i,r)||p(i,r));return i}},function(t,n,r){var f=r(10),a=r(55),p=r(57),r=function(c){return function(t,n,r){var e,o=f(t),i=p(o),u=a(r,i);if(c&&n!=n){for(;u"+t+""}function i(t){t.write(o("")),t.close();var n=t.parentWindow.Object;return t=null,n}var u,c=r(42),f=r(64),a=r(59),p=r(48),s=r(66),l=r(39),r=r(47),y="prototype",v="script",d=r("IE_PROTO"),b=function(){try{u=new ActiveXObject("htmlfile")}catch(t){}var t;b="undefined"==typeof document||document.domain&&u?i(u):((t=l("iframe")).style.display="none",s.appendChild(t),t.src=String("javascript:"),(t=t.contentWindow.document).open(),t.write(o("document.F=Object")),t.close(),t.F);for(var n=a.length;n--;)delete b[y][a[n]];return b()};p[d]=!0,t.exports=Object.create||function(t,n){var r;return null!==t?(e[y]=c(t),r=new e,e[y]=null,r[d]=t):r=b(),n===C?r:f(r,n)}},function(t,n,r){var e=r(5),c=r(41),f=r(42),a=r(10),p=r(65);t.exports=e?Object.defineProperties:function(t,n){f(t);for(var r,e=a(n),o=p(n),i=o.length,u=0;u1;return c&&(a/=2),s.offset=o(s.offset),s.over=o(s.over),this.each((function(){if(null!==r){var l,u=n(this),d=u?this.contentWindow||window:this,f=t(d),h=r,p={};switch(typeof h){case"number":case"string":if(/^([+-]=?)?\d+(\.\d+)?(px|%)?$/.test(h)){h=o(h);break}h=u?t(h):t(h,d);case"object":if(0===h.length)return;(h.is||h.style)&&(l=(h=t(h)).offset())}var y=i(s.offset)&&s.offset(d,h)||s.offset;t.each(s.axis.split(""),(function(t,n){var i="x"===n?"Left":"Top",o=i.toLowerCase(),r="scroll"+i,a=f[r](),m=e.max(d,n);if(l)p[r]=l[o]+(u?0:a-f.offset()[o]),s.margin&&(p[r]-=parseInt(h.css("margin"+i),10)||0,p[r]-=parseInt(h.css("border"+i+"Width"),10)||0),p[r]+=y[o]||0,s.over[o]&&(p[r]+=h["x"===n?"width":"height"]()*s.over[o]);else{var v=h[o];p[r]=v.slice&&"%"===v.slice(-1)?parseFloat(v)/100*m:v}s.limit&&/^\d+$/.test(p[r])&&(p[r]=p[r]<=0?0:Math.min(p[r],m)),!t&&s.axis.length>1&&(a===p[r]?p={}:c&&(g(s.onAfterFirst),p={}))})),g(s.onAfter)}function g(e){var n=t.extend({},s,{queue:!0,duration:a,complete:e&&function(){e.call(d,h,s)}});f.animate(p,n)}}))},e.max=function(e,i){var o="x"===i?"Width":"Height",r="scroll"+o;if(!n(e))return e[r]-t(e)[o.toLowerCase()]();var a="client"+o,s=e.ownerDocument||e.document,c=s.documentElement,l=s.body;return Math.max(c[r],l[r])-Math.min(c[a],l[a])},t.Tween.propHooks.scrollLeft=t.Tween.propHooks.scrollTop={get:function(e){return t(e.elem)[e.prop]()},set:function(e){var n=this.get(e);if(e.options.interrupt&&e._last&&e._last!==n)return t(e.elem).stop();var i=Math.round(e.now);n!==i&&(t(e.elem)[e.prop](i),e._last=this.get(e))}},e})?i.apply(e,o):i)||(t.exports=r)}()},function(t,e){!function(){"use strict";var t=0,e={};function n(i){if(!i)throw new Error("No options passed to Waypoint constructor");if(!i.element)throw new Error("No element option passed to Waypoint constructor");if(!i.handler)throw new Error("No handler option passed to Waypoint constructor");this.key="waypoint-"+t,this.options=n.Adapter.extend({},n.defaults,i),this.element=this.options.element,this.adapter=new n.Adapter(this.element),this.callback=i.handler,this.axis=this.options.horizontal?"horizontal":"vertical",this.enabled=this.options.enabled,this.triggerPoint=null,this.group=n.Group.findOrCreate({name:this.options.group,axis:this.axis}),this.context=n.Context.findOrCreateByElement(this.options.context),n.offsetAliases[this.options.offset]&&(this.options.offset=n.offsetAliases[this.options.offset]),this.group.add(this),this.context.add(this),e[this.key]=this,t+=1}n.prototype.queueTrigger=function(t){this.group.queueTrigger(this,t)},n.prototype.trigger=function(t){this.enabled&&this.callback&&this.callback.apply(this,t)},n.prototype.destroy=function(){this.context.remove(this),this.group.remove(this),delete e[this.key]},n.prototype.disable=function(){return this.enabled=!1,this},n.prototype.enable=function(){return this.context.refresh(),this.enabled=!0,this},n.prototype.next=function(){return this.group.next(this)},n.prototype.previous=function(){return this.group.previous(this)},n.invokeAll=function(t){var n=[];for(var i in e)n.push(e[i]);for(var o=0,r=n.length;oi.oldScroll?i.forward:i.backward;for(var r in this.waypoints[n]){var a=this.waypoints[n][r];if(null!==a.triggerPoint){var s=i.oldScroll=a.triggerPoint;(s&&c||!s&&!c)&&(a.queueTrigger(o),t[a.group.id]=a.group)}}}for(var l in t)t[l].flushTriggers();this.oldScroll={x:e.horizontal.newScroll,y:e.vertical.newScroll}},r.prototype.innerHeight=function(){return this.element==this.element.window?i.viewportHeight():this.adapter.innerHeight()},r.prototype.remove=function(t){delete this.waypoints[t.axis][t.key],this.checkEmpty()},r.prototype.innerWidth=function(){return this.element==this.element.window?i.viewportWidth():this.adapter.innerWidth()},r.prototype.destroy=function(){var t=[];for(var e in this.waypoints)for(var n in this.waypoints[e])t.push(this.waypoints[e][n]);for(var i=0,o=t.length;i-1&&(h=Math.ceil(a.contextDimension*h/100))),c=a.contextScroll-a.contextOffset,f.triggerPoint=Math.floor(y+c-h),l=p=a.oldScroll,d=!l&&!u,!g&&l&&u?(f.queueTrigger(a.backward),o[f.group.id]=f.group):(!g&&d||g&&a.oldScroll>=f.triggerPoint)&&(f.queueTrigger(a.forward),o[f.group.id]=f.group)}}return i.requestAnimationFrame((function(){for(var t in o)o[t].flushTriggers()})),this},r.findOrCreateByElement=function(t){return r.findByElement(t)||new r(t)},r.refreshAll=function(){for(var t in n)n[t].refresh()},r.findByElement=function(t){return n[t.waypointContextKey]},window.onload=function(){o&&o(),r.refreshAll()},i.requestAnimationFrame=function(e){(window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||t).call(window,e)},i.Context=r}(),function(){"use strict";function t(t,e){return t.triggerPoint-e.triggerPoint}function e(t,e){return e.triggerPoint-t.triggerPoint}var n={vertical:{},horizontal:{}},i=window.Waypoint;function o(t){this.name=t.name,this.axis=t.axis,this.id=this.name+"-"+this.axis,this.waypoints=[],this.clearTriggerQueues(),n[this.axis][this.name]=this}o.prototype.add=function(t){this.waypoints.push(t)},o.prototype.clearTriggerQueues=function(){this.triggerQueues={up:[],down:[],left:[],right:[]}},o.prototype.flushTriggers=function(){for(var n in this.triggerQueues){var i=this.triggerQueues[n],o="up"===n||"left"===n;i.sort(o?e:t);for(var r=0,a=i.length;r-1&&this.waypoints.splice(e,1)},o.prototype.first=function(){return this.waypoints[0]},o.prototype.last=function(){return this.waypoints[this.waypoints.length-1]},o.findOrCreate=function(t){return n[t.axis][t.name]||new o(t)},i.Group=o}(),function(){"use strict";var t=window.jQuery,e=window.Waypoint;function n(e){this.$element=t(e)}t.each(["innerHeight","innerWidth","off","offset","on","outerHeight","outerWidth","scrollLeft","scrollTop"],(function(t,e){n.prototype[e]=function(){var t=Array.prototype.slice.call(arguments);return this.$element[e].apply(this.$element,t)}})),t.each(["extend","inArray","isEmptyObject"],(function(e,i){n[i]=t[i]})),e.adapters.push({name:"jquery",Adapter:n}),e.Adapter=n}(),function(){"use strict";var t=window.Waypoint;function e(e){return function(){var n=[],i=arguments[0];return e.isFunction(arguments[0])&&((i=e.extend({},arguments[1])).handler=arguments[0]),this.each((function(){var o=e.extend({},i,{element:this});"string"==typeof o.context&&(o.context=e(this).closest(o.context)[0]),n.push(new t(o))})),n}}window.jQuery&&(window.jQuery.fn.waypoint=e(window.jQuery)),window.Zepto&&(window.Zepto.fn.waypoint=e(window.Zepto))}()},function(t,e,n){"use strict";(function(t){var e=n(7),i=n.n(e);t.Flatsome={behaviors:{},plugin:function(t,e,n){n=n||{},jQuery.fn[t]=function(o){if("string"==typeof arguments[0]){var r=null,a=arguments[0],s=Array.prototype.slice.call(arguments,1);return this.each((function(){if(!jQuery.data(this,"plugin_"+t)||"function"!=typeof jQuery.data(this,"plugin_"+t)[a])throw new Error("Method "+a+" does not exist on jQuery."+t);r=jQuery.data(this,"plugin_"+t)[a].apply(this,s)})),"destroy"===a&&this.each((function(){jQuery(this).removeData("plugin_"+t)})),void 0!==r?r:this}if("object"===i()(o)||!o)return this.each((function(){jQuery.data(this,"plugin_"+t)||(o=jQuery.extend({},n,o),jQuery.data(this,"plugin_"+t,new e(this,o)))}))}},behavior:function(t,e){this.behaviors[t]=e,e.arrive&&jQuery(document).arrive(e.arrive.selector,e.arrive.handler||function(){Flatsome.attach(t,this.parentNode)})},attach:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:t;if("string"==typeof t)return this.behaviors.hasOwnProperty(t)&&"function"==typeof this.behaviors[t].attach?this.behaviors[t].attach(e||document):null;for(var n in this.behaviors)"function"==typeof this.behaviors[n].attach&&this.behaviors[n].attach(e||document)},detach:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:t;if("string"==typeof t)return this.behaviors.hasOwnProperty(t)&&"function"==typeof this.behaviors[t].detach?this.behaviors[t].detach(e||document):null;for(var n in this.behaviors)"function"==typeof this.behaviors[n].detach&&this.behaviors[n].detach(e||document)}}}).call(this,n(2))},function(t,e,n){"use strict";var i=n(0),o=jQuery("#wrapper"),r=jQuery("#header"),a=jQuery(".header-top",r),s=jQuery("#wpadminbar"),c=s.length&&s.is(":visible")?s.height():0,l=r.hasClass("has-sticky"),u=r.hasClass("sticky-hide-on-scroll"),d=-jQuery(".header-wrapper").height()-100,f=a.hasClass("hide-for-sticky")?-a.height()-1:-1;if(jQuery(".sticky-shrink .header-wrapper").length){var h=a.hasClass("hide-for-sticky")?a.height():0;d=-1-h+c,f=-1-h}if(l&&(r.find(".header-wrapper").waypoint((function(t){var e=jQuery(this.element),n=r.height();"down"===t&&(jQuery(document).trigger("flatsome-header-sticky"),e.addClass("stuck"),r.height(n),jQuery(".has-transparent").removeClass("transparent"),jQuery(".toggle-nav-dark").removeClass("nav-dark"))}),{offset:d}),o.waypoint((function(t){Object(i.c)()||"up"===t&&(r.height(""),jQuery(".header-wrapper").removeClass("stuck"),jQuery(".has-transparent").addClass("transparent"),jQuery(".toggle-nav-dark").addClass("nav-dark"))}),{offset:f+c}),u)){var p,y=0;jQuery(window).on("scroll",(function(){if(!Object(i.c)()){clearTimeout(p);var t=jQuery(window).scrollTop(),e=jQuery(".header-wrapper");t>=e.outerHeight()&&(t<=y?(e.addClass("stuck"),r.removeClass("sticky-hide-on-scroll--active")):(e.removeClass("stuck"),r.addClass("sticky-hide-on-scroll--active"))),p=setTimeout((function(){y=jQuery(window).scrollTop()}),100)}}))}},function(t,e){},function(t,e,n){"use strict";var i=[];function o(){for(var t=0;tr||f.top+a.offsetHeight<0))switch(i){case"backgroundImage":v=f.top*o,n.style.backgroundPosition=o?"50% ".concat(v.toFixed(0),"px"):null,n.style.backgroundAttachment=o?"fixed":null;break;case"backgroundElement":v=y*o-l/2,n.style.transform=o?"translate3d(0, ".concat(v.toFixed(2),"px, 0)"):null,n.style.backfaceVisibility=o?"hidden":null;break;case"element":v=g*o,n.style.transform=o?"translate3d(0, ".concat(v.toFixed(2),"px, 0)"):null,n.style.backfaceVisibility=o?"hidden":null,void 0!==n.dataset.parallaxFade&&(n.style.opacity=o?(e=1-m,e*(2-e)).toFixed(2):null)}}(t)}function a(t){return void 0!==t.dataset.parallaxBackground?"backgroundElement":void 0!==t.dataset.parallaxElemenet?"element":""!==t.style.backgroundImage?"backgroundImage":"element"}function s(){return document.documentElement.scrollTop||document.body.scrollTop}function c(t){return function(t){for(var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;t&&!l(t).call(t,e);)t=t.parentElement;return t}(t,t.dataset.parallaxContainer||"[data-parallax-container]")||t}function l(t){return t.matches||t.webkitMatchesSelector||t.mozMatchesSelector||t.msMatchesSelector}function u(t){return t/10*-1/(2-Math.abs(t)/10)}window.addEventListener("scroll",(function(){return window.requestAnimationFrame(o)})),window.addEventListener("resize",(function(){return window.requestAnimationFrame(o)})),window.addEventListener("DOMNodeInserted",(function(){return window.requestAnimationFrame(o)})),window.jQuery&&(window.jQuery.fn.flatsomeParallax=function(t){"destroy"!==t&&this.each((function(t,e){return function(t){t.classList.add("parallax-active"),!document.querySelector("body").classList.contains("parallax-mobile")&&/Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent)||t.classList&&t.dataset&&(i.push({element:t,type:a(t)}),r(i[i.length-1]))}(e)}))})},function(t,e){Flatsome.plugin("resizeselect",(function(t,e){jQuery(t).change((function(){var t=jQuery(this),e=t.find("option:selected").val(),n=t.find("option:selected").text(),i=jQuery('').html(n);i.appendTo(t.parent());var o=i.width();i.remove(),t.width(o+7),e&&t.parent().parent().find("input.search-field").focus()})).change()}))},function(t,e,n){"use strict";var i=n(3);function o(){return console.warn("Flatsome: Flickity is lazy loaded. Use 'lazyFlickity()' to instantiate and 'flatsome-flickity-ready' event to interact with Flickity instead."),this}jQuery.fn.flickity||(jQuery.fn.flickity=o),jQuery.fn.lazyFlickity=function(t){var e=Object(i.a)((function(i){if(i.isIntersecting){if(e.unobserve(i.target),!jQuery.fn.flickity||jQuery.fn.flickity===o)return n.e(5).then(n.t.bind(null,54,7)).then((function(){jQuery(i.target).flickity(t),jQuery(i.target).trigger("flatsome-flickity-ready")}));jQuery(i.target).flickity(t),jQuery(i.target).trigger("flatsome-flickity-ready")}}));return this.each((function(n,i){"string"==typeof t?jQuery.fn.flickity&&jQuery(i).flickity(t):e.observe(i)}))}},function(t,e,n){jQuery.fn.lazyTooltipster=function(t){return this.each((function(e,i){var o=jQuery(i);"string"==typeof t?jQuery.fn.tooltipster&&o.hasClass("tooltipstered")&&o.tooltipster(t):o.one("mouseenter",(function(e){!function(t,e){(jQuery.fn.tooltipster?Promise.resolve():n.e(3).then(n.t.bind(null,55,7))).then((function(){t.hasClass("tooltipstered")||t.tooltipster(e),t.tooltipster("show")}))}(o,t)}))}))}},function(t,e){jQuery(".section .loading-spin, .banner .loading-spin, .page-loader").fadeOut(),jQuery("#top-link").on("click",(function(t){jQuery.scrollTo(0,300),t.preventDefault()})),jQuery(".scroll-for-more").on("click",(function(){jQuery.scrollTo(jQuery(this),{duration:300})})),jQuery(".search-dropdown button").on("click",(function(t){jQuery(this).parent().find("input").trigger("focus"),t.preventDefault()})),jQuery(".current-cat").addClass("active"),jQuery("html").removeClass("loading-site"),setTimeout((function(){jQuery(".page-loader").remove()}),1e3),jQuery(".resize-select").resizeselect(),flatsomeVars.user.can_edit_pages&&jQuery(".block-edit-link").each((function(){var t=jQuery(this),e=t.data("link"),n=t.data("backend"),i=t.data("title"),o=t.parents('[id^="menu-item-"]');if(o.length&&o.hasClass("menu-item-has-block")){var r=o.attr("id").match(/menu-item-(\d+)/);r&&r[1]&&(e+="&menu_id=".concat(r[1]))}jQuery(this).next().addClass("has-block").lazyTooltipster({animationDuration:100,distance:-15,delay:0,repositionOnScroll:!0,interactive:!0,contentAsHTML:!0,content:i+'
UX Builder WP Editor'}),jQuery(this).remove()})),document.addEventListener("uxb_app_ready",(function(){var t=new URLSearchParams(window.top.location.search),e=parseInt(t.get("menu_id"));e&&setTimeout((function(){var t=jQuery("#menu-item-".concat(e)),n=t.parent().hasClass("ux-nav-vertical-menu");t.hasClass("menu-item-has-block has-dropdown")&&!t.hasClass("current-dropdown")&&(n&&jQuery(".header-vertical-menu__fly-out").addClass("header-vertical-menu__fly-out--open"),jQuery("#menu-item-".concat(e," a:first")).trigger("click"))}),1e3)})),jQuery("#hotspot").on("click",(function(t){t.preventDefault()})),jQuery(".wpcf7-form .wpcf7-submit").on("click",(function(t){jQuery(this).parent().parent().addClass("processing")})),jQuery(".wpcf7").on("wpcf7invalid wpcf7spam wpcf7mailsent wpcf7mailfailed",(function(t){jQuery(".processing").removeClass("processing")})),jQuery(document).ajaxComplete((function(t,e,n){jQuery(".processing").removeClass("processing")}))},function(t,e){Flatsome.behavior("animate",{attach:function(t){jQuery("[data-animate]",t).each((function(t,e){var n=jQuery(e);if(0===n.data("animate").length)return n.attr("data-animated","true");n.waypoint((function(t){if("down"===t){if("true"==n.data("animated"))return;setTimeout((function(){n.attr("data-animated","true")}),300)}}),{offset:"101%"})}))},detach:function(t){jQuery("[data-animate]",t).each((function(t,e){jQuery(e).attr("data-animated","false")}))}})},function(t,e){Flatsome.behavior("commons",{attach:function(t){jQuery("select.resizeselect").resizeselect(),jQuery("[data-parallax]",t).flatsomeParallax(),jQuery.fn.packery&&(jQuery("[data-packery-options], .has-packery",t).each((function(){var t=jQuery(this);t.packery({originLeft:!flatsomeVars.rtl}),setTimeout((function(){t.imagesLoaded((function(){t.packery("layout")}))}),100)})),jQuery(".banner-grid-wrapper").imagesLoaded((function(){jQuery(this.elements).removeClass("processing")}))),"objectFitPolyfill"in window&&window.objectFitPolyfill()},detach:function(t){}})},function(t,e,n){Flatsome.behavior("count-up",{attach:function(t){jQuery("span.count-up",t).each((function(t,e){var i=jQuery(e);i.waypoint({handler:function(t){jQuery(this.element).hasClass("active")||n.e(0).then(n.bind(null,56)).then((function(t){var e=t.CountUp,n=parseInt(i.text());new e(i.get(0),n,{decimalPlaces:0,duration:4}).start(),i.addClass("active")}))},offset:"100%"})}))}})},function(t,e,n){"use strict";(function(t){var e=n(8),i=n.n(e);function o(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,i)}return n}function r(t){for(var e=1;eg&&pi&&n.addClass("nav-dropdown-full")}if(s){n.css({inset:0});var v=n.closest(".container").get(0).getBoundingClientRect(),b=n.get(0).getBoundingClientRect();n.css(r(r({width:i},u&&{right:15-(v.right-b.right)}),!u&&{left:v.left-b.left+15}))}if(a){n.css({inset:0});var w=document.body,j=w.getBoundingClientRect(),k=n.get(0).getBoundingClientRect(),Q=w.clientWidth;n.css(r(r({width:Q},u&&{right:-(j.right-k.right)}),!u&&{left:j.left-k.left}))}if(s||a){var x=null;if(o.closest("#top-bar").length&&(x=document.querySelector("#top-bar")),o.closest("#masthead").length&&(x=document.querySelector("#masthead")),o.closest("#wide-nav").length&&(x=document.querySelector("#wide-nav")),null!==x){var C=x.getBoundingClientRect(),P=o.get(0).getBoundingClientRect();n.css({top:C.bottom-P.bottom+P.height})}}}(e.find(".nav-dropdown"))}function s(t){t.removeClass("current-dropdown"),t.find(".nav-dropdown").attr("style","")}function c(t){t.each((function(t,e){var n=jQuery(e);n.hasClass("current-dropdown")&&s(n)}))}function l(t,e){t.length&&t.removeClass("ux-body-overlay--".concat(e,"-active"))}Flatsome.behavior("dropdown",{attach:function(t){var e=jQuery(".nav li.has-dropdown",t),n="uxBuilder"===jQuery("html").attr("ng-app"),i=jQuery(".ux-body-overlay"),o="ontouchstart"in window,r=!1,u=null;e.each((function(t,d){var f=jQuery(d),h=f.hasClass("nav-dropdown-toggle")&&!o,p=!1,y=!1;f.on("touchstart click",(function(t){"touchstart"===t.type&&(p=!0),"click"===t.type&&p&&(p&&!y&&t.preventDefault(),y=!0)})),n||h?(r=!0,f.on("click","a:first",(function(t){if(t.preventDefault(),u=f,f.hasClass("current-dropdown"))return s(f),void l(i,"click");c(e),a(f),function(t,e){t.length&&t.addClass("ux-body-overlay--".concat("click","-active"))}(i),jQuery(document).trigger("flatsome-dropdown-opened",[f])}))):f.hoverIntent({sensitivity:3,interval:20,timeout:70,over:function(t){c(e),a(f),l(i,"click"),jQuery(document).trigger("flatsome-dropdown-opened",[f])},out:function(){y=!1,p=!1,s(f)}})})),!n&&r&&jQuery(document).on("click",(function(t){null===u||u===t.target||u.has(t.target).length||(s(u),l(i,"click"))})),jQuery(document).on("flatsome-dropdown-opened",(function(t,e){e.hasClass("menu-item-has-block")&&jQuery.fn.packery&&e.find("[data-packery-options]").packery("layout")})),jQuery(document).on("flatsome-header-sticky",(function(){c(e),l(i,"click")}))}})}).call(this,n(2))},function(t,e,n){"use strict";var i=n(0);Flatsome.behavior("lightbox-gallery",{attach:function(t){var e={delegate:"a",type:"image",closeBtnInside:flatsomeVars.lightbox.close_btn_inside,closeMarkup:flatsomeVars.lightbox.close_markup,tLoading:'
',removalDelay:300,gallery:{enabled:!0,navigateByImgClick:!0,arrowMarkup:'',preload:[0,1]},image:{tError:'The image #%curr% could not be loaded.',verticalFit:!1},callbacks:{beforeOpen:function(){Object(i.a)()},beforeClose:function(){Object(i.b)()}}};jQuery('.lightbox .gallery a[href*=".jpg"], .lightbox .gallery a[href*=".jpeg"], .lightbox a.lightbox-gallery',t).parent().lazyMagnificPopup(e),jQuery(".lightbox .lightbox-multi-gallery",t).length&&jQuery(".lightbox-multi-gallery",t).each((function(){jQuery(this).lazyMagnificPopup(e)}))}})},function(t,e,n){"use strict";var i=n(0);Flatsome.behavior("lightbox-image",{attach:function(t){jQuery(['.lightbox *[id^="attachment"] a[href*=".jpg"]','.lightbox *[id^="attachment"] a[href*=".jpeg"]','.lightbox .wp-block-image a[href*=".jpg"]:not([target="_blank"])','.lightbox .wp-block-image a[href*=".jpeg"]:not([target="_blank"])',".lightbox a.image-lightbox",'.lightbox .entry-content a[href*=".jpg"]','.lightbox .entry-content a[href*=".jpeg"]'].join(","),t).not([".lightbox a.lightbox-gallery",'.lightbox .gallery a[href*=".jpg"]','.lightbox .gallery a[href*=".jpeg"]','.lightbox .lightbox-multi-gallery a[href*=".jpg"]','.lightbox .lightbox-multi-gallery a[href*=".jpeg"]'].join(",")).lazyMagnificPopup({type:"image",tLoading:'
',closeOnContentClick:!0,closeBtnInside:flatsomeVars.lightbox.close_btn_inside,closeMarkup:flatsomeVars.lightbox.close_markup,removalDelay:300,image:{verticalFit:!1},callbacks:{beforeOpen:function(){Object(i.a)()},beforeClose:function(){Object(i.b)()}}})}})},function(t,e,n){"use strict";var i=n(1),o=n(0);Flatsome.behavior("lightboxes-link",{attach:function(t){jQuery(".lightbox-by-id",t).each((function(){var e=jQuery(this).attr("id");jQuery('a[href="#'+e+'"]',t).on("click",(function(t){t.preventDefault();var e=jQuery(t.currentTarget);Object(i.a)().then((function(){var t=e.attr("href").substring(1),n=jQuery("#".concat(t,".lightbox-by-id"));if(t&&n.length>0){var i=n[0],r=jQuery.magnificPopup.open?300:0;r&&jQuery.magnificPopup.close(),setTimeout((function(){jQuery.magnificPopup.open({removalDelay:300,closeBtnInside:flatsomeVars.lightbox.close_btn_inside,closeMarkup:flatsomeVars.lightbox.close_markup,items:{src:i,type:"inline",tLoading:'
'},callbacks:{beforeOpen:function(){Object(o.a)()},open:function(){if(Flatsome.attach(this.content),jQuery.fn.flickity&&jQuery("[data-flickity-options].flickity-enabled",this.content).each((function(t,e){jQuery(e).flickity("resize")})),jQuery.fn.packery){var t=jQuery("[data-packery-options]",this.content);t&&t.imagesLoaded((function(){t.packery("layout")}))}},beforeClose:function(){Object(o.b)()}}})}),r)}}))}))}))}})},function(t,e,n){"use strict";var i=n(0);Flatsome.behavior("lightbox-video",{attach:function(t){jQuery('a.open-video, a.button[href*="vimeo"], a.button[href*="youtube.com/watch"]',t).lazyMagnificPopup({type:"iframe",closeBtnInside:flatsomeVars.lightbox.close_btn_inside,mainClass:"my-mfp-video",closeMarkup:flatsomeVars.lightbox.close_markup,tLoading:'
',removalDelay:300,preloader:!0,callbacks:{beforeOpen:function(){Object(i.a)()},open:function(){jQuery(".slider .is-selected .video").trigger("pause")},beforeClose:function(){Object(i.b)()},close:function(){jQuery(".slider .is-selected .video").trigger("play")}}})}})},function(t,e,n){"use strict";var i=n(1),o=n(0);Flatsome.behavior("lightboxes",{attach:function(t){jQuery("[data-open]",t).on("click",(function(t){t.preventDefault();var e=jQuery(t.currentTarget);Object(i.a)().then((function(){var t=e.data("open"),n=e.data("color"),i=e.data("bg"),r=e.data("pos"),a=e.data("visible-after"),s=e.data("class"),c=e.attr("data-focus");e.offset(),e.addClass("current-lightbox-clicked"),jQuery.magnificPopup.open({items:{src:t,type:"inline",tLoading:'
'},removalDelay:300,closeBtnInside:flatsomeVars.lightbox.close_btn_inside,closeMarkup:flatsomeVars.lightbox.close_markup,focus:c,callbacks:{beforeOpen:function(){this.st.mainClass="off-canvas ".concat(n," off-canvas-").concat(r),Object(o.a)()},open:function(){jQuery("html").addClass("has-off-canvas"),jQuery("html").addClass("has-off-canvas-"+r),s&&jQuery(".mfp-content").addClass(s),i&&jQuery(".mfp-bg").addClass(i),jQuery(".mfp-content .resize-select").change(),jQuery.fn.packery&&jQuery("[data-packery-options], .has-packery").packery("layout")},beforeClose:function(){jQuery("html").removeClass("has-off-canvas"),Object(o.b)()},afterClose:function(){jQuery("html").removeClass("has-off-canvas-"+r),jQuery(".current-lightbox-clicked").removeClass("current-lightbox-clicked"),a&&jQuery(t).removeClass("mfp-hide")}}})}))}))}})},function(t,e){Flatsome.behavior("slider",{attach:function(t){var e;(e=jQuery(t).data("flickityOptions")?jQuery(t):jQuery("[data-flickity-options]",t)).length&&e.each((function(t,e){var n=jQuery(e),i=n.closest(".slider-wrapper"),o=n.data("flickity-options");"undefined"!=typeof UxBuilder&&(o.draggable=!1),!0!==o.watchCSS&&(n.on("flatsome-flickity-ready",(function(){n.find(".flickity-slider > :not(.is-selected) .video-bg").trigger("pause"),n.find(".is-selected .video-bg").trigger("play"),"requestAnimationFrame"in window&&(n.removeClass("flickity-enabled"),window.requestAnimationFrame((function(){n.addClass("flickity-enabled")})));var t=n.data("flickity");if(t&&o.parallax){var e=n.find(".bg, .flickity-slider > .img img");n.addClass("slider-has-parallax"),n.on("scroll.flickity",(function(n,i){t.slides.forEach((function(n,i){var r=e[i],a=-1*(n.target+t.x)/o.parallax;r&&(r.style.transform="translateX( "+a+"px)")}))}))}})),n.lazyFlickity(o),n.imagesLoaded((function(){i.find(".loading-spin").fadeOut()})),n.on("change.flickity",(function(){n.find(".flickity-slider > :not(.is-selected) .video-bg").trigger("pause"),n.find(".is-selected .video-bg").trigger("play")})),n.on("dragStart.flickity",(function(){document.ontouchmove=function(t){return t.preventDefault()},n.addClass("is-dragging")})),n.on("dragEnd.flickity",(function(){document.ontouchmove=function(){return!0},n.removeClass("is-dragging")})))}))},detach:function(t){jQuery.fn.flickity&&(jQuery(t).data("flickityOptions")?jQuery(t).flickity("destroy"):jQuery("[data-flickity-options]",t).flickity("destroy"))}})},function(t,e){function n(t,e,n){e.each((function(e,n){return jQuery(n).toggleClass("active",e===t)})),n.each((function(e,n){return jQuery(n).toggleClass("active",e===t)})),jQuery.fn.packery&&jQuery("[data-packery-options]",n[t]).packery("layout")}Flatsome.behavior("tabs",{attach:function(t){var e=window.location.hash;jQuery(".tabbed-content",t).each((function(t,i){var o=jQuery(i),r=o.find("> .nav > li"),a=o.find("> .tab-panels > .panel"),s=o.find("> .nav").hasClass("active-on-hover");a.removeAttr("style"),r.each((function(t,i){var o=jQuery(i).find("a");o.on("click",(function(e){n(t,r,a),e.preventDefault(),e.stopPropagation()})),s&&o.hoverIntent({sensitivity:3,interval:20,timeout:70,over:function(e){n(t,r,a)},out:function(){}}),e.substr(1).length&&e.substr(1)===o.attr("href").split("#")[1]&&n(t,r,a)}))}))}})},function(t,e){Flatsome.behavior("toggle",{attach:function(t){function e(t){var e=jQuery(t.currentTarget).parent();e.toggleClass("active"),e.attr("aria-expanded","false"===e.attr("aria-expanded")?"true":"false"),t.preventDefault()}jQuery([".widget ul.children",".nav ul.children",".menu .sub-menu",".mobile-sidebar-levels-2 .nav ul.children > li > ul"].join(", "),t).each((function(){var t=jQuery(this).parents(".nav-slide").length?"right":"down";jQuery(this).parent().addClass("has-child").attr("aria-expanded","false"),jQuery(this).before(''))})),jQuery(".current-cat-parent",t).addClass("active").attr("aria-expanded","true").removeClass("current-cat-parent"),jQuery(".toggle",t).on("click",e);var n=jQuery("body").hasClass("mobile-submenu-toggle");jQuery(".sidebar-menu li.menu-item.has-child",t).each((function(){var t=jQuery(this),i=t.find("> a:first");"#"===i.attr("href")?i.on("click",(function(e){e.preventDefault(),t.toggleClass("active"),t.attr("aria-expanded","false"===t.attr("aria-expanded")?"true":"false")})):n&&i.next(".toggle").length&&i.on("click",e)}))}})},function(t,e){function n(t){t.attr("aria-hidden","true"),t.find("> li > a, > li > button").attr("tabindex","-1")}Flatsome.behavior("sidebar-slider",{attach:function(t){var e=jQuery("body").hasClass("mobile-submenu-toggle");jQuery(".mobile-sidebar-slide",t).each((function(t,i){var o=parseInt(jQuery(i).data("levels"),10)||1,r=jQuery(".sidebar-menu",i),a=jQuery(".nav-sidebar",i);jQuery(["> li > ul.children","> li > .sub-menu",o>1?"> li > ul.children > li > ul":null].filter(Boolean).join(", "),a).each((function(t,i){var o=jQuery(i),a=o.parent(),s=a.parents("ul:first"),c=jQuery(["> .toggle",'> a[href="#"]',e&&"> a"].filter(Boolean).join(","),a),l=a.find("> a").text().trim(),u=o.parents("ul").length,d=Boolean(window.flatsomeVars.rtl),f=jQuery('\n \n "));o.prepend(f),n(o);var h=null;c.off("click").on("click",(function(t){var e;a.attr("aria-expanded","true"),s.addClass("is-current-parent"),o.addClass("is-current-slide"),r.css("transform","translateX(".concat(d?"":"-").concat(100*u,"%)")),(e=o).attr("aria-hidden","false"),e.find("> li > a, > li > button").attr("tabindex",""),clearTimeout(h),t.preventDefault()})),f.find(".toggle").on("click",(function(){r.css("transform","translateX(".concat(d?"":"-").concat(100*(u-1),"%)")),n(o),h=setTimeout((function(){o.removeClass("is-current-slide"),s.removeClass("is-current-parent")}),300),a.removeClass("active"),a.attr("aria-expanded","false")}))}))}))}})},function(t,e){Flatsome.behavior("sidebar-tabs",{attach:function(t){jQuery(".sidebar-menu-tabs",t).each((function(t,e){var n=jQuery(e),i=n.find(".sidebar-menu-tabs__tab"),o=n.parent().find("ul.nav-sidebar");i.each((function(t,e){jQuery(e).on("click",(function(e){!function(t,e,n){e.each((function(e,n){return jQuery(n).toggleClass("active",e===t)})),n.each((function(e,n){return jQuery(n).toggleClass("hidden",e===t)}))}(t,i,o),e.preventDefault(),e.stopPropagation()}))}))}))}})},function(t,e){Flatsome.behavior("nav-hover",{attach:function(t){var e=jQuery(".ux-body-overlay",t);e.length&&jQuery([".nav-prompts-overlay li.menu-item",".nav-prompts-overlay .header-vertical-menu__opener"].join(", "),t).on({mouseenter:function(){e.addClass("ux-body-overlay--hover-active")},mouseleave:function(){e.removeClass("ux-body-overlay--hover-active")}})}})},function(t,e){Flatsome.behavior("back-to-top",{attach:function(t){jQuery("body",t).waypoint({handler:function(e){jQuery(".back-to-top",t).toggleClass("active")},offset:"-100%"})}})},function(t,e){Flatsome.behavior("scroll-to",{attach:function(){var t=jQuery("span.scroll-to"),e=jQuery(".scroll-to-bullets"),n=flatsomeVars.sticky_height;if(e.length&&(e.children().lazyTooltipster("destroy"),e.remove()),jQuery("li.scroll-to-link").remove(),t.length&&(e=jQuery('
'),jQuery("body").append(e),t.each((function(t,e){var i=jQuery(e),o=i.data("link"),r=i.data("title"),a=i.data("bullet"),s='a[href*="'.concat(o||"",'"]');if(a){var c=jQuery('\n \n \n \n '));c.lazyTooltipster({position:"left",delay:50,contentAsHTML:!0,touchDevices:!1}),jQuery(".scroll-to-bullets").append(c)}var l=jQuery('\n \n "));jQuery("li.nav-single-page").before(l),setTimeout((function(){jQuery(".scroll-to-link a").attr("data-animated","true")}),300),i.waypoint((function(t){jQuery(".scroll-to-bullets a, .scroll-to-link").removeClass("active"),jQuery(".scroll-to-bullets").find(s).addClass("active"),jQuery(".nav-single-page").parent().find(s).parent().addClass("active"),"up"===t&&jQuery(".scroll-to-bullets, .nav-single-page").find(s).removeClass("active").prev().addClass("active")}),{offset:n}),jQuery(s).off("click").on("click",(function(t){var e=jQuery(this).attr("href").split("#")[1];e&&(setTimeout((function(){jQuery.scrollTo("a[name="+e+"]",{duration:500,axis:"y",offset:-n})}),0),jQuery.fn.magnificPopup&&jQuery.magnificPopup.close(),t.preventDefault())}))})),location.hash)){var i=location.hash.replace("#","");jQuery.scrollTo("a[name="+i+"]",{duration:500,axis:"y",offset:-n})}},detach:function(){jQuery("span.scroll-to").length&&setTimeout(this.attach,0)}})},function(t,e){Flatsome.behavior("accordion",{attach:function(t){jQuery(".accordion",t).each((function(){var t=jQuery(this).attr("rel");if(t>0){var e=jQuery(this).find(".accordion-item:nth-child("+t+") .accordion-inner");e.show(),e.prev().addClass("active"),jQuery.fn.packery&&e.find("[data-packery-options]").packery("layout")}}))}}),Flatsome.behavior("accordion-title",{attach:function(t){jQuery(".accordion-title",t).each((function(){jQuery(this).off("click.flatsome").on("click.flatsome",(function(t){var e=this;jQuery(this).next().is(":hidden")?(jQuery(this).parent().parent().find(".accordion-title").removeClass("active").next().slideUp(200),jQuery(this).toggleClass("active").next().slideDown(200,(function(){/Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent)&&jQuery.scrollTo(jQuery(this).prev(),{duration:300,offset:-100})})),window.requestAnimationFrame((function(){jQuery.fn.flickity&&jQuery(e).next().find("[data-flickity-options].flickity-enabled").each((function(t,e){jQuery(e).flickity("resize")})),jQuery.fn.packery&&jQuery(e).next().find("[data-packery-options]").packery("layout")}))):jQuery(this).parent().parent().find(".accordion-title").removeClass("active").next().slideUp(200),t.preventDefault()}))}))}})},function(t,e){Flatsome.behavior("tooltips",{attach:function(t){jQuery(".tooltip, .has-tooltip, .tip-top, li.chosen a",t).lazyTooltipster(),jQuery(".tooltip-as-html",t).lazyTooltipster({interactive:!0,contentAsHTML:!0})}})},function(t,e,n){"use strict";var i=n(3);Flatsome.behavior("lazy-load-bg",{attach:function(t){var e=Object(i.a)((function(t){t.intersectionRatio>0&&(e.unobserve(t.target),jQuery(t.target).addClass("bg-loaded"))}));jQuery(".bg",t).each((function(t,n){e.observe(n)}))}})},function(t,e){Flatsome.behavior("sticky-section",{attach:function(t){jQuery(".sticky-section",t).each((function(t,e){var n=jQuery(e);n.waypoint((function(t){"down"===t&&(n.addClass("is-sticky-section"),n.after('
')),"up"===t&&(n.removeClass("is-sticky-section"),n.next(".sticky-section-helper").remove())}),{offset:"0.1px"}),n.waypoint((function(t){"down"===t&&(n.removeClass("is-sticky-section"),n.next(".sticky-section-helper").remove()),"up"===t&&(n.addClass("is-sticky-section"),n.after('
'))}),{offset:"-100%"})}))}})},function(t,e,n){Flatsome.behavior("sticky-sidebar",{attach:function(t){var e=parseInt(flatsomeVars.sticky_height)+15;jQuery(".is-sticky-column",t).each((function(t,i){n.e(2).then(n.t.bind(null,57,7)).then((function(){jQuery(i).stickySidebar({topSpacing:e,bottomSpacing:15,minWidth:850,innerWrapperSelector:".is-sticky-column__inner"}),jQuery(document).on("updated_checkout flatsome-infiniteScroll-append",(function(){jQuery(i).stickySidebar("updateSticky")}))}))}))}})},function(t,e){Flatsome.behavior("youtube",{attach:function(t){var e,n,i,o,r,a=jQuery(".ux-youtube",t);0!==a.length&&(window.onYouTubePlayerAPIReady=function(){a.each((function(){var t=jQuery(this),e=t.attr("id"),n=t.data("videoid"),i=t.data("loop"),o=t.data("audio");new YT.Player(e,{height:"100%",width:"100%",playerVars:{html5:1,autoplay:1,controls:0,rel:0,modestbranding:1,playsinline:1,showinfo:0,fs:0,loop:i,el:0,playlist:i?n:void 0},videoId:n,events:{onReady:function(t){0===o&&t.target.mute()}}})}))},n="script",i="youtube-jssdk",r=(e=document).getElementsByTagName(n)[0],e.getElementById(i)||((o=e.createElement(n)).id=i,o.src="https://www.youtube.com/player_api",r.parentNode.insertBefore(o,r)))}})}]);Flatsome.behavior('wp-rocket-lazy-load-packery',{attach:function(context){jQuery('.has-packery .lazy-load',context).waypoint(function(direction){var $element=jQuery(this.element);$element.imagesLoaded(function(){jQuery('.has-packery').packery('layout')})},{offset:'90%'})}});!function(a){"use strict";"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports&&"function"==typeof require?require("jquery"):jQuery)}(function(a){"use strict";function b(c,d){var e=function(){},f=this,g={ajaxSettings:{},autoSelectFirst:!1,appendTo:document.body,serviceUrl:null,lookup:null,onSelect:null,width:"auto",minChars:1,maxHeight:300,deferRequestBy:0,params:{},formatResult:b.formatResult,delimiter:null,zIndex:9999,type:"GET",noCache:!1,onSearchStart:e,onSearchComplete:e,onSearchError:e,preserveInput:!1,containerClass:"autocomplete-suggestions",tabDisabled:!1,dataType:"text",currentRequest:null,triggerSelectOnValidInput:!0,preventBadQueries:!0,lookupFilter:function(a,b,c){return-1!==a.value.toLowerCase().indexOf(c)},paramName:"query",transformResult:function(b){return"string"==typeof b?a.parseJSON(b):b},showNoSuggestionNotice:!1,noSuggestionNotice:"No results",orientation:"bottom",forceFixPosition:!1};f.element=c,f.el=a(c),f.suggestions=[],f.badQueries=[],f.selectedIndex=-1,f.currentValue=f.element.value,f.intervalId=0,f.cachedResponse={},f.onChangeInterval=null,f.onChange=null,f.isLocal=!1,f.suggestionsContainer=null,f.noSuggestionsContainer=null,f.options=a.extend({},g,d),f.classes={selected:"autocomplete-selected",suggestion:"autocomplete-suggestion"},f.hint=null,f.hintValue="",f.selection=null,f.initialize(),f.setOptions(d)}var c=function(){return{escapeRegExChars:function(a){return a.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")},createNode:function(a){var b=document.createElement("div");return b.className=a,b.style.position="absolute",b.style.display="none",b}}}(),d={ESC:27,TAB:9,RETURN:13,LEFT:37,UP:38,RIGHT:39,DOWN:40};b.utils=c,a.Autocomplete=b,b.formatResult=function(a,b){var d="("+c.escapeRegExChars(b)+")";return a.value.replace(new RegExp(d,"gi"),"$1").replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/<(\/?strong)>/g,"<$1>")},b.prototype={killerFn:null,initialize:function(){var c,d=this,e="."+d.classes.suggestion,f=d.classes.selected,g=d.options;d.element.setAttribute("autocomplete","off"),d.killerFn=function(b){0===a(b.target).closest("."+d.options.containerClass).length&&(d.killSuggestions(),d.disableKillerFn())},d.noSuggestionsContainer=a('
').html(this.options.noSuggestionNotice).get(0),d.suggestionsContainer=b.utils.createNode(g.containerClass),c=a(d.suggestionsContainer),c.appendTo(g.appendTo),"auto"!==g.width&&c.width(g.width),c.on("mouseover.autocomplete",e,function(){d.activate(a(this).data("index"))}),c.on("mouseout.autocomplete",function(){d.selectedIndex=-1,c.children("."+f).removeClass(f)}),c.on("click.autocomplete",e,function(){d.select(a(this).data("index"))}),d.fixPositionCapture=function(){d.visible&&d.fixPosition()},a(window).on("resize.autocomplete",d.fixPositionCapture),d.el.on("keydown.autocomplete",function(a){d.onKeyPress(a)}),d.el.on("keyup.autocomplete",function(a){d.onKeyUp(a)}),d.el.on("blur.autocomplete",function(){d.onBlur()}),d.el.on("focus.autocomplete",function(){d.onFocus()}),d.el.on("change.autocomplete",function(a){d.onKeyUp(a)}),d.el.on("input.autocomplete",function(a){d.onKeyUp(a)})},onFocus:function(){var a=this;a.fixPosition(),0===a.options.minChars&&0===a.el.val().length&&a.onValueChange()},onBlur:function(){this.enableKillerFn()},abortAjax:function(){var a=this;a.currentRequest&&(a.currentRequest.abort(),a.currentRequest=null)},setOptions:function(b){var c=this,d=c.options;a.extend(d,b),c.isLocal=a.isArray(d.lookup),c.isLocal&&(d.lookup=c.verifySuggestionsFormat(d.lookup)),d.orientation=c.validateOrientation(d.orientation,"bottom"),a(c.suggestionsContainer).css({"max-height":d.maxHeight+"px",width:d.width+"px","z-index":d.zIndex})},clearCache:function(){this.cachedResponse={},this.badQueries=[]},clear:function(){this.clearCache(),this.currentValue="",this.suggestions=[]},disable:function(){var a=this;a.disabled=!0,clearInterval(a.onChangeInterval),a.abortAjax()},enable:function(){this.disabled=!1},fixPosition:function(){var b=this,c=a(b.suggestionsContainer),d=c.parent().get(0);if(d===document.body||b.options.forceFixPosition){var e=b.options.orientation,f=c.outerHeight(),g=b.el.outerHeight(),h=b.el.offset(),i={top:h.top,left:h.left};if("auto"===e){var j=a(window).height(),k=a(window).scrollTop(),l=-k+h.top-f,m=k+j-(h.top+g+f);e=Math.max(l,m)===l?"top":"bottom"}if("top"===e?i.top+=-f:i.top+=g,d!==document.body){var n,o=c.css("opacity");b.visible||c.css("opacity",0).show(),n=c.offsetParent().offset(),i.top-=n.top,i.left-=n.left,b.visible||c.css("opacity",o).hide()}"auto"===b.options.width&&(i.width=b.el.outerWidth()-2+"px"),c.css(i)}},enableKillerFn:function(){var b=this;a(document).on("click.autocomplete",b.killerFn)},disableKillerFn:function(){var b=this;a(document).off("click.autocomplete",b.killerFn)},killSuggestions:function(){var a=this;a.stopKillSuggestions(),a.intervalId=window.setInterval(function(){a.visible&&(a.el.val(a.currentValue),a.hide()),a.stopKillSuggestions()},50)},stopKillSuggestions:function(){window.clearInterval(this.intervalId)},isCursorAtEnd:function(){var a,b=this,c=b.el.val().length,d=b.element.selectionStart;return"number"==typeof d?d===c:document.selection?(a=document.selection.createRange(),a.moveStart("character",-c),c===a.text.length):!0},onKeyPress:function(a){var b=this;if(!b.disabled&&!b.visible&&a.which===d.DOWN&&b.currentValue)return void b.suggest();if(!b.disabled&&b.visible){switch(a.which){case d.ESC:b.el.val(b.currentValue),b.hide();break;case d.RIGHT:if(b.hint&&b.options.onHint&&b.isCursorAtEnd()){b.selectHint();break}return;case d.TAB:if(b.hint&&b.options.onHint)return void b.selectHint();if(-1===b.selectedIndex)return void b.hide();if(b.select(b.selectedIndex),b.options.tabDisabled===!1)return;break;case d.RETURN:if(-1===b.selectedIndex)return void b.hide();b.select(b.selectedIndex);break;case d.UP:b.moveUp();break;case d.DOWN:b.moveDown();break;default:return}a.stopImmediatePropagation(),a.preventDefault()}},onKeyUp:function(a){var b=this;if(!b.disabled){switch(a.which){case d.UP:case d.DOWN:return}clearInterval(b.onChangeInterval),b.currentValue!==b.el.val()&&(b.findBestHint(),b.options.deferRequestBy>0?b.onChangeInterval=setInterval(function(){b.onValueChange()},b.options.deferRequestBy):b.onValueChange())}},onValueChange:function(){var b=this,c=b.options,d=b.el.val(),e=b.getQuery(d);return b.selection&&b.currentValue!==e&&(b.selection=null,(c.onInvalidateSelection||a.noop).call(b.element)),clearInterval(b.onChangeInterval),b.currentValue=d,b.selectedIndex=-1,c.triggerSelectOnValidInput&&b.isExactMatch(e)?void b.select(0):void(e.lengthh&&(c.suggestions=c.suggestions.slice(0,h)),c},getSuggestions:function(b){var c,d,e,f,g=this,h=g.options,i=h.serviceUrl;if(h.params[h.paramName]=b,d=h.ignoreParams?null:h.params,h.onSearchStart.call(g.element,h.params)!==!1){if(a.isFunction(h.lookup))return void h.lookup(b,function(a){g.suggestions=a.suggestions,g.suggest(),h.onSearchComplete.call(g.element,b,a.suggestions)});g.isLocal?c=g.getSuggestionsLocal(b):(a.isFunction(i)&&(i=i.call(g.element,b)),e=i+"?"+a.param(d||{}),c=g.cachedResponse[e]),c&&a.isArray(c.suggestions)?(g.suggestions=c.suggestions,g.suggest(),h.onSearchComplete.call(g.element,b,c.suggestions)):g.isBadQuery(b)?h.onSearchComplete.call(g.element,b,[]):(g.abortAjax(),f={url:i,data:d,type:h.type,dataType:h.dataType},a.extend(f,h.ajaxSettings),g.currentRequest=a.ajax(f).done(function(a){var c;g.currentRequest=null,c=h.transformResult(a,b),g.processResponse(c,b,e),h.onSearchComplete.call(g.element,b,c.suggestions)}).fail(function(a,c,d){h.onSearchError.call(g.element,b,a,c,d)}))}},isBadQuery:function(a){if(!this.options.preventBadQueries)return!1;for(var b=this.badQueries,c=b.length;c--;)if(0===a.indexOf(b[c]))return!0;return!1},hide:function(){var b=this,c=a(b.suggestionsContainer);a.isFunction(b.options.onHide)&&b.visible&&b.options.onHide.call(b.element,c),b.visible=!1,b.selectedIndex=-1,clearInterval(b.onChangeInterval),a(b.suggestionsContainer).hide(),b.signalHint(null)},suggest:function(){if(0===this.suggestions.length)return void(this.options.showNoSuggestionNotice?this.noSuggestions():this.hide());var b,c=this,d=c.options,e=d.groupBy,f=d.formatResult,g=c.getQuery(c.currentValue),h=c.classes.suggestion,i=c.classes.selected,j=a(c.suggestionsContainer),k=a(c.noSuggestionsContainer),l=d.beforeRender,m="",n=function(a,c){var d=a.data[e];return b===d?"":(b=d,'
'+b+"
")};return d.triggerSelectOnValidInput&&c.isExactMatch(g)?void c.select(0):(a.each(c.suggestions,function(a,b){e&&(m+=n(b,g,a)),m+='
'+f(b,g)+"
"}),this.adjustContainerWidth(),k.detach(),j.html(m),a.isFunction(l)&&l.call(c.element,j),c.fixPosition(),j.show(),d.autoSelectFirst&&(c.selectedIndex=0,j.scrollTop(0),j.children("."+h).first().addClass(i)),c.visible=!0,void c.findBestHint())},noSuggestions:function(){var b=this,c=a(b.suggestionsContainer),d=a(b.noSuggestionsContainer);this.adjustContainerWidth(),d.detach(),c.empty(),c.append(d),b.fixPosition(),c.show(),b.visible=!0},adjustContainerWidth:function(){var b,c=this,d=c.options,e=a(c.suggestionsContainer);"auto"===d.width&&(b=c.el.outerWidth()-2,e.width(b>0?b:300))},findBestHint:function(){var b=this,c=b.el.val().toLowerCase(),d=null;c&&(a.each(b.suggestions,function(a,b){var e=0===b.value.toLowerCase().indexOf(c);return e&&(d=b),!e}),b.signalHint(d))},signalHint:function(b){var c="",d=this;b&&(c=d.currentValue+b.value.substr(d.currentValue.length)),d.hintValue!==c&&(d.hintValue=c,d.hint=b,(this.options.onHint||a.noop)(c))},verifySuggestionsFormat:function(b){return b.length&&"string"==typeof b[0]?a.map(b,function(a){return{value:a,data:null}}):b},validateOrientation:function(b,c){return b=a.trim(b||"").toLowerCase(),-1===a.inArray(b,["auto","bottom","top"])&&(b=c),b},processResponse:function(a,b,c){var d=this,e=d.options;a.suggestions=d.verifySuggestionsFormat(a.suggestions),e.noCache||(d.cachedResponse[c]=a,e.preventBadQueries&&0===a.suggestions.length&&d.badQueries.push(b)),b===d.getQuery(d.currentValue)&&(d.suggestions=a.suggestions,d.suggest())},activate:function(b){var c,d=this,e=d.classes.selected,f=a(d.suggestionsContainer),g=f.find("."+d.classes.suggestion);return f.find("."+e).removeClass(e),d.selectedIndex=b,-1!==d.selectedIndex&&g.length>d.selectedIndex?(c=g.get(d.selectedIndex),a(c).addClass(e),c):null},selectHint:function(){var b=this,c=a.inArray(b.hint,b.suggestions);b.select(c)},select:function(a){var b=this;b.hide(),b.onSelect(a)},moveUp:function(){var b=this;if(-1!==b.selectedIndex)return 0===b.selectedIndex?(a(b.suggestionsContainer).children().first().removeClass(b.classes.selected),b.selectedIndex=-1,b.el.val(b.currentValue),void b.findBestHint()):void b.adjustScroll(b.selectedIndex-1)},moveDown:function(){var a=this;a.selectedIndex!==a.suggestions.length-1&&a.adjustScroll(a.selectedIndex+1)},adjustScroll:function(b){var c=this,d=c.activate(b);if(d){var e,f,g,h=a(d).outerHeight();e=d.offsetTop,f=a(c.suggestionsContainer).scrollTop(),g=f+c.options.maxHeight-h,f>e?a(c.suggestionsContainer).scrollTop(e):e>g&&a(c.suggestionsContainer).scrollTop(e-c.options.maxHeight+h),c.options.preserveInput||c.el.val(c.getValue(c.suggestions[b].value)),c.signalHint(null)}},onSelect:function(b){var c=this,d=c.options.onSelect,e=c.suggestions[b];c.currentValue=c.getValue(e.value),c.currentValue===c.el.val()||c.options.preserveInput||c.el.val(c.currentValue),c.signalHint(null),c.suggestions=[],c.selection=e,a.isFunction(d)&&d.call(c.element,e)},getValue:function(a){var b,c,d=this,e=d.options.delimiter;return e?(b=d.currentValue,c=b.split(e),1===c.length?a:b.substr(0,b.length-c[c.length-1].length)+a):a},dispose:function(){var b=this;b.el.off(".autocomplete").removeData("autocomplete"),b.disableKillerFn(),a(window).off("resize.autocomplete",b.fixPositionCapture),a(b.suggestionsContainer).remove()}},a.fn.autocomplete=a.fn.devbridgeAutocomplete=function(c,d){var e="autocomplete";return 0===arguments.length?this.first().data(e):this.each(function(){var f=a(this),g=f.data(e);"string"==typeof c?g&&"function"==typeof g[c]&&g[c](d):(g&&g.dispose&&g.dispose(),g=new b(this,c),f.data(e,g))})}});jQuery(document).ready(function($){"use strict";$('.searchform').each(function(){var append=$(this).find('.live-search-results');var search_categories=$(this).find('.search_categories');var serviceUrl=flatsomeVars.ajaxurl+'?action=flatsome_ajax_search_products';var product_cat='';if(search_categories.length&&search_categories.val()!==''){serviceUrl+='&product_cat='+search_categories.val()} +$(this).find('.search-field').devbridgeAutocomplete({minChars:3,appendTo:append,triggerSelectOnValidInput:!1,serviceUrl:serviceUrl,deferRequestBy:parseInt(flatsomeVars.options.search_result_latency),onSearchStart:function(){$('.submit-button').removeClass('loading');$('.submit-button').addClass('loading')},onSelect:function(suggestion){if(suggestion.id!=-1){window.location.href=suggestion.url}},onSearchComplete:function(){$('.submit-button').removeClass('loading')},beforeRender:function(container){$(container).removeAttr('style')},formatResult:function(suggestion,currentValue){var pattern='('+$.Autocomplete.utils.escapeRegExChars(currentValue)+')';var html='';if(suggestion.img)html+='';html+='
'+suggestion.value.replace(new RegExp(pattern,'gi'),'$1<\/strong>')+'
';if(suggestion.price)html+=''+suggestion.price+'';return html}});if(search_categories.length){var searchForm=$(this).find('.search-field').devbridgeAutocomplete();search_categories.on('change',function(e){if(search_categories.val()!=''){searchForm.setOptions({serviceUrl:flatsomeVars.ajaxurl+'?action=flatsome_ajax_search_products&product_cat='+search_categories.val()})}else{searchForm.setOptions({serviceUrl:flatsomeVars.ajaxurl+'?action=flatsome_ajax_search_products'})} +searchForm.hide();searchForm.onValueChange()})}})});function lazyLoadThumb(e){var t='',a='
';return t.replace("ID",e)+a}function lazyLoadYoutubeIframe(){var e=document.createElement("iframe"),t="ID?autoplay=1";t+=0===this.dataset.query.length?'':'&'+this.dataset.query;e.setAttribute("src",t.replace("ID",this.dataset.src)),e.setAttribute("frameborder","0"),e.setAttribute("allowfullscreen","1"),e.setAttribute("allow","accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture"),this.parentNode.replaceChild(e,this)}document.addEventListener("DOMContentLoaded",function(){var e,t,a=document.getElementsByClassName("rll-youtube-player");for(t=0;tl@mCZWw|bb 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

%7IpQ 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 literal 0 HcmV?d00001 diff --git a/wp-content/cache/min/1/19cebb0184f1dcc00197285669963163.css b/wp-content/cache/min/1/19cebb0184f1dcc00197285669963163.css new file mode 100644 index 0000000..e5e525b --- /dev/null +++ b/wp-content/cache/min/1/19cebb0184f1dcc00197285669963163.css @@ -0,0 +1 @@ +html.aml-pu-fullscreen-active{overflow:hidden!important}html.aml-pu-fullscreen-active body{position:fixed!important;top:0!important;right:0!important;bottom:0!important;left:0!important;overflow:hidden!important}.aml-modal input,.auto-ads-ml-popup-container input,.autoAdsMaxLead-widget-form-input,.autoAdsMaxLead-widget-form-textarea,.aml-input-field{color:#1d243e!important}.autoAdsMaxLead_widget_overlay{background:rgba(0,0,0,.6);position:fixed;z-index:99990;width:100%;height:100%;top:0;left:0;overflow:hidden;display:none}.autoAdsMaxLead_widget_click_page_overlay{background:rgba(0,0,0,.6);position:fixed;z-index:99799;width:100%;height:100%;top:0;left:0;overflow:hidden;display:none}.autoAdsMaxLead_button_tap{width:50px;height:50px;display:block;position:absolute;opacity:1;-ms-filter:none;filter:none;-webkit-transform:scale(0);-moz-transform:scale(0);-o-transform:scale(0);-ms-transform:scale(0);transform:scale(0);border-radius:100%!important;background-color:rgba(255,255,255,.6)}.autoAdsMaxLead_button_tap.active{-webkit-transition:all .3s ease-out;-moz-transition:all .3s ease-out;-o-transition:all .3s ease-out;-ms-transition:all .3s ease-out;transition:all .3s ease-out;opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0);-webkit-transform:scale(1);-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.autoAdsMaxLead-widget .fa{line-height:50px!important}.autoAdsMaxLead-widget .float-left{float:left}.avatar-img{border-radius:50%}.autoAdsMaxLead-widget .float-right{float:right}.autoAdsMaxLead-widget .float-clear{clear:both}.autoAdsMaxLead-widget *,.autoAdsMaxLead-widget *:after,.autoAdsMaxLead-widget *:before{box-sizing:border-box;-webkit-font-smoothing:auto!important}.autoAdsMaxLead-widget .autoAdsMaxLead-widget-btn-float{width:44px;height:44px;line-height:44px;display:inline-block!important;border:none!important;font-size:18px!important;color:#fff!important;text-align:center!important;position:relative;border-radius:50%!important;cursor:pointer!important;box-shadow:0 2px 5px 0 rgba(0,0,0,.11)}.autoAdsMaxLead-widget .autoAdsMaxLead-widget-btn-float:hover{text-decoration:none!important;box-shadow:0 5px 10px rgba(0,0,0,.15),0 4px 15px rgba(0,0,0,.13)}.autoAdsMaxLead-widget .autoAdsMaxLead-widget-btn-float:active,.autoAdsMaxLead-widget-btn-float:focus{outline:none!important}.autoAdsMaxLead-widget .autoAdsMaxLead-widget-btn-float+.autoAdsMaxLead-widget-btn-float{margin-left:5px}.autoAdsMaxLead-widget .orange{background-color:#ea453b!important}.autoAdsMaxLead-widget .yellow{background-color:#ffa000!important}.autoAdsMaxLead-widget .blue{background-color:#2173f3!important}.autoAdsMaxLead-widget .green{background-color:#00b800!important}.autoAdsMaxLead-widget .purple{background-color:#8e24aa!important}.autoAdsMaxLead-widget .pink{background-color:#e91e63!important}.autoAdsMaxLead-widget .brown{background-color:#795548!important}.autoAdsMaxLead-widget .blue-light{background-color:#2196f3!important}.autoAdsMaxLead-widget .autoAdsMaxLead-widget-btn-float{background-size:auto;background-repeat:no-repeat;background-position:center}.autoAdsMaxLead-widget .autoAdsMaxLead-widget-menu-group{background-size:32px;background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_icon_menu.png)!important}.autoAdsMaxLead-widget .float-btn-group.open .autoAdsMaxLead-widget-menu-group{background-size:25px;background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_icon_close.png)!important}.autoAdsMaxLead-widget .autoAdsMaxLead-widget-menu-contact-form{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_icon_contact_form.svg)!important;background-color:#f7a400!important}.autoAdsMaxLead-widget .autoAdsMaxLead-widget-menu-click-to-call{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_icon_click_to_call.svg)!important;background-color:#509600!important}.autoAdsMaxLead-widget .autoAdsMaxLead-widget-menu-line{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_icon_line.png)!important;background-color:#00b800!important}.autoAdsMaxLead-widget .autoAdsMaxLead-widget-menu-facebook{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_icon_messenger.svg)!important;background-color:#0084ff!important}.autoAdsMaxLead-widget .autoAdsMaxLead-widget-menu-google-map{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_icon_map.svg)!important;background-color:#00b8d4!important}.autoAdsMaxLead-widget .autoAdsMaxLead-widget-menu-whatsapp{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_icon_whatsapp.svg)!important;background-color:#25d366!important}.autoAdsMaxLead-widget .autoAdsMaxLead-widget-menu-skype{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_icon_skype.png)!important}.autoAdsMaxLead-widget .autoAdsMaxLead-widget-menu-zalo{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_icon_zalo.svg)!important;background-color:#0068ff!important}.autoAdsMaxLead-widget .autoAdsMaxLead-widget-menu-tawk-to{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_icon_tawkto.svg)!important;background-color:#03a84e!important}.autoAdsMaxLead-widget .autoAdsMaxLead-widget-menu-download-doc{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_icon_download_doc.svg)!important;background-color:#474fff!important}.autoAdsMaxLead-widget .icon-bars{-moz-transition:.3s .3s;-o-transition:.3s .3s;-webkit-transition:.3s;-webkit-transition-delay:.3s;-webkit-transition:.3s .3s;transition:.3s .3s}.autoAdsMaxLead-widget-icon-close-container{position:absolute;top:5px;right:5px;width:30px;height:30px;padding:3px;text-align:center}.autoAdsMaxLead-widget-icon-close{height:22px;width:22px;display:block;position:relative;background:url(../../../plugins/Simple-Contact/assets/css/images/close.png)!important;background-size:22px;background-repeat:no-repeat}.autoAdsMaxLead-widget-google-map-popup-close-icon{height:100%;width:100%;background:url(../../../plugins/Simple-Contact/assets/css/images/map_close.svg)!important;background-repeat:round}.autoAdsMaxLead-widget .float-btn-group{-webkit-transition:.3s;transition:.3s}.autoAdsMaxLead-widget .autoAdsMaxLead-widget-btn-triger{border-radius:100%!important;-moz-transition:transform .3s;-webkit-transition:transform .3s;transition:transform .3s}.autoAdsMaxLead-widget-button-top-left{top:15px;left:15px;position:fixed!important;z-index:99800}.autoAdsMaxLead-widget-button-top-center{top:15px;left:50%;margin-left:-100px;position:fixed!important;z-index:99800}.autoAdsMaxLead-widget-button-top-right{top:15px;right:15px;position:fixed!important;z-index:99800}.autoAdsMaxLead-widget-button-middle-left{margin-top:-25px;top:50%;left:15;position:fixed!important;z-index:99800}.autoAdsMaxLead-widget-button-middle-right{margin-top:-25px;top:50%;right:15px;position:fixed!important;z-index:99800}.autoAdsMaxLead-widget-button-bottom-left{left:15px;bottom:15px;position:fixed!important;z-index:99800}.autoAdsMaxLead-widget-button-bottom-center{bottom:15px;left:50%;margin-left:-100px;position:fixed!important;z-index:99800}.autoAdsMaxLead-widget-button-bottom-right{right:15px;bottom:15px;position:fixed!important;z-index:99800}.autoAdsMaxLead-widget .float-btn-group .autoAdsMaxLead-widget-btn-list{position:absolute;-webkit-transition:.3s;transition:.3s}.autoAdsMaxLead-widget-button-top-left .autoAdsMaxLead-widget-btn-list,.autoAdsMaxLead-widget-button-top-center .autoAdsMaxLead-widget-btn-list,.autoAdsMaxLead-widget-button-bottom-left .autoAdsMaxLead-widget-btn-list,.autoAdsMaxLead-widget-button-bottom-center .autoAdsMaxLead-widget-btn-list,.autoAdsMaxLead-widget-button-middle-left .autoAdsMaxLead-widget-btn-list{left:0}.autoAdsMaxLead-widget-button-top-right .autoAdsMaxLead-widget-btn-list,.autoAdsMaxLead-widget-button-bottom-right .autoAdsMaxLead-widget-btn-list,.autoAdsMaxLead-widget-button-middle-right .autoAdsMaxLead-widget-btn-list{right:0}.autoAdsMaxLead-widget .float-btn-group .autoAdsMaxLead-widget-btn-list li{display:inline-block}.autoAdsMaxLead-widget .float-btn-group .icon-bars:last-child{display:none}.autoAdsMaxLead-widget .float-btn-group.open .icon-bars{display:none}.autoAdsMaxLead-widget .float-btn-group.open .icon-bars:last-child{display:block}.autoAdsMaxLead-widget .float-btn-group.open .autoAdsMaxLead-widget-button-default-text{display:none!important}.autoAdsMaxLead-widget-style1 .float-btn-group .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container{float:right}.autoAdsMaxLead-widget-style1 .float-btn-group .icon-bars{-webkit-transition:.3s;transition:.3s}.autoAdsMaxLead-widget-style1 .float-btn-group .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(8){-moz-transition:.1s .1s;-o-transition:.1s .1s;-webkit-transition:.1s;-webkit-transition-delay:.1s;-webkit-transition:.1s .1s;transition:.1s .1s}.autoAdsMaxLead-widget-style1 .float-btn-group .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(7){-moz-transition:.1s .15s;-o-transition:.1s .15s;-webkit-transition:.1s;-webkit-transition-delay:.15s;-webkit-transition:.1s .15s;transition:.1s .15s}.autoAdsMaxLead-widget-style1 .float-btn-group .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(6){-moz-transition:.1s .2s;-o-transition:.1s .2s;-webkit-transition:.1s;-webkit-transition-delay:.2s;-webkit-transition:.1s .2s;transition:.1s .2s}.autoAdsMaxLead-widget-style1 .float-btn-group .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(5){-moz-transition:.1s .3s;-o-transition:.1s .3s;-webkit-transition:.1s;-webkit-transition-delay:.3s;-webkit-transition:.1s .3s;transition:.1s .3s}.autoAdsMaxLead-widget-style1 .float-btn-group .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(4){-moz-transition:.1s .35s;-o-transition:.1s .35s;-webkit-transition:.1s;-webkit-transition-delay:.35s;-webkit-transition:.1s .35s;transition:.1s .35s}.autoAdsMaxLead-widget-style1 .float-btn-group .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(3){-moz-transition:.1s .4s;-o-transition:.1s .4s;-webkit-transition:.1s;-webkit-transition-delay:.4s;-webkit-transition:.1s .4s;transition:.1s .4s}.autoAdsMaxLead-widget-style1 .float-btn-group .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(2){-moz-transition:.1s .45s;-o-transition:.1s .45s;-webkit-transition:.1s;-webkit-transition-delay:.45s;-webkit-transition:.1s .45s;transition:.1s .45s}.autoAdsMaxLead-widget-style1 .float-btn-group .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(1){-moz-transition:.1s .5s;-o-transition:.1s .5s;-webkit-transition:.1s;-webkit-transition-delay:.5s;-webkit-transition:.1s .5s;transition:.1s .5s}.autoAdsMaxLead-widget-style1 .float-btn-group.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container{opacity:1}.autoAdsMaxLead-widget-style1 .float-btn-group.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(8){-moz-transition:.1s .5s;-o-transition:.1s .5s;-webkit-transition:.5s;-webkit-transition-delay:.5s;-webkit-transition:.1s .5s;transition:.1s .5s}.autoAdsMaxLead-widget-style1 .float-btn-group.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(7){-moz-transition:.1s .45s;-o-transition:.1s .45s;-webkit-transition:.45s;-webkit-transition-delay:.45s;-webkit-transition:.1s .45s;transition:.1s .45s}.autoAdsMaxLead-widget-style1 .float-btn-group.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(6){-moz-transition:.1s .4s;-o-transition:.1s .4s;-webkit-transition:.4s;-webkit-transition-delay:.4s;-webkit-transition:.1s .4s;transition:.1s .4s}.autoAdsMaxLead-widget-style1 .float-btn-group.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(5){-moz-transition:.1s .35s;-o-transition:.1s .35s;-webkit-transition:.35s;-webkit-transition-delay:.35s;-webkit-transition:.1s .35s;transition:.1s .35s}.autoAdsMaxLead-widget-style1 .float-btn-group.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(4){-moz-transition:.1s .3s;-o-transition:.1s .3s;-webkit-transition:.3s;-webkit-transition-delay:.3s;-webkit-transition:.1s .3s;transition:.1s .3s}.autoAdsMaxLead-widget-style1 .float-btn-group.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(3){-moz-transition:.1s .25s;-o-transition:.1s .25s;-webkit-transition:.25s;-webkit-transition-delay:.25s;-webkit-transition:.1s .25s;transition:.1s .25s}.autoAdsMaxLead-widget-style1 .float-btn-group.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(2){-moz-transition:.1s .2s;-o-transition:.1s .2s;-webkit-transition:.2s;-webkit-transition-delay:.2s;-webkit-transition:.1s .2s;transition:.1s .2s}.autoAdsMaxLead-widget-style1 .float-btn-group.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(1){-moz-transition:.1s .15s;-o-transition:.1s .15s;-webkit-transition:.15s;-webkit-transition-delay:.15s;-webkit-transition:.1s .15s;transition:.1s .15s}.autoAdsMaxLead-widget-style1 .float-btn-group.open .autoAdsMaxLead-widget-btn-float-container{width:380px}.autoAdsMaxLead-widget-style1 .float-btn-group .autoAdsMaxLead-widget-btn-float-container{width:50px}.autoAdsMaxLead-widget-style1 .float-btn-group .autoAdsMaxLead-widget-button-text{display:none}.autoAdsMaxLead-widget-style1 .float-btn-group .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container{position:absolute;top:0;opacity:0}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-top-left .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container{top:55px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-top-left.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(1){left:0;top:55px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-top-left.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(2){left:0;top:110px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-top-left.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(3){left:0;top:165px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-top-left.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(4){left:0;top:220px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-top-left.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(5){left:0;top:275px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-top-left.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(6){left:0;top:330px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-top-left.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(7){left:0;top:385px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-top-left.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(8){left:0;top:440px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-top-center .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container{top:55px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-top-center.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(1){left:0;top:55px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-top-center.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(2){left:0;top:110px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-top-center.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(3){left:0;top:165px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-top-center.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(4){left:0;top:220px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-top-center.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(5){left:0;top:275px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-top-center.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(6){left:0;top:330px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-top-center.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(7){left:0;top:385px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-top-center.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(8){left:0;top:440px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-top-right.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(1){right:0;top:55px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-top-right.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(2){right:0;top:110px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-top-right.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(3){right:0;top:165px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-top-right.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(4){right:0;top:220px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-top-right.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(5){right:0;top:275px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-top-right.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(6){right:0;top:330px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-top-right.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(7){right:0;top:385px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-top-right.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(8){right:0;top:440px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-middle-left .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container{top:-55px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-middle-left.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(8){left:0;top:-440px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-middle-left.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(7){left:0;top:-385px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-middle-left.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(6){left:0;top:-330px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-middle-left.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(5){left:0;top:-275px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-middle-left.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(4){left:0;top:-220px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-middle-left.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(3){left:0;top:-165px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-middle-left.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(2){left:0;top:-110px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-middle-left.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(1){left:0;top:-55px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-bottom-left .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container{top:-55px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-bottom-left.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(8){left:0;top:-440px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-bottom-left.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(7){left:0;top:-385px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-bottom-left.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(6){left:0;top:-330px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-bottom-left.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(5){left:0;top:-275px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-bottom-left.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(4){left:0;top:-220px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-bottom-left.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(3){left:0;top:-165px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-bottom-left.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(2){left:0;top:-110px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-bottom-left.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(1){left:0;top:-55px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-bottom-center .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container{top:-55px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-bottom-center.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(8){left:0;top:-440px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-bottom-center.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(7){left:0;top:-385px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-bottom-center.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(6){left:0;top:-330px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-bottom-center.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(5){left:0;top:-275px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-bottom-center.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(4){left:0;top:-220px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-bottom-center.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(3){left:0;top:-165px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-bottom-center.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(2){left:0;top:-110px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-bottom-center.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(1){left:0;top:-55px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-bottom-right.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(8){right:0;top:-440px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-bottom-right.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(7){right:0;top:-385px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-bottom-right.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(6){right:0;top:-330px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-bottom-right.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(5){right:0;top:-275px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-bottom-right.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(4){right:0;top:-220px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-bottom-right.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(3){right:0;top:-165px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-bottom-right.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(2){right:0;top:-110px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-bottom-right.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(1){right:0;top:-55px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-middle-right.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(8){right:0;top:-440px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-middle-right.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(7){right:0;top:-385px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-middle-right.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(6){right:0;top:-330px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-middle-right.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(5){right:0;top:-275px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-middle-right.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(4){right:0;top:-220px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-middle-right.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(3){right:0;top:-165px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-middle-right.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(2){right:0;top:-110px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-middle-right.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(1){right:0;top:-55px}#autoadsmaxlead_call_back_form{margin-bottom:10px}.autoAdsMaxLead-call-back{display:none;background-color:#f9f9f9;background-repeat:no-repeat;position:fixed;z-index:99800!important;width:200px;margin-right:0;min-height:90px!important;line-height:25px!important;border-radius:8px!important;padding:5px 10px 5px 10px;box-shadow:0 0 2px 0 rgba(0,0,0,.2),0 3px 5px 0 rgba(0,0,0,.1)}.autoAdsMaxLead-call-back .autoAdsMaxLead-widget-form-error-message{margin-bottom:-10px!important;margin-top:2px!important}.autoAdsMaxLead-call-back .autoAdsMaxLead-call-back-header{font-size:14px!important;font-weight:bold!important;color:#2173f3;text-align:center!important;padding-bottom:10px!important;padding-top:5px!important}.autoAdsMaxLead-call-back .autoAdsMaxLead-form-group{width:100%!important;position:relative!important;margin-bottom:15px!important;margin-top:5px!important}.autoAdsMaxLead-call-back .autoAdsMaxLead-form-label{position:absolute!important;color:#777!important;font-size:12px!important;top:-12px!important}.autoAdsMaxLead-call-back .autoAdsMaxLead-form-input{height:28px!important;margin-top:10px!important;border:1px solid #dedede!important;border-radius:4px!important;padding:4px 10px 4px 10px!important;color:#777!important;font-size:12px!important;background-color:#fff!important;font-size:12px!important;display:initial;margin-left:0!important;margin-right:0!important;margin-bottom:0!important}.autoAdsMaxLead-call-back .autoAdsMaxLead-call-back-tel{width:100%!important}.autoAdsMaxLead-call-back .autoAdsMaxLead-call-back-subject{width:100%!important}.autoAdsMaxLead-call-back .autoAdsMaxLead-form-container-btn{text-align:right!important;margin-top:15px}.autoAdsMaxLead-call-back .autoAdsMaxLead-form-btn{border:none!important;color:#fff!important;padding:3px 10px!important;cursor:pointer!important;border-radius:25px!important;font-size:12px!important;width:100%!important;outline:none!important;height:30px!important}#autoadsmaxlead_call_back_message_container{display:none}.autoAdsMaxLead-call-back,.autoAdsMaxLead-message-info{font-size:14px;color:#6c738d;text-align:center;margin-top:5px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-top-left .autoAdsMaxLead-call-back{top:290px;left:15px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-top-center .autoAdsMaxLead-call-back{left:50%;margin-left:-100px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-top-right .autoAdsMaxLead-call-back{top:290px;right:15px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-middle-left .autoAdsMaxLead-call-back{top:50%;margin-top:-100px;left:15px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-middle-right .autoAdsMaxLead-call-back{top:50%;margin-top:-100px;right:15px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-bottom-right .autoAdsMaxLead-call-back{bottom:290px;right:15px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-bottom-center .autoAdsMaxLead-call-back{left:50%;margin-left:-100px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-bottom-left .autoAdsMaxLead-call-back{bottom:290px;left:15px}@-webkit-keyframes at-ripple{0%{box-shadow:0 4px 10px rgba(102,102,102,.1),0 0 0 0 rgba(102,102,102,.1),0 0 0 5px rgba(102,102,102,.1),0 0 0 10px rgba(102,102,102,.1)}100%{box-shadow:0 4px 10px rgba(102,102,102,.1),0 0 0 5px rgba(102,102,102,.1),0 0 0 10px rgba(102,102,102,.1),0 0 0 20px rgba(102,102,102,0)}}@keyframes at-ripple{0%{box-shadow:0 4px 10px rgba(102,102,102,.1),0 0 0 0 rgba(102,102,102,.1),0 0 0 5px rgba(102,102,102,.1),0 0 0 10px rgba(102,102,102,.1)}100%{box-shadow:0 4px 10px rgba(102,102,102,.1),0 0 0 5px rgba(102,102,102,.1),0 0 0 10px rgba(102,102,102,.1),0 0 0 20px rgba(102,102,102,0)}}.autoAdsMaxLead-widget-button-text{overflow:hidden!important;text-overflow:ellipsis!important;white-space:nowrap!important;height:35px!important;line-height:25px!important;color:#fff!important;font-size:12px!important;text-align:center!important;padding:5px 10px!important;background:rgba(0,0,0,.5);border-radius:5px!important;margin-top:5px;min-width:68px;max-width:300px;opacity:1;display:none;letter-spacing:normal!important}.autoAdsMaxLead-widget-button-text:hover{cursor:pointer}@keyframes reveal{from{clip-path:inset(0 0 0 100%)}to{clip-path:inset(0 0 0 0)}}.autoAdsMaxLead-widget-btn-default:hover .autoAdsMaxLead-widget-button-text{display:block}.autoAdsMaxLead-widget-btn-float-container a:hover+.autoAdsMaxLead-widget-button-text{display:block}.autoAdsMaxLead-widget-button-top-right .autoAdsMaxLead-widget-btn-float,.autoAdsMaxLead-widget-button-bottom-right .autoAdsMaxLead-widget-btn-float,.autoAdsMaxLead-widget-button-middle-right .autoAdsMaxLead-widget-btn-float{float:right}.autoAdsMaxLead-widget-button-text-top-right,.autoAdsMaxLead-widget-button-text-style1-top-right,.autoAdsMaxLead-widget-button-text-bottom-right,.autoAdsMaxLead-widget-button-text-style1-bottom-right,.autoAdsMaxLead-widget-button-text-middle-right,.autoAdsMaxLead-widget-button-text-style1-middle-right{margin-right:10px;float:right}.autoAdsMaxLead-widget-button-text-top-right::after,.autoAdsMaxLead-widget-button-text-style1-top-right::after,.autoAdsMaxLead-widget-button-text-bottom-right::after,.autoAdsMaxLead-widget-button-text-style1-bottom-right::after,.autoAdsMaxLead-widget-button-text-middle-right::after,.autoAdsMaxLead-widget-button-text-style1-middle-right::after{content:""!important;width:0!important;height:0!important;right:47px!important;top:15px!important;position:absolute!important;border-top:7px solid transparent;border-bottom:7px solid transparent;border-left:7px solid rgba(0,0,0,.5)}.autoAdsMaxLead-widget-button-top-left .autoAdsMaxLead-widget-btn-float,.autoAdsMaxLead-widget-button-top-center .autoAdsMaxLead-widget-btn-float,.autoAdsMaxLead-widget-button-bottom-left .autoAdsMaxLead-widget-btn-float,.autoAdsMaxLead-widget-button-bottom-center .autoAdsMaxLead-widget-btn-float,.autoAdsMaxLead-widget-button-middle-left .autoAdsMaxLead-widget-btn-float{float:left}.autoAdsMaxLead-widget-button-text-top-left,.autoAdsMaxLead-widget-button-text-style1-top-left,.autoAdsMaxLead-widget-button-text-top-center,.autoAdsMaxLead-widget-button-text-style1-top-center,.autoAdsMaxLead-widget-button-text-bottom-left,.autoAdsMaxLead-widget-button-text-style1-bottom-left,.autoAdsMaxLead-widget-button-text-bottom-center,.autoAdsMaxLead-widget-button-text-style1-bottom-center,.autoAdsMaxLead-widget-button-text-middle-left,.autoAdsMaxLead-widget-button-text-style1-middle-left{margin-left:10px;float:left}.autoAdsMaxLead-widget-button-text-top-left::after,.autoAdsMaxLead-widget-button-text-style1-top-left::after,.autoAdsMaxLead-widget-button-text-top-center::after,.autoAdsMaxLead-widget-button-text-style1-top-center::after,.autoAdsMaxLead-widget-button-text-bottom-left::after,.autoAdsMaxLead-widget-button-text-style1-bottom-left::after,.autoAdsMaxLead-widget-button-text-bottom-center::after,.autoAdsMaxLead-widget-button-text-style1-bottom-center::after,.autoAdsMaxLead-widget-button-text-middle-left::after,.autoAdsMaxLead-widget-button-text-style1-middle-left::after{content:""!important;width:0!important;height:0!important;left:47px!important;top:16px!important;position:absolute!important;border-top:7px solid transparent!important;border-bottom:7px solid transparent!important;border-right:7px solid rgba(0,0,0,.5)!important}.powered_by_autoAdsMaxLead{min-width:110px;max-width:150px;padding:4px;background:rgba(0,0,0,.5);border-radius:5px!important;display:none;color:#fff;position:absolute;text-align:center;white-space:nowrap;cursor:pointer;height:20px;line-height:12px;font-size:11px}.powered_by_autoAdsMaxLead span.autoAdsMaxLead_powered_by_text{font-size:7px!important}.powered_by_autoAdsMaxLead span.autoadsmaxlead_widget_name{font-size:11px!important}div.autoAdsMaxLead-widget-click-to-call-popup-container,div.autoAdsMaxLead-widget-line-popup-container,div.autoAdsMaxLead-widget-facebook-popup-container,div.autoAdsMaxLead-widget-zalo-popup-container,div.autoAdsMaxLead-widget-tawk-to-popup-container,div.autoAdsMaxLead-widget-allow-notification-permission-popup-container,div.autoAdsMaxLead-widget-contact-code-popup-container{opacity:0;position:fixed;top:100px;left:100px;width:366px;min-height:50px;z-index:99910;border-radius:5px;background:#f5f6fa;padding:26px 15px 15px 15px;box-shadow:0 0 20px 0 rgba(0,0,0,.2),0 5px 5px 0 rgba(0,0,0,.24);-moz-transition:opacity .5s ease-in-out;-o-transition:opacity .5s ease-in-out;-webkit-transition:opacity .5s ease-in-out;transition:opacity .5s ease-in-out;box-sizing:content-box;letter-spacing:normal!important}div.autoAdsMaxLead-widget-google-map-popup-container{position:fixed;top:100px;left:100px;min-height:50px;z-index:99999;border-radius:12px;background:#fff;box-shadow:0 0 20px 0 rgba(0,0,0,.2),0 5px 5px 0 rgba(0,0,0,.24);-moz-transition:opacity .5s ease-in-out;-o-transition:opacity .5s ease-in-out;-webkit-transition:opacity .5s ease-in-out;transition:opacity .5s ease-in-out;box-sizing:content-box;letter-spacing:normal!important}div.autoAdsMaxLead-widget-facebook-popup-container{background:none!important;border:0!important;box-shadow:none!important}div.autoAdsMaxLead-widget-tawk-to-popup-container{padding:0!important;z-index:2147483647!important}div.autoAdsMaxLead-widget-tawk-to-popup-container .autoAdsMaxLead-widget-icon-close{background:url(../../../plugins/Simple-Contact/assets/css/images/icon_close.png)!important}div.autoAdsMaxLead-widget-click-to-call-popup-container.hide,div.autoAdsMaxLead-widget-download-doc-popup-container.hide,div.autoAdsMaxLead-widget-facebook-popup-container.hide,div.autoAdsMaxLead-widget-line-popup-container.hide,div.autoAdsMaxLead-widget-zalo-popup-container.hide,div.autoAdsMaxLead-widget-tawk-to-popup-container.hide,div.autoAdsMaxLead-widget-allow-notification-permission-popup-container.hide,div.autoAdsMaxLead-widget-contact-code-popup-container.hide{top:-3000px!important}div.autoAdsMaxLead-widget-google-map-popup-container.hide{display:none!important}div.autoAdsMaxLead-widget-click-to-call-popup-container.open,div.autoAdsMaxLead-widget-download-doc-popup-container.open,div.autoAdsMaxLead-widget-line-popup-container.open,div.autoAdsMaxLead-widget-facebook-popup-container.open,div.autoAdsMaxLead-widget-zalo-popup-container.open,div.autoAdsMaxLead-widget-google-map-popup-container.open,div.autoAdsMaxLead-widget-tawk-to-popup-container.open,div.autoAdsMaxLead-widget-allow-notification-permission-popup-container.open,div.autoAdsMaxLead-widget-contact-code-popup-container.open{opacity:1!important}div.autoAdsMaxLead-widget-contact-popup-header,div.autoAdsMaxLead-widget-click-to-call-popup-header,div.autoAdsMaxLead-widget-download-doc-popup-header,div.autoAdsMaxLead-widget-line-popup-header,div.autoAdsMaxLead-widget-facebook-popup-header,div.autoAdsMaxLead-widget-google-map-popup-header,div.autoAdsMaxLead-widget-tawk-to-popup-header,div.autoAdsMaxLead-widget-allow-notification-permission-popup-header,div.autoAdsMaxLead-widget-contact-code-popup-header{text-align:center;font-weight:700;color:#1d243e;font-size:20px;min-height:22px!important}div.autoAdsMaxLead-widget-contact-popup-sub-header,div.autoAdsMaxLead-widget-click-to-call-popup-sub-header,div.autoAdsMaxLead-widget-download-doc-sub-header,div.autoAdsMaxLead-widget-line-popup-sub-header,div.autoAdsMaxLead-widget-facebook-popup-sub-header,div.autoAdsMaxLead-widget-tawk-to-popup-sub-header,div.autoAdsMaxLead-widget-allow-notification-permission-popup-sub-header,div.autoAdsMaxLead-widget-contact-code-popup-sub-header{text-align:center;color:#1d243e;font-size:14px;margin:5px 0 15px}div.autoAdsMaxLead-widget-contact-popup-body,div.autoAdsMaxLead-widget-click-to-call-popup-body,div.autoAdsMaxLead-widget-download-doc-popup-body,div.autoAdsMaxLead-widget-line-popup-body,div.autoAdsMaxLead-widget-facebook-popup-body,div.autoAdsMaxLead-widget-tawk-to-popup-body,div.autoAdsMaxLead-widget-allow-notification-permission-popup-body,div.autoAdsMaxLead-widget-contact-code-popup-body{min-height:50px;height:auto}div.autoAdsMaxLead-widget-contact-popup-footer,div.autoAdsMaxLead-widget-click-to-call-popup-footer,div.autoAdsMaxLead-widget-line-popup-footer,div.autoAdsMaxLead-widget-facebook-popup-footer,div.autoAdsMaxLead-widget-tawk-to-popup-footer,div.autoAdsMaxLead-widget-allow-notification-permission-popup-footer,div.autoAdsMaxLead-widget-contact-code-popup-footer{min-height:50px;height:auto}div.autoAdsMaxLead-widget-allow-notification-permission-popup-body{text-align:center!important;color:#555!important}div.autoAdsMaxLead-widget-contact-code-popup-body{text-align:center!important;font-size:35px!important;color:#555!important;text-decoration:none}div.autoAdsMaxLead-widget-desktop-contact-code-container{padding:10px;box-sizing:border-box!important;text-align:center!important;color:#efefef;width:200px!important;height:180px!important;position:fixed!important;z-index:999999;-moz-transition:.1s .15s;-o-transition:.1s .15s;-webkit-transition:.15s;-webkit-transition-delay:.15s;-webkit-transition:.1s .15s;transition:.1s .15s}div.autoAdsMaxLead-widget-desktop-contact-code-container.hide{top:-3000px!important}div.autoAdsMaxLead-widget-desktop-contact-code-container.open{opacity:1!important}div.autoAdsMaxLead-widget-desktop-contact-code-header{font-size:20px!important;color:#efefef!important}div.autoAdsMaxLead-widget-desktop-contact-code-body{font-size:60px!important;padding-top:5px!important;color:#fff!important}div.autoAdsMaxLead-widget-desktop-contact-code-footer{font-size:12px!important;color:#efefef!important;padding-top:15px!important}span.autoAdsMaxLead-widget-form-red-star{color:#f00!important;position:relative!important;top:3px!important;padding-left:5px!important}.autoAdsMaxLead-widget-form-error-message{font-size:13px!important;font-style:italic!important;color:#f00!important;display:none}.autoAdsMaxLead-form-submit{background-color:#2173f3;min-width:100px!important;min-height:40px!important;color:#fff!important;margin:10px 0 0 0!important;font-weight:bold!important;-webkit-border-radius:4px!important;-moz-border-radius:4px!important;border-radius:4px!important;border:none!important;cursor:pointer!important;width:100%!important;font-size:16px!important;outline:none!important;-webkit-appearance:none!important}.autoAdsMaxLead-form-btn-close{cursor:pointer!important;-webkit-appearance:none!important}.autoAdsMaxLead-form-btn-action{min-width:100px!important;min-height:40px!important;color:#fff!important;margin-right:10px!important;margin-top:10px!important;font-weight:bold!important;-webkit-border-radius:100px!important;-moz-border-radius:100px!important;border-radius:100px!important;border:none!important;cursor:pointer!important;width:100%!important;font-size:16px!important;outline:none!important;-webkit-appearance:none!important}a.autoAdsMaxLead-form-btn-action{display:block!important;text-align:center!important;line-height:40px!important;text-decoration:none!important}a.autoAdsMaxLead-form-btn-block-notification{margin:0!important;float:left!important;width:48%!important;background-color:#ddd!important;color:#666!important}a.autoAdsMaxLead-form-btn-allow-notification{margin:0!important;float:right!important;width:48%!important}.autoAdsMaxLead-widget-form-label{width:100%!important;color:#999!important;font-size:14px!important;display:block!important;text-align:left!important;outline:none!important;display:none!important}.autoAdsMaxLead-widget-form-error-container{height:auto!important}.autoAdsMaxLead-widget-form-input{padding:23px 5px!important;line-height:22px!important;width:100%!important;margin:10px 0 0 0!important;border:1px solid #d8dde6!important;font-size:14px!important;color:#1d243e!important;background:#fff!important;outline:none!important;border-radius:4px!important;-webkit-box-shadow:none!important;-moz-box-shadow:none!important;box-shadow:none!important;height:30px!important;min-height:30px!important;max-width:none!important;-webkit-box-sizing:border-box!important;-moz-box-sizing:border-box!important;box-sizing:border-box!important}.autoAdsMaxLead-widget-form-textarea{padding:12px 5px!important;line-height:22px!important;width:100%!important;margin:10px 0 0 0!important;resize:none!important;height:96px!important;min-height:60px!important;border:1px solid #d8dde6!important;font-size:14px!important;color:#1d243e!important;background:#fff!important;outline:none!important;border-radius:4px!important;-webkit-box-shadow:none!important;-moz-box-shadow:none!important;box-shadow:none!important;-webkit-box-sizing:border-box!important;-moz-box-sizing:border-box!important;box-sizing:border-box!important}input.autoAdsMaxLead-widget-form-input::placeholder,textarea.autoAdsMaxLead-widget-form-textarea::placeholder{color:#929aae!important}.autoAdsMaxLead-widget-form-file-upload{position:relative!important}.autoAdsMaxLead-widget-form-file-upload span{font-size:14px!important;color:#1d243e;-webkit-border-radius:100px!important;-moz-border-radius:100px!important;cursor:pointer!important;background:#f5f6fa url(../../../plugins/Simple-Contact/assets/css/images/widget_icon_upload.png) no-repeat right center;padding-right:22px}.autoAdsMaxLead-widget-form-file-select{display:inline-block;overflow:hidden!important;text-overflow:ellipsis!important;white-space:nowrap!important;padding-top:0!important;padding-bottom:0!important;margin-bottom:0!important}.autoAdsMaxLead-widget-form-file-select-display{max-width:calc(100% - 25px)!important;display:inline-block;overflow:hidden!important;text-overflow:ellipsis!important;white-space:nowrap!important;padding-top:0!important;padding-bottom:0!important;margin-bottom:0!important}.autoAdsMaxLead-widget-form-file{width:100%!important;position:absolute!important;top:0!important;right:0!important;margin:0!important;padding:0!important;cursor:pointer!important;opacity:0!important}.autoAdsMaxLead-widget-form-input:focus,.autoAdsMaxLead-widget-form-textarea:focus{outline-width:0!important;border-bottom:2px solid #2173f3!important}#autoadsmaxlead_contact_form{margin:0!important;margin-top:0!important;margin-bottom:0!important;margin-left:0!important;margin-right:0!important;padding:0!important;overflow:hidden}#autoadsmaxlead_message_info,#autoadsmaxlead_thank_you,#autoadsmaxlead_show_loading{display:none}div.autoAdsMaxLead-widget-contact-popup-header{color:#1d243e!important}div.autoAdsMaxLead-widget-contact-popup-footer .autoAdsMaxLead-form-submit{-webkit-appearance:none!important;-webkit-box-shadow:none!important;-moz-box-shadow:none!important;box-shadow:none!important;padding:0!important;text-align:center!important}div.autoAdsMaxLead-widget-click-to-call-popup-header{color:#1d243e!important}.auto-ads-ml-popup-container{opacity:0;position:fixed;width:608px;padding:64px 40px;z-index:99990;border-radius:4px;background:#fff;box-shadow:0 4px 6px rgba(0,0,0,.2);-moz-transition:opacity .5s ease-in-out;-o-transition:opacity .5s ease-in-out;-webkit-transition:opacity .5s ease-in-out;transition:opacity .5s ease-in-out;box-sizing:content-box;letter-spacing:normal!important;color:#1d243e!important}.auto-ads-ml-popup-container.open{opacity:1!important}.auto-ads-ml-popup-container.hide{top:-3000px!important}.auto-ads-ml-col{display:inline-block!important;float:left!important}.auto-ads-ml-text-center{text-align:center!important}.auto-ads-ml-text-title{font-weight:bold!important;font-size:24px!important;line-height:31px!important;color:#1d243e!important}.auto-ads-ml-text-content{font-size:14px!important;line-height:18px!important;color:#1d243e!important}.auto-ads-ml-mobile .auto-ads-ml-text-title{font-size:16px!important;line-height:21px!important}.auto-ads-ml-mobile.auto-ads-ml-template-picture .auto-ads-ml-text-title{margin-top:24px!important}.auto-ads-ml-mobile .auto-ads-ml-text-content{font-size:10px!important;line-height:13px!important}.auto-ads-ml-pdt-8{padding-top:8px!important}.auto-ads-ml-pdb-8{padding-bottom:8px!important}.auto-ads-ml-pdt-16{padding-top:16px!important}.auto-ads-ml-pdb-16{padding-bottom:16px!important}#autoAdsMaxLead_widget_inform_popup{width:370px!important;padding:40px 30px!important}@media only screen and (min-device-width:360px) and (max-device-width:780px){#autoAdsMaxLead_widget_inform_popup{width:314px!important;padding:32px!important}}.auto-ads-ml-text-title-inform{font-style:normal!important;font-weight:bold!important;font-size:20px!important;line-height:26px!important;padding-bottom:8px!important}.auto-ads-ml-text-content-tks{font-style:normal!important;font-weight:normal!important;font-size:14px!important;line-height:18px!important;padding-bottom:16px!important}.auto-ads-ml-text-content-inform{color:#aeb4c5!important;font-size:12px!important;line-height:16px!important;font-style:normal!important;font-weight:normal!important}.auto-ads-ml-desktop .auto-ads-ml-dd-img{width:180px!important;height:240px}.auto-ads-ml-desktop .auto-ads-ml-dd-img img{width:100%;height:100%}.auto-ads-ml-mobile .auto-ads-ml-dd-img,.auto-ads-ml-mobile .auto-ads-ml-dd-content{width:100%!important;text-align:center!important}.auto-ads-ml-mobile .auto-ads-ml-dd-img img{width:120px;height:160px}.auto-ads-ml-desktop.auto-ads-ml-template-picture .auto-ads-ml-dd-content{width:380px!important;margin:26px 0 0 48px}.auto-ads-ml-desktop .auto-ads-ml-text-content{margin:8px 0 32px 0}.auto-ads-ml-mobile .auto-ads-ml-text-content{margin:6px 0 16px 0}.auto-ads-ml-desktop.auto-ads-ml-template-content{width:430px!important;padding:64px!important}.auto-ads-ml-mobile.auto-ads-ml-popup-container{width:288px!important;padding:24px!important}.auto-ads-ml-desktop.auto-ads-ml-template-content .auto-ads-ml-dd-content{width:100%!important}.auto-ads-ml-desktop.auto-ads-ml-template-content{text-align:center!important}div.autoAdsMaxLead-widget-popup-group{height:48px!important;background:#fff!important;border:1px solid #d8dde6!important;box-sizing:border-box!important;border-radius:4px!important;margin:16px 0!important}div.autoAdsMaxLead-widget-popup-group input[type="text"]{width:50%!important;margin:11px 0 11px 9px!important;padding:0 24px 0 0!important;border:0!important;outline:none!important;height:24px!important;line-height:24px!important;box-shadow:unset!important;display:inline-block!important;color:#1d243e!important;font-size:14px!important}div.autoAdsMaxLead-widget-popup-group input[type="text"]:focus{box-shadow:unset!important}.autoAdsMaxLead-widget-popup-group input[type="text"]:focus{background-color:#fff!important}.autoAdsMaxLead-widget-popup-group input[type="text"]::placeholder{color:#929aae!important}div.autoAdsMaxLead-widget-popup-group input[type="button"],div.autoAdsMaxLead-widget-popup-group button{float:right!important;width:40%!important;height:40px!important;border-radius:4px!important;border:0!important;margin:3px!important;padding:0!important;color:#fff!important;text-transform:unset!important;line-height:unset!important;text-align:center!important;font-size:14px!important;cursor:pointer}.auto-ads-ml-dd-content .autoAdsMaxLead-widget-popup-group{margin-bottom:0!important}.auto-ads-ml-desktop .autoAdsMaxLead-widget-popup-group img{vertical-align:bottom!important}.aml-modal{display:none;position:fixed;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:#000;background-color:rgba(0,0,0,.4)}.aml_dk-desktop .aml-trans-text{color:#6c738d!important;margin:4px 0 12px 0!important;font-size:14px!important}.aml_dk-desktop .aml-modal-header{position:relative;left:calc(100% - 34.41px)!important;top:21.41px!important;height:40px!important;width:40px!important;margin:0!important}.aml_dk-desktop .aml-close{position:absolute;left:-10px!important;top:-15px!important;width:100%!important;height:100%!important;background:url(../../../plugins/Simple-Contact/assets/css/images/widget_icon_click_close.svg) no-repeat center center}.aml_dk-desktop .aml-close:hover{cursor:pointer}.aml_dk-desktop .aml-modal-content{position:absolute;width:570px!important;height:auto!important;background-color:#fff!important;border:1px solid rgba(0,0,0,.2)!important;border-radius:8px!important;box-shadow:0 4px 8px 0 rgba(0,0,0,.2),0 6px 20px 0 rgba(0,0,0,.19)!important;-webkit-animation-name:aml-ease-in-out;-webkit-animation-duration:.5s;animation-name:aml-ease-in-out;animation-duration:.5s;top:50%;left:50%;transform:translate(-50%,-50%)}@-webkit-keyframes aml-ease-in-out{from{opacity:0}to{opacity:1}}@keyframes aml-ease-in-out{from{opacity:0}to{opacity:1}}.aml_dk-desktop .aml-modal-body{position:relative}.aml_dk-desktop .aml-head-body{padding:0 32px 0 32px!important}.aml_dk-desktop .aml-modal-title{margin-bottom:0!important;color:#1d243e!important;font-weight:bold!important;line-height:24px!important;font-size:16px!important}.aml_dk-desktop .aml-input-phone{position:relative;width:100%!important;height:48px!important;background:#fff!important;border:1px solid #d8dde6!important;box-sizing:border-box!important;border-radius:4px!important;margin-top:24px!important;display:flex!important;padding:0!important;align-items:center!important}.aml_dk-desktop .aml-input-icon{background:transparent;position:relative;float:left!important;margin:0 10px 0 20px!important}.aml_dk-desktop .aml-input-field{border:none!important;width:calc(85% - 150px)!important;height:19px!important;font-style:normal!important;font-weight:normal!important;font-size:14px!important;line-height:18px!important;letter-spacing:.01em!important;margin:0!important}.aml_dk-desktop .aml-input-field:focus{outline:0}.aml_dk-desktop ::placeholder{color:#aeb4c5!important}#autoAdsMaxLead_widget_form_CallbackPhone_label{margin-left:32px;margin-top:8px}.aml_dk-desktop .aml-btn-require-callback{position:absolute!important;right:0!important;top:0!important;min-width:150px!important;align-items:center!important;height:40px!important;border-radius:4px!important;margin:3px!important;border:none!important;order:2!important;color:#fff!important;padding:0 16px 0 16px!important;font-size:14px!important;font-weight:normal!important;text-transform:none!important}.aml_dk-desktop .aml-btn-require-callback:hover{cursor:pointer}.aml_dk-desktop .aml-list-phone{background:#f5f6fa!important;border-radius:0 0 8px 8px!important;margin-top:32px!important;padding:12px 32px 32px 32px!important}.aml_dk-desktop .aml-scroll-list-phone{padding-right:5px!important;max-height:240px!important;overflow-y:auto!important}.aml_dk-desktop .aml-phone-info{width:100%!important;height:40px!important;background:#fdfdfd!important;border-radius:8px!important;margin-top:8px!important;display:flex!important;align-items:center!important;line-height:24px!important}.aml_dk-desktop .aml-phone-info:first-child{margin-top:0!important}.aml_dk-desktop .aml-region{color:#6c738d!important;max-width:55%!important;font-size:14px!important}.aml_dk-desktop .aml-phone-number{color:#1d243e!important;font-size:14px!important;margin-left:5px!important}.aml_dk-desktop .aml-blue-call-icon{position:relative!important;top:-8%!important;left:21%!important;width:13px!important;height:13px!important}.aml_dk-desktop .aml-blue-call{width:24px!important;height:24px!important;border-radius:50%!important;background:#fff!important;margin:0 16px 0 24px!important;border:1px solid #fff!important;box-sizing:border-box!important;box-shadow:0 0 10px rgba(29,36,62,.08)!important}.aml_dk-desktop ::-webkit-scrollbar{width:8px}.aml_dk-desktop ::-webkit-scrollbar-track{background-color:#f5f6fa}.aml_dk-desktop ::-webkit-scrollbar-thumb{border-radius:4px;background-color:#d8dde6}.aml_dk-desktop .aml-desktop-devider{text-align:center}.aml_dk-desktop .aml-desktop-devider-bar{width:130px;height:4px!important;border-top:1px solid #e9ebf1!important;display:inline-block!important}.aml_dk-desktop .aml-desktop-devider-text{font-size:12px!important;line-height:16px!important;padding-left:10px!important;padding-right:10px!important;color:#d8dde6!important}.aml_dk-desktop .aml-modal-content.aml-modal-content-one-phone{width:482px!important}.aml-modal-title-desktop-one-phone{padding:0 52px!important}.aml-bold-phone-number{font-size:32px!important;line-height:48px!important;font-weight:bold!important;text-align:center!important;margin-top:4px!important;color:#1d243e!important}.aml_dk-desktop .aml-bold-contact-title{line-height:24px!important;font-size:16px!important;font-weight:bold!important;text-align:center!important;margin-top:16px!important;color:#1d243e!important}.aml_dk-desktop .aml-package-free .aml-bold-contact-title{margin-top:0!important}.aml_dk-desktop .aml-package-free .aml-one-number-content{padding-top:0!important}.aml_dk-desktop .aml-contact-name{font-size:14px!important}.aml-contact-name{line-height:24px!important;margin-top:4px!important;color:#6c738d!important;text-align:center!important}.aml-modal.aml_dk-mobile{z-index:9999999990}.aml_dk-mobile .aml-close{border:none!important;width:14px!important;height:14px!important;background:url(../../../plugins/Simple-Contact/assets/css/images/widget_icon_click_close.svg) no-repeat center center;background-color:transparent;position:absolute;top:18px!important;right:18px!important;margin-bottom:0!important;margin-left:5px!important}.aml_dk-mobile .aml-modal-content{position:absolute;width:calc(100% - 16px)!important;height:auto!important;left:8px!important;background:#fff!important;border-radius:8px!important;-webkit-animation-name:animatetop;-webkit-animation-duration:.4s;animation-name:aml-animatebottom;animation-duration:.4s;bottom:8px}.aml_dk-mobile .aml-modal-content.horizontal{max-height:calc(100% - 60px)!important}@-webkit-keyframes aml-animatebottom{from{margin-top:100%;opacity:0}to{margin-top:0%;opacity:1}}@keyframes aml-animatebottom{from{margin-top:100%;opacity:0}to{margin-top:0%;opacity:1}}.aml_dk-mobile .aml-list-head{display:flex;align-items:center!important;height:48px!important;background:#efefef!important;border:1px solid #fff!important;border-bottom:none!important;border-radius:8px 8px 0 0!important}.aml_dk-mobile .aml-list-head h4{margin:12px 0 12px 16px!important;font-size:16px!important;font-weight:bold!important;max-width:calc(100% - 60px)!important;line-height:24px!important;color:#6c738d!important;line-height:115%!important}.aml_dk-mobile .aml-modal-body{max-height:80vh;overflow-y:auto!important;background-color:#f9f9f9!important;border-radius:0 0 8px 8px!important}.aml_dk-mobile .aml-phone-info-detail{display:flex!important;align-items:center!important;padding:0 16px 0 16px!important;width:100%!important;height:100%!important}.aml_dk-mobile .aml-phone-info-detail.horizontal{border-right:1px solid #fff!important;border-left:1px solid #d8dde6!important}.aml_dk-mobile .aml-phone-info-detail.left{border-left:1px solid #fff!important}.aml_dk-mobile .aml-phone-info-detail.last{border-right:none!important}.aml_dk-mobile .aml-modal-body.horizontal{max-height:calc(100vh - 116px)!important;overflow-y:auto!important;display:flex!important;flex-wrap:wrap!important}.aml_dk-mobile .aml-phone-info{padding:8px 0 8px 0!important;display:flex!important;align-items:center!important;background:#f9f9f9!important;border-bottom:1px solid #d8dde6!important;border-top:1px solid #fff!important}.aml_dk-mobile .aml-phone-info.last{border-radius:0 0 8px 8px!important;border-bottom:none!important}.aml_dk-mobile .aml-phone-info.horizontal{width:50%!important}.aml_dk-mobile .aml-phone-info-left{position:relative!important;float:left!important;width:80%!important}.aml_dk-mobile .aml-phone-info p{font-weight:bold!important;font-size:16px!important;margin-bottom:8px!important;line-height:21px!important;color:#1d243e!important}.aml_dk-mobile .aml-phone-info span{margin-right:9px!important;font-style:normal!important;font-weight:normal!important;font-size:13px!important;line-height:20px!important;color:#6c738d!important}.aml_dk-mobile .aml-phone-info-left img{width:13.29px!important;height:13.25px!important}.aml_dk-mobile .aml-phone-info-right{position:relative!important;margin-left:calc(20% - 40px)!important}.aml_dk-mobile .aml-blue-call-icon{position:relative!important}.aml_dk-mobile .aml-blue-call{width:40px!important;height:40px!important;border-radius:50%!important;background:#fff!important;box-shadow:0 9px 20px rgba(0,0,0,.05)!important;display:flex!important;justify-content:center!important}.aml_dk-mobile .aml-separate{width:100%!important;height:0!important;border-top:1px solid #d8dde6!important;border-bottom:1px solid #fff!important}.autoAdsMaxLead_fixed_center{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);-webkit-transform:translate(-50%,-50%)}.autoAdsMaxLead_fixed_center.autoAdsMaxLead_fixed_top_0{top:0;transform:translate(-50%,0);-webkit-transform:translate(-50%,0)}.autoAdsMaxLead_fixed_top6px{top:6px;transform:translate(-50%,0);-webkit-transform:translate(-50%,0)}#autoAdsMaxLead_widget_click_to_call_popup .autoAdsMaxLead-widget-popup-group input[type="button"]{background:#00b151!important;width:118px!important}#autoAdsMaxLead_widget_click_to_call_popup.aml_dk-mobile{width:100%;border-radius:8px;padding:8px}#autoAdsMaxLead_widget_click_to_call_popup #iframe-call-old{width:100%;height:100%;border-radius:8px}#autoAdsMaxLead_widget_download_doc_popup .autoAdsMaxLead-widget-popup-group button{background-color:#474fff!important}.auto-ads-ml-desktop .autoAdsMaxLead-widget-popup-group button{width:166px!important}.auto-ads-ml-template-picture.auto-ads-ml-mobile .autoAdsMaxLead-widget-popup-group button{width:99px!important;font-size:14px!important}.auto-ads-ml-click-to-call-content{font-weight:bold!important;font-size:14px!important;line-height:18px!important;text-align:center!important;color:#1d243e!important}.auto-ads-ml-click-to-call-phone{font-weight:bold!important;font-size:20px!important;line-height:26px!important;color:#1d243e!important;text-decoration:none!important}a.auto-ads-ml-click-to-call-phone:hover{text-decoration:none!important}div.autoAdsMaxLead-widget-click-to-call-popup-divider{border-bottom:1px solid #e9ebf1!important;height:15px!important;opacity:.74!important}div.autoAdsMaxLead-widget-click-to-call-popup-divider span{font-size:12px!important;font-weight:normal!important;line-height:16px!important;padding-left:10px!important;background:#fff!important;color:#d8dde6!important}div.autoAdsMaxLead-widget-click-to-call-popup-sub-header{margin-top:10px!important}div.autoAdsMaxLead-widget-click-to-call-popup-body{text-align:center!important;margin-top:5px;min-height:50px;height:auto}div.autoAdsMaxLead-widget-click-to-call-popup-footer .autoAdsMaxLead-form-btn-action{background:#ff9c00!important;-webkit-appearance:none!important}div.autoAdsMaxLead-widget-click-to-call-popup-body a.autoAdsMaxLead-widget-display-phone-number{font-size:32px!important;color:#1d243e!important;text-decoration:none}.aml-line-clamp-2{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}.aml-line-clamp-1{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1;overflow:hidden}.autoAdsMaxLead-widget-display-qr-code canvas{border:1px solid #ddd!important}.autoAdsMaxLead-widget-display-url{text-align:center;color:#777;font-size:14px;margin:10px 0 0}div.autoAdsMaxLead-widget-line-popup-header{color:#00b800!important}div.autoAdsMaxLead-widget-line-popup-body{text-align:center!important;margin:30px 0 15px;min-height:50px;height:auto}div.autoAdsMaxLead-widget-line-popup-footer .autoAdsMaxLead-form-btn-action{background:#00b800!important;-webkit-appearance:none!important}div.autoAdsMaxLead-widget-facebook-popup-header{color:#2173f3!important}div.autoAdsMaxLead-widget-facebook-popup-body{text-align:center!important;min-height:50px;height:auto}div.autoAdsMaxLead-widget-facebook-popup-footer .autoAdsMaxLead-form-btn-action{background:#2173f3!important;-webkit-appearance:none!important}div.autoAdsMaxLead-widget-google-map-popup-header{color:#1d243e!important}.autoAdsMaxLead-widget-form-error{color:#f00!important}label.autoAdsMaxLead-widget-form-error,div.autoAdsMaxLead-widget-form-error{display:block!important}.autoAdsMaxLead-widget-form-input.autoAdsMaxLead-widget-form-error,.autoAdsMaxLead-widget-form-file-upload.autoAdsMaxLead-widget-form-error{border-bottom:2px solid #f00!important}.autoAdsMaxLead-widget-form-label.autoAdsMaxLead-widget-form-error .autoAdsMaxLead-widget-form-error-message{display:block!important}.autoAdsMaxLead-widget-form-file-upload span.autoAdsMaxLead-widget-form-file-select-display:before{display:inline-block!important;content:"×"!important;width:15px!important;font-size:14px!important}.autoAdsMaxLead-widget-form-file-upload span.autoAdsMaxLead-widget-form-file-select-display{max-width:calc(100% - 25px)!important;display:inline-block;overflow:hidden!important;text-overflow:ellipsis!important;white-space:nowrap!important;padding-top:0!important;padding-bottom:0!important;margin-bottom:0!important}div.autoAdsMaxLead-widget div{overflow:visible!important}#autoadsmaxlead_widget_google_map_popup,#autoadsmaxlead_widget_facebook_popup{-webkit-box-sizing:initial!important;-moz-box-sizing:initial!important;box-sizing:initial!important}.autoAdsMaxLead-call-back-footer{position:relative}.autoAdsMaxLead-call-back-container-category{width:70%;float:left}.autoAdsMaxLead-call-back-container-category .dropdown-caterory{width:100%}.autoAdsMaxLead-call-back-container-btn{width:30%;float:left}#autoadsmaxlead_widget_form_input_email_label{clear:both!important}.autoAdsMaxLead-widget .autoAdsMaxLead-widget-btn-list div:before,.autoAdsMaxLead-widget .autoAdsMaxLead-widget-btn-list div:after{display:unset!important}.autoAdsMaxLead-widget-btn-pulse::before{content:'';background-color:inherit;width:55px;height:55px;-webkit-border-radius:50px!important;-moz-border-radius:50px!important;border-radius:50px!important;position:absolute;left:-5px;top:-5px;z-index:-1;-webkit-transform:scale(1.5);-ms-transform:scale(1.5);transform:scale(1.5);-webkit-animation:autoAdsMaxLead-widget-animation-pulse 2s infinite;animation:autoAdsMaxLead-widget-animation-pulse 2s infinite}.autoAdsMaxLead-widget-btn-pulse::after{content:'';background-color:inherit;width:55px;height:55px;-webkit-border-radius:50px!important;-moz-border-radius:50px!important;border-radius:50px!important;position:absolute;left:-5px;top:-5px;z-index:-1;-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0);-webkit-animation:autoAdsMaxLead-widget-animation-pulse 2s infinite;animation:autoAdsMaxLead-widget-animation-pulse 2s infinite;-webkit-animation-delay:.5s;animation-delay:.5s}.autoAdsMaxLead-minimize-wrapper{position:absolute;width:60px;height:35px;left:calc(100% - 72px);opacity:.2;top:13px;cursor:pointer}@-webkit-keyframes autoAdsMaxLead-widget-animation-pulse{0%{-webkit-transform:scale(0);transform:scale(0);opacity:1}50%{opacity:.5}100%{-webkit-transform:scale(1.5);transform:scale(1.5);opacity:0}}@keyframes autoAdsMaxLead-widget-animation-pulse{0%{-webkit-transform:scale(0);transform:scale(0);opacity:1}50%{opacity:.5}100%{-webkit-transform:scale(1.5);transform:scale(1.5);opacity:0}}.autoAdsMaxLead-minimize-facebook-wrapper{position:fixed;right:13px;bottom:202px;width:50px;height:50px;border-radius:50%;cursor:pointer;z-index:999998!important;background-image:url(../../../plugins/Simple-Contact/assets/css/images/fb_icon_close.png)!important;background-repeat:no-repeat;background-position:center;display:none}#autoAdsMaxLead-widget-btn-click_to_call .tooltip{text-overflow:ellipsis!important;white-space:nowrap!important;height:35px!important;line-height:25px!important;color:#fff!important;font-size:12px!important;text-align:center!important;padding:5px!important;background:rgba(0,0,0,.5);border-radius:5px!important;opacity:1;top:-45px;position:absolute;display:block!important}#autoAdsMaxLead-widget-btn-click_to_call .tooltip::after{content:""!important;width:0;height:0;bottom:-9px;right:39px;position:absolute;border-left:9px solid transparent;border-right:9px solid transparent}.autoAdsMaxLead-widget-btn-list .active-icon{background-color:#d8dde6!important}.customer-popup-location{min-width:90px}.max-widget-mobile{border:0 none!important;padding:0!important;z-index:9999999981;overflow:visible!important;min-width:0!important;min-height:0!important;max-width:none!important;max-height:none!important;width:auto!important;height:auto!important;position:fixed!important;margin:0!important;left:0!important;top:0!important;right:0!important;bottom:0!important;display:block!important;box-shadow:unset!important;border-radius:0!important}.max-widget-mobile iframe{position:absolute;left:0}.max-widget-mobile .autoAdsMaxLead-widget-google-map-popup-header{padding-top:26px!important}.max-widget-mobile .autoAdsMaxLead-widget-google-map-popup-header{font-size:16px!important}.validate-ok{background-image:url(../../../plugins/Simple-Contact/assets/css/images/checked-circle.png)!important;background-repeat:no-repeat!important;background-position:98% center!important}.zalo-chat-widget{bottom:17px!important;right:17px!important}#autoAdsMaxLead_widget_tawk_to_popup .autoAdsMaxLead-widget-icon-close-container{top:15px;right:30px;z-index:999999998}#autoAdsMaxLead_widget_tawk_to_popup.max-widget-mobile iframe{top:0;height:100%!important}.autoAdsMaxLead-widget-popup-loader{background-image:url(../../../plugins/Simple-Contact/assets/css/images/loader32x32.gif);width:32px;height:32px;position:fixed;bottom:15px;right:15px;display:none}#autoAdsMaxLead_widget_facebook_popup .autoAdsMaxLead-widget-icon-close{background-image:url(../../../plugins/Simple-Contact/assets/css/images/fb_icon_close.png)!important;background-repeat:no-repeat!important;background-position:center!important;width:50px!important;height:50px!important;border-radius:50%!important}.autoAdsMaxLead-Mobile .autoAdsMaxLead-widget-btn-float-container{position:unset!important;width:69px!important;text-align:center!important}.autoAdsMaxLead-Mobile .mobile-background .autoAdsMaxLead-widget-btn-float-container{width:60px!important;padding:8px 0 4px 0!important}.autoAdsMaxLead-Mobile .autoAdsMaxLead-widget-btn-list{position:fixed!important;bottom:0!important;width:100%!important;color:#6c738d!important;text-align:center!important;z-index:999999999!important}.autoAdsMaxLead-Mobile .autoAdsMaxLead-widget-btn-float-container span{font-size:9px!important;display:block!important;margin-top:-3px!important}.autoAdsMaxLead-Mobile .autoAdsMaxLead-widget-btn-list{display:flex!important;flex-direction:row!important;flex-wrap:nowrap!important;padding:0 0 0 20px!important}.autoAdsMaxLead-Mobile .autoAdsMaxLead-widget-btn-list.mobile-background{justify-content:space-around!important;padding-left:0!important;padding:0!important}.autoAdsMaxLead-Mobile .autoAdsMaxLead-widget-btn-float-container .autoAdsMaxLead-widget-btn-float{float:none!important}.autoAdsMaxLead-Mobile .mobile-background.autoAdsMaxLead-widget-btn-list{background-color:#f9f9f9!important;border-top:1px solid #d8dde6!important;box-shadow:0 -4px 8px rgba(29,36,62,.2)}.autoAdsMaxLead-Mobile .mobile-background .autoAdsMaxLead-widget-btn-float{background-color:transparent!important;-moz-box-shadow:none!important;-webkit-box-shadow:none!important;box-shadow:none!important;border-radius:0!important;width:28px!important;height:28px!important;background-size:cover!important}.autoAdsMaxLead-Mobile .mobile-background .autoAdsMaxLead-widget-menu-contact-form{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_m_icon_contact_form.svg)!important}.autoAdsMaxLead-Mobile .mobile-background .autoAdsMaxLead-widget-menu-click-to-call{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_m_icon_click_to_call.svg)!important}.autoAdsMaxLead-Mobile .mobile-background .autoAdsMaxLead-widget-menu-facebook{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_m_icon_facebook.svg)!important}.autoAdsMaxLead-Mobile .mobile-background .autoAdsMaxLead-widget-menu-zalo{background-image:url(../../../plugins/Simple-Contact/assets/images/widget_m_icon_zalo.svg)!important}.autoAdsMaxLead-Mobile .mobile-background .autoAdsMaxLead-widget-menu-tawk-to{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_m_icon_livechat.svg)!important}.autoAdsMaxLead-Mobile .mobile-background .autoAdsMaxLead-widget-menu-google-map{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_m_icon_map.svg)!important}.autoAdsMaxLead-Mobile .mobile-background .autoAdsMaxLead-widget-menu-whatsapp{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_m_icon_whatsapp.svg)!important}.autoAdsMaxLead-Mobile .mobile-background .autoAdsMaxLead-widget-menu-download-doc{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_m_icon_download_doc.svg)!important}#autoadsmaxlead_contact_form{margin:0!important;padding:0!important}.autoAdsMaxLead-widget-tooltip{width:50px!important}.autoAdsMaxLead-widget-tooltip .autoAdsMaxLead-widget-tooltiptext{visibility:hidden;text-align:center;border-radius:5px!important;white-space:nowrap!important;width:auto!important;height:35px!important;line-height:25px!important;padding:5px 10px!important;position:absolute;z-index:1;top:4px;font-size:12px!important}.autoAdsMaxLead-widget-tooltip .autoAdsMaxLead-widget-tooltiptext::after{content:"";position:absolute;top:50%;margin-top:-5px;border-width:5px;border-style:solid}.autoAdsMaxLead-widget-tooltip:hover .autoAdsMaxLead-widget-tooltiptext{visibility:visible}.autoAdsMaxLead-widget-tooltiptext-style1-top-left.autoAdsMaxLead-widget-tooltiptext,.autoAdsMaxLead-widget-tooltiptext-style1-middle-left.autoAdsMaxLead-widget-tooltiptext,.autoAdsMaxLead-widget-tooltiptext-style1-bottom-left.autoAdsMaxLead-widget-tooltiptext{left:110%}.autoAdsMaxLead-widget-tooltip .autoAdsMaxLead-widget-tooltiptext-style1-top-left.autoAdsMaxLead-widget-tooltiptext::after,.autoAdsMaxLead-widget-tooltip .autoAdsMaxLead-widget-tooltiptext-style1-middle-left.autoAdsMaxLead-widget-tooltiptext::after,.autoAdsMaxLead-widget-tooltip .autoAdsMaxLead-widget-tooltiptext-style1-bottom-left.autoAdsMaxLead-widget-tooltiptext::after{right:100%}.autoAdsMaxLead-widget-tooltiptext-style1-top-right.autoAdsMaxLead-widget-tooltiptext,.autoAdsMaxLead-widget-tooltiptext-style1-middle-right.autoAdsMaxLead-widget-tooltiptext,.autoAdsMaxLead-widget-tooltiptext-style1-bottom-right.autoAdsMaxLead-widget-tooltiptext{right:110%}.autoAdsMaxLead-widget-tooltip .autoAdsMaxLead-widget-tooltiptext-style1-top-right.autoAdsMaxLead-widget-tooltiptext::after,.autoAdsMaxLead-widget-tooltip .autoAdsMaxLead-widget-tooltiptext-style1-middle-right.autoAdsMaxLead-widget-tooltiptext::after,.autoAdsMaxLead-widget-tooltip .autoAdsMaxLead-widget-tooltiptext-style1-bottom-right.autoAdsMaxLead-widget-tooltiptext::after{left:100%;transform:rotateZ(-180deg)}.auto-ads-ml-powered-by{color:#666!important;visibility:hidden;opacity:0;transition:visibility 1s,opacity .3s linear}.auto-ads-ml-powered-by b{color:#555!important}.auto-ads-ml-desktop .auto-ads-ml-powered-by{writing-mode:vertical-rl;text-orientation:mixed;position:absolute;background:rgba(0,0,0,.1);border-radius:4px;cursor:pointer;font-size:10px;box-sizing:border-box;text-align:center;height:132px;width:18px;padding:10px 0;background-clip:content-box;line-height:18px!important}.auto-ads-ml-powered-by.open{visibility:visible;opacity:1}.auto-ads-ml-desktop .autoAdsMaxLead-widget-button-middle-right .auto-ads-ml-powered-by{transform:rotate(180deg);border-top-left-radius:0;border-bottom-left-radius:0}.auto-ads-ml-desktop .autoAdsMaxLead-widget-button-top-right .auto-ads-ml-powered-by{transform:rotate(180deg);border-top-left-radius:0;border-bottom-left-radius:0}.auto-ads-ml-desktop .autoAdsMaxLead-widget-button-bottom-right .auto-ads-ml-powered-by{transform:rotate(180deg);border-top-left-radius:0;border-bottom-left-radius:0}.auto-ads-ml-desktop .autoAdsMaxLead-widget-button-middle-left .auto-ads-ml-powered-by{border-top-left-radius:0;border-bottom-left-radius:0}.auto-ads-ml-desktop .autoAdsMaxLead-widget-button-top-left .auto-ads-ml-powered-by{border-top-left-radius:0;border-bottom-left-radius:0}.auto-ads-ml-desktop .autoAdsMaxLead-widget-button-bottom-left .auto-ads-ml-powered-by{border-top-left-radius:0;border-bottom-left-radius:0}.auto-ads-ml-mobile .auto-ads-ml-powered-by{height:62px;width:16px;font-size:8px;padding:4px 4px 4px 0!important;position:fixed;background-clip:content-box!important;line-height:12px!important}.auto-ads-ml-mobile.auto-ads-ml-horizontal .auto-ads-ml-powered-by{border-bottom-right-radius:2px;border-top-right-radius:2px;background:rgba(0,0,0,.1);writing-mode:vertical-rl;bottom:-4px!important;left:-4px!important}.auto-ads-ml-mobile.auto-ads-ml-horizontal.auto-ads-ml-background .auto-ads-ml-powered-by{background:none;bottom:0!important;right:6px!important;transform:rotate(180deg);height:55px;width:16px;font-size:8px;padding:2px 4px 2px 0!important}.auto-ads-ml-mobile.auto-ads-ml-vertical .auto-ads-ml-powered-by{border-top-right-radius:2px;border-top-left-radius:2px;background:rgba(0,0,0,.1);text-align:center;width:62px;height:16px;bottom:0;padding:4px 4px 0 4px!important}.location-preview-mobile .aml-toggle.container-up{right:32px}.location-preview-mobile .aml-toggle{width:8px;height:8px}.autoAdsMaxLead-widget-popup-container input[type="button"]:disabled,.autoAdsMaxLead-widget-popup-container input[type="submit"]:disabled{opacity:.24}#autoAdsMaxLead_location_modal_list_item{border-bottom-left-radius:12px}.autoAdsMaxLead-widget-google-map-popup-place{padding:16px;border-left:2px solid transparent;cursor:pointer}.autoAdsMaxLead-widget-google-map-popup-place:hover{background-color:rgba(245,246,250,.5)}.autoAdsMaxLead-widget-google-map-popup-place.active-mobile .aml-address-mobile{color:#0070e0!important}.autoAdsMaxLead-widget-google-map-popup-place.active{border-left:2px solid #0070e0!important;background-color:#f5f6fa}.aml_dk-desktop#autoAdsMaxLead_location_modal_container #autoAdsMaxLead_location_modal_list_item::-webkit-scrollbar{width:8px}.aml_dk-desktop#autoAdsMaxLead_location_modal_container::-webkit-scrollbar{width:10px}.aml_dk-desktop#autoAdsMaxLead_location_modal_container #autoAdsMaxLead_location_modal_list_item::-webkit-scrollbar-track,.aml_dk-desktop#autoAdsMaxLead_location_modal_container::-webkit-scrollbar-track{background:#fefefe}.aml_dk-desktop#autoAdsMaxLead_location_modal_container::-webkit-scrollbar-track{margin:19px 0}.aml_dk-desktop#autoAdsMaxLead_location_modal_container #autoAdsMaxLead_location_modal_list_item::-webkit-scrollbar-thumb,.aml_dk-desktop#autoAdsMaxLead_location_modal_container::-webkit-scrollbar-thumb{background:#d8dde6}.aml_dk-desktop#autoAdsMaxLead_location_modal_container #autoAdsMaxLead_location_modal_list_item::-webkit-scrollbar-thumb{border-radius:4px}.aml_dk-desktop#autoAdsMaxLead_location_modal_container::-webkit-scrollbar-thumb{border-right:2px solid #fff}.aml_dk-desktop#autoAdsMaxLead_location_modal_container::-webkit-scrollbar-thumb{border-radius:8px}.aml_dk-desktop#autoAdsMaxLead_location_modal_container #autoAdsMaxLead_location_modal_list_item::-webkit-scrollbar-thumb:hover,.aml_dk-desktop#autoAdsMaxLead_location_modal_container::-webkit-scrollbar-thumb:hover{background:#555}.aml-map-head-colapse{height:40px;width:auto;border-radius:8px 8px 8px 8px;display:flex;align-items:center;line-height:40px;padding-left:16px;background-color:#efefef;border:1px solid #fff}.mobile .aml-map-head-colapse.horizontal{padding-left:9px}.mobile .aml-map-head-colapse{padding-left:16px}.aml-map-head-colapse.horizontal{padding-left:9px!important}.aml-map-head-location-image{line-height:40px;height:16px;width:16px;background:url(../../../plugins/Simple-Contact/assets/css/images/widget_icon_pin.svg) no-repeat center center}.aml-map-head-colapse-image{line-height:40px;height:16px;width:16px;background:url(../../../plugins/Simple-Contact/assets/css/images/list_colpase.svg) no-repeat center center}.aml-map-head-colapse-content{margin-left:8px;color:#6c738d;font-weight:700;font-size:16px;line-height:24px}.aml-toggle{position:absolute;width:12px;height:12px;border:solid #6c738d;border-width:0 2px 2px 0;display:inline-block;cursor:pointer}.aml-toggle.up{top:12px;left:8px;transform:rotate(-135deg);-webkit-transform:rotate(-135deg)}.aml-toggle.down{top:6px;left:8px;transform:rotate(45deg);-webkit-transform:rotate(45deg)}.aml-toggle.left{top:8px;left:11px;transform:rotate(135deg);-webkit-transform:rotate(135deg);z-index:2000000;border:solid #fff!important;border-width:0 2px 2px 0!important}.aml-toggle.right{top:8px;left:4px;transform:rotate(-45deg);-webkit-transform:rotate(-45deg);z-index:2000000;border:solid #fff!important;border-width:0 2px 2px 0!important}.aml-toggle.left.disabled,.aml-toggle.right.disabled{border:solid #bcbcbc!important;border-width:0 2px 2px 0!important}.aml-toggle.container-left,.aml-toggle.container-right{width:28px;height:28px;border-width:0;border-radius:4px;background-color:rgba(0,0,0,.4)!important;right:-36px}.aml-toggle.container-up,.aml-toggle.container-down{position:absolute;position:absolute;width:28px;height:28px;background-color:transparent;border:none}.aml-toggle.container-up{right:40px}.aml-toggle.container-down{right:10px}.aml-toggle.container-left{top:calc(50% + 1px);background-color:rgba(0,0,0,.4)!important}.aml-toggle.container-right{top:calc(50% - 29px);background-color:rgba(0,0,0,.4)!important}.aml-toggle.container-left.disabled,.aml-toggle.container-right.disabled{background-color:rgba(0,0,0,.08)!important}.aml-map-inner-content{padding:0 16px 0 16px}.aml-map-inner-content.horizontal.left{border-left:1px solid #fff!important}.aml-map-inner-content.horizontal.last{border-right:1px solid #d8dde6!important}#autoAdsMaxLead_location_modal_container.mobile{width:calc(100% - 20px);max-height:calc(100% - 68px)!important}#autoAdsMaxLead_location_modal_container.horizontal{top:8px!important;max-height:calc(100vh - 16px)!important;width:auto;max-width:calc(100% - 69px)!important}#autoAdsMaxLead_location_modal_list_item:not(.horizontal){display:block!important}#autoAdsMaxLead_location_modal_list_item.horizontal{display:flex!important;flex-wrap:wrap!important;max-height:calc(100% - 40px)!important;max-width:100%}.autoAdsMaxLead-widget-google-map-popup-place{border-bottom:1px solid #d8dde6!important;border-top:1px solid #fff!important}.autoAdsMaxLead-widget-google-map-popup-place.horizontal{width:50%!important}.aml-map-inner-content.mobile.horizontal{border-right:1px solid #fff;border-left:1px solid #d8dde6;padding:0 8px 0 8px}.aml-map-inner-content.mobile{padding:0 16px 0 16px}#amlMap .gm-style-iw .gm-ui-hover-effect{color:#666;top:.5px!important;right:.5px!important}.aml-map-head-colapse.level-0{width:40px;height:100%;padding:8px 0!important;justify-content:center;align-items:start}.aml-map-inner-content.mobile.level-1{border-left:none;border-right:none}.aml-tooltip{position:relative;display:inline-block}.aml-tooltip .aml-tooltiptext{visibility:hidden;font-size:12px!important;line-height:16px!important;text-align:center;white-space:nowrap;border-radius:4px;padding:8px;position:absolute;top:calc(50% - 16px);z-index:1;opacity:0;transition:opacity .5s}.aml-tooltip .aml-tooltiptext::after{content:"";position:absolute;top:50%;margin-top:-5px;border-width:5px;border-style:solid}.aml-tooltip:hover .aml-tooltiptext{visibility:visible;opacity:1}.aml_dk-bottom-center .aml-tooltip .aml-tooltiptext{top:auto;bottom:calc(150% - 18px);left:0}.aml_dk-bottom-center .aml-tooltip .aml-tooltiptext::after{top:110%;left:50%}.aml_dk-top-left .aml-tooltip .aml-tooltiptext,.aml_dk-middle-left .aml-tooltip .aml-tooltiptext,.aml_dk-bottom-left .aml-tooltip .aml-tooltiptext{left:120%}.aml_dk-top-left .aml-tooltip .aml-tooltiptext::after,.aml_dk-middle-left .aml-tooltip .aml-tooltiptext::after,.aml_dk-bottom-left .aml-tooltip .aml-tooltiptext::after{right:100%}.aml_dk-top-right .aml-tooltip .aml-tooltiptext,.aml_dk-middle-right .aml-tooltip .aml-tooltiptext,.aml_dk-bottom-right .aml-tooltip .aml-tooltiptext{right:120%}.aml_dk-top-right .aml-tooltip .aml-tooltiptext::after,.aml_dk-middle-right .aml-tooltip .aml-tooltiptext::after,.aml_dk-bottom-right .aml-tooltip .aml-tooltiptext::after{left:100%}.aml_dk-desktop.aml_dk-style-horizontal.aml_dk-style-default.aml_dk-bottom-center .aml-tooltip .aml-tooltiptext{left:41%;-moz-transform:translateX(-50%);-webkit-transform:translateX(-50%);transform:translateX(-50%)}.aml_dk-wrap{font-size:14px!important;position:fixed;z-index:2147483647}.aml_dk-wrap.aml_dk-sb .aml_dk-flex-container>div{width:26px;height:26px}.aml_dk-flex-container{display:flex;justify-content:center}.aml_dk-flex-container>div{margin:8px;text-align:center;background-repeat:no-repeat;background-position:center center;background-size:auto;cursor:pointer;position:relative}.aml_dk-lg .aml_dk-flex-container>div{margin:3px 8px}.aml_dk-md .aml_dk-flex-container>div{margin:2px 8px}.aml_dk-sm .aml_dk-flex-container>div{margin:2px 8px}.aml_dk-desktop.aml_dk-style-default.aml_dk-bottom-right .aml_dk-flex-container>div:hover,.aml_dk-desktop.aml_dk-style-default.aml_dk-bottom-left .aml_dk-flex-container>div:hover,.aml_dk-desktop.aml_dk-style-default[class*='-middle'] .aml_dk-flex-container>div:hover,.aml_dk-desktop.aml_dk-style-default[class*='-top'] .aml_dk-flex-container>div:hover{text-decoration:none!important;box-shadow:0 5px 10px rgba(0,0,0,.15),0 4px 15px rgba(0,0,0,.13)}.aml_dk-style-horizontal.aml_dk-sm .aml_dk-flex-container>div,.aml_dk-style-horizontal-default.aml_dk-sm .aml_dk-flex-container>div{background-size:auto!important}.aml_dk-mobile.aml_dk-style-horizontal.aml_dk-sm .aml_dk-flex-container>div,.aml_dk-style-horizontal-default.aml_dk-sm .aml_dk-flex-container>div{background-size:30px!important}.aml_dk-style-default .aml_dk-flex-container{flex-direction:column}.aml_dk-style-default.aml_dk-bottom-center .aml_dk-flex-container{flex-direction:row-reverse}.aml_dk-mobile.aml_dk-style-default>.aml_dk-flex-container{justify-content:center}.aml_dk-mobile.aml_dk-style-default.aml_dk-bottom-center>.aml_dk-flex-container{padding:0 16px}.aml_dk-style-default.aml_dk-bottom-center.aml_dk-channel-1 .aml-flc-style-default,.aml_dk-style-default.aml_dk-bottom-center.aml_dk-channel-2 .aml-flc-style-default,.aml_dk-style-default.aml_dk-bottom-center.aml_dk-channel-1 .aml-flc-style-square,.aml_dk-style-default.aml_dk-bottom-center.aml_dk-channel-2 .aml-flc-style-square,.aml_dk-style-default.aml_dk-bottom-center.aml_dk-channel-1 .aml-flc-style-gradient-default,.aml_dk-style-default.aml_dk-bottom-center.aml_dk-channel-2 .aml-flc-style-gradient-default{justify-content:flex-end}.aml_dk-style-default.aml_dk-bottom-center.aml_dk-channel-3 .aml-flc-style-default{justify-content:center}.aml_dk-style-default.aml_dk-top-right{top:24px;right:0}.aml_dk-style-default.aml_dk-top-left{top:24px;left:0}.aml_dk-mobile.aml_dk-style-default.aml_dk-lg.aml_dk-top-right{top:20px;right:0}.aml_dk-mobile.aml_dk-style-default.aml_dk-lg.aml_dk-top-left{top:20px;left:0}.aml_dk-mobile.aml_dk-style-default.aml_dk-md.aml_dk-top-right{top:22px;right:0}.aml_dk-mobile.aml_dk-style-default.aml_dk-md.aml_dk-top-left{top:22px;left:0}.aml_dk-mobile.aml_dk-style-default.aml_dk-sm.aml_dk-top-right{top:24px;right:0}.aml_dk-mobile.aml_dk-style-default.aml_dk-sm.aml_dk-top-left{top:24px;left:0}.aml_dk-style-default.aml_dk-middle-right{right:0}.aml_dk-style-default.aml_dk-middle-left{left:0}.aml_dk-style-default.aml_dk-bottom-right{bottom:24px;right:0}.aml_dk-style-default.aml_dk-bottom-left{bottom:24px;left:0}.aml_dk-mobile.aml_dk-style-default.aml_dk-bottom-center{bottom:0;left:0;width:100%}.aml-powered-by{text-align:center;cursor:pointer;visibility:hidden;opacity:0;transition:visibility 2s ease,opacity .6s ease}.aml_dk-desktop.aml_dk-style-default.aml_dk-channel-1[class*='-top-']{top:38px}.aml_dk-desktop.aml_dk-style-default.aml_dk-channel-2[class*='-top-']{top:8px}.aml_dk-desktop.aml_dk-style-default.aml_dk-channel-1[class*='-bottom-']{bottom:38px}.aml_dk-desktop.aml_dk-style-default.aml_dk-channel-2[class*='-bottom-']{bottom:8px}.aml_dk-desktop.aml_dk-style-horizontal.aml_dk-channel-1[class*='-bottom-']{bottom:0}.aml_dk-desktop.aml_dk-style-horizontal.aml_dk-channel-2[class*='-bottom-']{bottom:0}.aml_dk-desktop.aml_dk-style-default[class*='-right']{padding-right:20px}.aml_dk-desktop.aml_dk-style-default[class*='-left']{padding-left:20px}.aml_dk-desktop.aml_dk-style-default .aml-pb-style-default.aml-powered-by,.aml_dk-desktop.aml_dk-style-main-button .aml-pb-style-main-button.aml-powered-by,.aml_dk-desktop.aml_dk-style-default .aml-pb-style-gradient-default.aml-powered-by,.aml_dk-desktop.aml_dk-style-square .aml-pb-style-square.aml-powered-by{color:#555!important;background:rgba(0,0,0,.1);font-size:10px;height:19px;line-height:18px;position:absolute;transform-origin:0 0;padding:1px 7px 2px 7px;border-top-right-radius:4px;border-top-left-radius:4px;letter-spacing:.3px;white-space:nowrap!important}.aml-powered-by-b{font-weight:bold!important}.aml_dk-desktop .aml-powered-by-b{font-size:10px!important}.aml_dk-desktop.aml_dk-style-default[class*='-right'] .aml-pb-style-default.aml-powered-by,.aml_dk-desktop.aml_dk-style-default[class*='-right'] .aml-pb-style-main-button.aml-powered-by,.aml_dk-desktop.aml_dk-style-default[class*='-right'] .aml-pb-style-gradient-default.aml-powered-by{top:calc(50% + 57px);right:-104px;transform:rotate(-90deg)}.aml_dk-desktop.aml_dk-style-default[class*='-left'] .aml-pb-style-default.aml-powered-by,.aml_dk-desktop.aml_dk-style-default[class*='-left'] .aml-pb-style-main-button.aml-powered-by,.aml_dk-desktop.aml_dk-style-default[class*='-left'] .aml-pb-style-gradient-default.aml-powered-by{top:calc(50% - 57px);left:20px;transform:rotate(90deg)}.aml_dk-mobile.aml_dk-style-default .aml-pb-style-default.aml-powered-by,.aml_dk-mobile.aml_dk-style-default .aml-pb-style-square.aml-powered-by,.aml_dk-mobile.aml_dk-style-default .aml-pb-style-gradient-default.aml-powered-by{color:#666!important;background:rgba(0,0,0,.1);font-size:9px!important;border-radius:2px 2px 0 0;position:absolute;line-height:16px;padding:0 5px;white-space:nowrap}.aml_dk-mobile.aml_dk-style-default[class*='-left'] .aml-pb-style-default.aml-powered-by,.aml_dk-mobile.aml_dk-style-default[class*='-right'] .aml-pb-style-default.aml-powered-by{bottom:-24px}.aml_dk-mobile.aml_dk-style-default[class*='-right'].aml_dk-lg .aml-pb-style-default.aml-powered-by{right:6px}.aml_dk-mobile.aml_dk-style-default[class*='-right'].aml_dk-md .aml-pb-style-default.aml-powered-by{right:2px}.aml_dk-mobile.aml_dk-style-default[class*='-right'].aml_dk-sm .aml-pb-style-default.aml-powered-by{right:-2px}.aml_dk-mobile.aml_dk-style-default[class*='-left'].aml_dk-lg .aml-pb-style-default.aml-powered-by{left:6px}.aml_dk-mobile.aml_dk-style-default[class*='-left'].aml_dk-md .aml-pb-style-default.aml-powered-by{left:2px}.aml_dk-mobile.aml_dk-style-default[class*='-left'].aml_dk-sm .aml-pb-style-default.aml-powered-by{left:-2px}.aml_dk-mobile.aml_dk-style-default[class*='bottom-left'],.aml_dk-mobile.aml_dk-style-default[class*='bottom-right']{bottom:24px}.aml_dk-mobile.aml_dk-style-default[class*='-center'] .aml-pb-style-default.aml-powered-by,.aml_dk-mobile.aml_dk-style-default[class*='-center'] .aml-pb-style-square.aml-powered-by,.aml_dk-mobile.aml_dk-style-default[class*='-center'] .aml-pb-style-gradient-default.aml-powered-by{transform:rotate(90deg);left:-20px}@supports (-webkit-overflow-scrolling:touch){.aml_dk-mobile.aml_dk-style-horizontal .aml_dk-flex-item span,.aml_dk-mobile.aml_dk-style-horizontal-default .aml_dk-flex-item span{bottom:10%!important}.aml_dk-mobile.aml_dk-style-horizontal-default>.aml-powered-by,.aml_dk-mobile.aml_dk-style-horizontal>.aml-powered-by,.aml_dk-mobile.aml_dk-style-gradient-vertical>.aml-powered-by{font-size:7px!important}.aml_dk-mobile.aml_dk-style-default .aml-pb-style-default.aml-powered-by,.aml_dk-mobile.aml_dk-style-gradient-default .aml-pb-style-gradient-default.aml-powered-by,.aml_dk-mobile.aml_dk-style-square .aml-pb-style-square.aml-powered-by{font-size:8px!important}}.aml-powered-by.open{visibility:visible;opacity:1}.aml_dk-style-gradient-vertical{padding:0!important}.aml_dk-style-gradient-vertical[class*='-top-']{top:32px!important}.aml_dk-desktop.aml_dk-style-gradient-vertical[class*='-bottom-']{bottom:50px!important}.aml_dk-mobile.aml_dk-style-gradient-vertical[class*='bottom']{bottom:50px}.aml_dk-style-gradient-vertical[class*='-left']{border-radius:0 10px 10px 0;left:0!important}.aml_dk-style-gradient-vertical[class*='-left'] .aml_dk-flex-container{border-radius:0 10px 10px 0;box-shadow:0 2px 7px rgba(0,0,0,0);transition:border-radius .5s ease}.aml_dk-style-gradient-vertical:hover[class*='-left'] .aml_dk-flex-container{border-radius:0 10px 0 0}.aml_dk-style-gradient-vertical[class*='-right']{border-radius:10px 0 0 10px;right:0!important}.aml_dk-style-gradient-vertical[class*='-right'] .aml_dk-flex-container{border-radius:10px 0 0 10px;box-shadow:0 2px 7px rgba(0,0,0,0)}.aml_dk-style-gradient-vertical:hover[class*='-right'] .aml_dk-flex-container{border-radius:10px 0 0 0}.aml_dk-style-gradient-vertical .aml_dk-flex-container>div{width:32px;height:32px}.aml_dk-style-gradient-vertical .aml_dk-flex-container>div:hover{box-shadow:0 1px rgba(255,255,255,.16)!important}.aml_dk-style-gradient-vertical .aml_dk-flex-item{margin:0!important;border-bottom:1px solid rgba(0,0,0,.1);box-shadow:0 1px rgba(255,255,255,.16)}.aml_dk-style-gradient-vertical .aml_dk-flex-item:last-child{border-bottom:1px solid rgba(0,0,0,0);box-shadow:none;transition:border-bottom .5s ease,box-shadow .5s ease}.aml_dk-style-gradient-vertical:hover .aml_dk-flex-item:last-child{border-bottom:1px solid rgba(0,0,0,.1);box-shadow:0 1px rgba(255,255,255,.16)!important}.aml_dk-style-gradient-vertical .aml_dk-channel-facebook{background-image:url(/images/Messenger_On.svg)}.aml_dk-style-gradient-vertical .aml_dk-channel-zalo{background-image:url(/images/Zalo_On.svg)}.aml_dk-style-gradient-vertical .aml_dk-channel-click_to_call{background-image:url(/images/Call_On.svg)}.aml_dk-style-gradient-vertical .aml_dk-channel-google_map{background-image:url(/images/Location.svg)}.aml_dk-style-gradient-vertical.dark .aml_dk-channel-facebook{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_icon_dark_messenger.svg)}.aml_dk-style-gradient-vertical.dark .aml_dk-channel-zalo{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_icon_dark_zalo.svg)}.aml_dk-style-gradient-vertical.dark .aml_dk-channel-click_to_call{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_icon_dark_click_to_call.svg)}.aml_dk-style-gradient-vertical.dark .aml_dk-channel-google_map{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_icon_dark_map.svg)}.aml_dk-style-gradient-vertical .aml-pb-style-gradient-vertical.aml-powered-by{position:absolute;bottom:0;z-index:-1;width:100%;height:18px;padding:4px 0;font-size:8px;color:rgba(230,221,216,.8)!important;line-height:10px;visibility:visible;opacity:1;transition:bottom .5s ease}.aml_dk-style-gradient-vertical:hover .aml-pb-style-gradient-vertical.aml-powered-by{bottom:-18px}.aml_dk-style-gradient-vertical.dark .aml-pb-style-gradient-vertical.aml-powered-by{color:#333!important}.aml_dk-style-default[class*='-left'] .aml-pb-style-gradient-vertical.aml-powered-by{left:0;border-radius:0 0 10px 0}.aml_dk-style-default[class*='-right'] .aml-pb-style-gradient-vertical.aml-powered-by{right:0!important;border-radius:0 0 0 10px}.aml_dk-desktop.aml_dk-style-square{padding:0!important}.aml_dk-style-square .aml_dk-channel-facebook{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_icon_messenger_square.svg)}.aml_dk-style-square .aml_dk-channel-zalo{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_icon_zalo_square.svg)}.aml_dk-style-square .aml_dk-channel-click_to_call{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_icon_click_to_call_square.svg)}.aml_dk-style-square .aml_dk-channel-tawk_to{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_icon_tawkto_square.svg)}.aml_dk-style-square .aml_dk-channel-contact_form{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_icon_contact_form_square.svg)}.aml_dk-style-square .aml_dk-channel-google_map{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_icon_map_square.svg)}.aml_dk-style-square .aml_dk-channel-whatsapp{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_icon_whatsapp_square.svg)}.aml_dk-style-square .aml_dk-channel-download_doc{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_icon_download_doc_square.svg)}.aml_dk-style-square .aml_dk-channel-promotion{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_icon_promotion_square.svg)}.aml_dk-desktop.aml_dk-style-square .aml_dk-channel-facebook .aml-text-content{background-image:linear-gradient(0deg,#1d77e2 1.46%,#2cb7ff 99.03%)}.aml_dk-desktop.aml_dk-style-square .aml_dk-channel-zalo .aml-text-content{background-image:linear-gradient(180deg,#3a8bff 0%,#035ada 100%)}.aml_dk-desktop.aml_dk-style-square .aml_dk-channel-click_to_call .aml-text-content{background-image:linear-gradient(179.83deg,#8ad336 .15%,#509600 92.02%)}.aml_dk-desktop.aml_dk-style-square .aml_dk-channel-tawk_to .aml-text-content{background-image:linear-gradient(180deg,#08ca60 0%,#007e39 100%)}.aml_dk-desktop.aml_dk-style-square .aml_dk-channel-contact_form .aml-text-content{background-image:linear-gradient(180deg,#ffc044 0%,#ef9f00 100%)}.aml_dk-desktop.aml_dk-style-square .aml_dk-channel-google_map .aml-text-content{background-image:linear-gradient(180deg,#07d8f8 0%,#00a0d2 100%)}.aml_dk-desktop.aml_dk-style-square .aml_dk-channel-whatsapp .aml-text-content{background-image:linear-gradient(180deg,#24ea6e 0%,#088e3a 100%)}.aml_dk-desktop.aml_dk-style-square .aml_dk-channel-download_doc .aml-text-content{background-image:linear-gradient(180deg,#5930ff 0%,#585fec .01%,#2a32e1 100%)}.aml_dk-desktop.aml_dk-style-square .aml_dk-channel-promotion .aml-text-content{background-image:linear-gradient(4.15deg,#f71f01 18.44%,#ff9c05 85.14%)}.aml_dk-desktop.aml_dk-style-square .aml_dk-flex-container>div:hover{box-shadow:initial!important}.aml_dk-desktop.aml_dk-style-square[class*='-left'] .aml_dk-flex-container>div{right:0;transition:right .5s ease}.aml_dk-desktop.aml_dk-style-square[class*='-right'] .aml_dk-flex-container>div{left:0;transition:left .5s ease}.aml_dk-desktop.aml_dk-style-square .aml-text-content{position:absolute;white-space:nowrap;color:#fff;padding:0 8px}.aml_dk-desktop.aml_dk-style-square[class*='-left'] .aml-text-content{text-align:left}.aml_dk-desktop.aml_dk-style-square[class*='-right'] .aml-text-content{text-align:right}.aml_dk-desktop.aml_dk-style-square .aml-powered-by{bottom:-18px;padding:1px 3px!important;font-size:9px!important}.aml_dk-desktop.aml_dk-style-square[class*='-left'] .aml-powered-by{left:3px;border-radius:0 4px 4px 0!important}.aml_dk-desktop.aml_dk-style-square[class*='-right'] .aml-powered-by{right:3px;border-radius:4px 0 0 4px!important}.aml_dk-desktop.aml_dk-style-square[class*='-bottom-']{bottom:24px!important}.aml_dk-desktop.aml_dk-style-square[class*='-top-']{top:24px!important}.aml_dk-mobile.aml_dk-style-square .aml_dk-channel-facebook{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_m_icon_messenger_square.svg)}.aml_dk-mobile.aml_dk-style-square .aml_dk-channel-zalo{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_m_icon_zalo_square.svg)}.aml_dk-mobile.aml_dk-style-square .aml_dk-channel-click_to_call{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_m_icon_click_to_call_square.svg)}.aml_dk-mobile.aml_dk-style-square .aml_dk-channel-tawk_to{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_m_icon_tawkto_square.svg)}.aml_dk-mobile.aml_dk-style-square .aml_dk-channel-contact_form{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_m_icon_contact_form_square.svg)}.aml_dk-mobile.aml_dk-style-square .aml_dk-channel-google_map{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_m_icon_map_square.svg)}.aml_dk-mobile.aml_dk-style-square .aml_dk-channel-whatsapp{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_m_icon_whatsapp_square.svg)}.aml_dk-mobile.aml_dk-style-square .aml_dk-channel-download_doc{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_m_icon_download_doc_square.svg)}.aml_dk-mobile.aml_dk-style-square .aml_dk-channel-promotion{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_m_icon_promotion_square.svg)}.aml_dk-mobile.aml_dk-style-horizontal-default .aml_dk-flex-container>div,.aml_dk-mobile.aml_dk-style-horizontal .aml_dk-flex-container>div{background-position:center 28%}.aml_dk-mobile.aml_dk-style-horizontal .aml_dk-flex-item span,.aml_dk-mobile.aml_dk-style-horizontal-default .aml_dk-flex-item span{width:100%;position:absolute;left:0;bottom:12%;white-space:nowrap;line-height:normal!important}.aml_dk-mobile.aml_dk-style-horizontal .aml_dk-flex-item span{color:#fff}.aml_dk-mobile.aml_dk-style-horizontal.dark .aml_dk-flex-item span{color:#333!important}.aml_dk-desktop.aml_dk-style-horizontal .aml_dk-flex-item span:first-child{font-size:12px;line-height:48px;padding:0 16px 0 32px;white-space:nowrap}.aml_dk-desktop.aml_dk-style-horizontal .aml_dk-flex-container{height:48px}.aml_dk-style-horizontal .aml_dk-channel-facebook{background-image:url(../../../plugins/Simple-Contact/assets/images/Messenger_On.svg)}.aml_dk-style-horizontal .aml_dk-channel-zalo{background-image:url(../../../plugins/Simple-Contact/assets/images/Zalo_On.svg)}.aml_dk-style-horizontal .aml_dk-channel-click_to_call{background-image:url(../../../plugins/Simple-Contact/assets/images/Call_On.svg)}.aml_dk-style-horizontal .aml_dk-channel-tawk_to{background-image:url(../../../plugins/Simple-Contact/assets/images/ht_tawkto.svg)}.aml_dk-style-horizontal .aml_dk-channel-contact_form{background-image:url(../../../plugins/Simple-Contact/assets/images/ht_contact_form.svg)}.aml_dk-style-horizontal .aml_dk-channel-google_map{background-image:url(../../../plugins/Simple-Contact/assets/images/Location.svg)}.aml_dk-style-horizontal .aml_dk-channel-whatsapp{background-image:url(../../../plugins/Simple-Contact/assets/images/ht_whatsapp.svg)}.aml_dk-style-horizontal .aml_dk-channel-download_doc{background-image:url(../../../plugins/Simple-Contact/assets/images/ht_download_doc.svg)}.aml_dk-style-horizontal .aml_dk-channel-promotion{background-image:url(../../../plugins/Simple-Contact/assets/images/widget_m_icon_light_promotion.svg)}.aml_dk-style-horizontal.dark .aml_dk-channel-facebook{background-image:url(../../../plugins/Simple-Contact/assets/images/widget_icon_dark_messenger.svg)}.aml_dk-style-horizontal.dark .aml_dk-channel-zalo{background-image:url(../../../plugins/Simple-Contact/assets/images/widget_icon_dark_zalo.svg)}.aml_dk-style-horizontal.dark .aml_dk-channel-click_to_call{background-image:url(../../../plugins/Simple-Contact/assets/images/widget_icon_dark_click_to_call.svg)}.aml_dk-style-horizontal.dark .aml_dk-channel-tawk_to{background-image:url(../../../plugins/Simple-Contact/assets/images/widget_icon_dark_tawkto.svg)}.aml_dk-style-horizontal.dark .aml_dk-channel-contact_form{background-image:url(../../../plugins/Simple-Contact/assets/images/widget_icon_dark_contact_form.svg)}.aml_dk-style-horizontal.dark .aml_dk-channel-google_map{background-image:url(../../../plugins/Simple-Contact/assets/images/widget_icon_dark_map.svg)}.aml_dk-style-horizontal.dark .aml_dk-channel-whatsapp{background-image:url(../../../plugins/Simple-Contact/assets/images/widget_icon_dark_whatsapp.svg)}.aml_dk-style-horizontal.dark .aml_dk-channel-download_doc{background-image:url(../../../plugins/Simple-Contact/assets/images/widget_icon_dark_download_doc.svg)}.aml_dk-style-horizontal{bottom:0;left:0!important;width:100%}.aml_dk-mobile.aml_dk-style-horizontal-default .aml-powered-by,.aml_dk-mobile.aml_dk-style-horizontal.dark>.aml-powered-by{color:rgba(108,115,141,.72)!important}.aml_dk-desktop.aml_dk-style-horizontal>.aml_dk-flex-container{background-color:#0974f6}.aml_dk-desktop.aml_dk-style-horizontal>.aml_dk-flex-container>.aml-text-content{font-size:14px;line-height:1.2em;text-align:center;display:-webkit-box;-webkit-line-clamp:2;overflow:hidden;max-height:24px;color:#fff;padding-left:48px;vertical-align:middle}.aml_dk-desktop.aml_dk-style-horizontal>.aml_dk-flex-container{display:flex;justify-content:center}.aml_dk-desktop.aml_dk-style-horizontal>.aml_dk-flex-container>div{background-position:0 center;background-size:24px!important;width:auto;min-width:100px;height:48px;color:#fff;margin:0 8px!important}.aml_dk-desktop.aml_dk-style-horizontal>.aml_dk-flex-container>.aml_dk-flex-item:not(:first-of-type){border-right:1px solid rgba(0,0,0,.16);box-shadow:1px 0 0 0 hsla(0,0%,100%,.1)}.aml_dk-desktop.aml_dk-style-horizontal.dark>.aml_dk-flex-container>div{color:#333!important}.aml_dk-desktop.aml_dk-style-horizontal .aml-powered-by{position:fixed;right:4px;bottom:52px;font-style:normal;font-weight:400;font-size:11px;line-height:14px}.aml_dk-mobile.aml_dk-style-horizontal-default,.aml_dk-mobile.aml_dk-style-horizontal{bottom:0;width:100%;box-shadow:0 -4px 8px rgba(29,36,62,.2)}.aml_dk-mobile.aml_dk-style-horizontal-default{background-color:#fff}.aml_dk-mobile.aml_dk-style-horizontal-default .aml_dk-flex-item span{color:#6c738d}.aml_dk-mobile.aml_dk-style-horizontal-default>.aml-powered-by,.aml_dk-mobile.aml_dk-style-horizontal>.aml-powered-by{position:absolute;right:-19px!important;height:16px;padding:0 5px;font-size:8px;line-height:16px!important;transform:rotate(-90deg)}.aml_dk-mobile.aml_dk-style-horizontal>.aml-powered-by{color:#d8dde6!important}.aml_dk-style-horizontal-default .aml_dk-channel-facebook{background-image:url(../../../plugins/Simple-Contact/assets/images/widget_m_icon_messenger.svg)}.aml_dk-style-horizontal-default .aml_dk-channel-zalo{background-image:url(../../../plugins/Simple-Contact/assets/images/widget_m_icon_zalo.svg)}.aml_dk-style-horizontal-default .aml_dk-channel-click_to_call{background-image:url(../../../plugins/Simple-Contact/assets/images/widget_m_icon_click_to_call.svg)}.aml_dk-style-horizontal-default .aml_dk-channel-tawk_to{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_m_icon_tawkto.svg)}.aml_dk-style-horizontal-default .aml_dk-channel-contact_form{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_m_icon_contact_form.svg)}.aml_dk-style-horizontal-default .aml_dk-channel-google_map{background-image:url(../../../plugins/Simple-Contact/assets/images/widget_m_icon_map.svg)}.aml_dk-style-horizontal-default .aml_dk-channel-whatsapp{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_m_icon_whatsapp.svg)}.aml_dk-style-horizontal-default .aml_dk-channel-download_doc{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_m_icon_download_doc.svg)}.aml_dk-style-horizontal-default .aml_dk-channel-promotion{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_m_icon_promotion.svg)}.aml_dk-main-button{position:absolute;cursor:pointer}.aml_dk-desktop.aml_dk-style-main-button .aml_dk-main-button{position:fixed;width:70px;height:70px}.aml_dk-mobile.aml_dk-style-main-button .aml_dk-main-button{width:56px;height:56px}.aml_dk-style-main-button .aml_dk-main-button{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;background-color:#fff;border-radius:50%;box-shadow:0 4px 8px rgba(0,0,0,.15);animation:pulse 2s infinite}.aml_dk-desktop.aml_dk-style-main-button .aml_dk-main-button{border:8px solid}.aml_dk-mobile.aml_dk-style-main-button .aml_dk-main-button{border:6px solid}.aml_dk-main-button-icon{position:absolute;top:0;left:0;transition:.2s all}.aml_dk-main-button.aml_dk-background-color-main-button-contact-us-desktop,.aml_dk-main-button.aml_dk-background-color-main-button-contact-us-mobile{border:2px solid #fff!important}.aml_dk-icons-line{display:flex;transition:.2s all}.aml_dk-main-button svg path{fill:currentColor!important}.aml_dk-desktop .aml_dk-main-button span svg{width:32px;height:32px;margin:11px}.aml_dk-mobile .aml_dk-main-button span svg{width:28px;height:28px;margin:8px}.aml_dk-style-main-button.open .aml_dk-flex-container{display:flex}.aml_dk-style-main-button.open[class*='-top'] .aml_dk-flex-container{flex-direction:column}.aml_dk-style-main-button.open .aml_dk-main-button,.aml_dk-style-main-button.open .aml_dk-hightlight{display:none}.aml_dk-style-main-button.aml-hide .aml_dk-flex-container{display:none}.aml_dk-style-main-button.aml-hide{display:block!important}.aml_dk-style-main-button.aml-hide .aml_dk-main-button,.aml_dk-style-main-button.aml-hide .aml_dk-hightlight{display:block}.aml_dk-mobile.aml_dk-style-main-button.open .aml-powered-by,.aml_dk-style-main-button.aml-hide .aml-powered-by{visibility:visible;opacity:1;display:unset}.aml_dk-style-main-button.aml-hide .aml-powered-by{display:none}.aml_dk-desktop.aml_dk-style-main-button[class*='-bottom']{bottom:16px!important}.aml_dk-style-main-button[class*='-middle']{margin-top:unset!important;top:calc(50% - 35px)}.aml_dk-style-main-button[class*='-top']{top:16px}.aml_dk-desktop.aml_dk-style-main-button.open[class*='-middle']{top:50%}.aml_dk-desktop.aml_dk-style-main-button.open[class*='-middle'].aml_dk-lg.aml_dk-channel-1{margin-top:-128px!important}.aml_dk-desktop.aml_dk-style-main-button.open[class*='-middle'].aml_dk-lg.aml_dk-channel-2{margin-top:-192px!important}.aml_dk-desktop.aml_dk-style-main-button.open[class*='-middle'].aml_dk-lg.aml_dk-channel-3{margin-top:-256px!important}.aml_dk-desktop.aml_dk-style-main-button.open[class*='-middle'].aml_dk-lg.aml_dk-channel-4{margin-top:-320px!important}.aml_dk-desktop.aml_dk-style-main-button.open[class*='-middle'].aml_dk-lg.aml_dk-channel-5{margin-top:-384px!important}.aml_dk-desktop.aml_dk-style-main-button.open[class*='-middle'].aml_dk-md.aml_dk-channel-1{margin-top:-85px!important}.aml_dk-desktop.aml_dk-style-main-button.open[class*='-middle'].aml_dk-md.aml_dk-channel-2{margin-top:-145px!important}.aml_dk-desktop.aml_dk-style-main-button.open[class*='-middle'].aml_dk-md.aml_dk-channel-3{margin-top:-205px!important}.aml_dk-desktop.aml_dk-style-main-button.open[class*='-middle'].aml_dk-md.aml_dk-channel-4{margin-top:-265px!important}.aml_dk-desktop.aml_dk-style-main-button.open[class*='-middle'].aml_dk-md.aml_dk-channel-5{margin-top:-325px!important}.aml_dk-desktop.aml_dk-style-main-button.open[class*='-middle'].aml_dk-sm.aml_dk-channel-1{margin-top:-112px!important}.aml_dk-desktop.aml_dk-style-main-button.open[class*='-middle'].aml_dk-sm.aml_dk-channel-2{margin-top:-168px!important}.aml_dk-desktop.aml_dk-style-main-button.open[class*='-middle'].aml_dk-sm.aml_dk-channel-3{margin-top:-224px!important}.aml_dk-desktop.aml_dk-style-main-button.open[class*='-middle'].aml_dk-sm.aml_dk-channel-4{margin-top:-280px!important}.aml_dk-desktop.aml_dk-style-main-button.open[class*='-middle'].aml_dk-sm.aml_dk-channel-5{margin-top:-336px!important}@media only screen and (max-height:650px){.aml_dk-desktop.aml_dk-style-main-button[class*='-middle'].aml_dk-lg.aml_dk-channel-5,.aml_dk-desktop.aml_dk-style-main-button[class*='-middle'].aml_dk-md.aml_dk-channel-5,.aml_dk-desktop.aml_dk-style-main-button[class*='-middle'].aml_dk-sm.aml_dk-channel-5{top:calc(50% + 35px)!important}.aml_dk-desktop.aml_dk-style-main-button[class*='-middle'].aml_dk-lg.aml_dk-channel-4,.aml_dk-desktop.aml_dk-style-main-button[class*='-middle'].aml_dk-md.aml_dk-channel-4,.aml_dk-desktop.aml_dk-style-main-button[class*='-middle'].aml_dk-sm.aml_dk-channel-4{top:calc(50% + 105px)!important}.aml_dk-desktop.aml_dk-style-main-button.open[class*='-middle'].aml_dk-lg.aml_dk-channel-5,.aml_dk-desktop.aml_dk-style-main-button.open[class*='-middle'].aml_dk-md.aml_dk-channel-5,.aml_dk-desktop.aml_dk-style-main-button.open[class*='-middle'].aml_dk-sm.aml_dk-channel-5{margin-top:-295px!important}.aml_dk-desktop.aml_dk-style-main-button.open[class*='-middle'].aml_dk-lg.aml_dk-channel-4,.aml_dk-desktop.aml_dk-style-main-button.open[class*='-middle'].aml_dk-md.aml_dk-channel-4,.aml_dk-desktop.aml_dk-style-main-button.open[class*='-middle'].aml_dk-sm.aml_dk-channel-4{margin-top:-235px!important}}.aml_dk-mobile.aml_dk-style-main-button{width:56px;height:56px;cursor:pointer}.aml_dk-mobile.aml_dk-style-main-button.aml-hide2{display:none!important}.aml_dk-mobile.aml_dk-style-main-button.aml-hide[class*='-right']{right:16px}.aml_dk-mobile.aml_dk-style-main-button.aml-hide[class*='-left']{left:16px}.aml_dk-mobile.aml_dk-style-main-button[class*='-bottom']{bottom:16px}.aml_dk-mobile.aml_dk-style-main-button .aml_dk-flex-container{flex-direction:column;position:fixed;bottom:0;left:0;width:calc(100% - 16px);margin:8px;background-color:#f5f6fa!important;box-shadow:0 4px 20px rgba(0,0,0,.2);border-radius:12px}.aml_dk-mobile.aml_dk-style-main-button .aml_dk-flex-container>div{display:table;width:100%;margin:0;padding:2px 16px 2px 66px;background-size:30px;background-position:16px center;text-align:left;color:#1d243e!important}.aml_dk-mobile.aml_dk-style-main-button .aml_dk-flex-container>div:not(:last-of-type){border-bottom:1px solid #ecedf1;box-shadow:0 1px 0 0 #fff}.aml_dk-mobile.aml_dk-style-main-button .aml_dk-flex-container>div>p{margin:10px 0!important}.aml_dk-mobile.aml_dk-style-main-button .aml_dk-flex-container div:first-child{margin-top:8px;height:auto;z-index:1}.aml_dk-mobile.aml_dk-style-main-button .aml_dk-flex-container div:first-child p{padding-right:16px}.aml_dk-mobile.aml_dk-style-main-button .aml_dk-flex-container div:nth-last-child(2){margin-bottom:16px!important;border-bottom:none!important}.aml_dk-mobile.aml_dk-style-main-button .aml_dk-main-button-close{position:absolute;top:0;right:0;padding:8px;z-index:2}.aml_dk-mobile.aml_dk-style-main-button .aml_dk-channel-facebook{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_m_icon_messenger.svg)}.aml_dk-mobile.aml_dk-style-main-button .aml_dk-channel-zalo{background-image:url(../../../plugins/Simple-Contact/assets/images/widget_m_icon_zalo.svg)}.aml_dk-mobile.aml_dk-style-main-button .aml_dk-channel-click_to_call{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_m_icon_click_to_call.svg)}.aml_dk-mobile.aml_dk-style-main-button .aml_dk-channel-tawk_to{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_m_icon_tawkto.svg)}.aml_dk-mobile.aml_dk-style-main-button .aml_dk-channel-contact_form{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_m_icon_contact_form.svg)}.aml_dk-mobile.aml_dk-style-main-button .aml_dk-channel-google_map{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_m_icon_map.svg)}.aml_dk-mobile.aml_dk-style-main-button .aml_dk-channel-whatsapp{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_m_icon_whatsapp.svg)}.aml_dk-mobile.aml_dk-style-main-button .aml_dk-channel-download_doc{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_m_icon_download_doc.svg)}.aml_dk-mobile.aml_dk-style-main-button .aml_dk-channel-promotion{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_m_icon_promotion.svg)}.aml_dk-mobile.aml_dk-style-main-button .aml-powered-by{color:#aeb4c5!important;z-index:2;position:fixed;bottom:12px;right:20px;font-size:9px}.aml-moveable{position:fixed!important}.aml_dk-hightlight{z-index:-1;position:fixed;height:48px;font-weight:600;font-size:16px;line-height:18px;color:#fff;cursor:pointer;white-space:nowrap}.aml_dk-desktop[class*='-right'] .aml_dk-hightlight{padding:14px 51px 14px 23px;border-radius:24px 0 0 24px}.aml_dk-desktop[class*='-left'] .aml_dk-hightlight{padding:14px 23px 14px 51px;border-radius:0 24px 24px 0}@media only screen and (min-device-width:375px) and (min-device-height:812px) and (-webkit-device-pixel-ratio:3) and (orientation:portrait),only screen and (device-width:414px) and (device-height:896px) and (-webkit-device-pixel-ratio:2) and (orientation:portrait),only screen and (device-width:414px) and (device-height:896px) and (-webkit-device-pixel-ratio:3) and (orientation:portrait){.aml_dk-mobile.aml_dk-style-horizontal-default>.aml-powered-by,.aml_dk-mobile.aml_dk-style-horizontal>.aml-powered-by{top:19px!important}.aml_dk-mobile.aml_dk-style-default.aml_dk-bottom-center.aml_dk-lg{bottom:10px}.aml_dk-mobile.aml_dk-style-default[class*='-left'].aml_dk-sm{left:8px}.aml_dk-mobile.aml_dk-style-default[class*='-right'].aml_dk-sm{right:8px}.aml_dk-mobile.aml_dk-style-default[class*='-left'].aml_dk-md{left:8px}.aml_dk-mobile.aml_dk-style-default[class*='-right'].aml_dk-md{right:8px}.aml_dk-mobile.aml_dk-style-default[class*='-left'].aml_dk-lg{left:8px}.aml_dk-mobile.aml_dk-style-default[class*='-right'].aml_dk-lg{right:8px}.aml_dk-mobile.aml_dk-style-main-button .aml-powered-by{right:20px!important}.aml_dk-mobile.aml_dk-style-main-button .aml_dk-flex-container{margin-bottom:19px!important}.aml_dk-mobile.aml_dk-style-main-button .aml-powered-by{bottom:23px!important}}.aml_dk-mobile.aml_dk-style-gradient-default .aml_dk-flex-container>div{border-radius:50%!important}.aml_dk-style-gradient-default [class*='aml_dk-channel-']{height:100%;background-repeat:no-repeat;background-position:center}.aml_dk-style-gradient-default .aml_dk-channel-facebook{background-image:url(../../../plugins/Simple-Contact/assets/images/Messenger_On.svg)}.aml_dk-style-gradient-default .aml_dk-channel-zalo{background-image:url(../../../plugins/Simple-Contact/assets/images/Zalo_On.svg)}.aml_dk-style-gradient-default .aml_dk-channel-click_to_call{background-image:url(../../../plugins/Simple-Contact/assets/images/Call_On.svg)}.aml_dk-style-gradient-default .aml_dk-channel-tawk_to{background-image:url(../../../plugins/Simple-Contact/assets/images/ht_tawkto.svg)}.aml_dk-style-gradient-default .aml_dk-channel-contact_form{background-image:url(../../../plugins/Simple-Contact/assets/images/ht_contact_form.svg)}.aml_dk-style-gradient-default .aml_dk-channel-google_map{background-image:url(../../../plugins/Simple-Contact/assets/images/Location.svg)}.aml_dk-style-gradient-default .aml_dk-channel-whatsapp{background-image:url(../../../plugins/Simple-Contact/assets/css/images/ht_whatsapp.svg)}.aml_dk-style-gradient-default .aml_dk-channel-download_doc{background-image:url(../../../plugins/Simple-Contact/assets/css/images/ht_download_doc.svg)}.aml_dk-style-gradient-default .aml_dk-channel-promotion{background-image:url(../../../plugins/Simple-Contact/assets/css/images/ht_promotion.svg)}.aml_dk-style-gradient-default.dark .aml_dk-channel-facebook{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_icon_dark_messenger.svg)}.aml_dk-style-gradient-default.dark .aml_dk-channel-zalo{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_icon_dark_zalo.svg)}.aml_dk-style-gradient-default.dark .aml_dk-channel-click_to_call{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_icon_dark_click_to_call.svg)}.aml_dk-style-gradient-default.dark .aml_dk-channel-tawk_to{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_icon_dark_tawkto.svg)}.aml_dk-style-gradient-default.dark .aml_dk-channel-contact_form{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_icon_dark_contact_form.svg)}.aml_dk-style-gradient-default.dark .aml_dk-channel-google_map{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_icon_dark_map.svg)}.aml_dk-style-gradient-default.dark .aml_dk-channel-whatsapp{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_icon_dark_whatsapp.svg)}.aml_dk-style-gradient-default.dark .aml_dk-channel-download_doc{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_icon_dark_download_doc.svg)}.aml_dk-flex-item svg{fill:#fff}.aml_pb-bottom-right{bottom:16px;right:20px}.aml_pb-bottom-left{bottom:16px;left:20px}.aml_pb-bottom-right.mobile{right:16px;bottom:16px}.aml_pb-bottom-left.mobile{bottom:16px;left:16px}.aml_pb-bottom-left.aml-tooltip .aml-tooltiptext{left:116%!important;right:unset!important}.aml_pb-bottom-right.aml-tooltip .aml-tooltiptext{right:116%!important;left:unset!important}.aml_pb-bottom-left.aml-tooltip .aml-tooltiptext::after{right:100%}.aml_pb-bottom-right.aml-tooltip .aml-tooltiptext::after{left:100%}.iframe-layout{overflow-y:hidden}#promotion-frame{border-radius:8px;box-shadow:0 8px 32px rgba(108,115,141,.12)!important;position:fixed;display:block;width:360px;height:0;display:flex}#promotion-frame.mobile{position:fixed;width:100%;box-shadow:none;padding:0 6px}#iframe_promotion{width:100%;border-width:0;border-radius:8px;z-index:1000000;max-height:100%;height:100%}#autoAdsMaxLead_widget_promotion_popup{display:none}#autoAdsMaxLead_widget_promotion_popup.mobile{background-color:rgba(0,0,0,.4);width:100%;height:100%;position:fixed;left:0;top:0}#promotion-frame.mobile.horizontal{position:absolute;height:100%}.promotion-desktop-preview #promotion-frame{max-height:80vh!important}.promotion-mobile-preview.mobile #promotion-frame{max-width:calc(100vw - 13px)}#aml_pb_wrap:hover{cursor:pointer}.ring-animation{-webkit-animation:ring .6s 0s ease-out infinite;-moz-animation:ring .6s 0s ease-out infinite;-o-animation:ring .6s 0s ease-out infinite;animation:ring .6s 0s ease-out infinite}@keyframes ring{0%{transform:rotate(0) scale(1) skew(1deg)}20%{transform:rotate(25deg) scale(1) skew(1deg)}30%{transform:rotate(-25deg) scale(1) skew(1deg)}40%{transform:rotate(25deg) scale(1) skew(1deg)}50%{transform:rotate(0) scale(1) skew(1deg)}100%{transform:rotate(0) scale(1) skew(1deg)}}#aml_pb_wrap .call-trap-box.call-trap{position:absolute;top:14px;left:14px;border-radius:100%;width:32px;height:32px}.aml-highlight-item{background:linear-gradient(360deg,#e5ebef 0%,#eef2f5 50.52%,#fefefe 100%);box-shadow:0 16px 19px rgba(186,189,212,.2),inset 0 -1px 1px rgba(0,0,0,.25);border-radius:88px;width:auto;height:auto}.aml-highlight-item .aml-icon-box{width:60px;height:60px;border-radius:100%;display:inline-flex;align-items:center;justify-content:center}.aml-highlight-item .aml-icon-box .icon{width:60px;height:60px}.aml-highlight-item .icon{background-size:cover}.aml-highlight-item .text{line-height:43px;white-space:nowrap}.aml-highlight-item .text.aml-right{float:left!important;margin:4px 4px 0 16px;width:auto!important}.aml-highlight-item .aml-icon-box.aml-right{float:left!important;margin:4px}.aml-highlight-item .text.aml-left{float:right!important;margin:4px 16px 0 4px;width:auto!important}.aml-highlight-item .aml-icon-box.aml-left{float:right!important;margin:4px}.aml-text-transform-uppercase{text-transform:uppercase!important}.aml-overflow-hidden{overflow:hidden!important}#call-modal{position:fixed;max-height:576px;bottom:16px;width:300px;box-shadow:0 0 15px rgba(90,80,108,.2)!important;border-radius:16px}#call-modal:not(.mobile) #wrap-call.preview{max-height:500px}#call-modal.left{left:16px}#call-modal.right{right:16px}#call-modal.mobile{width:100%;height:100%;max-height:100%;bottom:0;border-radius:0!important;background-color:rgba(0,0,0,.4)}#iframe-call{height:100%;width:100%;border-radius:16px!important}#wrap-call.mobile{position:fixed;width:100%;padding:0 6px}#wrap-call.horizontal{height:100%!important;bottom:0;padding:0}.aml-notification-count-badge{width:24px;height:24px;background:linear-gradient(157.23deg,#e73604 8.86%,#f03400 38.81%,#bc2602 82.43%,#b72401 90.69%);border-radius:50%;position:absolute;z-index:10000;color:#fff;text-align:center;font-size:14px;line-height:24px;font-weight:700}.aml-banner-popup{display:none;position:fixed!important;top:50%;left:50%;transform:translate(-50%,-50%);-webkit-transform:translate(-50%,-50%);box-shadow:0 8px 32px rgba(108,115,141,.12)!important;padding:0!important;margin:0}.aml-banner-popup.mobile{max-width:100%;width:100%;height:100vh}.aml-banner-popup.mobile.horizontal:not(.banner-nine){height:100vh!important}.aml-banner-popup.mobile.banner-nine{max-width:none;height:auto}.aml-banner-popup.mobile.banner-nine.horizontal{width:auto}.aml-banner-popup.mobile.no-center{top:0;left:0;bottom:0;transform:translate(0,0);-webkit-transform:translate(0,0)}.aml-banner-popup.mobile.horizontal.horizontal-center{width:80%;top:50%;left:50%;transform:translate(-50%,-50%);-webkit-transform:translate(-50%,-50%)}.aml-banner-frame,.aml-contact_form-frame{width:100%;height:100%;position:relative;border:none;display:block}.aml-banner-popup.banner-three.desktop .aml-banner-frame{border:1px solid #dadada;border-radius:20px}.aml-contact_form-frame{border-radius:6px}.aml-banner-popup .aml-banner-close{position:absolute;width:48px;height:48px;top:0;right:0;z-index:2;display:flex;justify-content:center;align-items:center;cursor:pointer}.aml-banner-popup.mobile .aml-banner-close{width:48px;height:48px}.aml-banner-popup .aml-btn-close{width:24px;height:24px;background:url(../../../plugins/Simple-Contact/assets/css/images/banner_close.svg) no-repeat center center;background-color:#0006;border-radius:4px}.aml-banner-popup .aml-banner-power-by,.aml-contact_form-popup .aml-contact_form-power-by{position:absolute;width:114px;height:19px;background:#000;opacity:.5;border-radius:2px;color:#8f8f8f;font-size:10px;line-height:13px;display:flex;justify-content:center;align-items:center;bottom:-24px;left:50%;transform:translate(-50%)}.aml-contact_form-popup .aml-contact_form-power-by{color:#e6e6e6}.aml-banner-popup.desktop .aml-banner-power-by:hover,.aml-contact_form-popup.aml-pu-desktop .aml-contact_form-power-by{cursor:pointer}.aml-banner-popup.mobile .aml-banner-power-by,.aml-contact_form-popup.aml-pu-mobile .aml-contact_form-power-by{color:#8c8c8c}.aml-color-73{color:#737373!important}.aml-banner-popup.mobile.no-center .aml-banner-power-by{bottom:4px!important;background:none!important}.aml-banner-popup.mobile.no-center.banner-three .aml-banner-power-by{background:#000!important}.aml-banner-popup.mobile .aml-banner-power-by.horizontal{bottom:4px!important;background:none!important}.aml-banner-popup.mobile .aml-banner-power-by:not(.horizontal){color:#8c8c8c}.aml-banner-popup .aml-banner-power-by.horizontal.left{left:25%!important}.aml-banner-popup .aml-banner-power-by.horizontal.right{left:100%!important;transform:translate(-100%)!important}.aml-banner-popup .banner-nine-img{width:500px}.aml_dk-style-default.aml_dk-bottom-left .zalo-chat-widget{bottom:17px!important;right:auto!important;left:17px!important}.aml-banner-popup.mobile .banner-nine-img{width:100vw}.aml-banner-popup.mobile.horizontal .banner-nine-img{height:100vh;max-width:unset!important;width:auto;margin:auto}.aml-banner-rounded{border-radius:12px}.aml-banner-no-rounded{border-radius:unset}@media(min-width:980px){.aml-banner-popup.desktop{width:512px!important}}@media(min-width:1396px){.aml-banner-popup.desktop{width:600px!important}}@media(min-width:1876px){.aml-banner-popup.desktop{width:720px!important}}.aml-loading-div{z-index:2}.aml-fb-customerchat-close{z-index:2147483647!important;width:60px!important;height:60px!important;position:fixed!important;background-image:url(../../../plugins/Simple-Contact/assets/css/images/fb_icon_close.svg)!important;background-position:center!important;background-size:cover!important;cursor:pointer!important}.fb-customerchat iframe.aml-fb-hiding{bottom:-3000px!important}.fb-customerchat.fb_iframe_widget>span>iframe{width:399px!important}.aml-contact_form-popup.aml-pu-desktop{width:33%;max-width:600px;min-width:400px;border-radius:6px}.aml-contact_form-popup.aml-pu-mobile{width:100%;height:100%;margin:0;-webkit-overflow-scrolling:touch!important;overflow-y:scroll!important;border-radius:0!important}.aml-contact_form-popup.aml-pu-mobile #iframe_contact_form{border-radius:0!important}.autoAdsMaxLead_widget_contact_form_container{position:fixed;width:100%;height:100%;top:-3000px;left:0;overflow:auto}.autoAdsMaxLead_widget_contact_form_container.show{top:0}.autoAdsMaxLead_widget_contact_form_container.show.aml-form-not-overflow{display:flex!important;align-items:center!important}.aml-contact_form-popup{position:relative;margin:38px auto;background-color:#fff;box-sizing:content-box;letter-spacing:normal!important}.aml-contact_form-popup #iframe_contact_form{width:100%;height:100%;border:unset}.aml-contact_form-popup .autoAdsMaxLead-message-info{text-align:center!important;font-size:15px!important;color:#333!important;padding:15px 0 15px!important}.aml-pu-mobile .aml-contact_form-power-by{display:none}.simple-contact-mobile{display:none!important}@media only screen and (min-width:768px){.aml_dk-flex-container>div{width:54px!important;height:54px!important;margin:6px!important;background-size:100%!important;border:2px solid #fff!important;border-radius:50%!important}.aml_dk-style-gradient-default [class*='aml_dk-channel-']{background-size:100%!important}}.aml-tooltip .aml-tooltiptext{background-color:#1D243E;color:#fff}.aml_dk-top-right .aml-tooltip .aml-tooltiptext::after,.aml_dk-middle-right .aml-tooltip .aml-tooltiptext::after,.aml_dk-bottom-right .aml-tooltip .aml-tooltiptext::after{border-color:transparent transparent transparent #1D243E}.autoAdsMaxLead-widget:hover .aml-powered-by{visibility:visible;opacity:1}@media only screen and (max-width:767px){.aml_dk-flex-container>div{width:76.00px!important;height:58.00px!important;margin:0.00px!important;background-size:45px!important}.aml_dk-bottom-center .aml_dk-flex-container>div{height:70px!important;background-size:45px!important}.aml_dk-mobile.aml_dk-style-default.aml_dk-bottom-right>.aml_dk-flex-container{display:inline-block}.aml_dk-flex-item span{font-size:10.13px!important}.aml_dk-channel-google_map{background-image:url(../../../plugins/Simple-Contact/assets/images/widget_icon_map.svg)}.aml_dk-channel-zalo{background-image:url(../../../plugins/Simple-Contact/assets/images/widget_icon_zalo.svg)}.aml_dk-channel-facebook{background-image:url(../../../plugins/Simple-Contact/assets/images/widget_icon_messenger.svg)}.aml_dk-channel-click_to_call{background-image:url(../../../plugins/Simple-Contact/assets/images/widget_icon_click_to_call.svg)}.simple-contact-mobile{display:block!important}.simple-contact-desktop{display:none!important}.simple-contact-mobile .aml_dk-flex-item a{display:block;min-height:50px}.zalo-chat-widget{bottom:17px!important;right:6px!important}.aml_dk-channel-zalo-oa .zalo-chat-widget{bottom:2px!important;right:auto!important;left:5px}}.simple-contact-desktop:hover .aml-powered-by{opacity:1;visibility:visible}@charset "UTF-8";html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block}audio:not([controls]){display:none;height:0}progress{vertical-align:baseline}template,[hidden]{display:none}a{background-color:transparent}a:active,a:hover{outline-width:0}abbr[title]{border-bottom:none;text-decoration:none}b,strong{font-weight:inherit}b,strong{font-weight:bolder}dfn{font-style:italic}mark{background-color:#ff0;color:#000}small{font-size:80%;display:inline-block}img{border-style:none}svg:not(:root){overflow:hidden}button,input,select,textarea{font:inherit}optgroup{font-weight:700}button,input,select{overflow:visible}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{cursor:pointer}[disabled]{cursor:default}button,html [type=button],[type=reset],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}button:-moz-focusring,input:-moz-focusring{outline:1px dotted ButtonText}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}textarea{overflow:auto}[type=checkbox],[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}*,*:before,*:after{-webkit-box-sizing:border-box;box-sizing:border-box}html{-webkit-box-sizing:border-box;box-sizing:border-box;background-attachment:fixed;-webkit-tap-highlight-color:transparent}body{color:#777;scroll-behavior:smooth;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.xdebug-var-dump{position:relative;z-index:1000}hr{margin:15px 0;border-width:0;border-top:1px solid currentColor;opacity:.1}img{max-width:100%;height:auto;display:inline-block;vertical-align:middle}figure{margin:0}pre{background-color:#f1f1f1;border:1px solid #ddd;padding:20px;width:100%;overflow-x:auto}p:empty{display:none}a,button,input{-ms-touch-action:manipulation;touch-action:manipulation}ins{text-decoration:none}embed,iframe,object{max-width:100%}.col,.gallery-item,.columns{position:relative;margin:0;padding:0 15px 30px;width:100%}.col-fit{-webkit-box-flex:1;-ms-flex:1;flex:1}.col-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.col-last{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.col-inner{position:relative;margin-left:auto;margin-right:auto;width:100%;background-position:50% 50%;background-size:cover;background-repeat:no-repeat;-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto}.col-has-radius{overflow:hidden}@media screen and (min-width:850px){.col:first-child .col-inner{margin-left:auto;margin-right:0}.col+.col .col-inner{margin-right:auto;margin-left:0}}@media screen and (max-width:549px){.small-col-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}}@media screen and (min-width:850px){.large-col-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}}@media screen and (max-width:849px){.medium-col-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.col{padding-bottom:30px}}@media screen and (min-width:850px){.row-divided>.col+.col:not(.large-12){border-left:1px solid #ececec}.row-divided.row-reverse>.col+.col:not(.large-12){border-left:0;border-right:1px solid #ececec}.col-divided{padding-right:30px;border-right:1px solid #ececec}.col.col-divided:not(.col-first):last-child{border-right:0;padding-right:0;padding-left:30px;border-left:1px solid #ececec}.col-border{padding-right:0;border-right:1px solid #ececec}.col-border+.col,.col-divided+.col{padding-left:30px}}.dark .col-divided{border-color:rgba(255,255,255,.2)}.align-equal>.col{display:-webkit-box;display:-ms-flexbox;display:flex}.align-middle{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important;-ms-flex-item-align:center!important;align-self:center!important;vertical-align:middle!important}.align-bottom{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important;-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important;-ms-flex-item-align:end!important;align-self:flex-end!important;vertical-align:bottom!important}.align-top{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important;-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important;-ms-flex-item-align:start!important;align-self:flex-start!important;vertical-align:top!important}.align-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.align-right{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.small-1{max-width:8.3333333333%;-ms-flex-preferred-size:8.3333333333%;flex-basis:8.3333333333%}.small-2{max-width:16.6666666667%;-ms-flex-preferred-size:16.6666666667%;flex-basis:16.6666666667%}.small-3{max-width:25%;-ms-flex-preferred-size:25%;flex-basis:25%}.small-4{max-width:33.3333333333%;-ms-flex-preferred-size:33.3333333333%;flex-basis:33.3333333333%}.small-5{max-width:41.6666666667%;-ms-flex-preferred-size:41.6666666667%;flex-basis:41.6666666667%}.small-6{max-width:50%;-ms-flex-preferred-size:50%;flex-basis:50%}.small-7{max-width:58.3333333333%;-ms-flex-preferred-size:58.3333333333%;flex-basis:58.3333333333%}.small-8{max-width:66.6666666667%;-ms-flex-preferred-size:66.6666666667%;flex-basis:66.6666666667%}.small-9{max-width:75%;-ms-flex-preferred-size:75%;flex-basis:75%}.small-10{max-width:83.3333333333%;-ms-flex-preferred-size:83.3333333333%;flex-basis:83.3333333333%}.small-11{max-width:91.6666666667%;-ms-flex-preferred-size:91.6666666667%;flex-basis:91.6666666667%}.small-12{max-width:100%;-ms-flex-preferred-size:100%;flex-basis:100%}.small-columns-1>.col,.small-columns-1 .flickity-slider>.col{max-width:100%;-ms-flex-preferred-size:100%;flex-basis:100%}.small-columns-2>.col,.small-columns-2 .flickity-slider>.col{max-width:50%;-ms-flex-preferred-size:50%;flex-basis:50%}.small-columns-3>.col,.small-columns-3 .flickity-slider>.col{max-width:33.3333333333%;-ms-flex-preferred-size:33.3333333333%;flex-basis:33.3333333333%}.small-columns-4>.col,.small-columns-4 .flickity-slider>.col{max-width:25%;-ms-flex-preferred-size:25%;flex-basis:25%}.small-columns-5>.col,.small-columns-5 .flickity-slider>.col{max-width:20%;-ms-flex-preferred-size:20%;flex-basis:20%}.small-columns-6>.col,.small-columns-6 .flickity-slider>.col{max-width:16.6666666667%;-ms-flex-preferred-size:16.6666666667%;flex-basis:16.6666666667%}.small-columns-7>.col,.small-columns-7 .flickity-slider>.col{max-width:14.2857142857%;-ms-flex-preferred-size:14.2857142857%;flex-basis:14.2857142857%}.small-columns-8>.col,.small-columns-8 .flickity-slider>.col{max-width:12.5%;-ms-flex-preferred-size:12.5%;flex-basis:12.5%}@media screen and (min-width:550px){.medium-1{max-width:8.3333333333%;-ms-flex-preferred-size:8.3333333333%;flex-basis:8.3333333333%}.medium-2{max-width:16.6666666667%;-ms-flex-preferred-size:16.6666666667%;flex-basis:16.6666666667%}.medium-3{max-width:25%;-ms-flex-preferred-size:25%;flex-basis:25%}.medium-4{max-width:33.3333333333%;-ms-flex-preferred-size:33.3333333333%;flex-basis:33.3333333333%}.medium-5{max-width:41.6666666667%;-ms-flex-preferred-size:41.6666666667%;flex-basis:41.6666666667%}.medium-6{max-width:50%;-ms-flex-preferred-size:50%;flex-basis:50%}.medium-7{max-width:58.3333333333%;-ms-flex-preferred-size:58.3333333333%;flex-basis:58.3333333333%}.medium-8{max-width:66.6666666667%;-ms-flex-preferred-size:66.6666666667%;flex-basis:66.6666666667%}.medium-9{max-width:75%;-ms-flex-preferred-size:75%;flex-basis:75%}.medium-10{max-width:83.3333333333%;-ms-flex-preferred-size:83.3333333333%;flex-basis:83.3333333333%}.medium-11{max-width:91.6666666667%;-ms-flex-preferred-size:91.6666666667%;flex-basis:91.6666666667%}.medium-12{max-width:100%;-ms-flex-preferred-size:100%;flex-basis:100%}.medium-columns-1>.col,.medium-columns-1 .flickity-slider>.col{max-width:100%;-ms-flex-preferred-size:100%;flex-basis:100%}.medium-columns-2>.col,.medium-columns-2 .flickity-slider>.col{max-width:50%;-ms-flex-preferred-size:50%;flex-basis:50%}.medium-columns-3>.col,.medium-columns-3 .flickity-slider>.col{max-width:33.3333333333%;-ms-flex-preferred-size:33.3333333333%;flex-basis:33.3333333333%}.medium-columns-4>.col,.medium-columns-4 .flickity-slider>.col{max-width:25%;-ms-flex-preferred-size:25%;flex-basis:25%}.medium-columns-5>.col,.medium-columns-5 .flickity-slider>.col{max-width:20%;-ms-flex-preferred-size:20%;flex-basis:20%}.medium-columns-6>.col,.medium-columns-6 .flickity-slider>.col{max-width:16.6666666667%;-ms-flex-preferred-size:16.6666666667%;flex-basis:16.6666666667%}.medium-columns-7>.col,.medium-columns-7 .flickity-slider>.col{max-width:14.2857142857%;-ms-flex-preferred-size:14.2857142857%;flex-basis:14.2857142857%}.medium-columns-8>.col,.medium-columns-8 .flickity-slider>.col{max-width:12.5%;-ms-flex-preferred-size:12.5%;flex-basis:12.5%}}@media screen and (min-width:850px){.large-1{max-width:8.3333333333%;-ms-flex-preferred-size:8.3333333333%;flex-basis:8.3333333333%}.large-2{max-width:16.6666666667%;-ms-flex-preferred-size:16.6666666667%;flex-basis:16.6666666667%}.large-3{max-width:25%;-ms-flex-preferred-size:25%;flex-basis:25%}.large-4{max-width:33.3333333333%;-ms-flex-preferred-size:33.3333333333%;flex-basis:33.3333333333%}.large-5{max-width:41.6666666667%;-ms-flex-preferred-size:41.6666666667%;flex-basis:41.6666666667%}.large-6{max-width:50%;-ms-flex-preferred-size:50%;flex-basis:50%}.large-7{max-width:58.3333333333%;-ms-flex-preferred-size:58.3333333333%;flex-basis:58.3333333333%}.large-8{max-width:66.6666666667%;-ms-flex-preferred-size:66.6666666667%;flex-basis:66.6666666667%}.large-9{max-width:75%;-ms-flex-preferred-size:75%;flex-basis:75%}.large-10{max-width:83.3333333333%;-ms-flex-preferred-size:83.3333333333%;flex-basis:83.3333333333%}.large-11{max-width:91.6666666667%;-ms-flex-preferred-size:91.6666666667%;flex-basis:91.6666666667%}.large-12{max-width:100%;-ms-flex-preferred-size:100%;flex-basis:100%}.gallery-columns-1 .gallery-item,.large-columns-1>.col,.large-columns-1 .flickity-slider>.col{max-width:100%;-ms-flex-preferred-size:100%;flex-basis:100%}.gallery-columns-2 .gallery-item,.large-columns-2>.col,.large-columns-2 .flickity-slider>.col{max-width:50%;-ms-flex-preferred-size:50%;flex-basis:50%}.gallery-columns-3 .gallery-item,.large-columns-3>.col,.large-columns-3 .flickity-slider>.col{max-width:33.3333333333%;-ms-flex-preferred-size:33.3333333333%;flex-basis:33.3333333333%}.gallery-columns-4 .gallery-item,.large-columns-4>.col,.large-columns-4 .flickity-slider>.col{max-width:25%;-ms-flex-preferred-size:25%;flex-basis:25%}.gallery-columns-5 .gallery-item,.large-columns-5>.col,.large-columns-5 .flickity-slider>.col{max-width:20%;-ms-flex-preferred-size:20%;flex-basis:20%}.gallery-columns-6 .gallery-item,.large-columns-6>.col,.large-columns-6 .flickity-slider>.col{max-width:16.6666666667%;-ms-flex-preferred-size:16.6666666667%;flex-basis:16.6666666667%}.gallery-columns-7 .gallery-item,.large-columns-7>.col,.large-columns-7 .flickity-slider>.col{max-width:14.2857142857%;-ms-flex-preferred-size:14.2857142857%;flex-basis:14.2857142857%}.gallery-columns-8 .gallery-item,.large-columns-8>.col,.large-columns-8 .flickity-slider>.col{max-width:12.5%;-ms-flex-preferred-size:12.5%;flex-basis:12.5%}}.has-shadow>.col>.col-inner{background-color:#fff}.col-hover-focus .col-inner,.col-hover-fade .col-inner,.col-hover-blur .col-inner{-webkit-transition:all,.2s;-o-transition:all,.2s;transition:all,.2s}.col-hover-fade .col-inner{opacity:.6}.col-hover-fade:hover .col-inner{opacity:1}.col-hover-blur .col-inner{-webkit-filter:blur(3px);filter:blur(3px)}.col-hover-blur:hover .col-inner{-webkit-filter:blur(0);filter:blur(0)}.col-hover-focus:hover .col-inner{opacity:1}.row:hover .col-hover-focus .col:not(:hover){opacity:.6}body,.container,.full-width .ubermenu-nav,.container-width,.row{width:100%;margin-left:auto;margin-right:auto}.container{padding-left:15px;padding-right:15px}.container-width,.full-width .ubermenu-nav,.container,.row{max-width:1080px}.row.row-collapse{max-width:1050px}.row.row-small{max-width:1065px}.row.row-large{max-width:1110px}body.framed,body.framed header,body.framed .header-wrapper,body.boxed,body.boxed header,body.boxed .header-wrapper,body.boxed .is-sticky-section{max-width:1170px}@media screen and (min-width:850px){body.framed{margin:30px auto}}.flex-row{-js-display:flex;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;width:100%}.flex-row-start{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.flex-row-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.flex-row-col{-js-display:flex;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.text-center .flex-row{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.header .flex-row{height:100%}.flex-col{max-height:100%}.flex-grow{-webkit-box-flex:1;-ms-flex:1;flex:1;-ms-flex-negative:1;-ms-flex-preferred-size:auto!important}.flex-center{margin:0 auto}.flex-left{margin-right:auto}.flex-right{margin-left:auto}.flex-wrap{-ms-flex-wrap:wrap;flex-wrap:wrap}.flex-has-center>.nav-row>.flex-col:not(.flex-center),.flex-has-center>.flex-row>.flex-col:not(.flex-center),.flex-has-center>.flex-col:not(.flex-center){-webkit-box-flex:1;-ms-flex:1;flex:1}@media(max-width:849px){.medium-flex-wrap{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-flow:column wrap;flex-flow:column wrap}.medium-flex-wrap .flex-col{padding-top:5px;padding-bottom:5px;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;width:100%}}@media(max-width:549px){.small-flex-wrap{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-flow:column wrap;flex-flow:column wrap}.small-flex-wrap .flex-col{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;width:100%}}@media(min-width:850px){.col2-set,.u-columns{-js-display:flex;display:-webkit-box;display:-ms-flexbox;display:flex}.col2-set>div+div,.u-columns>div+div{padding-left:30px}}.row-grid .box .image-cover{padding:0;height:100%}.grid-col>.col-inner{height:100%}.grid-col .slider:not(.flickity-enabled),.grid-col>.col-inner>.img,.grid-col>.col-inner>.img div,.grid-col>.col-inner>.img .img-inner>img,.grid-col .slider>.img,.grid-col .flickity-slider>.img,.grid-col .col-inner>.img,.grid-col .slider-wrapper,.grid-col .slider,.grid-col .banner,.grid-col .box,.grid-col .box-image,.grid-col .box-image img,.grid-col .image-cover,.grid-col .image-cover img{-o-object-fit:cover;object-fit:cover;width:100%;position:absolute!important;top:0;bottom:0;height:100%;padding:0!important}.grid-col .box-image img{font-family:"object-fit: cover;"}.grid-col .flickity-viewport{height:100%!important}.grid-col .box:not(.box-shade):not(.box-overlay):not(.box-badge) .box-text{background-color:rgba(255,255,255,.95);position:absolute;bottom:0;padding-left:1.5em;padding-right:1.5em}@media all and (-ms-high-contrast:none){.payment-icon svg{max-width:50px}.slider-nav-circle .flickity-prev-next-button svg{height:36px!important}.nav>li>a>i{top:-1px}}.row,.gallery{width:100%;-js-display:flex;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap}.row>div:not(.col):not([class^=col-]){width:100%!important}.row.row-masonry,.row.row-grid{display:block}.row.row-masonry>.col,.row.row-grid>.col{float:left}.row .gallery,.row .row:not(.row-collapse),.container .row:not(.row-collapse),.lightbox-content .row:not(.row-collapse){padding-left:0;padding-right:0;margin-left:-15px;margin-right:-15px;width:auto}.row .container{padding-left:0;padding-right:0}.slider-wrapper+.row:not(.row-collapse),.banner-grid-wrapper+.row:not(.row-collapse),.banner+.row:not(.row-collapse),.section+.row:not(.row-collapse){margin-top:30px}.row-full-width{max-width:100%!important}.row-isotope{-webkit-transition:height .3s;-o-transition:height .3s;transition:height .3s}.row-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}@media screen and (max-width:549px){.small-row-reverse{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}}@media screen and (max-width:849px){.medium-row-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}}.row-collapse{padding:0}.row-collapse>.flickity-viewport>.flickity-slider>.col,.row-collapse>.col{padding:0!important}.row-collapse>.col .container{max-width:100%}.row .row-small:not(.row-collapse),.container .row-small:not(.row-collapse){margin-left:-10px;margin-right:-10px;margin-bottom:0}.row-small>.flickity-viewport>.flickity-slider>.col,.row-small>.col{padding:0 9.8px 19.6px;margin-bottom:0}.row .row-xsmall:not(.row-collapse),.container .row-xsmall:not(.row-collapse){margin-left:-2px;margin-right:-2px;margin-bottom:0}.row-xsmall>.flickity-viewport>.flickity-slider>.col,.row-xsmall>.col{padding:0 2px 3px;margin-bottom:0}@media screen and (min-width:850px){.row-large{padding-left:0;padding-right:0}.row .row-large:not(.row-collapse),.container .row-large:not(.row-collapse){margin-left:-30px;margin-right:-30px;margin-bottom:0}.row-large>.flickity-viewport>.flickity-slider>.col,.row-large>.col{padding:0 30px 30px;margin-bottom:0}}.row-dashed,.row-solid{overflow:hidden}.row-dashed .col,.row-solid .col{position:relative;padding:0}.row-dashed .col-inner,.row-solid .col-inner{padding:15px}.row-dashed .col:before,.row-solid .col:before{position:absolute;content:" ";height:100%;top:0;left:-1px;border-left:1px dashed #ddd}.row-dashed .col:after,.row-solid .col:after{position:absolute;content:" ";width:100%;height:0;top:auto;left:0;bottom:-1px;border-bottom:1px dashed #ddd}.row-solid .col:before{border-left-style:solid}.row-solid .col:after{border-bottom-style:solid}.dark .row-solid .col:before,.dark .row-solid .col:after,.dark .row-dashed .col:before,.dark .row-dashed .col:after{border-color:rgba(255,255,255,.2)}.block-html-after-header .row .col{padding-bottom:0}.wpb-js-composer .row:before{display:block!important}.section{padding:30px 0;position:relative;min-height:auto;width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row;flex-flow:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.section.dark{background-color:#666}.section-bg{overflow:hidden}.section-bg,.section-content{width:100%}.section-content{z-index:1}.has-parallax{overflow:hidden}.container .section,.row .section{padding-left:30px;padding-right:30px}.is-sticky-section+.sticky-section-helper{min-height:100vh!important;background-color:#000}.sticky-section-helper+div{position:relative;background-color:#fff;-webkit-box-shadow:15px 15px 15px 15px rgba(0,0,0,.1);box-shadow:15px 15px 15px 15px rgba(0,0,0,.1)}.sticky-section{padding:0!important;height:100%!important;height:100vh!important;width:100%!important;top:0;left:0;right:0;margin:0 auto;background-color:#fff;position:relative;overflow:hidden}.is-sticky-section{position:fixed!important}.nav-dropdown{position:absolute;min-width:260px;max-height:0;z-index:9;padding:20px 0 20px;opacity:0;margin:0;-webkit-transition:opacity .25s;-o-transition:opacity .25s;transition:opacity .25s;color:#777;background-color:#fff;text-align:left;display:table;left:-99999px}.dark.nav-dropdown{color:#f1f1f1}.nav-dropdown:after{visibility:hidden;display:block;content:"";clear:both;height:0}.nav-dropdown li{display:block;margin:0;vertical-align:top}.nav-dropdown li ul{margin:0;padding:0}.nav-dropdown>li.html{min-width:260px}li.current-dropdown>.nav-dropdown,.next-prev-thumbs li.has-dropdown:hover>.nav-dropdown,.no-js li.has-dropdown:hover>.nav-dropdown{opacity:1;max-height:inherit;left:-15px}.nav-right li.current-dropdown:last-child>.nav-dropdown,.nav-right li.has-dropdown:hover:last-child>.nav-dropdown{left:auto;right:-15px}.nav-column li>a,.nav-dropdown>li>a{width:auto;display:block;padding:10px 20px;line-height:1.3}.nav-column>li:last-child:not(.nav-dropdown-col)>a,.nav-dropdown>li:last-child:not(.nav-dropdown-col)>a{border-bottom:0!important}.dropdown-uppercase.nav-dropdown .nav-column>li>a,.nav-dropdown.dropdown-uppercase>li>a{text-transform:uppercase;font-size:.85em}.nav-dropdown>li.nav-dropdown-col,.nav-dropdown>li.image-column{text-align:left;display:table-cell;white-space:nowrap;width:160px;min-width:160px}.nav-dropdown>li.nav-dropdown-col:not(:last-child),.nav-dropdown>li.image-column:not(:last-child){border-right:1px solid transparent}.nav-dropdown .menu-item-has-children>a,.nav-dropdown .title>a,.nav-dropdown .nav-dropdown-col>a{text-transform:uppercase;font-size:.8em;font-weight:bolder;color:#000}.nav-dropdown .nav-dropdown-col .menu-item-has-children{margin-top:5px}.nav-dropdown li.image-column{margin:0!important;padding:0!important;border:0!important}.nav-dropdown li.image-column>a{line-height:0!important;font-size:0!important;padding:0!important;margin-left:0!important;margin-right:0!important;margin-top:-20px!important;margin-bottom:-20px!important}.nav-dropdown li.image-column>a img{margin:0;display:block;width:100%}.nav-dropdown li.image-column>a:hover{opacity:.8}.nav-dropdown-default li.image-column:first-child>a{margin-left:-20px!important;margin-right:20px!important}.nav-dropdown-default li.image-column:last-child>a{margin-right:-20px!important}.nav-dropdown.nav-dropdown-bold>li.nav-dropdown-col,.nav-dropdown.nav-dropdown-simple>li.nav-dropdown-col{border-color:#f1f1f1}.nav-dropdown-default .nav-column li>a,.nav-dropdown.nav-dropdown-default>li>a{padding-left:0;padding-right:0;margin:0 10px;border-bottom:1px solid #ececec}.nav-dropdown-default{padding:20px}.nav-dropdown-bold .nav-column li>a,.nav-dropdown.nav-dropdown-bold>li>a{margin:0 10px;padding-left:10px;border-radius:10px;padding-right:5px}.nav-dropdown-bold .nav-column li>a:hover,.nav-dropdown.nav-dropdown-bold>li>a:hover,.nav-dropdown-bold.dark .nav-column li>a:hover,.nav-dropdown.nav-dropdown-bold.dark>li>a:hover{color:#fff!important;background-color:#446084}.nav-dropdown-simple .nav-column li>a:hover,.nav-dropdown.nav-dropdown-simple>li>a:hover{background-color:rgba(0,0,0,.03)}.nav-dropdown.nav-dropdown-simple li.html,.nav-dropdown.nav-dropdown-bold li.html{padding:0 20px 10px}.menu-item-has-block .nav-dropdown{padding:0}li.current-dropdown>.nav-dropdown-full,li.has-dropdown:hover>.nav-dropdown-full{position:fixed;margin-left:0!important;margin-right:0!important;left:50%!important;-webkit-transition:opacity .3s!important;-o-transition:opacity .3s!important;transition:opacity .3s!important;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);right:auto;width:100%;max-width:1150px!important;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.nav-dropdown-full>li.nav-dropdown-col{white-space:normal}.nav-dropdown-has-arrow li.has-dropdown:after,.nav-dropdown-has-arrow li.has-dropdown:before{bottom:-2px;z-index:10;opacity:0;left:50%;border:solid transparent;content:"";height:0;width:0;position:absolute;pointer-events:none}.nav-dropdown-has-arrow li.has-dropdown:after{border-color:rgba(221,221,221,0);border-bottom-color:#fff;border-width:8px;margin-left:-8px}.nav-dropdown-has-arrow li.has-dropdown:before{z-index:-999;border-width:11px;margin-left:-11px}.nav-dropdown-has-arrow li.has-dropdown.menu-item-design-container-width:after,.nav-dropdown-has-arrow li.has-dropdown.menu-item-design-container-width:before,.nav-dropdown-has-arrow li.has-dropdown.menu-item-design-full-width:after,.nav-dropdown-has-arrow li.has-dropdown.menu-item-design-full-width:before{display:none}.nav-dropdown-has-arrow .ux-nav-vertical-menu .menu-item-design-default:after,.nav-dropdown-has-arrow .ux-nav-vertical-menu .menu-item-design-default:before,.nav-dropdown-has-arrow .ux-nav-vertical-menu .menu-item-design-custom-size:after,.nav-dropdown-has-arrow .ux-nav-vertical-menu .menu-item-design-custom-size:before{display:none}.nav-dropdown-has-shadow .nav-dropdown{-webkit-box-shadow:1px 1px 15px rgba(0,0,0,.15);box-shadow:1px 1px 15px rgba(0,0,0,.15)}.nav-dropdown-has-arrow.nav-dropdown-has-border li.has-dropdown:before{border-bottom-color:#ddd}.nav-dropdown-has-border .nav-dropdown{border:2px solid #ddd}.nav-dropdown-has-arrow li.current-dropdown.has-dropdown:before,.nav-dropdown-has-arrow li.current-dropdown.has-dropdown:after{-webkit-transition:opacity .25s;-o-transition:opacity .25s;transition:opacity .25s;opacity:1}.label-new.menu-item>a:after,.label-hot.menu-item>a:after,.label-sale.menu-item>a:after,.label-popular.menu-item>a:after{content:"";display:inline-block;font-size:9px;line-height:9px;text-transform:uppercase;letter-spacing:-.1px;margin-left:4px;background-color:#000;font-weight:bolder;border-radius:2px;color:#fff;padding:2px 3px 3px;position:relative;top:-2px}.label-new.menu-item>a:after{background-color:#446084}.label-sale.menu-item>a:after{background-color:#d26e4b}.label-popular.menu-item>a:after{background-color:#7a9c59}.label-hot.menu-item>a:after{background-color:#b20000}.nav p{margin:0;padding-bottom:0}.nav,.nav ul:not(.nav-dropdown){margin:0;padding:0}.nav>li>a.button,.nav>li>button{margin-bottom:0}.nav{width:100%;position:relative;display:inline-block;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.nav>li{display:inline-block;list-style:none;margin:0;padding:0;position:relative;margin:0 7px;-webkit-transition:background-color .3s;-o-transition:background-color .3s;transition:background-color .3s}.nav>li>a{padding:10px 0;display:inline-block;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.html .nav>li>a{padding-top:0;padding-bottom:0}.nav-small .nav>li>a,.nav.nav-small>li>a{vertical-align:top;padding-top:5px;padding-bottom:5px;font-weight:400}.nav-small.nav>li.html{font-size:.75em}.nav-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.nav-fill{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.nav-left{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.nav-right{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}@media(max-width:849px){.medium-nav-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}}@media(max-width:549px){.small-nav-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}}.nav>li>a,.nav-dropdown>li>a,.nav-column>li>a,.nav-vertical-fly-out>li>a{color:rgba(102,102,102,.85);-webkit-transition:all .2s;-o-transition:all .2s;transition:all .2s}.nav-dropdown>li>a,.nav-column>li>a{display:block}.nav>li>a:hover,.nav>li.active>a,.nav>li.current>a,.nav>li>a.active,.nav>li>a.current,.nav-dropdown li.active>a,.nav-column li.active>a,.nav-dropdown>li>a:hover,.nav-column li>a:hover,.nav-vertical-fly-out>li>a:hover{color:rgba(17,17,17,.85)}.nav li:first-child{margin-left:0!important}.nav li:last-child{margin-right:0!important}.nav-uppercase>li>a{letter-spacing:.02em;text-transform:uppercase;font-weight:bolder}.nav-thin>li>a{font-weight:thin!important}@media(min-width:850px){.nav-divided>li{margin:0 .7em}.nav-divided>li+li>a:after{content:"";position:absolute;top:50%;width:1px;border-left:1px solid rgba(0,0,0,.1);height:15px;margin-top:-7px;left:-1em}.nav-divided>li+li.icon-top>a:after{height:50px;margin-top:-25px}}li.html .row,li.html form,li.html select,li.html input{margin:0}li.html>.button{margin-bottom:0}li.hide-title>a{display:none!important}.nav-pagination>li>span,.nav-pagination>li>a{font-size:1.1em;display:block;height:2.25em;line-height:2em;text-align:center;width:auto;min-width:2.25em;padding:0 7px;font-weight:bolder;border-radius:99px;border:2px solid currentColor;-webkit-transition:all .3s;-o-transition:all .3s;transition:all .3s;vertical-align:top}.nav-pagination>li i{font-size:1.2em;vertical-align:middle;top:-1px}.nav-pagination>li>.current,.nav-pagination>li>span:hover,.nav-pagination>li>a:hover{border-color:#446084;background-color:#446084;color:#fff}.off-canvas .mobile-sidebar-slide{position:fixed;top:0;bottom:0;width:100%;overflow:hidden}.off-canvas .mobile-sidebar-slide .sidebar-menu{height:100%;padding-top:0;padding-bottom:0;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;-o-transition:transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;-webkit-transform:translateX(0%);-ms-transform:translateX(0%);transform:translateX(0%);will-change:transform}.mobile-sidebar-levels-1 .nav-slide>li>ul.children,.mobile-sidebar-levels-1 .nav-slide>li>.sub-menu{position:fixed;top:0;bottom:0;width:100%;padding-top:20px;padding-right:0;padding-bottom:20px;left:100%;opacity:1;display:none;overflow:visible;overflow-y:auto;-webkit-transform:none;-ms-transform:none;transform:none;-webkit-overflow-scrolling:touch}.mobile-sidebar-levels-1 .nav-slide>li>ul.children>li,.mobile-sidebar-levels-1 .nav-slide>li>.sub-menu>li{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mobile-sidebar-levels-1 .nav-slide>li>ul.children.is-current-slide,.mobile-sidebar-levels-1 .nav-slide>li>.sub-menu.is-current-slide{display:block}.mobile-sidebar-levels-1 .nav-slide>li>ul.children.is-current-parent,.mobile-sidebar-levels-1 .nav-slide>li>.sub-menu.is-current-parent{overflow-y:hidden;width:200%;padding-right:100%}.mobile-sidebar-levels-2 .nav-slide>li>ul.children>li:not(.nav-slide-header),.mobile-sidebar-levels-2 .nav-slide>li>.sub-menu>li:not(.nav-slide-header){margin-top:0;margin-bottom:0;border-top:1px solid #ececec;-webkit-transition:background-color .3s;-o-transition:background-color .3s;transition:background-color .3s}.mobile-sidebar-levels-2 .nav-slide>li>ul.children>li:not(.nav-slide-header)>a,.mobile-sidebar-levels-2 .nav-slide>li>.sub-menu>li:not(.nav-slide-header)>a{padding-top:15px;padding-bottom:15px;padding-left:20px;text-transform:uppercase;font-size:.8em;letter-spacing:.02em;color:rgba(102,102,102,.85)}.mobile-sidebar-levels-2 .nav-slide>li>ul.children>li:not(.nav-slide-header).active,.mobile-sidebar-levels-2 .nav-slide>li>ul.children>li:not(.nav-slide-header):hover,.mobile-sidebar-levels-2 .nav-slide>li>.sub-menu>li:not(.nav-slide-header).active,.mobile-sidebar-levels-2 .nav-slide>li>.sub-menu>li:not(.nav-slide-header):hover{background-color:rgba(0,0,0,.05)}.mobile-sidebar-levels-2 .nav-slide>li>ul.children>li:not(.nav-slide-header)>ul.children,.mobile-sidebar-levels-2 .nav-slide>li>ul.children>li:not(.nav-slide-header)>.sub-menu,.mobile-sidebar-levels-2 .nav-slide>li>.sub-menu>li:not(.nav-slide-header)>ul.children,.mobile-sidebar-levels-2 .nav-slide>li>.sub-menu>li:not(.nav-slide-header)>.sub-menu{position:fixed;top:0;bottom:0;width:100%;padding-top:20px;padding-right:0;padding-bottom:20px;left:200%;opacity:1;display:none;overflow:visible;overflow-y:auto;-webkit-transform:none;-ms-transform:none;transform:none;-webkit-overflow-scrolling:touch}.mobile-sidebar-levels-2 .nav-slide>li>ul.children>li:not(.nav-slide-header)>ul.children>li,.mobile-sidebar-levels-2 .nav-slide>li>ul.children>li:not(.nav-slide-header)>.sub-menu>li,.mobile-sidebar-levels-2 .nav-slide>li>.sub-menu>li:not(.nav-slide-header)>ul.children>li,.mobile-sidebar-levels-2 .nav-slide>li>.sub-menu>li:not(.nav-slide-header)>.sub-menu>li{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mobile-sidebar-levels-2 .nav-slide>li>ul.children>li:not(.nav-slide-header)>ul.children.is-current-slide,.mobile-sidebar-levels-2 .nav-slide>li>ul.children>li:not(.nav-slide-header)>.sub-menu.is-current-slide,.mobile-sidebar-levels-2 .nav-slide>li>.sub-menu>li:not(.nav-slide-header)>ul.children.is-current-slide,.mobile-sidebar-levels-2 .nav-slide>li>.sub-menu>li:not(.nav-slide-header)>.sub-menu.is-current-slide{display:block}.mobile-sidebar-levels-2 .nav-slide>li>ul.children>li:not(.nav-slide-header)>ul.children.is-current-parent,.mobile-sidebar-levels-2 .nav-slide>li>ul.children>li:not(.nav-slide-header)>.sub-menu.is-current-parent,.mobile-sidebar-levels-2 .nav-slide>li>.sub-menu>li:not(.nav-slide-header)>ul.children.is-current-parent,.mobile-sidebar-levels-2 .nav-slide>li>.sub-menu>li:not(.nav-slide-header)>.sub-menu.is-current-parent{overflow-y:hidden;width:200%;padding-right:100%}.nav-slide{height:100%;padding-top:20px;overflow:visible;overflow-y:auto;-webkit-overflow-scrolling:auto}.nav-slide .active>.toggle{-webkit-transform:none;-ms-transform:none;transform:none}.nav-slide>li{-ms-flex-negative:0;flex-shrink:0}.nav-slide-header .toggle{position:relative!important;top:0!important;margin-left:0!important;padding-left:5px;text-align:left;width:100%}.nav-slide-header .toggle i{margin-right:2px;font-size:1.4em}.text-center .nav-slide-header .toggle{width:auto;margin-left:auto!important;margin-right:auto!important}.nav-line-bottom>li>a:before,.nav-line-grow>li>a:before,.nav-line>li>a:before{content:" ";position:absolute;top:0;left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);width:100%;background-color:#446084;-webkit-transition:all .3s;-o-transition:all .3s;transition:all .3s;opacity:0;height:3px}.nav-line-bottom>li:hover>a:before,.nav-line-grow>li:hover>a:before,.nav-line-bottom>li.active>a:before,.nav-line-grow>li.active>a:before,.nav-line>li.active>a:before,.nav-line>li:hover>a:before{opacity:1}.nav:hover>li:not(:hover)>a:before{opacity:0}.tabbed-content .nav-line-bottom:before{top:auto;bottom:0}.nav-line-grow>li>a:before{width:0%}.nav-line-grow>li.active>a:before,.nav-line-grow>li:hover>a:before{width:100%}.nav-line-bottom>li:before,.nav-line-bottom>li:after{display:none}.nav-line-bottom>li>a:before{top:auto;bottom:0}.nav-box>li.active>a,.nav-pills>li.active>a{opacity:1;color:#fff;background-color:#446084}.nav-tabs>li.active>a{background-color:#fff}.nav-dark .nav.nav-tabs>li.active>a{color:#000}.nav-outline>li.active>a{color:#446084;border-color:currentColor}.tabbed-content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap}.tabbed-content .nav,.tabbed-content .tab-panels{width:100%}.tab-panels{padding-top:1em}.tab-panels .entry-content{padding:0}.tab-panels .panel:not(.active){zoom:1;visibility:hidden;height:0;padding:0;display:block;overflow:hidden;opacity:0}.tab-panels .panel.active{display:block!important}.nav-box>li,.nav-tabs>li,.nav-outline>li,.nav-pills>li{margin:0}.nav-box>li>a{padding:0 .75em;line-height:2.5em}.nav-pills>li>a{padding:0 .75em;border-radius:99px;line-height:2.5em}.nav-tabs>li>a{border-top:2px solid #ddd;border-left:1px solid #ddd;border-right:1px solid #ddd;background-color:rgba(0,0,0,.04);padding-left:15px;padding-right:15px}.nav-tabs>li.active>a{border-top-color:#446084}.nav-dark .nav-tabs>li:not(.active)>a{background-color:rgba(255,255,255,.1);border-color:transparent}.tabbed-content .nav-tabs>li{margin:0 .1em;margin-bottom:-1px}.nav-tabs+.tab-panels{border:1px solid #ddd;background-color:#fff;padding:30px}.nav-outline>li>a{line-height:2.4em;padding:0 .75em;position:relative;z-index:10;border:2px solid transparent;border-radius:32px}@media(min-width:850px){.tabbed-content .nav-vertical{padding-top:0;width:25%}.nav-vertical+.tab-panels{margin-top:0!important;border-left:1px solid #ddd;padding:0 30px 30px;-webkit-box-flex:1;-ms-flex:1;flex:1}.tabbed-content .nav-vertical.nav-outline{padding-right:15px}}@media(max-width:549px){.small-nav-collapse>li{width:100%;margin:0!important}.small-nav-collapse>li a{width:100%;display:block}}@media(max-width:549px){.small-nav-touch{-webkit-overflow-scrolling:touch;overflow-x:auto;overflow-y:hidden;white-space:nowrap;-ms-flex-flow:nowrap;flex-flow:nowrap}.small-nav-touch>li{display:inline-block}}.sidebar-menu-tabs__tab{-webkit-box-flex:1;-ms-flex:1 0 50%;flex:1 0 50%;max-width:50%;list-style-type:none;background-color:rgba(0,0,0,.02);text-align:center}.sidebar-menu-tabs__tab.active{background-color:rgba(0,0,0,.05)}.sidebar-menu-tabs__tab-text{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.sidebar-menu-tabs.nav>li{margin:0}.sidebar-menu-tabs.nav>li>a{display:-webkit-box;display:-ms-flexbox;display:flex;padding:15px 10px}.toggle{height:auto;width:45px;line-height:1;-webkit-box-shadow:none!important;box-shadow:none!important;padding:0;color:currentColor;opacity:.6;margin:0 5px 0 0}.toggle i{font-size:1.8em;-webkit-transition:all .3s;-o-transition:all .3s;transition:all .3s}.toggle:focus{color:currentColor}.toggle:hover{cursor:pointer;opacity:1}.active>.toggle{-webkit-transform:rotate(-180deg);-ms-transform:rotate(-180deg);transform:rotate(-180deg)}.active>ul.children{display:block!important}.active>ul.sub-menu:not(.nav-dropdown){display:block!important}.widget .toggle{width:1em;min-height:1em;margin:0 0 0 5px}.widget .toggle i{top:1px;font-size:1.2em}.nav.nav-vertical{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-flow:column;flex-flow:column}.nav.nav-vertical li{list-style:none;margin:0;width:100%}.nav-vertical li li{font-size:1em;padding-left:.5em}.nav-vertical .image-column{display:none!important}.nav-vertical>li{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.nav-vertical>li ul{width:100%}.nav-vertical li li.menu-item-has-children{margin-bottom:1em}.nav-vertical li li.menu-item-has-children:not(:first-child){margin-top:1em}.nav-vertical>li>ul>li a,.nav-vertical>li>a{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:auto;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.nav-vertical li li.menu-item-has-children>a{color:#000;text-transform:uppercase;font-size:.8em;font-weight:bolder}.nav-vertical>li.html{padding-top:1em;padding-bottom:1em}.nav-vertical>li>ul li a{-webkit-transition:color .2s;-o-transition:color .2s;transition:color .2s;color:#666}.nav-vertical>li>ul li a:hover{opacity:1;color:#111}.nav-vertical>li>ul{margin:0 0 2em;padding-left:1em}.nav .children{position:fixed;opacity:0;left:-99999px;-webkit-transition:background-color .6s,opacity .3s,-webkit-transform .3s;transition:background-color .6s,opacity .3s,-webkit-transform .3s;-o-transition:background-color .6s,transform .3s,opacity .3s;transition:background-color .6s,transform .3s,opacity .3s;transition:background-color .6s,transform .3s,opacity .3s,-webkit-transform .3s;-webkit-transform:translateX(-10px);-ms-transform:translateX(-10px);transform:translateX(-10px)}.nav:not(.nav-slide) .active>.children{position:inherit;opacity:1;left:auto;padding-bottom:30px;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}.nav-sidebar.nav-vertical>li.menu-item.active,.nav-sidebar.nav-vertical>li.menu-item:hover{background-color:rgba(0,0,0,.05)}.nav-sidebar.nav-vertical>li+li{border-top:1px solid #ececec}.dark .nav-sidebar.nav-vertical>li+li{border-color:rgba(255,255,255,.2)}.nav-vertical>li+li,.nav-vertical-fly-out>li+li{border-top:1px solid #ececec}.nav-vertical.nav-line>li>a:before{right:-2px;z-index:1;left:auto;width:3px;height:100%}.nav-vertical.nav-tabs>li>a{border:0}.nav-vertical.nav-tabs>li.active>a{border-left:3px solid #446084}.text-center .toggle{margin-left:-35px}.text-center .nav-vertical li{border:0}.text-center.nav-vertical li li,.text-center .nav-vertical li li{padding-left:0}@media screen and (max-width:549px){.small-nav-vertical{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-flow:column;flex-flow:column;margin-bottom:20px}.small-nav-vertical>li{list-style:none;margin:0!important;width:100%;border-bottom:1px solid #ececec}}.nav-vertical .mega-menu-item{width:100%}.nav-vertical .social-icons,.nav-vertical .header-button{display:block;width:100%}@media screen and (min-width:849px){.col-divided>.col-inner>.nav-wrapper>.nav-vertical{width:calc(100% + 31px)}}.header-vertical-menu__opener{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:12px 15px;width:250px;height:50px;font-weight:600;font-size:.9em;background-color:#446084}.header-vertical-menu__opener .icon-menu{font-size:1.7em;margin-right:10px}.header-vertical-menu__tagline{display:block;font-size:.9em;font-weight:400;line-height:1.3}.header-vertical-menu__title{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.header-vertical-menu__fly-out{position:absolute;z-index:9;opacity:0;visibility:hidden;width:250px;background-color:#fff}.header-vertical-menu__fly-out .nav-vertical-fly-out{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.header-vertical-menu__fly-out .nav-vertical-fly-out>li.menu-item{position:static;margin:0;list-style:none}.header-vertical-menu__fly-out .nav-vertical-fly-out>li.menu-item[class^=label-]>a:after,.header-vertical-menu__fly-out .nav-vertical-fly-out>li.menu-item[class*=" label-"]>a:after{top:0;-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.header-vertical-menu__fly-out .nav-vertical-fly-out>li.menu-item>a>i.icon-angle-down{margin-left:auto;margin-right:-.1em;-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3;-webkit-transform:rotate(-90deg);-ms-transform:rotate(-90deg);transform:rotate(-90deg)}.header-vertical-menu__fly-out .nav-vertical-fly-out>li.menu-item>a{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:10px 15px}.header-vertical-menu__fly-out .nav-vertical-fly-out li.has-icon-left>a>i,.header-vertical-menu__fly-out .nav-vertical-fly-out li.has-icon-left>a>svg,.header-vertical-menu__fly-out .nav-vertical-fly-out li.has-icon-left>a>img{margin-right:10px}.header-vertical-menu__fly-out .nav-top-link{font-size:.9em;-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.header-vertical-menu__fly-out .current-dropdown .nav-dropdown{top:0;left:100%!important}.header-vertical-menu__fly-out .current-dropdown.menu-item-design-custom-size .nav-dropdown{min-height:100%}.header-vertical-menu__fly-out--open{opacity:1;visibility:visible}.stuck .header-vertical-menu__fly-out,.sticky-hide-on-scroll--active .header-vertical-menu__fly-out{opacity:0;visibility:hidden}.header-wrapper:not(.stuck) .header-vertical-menu__fly-out{-webkit-transition:opacity .25s,visibility .25s;-o-transition:opacity .25s,visibility .25s;transition:opacity .25s,visibility .25s}.header-vertical-menu__fly-out.has-shadow{-webkit-box-shadow:1px 1px 15px rgba(0,0,0,.15);box-shadow:1px 1px 15px rgba(0,0,0,.15)}.header-vertical-menu:hover .header-vertical-menu__fly-out{opacity:1;visibility:visible}.badge-container{margin:30px 0 0 0}.badge{display:table;z-index:20;pointer-events:none;height:2.8em;width:2.8em;-webkit-backface-visibility:hidden;backface-visibility:hidden}.badge.top{left:0}.badge-inner{display:table-cell;vertical-align:middle;text-align:center;width:100%;height:100%;background-color:#446084;line-height:.85;color:#fff;font-weight:bolder;padding:2px;white-space:nowrap;-webkit-transition:background-color .3s,color .3s,border .3s;-o-transition:background-color .3s,color .3s,border .3s;transition:background-color .3s,color .3s,border .3s}.badge-small{width:2.3em;height:2.3em}.badge-small .badge-inner{line-height:.7}.badge+.badge{opacity:.9;width:2.5em;height:2.5em}.badge+.badge+.badge{opacity:.8}.badge-frame .badge-inner,.badge-outline .badge-inner{color:#446084;background-color:#fff;border:2px solid currentColor}.has-hover:hover .badge-outline .badge-inner{border-color:#446084;background-color:#446084;color:#fff}.badge-outline,.badge-circle{margin-left:-.4em}.badge-circle-inside{margin-left:1em}.badge-circle+.badge{margin-top:-.4em;margin-left:-.4em}.badge-circle-inside .badge-inner,.badge-circle .badge-inner{border-radius:999px}.badge-frame .badge-inner,.widget .badge-outline .badge-inner{background-color:transparent}.badge-frame{height:2em;margin-left:-4px}.widget .badge{margin:0!important}.dark .widget .badge-outline .badge-inner{color:#fff;opacity:.7}.row-collapse .badge-circle{margin-left:15px}.banner{position:relative;background-color:#446084;width:100%;min-height:30px}.banner-bg{overflow:hidden}.banner-layers{max-height:100%;height:100%;position:relative}@media(max-width:549px){.banner-layers{overflow:auto;-webkit-overflow-scrolling:touch}}.banner-layers>*{position:absolute!important}.dark .banner a{color:#fff}.video-bg{-o-object-fit:cover;object-fit:cover;-o-object-position:50% 50%;object-position:50% 50%;font-family:"object-fit: cover; object-position: center center;";position:absolute;width:100%;height:100%}@media(min-width:549px){.has-video .bg{display:none}}.box{width:100%;position:relative;margin:0 auto}.box>a{width:100%;display:block}.box a{display:inline-block}.box,.box-image,.box-text{-webkit-transition:opacity .3s,background-color .3s,-webkit-transform .3s;transition:opacity .3s,background-color .3s,-webkit-transform .3s;-o-transition:opacity .3s,transform .3s,background-color .3s;transition:opacity .3s,transform .3s,background-color .3s;transition:opacity .3s,transform .3s,background-color .3s,-webkit-transform .3s}.box-image>a,.box-image>div>a{display:block}.box-text{padding-top:.7em;padding-bottom:1.4em;position:relative;width:100%;font-size:.9em}.has-shadow .box-text{padding-left:1.2em;padding-right:1.2em}@media(max-width:549px){.box-text{font-size:85%}}.box-image{position:relative;height:auto;margin:0 auto;overflow:hidden}.box-image[style*=-radius]{-webkit-mask-image:-webkit-radial-gradient(white,black)}.box-image-inner{position:relative;overflow:hidden;z-index:0}.box-text.text-center{padding-left:10px;padding-right:10px}.box-image img{max-width:100%;width:100%;margin:0 auto}.box-label{overflow:hidden}.box-label .box-text.text-center{-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);left:50%;margin:10% 0}.box-label .box-text.text-right{right:0;left:auto}.box-label .box-text{position:absolute;bottom:0;width:auto;padding:0;margin:10%;padding:.5em 1.5em .55em;background-color:#fff;opacity:.95;-webkit-box-shadow:1px 1px 3px 0 rgba(0,0,0,.1);box-shadow:1px 1px 3px 0 rgba(0,0,0,.1)}.box-label:hover .box-text{opacity:1}.box-badge{overflow:hidden}.box-badge .box-text{background-color:rgba(255,255,255,.95);padding:.8em 1em 1em;position:absolute;bottom:15%;-webkit-transition:background .3s;-o-transition:background .3s;transition:background .3s;z-index:1}.dark .box-badge .box-text{background-color:rgba(0,0,0,.95)}.box-badge:hover .box-text{background-color:#446084}.box-bounce .box-text{padding:15px 15px 20px;z-index:1}.box-bounce:hover .box-text{-webkit-transform:translateY(-15px);-ms-transform:translateY(-15px);transform:translateY(-15px);background-color:#fff}.dark .box-bounce:hover .box-text{background-color:#222}.box-bounce:hover .box-image{-webkit-transform:translateY(-5px);-ms-transform:translateY(-5px);transform:translateY(-5px)}.box-push .box-text{padding:15px 20px;background-color:rgba(255,255,255,.95);max-width:85%;margin:-15% auto 0}.box-overlay .box-text,.box-shade .box-text{position:absolute;width:100%;max-height:100%;bottom:0;padding-left:1.5em;padding-right:1.5em}.box-overlay.dark .box-text,.box-shade.dark .box-text{text-shadow:1px 1px 1px rgba(0,0,0,.5)}.box-none .box-text{display:none!important}.has-post-icon:hover .box-shade .box-text,.has-post-icon:hover .box-overlay .box-text{opacity:0!important}.box-text-middle.box-overlay .box-text,.box-text-middle.box-shade .box-text{position:absolute;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);top:50%;bottom:auto!important;z-index:16;left:0;right:0}.box-text-top.box-overlay .box-text,.box-text-top.box-shade .box-text{position:absolute;top:0;bottom:auto!important;z-index:16;left:0;right:0}.box-vertical .box-text-middle .box-text{position:relative;top:auto;bottom:auto;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}.has-box-vertical .col{width:100%!important;max-width:100%!important}@media screen and (max-width:549px){.box-vertical .box-image{width:100%!important}}@media screen and (min-width:550px){.box-list-view .col{-ms-flex-preferred-size:100%!important;flex-basis:100%!important;max-width:100%!important}.box-list-view .box,.box-vertical{display:table;width:100%}.box-list-view .box .image-right,.box-vertical .image-right{direction:rtl}.box-list-view .box .box-image,.box-list-view .box .box-text,.box-vertical .box-image,.box-vertical .box-text{direction:ltr;display:table-cell;vertical-align:middle}.box-list-view .box .box-text,.box-vertical .box-text{padding-left:1.5em;padding-right:1.5em}.box-list-view .box .box-image,.box-vertical .box-image{width:50%}.box-list-view .box.align-top .box-text,.box-vertical.align-top .box-text{vertical-align:top}}.button,button,input[type=submit],input[type=reset],input[type=button]{position:relative;display:inline-block;background-color:transparent;text-transform:uppercase;font-size:.97em;letter-spacing:.03em;cursor:pointer;font-weight:bolder;text-align:center;color:currentColor;text-decoration:none;border:1px solid transparent;vertical-align:middle;border-radius:0;margin-top:0;margin-right:1em;text-shadow:none;line-height:2.4em;min-height:2.5em;padding:0 1.2em;max-width:100%;-webkit-transition:border .3s,background .3s,opacity .3s,color .3s,-webkit-transform .3s,-webkit-box-shadow .3s;transition:border .3s,background .3s,opacity .3s,color .3s,-webkit-transform .3s,-webkit-box-shadow .3s;-o-transition:transform .3s,border .3s,background .3s,box-shadow .3s,opacity .3s,color .3s;transition:transform .3s,border .3s,background .3s,box-shadow .3s,opacity .3s,color .3s;transition:transform .3s,border .3s,background .3s,box-shadow .3s,opacity .3s,color .3s,-webkit-transform .3s,-webkit-box-shadow .3s;text-rendering:optimizeLegibility;-webkit-box-sizing:border-box;box-sizing:border-box}.button span{display:inline-block;line-height:1.6}.button.is-outline{line-height:2.19em}.nav>li>a.button:hover,.nav>li>a.button{padding-top:0;padding-bottom:0}.nav>li>a.button:hover{color:#fff}.button,input[type=submit],input[type=submit].button,input[type=reset].button,input[type=button].button{color:#fff;background-color:#446084;background-color:var(--primary-color);border-color:rgba(0,0,0,.05)}.button.is-outline,input[type=submit].is-outline,input[type=reset].is-outline,input[type=button].is-outline{border:2px solid currentColor;background-color:transparent}.dark .button.is-form:hover,.button:hover,input[type=submit]:hover,input[type=reset]:hover,input[type=button]:hover{outline:none;opacity:1;color:#fff;-webkit-box-shadow:inset 0 0 0 100px rgba(0,0,0,.2);box-shadow:inset 0 0 0 100px rgba(0,0,0,.2)}.button.is-underline,.button.is-link{background-color:transparent!important;border-color:transparent!important;padding-left:.15em;padding-right:.15em}.button.is-underline:before{content:"";height:2px;background-color:currentColor;opacity:.3;-webkit-transition:all .3s;-o-transition:all .3s;transition:all .3s;position:absolute;bottom:0;left:20%;width:60%}.button.is-underline:hover:before{left:0%;width:100%;opacity:1}.is-link,.is-underline{color:#666}.dark .button.is-underline:hover,.dark .button.is-link:hover{color:#fff;opacity:.8}.button.is-underline:hover,.button.is-link:hover{color:#333;-webkit-box-shadow:none;box-shadow:none}.is-form,button.is-form,input[type=submit].is-form,input[type=reset].is-form,input[type=button].is-form{overflow:hidden;position:relative;background-color:#f9f9f9;text-shadow:1px 1px 1px #fff;color:#666;border:1px solid #ddd;text-transform:none;font-weight:400}.button.is-form:hover{color:#000;background-color:#f1f1f1}.dark .button,.dark input[type=submit],.dark input[type=reset],.dark input[type=button]{color:#fff}.dark .button.is-form,.dark input[type=submit].is-form,.dark input[type=reset].is-form,.dark input[type=button].is-form{color:#000}.is-round{border-radius:99px}.is-shade,.is-bevel,.is-gloss{overflow:hidden}.is-gloss:after,.is-shade:after,.is-bevel:after{content:"";position:absolute;top:0;left:-25%;height:100%;width:150%;-webkit-box-shadow:inset 0 1.2em 0 0 rgba(255,255,255,.1);box-shadow:inset 0 1.2em 0 0 rgba(255,255,255,.1)}.is-shade:after{-webkit-box-shadow:inset 1px 1px 0 0 rgba(255,255,255,.1),inset 0 2em 15px 0 rgba(255,255,255,.2);box-shadow:inset 1px 1px 0 0 rgba(255,255,255,.1),inset 0 2em 15px 0 rgba(255,255,255,.2)}.is-bevel:after{left:0;width:100%;-webkit-box-shadow:inset -.01em -.1em 0 0 rgba(0,0,0,.15);box-shadow:inset -.01em -.1em 0 0 rgba(0,0,0,.15)}.is-outline{color:silver}.is-outline:hover{-webkit-box-shadow:none!important;box-shadow:none!important}input[type=submit],input[type=submit].button,input[type=submit],.primary{background-color:#446084}.primary.is-underline,.primary.is-link,.primary.is-outline{color:#446084}.is-outline:hover,.primary.is-outline:hover{color:#fff;background-color:#446084;border-color:#446084}.success{background-color:#7a9c59}.success.is-underline,.success.is-link,.success.is-outline{color:#7a9c59}.success.is-outline:hover{background-color:#7a9c59;border-color:#7a9c59;color:#fff}.white{background-color:#fff!important;color:#666!important}.white.button.is-outline{background-color:transparent;color:currentColor!important}.white.is-underline,.white.is-link,.white.is-outline{color:#fff!important;background-color:transparent!important}.white.is-outline:hover{background-color:#fff!important;border-color:#fff;color:#666!important}.secondary,.checkout-button,.button.checkout,.button.alt{background-color:#d26e4b}.secondary.is-underline,.secondary.is-link,.secondary.is-outline{color:#d26e4b}.secondary.is-outline:hover{background-color:#d26e4b;border-color:#d26e4b;color:#fff}a.primary:not(.button),a.secondary:not(.button){background-color:transparent}.alert{background-color:#b20000}.alert.is-underline,.alert.is-link,.alert.is-outline{color:#b20000}.alert.is-outline:hover{background-color:#b20000;border-color:#b20000;color:#fff}.text-center .button:first-of-type{margin-left:0!important}.text-right .button:last-of-type,.text-center .button:last-of-type{margin-right:0!important}.button.disabled,button.disabled,.button[disabled],button[disabled]{opacity:.6}.header-buttons .button{margin-bottom:0;margin-right:.65em}.header-button{display:inline-block}.header-button .plain.is-outline:not(:hover){color:#999}.nav-dark .header-button .plain.is-outline:not(:hover){color:#fff}.header-button .button{margin:0}.scroll-for-more{margin-left:0!important}.scroll-for-more:not(:hover){opacity:.7}.flex-col button,.flex-col .button,.flex-col input{margin-bottom:0}code{padding:.2rem .5rem;margin:0 .2rem;font-size:.9em;background:#f1f1f1;border:1px solid #e1e1e1;border-radius:4px}pre>code{display:block;padding:1rem 1.5rem;white-space:pre}.dark code{border-color:#000;background-color:rgba(0,0,0,.5)}.is-divider{height:3px;display:block;background-color:rgba(0,0,0,.1);margin:1em 0 1em;width:100%;max-width:30px}.widget .is-divider{margin-top:.66em}.dark .is-divider{background-color:rgba(255,255,255,.3)}form{margin-bottom:0}input[type=email],input[type=date],input[type=search],input[type=number],input[type=text],input[type=tel],input[type=url],input[type=password],textarea,select,.select-resize-ghost,.select2-container .select2-choice,.select2-container .select2-selection{-webkit-box-sizing:border-box;box-sizing:border-box;border:1px solid #ddd;padding:0 .75em;height:2.507em;font-size:.97em;border-radius:0;max-width:100%;width:100%;vertical-align:middle;background-color:#fff;color:#333;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1);-webkit-transition:color .3s,border .3s,background .3s,opacity .3s;-o-transition:color .3s,border .3s,background .3s,opacity .3s;transition:color .3s,border .3s,background .3s,opacity .3s}input:hover,textarea:hover,select:hover{-webkit-box-shadow:inset 0 -1.8em 1em 0 rgba(0,0,0,0);box-shadow:inset 0 -1.8em 1em 0 rgba(0,0,0,0)}input[type=email],input[type=search],input[type=number],input[type=url],input[type=tel],input[type=text],textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none}textarea{padding-top:.7em;min-height:120px}input[type=email]:focus,input[type=search]:focus,input[type=number]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=password]:focus,textarea:focus,select:focus{-webkit-box-shadow:0 0 5px #ccc;box-shadow:0 0 5px #ccc;opacity:1!important;outline:0;color:#333;background-color:#fff}label,legend{font-weight:700;display:block;font-size:.9em;margin-bottom:.4em}legend{width:100%;font-size:1em;text-transform:uppercase;font-weight:700;border-bottom:1px solid #f1f1f1;padding-bottom:10px;margin:30px 0 15px}fieldset{border-width:0;padding:0}input[type=checkbox],input[type=radio]{display:inline;margin-right:10px;font-size:16px}label>.label-body{display:inline-block;font-weight:400;margin-left:.5em}abbr[title=required]{color:#b20000}input[type=checkbox]+label,input[type=radio]+label{display:inline}select,.select-resize-ghost,.select2-container .select2-choice,.select2-container .select2-selection{-webkit-box-shadow:inset 0 -1.4em 1em 0 rgba(0,0,0,.02);box-shadow:inset 0 -1.4em 1em 0 rgba(0,0,0,.02);background-color:#fff;-webkit-appearance:none;-moz-appearance:none;background-image:url("data:image/svg+xml;charset=utf8, %3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23333' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='feather feather-chevron-down'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");background-position:right .45em top 50%;background-repeat:no-repeat;padding-right:1.4em;background-size:auto 16px;border-radius:0;display:block}.select-resize-ghost{display:inline-block;width:auto;position:absolute;opacity:0}select.resize-select{width:55px}.select2-selection__arrow b{border-color:transparent!important}.select2-container .selection .select2-selection--multiple{padding:10px;height:auto;max-height:200px;background-image:none;line-height:1.7em}.select2-container .selection .select2-selection--multiple .select2-selection__choice{padding:5px}@media screen and (-ms-high-contrast:active),(-ms-high-contrast:none){select::-ms-expand{display:none}select:focus::-ms-value{background:transparent;color:currentColor}}.form-flat input:not([type=submit]),.form-flat textarea,.form-flat select{background-color:rgba(0,0,0,.03);-webkit-box-shadow:none;box-shadow:none;border-color:rgba(0,0,0,.09);color:currentColor!important;border-radius:99px}.form-flat button,.form-flat input{border-radius:99px}.form-flat textarea{border-radius:15px}.form-flat .flex-row .flex-col,.flex-row.form-flat .flex-col{padding-right:4px}.dark .form-flat input:not([type=submit]),.dark .form-flat textarea,.dark .form-flat select,.nav-dark .form-flat input:not([type=submit]),.nav-dark .form-flat textarea,.nav-dark .form-flat select{background-color:rgba(255,255,255,.2)!important;border-color:rgba(255,255,255,.09);color:#fff}.dark .form-flat select option{color:#333}.nav-dark .form-flat select,.dark .form-flat select{background-image:url("data:image/svg+xml;charset=utf8, %3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='feather feather-chevron-down'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E")}.nav-dark .form-flat input::-webkit-input-placeholder,.dark .form-flat input::-webkit-input-placeholder{color:#fff}.form-flat .button.icon{color:currentColor!important;border-color:transparent!important;background-color:transparent!important;-webkit-box-shadow:none;box-shadow:none}.form-minimal input:not([type=submit]),.form-minimal textarea,.form-minimal select{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.form-minimal.quantity .qty{max-width:2em;border-left:0;border-right:0}input.wpcf7-not-valid,.woocommerce-invalid input{border-color:#b20000;color:#b20000}.woocommerce-invalid select{border-color:#b20000}.woocommerce-invalid input.input-checkbox{outline:1px solid #b20000;outline-offset:1px}.select2-container{text-align:left}.form-row .select2-container{margin-bottom:1em}.select2-search__field{margin-bottom:0}.select2-container--default .select2-selection--single .select2-selection__arrow{width:30px}.select2-container .select2-choice>.select2-chosen,.select2-container .select2-selection--single .select2-selection__rendered,.select2-selection{padding:0;line-height:2.507em}.select2-container--default .select2-selection--single .select2-selection__arrow{height:2.507em}.fl-wrap{position:relative}.loading-site .fl-labels label[for]:first-child{display:none}.fl-labels .fl-wrap label[for]:first-child{-webkit-transition:all .3s;-o-transition:all .3s;transition:all .3s;font-size:12px;white-space:nowrap;position:absolute;line-height:1;top:.5em;opacity:0;pointer-events:none;left:1.1em;font-weight:400}.dark .fl-wrap label{color:#000}.fl-wrap.fl-is-active>label[for]:first-child{z-index:1;opacity:.8}.fl-labels .form-row input:not([type=checkbox]),.fl-labels .form-row textarea,.fl-labels .form-row select{height:3.0084em;-webkit-transition:padding .3s;-o-transition:padding .3s;transition:padding .3s}.form-row .fl-is-active input,.form-row .fl-is-active textarea{padding-top:1.1em;padding-bottom:.5em}.form-row .fl-is-active select{padding-top:1.1em;padding-bottom:.4em}.icon-box .icon-box-img{margin-bottom:1em;max-width:100%;position:relative}.slider>.icon-box,.flickity-slider>.icon-box{padding-right:3%!important;padding-left:3%!important}.icon-box-img svg,.icon-box-img img{padding-top:.2em;width:100%}.icon-box-img svg{width:100%;height:100%;-webkit-transition:all .3s;-o-transition:all .3s;transition:all .3s;fill:currentColor}.icon-box-img svg path{fill:currentColor}.icon-box:hover .has-icon-bg svg path,.icon-box:hover .has-icon-bg svg,.icon-box:hover .has-icon-bg i{fill:#fff}.has-icon-bg .icon{padding-top:100%;height:0;overflow:hidden;position:relative}.has-icon-bg .icon .icon-inner{color:#446084;position:absolute;height:100%;width:100%;top:0;border:2px solid currentColor;border-radius:100%;-webkit-transition:all .3s;-o-transition:all .3s;transition:all .3s}.icon-box:hover .has-icon-bg .icon .icon-inner{background-color:currentColor}.has-icon-bg .icon svg,.has-icon-bg .icon i,.has-icon-bg .icon img{position:absolute;left:0;-o-object-fit:cover;object-fit:cover;padding:0;top:50%;margin:0;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);width:60%;margin-left:20%;margin-right:20%}.icon-box-left .has-icon-bg .icon{position:absolute;width:100%}.icon-box-left,.icon-box-right{-js-display:flex;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;width:100%}.icon-box-left .icon-box-img,.icon-box-right .icon-box-img{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin-bottom:0;max-width:200px}.icon-box-left .icon-box-text,.icon-box-right .icon-box-text{-webkit-box-flex:1;-ms-flex:1 1 0%;flex:1 1 0%}.icon-box-right .icon-box-text{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.icon-box-left .icon-box-img+.icon-box-text{padding-left:1em}.icon-box-right .icon-box-img+.icon-box-text{padding-right:1em}.icon-box-center .icon-box-img{margin:0 auto 1em}.links>li>a:before,i[class^=icon-],i[class*=" icon-"]{font-family:"fl-icons"!important;font-display:block;speak:none!important;margin:0;padding:0;display:inline-block;font-style:normal!important;font-weight:normal!important;font-variant:normal!important;text-transform:none!important;position:relative;line-height:1.2}.widget-title i{opacity:.35;margin-right:4px}button i,.button i{vertical-align:middle;top:-1.5px}.button.open-video i{top:-.027em}a.remove,a.icon-remove{display:block;width:24px;height:24px;font-size:15px!important;line-height:19px!important;border-radius:100%;color:#ccc;font-weight:700;text-align:center;border:2px solid currentColor}button.icon:not(.button),a.icon:not(.button){font-family:sans-serif;margin-left:.25em;margin-right:.25em;font-size:1.2em}.header a.icon:not(.button){margin-left:.3em;margin-right:.3em}.header .nav-small a.icon:not(.button){font-size:1em}.button.icon{margin-left:.12em;margin-right:.12em;min-width:2.5em;padding-left:.6em;padding-right:.6em;display:inline-block}.button.icon i{font-size:1.2em}.button.icon i+span{padding-right:.5em}.button.icon.is-small{border-width:1px}.button.icon.is-small i{top:-1px}.button.icon.circle{padding-left:0;padding-right:0}.button.icon.circle>span{margin:0 8px}.button.icon.circle>span+i{margin-left:-4px}.button.icon.circle>i{margin:0 8px}.button.icon.circle>i+span{margin-left:-4px}.button.icon.circle>i:only-child{margin:0}.nav>li>a>i{vertical-align:middle;-webkit-transition:color .3s;-o-transition:color .3s;transition:color .3s;font-size:20px}.nav>li>a>i+span{margin-left:5px}.nav li.has-icon-left>a>i,.nav li.has-icon-left>a>svg,.nav li.has-icon-left>a>img{margin-right:5px}.nav>li>a>span+i{margin-left:5px}.nav-small>li>a>i{font-size:1em}.nav>li>a>i.icon-search{font-size:1.2em}.nav>li>a>i.icon-menu{font-size:1.9em}.nav>li.has-icon>a>i{min-width:1em}.nav-vertical>li>a>i{font-size:16px;opacity:.6}.header-button a.icon:not(.button){display:inline-block;padding:6px 0}.header-button a.icon:not(.button) i{font-size:24px}.header-button a.icon:not(.button) i.icon-search{font-size:16px}.nav-small .header-button a.icon:not(.button){padding:3px 0}.button:not(.icon)>i{margin-left:-.15em;margin-right:.4em}.button:not(.icon)>span+i{margin-right:-.15em;margin-left:.4em}.has-dropdown .icon-angle-down{font-size:16px;margin-left:.2em;opacity:.6}.overlay-icon{background-color:rgba(0,0,0,.2);width:3em;color:#fff;height:3em;line-height:2.8em;border-radius:100%;text-align:center;border:2px solid #fff;opacity:.8;-webkit-transition:opacity .2s,-webkit-transform .2s;transition:opacity .2s,-webkit-transform .2s;-o-transition:transform .2s,opacity .2s;transition:transform .2s,opacity .2s;transition:transform .2s,opacity .2s,-webkit-transform .2s}.overlay-icon i{font-size:1.3em;-webkit-transition:color .3s;-o-transition:color .3s;transition:color .3s;top:3px}.has-hover:hover .overlay-icon{opacity:1;-webkit-transform:scale(1.15);-ms-transform:scale(1.15);transform:scale(1.15)}.box-shade .overlay-icon,.box-overlay .overlay-icon{opacity:0}.image-icon{display:inline-block;height:auto;vertical-align:middle;position:relative}span+.image-icon{margin-left:10px}.image-icon img{max-width:32px;min-width:100%}.nav-small .image-icon{width:16px;height:16px;margin:0 5px}.nav-small .image-icon img{vertical-align:top}[data-icon-label]{position:relative}[data-icon-label="0"]:after{display:none}[data-icon-label]:after{content:attr(data-icon-label);position:absolute;font-style:normal;font-family:Arial,Sans-serif!important;top:-10px;right:-10px;font-weight:bolder;background-color:#d26e4b;-webkit-box-shadow:1px 1px 3px 0 rgba(0,0,0,.3);box-shadow:1px 1px 3px 0 rgba(0,0,0,.3);font-size:11px;padding-left:2px;padding-right:2px;opacity:.9;line-height:17px;letter-spacing:-.5px;height:17px;min-width:17px;border-radius:99px;color:#fff;text-align:center;z-index:1;-webkit-transition:-webkit-transform .2s;transition:-webkit-transform .2s;-o-transition:transform .2s;transition:transform .2s;transition:transform .2s,-webkit-transform .2s}.nav-small [data-icon-label]:after{min-width:13px;top:-4px;right:-10px;height:13px;font-size:10px;line-height:13px}.button [data-icon-label]:after{top:-12px;right:-12px}.reveal-icon i{width:1em}.reveal-icon i,.reveal-icon span{display:inline-block;-webkit-transition:opacity .3s,-webkit-transform .3s;transition:opacity .3s,-webkit-transform .3s;-o-transition:opacity .3s,transform .3s;transition:opacity .3s,transform .3s;transition:opacity .3s,transform .3s,-webkit-transform .3s}.reveal-icon span{-webkit-transform:translateX(.75em);-ms-transform:translateX(.75em);transform:translateX(.75em)}.reveal-icon i+span{-webkit-transform:translateX(-.75em);-ms-transform:translateX(-.75em);transform:translateX(-.75em)}.reveal-icon:hover>span{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}.reveal-icon:not(:hover) i{opacity:0}img{-webkit-transition:opacity 1s;-o-transition:opacity 1s;transition:opacity 1s;opacity:1}.col-inner>.img:not(:last-child),.col>.img:not(:last-child){margin-bottom:1em}.img{position:relative}.img .img-inner{position:relative;overflow:hidden}.img,.img img{width:100%}.overlay{position:absolute;top:0;bottom:0;height:100%;left:-1px;right:-1px;background-color:rgba(0,0,0,.15);-webkit-transition:opacity .6s,-webkit-transform .3s;transition:opacity .6s,-webkit-transform .3s;-o-transition:transform .3s,opacity .6s;transition:transform .3s,opacity .6s;transition:transform .3s,opacity .6s,-webkit-transform .3s;pointer-events:none}.img .caption{position:absolute;-webkit-transition:-webkit-transform .5s;transition:-webkit-transform .5s;-o-transition:transform .5s;transition:transform .5s;transition:transform .5s,-webkit-transform .5s;-webkit-transform:translateY(100%);-ms-transform:translateY(100%);transform:translateY(100%);max-height:100%!important;overflow-y:auto;bottom:0;padding:4px 10px;font-size:14px;color:#fff;width:100%;background-color:rgba(0,0,0,.3)}.img .caption-show,.img:hover .caption{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}.lazy-load{background-color:rgba(0,0,0,.03)}.has-format,.video-fit,.image-cover{position:relative;height:auto;overflow:hidden;padding-top:100%;background-position:50% 50%;background-size:cover}.video-fit{padding-top:56.5%}.video-fit video,.video-fit iframe,img.back-image,.image-cover img,.has-format img,.has-equal-box-heights .box-image img{right:0;width:100%;height:100%;bottom:0;left:0;top:0;position:absolute;-o-object-position:50% 50%;object-position:50% 50%;-o-object-fit:cover;object-fit:cover;font-family:"object-fit: cover;"}.has-equal-box-heights .box-image{padding-top:100%}.video-fit iframe{-o-object-fit:fill;object-fit:fill}.image-tools{padding:10px;position:absolute}.image-tools a:last-child{margin-bottom:0}.image-tools a.button{display:block}.image-tools.bottom.left{padding-top:0;padding-right:0}.image-tools.top.right{padding-bottom:0;padding-left:0}.image-tools .cart-icon{position:absolute;left:10px;margin:5px;bottom:100%}.image-tools .wishlist-button:hover{background-color:#b20000;border-color:#b20000}@media only screen and (max-device-width:1024px){.image-tools{opacity:1!important;padding:5px}}.overlay-tools{margin-top:10px}.overlay-tools a{display:inline-block;font-size:.8em;background-color:rgba(0,0,0,.4);padding:2px 10px 3px;margin-right:5px;border-radius:99px;text-shadow:none;-webkit-transition:all .3s;-o-transition:all .3s;transition:all .3s}.overlay-tools a:hover{background-color:#fff;color:#000!important}.tag-label{text-transform:uppercase;display:inline-block;font-size:.65em;line-height:1;letter-spacing:1.1px;font-weight:700;border-radius:2px;padding:2px 5px;color:#fff;background-color:rgba(0,0,0,.4);-webkit-transition:background-color .3s,opacity .3s;-o-transition:background-color .3s,opacity .3s;transition:background-color .3s,opacity .3s}.has-hover:hover .tag-label{opacity:1;background-color:#d26e4b}.lightbox-content{background-color:#fff;max-width:875px;margin:0 auto;-webkit-box-shadow:3px 3px 20px 0 rgba(0,0,0,.15);box-shadow:3px 3px 20px 0 rgba(0,0,0,.15);position:relative}.lightbox-content .lightbox-inner{padding:30px 20px}.pswp__bg{background-color:rgba(0,0,0,.6)}@media(min-width:549px){.pswp__top-bar{background-color:transparent!important}}.pswp__item{-webkit-transition:opacity .5s;-o-transition:opacity .5s;transition:opacity .5s;opacity:0}.pswp--visible .pswp__item{opacity:1}.pswp__caption__center{text-align:center}.mfp-bg{top:0;left:0;width:100%;height:100%;z-index:1042;overflow:hidden;position:fixed;background:#0b0b0b;opacity:0;-webkit-transition:opacity .25s;-o-transition:opacity .25s;transition:opacity .25s}.mfp-bg.mfp-ready{opacity:.6}.mfp-bg.mfp-removing{opacity:0!important}.mfp-wrap{top:0;left:0;width:100%;height:100%;z-index:1043;position:fixed;outline:none!important;-webkit-backface-visibility:hidden}.mfp-container{text-align:center;position:absolute;width:100%;height:100%;left:0;top:0;padding:30px;-webkit-box-sizing:border-box;box-sizing:border-box}.mfp-container:before{content:"";display:inline-block;height:100%;vertical-align:middle}.mfp-image-holder{padding:40px 6.66%}.mfp-align-top .mfp-container:before{display:none}.mfp-content{position:relative;display:inline-block;vertical-align:middle;max-width:100%;margin:0 auto;text-align:left;z-index:1045;-webkit-transform:translateY(-30px);-ms-transform:translateY(-30px);transform:translateY(-30px);opacity:0;-webkit-transition:opacity .3s,-webkit-transform .5s;transition:opacity .3s,-webkit-transform .5s;-o-transition:transform .5s,opacity .3s;transition:transform .5s,opacity .3s;transition:transform .5s,opacity .3s,-webkit-transform .5s}.mfp-content-inner{-webkit-box-shadow:1px 1px 5px 0 rgba(0,0,0,.2);box-shadow:1px 1px 5px 0 rgba(0,0,0,.2)}.mfp-ready .mfp-content{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}.mfp-ready.mfp-removing .mfp-content{opacity:0}.mfp-inline-holder .mfp-content,.mfp-ajax-holder .mfp-content{width:100%;cursor:auto}.mfp-ajax-cur{cursor:progress}.mfp-zoom-out-cur,.mfp-zoom-out-cur .mfp-image-holder .mfp-close{cursor:-webkit-zoom-out;cursor:zoom-out}.mfp-zoom{cursor:pointer;cursor:-webkit-zoom-in;cursor:zoom-in}.mfp-auto-cursor .mfp-content{cursor:auto}.mfp-close,.mfp-arrow,.mfp-preloader,.mfp-counter{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mfp-loading.mfp-figure{display:none}.mfp-hide{display:none!important}.mfp-preloader{color:#ccc;position:absolute;top:50%;width:auto;text-align:center;margin-top:-.8em;left:8px;right:8px;z-index:1044}.mfp-preloader a{color:#ccc}.mfp-preloader a:hover{color:#fff}.mfp-s-ready .mfp-preloader{display:none}.mfp-s-error .mfp-content{display:none}.mfp-close{cursor:pointer;outline:none;z-index:1046;-webkit-box-shadow:none;box-shadow:none;position:fixed;top:0;right:0;text-decoration:none;text-align:center;opacity:0;padding:0;mix-blend-mode:difference;margin:0!important;color:#fff;font-style:normal;font-weight:300;font-size:40px;min-height:0;width:40px;-webkit-backface-visibility:hidden;height:40px;line-height:40px;font-family:Arial,monospace;-webkit-transition:opacity .6s,-webkit-transform .6s;transition:opacity .6s,-webkit-transform .6s;-o-transition:opacity .6s,transform .6s;transition:opacity .6s,transform .6s;transition:opacity .6s,transform .6s,-webkit-transform .6s;-webkit-transform:translateY(50%) translateZ(1px);transform:translateY(50%) translateZ(1px)}.mfp-close svg{pointer-events:none}.mfp-content .mfp-close{position:absolute}.mfp-ready .mfp-close{opacity:.6;-webkit-transform:translateY(0) translateZ(1px);transform:translateY(0) translateZ(1px)}.mfp-removing .mfp-close{display:none!important}.mfp-close:hover{opacity:1}.mfp-close-btn-in .mfp-close{top:0!important;color:currentColor}.mfp-counter{position:absolute;top:0;right:0;color:#ccc;font-size:12px;line-height:18px}.mfp-arrow{position:fixed;opacity:.6;color:#fff;mix-blend-mode:difference;top:50%;z-index:1046;margin:0;text-align:center;width:50px;height:50px}.mfp-arrow i{pointer-events:none;font-size:42px!important}.mfp-arrow:hover{opacity:1}.mfp-arrow:active{top:50.1%}.mfp-arrow-left{left:0;-webkit-transform:translateX(100%);-ms-transform:translateX(100%);transform:translateX(100%)}.mfp-arrow-right{right:0;-webkit-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%)}.mfp-ready .mfp-arrow-right,.mfp-ready .mfp-arrow-left{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}.mfp-iframe-holder{padding-top:40px;padding-bottom:40px}.mfp-iframe-holder .mfp-content{line-height:0;width:100%;max-width:900px}.mfp-iframe-holder .mfp-close{top:-40px}.mfp-iframe-scaler{width:100%;height:0;overflow:hidden;padding-top:56.25%}.mfp-iframe-scaler iframe{position:absolute;display:block;top:0;left:0;width:100%;height:100%;-webkit-box-shadow:0 0 8px rgba(0,0,0,.6);box-shadow:0 0 8px rgba(0,0,0,.6);background:#000}img.mfp-img{width:auto;max-width:100%;height:auto;display:block;-webkit-backface-visibility:hidden;backface-visibility:hidden;line-height:0;padding:0 0 40px;margin:0 auto}.mfp-figure{line-height:0}.mfp-figure:after{content:"";position:absolute;left:0;top:0;bottom:40px;display:block;right:0;width:auto;height:auto;z-index:-1;-webkit-box-shadow:0 0 8px rgba(0,0,0,.6);box-shadow:0 0 8px rgba(0,0,0,.6);background:#444}.mfp-figure small{color:#bdbdbd;display:block;font-size:12px;line-height:14px}.mfp-figure figure{margin:0}.mfp-bottom-bar{margin-top:-36px;position:absolute;top:100%;left:0;width:100%;cursor:auto}.mfp-title{font-size:11px;text-align:left;line-height:18px;color:#f3f3f3;word-wrap:break-word;padding-right:36px}.mfp-title a{text-decoration:underline;color:#f3f3f3}.mfp-title a:hover{text-decoration:none;color:#f3f3f3;opacity:.8}.mfp-image-holder .mfp-content{max-width:100%}.mfp-gallery .mfp-image-holder .mfp-figure{cursor:pointer}@media screen and (max-width:800px)and (orientation:landscape),screen and (max-height:300px){.mfp-img-mobile .mfp-image-holder{padding-left:0;padding-right:0}.mfp-img-mobile img.mfp-img{padding:0}.mfp-img-mobile .mfp-figure:after{top:0;bottom:0}.mfp-img-mobile .mfp-figure small{display:inline;margin-left:5px}.mfp-img-mobile .mfp-bottom-bar{background:rgba(0,0,0,.6);bottom:0;margin:0;top:auto;padding:3px 5px;position:fixed;-webkit-box-sizing:border-box;box-sizing:border-box}.mfp-img-mobile .mfp-bottom-bar:empty{padding:0}.mfp-img-mobile .mfp-counter{right:5px;top:3px}}@media(max-width:849px){body.body-scroll-lock--active .mfp-wrap{position:fixed!important;overflow:auto}}.processing,.loading-spin{position:relative}.processing:before,.loading-spin{content:"";margin:0 auto;font-size:10px;text-indent:-9999em;border-top:3px solid rgba(0,0,0,.1)!important;border-right:3px solid rgba(0,0,0,.1)!important;border-bottom:3px solid rgba(0,0,0,.1)!important;opacity:.8;border-left:3px solid #446084;-webkit-animation:spin .6s infinite linear;animation:spin .6s infinite linear;border-radius:50%;width:30px;height:30px;pointer-events:none}.box-image.processing:before,.dark .processing:before,.dark.processing:before,.dark.loading-spin,.dark .loading-spin{border-top:3px solid rgba(0,0,0,.1)!important;border-right:3px solid rgba(0,0,0,.1)!important;border-bottom:3px solid rgba(0,0,0,.1)!important;border-left:3px solid #fff!important}.box-image.processing:after{content:"";background-color:#000;opacity:.1;position:absolute;top:0;left:0;right:0;bottom:0}.box-image.processing .image-tools{opacity:0!important}.woocommerce-checkout.processing:before{position:fixed}.processing:before,.loading-spin.centered{position:absolute;top:50%;left:50%;margin-left:-15px;margin-top:-15px;z-index:99}.loading-spin{border-radius:50%;width:30px;height:30px}.button.loading{opacity:1!important;position:relative;color:rgba(255,255,255,.05);pointer-events:none!important}.button.loading:after{-webkit-animation:spin 500ms infinite linear;animation:spin 500ms infinite linear;border:2px solid #fff;border-radius:32px;border-right-color:transparent!important;border-top-color:transparent!important;content:"";display:block;height:16px;top:50%;margin-top:-8px;left:50%;margin-left:-8px;position:absolute;width:16px}.is-outline .button.loading:after{border-color:#446084}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.ux-menu-link{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.ux-menu-link--active .ux-menu-link__link,.ux-menu-link:hover .ux-menu-link__link{color:rgba(17,17,17,.85)}.dark .ux-menu-link__link{border-bottom-color:rgba(255,255,255,.2)}.dark .ux-menu-link--active .ux-menu-link__link,.dark .ux-menu-link:hover .ux-menu-link__link{color:rgba(255,255,255,.85)}.ux-menu.ux-menu--divider-solid .ux-menu-link:not(:last-of-type) .ux-menu-link__link{border-bottom-style:solid}.ux-menu-link__link{-webkit-box-flex:1;-ms-flex:1;flex:1;min-height:2.5em;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline;padding-top:.3em;padding-bottom:.3em;color:currentColor;-webkit-transition:all .2s;-o-transition:all .2s;transition:all .2s;border-bottom-color:#ececec;border-bottom-width:1px}.ux-menu-link__icon{width:16px;-ms-flex-negative:0;flex-shrink:0;vertical-align:middle}.ux-menu-link__icon+.ux-menu-link__text{padding-left:.5em}.ux-menu-title{-webkit-box-align:center;-ms-flex-align:center;align-items:center;text-transform:uppercase;font-size:.8em;font-weight:bolder;margin-top:5px;color:#000;min-height:3.125em;padding-top:.3em;padding-bottom:.3em}.ux-menu-link+.ux-menu-title{margin-top:5px!important}.dark .ux-menu-title{color:currentColor}.off-canvas .mfp-content{-ms-scrollbar-base-color:#000;-ms-scrollbar-arrow-color:#000;-ms-overflow-style:-ms-autohiding-scrollbar}.off-canvas .nav-vertical>li>a{padding-top:15px;padding-bottom:15px}.off-canvas .nav-vertical li li>a{padding-top:5px;padding-bottom:5px}.off-canvas .hide-for-off-canvas{display:none!important}.off-canvas .hide-for-small,.off-canvas .hide-for-medium{display:inline-block!important}.off-canvas-right .mfp-content,.off-canvas-left .mfp-content{position:fixed;top:0;bottom:0;width:260px;background-color:rgba(255,255,255,.95);left:0;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;-webkit-transition:-webkit-transform .2s;transition:-webkit-transform .2s;-o-transition:transform .2s;transition:transform .2s;transition:transform .2s,-webkit-transform .2s;-webkit-transform:translateX(-270px);-ms-transform:translateX(-270px);transform:translateX(-270px);-webkit-box-shadow:0 0 10px 0 rgba(0,0,0,.5);box-shadow:0 0 10px 0 rgba(0,0,0,.5)}.off-canvas-right.dark .mfp-content,.off-canvas-left.dark .mfp-content{background-color:rgba(0,0,0,.95)}.off-canvas-right .mfp-content{left:auto;right:0;-webkit-transform:translateX(270px);-ms-transform:translateX(270px);transform:translateX(270px)}.off-canvas-center .nav-vertical>li>ul>li a,.off-canvas-center .nav-vertical>li>a{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.off-canvas-center .nav-vertical>li>a{font-size:1.5em}.off-canvas-center .mfp-container{padding:0}.off-canvas-center .mfp-content{padding-top:50px;max-width:700px;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch}.off-canvas-center .mfp-content .searchform{max-width:260px;margin:0 auto}.off-canvas-center.mfp-bg.mfp-ready{opacity:.85}.mfp-bg.off-canvas-center:not(.dark){background-color:#fff;opacity:.95}.off-canvas-center .nav-sidebar.nav-vertical>li{border:0}.off-canvas-center .nav-sidebar.nav-vertical>li>a{padding-right:30px;padding-left:30px}.off-canvas-center .nav-sidebar.nav-vertical>li .toggle{position:absolute;top:15px;right:0}.off-canvas-center:not(.dark) .mfp-close{color:currentColor}.off-canvas.mfp-removing .mfp-content{opacity:0!important}.off-canvas-left.mfp-ready .mfp-content,.off-canvas-right.mfp-ready .mfp-content{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0);opacity:1}.has-off-canvas .off-canvas-blur{-webkit-filter:blur(5px);filter:blur(5px)}.has-off-canvas .off-canvas-zoom{-webkit-transform:scale(.98);-ms-transform:scale(.98);transform:scale(.98)}.has-off-canvas .current-lightbox-clicked{opacity:0!important;-webkit-transform:translateY(-7px);-ms-transform:translateY(-7px);transform:translateY(-7px)}.has-off-canvas.has-off-canvas-right .current-lightbox-clicked,.has-off-canvas.has-off-canvas-left .current-lightbox-clicked{-webkit-transform:translateX(-7px);-ms-transform:translateX(-7px);transform:translateX(-7px)}.off-canvas .sidebar-menu{padding:30px 0}.off-canvas .sidebar-inner{padding:30px 20px}.off-canvas:not(.off-canvas-center) .nav-vertical li>a{padding-left:20px}.off-canvas:not(.off-canvas-center) li.html{padding:20px}.slider-wrapper{position:relative}.slider>.img,.flickity-slider>.img,.slider-wrapper:last-child{margin-bottom:0}.slider,.row-slider{position:relative;scrollbar-width:none}.slider-full .flickity-slider>.col{padding:0!important}.slider-load-first{-webkit-transition:max-height 2s;-o-transition:max-height 2s;transition:max-height 2s;max-height:999px}.slider-load-first:not(.flickity-enabled){max-height:500px}.slider-load-first:not(.flickity-enabled)>div{opacity:0}.slider:not(.flickity-enabled){white-space:nowrap;overflow-y:hidden;overflow-x:scroll;width:auto;-ms-overflow-style:-ms-autohiding-scrollbar}.slider::-webkit-scrollbar,.row-slider::-webkit-scrollbar{width:0px!important;height:0px!important}.row-slider:not(.flickity-enabled){display:block!important}.slider:not(.flickity-enabled)>*{display:inline-block!important;white-space:normal!important;vertical-align:top}.slider:not(.flickity-enabled)>a{width:100%}.slider>div:not(.col),.slider>a,.slider>p,.slider>a>img,.slider>img{width:100%}.flickity-slider>div:not(.col),.flickity-slider>a,.flickity-slider>p,.flickity-slider>a>img,.flickity-slider>img,.flickity-slider>figure{width:100%!important;padding:0;margin:0;-webkit-transition:opacity .6s,-webkit-transform .6s,-webkit-box-shadow .6s;transition:opacity .6s,-webkit-transform .6s,-webkit-box-shadow .6s;-o-transition:transform .6s,opacity .6s,box-shadow .6s;transition:transform .6s,opacity .6s,box-shadow .6s;transition:transform .6s,opacity .6s,box-shadow .6s,-webkit-transform .6s,-webkit-box-shadow .6s}.flickity-slider>.row:not(.is-selected){opacity:0}.flickity-enabled{position:relative;display:block}.flickity-enabled:focus{outline:none}.flickity-viewport{overflow:hidden;position:relative;height:100%;width:100%}.flickity-slider{position:absolute;width:100%;height:100%}.slider-has-parallax .bg{-webkit-transition:opacity .3s!important;-o-transition:opacity .3s!important;transition:opacity .3s!important}.is-dragging .flickity-viewport .flickity-slider{pointer-events:none}.flickity-enabled.is-draggable{-webkit-tap-highlight-color:transparent;tap-highlight-color:transparent;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.flickity-enabled.is-draggable .flickity-viewport{cursor:move;cursor:-webkit-grab;cursor:grab}.flickity-enabled.is-draggable .flickity-viewport.is-pointer-down{cursor:-webkit-grabbing;cursor:grabbing}.flickity-prev-next-button{position:absolute;top:40%;bottom:40%;background-color:transparent;margin:0;padding:0;width:36px;color:#111;border:none;cursor:pointer;opacity:0;-webkit-transition:opacity .3s,background .3s,-webkit-transform .3s,-webkit-box-shadow .3s;transition:opacity .3s,background .3s,-webkit-transform .3s,-webkit-box-shadow .3s;-o-transition:transform .3s,opacity .3s,background .3s,box-shadow .3s;transition:transform .3s,opacity .3s,background .3s,box-shadow .3s;transition:transform .3s,opacity .3s,background .3s,box-shadow .3s,-webkit-transform .3s,-webkit-box-shadow .3s}.flickity-prev-next-button.next{-webkit-transform:translateX(-20%);-ms-transform:translateX(-20%);transform:translateX(-20%);right:2%}.flickity-prev-next-button.previous{-webkit-transform:translateX(20%);-ms-transform:translateX(20%);transform:translateX(20%);left:2%}.slider-show-nav .flickity-prev-next-button,.slider:hover .flickity-prev-next-button{opacity:.7;-webkit-transform:translateX(0)!important;-ms-transform:translateX(0)!important;transform:translateX(0)!important}.slider .flickity-prev-next-button:hover{-webkit-box-shadow:none;box-shadow:none;opacity:1}.slider .flickity-prev-next-button:hover svg,.slider .flickity-prev-next-button:hover .arrow{fill:#446084}@media(min-width:850px){.slider-nav-outside .flickity-prev-next-button.next{right:auto;left:100%}.slider-nav-outside .flickity-prev-next-button.previous{left:auto;right:100%}}.flickity-prev-next-button:disabled,button.flickity-prev-next-button[disabled]{opacity:0!important;background:none!important;cursor:auto;-webkit-box-shadow:none!important;box-shadow:none!important;pointer-events:none}.flickity-prev-next-button svg{position:absolute;padding:5px;left:50%;top:50%;width:100%;max-width:100%;padding:20%;max-height:100%;height:auto;-webkit-transition:all .3s;-o-transition:all .3s;transition:all .3s;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.slider-nav-push:not(.slider-nav-reveal) .flickity-prev-next-button{margin-top:-10%}.slider-nav-push.slider-nav-reveal .flickity-prev-next-button svg{margin-top:-40px}.flickity-prev-next-button svg,.flickity-prev-next-button .arrow{border-color:currentColor;fill:currentColor;-webkit-transition:all .3s;-o-transition:all .3s;transition:all .3s}.slider-auto-height,.animate-height{-webkit-transition:height .2s;-o-transition:height .2s;transition:height .2s}.flickity-prev-next-button.no-svg{color:#111;font-size:26px}.slider-no-arrows .flickity-prev-next-button{display:none!important}.slider-type-fade .flickity-slider{-webkit-transform:none!important;-ms-transform:none!important;transform:none!important}.slider-type-fade .flickity-slider>*{opacity:0;z-index:1;left:0!important}.slider-type-fade .flickity-slider>*.is-selected{opacity:1;z-index:2}.slider-type-fade .flickity-prev-next-button,.slider-type-fade .flickity-page-dots{z-index:3}.flickity-page-dots{position:absolute;bottom:15px;left:20%;right:20%;padding:0;margin:0;list-style:none;text-align:center;line-height:1}.slider-nav-outside .flickity-page-dots,.row-slider .flickity-page-dots{bottom:0}.flickity-rtl .flickity-page-dots{direction:rtl}.flickity-page-dots .dot{display:inline-block;width:12px;height:12px;margin:0 5px;border:3px solid #111;border-radius:50%;opacity:.4;cursor:pointer;-webkit-transition:opacity .3s;-o-transition:opacity .3s;transition:opacity .3s}.nav-dots-small .flickity-page-dots .dot,.row-slider .flickity-page-dots .dot{opacity:.2;width:10px;height:10px;border:0;background-color:#111}.flickity-page-dots .dot:hover{opacity:.7}.flickity-page-dots .dot.is-selected{background-color:#111;opacity:1!important}.slider-nav-dots-dashes .flickity-page-dots .dot{height:4px;width:40px;margin:0;border-radius:0}.slider-nav-dots-dashes-spaced .flickity-page-dots .dot{height:4px;width:40px;border-radius:0}.slider-nav-dots-simple .flickity-page-dots .dot{background-color:#111}.slider-nav-dots-square .flickity-page-dots .dot{border-radius:0}.slider-nav-circle .flickity-prev-next-button svg,.slider-nav-circle .flickity-prev-next-button .arrow{border-radius:100%;border:2px solid currentColor}.slider-nav-circle .flickity-prev-next-button:hover svg,.slider-nav-circle .flickity-prev-next-button:hover .arrow{background-color:#446084;border-color:#446084;fill:#fff!important}.slider-nav-outside.slider-nav-circle .next{-webkit-transform:translateX(-50%)!important;-ms-transform:translateX(-50%)!important;transform:translateX(-50%)!important}.slider-nav-outside.slider-nav-circle .previous{-webkit-transform:translateX(50%)!important;-ms-transform:translateX(50%)!important;transform:translateX(50%)!important}.slider-nav-reveal{padding-top:0;overflow:hidden}.slider-nav-reveal .flickity-prev-next-button:hover,.slider-nav-reveal .flickity-prev-next-button{width:30px;top:-2px;bottom:0;height:100%;background-color:#fff;-webkit-box-shadow:0 -150px 15px 0 rgba(0,0,0,.3);box-shadow:0 -150px 15px 0 rgba(0,0,0,.3);margin:0!important}.dark .slider-nav-reveal .flickity-prev-next-button{border-radius:99px;background-color:rgba(0,0,0,.3);color:#fff}.slider-nav-reveal .flickity-prev-next-button.next{-webkit-transform:translateX(10%);-ms-transform:translateX(10%);transform:translateX(10%);left:auto!important;right:-1px!important}.slider-nav-reveal .flickity-prev-next-button.previous{-webkit-transform:translateX(-10%);-ms-transform:translateX(-10%);transform:translateX(-10%);transform:translateX(-10%);right:auto!important;left:-1px!important}.slider-nav-light .flickity-prev-next-button{color:#fff}.slider-nav-light .flickity-prev-next-button svg,.slider-nav-light .flickity-prev-next-button .arrow{fill:#fff}.slider-nav-light .flickity-page-dots .dot{border-color:#fff}.slider-nav-light .flickity-page-dots .dot.is-selected{background-color:#fff}.slider-nav-light.slider-nav-dots-simple .flickity-page-dots .dot{background-color:#fff}.slider-style-container .flickity-slider>*,.slider-style-shadow .flickity-slider>*,.slider-style-focus .flickity-slider>*{max-width:1080px;margin:0 auto}.slider-style-container:not(.flickity-enabled) .ux_banner,.slider-style-shadow:not(.flickity-enabled) .ux_banner,.slider-style-focus:not(.flickity-enabled) .ux_banner{opacity:0!important}.slider-style-container .ux_banner,.slider-style-shadow .ux_banner,.slider-style-focus .ux_banner{opacity:1}.slider-style-container .flickity-slider>*:not(.is-selected),.slider-style-shadow .flickity-slider>*:not(.is-selected),.slider-style-focus .flickity-slider>*:not(.is-selected){opacity:.5}.slider-style-shadow{padding:15px 0 25px}.slider-style-shadow .flickity-slider>*:before{content:"";position:absolute;bottom:-6px;height:100px;left:-10%;right:-10%;background-size:100% 100%;z-index:-2;background-image:url(../../../themes/flatsome/assets/img/shadow@2x.png)}.slider-style-shadow .flickity-slider>*:not(.is-selected){-webkit-transform:scale(.9);-ms-transform:scale(.9);transform:scale(.9);z-index:-1;opacity:1}.slider-style-shadow .flickity-slider>*:not(.is-selected):before{height:200px;opacity:.5}.slider-style-shadow .flickity-slider>.is-selected{-webkit-transform:scale(.95);-ms-transform:scale(.95);transform:scale(.95)}.slider-style-focus{background-color:transparent;padding:30px 0}.slider-style-focus .flickity-page-dots{bottom:6px}.slider-style-focus .flickity-slider>*{max-width:1050px}.slider-style-focus .flickity-slider>*:not(.is-selected){-webkit-transform:scale(.93);-ms-transform:scale(.93);transform:scale(.93)}@media screen and (max-width:549px){.slider-wrapper .flickity-prev-next-button{display:none}.row-slider .flickity-prev-next-button{width:20px!important;opacity:.8;background-color:transparent!important;-webkit-box-shadow:none!important;box-shadow:none!important;-webkit-transform:translateX(0)!important;-ms-transform:translateX(0)!important;transform:translateX(0)!important}.row-slider .flickity-prev-next-button svg{padding:3px!important;border:0!important}.flickity-page-dots{pointer-events:none}.flickity-slider .banner-layers{overflow:hidden}}.stack{--stack-gap:0;-js-display:flex;display:-webkit-box;display:-ms-flexbox;display:flex}.stack>.text>*:first-child{margin-top:0}.stack>.text>*:last-child{margin-bottom:0}.stack-row{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.stack-row>*{margin:0!important}.stack-row>*~*{margin-left:var(--stack-gap)!important}.stack-col{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.stack-col>*{margin:0!important}.stack-col>*~*{margin-top:var(--stack-gap)!important}.items-stretch{-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.items-start{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.items-center{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.items-end{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.items-baseline{-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.justify-start{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.justify-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.justify-end{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.justify-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.justify-around{-ms-flex-pack:distribute;justify-content:space-around}@media(max-width:849px){.md\:stack-row{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.md\:stack-row>*{margin:0!important}.md\:stack-row>*~*{margin-left:var(--stack-gap)!important}.md\:stack-col{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.md\:stack-col>*{margin:0!important}.md\:stack-col>*~*{margin-top:var(--stack-gap)!important}.md\:items-stretch{-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.md\:items-start{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.md\:items-center{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.md\:items-end{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.md\:items-baseline{-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.md\:justify-start{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.md\:justify-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.md\:justify-end{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.md\:justify-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.md\:justify-around{-ms-flex-pack:distribute;justify-content:space-around}}@media(max-width:549px){.sm\:stack-row{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.sm\:stack-row>*{margin:0!important}.sm\:stack-row>*~*{margin-left:var(--stack-gap)!important}.sm\:stack-col{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.sm\:stack-col>*{margin:0!important}.sm\:stack-col>*~*{margin-top:var(--stack-gap)!important}.sm\:items-stretch{-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.sm\:items-start{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.sm\:items-center{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.sm\:items-end{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.sm\:items-baseline{-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.sm\:justify-start{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.sm\:justify-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.sm\:justify-end{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.sm\:justify-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.sm\:justify-around{-ms-flex-pack:distribute;justify-content:space-around}}table{width:100%;margin-bottom:1em;border-color:#ececec;border-spacing:0}th,td{padding:.5em;text-align:left;border-bottom:1px solid #ececec;line-height:1.3;font-size:.9em}td{color:#666}th:first-child,td:first-child{padding-left:0}th:last-child,td:last-child{padding-right:0}.dark th,.dark td{border-color:rgba(255,255,255,.08)}td label,td .label,td input,td select,td form,td dl,td p{margin:.5em 0}label{color:#222}.table{display:table}.table-cell{display:table-cell;vertical-align:middle}@media(max-width:849px){.touch-scroll-table{width:calc(100% + 30px);padding:15px;position:relative;overflow-y:hidden;margin-left:-15px;overflow-x:scroll;-webkit-box-shadow:inset -2px 0 18px -5px rgba(0,0,0,.5);box-shadow:inset -2px 0 18px -5px rgba(0,0,0,.5)}.touch-scroll-table table{width:100%}}.text-box{max-height:100%}.text-box .text-box-content{position:relative;z-index:10;-webkit-backface-visibility:hidden;backface-visibility:hidden}.text-box-square .text,.text-box-circle .text{height:0;padding:100% 0 0 0!important;background-color:rgba(0,0,0,.9)}.text-box-square .text-inner,.text-box-circle .text-inner{position:absolute;left:0;right:0;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.text-box-circle .border,.text-box-circle .text-box-content{border-radius:100%!important}a{color:#334862;text-decoration:none}a:focus,.button:focus,button:focus,input:focus{outline:none}a.plain{color:currentColor;-webkit-transition:color .3s,opacity .3s,-webkit-transform .3s;transition:color .3s,opacity .3s,-webkit-transform .3s;-o-transition:color .3s,opacity .3s,transform .3s;transition:color .3s,opacity .3s,transform .3s;transition:color .3s,opacity .3s,transform .3s,-webkit-transform .3s}.nav-dark a.plain:hover{opacity:.7}a:hover,a.remove:hover,a.icon-circle:hover{color:#000}.dark a,.dark .widget a{color:currentColor}.dark a:hover,.dark .widget a:hover{color:#fff}ul.links{margin:5px 0;font-size:.85em}ul.links li{margin:0 .4em;display:inline-block}ul.links li a{color:currentColor}ul.links li:before{font-family:"fl-icons";display:inline-block;margin-right:5px}ul.links li:first-child{margin-left:0}ul.links li:last-child{margin-right:0}.next-prev-nav .flex-col{padding:.7em 0}.next-prev-nav i{font-size:2em;margin:0 10px!important;top:-1px;vertical-align:middle}.next-prev-nav .flex-col+.flex-col{border-left:1px solid #ececec}ul{list-style:disc}ol{list-style:decimal}ol,ul{margin-top:0;padding:0}ul ul,ul ol,ol ol,ol ul{margin:1.5em 0 1.5em 3em}li{margin-bottom:.6em}dl dt,dl dd{display:inline-block;margin:0 5px 0 0}dl dt p,dl dd p{margin:0;padding:0}dl{opacity:.8;text-transform:uppercase;font-size:.85em}ul.ul-reset{margin:0;padding:0}ul.ul-reset>li{margin:0;padding:0;list-style:none}.entry-content ol li,.entry-summary ol li,.col-inner ol li,.entry-content ul li,.entry-summary ul li,.col-inner ul li{margin-left:1.3em}.entry-content ol li.tab,.entry-summary ol li.tab,.col-inner ol li.tab,.entry-content ul li.tab,.entry-summary ul li.tab,.col-inner ul li.tab{margin-left:0}ul li.bullet-checkmark,ul li.bullet-arrow,ul li.bullet-star{list-style:none;position:relative;padding:7px 0 7px 25px;margin:0;border-bottom:1px solid #ececec}.dark ul li.bullet-checkmark,.dark ul li.bullet-arrow,.dark ul li.bullet-star{border-color:rgba(255,255,255,.2)}ul li.bullet-checkmark:before,ul li.bullet-arrow:before,ul li.bullet-star:before{font-family:"fl-icons";left:0;position:absolute;font-size:16px;color:#7a9c59}ul li.bullet-checkmark:before{content:""!important}ul li.bullet-arrow:before{content:""!important}ul li.bullet-star:before{content:""!important}.button,button,input,textarea,select,fieldset{margin-bottom:1em}pre,blockquote,form,figure,p,dl,ul,ol{margin-bottom:1.3em}form p{margin-bottom:.5em}body{line-height:1.6}h1,h2,h3,h4,h5,h6{color:#555;width:100%;margin-top:0;margin-bottom:.5em;text-rendering:optimizeSpeed}.h1,h1{font-size:1.7em;line-height:1.3}.h2,h2{font-size:1.6em;line-height:1.3}.h3,h3{font-size:1.25em}.h4,h4{font-size:1.125em}.h5,h5{font-size:1em}.h6,h6{font-size:.85em;opacity:.8}h1.entry-title.mb{margin-bottom:30px}@media(max-width:549px){h1{font-size:1.4em}h2{font-size:1.2em}h3{font-size:1em}}h6 span{font-weight:400;font-weight:500}h3 label{display:inline-block;margin-right:10px}p{margin-top:0}h1>span,h2>span,h3>span,h4>span,h5>span,h6>span,p.headline>span{-webkit-box-decoration-break:clone;box-decoration-break:clone}p.lead,a.lead{font-size:1.3em}.uppercase,h6,th,span.widget-title{line-height:1.05;letter-spacing:.05em;text-transform:uppercase}.lowercase{text-transform:none!important}span.widget-title{font-size:1em;font-weight:600}.is-normal{font-weight:400}.is-bold{font-weight:700}.thin-font,.is-thin{font-weight:300!important}.thin-font strong,.is-thin strong{font-weight:700!important}.is-italic{font-style:italic!important}.is-uppercase,.uppercase{line-height:1.2;text-transform:uppercase}.is-alt-font,.alt-font{font-family:Georgia}.is-xxxlarge{font-size:2.5em}.is-xxlarge{font-size:2em}.is-xlarge{font-size:1.5em}.is-larger{font-size:1.3em}.is-large{font-size:1.15em}.is-small,.is-small.button{font-size:.8em}.is-smaller{font-size:.75em}.is-xsmall{font-size:.7em}.is-xxsmall{font-size:.6em}@media(max-width:549px){.is-xxlarge{font-size:2.5em}.is-xlarge{font-size:1.8em}.is-larger{font-size:1.2em}.is-large{font-size:1em}}.box-text h1,.box-text h2,.box-text h3,.box-text h4,.box-text h5,.box-text h6,.box-text a:not(.button){line-height:1.3;margin-top:.1em;margin-bottom:.1em}.box-text p{margin-top:.1em;margin-bottom:.1em}.box-text .button{margin-top:1em}.banner .button{margin-top:.5em;margin-bottom:.5em}.banner .is-divider,.banner .text-center .is-divider{margin-top:1em;margin-bottom:1em}.banner h1{font-size:3.5em}.banner h2{font-size:2.9em}.banner h3{font-size:2em}.banner h2,.banner h3,.banner h1{padding:0;font-weight:400;margin-top:.2em;margin-bottom:.2em;line-height:1}.banner h4{padding:0;font-size:1.5em;margin-top:.6em;margin-bottom:.6em}.banner h6,.banner h5,.banner p{padding:0;margin-top:1em;margin-bottom:1em}.line-height-small{line-height:1.4em}[data-line-height=xs]{line-height:.85!important}[data-line-height=s]{line-height:1!important}[data-line-height=m]{line-height:1.2!important}[data-line-height=l]{line-height:1.4!important}[data-line-height=xl]{line-height:1.6!important}.nav>li>a{font-size:.8em}.nav>li.html{font-size:.85em}.nav-size-xsmall>li>a{font-size:.65em}.nav-size-small>li>a{font-size:.7em}.nav-size-medium>li>a{font-size:.9em}.nav-size-large>li>a{font-size:1em}.nav-size-xlarge>li>a{font-size:1.1em}.nav-spacing-xsmall>li{margin:0}.nav-spacing-small>li{margin:0 5px}.nav-spacing-medium>li{margin:0 9px}.nav-spacing-large>li{margin:0 11px}.nav-spacing-xlarge>li{margin:0 13px}.fancy-underline{position:relative}.fancy-underline:after{content:"";color:green;position:absolute;left:0;border-radius:999px;right:0;top:100%;height:9px;image-rendering:-webkit-optimize-contrast;background:url(../../../themes/flatsome/assets/img/underline.png) 50% top no-repeat;background-size:100% 9px}span.count-up{opacity:0;-webkit-transition:opacity 2s;-o-transition:opacity 2s;transition:opacity 2s}span.count-up.active{opacity:1}[data-text-color=primary]{color:#446084!important}[data-text-color=secondary]{color:#d26e4b!important}[data-text-color=alert]{color:#b20000!important}[data-text-color=success]{color:#7a9c59!important}[data-text-bg=primary]{background-color:#446084}[data-text-bg=secondary]{background-color:#d26e4b}[data-text-bg=alert]{background-color:#b20000}[data-text-bg=success]{background-color:#7a9c59}.text-bordered-white,.text-bordered-primary,.text-bordered-dark{border:2px solid #fff;padding:5px;display:inline-block}.text-bordered-dark{border-color:#000}h1.text-bordered-white,h1.text-bordered-primary,h1.text-bordered-dark{padding:15px}.text-boarder-top-bottom-white,.text-boarder-top-bottom-dark{border-top:3px solid #fff;padding-top:15px;border-bottom:3px solid #fff;padding-bottom:15px;display:inline-block}.text-boarder-top-bottom-dark{border-color:#000}blockquote{position:relative;font-size:1.2em;margin:0 0 1.25em;padding:0 1.25em 0 1.875em;border-left:2px solid #446084;font-style:italic;color:#333}.dark blockquote{color:#fff}.container:after,.row:after,.clearfix:after,.clear:after{content:"";display:table;clear:both}@media(max-width:549px){[data-show=hide-for-small],.hide-for-small{display:none!important}.small-text-center{text-align:center!important;width:100%!important;float:none!important}}@media(min-width:550px){[data-show=show-for-small],.show-for-small{display:none!important}}@media(min-width:850px){[data-show=show-for-medium],.show-for-medium{display:none!important}}@media(max-width:849px){[data-show=hide-for-medium],.hide-for-medium{display:none!important}.medium-text-center .pull-left,.medium-text-center .pull-right{float:none}.medium-text-center .ml{margin-left:auto}.medium-text-center .mr{margin-right:auto}.medium-text-center{text-align:center!important;width:100%!important;float:none!important}}@media(min-width:850px){[data-show=hide-for-large],.hide-for-large{display:none!important}}.full-width,.expand{width:100%!important;max-width:100%!important;padding-left:0!important;padding-right:0!important;display:block}.pull-right{float:right;margin-right:0!important}.pull-left{float:left;margin-left:0!important}.mb{margin-bottom:30px}.mt{margin-top:30px}.mr{margin-right:30px}.ml{margin-left:30px}.mb-0{margin-bottom:0!important}.ml-0{margin-left:0!important}.mr-0{margin-right:0!important}.mt-0{margin-top:0!important}.mb-half{margin-bottom:15px}.mt-half{margin-top:15px}.mr-half{margin-right:15px}.ml-half{margin-left:15px}.mb-half:last-child,.mb:last-child{margin-bottom:0}.pb{padding-bottom:30px}.pt{padding-top:30px}.pb-half{padding-bottom:15px}.pt-half{padding-top:15px}.pb-0{padding-bottom:0!important}.pt-0{padding-top:0!important}.no-margin{margin:0!important}.no-padding{padding:0!important}.inner-padding{padding:30px}.first-reset *:first-child{margin-top:0}.last-reset *:last-child{margin-bottom:0}.no-select{-webkit-user-select:none!important;-moz-user-select:none!important;-ms-user-select:none!important;user-select:none!important}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-center>div,.text-center>div>div,.text-center .is-divider,.text-center .star-rating,.text-center .is-star-rating{margin-left:auto;margin-right:auto}.text-center .pull-right,.text-center .pull-left{float:none}.text-left .is-divider,.text-left .star-rating,.text-left .is-star-rating{margin-right:auto;margin-left:0}.text-right>div,.text-right>div>div,.text-right .is-divider,.text-right .star-rating,.text-right .is-star-rating{margin-left:auto;margin-right:0}.relative{position:relative!important}.absolute{position:absolute!important}.fixed{position:fixed!important;z-index:12}.top{top:0}.right{right:0}.left{left:0}.bottom{bottom:0}.fill{position:absolute;top:0;left:0;height:100%;right:0;bottom:0;padding:0!important;margin:0!important}.v-center{bottom:auto;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.h-center{left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}.h-center.v-center{left:auto!important;bottom:auto!important;right:50%;top:50%;-webkit-transform:translate(50%,-50%);-ms-transform:translate(50%,-50%);transform:translate(50%,-50%)}.pull-right{float:right}.pull-left{float:left}.is-full-height{min-height:550px;height:100%;height:100vh;padding-top:0!important;padding-bottom:0!important}.bg-fill{background-size:cover!important;background-repeat:no-repeat!important;background-position:50% 50%}.bg-top{background-position:top;-o-object-position:top;object-position:top}.circle{border-radius:999px!important;-o-object-fit:cover;object-fit:cover}.circle img{border-radius:999px!important;-o-object-fit:cover;object-fit:cover}.round{border-radius:5px}.has-border{border:2px solid #446084;padding:15px 30px 30px}.dashed-border{border-style:dashed}.success-border{border-color:#7a9c59}.bt{border-top:1px solid #ececec}.bb{border-bottom:1px solid #ececec}.bl{border-left:1px solid #ececec}.br{border-right:1px solid #ececec}.hidden{display:none!important;visibility:hidden!important}.is-invisible{visibility:hidden;opacity:0}.z-1{z-index:21}.z-2{z-index:22}.z-3{z-index:23}.z-4{z-index:24}.z-5{z-index:25}.z-top{z-index:9995}.z-top-2{z-index:9996}.z-top-3{z-index:9997}.no-click{pointer-events:none}.no-wrap{white-space:nowrap}.primary-color{color:#446084}.secondary-color{color:#d26e4b}.success-color{color:#7a9c59}.alert-color{color:#b20000}.bg-primary-color{background-color:#446084}.bg-secondary-color{background-color:#d26e4b}.bg-success-color{background-color:#7a9c59}.bg-alert-color{background-color:#b20000}.is-transparent{background-color:transparent!important}.inline{display:inline}.block{display:block}.flex{display:-webkit-box;display:-ms-flexbox;display:flex;-js-display:flex}@media(max-width:549px){.small-block{display:block}}.inline-block{display:inline-block}.inline-images img,img.inline{display:inline-block!important}.is-well{padding:30px;background-color:rgba(0,0,0,.02);-webkit-box-shadow:1px 1px 3px 0 rgba(0,0,0,.2),0 1px 0 rgba(0,0,0,.07),inset 0 0 0 1px rgba(0,0,0,.05);box-shadow:1px 1px 3px 0 rgba(0,0,0,.2),0 1px 0 rgba(0,0,0,.07),inset 0 0 0 1px rgba(0,0,0,.05)}.no-overflow{overflow:hidden}.no-text-overflow{white-space:nowrap;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.strong{font-weight:700}.op-4{opacity:.4}.op-5{opacity:.5}.op-6{opacity:.6}.op-7{opacity:.7}.op-8{opacity:.8}@media(max-width:549px){.sm-touch-scroll{overflow-y:none;overflow-x:auto;-webkit-overflow-scrolling:touch}}.no-scrollbar{-ms-overflow-style:-ms-autohiding-scrollbar;scrollbar-width:none}.no-scrollbar::-webkit-scrollbar{width:0px!important;height:0px!important}.screen-reader-text{clip:rect(1px,1px,1px,1px);position:absolute!important;height:1px;width:1px;overflow:hidden}.screen-reader-text:focus{background-color:#f1f1f1;border-radius:3px;-webkit-box-shadow:0 0 2px 2px rgba(0,0,0,.6);box-shadow:0 0 2px 2px rgba(0,0,0,.6);clip:auto!important;color:#21759b;display:block;font-size:14px;font-size:.875rem;font-weight:700;height:auto;left:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}@media screen and (max-width:549px){.x5{left:5%}.x15{left:15%}.x25{left:25%}.x35{left:35%}.x45{left:45%}.x55{right:45%}.x65{right:35%}.x75{right:25%}.x85{right:15%}.x95{right:5%}.x0{left:0%}.x10{left:10%}.x20{left:20%}.x30{left:30%}.x40{left:40%}.x60{right:40%}.x70{right:30%}.x80{right:20%}.x90{right:10%}.x100{right:0%}.y0{top:0%}.y10{top:10%}.y20{top:20%}.y30{top:30%}.y40{top:40%}.y60{bottom:40%}.y70{bottom:30%}.y80{bottom:20%}.y90{bottom:10%}.y100{bottom:0%}.y5{top:5%}.y15{top:15%}.y25{top:25%}.y35{top:35%}.y45{top:45%}.y55{bottom:45%}.y65{bottom:35%}.y75{bottom:25%}.y85{bottom:15%}.y95{bottom:5%}.x50{left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}.y50{top:50.3%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.y50.x50{-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}}@media screen and (min-width:550px)and (max-width:849px){.md-x5{left:5%}.md-x15{left:15%}.md-x25{left:25%}.md-x35{left:35%}.md-x45{left:45%}.md-x55{right:45%}.md-x65{right:35%}.md-x75{right:25%}.md-x85{right:15%}.md-x95{right:5%}.md-y5{top:5%}.md-y15{top:15%}.md-y25{top:25%}.md-y35{top:35%}.md-y45{top:45%}.md-y55{bottom:45%}.md-y65{bottom:35%}.md-y75{bottom:25%}.md-y85{bottom:15%}.md-y95{bottom:5%}.md-x0{left:0%}.md-x10{left:10%}.md-x20{left:20%}.md-x30{left:30%}.md-x40{left:40%}.md-x60{right:40%}.md-x70{right:30%}.md-x80{right:20%}.md-x90{right:10%}.md-x100{right:0%}.md-y0{top:0%}.md-y10{top:10%}.md-y20{top:20%}.md-y30{top:30%}.md-y40{top:40%}.md-y60{bottom:40%}.md-y70{bottom:30%}.md-y80{bottom:20%}.md-y90{bottom:10%}.md-y100{bottom:0%}.md-x50{left:50%;-webkit-transform:translateX(-50%)!important;-ms-transform:translateX(-50%)!important;transform:translateX(-50%)!important}.md-y50{top:50%;-webkit-transform:translateY(-50%)!important;-ms-transform:translateY(-50%)!important;transform:translateY(-50%)!important}.md-x50.md-y50{-webkit-transform:translate(-50%,-50%)!important;-ms-transform:translate(-50%,-50%)!important;transform:translate(-50%,-50%)!important}}@media screen and (min-width:850px){.lg-x5{left:5%}.lg-x15{left:15%}.lg-x25{left:25%}.lg-x35{left:35%}.lg-x45{left:45%}.lg-x55{right:45%}.lg-x65{right:35%}.lg-x75{right:25%}.lg-x85{right:15%}.lg-x95{right:5%}.lg-y5{top:5%}.lg-y15{top:15%}.lg-y25{top:25%}.lg-y35{top:35%}.lg-y45{top:45%}.lg-y55{bottom:45%}.lg-y65{bottom:35%}.lg-y75{bottom:25%}.lg-y85{bottom:15%}.lg-y95{bottom:5%}.lg-x0{left:0%}.lg-x10{left:10%}.lg-x20{left:20%}.lg-x30{left:30%}.lg-x40{left:40%}.lg-x60{right:40%}.lg-x70{right:30%}.lg-x80{right:20%}.lg-x90{right:10%}.lg-x100{right:0%}.lg-y0{top:0%}.lg-y10{top:10%}.lg-y20{top:20%}.lg-y30{top:30%}.lg-y40{top:40%}.lg-y60{bottom:40%}.lg-y70{bottom:30%}.lg-y80{bottom:20%}.lg-y90{bottom:10%}.lg-y100{bottom:0%}.lg-x50{left:50%;-webkit-transform:translateX(-50%)!important;-ms-transform:translateX(-50%)!important;transform:translateX(-50%)!important}.lg-y50{top:50%;-webkit-transform:translateY(-50%)!important;-ms-transform:translateY(-50%)!important;transform:translateY(-50%)!important}.lg-x50.lg-y50{-webkit-transform:translate(-50%,-50%)!important;-ms-transform:translate(-50%,-50%)!important;transform:translate(-50%,-50%)!important}}.res-text{font-size:11px}.widget-area .res-text,.small-1 .res-text,.small-2 .res-text,.small-3 .res-text{font-size:8px}.small-1 .res-text h6,.small-2 .res-text h6,.small-3 .res-text h6{font-size:10px}.small-1 .res-text p.lead,.small-2 .res-text p.lead,.small-3 .res-text p.lead{font-size:16px}.small-4 .res-text{font-size:8.5px}.small-5 .res-text{font-size:9px}.small-6 .res-text{font-size:10px}.small-7 .res-text{font-size:11px}.small-8 .res-text{font-size:12px}.small-9 .res-text{font-size:13px}.small-10 .res-text{font-size:14px}.small-11 .res-text{font-size:15px}@media screen and (min-width:550px){.medium-1 .res-text,.medium-2 .res-text,.medium-3 .res-text,.medium-4 .res-text,.medium-5 .res-text,.medium-6 .res-text,.medium-7 .res-text{font-size:.8vw}.medium-8 .res-text{font-size:.9vw}.medium-9 .res-text{font-size:1.15vw}.medium-10 .res-text{font-size:1.3vw}.medium-11 .res-text{font-size:1.5vw}.res-text{font-size:1.8vw}}@media screen and (min-width:850px){.res-text{font-size:16px}.widget-area .res-text,.large-1 .res-text,.large-2 .res-text,.large-3 .res-text{font-size:8px}.large-1 .res-text h6,.large-2 .res-text h6,.large-3 .res-text h6{font-size:10px}.large-1 .res-text p.lead,.large-2 .res-text p.lead,.large-3 .res-text p.lead{font-size:16px}.large-4 .res-text{font-size:8.5px}.large-5 .res-text{font-size:9px}.large-6 .res-text{font-size:10px}.large-7 .res-text{font-size:11px}.large-8 .res-text{font-size:12px}.large-9 .res-text{font-size:13px}.large-10 .res-text{font-size:14px}.large-11 .res-text{font-size:15px}}[data-animate],.slider [data-animate]{will-change:filter,transform,opacity;-webkit-backface-visibility:hidden;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;opacity:0!important;-webkit-transition:opacity .7s ease-in,-webkit-filter 1.3s,-webkit-transform 1.6s;transition:opacity .7s ease-in,-webkit-filter 1.3s,-webkit-transform 1.6s;-o-transition:filter 1.3s,transform 1.6s,opacity .7s ease-in;transition:filter 1.3s,transform 1.6s,opacity .7s ease-in;transition:filter 1.3s,transform 1.6s,opacity .7s ease-in,-webkit-filter 1.3s,-webkit-transform 1.6s}[data-animate=bounceInLeft],[data-animate=bounceInUp],[data-animate=bounceInDown],[data-animate=bounceInRight],.slider [data-animate=bounceInLeft],.slider [data-animate=bounceInUp],.slider [data-animate=bounceInDown],.slider [data-animate=bounceInRight]{-webkit-transition:opacity .5s ease-in,-webkit-transform .8s cubic-bezier(0,.195,0,1.465);transition:opacity .5s ease-in,-webkit-transform .8s cubic-bezier(0,.195,0,1.465);-o-transition:transform .8s cubic-bezier(0,.195,0,1.465),opacity .5s ease-in;transition:transform .8s cubic-bezier(0,.195,0,1.465),opacity .5s ease-in;transition:transform .8s cubic-bezier(0,.195,0,1.465),opacity .5s ease-in,-webkit-transform .8s cubic-bezier(0,.195,0,1.465)}[data-animate=bounceInLeft],.slider [data-animate=bounceInLeft]{-webkit-transform:translate3d(-300px,0,0);transform:translate3d(-300px,0,0)}[data-animate=blurIn],.slider [data-animate=blurIn]{-webkit-filter:blur(15px);filter:blur(15px)}[data-animate=fadeInLeft],.slider [data-animate=fadeInLeft]{-webkit-transform:translate3d(-70px,0,0);transform:translate3d(-70px,0,0)}[data-animate=fadeInRight],.slider [data-animate=fadeInRight]{-webkit-transform:translate3d(70px,0,0);transform:translate3d(70px,0,0)}[data-animate=bounceInUp],[data-animate=fadeInUp],.slider [data-animate=bounceInUp],.slider [data-animate=fadeInUp]{-webkit-transform:translate3d(0,70px,0);transform:translate3d(0,70px,0)}[data-animate=bounceInRight],.slider [data-animate=bounceInRight]{-webkit-transform:translate3d(300px,0,0);transform:translate3d(300px,0,0)}[data-animate=bounceIn],.slider [data-animate=bounceIn]{-webkit-transform:scale(1.3);-ms-transform:scale(1.3);transform:scale(1.3)}[data-animate=bounceInDown],[data-animate=fadeInDown],.slider [data-animate=bounceInDown],.slider [data-animate=fadeInDown]{-webkit-transform:translate3d(0,-70px,0);transform:translate3d(0,-70px,0)}[data-animate=flipInY],.slider [data-animate=flipInY]{-webkit-transform:perspective(400px) rotate3d(0,1,0,-90deg) translate3d(15px,0,0);transform:perspective(400px) rotate3d(0,1,0,-90deg) translate3d(15px,0,0);-webkit-backface-visibility:visible;backface-visibility:visible}[data-animate=flipInX],.slider [data-animate=flipInX]{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg) translate3d(0,-15px,0);transform:perspective(400px) rotate3d(1,0,0,90deg) translate3d(0,-15px,0);-webkit-backface-visibility:visible;backface-visibility:visible}[data-animated=true],.slider .is-selected [data-animated=true],.row-slider.slider [data-animated=true]{-webkit-animation-delay:.1s;animation-delay:.1s;-webkit-transform:translate3d(0,0,0) scale(1);transform:translate3d(0,0,0) scale(1);opacity:1!important}.flickity-slider>*:not(.is-selected) [data-animated=true]{-webkit-transition:opacity .3s!important;-o-transition:opacity .3s!important;transition:opacity .3s!important}[data-animate=none],.slider [data-animate=none]{opacity:1!important}[data-animated=true][data-animate=blurIn],.slider [data-animate=blurIn][data-animated=true]{-webkit-filter:blur(0);filter:blur(0)}[data-animated=false]{-webkit-transition:none!important;-o-transition:none!important;transition:none!important}.has-shadow [data-animate],[data-animate]:hover{-webkit-transition-delay:0s!important;-o-transition-delay:0s!important;transition-delay:0s!important}[data-animate-delay="100"]{-webkit-transition-delay:.1s;-o-transition-delay:.1s;transition-delay:.1s}.nav-anim>li{-webkit-transition:opacity .3s,-webkit-transform .3s;transition:opacity .3s,-webkit-transform .3s;-o-transition:transform .3s,opacity .3s;transition:transform .3s,opacity .3s;transition:transform .3s,opacity .3s,-webkit-transform .3s;-webkit-transform:translateY(-15px);-ms-transform:translateY(-15px);transform:translateY(-15px);opacity:0}.active .nav-anim>li,.nav-anim.active>li,.mfp-ready .nav-anim>li{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}.nav-anim>li,.col+.col [data-animate],[data-animate-delay="200"],[data-animate]+[data-animate]{-webkit-transition-delay:.2s;-o-transition-delay:.2s;transition-delay:.2s}.nav-anim>li+li,[data-animate-delay="300"]{-webkit-transition-delay:.3s;-o-transition-delay:.3s;transition-delay:.3s}.nav-anim>li+li+li,.col+.col+.col [data-animate],[data-animate-delay="400"],[data-animate]+[data-animate]+[data-animate]{-webkit-transition-delay:.4s;-o-transition-delay:.4s;transition-delay:.4s}.nav-anim>li+li+li+li,[data-animate-delay="500"]{-webkit-transition-delay:.5s;-o-transition-delay:.5s;transition-delay:.5s}.nav-anim>li+li+li+li+li,.col+.col+.col+.col [data-animate],[data-animate-delay="600"],[data-animate]+[data-animate]+[data-animate]+[data-animate]{-webkit-transition-delay:.6s;-o-transition-delay:.6s;transition-delay:.6s}.nav-anim>li+li+li+li+li+li,[data-animate-delay="700"]{-webkit-transition-delay:.7s;-o-transition-delay:.7s;transition-delay:.7s}.nav-anim>li+li+li+li+li+li+li,.col+.col+.col+.col+.col [data-animate],[data-animate]+[data-animate]+[data-animate]+[data-animate]+[data-animate],[data-animate-delay="800"]{-webkit-transition-delay:.8s;-o-transition-delay:.8s;transition-delay:.8s}.nav-anim>li+li+li+li+li+li+li+li,.col+.col+.col+.col+.col+.col [data-animate],[data-animate-delay="900"]{-webkit-transition-delay:.9s;-o-transition-delay:.9s;transition-delay:.9s}.nav-anim>li+li+li+li+li+li+li+li+li,.col+.col+.col+.col+.col+.col+.col [data-animate],[data-animate-delay="1000"]{-webkit-transition-delay:1s;-o-transition-delay:1s;transition-delay:1s}.slider-type-fade .flickity-slider>*:not(.is-selected) [data-animate]{opacity:0!important;-webkit-transition:none!important;-o-transition:none!important;transition:none!important}@-webkit-keyframes stuckMoveDown{0%{-webkit-transform:translateY(-100%);transform:translateY(-100%)}100%{-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes stuckMoveDown{0%{-webkit-transform:translateY(-100%);transform:translateY(-100%)}100%{-webkit-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes stuckMoveUp{0%{-webkit-transform:translateY(100%);transform:translateY(100%)}100%{-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes stuckMoveUp{0%{-webkit-transform:translateY(100%);transform:translateY(100%)}100%{-webkit-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes stuckFadeIn{0%{opacity:0}100%{opacity:1}}@keyframes stuckFadeIn{0%{opacity:0}100%{opacity:1}}.is-border{border-width:1px;border-style:solid;border-color:#ececec;position:absolute;pointer-events:none;border-radius:0;margin:0;top:0;bottom:0;right:0;left:0}.is-dashed{border-style:dashed}.is-dotted{border-style:dotted}.has-shadow.box:not(.box-overlay):not(.box-shade),.has-shadow .box:not(.box-overlay):not(.box-shade){background-color:#fff}.dark .has-shadow.box:not(.box-overlay):not(.box-shade),.dark .has-shadow .box:not(.box-overlay):not(.box-shade){background-color:#333}.row-box-shadow-1 .col-inner,.row-box-shadow-2 .col-inner,.row-box-shadow-3 .col-inner,.row-box-shadow-4 .col-inner,.row-box-shadow-5 .col-inner,.row-box-shadow-1-hover .col-inner,.row-box-shadow-2-hover .col-inner,.row-box-shadow-3-hover .col-inner,.row-box-shadow-4-hover .col-inner,.row-box-shadow-5-hover .col-inner,.box-shadow-1,.box-shadow-2,.box-shadow-3,.box-shadow-4,.box-shadow-5,.box-shadow-1-hover,.box-shadow-2-hover,.box-shadow-3-hover,.box-shadow-4-hover,.box-shadow-5-hover{-webkit-transition:background-color .3s,color .3s,opacity .3s,-webkit-transform .3s,-webkit-box-shadow .3s;transition:background-color .3s,color .3s,opacity .3s,-webkit-transform .3s,-webkit-box-shadow .3s;-o-transition:transform .3s,box-shadow .3s,background-color .3s,color .3s,opacity .3s;transition:transform .3s,box-shadow .3s,background-color .3s,color .3s,opacity .3s;transition:transform .3s,box-shadow .3s,background-color .3s,color .3s,opacity .3s,-webkit-transform .3s,-webkit-box-shadow .3s}.row-box-shadow-1 .col-inner,.row-box-shadow-1-hover .col-inner:hover,.box-shadow-1,.box-shadow-1-hover:hover{-webkit-box-shadow:0 1px 3px -2px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24);box-shadow:0 1px 3px -2px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24)}.box-shadow,.row-box-shadow-2 .col-inner,.row-box-shadow-2-hover .col-inner:hover,.box-shadow-2,.box-shadow-2-hover:hover{-webkit-box-shadow:0 3px 6px -4px rgba(0,0,0,.16),0 3px 6px rgba(0,0,0,.23);box-shadow:0 3px 6px -4px rgba(0,0,0,.16),0 3px 6px rgba(0,0,0,.23)}.row-box-shadow-3 .col-inner,.row-box-shadow-3-hover .col-inner:hover,.box-shadow-3,.box-shadow-3-hover:hover{-webkit-box-shadow:0 10px 20px rgba(0,0,0,.19),0 6px 6px rgba(0,0,0,.22);box-shadow:0 10px 20px rgba(0,0,0,.19),0 6px 6px rgba(0,0,0,.22)}.row-box-shadow-4 .col-inner,.row-box-shadow-4-hover .col-inner:hover,.box-shadow-4,.box-shadow-4-hover:hover{-webkit-box-shadow:0 14px 28px rgba(0,0,0,.25),0 10px 10px rgba(0,0,0,.1);box-shadow:0 14px 28px rgba(0,0,0,.25),0 10px 10px rgba(0,0,0,.1)}.row-box-shadow-5 .col-inner,.row-box-shadow-5-hover .col-inner:hover,.box-shadow-5,.box-shadow-5-hover:hover{-webkit-box-shadow:0 30px 40px 0 rgba(0,0,0,.2);box-shadow:0 30px 40px 0 rgba(0,0,0,.2)}.row-box-shadow-5-hover .col-inner:hover,.box-shadow-5-hover:hover,.box-shadow-4-hover:hover,.row-box-shadow-4-hover .col-inner:hover{-webkit-transform:translateY(-6px);-ms-transform:translateY(-6px);transform:translateY(-6px)}.text-shadow,.text-shadow-1{text-shadow:1px 1px 1px rgba(0,0,0,.3)}.text-shadow-2{text-shadow:2px 2px 5px rgba(0,0,0,.4)}.text-shadow-3{text-shadow:3px 3px 8px rgba(0,0,0,.4)}.text-shadow-4{text-shadow:3px 3px 12px rgba(0,0,0,.5)}.text-shadow-5{text-shadow:5px 5px 16px rgba(0,0,0,.6)}a.hotspot{background-color:#000;color:#fff;border-radius:99px;opacity:.8;font-weight:bolder;display:block;padding:0;line-height:1.5em;text-align:center;height:1.5em;width:1.5em;-webkit-transition:all .3s;-o-transition:all .3s;transition:all .3s}a.hotspot i{font-size:.8em}a.hotspot:hover{opacity:1;color:#000!important;background-color:#fff!important}.has-hover .bg,.has-hover [class*=image-] img{-webkit-transition:opacity .6s,-webkit-filter .6s,-webkit-transform .6s,-webkit-box-shadow .3s;transition:opacity .6s,-webkit-filter .6s,-webkit-transform .6s,-webkit-box-shadow .3s;-o-transition:filter .6s,opacity .6s,transform .6s,box-shadow .3s;transition:filter .6s,opacity .6s,transform .6s,box-shadow .3s;transition:filter .6s,opacity .6s,transform .6s,box-shadow .3s,-webkit-filter .6s,-webkit-transform .6s,-webkit-box-shadow .3s}.bg-color .bg,.bg-grayscale:hover .bg,.has-hover .image-color img,.has-hover:hover .image-grayscale img{-webkit-filter:grayscale(100%);filter:grayscale(100%)}.bg-color:hover .bg,.has-hover:hover .image-color img{-webkit-filter:grayscale(0);filter:grayscale(0)}.bg-zoom:hover .bg,.has-hover:hover .image-zoom img{-webkit-transform:scale(1.1);-ms-transform:scale(1.1);transform:scale(1.1)}.bg-zoom-long .bg,.has-hover .image-zoom-long img{-webkit-transition:-webkit-transform 5s!important;transition:-webkit-transform 5s!important;-o-transition:transform 5s!important;transition:transform 5s!important;transition:transform 5s,-webkit-transform 5s!important}.bg-zoom-long .bg,.has-hover:hover .image-zoom-long img{-webkit-transform:scale(1.3);-ms-transform:scale(1.3);transform:scale(1.3)}.bg-zoom-fade:hover .bg,.has-hover:hover .image-zoom-fade img{opacity:.7;-webkit-transform:scale(1.1);-ms-transform:scale(1.1);transform:scale(1.1)}.bg-glow:hover .bg,.has-hover:hover .image-glow img{-webkit-filter:brightness(1.1);filter:brightness(1.1)}.bg-fade-out:hover .bg,.has-hover:hover .image-fade-out img{opacity:.7}.image-fade:hover .bg,.has-hover:hover .image-fade img{opacity:.6}.bg-fade-in .bg,.image-fade-in img{opacity:.7}.bg-fade-in:hover .bg,.has-hover:hover .image-fade-in img{opacity:1}.bg-blur:hover .bg,.has-hover:hover .image-blur img{-webkit-filter:blur(5px);filter:blur(5px)}.bg-overlay-remove:hover .overlay,.bg-overlay-add:not(:hover) .overlay,.has-hover:hover .image-overlay-remove .overlay,.has-hover:not(:hover) .image-overlay-add .overlay{opacity:0}.bg-overlay-remove-50:hover .overlay,.bg-overlay-add-50:not(:hover) .overlay,.has-hover:hover .image-overlay-remove-50 .overlay,.has-hover:not(:hover) .image-overlay-add-50 .overlay{opacity:.5}.has-mask{overflow:hidden;-webkit-transform:translateZ(0);transform:translateZ(0)}.mask-circle{-webkit-clip-path:circle(50% at center);clip-path:circle(50% at center)}.mask-angled{-webkit-clip-path:polygon(0 calc(0% + 30px),100% 0,100% 100%,0 100%);clip-path:polygon(0 calc(0% + 30px),100% 0,100% 100%,0 100%)}.mask-angled-right{-webkit-clip-path:polygon(0 0,100% calc(0% + 30px),100% 100%,0 100%);clip-path:polygon(0 0,100% calc(0% + 30px),100% 100%,0 100%)}.mask-arrow{-webkit-clip-path:polygon(0 0,calc(50% - 30px) 0,50% calc(0% + 30px),calc(50% + 30px) 0,100% 0,100% 100%,0 100%);clip-path:polygon(0 0,calc(50% - 30px) 0,50% calc(0% + 30px),calc(50% + 30px) 0,100% 0,100% 100%,0 100%)}.mask-angled-large{-webkit-clip-path:polygon(0 calc(0% + 60px),100% 0,100% 100%,0 100%);clip-path:polygon(0 calc(0% + 60px),100% 0,100% 100%,0 100%)}.mask-angled-right-large{-webkit-clip-path:polygon(0 0,100% 0,100% calc(100% - 60px),0 100%);clip-path:polygon(0 0,100% 0,100% calc(100% - 60px),0 100%)}.mask-arrow-large{-webkit-clip-path:polygon(0 0,calc(50% - 60px) 0,50% calc(0% + 60px),calc(50% + 60px) 0,100% 0,100% 100%,0 100%);clip-path:polygon(0 0,calc(50% - 60px) 0,50% calc(0% + 60px),calc(50% + 60px) 0,100% 0,100% 100%,0 100%)}.mask-angled-right,.mask-arrow,.mask-angled{margin-top:-30px}.mask-angled-right-large,.mask-arrow-large,.mask-angled-large{margin-top:-60px}[data-parallax]:not(.parallax-active){opacity:0}[data-parallax]{will-change:transform!important}[data-parallax-container]{overflow:hidden}[data-parallax]:not(.parallax-active) .bg{opacity:0}.shade{content:" ";position:absolute;top:0;bottom:0;left:0;right:0;background:rgba(0,0,0,.2);background:-webkit-gradient(linear,left bottom,left top,from(#323232),color-stop(33%,rgba(50,50,50,0)));background:-o-linear-gradient(bottom,#323232 0%,rgba(50,50,50,0) 33%);background:linear-gradient(to top,#323232 0%,rgba(50,50,50,0) 33%);opacity:.3;pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transition:opacity .3s;-o-transition:opacity .3s;transition:opacity .3s}.shade-top{opacity:.4;background:rgba(0,0,0,.2);background:-webkit-gradient(linear,left top,left bottom,from(black),color-stop(70%,rgba(0,0,0,0)));background:-o-linear-gradient(top,black 0%,rgba(0,0,0,0) 70%);background:linear-gradient(to bottom,black 0%,rgba(0,0,0,0) 70%)}.box:hover .shade{opacity:.5}.box-shade:not(.dark) .shade{opacity:.8;background:rgba(255,255,255,.2);background:-webkit-gradient(linear,left bottom,left top,from(white),color-stop(33%,rgba(255,255,255,0)));background:-o-linear-gradient(bottom,white 0%,rgba(255,255,255,0) 33%);background:linear-gradient(to top,white 0%,rgba(255,255,255,0) 33%)}.show-on-hover,.hover-slide,.hover-slide-in,.hover-zoom,.hover-zoom-in{opacity:0;-webkit-transition:opacity .5s,max-height .6s,-webkit-transform .3s,-webkit-filter .6s;transition:opacity .5s,max-height .6s,-webkit-transform .3s,-webkit-filter .6s;-o-transition:opacity .5s,transform .3s,max-height .6s,filter .6s;transition:opacity .5s,transform .3s,max-height .6s,filter .6s;transition:opacity .5s,transform .3s,max-height .6s,filter .6s,-webkit-transform .3s,-webkit-filter .6s;-webkit-filter:blur(0);filter:blur(0);pointer-events:none}.hover-slide{-webkit-transform:translateY(15%) translateZ(0);transform:translateY(15%) translateZ(0)}.hover-slide-in{-webkit-transform:translateY(100%) translateZ(0);transform:translateY(100%) translateZ(0)}.box-text-middle .box-text.hover-slide{-webkit-transform:translateY(-40%) translateZ(0);transform:translateY(-40%) translateZ(0)}.hover-fade-out{-webkit-transition:opacity .3s;-o-transition:opacity .3s;transition:opacity .3s}.has-hover:hover .hover-fade-out{opacity:0}.hover-invert{opacity:1!important;-webkit-filter:invert(0);filter:invert(0)}.has-hover:hover .hover-invert{-webkit-filter:invert(100%);filter:invert(100%)}.hover-reveal{-webkit-transition:all .6s;-o-transition:all .6s;transition:all .6s;opacity:0;-webkit-transform:translateY(15%) translateZ(0);transform:translateY(15%) translateZ(0);max-height:0}.has-hover:hover .hover-reveal{opacity:1;max-height:150px}.has-hover:hover .hover-reveal.reveal-small{max-height:30px}.hover-blur{opacity:0;-webkit-transition:opacity .3s,-webkit-filter .3s;transition:opacity .3s,-webkit-filter .3s;-o-transition:filter .3s,opacity .3s;transition:filter .3s,opacity .3s;transition:filter .3s,opacity .3s,-webkit-filter .3s;-webkit-filter:blur(10px);filter:blur(10px)}.has-hover:hover .hover-blur{opacity:1;-webkit-filter:blur(0)!important;filter:blur(0)!important}.hover-zoom{-webkit-transform:scale(1.1) translateZ(0);transform:scale(1.1) translateZ(0)}.box-text-middle .box-text.hover-zoom{-webkit-transform:scale(1.1) translateZ(0) translateY(-50%);transform:scale(1.1) translateZ(0) translateY(-50%)}.hover-zoom-in{-webkit-transform:scale(.9) translateZ(0);transform:scale(.9) translateZ(0)}.box-text-middle .box-text.hover-zoom-in{-webkit-transform:scale(.9) translateZ(0) translateY(-50%);transform:scale(.9) translateZ(0) translateY(-50%)}.hover-bounce{opacity:1!important;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;-o-transition:transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;-webkit-transform:scale(1) translateZ(0) translateY(10px)!important;transform:scale(1) translateZ(0) translateY(10px)!important}.has-hover:hover .hover-bounce{-webkit-transform:scale(1) translateZ(0) translateY(0)!important;transform:scale(1) translateZ(0) translateY(0)!important}.box-text-middle .hover-bounce{-webkit-transform:scale(1) translateZ(0) translateY(-40%)!important;transform:scale(1) translateZ(0) translateY(-40%)!important}.box-text-middle:hover .box-text.hover-bounce{-webkit-transform:scale(1) translateZ(0) translateY(-50%)!important;transform:scale(1) translateZ(0) translateY(-50%)!important}.has-hover:hover img.show-on-hover{opacity:1}.has-hover:hover .hover-slide,.has-hover:hover .hover-slide-in,.has-hover:hover .hover-zoom,.has-hover:hover .hover-zoom-in,.has-hover:hover .show-on-hover{opacity:1;-webkit-transform:scale(1) translateZ(0) translateY(0)!important;transform:scale(1) translateZ(0) translateY(0)!important;pointer-events:inherit}.has-hover:hover .show-on-hover.center,.box-text-middle:hover .show-on-hover.box-text{-webkit-transform:scale(1) translateZ(0) translateY(-50%)!important;transform:scale(1) translateZ(0) translateY(-50%)!important}.slider .has-slide-effect{overflow:hidden;background-color:transparent!important}.slider .has-slide-effect .bg{opacity:0;-webkit-transition:opacity 1s;-o-transition:opacity 1s;transition:opacity 1s}.slide-zoom-in .bg,.slide-zoom-in-fast .bg{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.slide-zoom-out-fast .bg,.slide-zoom-out .bg{-webkit-transform:scale(1.2);-ms-transform:scale(1.2);transform:scale(1.2)}.has-slide-effect.is-selected .bg{opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);-webkit-transition:opacity 1s,-webkit-transform 20s ease-out;transition:opacity 1s,-webkit-transform 20s ease-out;-o-transition:opacity 1s,transform 20s ease-out;transition:opacity 1s,transform 20s ease-out;transition:opacity 1s,transform 20s ease-out,-webkit-transform 20s ease-out}.slide-fade-in.is-selected .bg{-webkit-transition:opacity 3.5s;-o-transition:opacity 3.5s;transition:opacity 3.5s}.slide-fade-in-fast.is-selected .bg{-webkit-transition:opacity 1.5s;-o-transition:opacity 1.5s;transition:opacity 1.5s}.slide-zoom-in-fast.is-selected .bg,.slide-zoom-in.is-selected .bg{-webkit-transform:scale(1.2);-ms-transform:scale(1.2);transform:scale(1.2)}.slide-zoom-out-fast.is-selected .bg{-webkit-transition:opacity 1s,-webkit-transform 5s ease-out;transition:opacity 1s,-webkit-transform 5s ease-out;-o-transition:opacity 1s,transform 5s ease-out;transition:opacity 1s,transform 5s ease-out;transition:opacity 1s,transform 5s ease-out,-webkit-transform 5s ease-out}.button.tooltip{opacity:1}.tooltipster-default{border-radius:5px;background:#111;color:#fff;-webkit-transition:opacity .2s;-o-transition:opacity .2s;transition:opacity .2s;opacity:0}.tooltipster-default a{color:#eee}.tooltipster-default:hover{color:#fff}.tooltipster-fade-show{opacity:1}.tooltipster-default .tooltipster-content{font-family:Arial,sans-serif;font-size:14px;line-height:16px;padding:8px 10px;overflow:hidden}.tooltipster-base{padding:0;font-size:0;line-height:0;position:absolute;left:0;top:0;z-index:9999999;pointer-events:none;width:auto;overflow:visible}.tooltipster-base .tooltipster-content{overflow:hidden}.tooltipster-arrow{display:block;text-align:center;width:100%;height:100%;position:absolute;top:0;left:0;z-index:-1}.tooltipster-arrow span,.tooltipster-arrow-border{display:block;width:0;height:0;position:absolute}.tooltipster-arrow-top span,.tooltipster-arrow-top-right span,.tooltipster-arrow-top-left span{border-left:8px solid transparent!important;border-right:8px solid transparent!important;border-top:8px solid;bottom:-7px}.tooltipster-arrow-top .tooltipster-arrow-border,.tooltipster-arrow-top-right .tooltipster-arrow-border,.tooltipster-arrow-top-left .tooltipster-arrow-border{border-left:9px solid transparent!important;border-right:9px solid transparent!important;border-top:9px solid;bottom:-7px}.tooltipster-arrow-bottom span,.tooltipster-arrow-bottom-right span,.tooltipster-arrow-bottom-left span{border-left:8px solid transparent!important;border-right:8px solid transparent!important;border-bottom:8px solid;top:-7px}.tooltipster-arrow-bottom .tooltipster-arrow-border,.tooltipster-arrow-bottom-right .tooltipster-arrow-border,.tooltipster-arrow-bottom-left .tooltipster-arrow-border{border-left:9px solid transparent!important;border-right:9px solid transparent!important;border-bottom:9px solid;top:-7px}.tooltipster-arrow-top span,.tooltipster-arrow-top .tooltipster-arrow-border,.tooltipster-arrow-bottom span,.tooltipster-arrow-bottom .tooltipster-arrow-border{left:0;right:0;margin:0 auto}.tooltipster-arrow-top-left span,.tooltipster-arrow-bottom-left span{left:6px}.tooltipster-arrow-top-left .tooltipster-arrow-border,.tooltipster-arrow-bottom-left .tooltipster-arrow-border{left:5px}.tooltipster-arrow-top-right span,.tooltipster-arrow-bottom-right span{right:6px}.tooltipster-arrow-top-right .tooltipster-arrow-border,.tooltipster-arrow-bottom-right .tooltipster-arrow-border{right:5px}.tooltipster-arrow-left span,.tooltipster-arrow-left .tooltipster-arrow-border{border-top:8px solid transparent!important;border-bottom:8px solid transparent!important;border-left:8px solid;top:50%;margin-top:-7px;right:-7px}.tooltipster-arrow-left .tooltipster-arrow-border{border-top:9px solid transparent!important;border-bottom:9px solid transparent!important;border-left:9px solid;margin-top:-8px}.tooltipster-arrow-right span,.tooltipster-arrow-right .tooltipster-arrow-border{border-top:8px solid transparent!important;border-bottom:8px solid transparent!important;border-right:8px solid;top:50%;margin-top:-7px;left:-7px}.tooltipster-arrow-right .tooltipster-arrow-border{border-top:9px solid transparent!important;border-bottom:9px solid transparent!important;border-right:9px solid;margin-top:-8px}.dark,.dark p,.dark td{color:#f1f1f1}.dark a.lead,.dark label,.dark .heading-font,.dark h1,.dark h2,.dark h3,.dark h4,.dark h5,.dark h6,.hover-dark:hover p,.hover-dark:hover h1,.hover-dark:hover h2,.hover-dark:hover h3,.hover-dark:hover h4,.hover-dark:hover h5,.hover-dark:hover h6,.hover-dark:hover a{color:#fff}.dark .stars a+a,.dark .product-section,.dark .product-footer .woocommerce-tabs{border-color:rgba(255,255,255,.2)}.nav-dark .is-outline,.dark .nav>li>a,.dark .nav>li.html,.dark .nav-vertical li li.menu-item-has-children>a,.dark .nav-vertical>li>ul li a,.dark .nav-vertical-fly-out>li>a,.nav-dropdown.dark>li>a,.nav-dropdown.dark .nav-column>li>a,.nav-dark .nav>li>a,.nav-dark .nav>li>button{color:rgba(255,255,255,.8)}.dark .nav>li>a:hover,.dark .nav>li.active>a,.dark .nav>li>a.active,.nav-dark .nav>li.current>a,.nav-dark .nav>li>a:hover,.nav-dark .nav>li.active>a,.nav-dropdown.dark>li>a:hover,.nav-dropdown.dark .nav-column>li>a:hover,.dark .nav-vertical-fly-out>li>a:hover,.nav-dark a.plain:hover,.nav-dark .nav>li>a.active{color:#fff}.dark.nav-dropdown.nav-dropdown-bold>li.nav-dropdown-col,.dark.nav-dropdown.nav-dropdown-simple>li.nav-dropdown-col,.nav-dropdown.dark .nav-column>li>a,.nav-dropdown.dark>li>a,.nav-dark .nav>li.header-divider,.nav-dark .header-divider:after,.nav-dark .nav-divided>li+li>a:after{border-color:rgba(255,255,255,.2)}.dark .nav-vertical li li.menu-item-has-children>a,.nav-dark .nav-vertical li li.menu-item-has-children>a,.nav-dark .nav>li.html,.nav-dark .header-button{color:#fff}.nav-box a:hover span.amount,.nav-dark span.amount{color:currentColor}html{overflow-x:hidden}@media(max-width:849px){body{overflow-x:hidden}}#wrapper,#main{background-color:#fff;position:relative}#main.dark{background-color:#333}.page-wrapper{padding-top:30px;padding-bottom:30px}.page-wrapper-full{padding-top:0}.is-sticky-column{will-change:min-height}.is-sticky-column__inner{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0);-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);will-change:position,transform}.ux-body-overlay{display:block;position:fixed;top:0;left:0;bottom:0;right:0;height:100%;width:100%;background-color:rgba(0,0,0,.3);z-index:29;opacity:0;visibility:hidden;-webkit-transition:visibility .3s,opacity .3s ease-in-out;-o-transition:visibility .3s,opacity .3s ease-in-out;transition:visibility .3s,opacity .3s ease-in-out}.ux-body-overlay--hover-active,.ux-body-overlay--click-active{opacity:1;visibility:visible}.header,.header-wrapper{width:100%;z-index:30;position:relative;background-size:cover;background-position:50% 0;-webkit-transition:background-color .3s,opacity .3s;-o-transition:background-color .3s,opacity .3s;transition:background-color .3s,opacity .3s}.header-bg-color{background-color:rgba(255,255,255,.9)}.header-top,.header-bottom{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:no-wrap;flex-wrap:no-wrap}.header.show-on-scroll,.header.has-transparent,.header.transparent{position:absolute}.header.show-on-scroll:not(.stuck),.header.transparent:not(.stuck){left:auto;right:auto}.header.show-on-scroll .header-wrapper{-webkit-transition:opacity .3s;-o-transition:opacity .3s;transition:opacity .3s;visibility:hidden;opacity:0}.header.show-on-scroll .header-wrapper.stuck{visibility:visible;opacity:1}.header.transparent .header-wrapper,.header.transparent .header-bg-image,.header.transparent .header-bg-color,.header.transparent .header-bottom{-webkit-box-shadow:none;box-shadow:none;background-color:transparent;background-image:none!important}.header-bg-image,.header-bg-color{background-position:50% 0;-webkit-transition:background .4s;-o-transition:background .4s;transition:background .4s}.header-top{background-color:#446084;z-index:11;position:relative;min-height:20px}.header-main{z-index:10;position:relative}.header-bottom{z-index:9;position:relative;min-height:35px}.top-divider{margin-bottom:-1px;border-top:1px solid currentColor;opacity:.1}.nav-dark .top-divider{display:none}.stuck{top:0;position:fixed;left:0;right:0;margin:0 auto}.sticky-jump .stuck{-webkit-animation:stuckMoveDown .6s;animation:stuckMoveDown .6s}.sticky-fade .stuck{-webkit-animation:stuckFadeIn .6s;animation:stuckFadeIn .6s}.sticky-shrink .stuck .header-main{-webkit-transition:height .8s;-o-transition:height .8s;transition:height .8s}.stuck .header-inner,.stuck .logo,.stuck .logo img{padding-top:0;margin-top:0}.header-wrapper:not(.stuck) .logo img{-webkit-transition:max-height .5s;-o-transition:max-height .5s;transition:max-height .5s}.header.show-on-scroll .hide-for-sticky,.stuck .hide-for-sticky{display:none}.header-wrapper.stuck,.header-shadow .header-wrapper,.layout-shadow #wrapper{-webkit-box-shadow:1px 1px 10px rgba(0,0,0,.15);box-shadow:1px 1px 10px rgba(0,0,0,.15)}.nav>li.header-divider{border-left:1px solid rgba(0,0,0,.1);height:30px;vertical-align:middle;position:relative;margin:0 7.5px}.nav-dark .nav>li.header-divider{border-color:rgba(255,255,255,.1)}.header-block{width:100%;min-height:15px}.header-full-width .container{max-width:100%!important}@media(max-width:849px){.header-main li.html.custom{display:none}}@media(max-width:549px){.nav-mobile>li>a:not(.button){line-height:5em}}.post{margin:0 0 30px}.masonery .post{margin-bottom:0}.entry-header-text{padding:1.5em 0 1.5em}.entry-header-text.text-center{padding-left:1.5em;padding-right:1.5em}.entry-header-text-top{padding-top:0}.entry-header-text-bottom{padding-bottom:0}.entry-content{padding-top:1.5em;padding-bottom:1.5em}.masonery .article-inner .box{margin-bottom:1.5em}.article-inner{-webkit-transition:opacity .3s,-webkit-box-shadow .5s,-webkit-transform .3s;transition:opacity .3s,-webkit-box-shadow .5s,-webkit-transform .3s;-o-transition:opacity .3s,box-shadow .5s,transform .3s;transition:opacity .3s,box-shadow .5s,transform .3s;transition:opacity .3s,box-shadow .5s,transform .3s,-webkit-box-shadow .5s,-webkit-transform .3s}.blog-featured-title+#main .post-sidebar{padding-top:30px}.from_the_blog_comments{padding-top:7px;opacity:.8}.article-inner.has-shadow{background-color:#fff}.article-inner.has-shadow .entry-content,.article-inner.has-shadow footer.entry-meta,.article-inner.has-shadow .entry-header-text,.article-inner.has-shadow .author-box{padding-left:1.5em;padding-right:1.5em}.article-inner.has-shadow .entry-header-text-top{padding-top:1.5em}.entry-author{padding:2em 0}.banner h2.entry-title{font-size:2em}.badge.post-date{top:7%}.entry-image img{width:100%}.entry-image-float{position:relative}@media(min-width:850px){.entry-image-float{max-width:50%;float:left;margin-right:2em}.entry-image-float+.entry-content{padding-top:0}}.post .entry-summary p:last-of-type{margin-bottom:0}footer.entry-meta{font-size:.8em;border-top:1px solid #ececec;border-bottom:2px solid #ececec;padding:.5em 0 .6em}li.recentcomments{padding:7px 0}li.recentcomments a{display:inline!important}.box-blog-post .is-divider{margin-top:.5em;margin-bottom:.5em;height:2px}.bypostauthor{display:block}.more-link{margin-top:1.5em}.updated:not(.published){display:none}@media(min-width:850px){.alignleft{display:inline;float:left;margin-right:1.5em}.alignright{display:inline;float:right;margin-left:1.5em}.aligncenter{clear:both;display:block;margin:0 auto}}.wp-caption{margin-bottom:2em;max-width:100%}.wp-caption .wp-caption-text{padding:.4em;font-size:.9em;background:rgba(0,0,0,.05);font-style:italic}.wp-caption-text{text-align:center}img.size-full.alignnone{margin-bottom:2em}.row .entry-content .gallery{padding:0}.gallery-caption{display:block}.page-content .wp-smiley,.entry-content .wp-smiley,.comment-content .wp-smiley{border:none;margin-bottom:0;margin-top:0;padding:0}.widget{margin-bottom:1.5em}.widget ul{margin:0}.widget li{list-style:none}.widgets-framed .widget,.widgets-boxed .widget{padding:15px 20px 15px;background-color:#fff;border:1px solid #ddd;-webkit-box-shadow:2px 2px 10px 0 rgba(0,0,0,.05);box-shadow:2px 2px 10px 0 rgba(0,0,0,.05)}.widgets-boxed .widget h3{background-color:#446084;margin-left:-21px;margin-top:-16px;padding:10px 20px 10px;width:calc(100% + 42px);color:#fff}.widgets-boxed h3+.is-divider{display:none}ul.menu>li,.widget>ul>li{list-style:none;margin-bottom:.3em;text-align:left;margin:0}ul.menu>li li,.widget>ul>li li{list-style:none}ul.menu>li>a,ul.menu>li>span:first-child,.widget>ul>li>a,.widget>ul>li>span:first-child{display:inline-block;padding:6px 0;-webkit-box-flex:1;-ms-flex:1;flex:1}ul.menu>li:before,.widget>ul>li:before{font-family:"fl-icons";display:inline-block;opacity:.6;margin-right:6px}ul.menu>li li>a,.widget>ul>li li>a{font-size:.9em;padding:3px 0;display:inline-block}ul.menu>li+li,.widget>ul>li+li{border-top:1px solid #ececec}.dark ul.menu>li+li,.dark .widget>ul>li+li{border-color:rgba(255,255,255,.08)}ul.menu>li ul,.widget>ul>li ul{border-left:1px solid #ddd;margin:0 0 10px 3px;padding-left:15px;width:100%;display:none}ul.menu>li ul li,.widget>ul>li ul li{border:0;margin:0}.dark ul.menu>li ul,.dark .widget>ul>li ul{border-color:rgba(255,255,255,.08)}.dark ul.menu>li>a:hover,.dark ul.menu>li.active>a,.dark ul.menu>li.current-cat>a,.dark .widget>ul>li>a:hover,.dark .widget>ul>li.active>a,.dark .widget>ul>li.current-cat>a{color:#fff}ul.menu>li.has-child,.widget>ul>li.has-child{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.widget>ul>li .count{opacity:.5;font-size:.7em;line-height:3em}.widget .current>ul,.widget .current-cat-parent>ul{display:block}.widget .current-cat>a{color:#000;font-weight:bolder}.recent-blog-posts{padding:10px 0 10px}.recent-blog-posts a{line-height:1.2;display:block;margin-bottom:6px}.widget .instagram-pics:after{content:"";display:table;clear:both}.widget .instagram-pics>li{border:0;list-style:none;float:left;width:33.333333%;margin:0;padding:0}.widget .instagram-pics>li a{padding:0;margin:0;display:block}.widget .instagram-pics>li img{display:block;width:100%}.widget_layered_nav li{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.widget_display-latest-tweets li{font-style:italic;font-size:.9em}.widget_display-latest-tweets a{display:inline!important}.widget_display-latest-tweets span{font-weight:bolder;display:block}.wpcf7{color:#333;position:relative}.wpcf7 .ajax-loader{display:none!important}.dark .wpcf7{color:#fff}.wpcf7 p{padding:0;margin:0}.wpcf7 br{display:none}.wpcf7 label{display:inline-block;width:100%}.wpcf7 span.wpcf7-list-item{margin-left:0;margin-right:1.2em}.wpcf7 .wpcf7-form-control-wrap{display:block}.wpcf7 .ajax-loader{position:absolute;right:0;background-color:#fff;border-radius:99px}.wpcf7 .wpcf7-not-valid-tip{margin-top:-10px;position:relative;padding:5px 8px;line-height:1.2em;border-radius:3px;opacity:.8;background-color:#f1f1f1;color:#b20000}.wpcf7 .wpcf7-not-valid-tip:after{bottom:100%;left:30px;border:solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none;border-color:rgba(136,183,213,0);border-bottom-color:#f1f1f1;border-width:10px;margin-left:-10px}.wpcf7 .wpcf7-validation-errors{display:none!important}.wpcf7 .flex-col .wpcf7-not-valid-tip{position:absolute;z-index:99;margin-top:5px;width:100%}.wpcf7 .wpcf7-response-output{margin:5px 0 0 0;border-radius:10px}.wpcf7-form .processing *{opacity:.8}.password-required form.post-password-form{max-width:620px;margin:0 auto;padding:30px 15px 30px}.portfolio-inner img{width:100%}.portfolio-bottom{margin-bottom:-1px}.row+.portfolio-related .portfolio-element-wrapper{margin-top:30px}.accordion-inner{padding:1em 2.3em;display:none}.accordion-title{font-size:110%;padding:.6em 2.3em;display:block;position:relative;border-top:1px solid #ddd;-webkit-transition:border 200ms ease-out,background-color .3s;-o-transition:border 200ms ease-out,background-color .3s;transition:border 200ms ease-out,background-color .3s}.dark .accordion-title{border-color:rgba(255,255,255,.2)}.accordion-title.active{border-color:#446084;color:#446084;font-weight:700;background-color:rgba(0,0,0,.03)}.dark .accordion-title.active{color:#fff}.accordion .toggle{width:2.3em;height:1.5em;margin-right:5px;top:.3em;border-radius:999px;position:absolute;-webkit-transform-origin:50% 47%;-ms-transform-origin:50% 47%;transform-origin:50% 47%;left:0}.accordion .active .toggle{opacity:1;color:currentColor}.breadcrumbs{color:#222;font-weight:700;letter-spacing:0;padding:0}.product-info .breadcrumbs{font-size:.85em;margin:0 0 .5em}.breadcrumbs .divider,.breadcrumbs .separator{position:relative;top:0;opacity:.35;margin:0 .3em;font-weight:300}.dark .breadcrumbs{color:#fff}.breadcrumbs a{color:rgba(102,102,102,.7);font-weight:400}.breadcrumbs a:first-of-type{margin-left:0}.breadcrumbs a.current,.breadcrumbs a:hover{color:#111}.dark .breadcrumbs a{color:#fff}.checkout-breadcrumbs{padding:15px 0}.checkout-breadcrumbs a{color:#ccc;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.checkout-breadcrumbs .divider{top:2px;margin:0 .5em}.breadcrumb-step{display:inline-block;background-color:#ccc;color:#fff;margin:0 .5em;font-weight:bolder;text-align:center;height:1.5em;width:1.5em;font-size:.7em;line-height:1.5em;border-radius:99px;position:relative;top:1px}.current .breadcrumb-step{background-color:#d26e4b}@media(min-width:850px){.comment-form{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;margin-left:-15px;margin-right:-15px}.comment-form>div{padding:0 15px;width:100%}.comment-form>p{padding:0 15px;width:100%}.comment-form p.comment-form-author,.comment-form p.comment-form-email,.comment-form p.comment-form-url{-webkit-box-flex:1;-ms-flex:1;flex:1}}.comment-inner:target{padding:15px;background-color:#f1f1f1;border-radius:10px}.commentlist li,.comment-list li{list-style:none;padding:1em 0 0 0}.commentlist li .meta,.comment-list li .meta{margin-bottom:0}.commentlist li .avatar,.comment-list li .avatar{border-radius:100%}.commentlist li .description,.comment-list li .description{font-style:italic}.commentlist li .comment-text,.comment-list li .comment-text{padding:0 1.5em}.commentlist>li:not(:first-child),.comment-list>li:not(:first-child){border-top:1px dashed #ddd}#comments .comment-respond{background-color:rgba(0,0,0,.05);margin-top:15px;padding:15px 25px 0}#comments .comment-respond .comment-reply-title{font-size:1.2em}#comments .comment-respond small{text-transform:uppercase;margin-left:10px;font-size:.6em}.footer-wrapper{width:100%;position:relative}.footer{padding:30px 0 0}.footer-1{background-color:#fff}.footer-2{background-color:#777}.footer-1,.footer-2{border-top:1px solid rgba(0,0,0,.05)}.footer-secondary{padding:7.5px 0}.absolute-footer,html{background-color:#5b5b5b}.footer ul{margin:0}.absolute-footer{color:rgba(0,0,0,.5);padding:10px 0 15px;font-size:.9em}.absolute-footer.dark{color:rgba(255,255,255,.5)}.absolute-footer.fixed{left:0;right:0;bottom:0;padding:7.5px 15px;z-index:101;color:#fff;background-color:transparent;text-shadow:1px 1px 1px rgba(0,0,0,.7)}.absolute-footer ul{padding-bottom:5px;opacity:.8;border-bottom:1px solid #ddd}.absolute-footer.dark ul{border-color:rgba(255,255,255,.08)}.absolute-footer.text-center ul{border:0;padding-top:5px}.reveal-footer{z-index:1;margin-bottom:100px;position:relative;-webkit-box-shadow:0 0 20px 0 rgba(0,0,0,.5);box-shadow:0 0 20px 0 rgba(0,0,0,.5)}.reveal-footer+.footer-wrapper{position:fixed;bottom:0;z-index:0}.back-to-top{margin:0;opacity:0;bottom:20px;right:20px;pointer-events:none;-webkit-transform:translateY(30%);-ms-transform:translateY(30%);transform:translateY(30%)}.back-to-top.left{left:20px;right:unset}.back-to-top.active{opacity:1;pointer-events:inherit;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}.instagram-image-container{display:block;padding-bottom:100%}.instagram-image-container a>img{position:absolute;left:0;width:100%;height:100%;-o-object-fit:cover;object-fit:cover;font-family:"object-fit: cover;"}.logo{line-height:1;margin:0}.logo-tagline{font-style:italic;font-size:.9em;line-height:1;margin:.85em 0}.logo a{text-decoration:none;display:block;color:#446084;font-size:32px;text-transform:uppercase;font-weight:bolder;margin:0}.logo img{display:block;width:auto}.header-logo-dark,.nav-dark .header-logo,.header-logo-sticky,.sticky .dark .header-logo-dark,.sticky .has-sticky-logo .header-logo{display:none!important}.nav-dark .header-logo-dark,.stuck .header-logo-sticky{display:block!important}.stuck .header-logo-sticky+img,.stuck .header-logo-sticky+img+img{display:none!important}.nav-dark .logo a{color:#fff}.logo-left .logo{margin-left:0;margin-right:30px}.logo-center .flex-left{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1;-webkit-box-flex:1;-ms-flex:1 1 0%;flex:1 1 0%}.logo-center .logo{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2;text-align:center;margin:0 30px}.logo-center .logo img{margin:0 auto}.logo-center .flex-right{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3;-webkit-box-flex:1;-ms-flex:1 1 0%;flex:1 1 0%}@media screen and (max-width:849px){.header-inner .nav{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.medium-logo-left .flex-left{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1;-webkit-box-flex:0;-ms-flex:0;flex:0}.medium-logo-left .logo{-webkit-box-flex:1;-ms-flex:1;flex:1}.medium-logo-center .flex-left{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1;-webkit-box-flex:1;-ms-flex:1 1 0%;flex:1 1 0%}.medium-logo-center .logo{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2;text-align:center;margin:0 15px}.medium-logo-center .logo img{margin:0 auto}.medium-logo-center .flex-right{-webkit-box-flex:1;-ms-flex:1 1 0%;flex:1 1 0%;-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}}.map-height{height:400px}.map-inner{background-color:#fff;background-color:rgba(255,255,255,.9);padding:20px}.message-box{padding-left:30px;padding-right:30px;background-color:#f1f1f1}.message-box.dark{background-color:#333}.message-box .col,.message-box .col-inner,.message-box .row{padding-top:0!important;padding-bottom:0!important}.next-prev-thumbs li{position:relative;display:inline-block;margin:0 1px 0!important}.next-prev-thumbs li .button{margin-bottom:0}.next-prev-thumbs .nav-dropdown{padding:2px;width:90px;min-width:90px}.page-title{position:relative}.page-title .widget{margin:0 .3em;vertical-align:middle}.page-title-bg{overflow:hidden}.title-bg{-webkit-transition:opacity .6s;-o-transition:opacity .6s;transition:opacity .6s}.title-overlay{background-color:rgba(0,0,0,.25)}.page-title-inner{position:relative;padding-top:20px;min-height:60px}.page-title-inner ul,.page-title-inner select,.page-title-inner form,.page-title-inner button,.page-title-inner p{margin-top:0;margin-bottom:0}.normal-title{background-color:#f7f7f7;border-top:1px solid #ececec;border-bottom:1px solid #ececec}.normal-title .page-title-inner{padding-top:15px;padding-bottom:15px}.featured-title{background-color:#446084;text-shadow:1px 1px 1px rgba(0,0,0,.2)}.featured-title .page-title-inner{padding-bottom:20px}.featured-title .page-title-bg{-webkit-box-shadow:inset 0 0 30px 0 rgba(0,0,0,.1);box-shadow:inset 0 0 30px 0 rgba(0,0,0,.1)}.featured-title .overlay{background-color:rgba(0,0,0,.4)}.payment-icons .payment-icon{display:inline-block;opacity:.6;-webkit-transition:opacity .3s;-o-transition:opacity .3s;transition:opacity .3s;border-radius:5px;background-color:rgba(0,0,0,.1);padding-bottom:0;padding:3px 5px 5px;margin:3px 3px 0}.payment-icons .payment-icon svg{vertical-align:middle;height:20px;width:auto!important}.payment-icons .payment-icon:hover{opacity:1}.dark .payment-icons .payment-icon{background-color:rgba(255,255,255,.1)}.dark .payment-icons .payment-icon svg{fill:#fff}.pricing-table{border:1px solid #ececec;background-color:#fff;padding-bottom:15px;overflow:hidden}.dark .pricing-table{border-color:rgba(255,255,255,.2)}.pricing-table .title{padding:.5em 15%;border-bottom:1px solid #ececec}.dark .pricing-table .title{border-color:rgba(255,255,255,.2)}.pricing-table .price{color:#000;padding:.6em 15% 0;font-weight:300}.pricing-table .description{padding:15px 15px 0}.pricing-table .items{padding:10px 15%}.pricing-table .is-disabled{text-decoration:line-through;opacity:.6}.pricing-table .items .button:last-child{margin:30px 0 0}.pricing-table .bullet-more-info{font-size:14px;margin-left:10px}.pricing-table .items>div{padding:7.5px 0;border-bottom:1px solid #ececec}.dark .pricing-table .items>div{border-color:rgba(255,255,255,.08)}.dark .pricing-table{background-color:#333}.pricing-table .title{background-color:rgba(0,0,0,.02)}.featured-table{margin-top:-15px;border-color:#446084;border-width:2px}.featured-table .title{color:#fff;border-color:#446084;background-color:#446084}.scroll-to{width:100%}.scroll-to-bullets{right:0;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);z-index:999;max-height:100vh;overflow:hidden;position:fixed}.scroll-to-bullets a{display:block;border:3px solid transparent;background-color:#446084;margin:10px 15px;width:15px;height:15px;border-radius:30px;-webkit-transition:all .3s;-o-transition:all .3s;transition:all .3s;-webkit-box-shadow:1px 1px 1px rgba(0,0,0,.3);box-shadow:1px 1px 1px rgba(0,0,0,.3)}.scroll-to-bullets a:hover{opacity:1;background-color:#fff}.scroll-to-bullets a.active{opacity:1;border-color:#446084;background-color:#fff}.sidebar-menu .search-form{display:block!important}.searchform-wrapper form{margin-bottom:0}.mobile-nav>.search-form,.sidebar-menu .search-form{padding:5px 0;width:100%}.form-flat .search-form-categories{padding-right:5px}.widget_search .submit-button,.searchform-wrapper:not(.form-flat) .submit-button{border-top-left-radius:0!important;border-bottom-left-radius:0!important}.searchform{position:relative}.searchform .button.icon{margin:0}.searchform .button.icon i{font-size:1.2em}.searchform-wrapper{width:100%}.searchform-wrapper.form-flat .submit-button.loading .icon-search{opacity:0}.searchform-wrapper.form-flat .submit-button.loading:after{border-color:currentColor}.searchform-wrapper.form-flat .flex-col:last-of-type{margin-left:-2.9em}.searchform-wrapper .autocomplete-suggestions{overflow-y:scroll;-webkit-overflow-scrolling:touch;max-height:50vh;overflow-y:auto}.header-block .autocomplete-suggestions,.header .search-form .autocomplete-suggestions{max-height:80vh}.col .live-search-results,.header-block .live-search-results,.header .search-form .live-search-results{text-align:left;color:#111;top:105%;-webkit-box-shadow:0 0 10px 0 rgba(0,0,0,.1);box-shadow:0 0 10px 0 rgba(0,0,0,.1);left:0;right:0;background-color:rgba(255,255,255,.95);position:absolute}.header li .html .live-search-results{top:0;position:relative;-webkit-box-shadow:none;box-shadow:none;background-color:transparent}.autocomplete-suggestion{padding:10px .75em;border-bottom:1px solid rgba(0,0,0,.05);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;cursor:default}.autocomplete-suggestion .search-name{-webkit-box-flex:1;-ms-flex:1;flex:1}.autocomplete-suggestion img{width:40px;border-radius:99px;height:40px;display:inline-block;margin-right:10px}.autocomplete-suggestion img+.search-name{margin-top:-.15em;padding-left:.5em}.autocomplete-suggestion .search-price{padding-top:3px;margin-left:5px;font-size:.8em}.autocomplete-suggestion:last-child{border-bottom:none}.autocomplete-selected{background-color:rgba(0,0,0,.05)}#search-lightbox{font-size:1.5em;margin:0 auto;max-width:600px}.section-title-container{margin-bottom:1.5em}.row-collapse+.section-title-container,.slider-wrapper+.section-title-container,.banner+.section-title-container{margin-top:30px}.section-title{position:relative;-js-display:flex;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;width:100%}.section-title i{opacity:.6;margin-right:.5em}.section-title i.icon-angle-right{margin-right:0;margin-left:10px}.section-title span{text-transform:uppercase}.section-title small{text-transform:none;font-weight:400;padding-left:15px;font-size:1em;opacity:.7}.section-title b{display:block;-webkit-box-flex:1;-ms-flex:1;flex:1;height:2px;opacity:.1;background-color:currentColor}.section-title a{display:block;padding-left:15px;font-size:.8em;margin-left:auto}.section-title-normal{border-bottom:2px solid #ececec}.section-title-normal span{margin-right:15px;padding-bottom:7.5px;border-bottom:2px solid rgba(0,0,0,.1);margin-bottom:-2px}.dark .section-title-normal span,.dark .section-title-normal{border-color:rgba(255,255,255,.2)}.section-title-normal b{display:none}.section-title-center span{margin:0 15px}.section-title-center span,.section-title-bold-center span{text-align:center}.section-title-center small,.section-title-bold-center small{padding:0 15px;display:block}.section-title-bold-center span,.section-title-bold span{border:2px solid rgba(0,0,0,.1);padding:.3em .8em}.section-title-bold b:first-of-type{display:none}.flatsome-cookies{position:fixed;top:auto;right:0;bottom:0;left:0;z-index:999;padding:15px 30px;background-color:#fff;-webkit-box-shadow:0 0 9px rgba(0,0,0,.14);box-shadow:0 0 9px rgba(0,0,0,.14);-webkit-transition:-webkit-transform .35s ease;transition:-webkit-transform .35s ease;-o-transition:transform .35s ease;transition:transform .35s ease;transition:transform .35s ease,-webkit-transform .35s ease;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}.flatsome-cookies__inner{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.flatsome-cookies__text{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;padding-right:30px}.flatsome-cookies__buttons{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.flatsome-cookies__buttons>a{margin-right:20px;margin-bottom:0}.flatsome-cookies__buttons>a:last-child{margin-right:0}.flatsome-cookies--inactive{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}.flatsome-cookies--active{-webkit-transform:none;-ms-transform:none;transform:none}@media(max-width:849px){.flatsome-cookies__inner{-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;text-align:center;font-size:.9em}.flatsome-cookies__buttons{margin-top:15px}.flatsome-cookies__text{padding-right:0}}.icon-lock:before{content:""}.icon-user-o:before{content:""}.icon-line:before,.icon-chat:before{content:""}.icon-user:before{content:""}.icon-shopping-cart:before{content:""}.icon-tumblr:before{content:""}.icon-gift:before{content:""}.icon-phone:before{content:""}.icon-play:before{content:""}.icon-menu:before{content:""}.icon-equalizer:before{content:""}.icon-shopping-basket:before{content:""}.icon-shopping-bag:before{content:""}.icon-google-plus:before{content:""}.icon-heart-o:before{content:""}.icon-heart:before{content:""}.icon-500px:before{content:""}.icon-vk:before{content:""}.icon-angle-left:before{content:""}.icon-angle-right:before{content:""}.icon-angle-up:before{content:""}.icon-angle-down:before{content:""}.icon-twitter:before{content:""}.icon-envelop:before{content:""}.icon-tag:before{content:""}.icon-star:before{content:""}.icon-star-o:before{content:""}.icon-facebook:before{content:""}.icon-feed:before{content:""}.icon-checkmark:before{content:""}.icon-plus:before{content:""}.icon-instagram:before{content:""}.icon-tiktok:before{content:""}.icon-pinterest:before{content:""}.icon-search:before{content:""}.icon-skype:before{content:""}.icon-dribbble:before{content:""}.icon-certificate:before{content:""}.icon-expand:before{content:""}.icon-linkedin:before{content:""}.icon-map-pin-fill:before{content:""}.icon-pen-alt-fill:before{content:""}.icon-youtube:before{content:""}.icon-flickr:before{content:""}.icon-clock:before{content:""}.icon-snapchat:before{content:""}.icon-whatsapp:before{content:""}.icon-telegram:before{content:""}.icon-twitch:before{content:""}.icon-discord:before{content:""}.ux-shape-divider{--divider-top-width:100%;--divider-width:100%;position:absolute;left:0;width:100%;overflow:hidden;line-height:0}.ux-shape-divider svg{display:block;position:relative;left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);height:150px}.ux-shape-divider--top{top:-1px;-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.ux-shape-divider--top svg{width:calc(var(--divider-top-width) + 2px)}.ux-shape-divider--bottom{bottom:-1px}.ux-shape-divider--bottom svg{width:calc(var(--divider-width) + 2px)}.ux-shape-divider--flip svg{-webkit-transform:translateX(-50%) rotateY(180deg);transform:translateX(-50%) rotateY(180deg)}.ux-shape-divider--to-front{z-index:2}.ux-shape-divider .ux-shape-fill{fill:#fff}.text-center .social-icons{margin-left:auto;margin-right:auto}.social-icons{display:inline-block;vertical-align:middle;font-size:.85em;color:#999}.html .social-icons{font-size:1em}.html .social-icons .button{margin-bottom:0}.social-icons span{font-weight:700;padding-right:10px}.social-icons i{min-width:1em}.nav-dark .social-icons,.dark .social-icons{color:#fff}.nav-dark .social-icons .button.is-outline,.dark .social-icons .button.is-outline{border-color:rgba(255,255,255,.5)}.social-button,.social-icons .button.icon:not(.is-outline),.social-icons .button.icon:hover{background-color:currentColor!important;border-color:currentColor!important}.social-button>i,.social-button>span,.social-icons .button.icon:not(.is-outline)>i,.social-icons .button.icon:not(.is-outline)>span,.social-icons .button.icon:hover>i,.social-icons .button.icon:hover>span{color:#fff!important}.button.facebook:not(.is-outline),.button.facebook:hover{color:#3a589d!important}.button.instagram:not(.is-outline),.button.instagram:hover{color:#3b6994!important}.button.whatsapp:not(.is-outline),.button.whatsapp:hover{color:#51cb5a!important}.button.twitter:not(.is-outline),.button.twitter:hover{color:#2478ba!important}.button.tiktok:not(.is-outline),.button.tiktok:hover,.button.email:not(.is-outline),.button.email:hover{color:#111!important}.button.phone:not(.is-outline),.button.phone:hover{color:#51cb5a!important}.button.pinterest:not(.is-outline),.button.pinterest:hover{color:#cb2320!important}.button.rss:not(.is-outline),.button.rss:hover{color:#fc7600!important}.button.tumblr:not(.is-outline),.button.tumblr:hover{color:#36455d!important}.button.vk:not(.is-outline),.button.vk:hover{color:#527498!important}.button.google-plus:not(.is-outline),.button.google-plus:hover{color:#dd4e31!important}.button.linkedin:not(.is-outline),.button.linkedin:hover{color:#0072b7!important}.button.youtube:not(.is-outline),.button.youtube:hover{color:#c33223!important}.button.flickr:not(.is-outline),.button.flickr:hover{color:#e5086f!important}.button.snapchat:not(.is-outline),.button.snapchat:hover{color:#fff600!important}.button.snapchat:not(.is-outline) i,.button.snapchat:hover i{text-shadow:0 0 6px rgba(0,0,0,.4)}.button.px500:not(.is-outline),.button.px500:hover{color:#0099e5!important}.button.telegram:not(.is-outline),.button.telegram:hover{color:#54a9ea!important}.button.twitch:not(.is-outline),.button.twitch:hover{color:#9146fe!important}.button.discord:not(.is-outline),.button.discord:hover{color:#7189d9!important}.woocommerce-product-rating{visibility:visible;position:relative}.star-rating{text-align:left;font-size:16px;display:block;overflow:hidden;position:relative;height:1em;line-height:1em;letter-spacing:0;margin:.5em 0;width:5.06em;font-family:"fl-icons"!important;font-weight:normal!important;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.star-rating:before,.woocommerce-page .star-rating:before{content:"";color:#d26e4b;float:left;top:0;left:0;position:absolute}.star-rating span{overflow:hidden;float:left;width:10px;height:10px;top:0;left:0;font-family:"fl-icons"!important;font-weight:normal!important;position:absolute;padding-top:1.5em}.star-rating span:before{content:"";color:#d26e4b;top:0;position:absolute;left:0}.star-rating--inline{display:inline-block;vertical-align:middle;height:18px}.woocommerce-review-link{font-size:90%}li.wc-layered-nav-rating{font-size:.8em}li.wc-layered-nav-rating .star-rating{margin-bottom:0;display:inline-block}.stars a{font-size:16px;margin-left:-10px;display:inline-block;color:transparent!important;overflow:hidden;font-family:"fl-icons"}.stars a+a{margin-left:.3em;border-left:1px solid #ececec}.stars a:hover:after,.stars a.active:after{color:#d26e4b}.stars a:after{color:#ddd;content:""}.stars a.star-2:after{content:""}.stars a.star-3:after{content:""}.stars a.star-4:after{content:""}.stars a.star-5:after{content:""}@keyframes rain{0%{background-position:0 0}100%{background-position:500px 1000px}}@-webkit-keyframes rain{0%{background-position:0 0}100%{background-position:500px 1000px}}.effect-rain{background-image:url(../../../themes/flatsome/assets/img/effects/rain.png);-webkit-animation:rain 2s linear infinite;animation:rain 2s linear infinite}@keyframes sparkle{0%{background-position:0 0,0 0,0 0}100%{background-position:-500px -1000px,-400px -400px,300px 300px}}@-webkit-keyframes sparkle{0%{background-position:0 0,0 0,0 0}100%{background-position:-500px -1000px,-200px -400px,300px 300px}}.effect-sparkle{background-image:url(../../../themes/flatsome/assets/img/effects/sparkle1.png),url(../../../themes/flatsome/assets/img/effects/sparkle2.png);-webkit-animation:sparkle 60s linear infinite;animation:sparkle 60s linear infinite}@keyframes glass{0%{background-position:0 0,0 0,0 0}100%{background-position:500px 1000px,400px 400px}}@-webkit-keyframes glass{0%{background-position:0 0,0 0,0 0}100%{background-position:500px 1000px,-400px -400px}}.effect-sliding-glass{background-image:url(../../../themes/flatsome/assets/img/effects/glass1.png),url(../../../themes/flatsome/assets/img/effects/glass2.png);-webkit-animation:glass 30s linear infinite;animation:glass 30s linear infinite}@keyframes confetti{0%{background-position:0 0,0 0,0 0}100%{background-position:500px 1000px,400px 400px,300px 300px}}@-webkit-keyframes confetti{0%{background-position:0 0,0 0,0 0}100%{background-position:500px 1000px,400px 400px,300px 300px}}.effect-confetti{background-image:url(../../../themes/flatsome/assets/img/effects/confetti1.png),url(../../../themes/flatsome/assets/img/effects/confetti2.png);-webkit-animation:confetti 10s linear infinite;animation:confetti 10s linear infinite}@keyframes snow{0%{background-position:0 0,0 0,0 0}100%{background-position:500px 1000px,400px 400px,300px 300px}}@-webkit-keyframes snow{0%{background-position:0 0,0 0,0 0}100%{background-position:500px 1000px,400px 400px,300px 300px}}.effect-snow{background-image:url(../../../themes/flatsome/assets/img/effects/snow1.png),url(../../../themes/flatsome/assets/img/effects/snow2.png);-webkit-animation:snow 20s linear infinite;animation:snow 20s linear infinite} \ No newline at end of file diff --git a/wp-content/cache/min/1/19cebb0184f1dcc00197285669963163.css.gz b/wp-content/cache/min/1/19cebb0184f1dcc00197285669963163.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..5ef2822e6ba3d37b3933609254c170f68e445f84 GIT binary patch literal 48345 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

-@ocK#TV$QYja^sL%+= z?I&d;SMDm;5ah%r>Yk0kF-^t4=~E%XWM3m9x&r;a%N2cWt_y2BY`rKBUT(Rlk)uG8 z3w&@&oEvT(sQWfw9{nWHo>=4lkqG4fFLeoNJ^H!Wy#++Q^J{UtN}?Cq!mV{57`(&F z+UWE=5 zuD9PUr(9O0!N^)czd7BP`TzXkwOJc#Gr$y_GA&q~t@*la4z*j`tCsAJSG)zwgK)3L z_AJoru|5m)3hd7UyFLr#uy4W!A>eDWLJ0RN><|LH4NHVAT*MZAzGx07FR#xRQJW!Q z>E&F$XluT*`1exJ7o9TA`691)3%&^9UX3qWpx5Jz7UmWBq6Kz+zQ|$UgfBwC*W`;3 z?p63A1b7?12wS*}FYd+b0xyIM2rBE`CSxBoI^bA#+CO*pbE9k!et2BBso0ra&swM` zn8-G#+lNkF?#q`G1FvuxjYh0Jc-m)eqr<-wwT~6HM}A%wC;&XqpyCdabw~Y}<2xL} z&)VdU;g*P4V+?lEHNTeY?P1Sx_NED^0|PM=4#SgoiHxZOweZCI9{)L_?={bVphzg* zmg}nAC;YCOJJR6phtr|sgBUy9XjI`ubTx73|LG)jL>!x=V;yUA67wq(Maep%zs&u# zZPwVz@PrP)LD@eDFHD}FYB7S`BMEKdOgRv_3$!WULI+xQV@tb^tWD$(WuY8@%pS7~ z*4g2#laHcY#39^K)NzPv$zx{h#_mAA&VdFYAgfThGfi z;opHW%p-##)M>67#8^#1`rnX6wVe*G;K%Ygth(HDm=2`+Ag(r%Co}GBMwd!fOCwPy z-2vNPDHBmxoJJB9&^K`?i11=10@_xAn00RGRRoVvzpD)xmhzSFX6qGq7xETEz7HzD zrqDM)cPzF^r`!^F=*byj44HcPQb=0%vrQ=A=PuCtJBtVOuItG!tdmDzfXv7@J8f`M zIa{)$6-(`~vhae!8Z$E}$${r5tkg#TZHh}5M0}SM|8hTcW?~rcbR(8JUnTQ>hyOjN zjftVvFy9?yjbtn9SkVOHHeUhvKFz%GsX2UDrMr@C(iBvX{T|G6VBqc8b)ULyI`51~ z%V@;rRYxUOhZhFnn@(iICU+)WN>@ElRS#}ek$|RjPr3jk@Zi!JiHpo|@PVZfP865} z1;!+LOOB^c535zVmtK=u{-+K~ma*JW5W=J2*^n5GUl;7LKii5PhAJ1*{L!}~aP)^g=P{q^7f z0A!IM*0#of|8M_Yum=6K5)s?*lx+D6QACj?SA>f2JK&MOYTvex6(uY;Kpt!?rxtIW0>Tq z*oZ8~uam0J;uv{4M2UCVh=-@)qiJW8rQE_e^%19YIV- znc@_)Ltsb4p?V&nFN095_Nr6*7h?VYWw~L~u@FVSe*L;)lM@m*mkuLErkAI4+>D;7 zByx8C%+gtyN$6V2!>#_McsODauq0}rJ2nW*cr`G~bj8c!5@+y=h3>tjjNg?>xc_;m z|D5ZH026#T6UM2*M-D&w@M8c!hVWwqJ_>0?Ckc6XbQP6=C3Sn|0AltP!KMu?#KG!| z>(K+1WC3AwMP-Y9jMz6#74AModUEfWG_eM>FH2j%Y1Y>c8>ncb=%WVFhLHdzTMHyX?vo&Qw_w}Wz=dj;A%Z&cp^hNVBa7(J{M;VhhpI7Z0u1Hq zbS4|$fd4cv_C*TPfB9N{K;@VW02rZP-YMRT7Jm8Qa?EJ)m0NreE&kOjKY~1*oy1)y zyplV}4CxioJ#Q*!tiP6uiFpu4xD;JzjLJyY;9jA7R7fx-&uK8mh%VE$rR3gkQ3tW_ zV7`}~2%~sd#Ncep+`DBoI<`o!=a%_O6zU6i2E}^zEj6L)C=ZlQ5kJb1l+&NM0dY7A zqWj3}-nz`S;r+A&N0ui;3RyYc_()dryf|y`iV8XVXlkHuIwK79lVSEIVK^k~4Qp^) z7JK@A0H?f=!$j0GCYc-?d2{kyD1Zzy6*tmV0cWk@zFdNm-*eLcvfVAYcHx6QG0FF$ z-l7FHDkcuE=djK^AC-e?tPT%1x;N#gd6prW&Tr!|6o${ay zeht|hr-tf)Ut0FXg|E@~%d0cLzIfmhyPT)OC1uA+RK0SOxfbN;Jx3M~Hlb4(Qb8OB z1>!{TGb4qbm#h)=G6Yi7Ff$p%n^FZ}G=Il+>J z_XYiP#tyW*#qulq_E|T&e14RL7@3}fM*+D;xC5|Xa6FC=9Vb9X*gp%;O@X+2^qhP^ zN3WFA(#2|1>|MaVAFQGDg9UIFp35N4I3a{{(8U%7TJG5pwiA>j1l+yYr)X_}ha#SM z5#>d8icSaH0}s2&rei0ZEyIdiLer35jOx$4d=3;e2NC;}m@0X*x!@0&p`ehBAW7xP zG&EdY?gCpv?R3kpY_Fcvu6427F5l;F>iYe0W88uq$HS{PMB+ErwjqU!8FE!#nDe0P z1~h3%4P*CZ4^NXS%^6sgisyw&oTi!kS_iedviSr~JDW>%@MUkag=P`=Cw(qf3s+4o z!}ab_p5BE-gD^v>FlE*XWy$-bq3R>gfyPQKE&5z(J3Ts^nk3g2#}-kEswZTqrtKbQ z+P-W#>76=we(XU3kA6%rmS~eEp)6O`q+P&^TQ0AN?2o)~7B`1U?Ddx*pe`1pCigKW zE;Wp1*mZV`9`g|{bDhV2k?e4ml0L+ObByRt-6*?L*>Y`zT#gy3_@aXG`Zxm zg3i&FOh~E;8Vr5XxB-M82?jyBk@>6_h^i@w_d14W&$?;jlC$1%QjNQ$h?6ASp6xT` zMF!Bp^DP72hQ=Ir*8A&>yXyqrI%xrfmNSI5UkFXg-z13FC`5ELW$f?I&yRr}$vp+4 zsWW{_#WZzwI5Td(MO#oxtj!(N_ZHGYk-s1>5l(FzISt{{W6(QWvJ6Fa{D1XEXaLd zc($A4>e|LiWU+IiRKPf892LxT4>b#fmCAH_thHpB*4c%1r>1=+2Kq&$t#9De@aP!@ zySJfhQG(3?-?A9Qg7`J<87G{1kALU(JLlhh``zc?1N%MT-$VO7O zsUw}*hpA&BZHWL-w3`8z%Uwngfp2(dccFKZFScj*+#AQImIa-JPM|aW>^2$i~g}<C|~(#9eNyW%WoWbAJ((A;_uAILW};p$527Ac{x$FKok8bTe;Vt;ww|9Nr8>}5YG9(=ISdKUw!q}7hePQH4tB;Ok*QH$NE#2o#;;q z=w5&JRGa#ne}2p4xtIU!$={;bw_JV*5a0UpLxBG_kRPJyZwwO~E{J`P&9^K(G2ar> zz4`8`Hcf)~9tzk)ktKf%8h*>=hoJAbzWflh|2B{xVqCtlVbbV`?~(bIg~#SwLYkOw z+04E9mZP4%)}i;?P*Qc6b^EtI(6hEg*Iq4_1-VY0TPbJpS|=|lT)+GiEn%L3RxwXN z3z;XNwJboQ<;+v?ismVJQS%hMu6YVt+AIOgU;YKBF#m?Ln192G%)jAW7SQl?=1Ikv zKqke}w|q(v7O*NoSir3WVFAMugatfHP!Y2&K}F2D1Qjv!5>&+eOX7l9n3!Iz_{QzL zjEgy>8A}tkQjdyXut_0J7L8Fe)>DrSUASq%8pfop=pkHOtrss28gb z6z4Qp#j@Pmnbij$9D zmW&VYF+JCSG}T5eb+-|KxYW>C0x$;BIzbiru_=jAl~tMPmWh z##K@lRhcf=#?guFK+>a~pY)u-^A|$GZw+7tT(Cp5^Y|TVw&)w4JHJdfhxM%dm+OCE zV&8`jo%e6Hp`3rQ`LYh>{m-}<9GIIFG-e#R{?|#_HI=${-qys5j6=E=6cumC)(S9K2_jiSK22G-~x4~443Gn^- z+qBQ)aPS)tQa_1HxVWqiyMGy;hBEhv7wQ8~e#?3K-J_S{z~=!)<2?l>>iRjZ>*hGn zOW8(rZNnlpc+{a0!XnI>WaITLBV58jsKGt!NbEwmoBROojre0DD%MWg@SIi6)S*FP zAmg9(x`AjZB7;f{pg?UUawwW`_gEPKrFKZux-m`ZL0znt+kd(KV-N+EO|-u)ch$BO z&lBGc_&D7qyUkuV*JGoW-e>dj=`MkYa0cOy_@$6ylAtoIA{{iUJdz@Rh*RVbZ7I?d zx6?#7Sm$Iy%M0Kz(qMwHMcZFn1!h^pMtm(S-Vzn1Uzpjd9x>J|Z? z4T)N?;gx_(k)eJYgkg&Jh?1%L6}G;tEmK#(nYi4HAT(=5-jV7n)r~XcgD5qigpgr@ z!DUEu#`RVeO-c8C#wL;(%#oI>DlVCG9L1l?<)e>?nvq#>JgEZFTucL5;FlkIS@r`( z2)H7MW_dc5D4hcEHn=N*_)M+$LE6^yD9VHWK?7p>8HGZ4M3wMTh7If9WqvFVSm?^v z`Uxa-$9$+(eC?SB$04kd2 z{@b=p`2n+0%u!cC-%u@n9f9rl8uF*|+hSL|lvPsg53^7I$iy>#I6h`?V#i~?PiJ8( zL6LXjf5(B)M{AybI{p5)i&=zr|7Kf@Uj)5d(d{>YRe)yyg;2+E?5xBmTC&cWydE{F zBVBUBXKvQ!9=(kdZ_em=F8-@r;!T!gexI4Qx9SP6d8ex%?&_Do{2{b>mq)+VGyIr+eOP<0-R6Tq|`H}iQ4L5ZANq%lhH9*lS| z25v7#ycaqf^`h@k;yf7MJczPupIs8Y?^En3IuH0O`#f{ezUOFI@N}#+EAg_a~JUF?o@Q2H~VV4Av_Im@0j}WEcd|a z`V`^sf^A44_)wNd87OzoQ(G7l2s({+;!UcMpD0@$io|b1&MH$ULV8m+TKFRopvYy`QU(RCWo|enq(+(} zVx4^uSD_b8ktgB8q81%qj9LX#p&VP6RVCY@lcggv)|qs3*f(fR7j^o60@)3rU~f(BWV+nz1m6l(`aPr%@|9Ss2RVkD8dX^3ZBDr`$RbftewVIa_?t5Q3#1QR!e zl1`Sn1BC(@VbElG1P|9@&6z4d7{!e1B;LudmRx|qCaZ9=_c<^eG!F>)U#XgbZpmgjK$yY#&_0y`H6F|3{)wie3 z`fZko*w{8Qc1H$TmjCd-#F3BhrP$;Zy=+ zNkgIuQ|z57){30BXb6*Ddh~8KA4ZqVhj?XTJ~TiLchUxRPgQFTCPiIcI42rm1O{wG z4%o;Yu+hac<4O$?gU|up?;sWeyiljgi#a`l9gl(?Vg^ER98YESw=H(;Oj>;XAg`13 zXDZFb?!Z3clt=I645Rg|3JpLLGU9{h60Q*@d@F~$nz;0`0VR?jh-*maX3+^I52E+D zswj)>%60-cw+UhKJo0qpg_H+K{PU`m4ie1YgerG(rdR{Rq(%+-1#QgG^o23)RhgKC<{eE34G|y; z>aJ>4M9m9N=a^&0+WZTqZ>CAg9oe70jfU1a8y#Swtp|AoOC$JMn)$PH_6)IBC zvRby8Kn~^j+H73su{?^>$_ZE#VjuIrZ~zjqxToibZ`BtD`$>43DG7WIdfB{URa2WF)kMi9(K;X9%&l6BLonu++y;Q`wR$Xkg2LsJcS;JEWK7#pbbvi&)Q+TNn78<#bx72GLh!6-*494{bsY;FSk%4 zP)QZv_U7fHIIK)KG8-rj>Og<&^?J~jGIsiPU(=(UKr+yu5V$3Uj)+y3C0RmQJHiK4 zu#{Lrd`GS!LV^<2^^i2NTofl@12 zK+`CiVoj`0-M_R)w3#p|g^8YCx_+vNQBpyQ9>b(1n&9_G!De{CIT=0J5K>cp!-Gys#){r^uK1RL@48!Bk1?g ziHd3+XE}`~r)XgmBt^~8oj>L}ELo`CMr+I#Qn4W-9XWsY*3{JTKIo>SqtR?#AkN;7 z6~s$pj%0!~Lo*<@NYv~Lt(WF~ICHf&=!0F^5cdg1Hk+#9$pGu>*CDJ%lKQX5g`&8n9N*q#&6h;L)@5ruK`(jrm#k)e&V!PYS z53@aw3e1ICH+iwyh?~DJo6T(V@>1?*Wx8jAFAiHxne<3cLJ}G~kFygeKcQ&&Ebskl z`M$v4-RJ$w3M8fcc6!MU`^jp_{@;Bm*N1euFJDrw_?kU0S93Ov5EN5|gFlFhWOlk( zed9%Q(IA(&SacS2%ie9ODE(QvPm}_YNhp z`klIp72{K@lCIi#hJoNgqcQ8=X(z)TBhl)ja-(NS?zesC)uCsc6{s{+&@o z<@dlCs*x45E##Wz=vWPes<~mM)-^m*rt;!4)%%W@J>#zTR5rMUB0O@dCEw9YU(bF( zWlhC?<}WHZ1VR-$<2b-nQ-!~yAa5E;?>S+Mz}n(1%AO3zQ}394&fxRx`#V#On;IJs zV$zyf4&HMcUj=-nE>`7Nn8v?Rv~r|?)irRc_z*0<@(S_+d{}S9zmHyu#@yV1%Xsj* z6XHq}91%=9NIMcLSQ4nTNf++w?kGSoU+NWvx_f70paqQPJ=$|eKD275h%4cd+TA(v*U5~2`LOihA;o}582cSG?;`burJ)iSAm z1f~_`z{#VCuWA$kP$099gL?452*GMLB`xFSw3d6dvw_D|o=UR$^WkNiC@6X~O+bbR z!ZS&5GJ`o`wkT{Q#KRy?T+<~d-I-<-Gc}At zJ4bO@C9BR&5LEV$?&bivnDNErIo=u~-&V15C;HHc?nLaObNqt=1NKLAAeTG5v{R!N zzg|#d8Q`(z^jdfD>{%g3$m3Ap1AInASJVah@kXA|xRWjQ=JRNeZM-t{uN*km!6lWb zLuhw)sG#&D=7A4ks37ppziimnT1x$e^p`45txS{vck#pW<-`tYn`(bF1e7kz#G6~z z%8u>%AYU_3wxSr9+Bx#o;3@L3%4i5x1Q;F;J77nJI5Rs5yg7m>35N{AI^Ldf%m z%UE9E~xx2!hE!jS-3fA4tLPQeqn6fuT92a}E%&Wbb<4dvJ%hzM1*n4-xy2UoAUCCLwyJ+}= zVI%3~CxzL?mTSHjxepn{Dwcic9?r4+&Jh=r68Bsr=>rB|(9>@mf|^@Mv&MM%W>@mZ z)t?|xH75^SK9lCk5yN4+T5@0OcX;Cs&JQ7@@Zop57@Qb-G4XoRQw>>BWa*lAWvYs5 zBW0_x*gY_UJUh-G@mb^4{jyDG#gPuNiDocP(1_OWImri62}VdthML+!p-o( zB3|-DW1T$r!^#P`bkdw3{^8v{vURnNn1#iwTnpBR&%0!h^9QAHYsdIJ_uoOrg*eAy zC9a=Dj4)a2{efQwyCdeZw?6jM3K$6+cndUf;Zl>q7JpxKzz4sadRQ!XthBfk!;tv> z82WaLJDe-Uj%T^|+YHSLu6yM#Ka^sY{gnRz{2rzy6Yfgfuu4RR%|9$w>5{Fw>W4=X z3+tB;vtMpkg{bHDQY0N6)~5T^7k#1{1VG=pL&6e{v0YeQcsdZ|Q8oZ4bcoF+cd&bh zmD4%KJ?QheSi;~yDAq(D-0{isL$f}_xi~P>6JhA!HJupzfjZ3Vyg=ITJU~6xc^8^< z<8L!u+XaxL6oPD<*jv*EyfUyE0nGDkB2Xp*4X=|y^X85k6VRq#extJ4an~@c6T9WF zTy3#Jx%1^tTHmm7-M#QkeU&1N=lN!9?^1Bm#n(0`Jm_qL2^7*ly!yi5oY<~zTnp^R#pr_cn_DSyE_4KR<8ekzuOo8dt;We zFUb&1upZk7Bc^6x4E);sa7R6eP@=1-_mO3myK??QP)6-ovNZ0g_&`k19>i?&lcmOwFaTCYDAf&Tl|@wA=nIYr5}ir;)W2Y z6r}`+Eio%}-qgKxk;%e_l9oa6afTNbb~xf^DyB9csUwsTGxwM#4i>6^vLaVI2}ysq zSqUw>$2xp!_z#18k9@vt4ZZ$5NU&pS`k74@uI<_)M~6aq_0{B>u0t9BzzGMCTMdC~ zvyTG}5NHakRxJ)sbH)?17?Q^BOP*%9+#o0}l>Lg~c&50I(AlAR>!cq)wF<%p#D!je z)agz7oxIoQ_Bu%W;dBoNh|BExL7pfiKS!Mw9hQOA%iV6XtAa~GRTErt3N3 zcn3;~HNnr1HmO{d;sCEN#{gj^9>r|Ndcp@)s`JghUcMx`IHh6UWXrn>%wCT_6x0fo zkyqcb0<#81o>fb404{wRn1ec1w52T$&!~?5 z_zP}w2pPI*}M+3xT%tu$rwJojk6D)*c* zR~(ku-hq^;&H9(?#U?=jp%UBDP#jIAIt&y}y2d~mrB)^PtGnOqe1*TVuC%UThqeVV zGO!o@OrKJzK8x7^+by6~eJ{&9`oHe@4#6F8xTvPmt~k1WJy58qKA&_P2RBsrO07d79fH|(Q{pFhib|sUQhi_&GS(?n1=5?wBlRr z@V{Ms1eV!`R*F+k0i`tu?96*MN$go9>AB(+D!Xl3GTEX}bp_gqmMLF~{bG7j9HyGh4t|FEP_$%qOZKT9Pt0=opS54HeQ@_yR^B$Itp6t{Bm zxnO-Fs>_U{+XpZ}rs%w^X1nE9zB}^(fn5LO?gP{HWn3cMqnDS0y_hvwhv(ZVDSXj+&Ml)l^>dn~~Ru3$vlwC)PhHh-?fT&9jZ_pw~|pt!NhqJ zshkw=h0%7%8C1ZzQo2bu(?6H|`S)_K-cxxA=yDk3CNlenld$>5w=F=^%rjGlHP5eA z%s-M)#6dMtu-Ms1EXq0K)Vo3nuWXWG@)6n!(MX@4PJ){pai+i>3Eq;xH$b!~Z34vp|`6vxsl=_eQ-2@ zXl(MV*NE8i3ExXuRU(+EYc-C%0a(@+R4E`(Q3nK|oQPxJ@ly0VF_g|-IU?g~=s??f z7=jo(pCDT%l&1S8q3%WHx6ZJO7S8RBNk+%+OG;fqm_u@{?DCq93 z69##>CeF1s*BF3e?Kk-Z3)V}yFK5r2rp}2yc?m~c3WP%94-q9~?KUB*qsaNG0wAhx z?Lyb$Vs_-3glY+m92zQy&rONEMCsU<$lyX7ku1lZ$Uv9**`q%(gzi({n)wTB%>T5p z_9yHRVH*iSMfjovD1Qt@!9($LoUny%lXEw}{=@JhXo0g{v=*45;E=lHN3cXchI5Xp zJ#?O}De5=gXyy*Y#Qi31h8|x_M`uphh+l&-krx;k=^W2{-^n5U)q=Q z^HQYKN%i^ZNIwV#kITX72J+nq+y^h}gz_^Mp?`xNvv=13km%E5xmv07!gjZuiB-kz z^tA4VSiH1TAAbeeJUP0@!RyH1WU<%;e)A!ala$-IjCvs&Zz>f>jY2L(=7`*oDG$NM5K;tHdpToT_KEEg>Rrl zvh=Q1iEd)9<7FdS!~S=X)mCW=_z9v0;v5?h?bfogMF^1ZZr2Pp3)iFwN( z#B-OjTeg(Sv^qRJl@%X~%DP+p_8`}sVFe~frt>cBH;36X*A$ssEiJQvWDS<%-jBjMVwKLZasTL^vFuR{E%kf;nv#F5z@^NL9XDm*se>7p#uQ8g8ps@Cx5^rOOc#i_(Kz;Js( zCc46|A6WfMg|zbMt#mNZTN3fuox6BvXsn8DRlW;VRbjo1xj>|#bS@Gs;G6xUf`s}o z{j)gj*|qcAwSl~XD@_1_ZSkKT{(N9FZSl=QK&k3q?G)jGn|`yUR`Ta(>qjhc04g(y zCG=`rP70^A6g`Ud6B|i+<$~&D#F-aE5bxkZx9nbF%J57+jl?G1#EWULQrJ2%ogBMu zOr3*L6UGR9paAEE{)Xd9Qm|e3fEMe4@F@c+tK1o)g(c^x!+kvOGIT9DESMz|x@MuB z2>P#agazkqP_834Bw-9XkpfNhRwUr5^N`VDNAeO8^xxb|1`BqaEN%~i0Qr7Z0>JqE zjzSX)z_E9B9ze!%p`gRSQsMD4O1^%{gwTn{3?!(j^Lzr+njaFX%?s!Hn@{4D==<9S z?skElp%cVS1gL{*!_ZYH2t4SBwD+$2#DOREQbiiZ7FSUf>mrQnV&ORB1fcfWr0X`* zc8$+m3uB&{1bhWSe@8x{@iaRFNITV~ZWMLp?Gyd}L=qc#(TweJNKogTB0}be} z2(>EQnpr=Htc3oEKP$gNPAMGe-%miGwcsEG@Jd2S?zb_ ze)jCnOq~p;rYY(Ro%)8Yp~z`-W+E`dBc1A7+qeee;i>05GYGB$JfXP{Js}nH?MS-~ zGB3&h(|`Q8KdAge#kTJaQR1(<1V0`cZ$u(x_FU|V8vknulgR&H>HO+>v)yuBXT^>J z^uN^w_lKA1iU9Q=OjA$G1p(ndnC@+#HwJrH!1PXT+Ft&@)A?K<>*xQ!O#SjN2R5+3 zQXT&P{9n8dPmAhPNp<;uM-+V`%KdxO@y&*d``Z;e+xx`~`p@jBx+ll?zd=R(0)I7K z9P(o;K_fGspNSdvAO35dE6*iDbZ|@k_y6|a;!<+*`o;boE_T=wW&Rsnh8qbHrT#Z& zZhcwu=eR`2O~1wo;;n`VURepyj7 z?*C-SA`~n{3A>^`F}ao~@PF0?=DX!|I$cp^{;!5EoY^my{JzAWDgX8V+f0M6Ofshk z{NDl=`H5{{{(SpSfBnB3MpA5f=Tl+t;FmKDU|X^oyxND#{dc+?_h^2YQvLf6W?t}6 zFVy_|e;5kT+rwY~pN7usVjE!hX8L_$`Bkwc*2#agtF2s>^yK;f{;p{fF>Pw$3sa!$Q(^5lzLbA!!5PUK0y=yUm`5hw4qTdHLkx;bev~0?i5{0aufs zi``pdxPG(}+5JBfgsCe^lPX>8*o-%i)pBCO z*%Zz{pm7y^8P}~gvt^PUFIfod&})_Pd9Z(p~-az-HrF^2{ObTxY^?FHSeDORUtO}6$ZvL5tzknJjy6A>VzGpu*}EPX*3uPsTuk?GE|?PX+F%ygZl{q1RiXI&|o11 zc0M1JeQGp~h#rJ#N+5t)HqNJG0-%<^gYa|#Jf8i2p7$wsA!YS2vyk}+SUJolBZ~JJ zsXYkJl)%$uv7o0(5MZ(lfMlB~eAd9#q9aF<&&~Yx?EgB5K%**^=*y7ivz>&v1l=j;%(`8C~CU)?fnZhWhlB#WtJ9kN5x z^Drw!DWuAQ|NlWtz|yT0^d^kL+!E$lpcN_Kx+CFvCKi5QjLEWcw`ZETjJ|~9Q9sI! zi!!AOga3D_;~1Mc2Xh2JRsPi498NT8Cc-Wj4C}7^yez-SI4O29+-GliNS80ORJm2= zX1sb0IVMS=a%i%+hZx$QzNo=%$DL*Ad10kZx;!g8Fo@m^BBzAG;9Y^viqLVR>qOt! zHOQKho$27{Dp6T!8-Lx<-I}S0Gw1V1ICm^+lB~Jw`&&&br&ymZMwA=`OA>{LvBIMK z??08_L>Q7P+3}!}*&8yXDSy_&)lGqTr!qc=uq8YFUh}!DL++M~MJaX_97kP-ZawT) zZ@b-}<^T83C2RO+eKGZOQB~!>`g!^C^s@v~{mh|sx9cZ+b#J3>^1LMHkAc@^!32l( zV!2+jRbE>H(vwf_PpdN0@s9d0OaOV)k))CYopc~S#Xp_C_~-}8ehUQhAOd=HbgLH+ zkOI^bgVZ^*b{-mHm7k2V*f2**!J&RyF$^xEGo0xiIm(0Jz+SmIG^@ZsGPcRLG1=P1 z!zsX=Ihdkua41DCn})H043>ez$k^n9iG$0VjAZR{eZ|)G5Su119$gLT%mLQbgJY}< zu&%|1IaUnu=Jn>w_Zj6^YS}E}HI9LKCM#x8&gH|bYM2SL%p{L<;6Rbn{~yEq5ao8Z F1ORc6D`Efu literal 0 HcmV?d00001 diff --git a/wp-content/cache/min/1/28ddaf2bd7547e4cd818ca3342088a73.css b/wp-content/cache/min/1/28ddaf2bd7547e4cd818ca3342088a73.css new file mode 100644 index 0000000..3cbb685 --- /dev/null +++ b/wp-content/cache/min/1/28ddaf2bd7547e4cd818ca3342088a73.css @@ -0,0 +1 @@ +html.aml-pu-fullscreen-active{overflow:hidden!important}html.aml-pu-fullscreen-active body{position:fixed!important;top:0!important;right:0!important;bottom:0!important;left:0!important;overflow:hidden!important}.aml-modal input,.auto-ads-ml-popup-container input,.autoAdsMaxLead-widget-form-input,.autoAdsMaxLead-widget-form-textarea,.aml-input-field{color:#1d243e!important}.autoAdsMaxLead_widget_overlay{background:rgba(0,0,0,.6);position:fixed;z-index:99990;width:100%;height:100%;top:0;left:0;overflow:hidden;display:none}.autoAdsMaxLead_widget_click_page_overlay{background:rgba(0,0,0,.6);position:fixed;z-index:99799;width:100%;height:100%;top:0;left:0;overflow:hidden;display:none}.autoAdsMaxLead_button_tap{width:50px;height:50px;display:block;position:absolute;opacity:1;-ms-filter:none;filter:none;-webkit-transform:scale(0);-moz-transform:scale(0);-o-transform:scale(0);-ms-transform:scale(0);transform:scale(0);border-radius:100%!important;background-color:rgba(255,255,255,.6)}.autoAdsMaxLead_button_tap.active{-webkit-transition:all .3s ease-out;-moz-transition:all .3s ease-out;-o-transition:all .3s ease-out;-ms-transition:all .3s ease-out;transition:all .3s ease-out;opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0);-webkit-transform:scale(1);-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.autoAdsMaxLead-widget .fa{line-height:50px!important}.autoAdsMaxLead-widget .float-left{float:left}.avatar-img{border-radius:50%}.autoAdsMaxLead-widget .float-right{float:right}.autoAdsMaxLead-widget .float-clear{clear:both}.autoAdsMaxLead-widget *,.autoAdsMaxLead-widget *:after,.autoAdsMaxLead-widget *:before{box-sizing:border-box;-webkit-font-smoothing:auto!important}.autoAdsMaxLead-widget .autoAdsMaxLead-widget-btn-float{width:44px;height:44px;line-height:44px;display:inline-block!important;border:none!important;font-size:18px!important;color:#fff!important;text-align:center!important;position:relative;border-radius:50%!important;cursor:pointer!important;box-shadow:0 2px 5px 0 rgba(0,0,0,.11)}.autoAdsMaxLead-widget .autoAdsMaxLead-widget-btn-float:hover{text-decoration:none!important;box-shadow:0 5px 10px rgba(0,0,0,.15),0 4px 15px rgba(0,0,0,.13)}.autoAdsMaxLead-widget .autoAdsMaxLead-widget-btn-float:active,.autoAdsMaxLead-widget-btn-float:focus{outline:none!important}.autoAdsMaxLead-widget .autoAdsMaxLead-widget-btn-float+.autoAdsMaxLead-widget-btn-float{margin-left:5px}.autoAdsMaxLead-widget .orange{background-color:#ea453b!important}.autoAdsMaxLead-widget .yellow{background-color:#ffa000!important}.autoAdsMaxLead-widget .blue{background-color:#2173f3!important}.autoAdsMaxLead-widget .green{background-color:#00b800!important}.autoAdsMaxLead-widget .purple{background-color:#8e24aa!important}.autoAdsMaxLead-widget .pink{background-color:#e91e63!important}.autoAdsMaxLead-widget .brown{background-color:#795548!important}.autoAdsMaxLead-widget .blue-light{background-color:#2196f3!important}.autoAdsMaxLead-widget .autoAdsMaxLead-widget-btn-float{background-size:auto;background-repeat:no-repeat;background-position:center}.autoAdsMaxLead-widget .autoAdsMaxLead-widget-menu-group{background-size:32px;background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_icon_menu.png)!important}.autoAdsMaxLead-widget .float-btn-group.open .autoAdsMaxLead-widget-menu-group{background-size:25px;background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_icon_close.png)!important}.autoAdsMaxLead-widget .autoAdsMaxLead-widget-menu-contact-form{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_icon_contact_form.svg)!important;background-color:#f7a400!important}.autoAdsMaxLead-widget .autoAdsMaxLead-widget-menu-click-to-call{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_icon_click_to_call.svg)!important;background-color:#509600!important}.autoAdsMaxLead-widget .autoAdsMaxLead-widget-menu-line{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_icon_line.png)!important;background-color:#00b800!important}.autoAdsMaxLead-widget .autoAdsMaxLead-widget-menu-facebook{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_icon_messenger.svg)!important;background-color:#0084ff!important}.autoAdsMaxLead-widget .autoAdsMaxLead-widget-menu-google-map{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_icon_map.svg)!important;background-color:#00b8d4!important}.autoAdsMaxLead-widget .autoAdsMaxLead-widget-menu-whatsapp{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_icon_whatsapp.svg)!important;background-color:#25d366!important}.autoAdsMaxLead-widget .autoAdsMaxLead-widget-menu-skype{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_icon_skype.png)!important}.autoAdsMaxLead-widget .autoAdsMaxLead-widget-menu-zalo{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_icon_zalo.svg)!important;background-color:#0068ff!important}.autoAdsMaxLead-widget .autoAdsMaxLead-widget-menu-tawk-to{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_icon_tawkto.svg)!important;background-color:#03a84e!important}.autoAdsMaxLead-widget .autoAdsMaxLead-widget-menu-download-doc{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_icon_download_doc.svg)!important;background-color:#474fff!important}.autoAdsMaxLead-widget .icon-bars{-moz-transition:.3s .3s;-o-transition:.3s .3s;-webkit-transition:.3s;-webkit-transition-delay:.3s;-webkit-transition:.3s .3s;transition:.3s .3s}.autoAdsMaxLead-widget-icon-close-container{position:absolute;top:5px;right:5px;width:30px;height:30px;padding:3px;text-align:center}.autoAdsMaxLead-widget-icon-close{height:22px;width:22px;display:block;position:relative;background:url(../../../plugins/Simple-Contact/assets/css/images/close.png)!important;background-size:22px;background-repeat:no-repeat}.autoAdsMaxLead-widget-google-map-popup-close-icon{height:100%;width:100%;background:url(../../../plugins/Simple-Contact/assets/css/images/map_close.svg)!important;background-repeat:round}.autoAdsMaxLead-widget .float-btn-group{-webkit-transition:.3s;transition:.3s}.autoAdsMaxLead-widget .autoAdsMaxLead-widget-btn-triger{border-radius:100%!important;-moz-transition:transform .3s;-webkit-transition:transform .3s;transition:transform .3s}.autoAdsMaxLead-widget-button-top-left{top:15px;left:15px;position:fixed!important;z-index:99800}.autoAdsMaxLead-widget-button-top-center{top:15px;left:50%;margin-left:-100px;position:fixed!important;z-index:99800}.autoAdsMaxLead-widget-button-top-right{top:15px;right:15px;position:fixed!important;z-index:99800}.autoAdsMaxLead-widget-button-middle-left{margin-top:-25px;top:50%;left:15;position:fixed!important;z-index:99800}.autoAdsMaxLead-widget-button-middle-right{margin-top:-25px;top:50%;right:15px;position:fixed!important;z-index:99800}.autoAdsMaxLead-widget-button-bottom-left{left:15px;bottom:15px;position:fixed!important;z-index:99800}.autoAdsMaxLead-widget-button-bottom-center{bottom:15px;left:50%;margin-left:-100px;position:fixed!important;z-index:99800}.autoAdsMaxLead-widget-button-bottom-right{right:15px;bottom:15px;position:fixed!important;z-index:99800}.autoAdsMaxLead-widget .float-btn-group .autoAdsMaxLead-widget-btn-list{position:absolute;-webkit-transition:.3s;transition:.3s}.autoAdsMaxLead-widget-button-top-left .autoAdsMaxLead-widget-btn-list,.autoAdsMaxLead-widget-button-top-center .autoAdsMaxLead-widget-btn-list,.autoAdsMaxLead-widget-button-bottom-left .autoAdsMaxLead-widget-btn-list,.autoAdsMaxLead-widget-button-bottom-center .autoAdsMaxLead-widget-btn-list,.autoAdsMaxLead-widget-button-middle-left .autoAdsMaxLead-widget-btn-list{left:0}.autoAdsMaxLead-widget-button-top-right .autoAdsMaxLead-widget-btn-list,.autoAdsMaxLead-widget-button-bottom-right .autoAdsMaxLead-widget-btn-list,.autoAdsMaxLead-widget-button-middle-right .autoAdsMaxLead-widget-btn-list{right:0}.autoAdsMaxLead-widget .float-btn-group .autoAdsMaxLead-widget-btn-list li{display:inline-block}.autoAdsMaxLead-widget .float-btn-group .icon-bars:last-child{display:none}.autoAdsMaxLead-widget .float-btn-group.open .icon-bars{display:none}.autoAdsMaxLead-widget .float-btn-group.open .icon-bars:last-child{display:block}.autoAdsMaxLead-widget .float-btn-group.open .autoAdsMaxLead-widget-button-default-text{display:none!important}.autoAdsMaxLead-widget-style1 .float-btn-group .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container{float:right}.autoAdsMaxLead-widget-style1 .float-btn-group .icon-bars{-webkit-transition:.3s;transition:.3s}.autoAdsMaxLead-widget-style1 .float-btn-group .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(8){-moz-transition:.1s .1s;-o-transition:.1s .1s;-webkit-transition:.1s;-webkit-transition-delay:.1s;-webkit-transition:.1s .1s;transition:.1s .1s}.autoAdsMaxLead-widget-style1 .float-btn-group .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(7){-moz-transition:.1s .15s;-o-transition:.1s .15s;-webkit-transition:.1s;-webkit-transition-delay:.15s;-webkit-transition:.1s .15s;transition:.1s .15s}.autoAdsMaxLead-widget-style1 .float-btn-group .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(6){-moz-transition:.1s .2s;-o-transition:.1s .2s;-webkit-transition:.1s;-webkit-transition-delay:.2s;-webkit-transition:.1s .2s;transition:.1s .2s}.autoAdsMaxLead-widget-style1 .float-btn-group .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(5){-moz-transition:.1s .3s;-o-transition:.1s .3s;-webkit-transition:.1s;-webkit-transition-delay:.3s;-webkit-transition:.1s .3s;transition:.1s .3s}.autoAdsMaxLead-widget-style1 .float-btn-group .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(4){-moz-transition:.1s .35s;-o-transition:.1s .35s;-webkit-transition:.1s;-webkit-transition-delay:.35s;-webkit-transition:.1s .35s;transition:.1s .35s}.autoAdsMaxLead-widget-style1 .float-btn-group .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(3){-moz-transition:.1s .4s;-o-transition:.1s .4s;-webkit-transition:.1s;-webkit-transition-delay:.4s;-webkit-transition:.1s .4s;transition:.1s .4s}.autoAdsMaxLead-widget-style1 .float-btn-group .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(2){-moz-transition:.1s .45s;-o-transition:.1s .45s;-webkit-transition:.1s;-webkit-transition-delay:.45s;-webkit-transition:.1s .45s;transition:.1s .45s}.autoAdsMaxLead-widget-style1 .float-btn-group .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(1){-moz-transition:.1s .5s;-o-transition:.1s .5s;-webkit-transition:.1s;-webkit-transition-delay:.5s;-webkit-transition:.1s .5s;transition:.1s .5s}.autoAdsMaxLead-widget-style1 .float-btn-group.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container{opacity:1}.autoAdsMaxLead-widget-style1 .float-btn-group.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(8){-moz-transition:.1s .5s;-o-transition:.1s .5s;-webkit-transition:.5s;-webkit-transition-delay:.5s;-webkit-transition:.1s .5s;transition:.1s .5s}.autoAdsMaxLead-widget-style1 .float-btn-group.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(7){-moz-transition:.1s .45s;-o-transition:.1s .45s;-webkit-transition:.45s;-webkit-transition-delay:.45s;-webkit-transition:.1s .45s;transition:.1s .45s}.autoAdsMaxLead-widget-style1 .float-btn-group.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(6){-moz-transition:.1s .4s;-o-transition:.1s .4s;-webkit-transition:.4s;-webkit-transition-delay:.4s;-webkit-transition:.1s .4s;transition:.1s .4s}.autoAdsMaxLead-widget-style1 .float-btn-group.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(5){-moz-transition:.1s .35s;-o-transition:.1s .35s;-webkit-transition:.35s;-webkit-transition-delay:.35s;-webkit-transition:.1s .35s;transition:.1s .35s}.autoAdsMaxLead-widget-style1 .float-btn-group.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(4){-moz-transition:.1s .3s;-o-transition:.1s .3s;-webkit-transition:.3s;-webkit-transition-delay:.3s;-webkit-transition:.1s .3s;transition:.1s .3s}.autoAdsMaxLead-widget-style1 .float-btn-group.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(3){-moz-transition:.1s .25s;-o-transition:.1s .25s;-webkit-transition:.25s;-webkit-transition-delay:.25s;-webkit-transition:.1s .25s;transition:.1s .25s}.autoAdsMaxLead-widget-style1 .float-btn-group.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(2){-moz-transition:.1s .2s;-o-transition:.1s .2s;-webkit-transition:.2s;-webkit-transition-delay:.2s;-webkit-transition:.1s .2s;transition:.1s .2s}.autoAdsMaxLead-widget-style1 .float-btn-group.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(1){-moz-transition:.1s .15s;-o-transition:.1s .15s;-webkit-transition:.15s;-webkit-transition-delay:.15s;-webkit-transition:.1s .15s;transition:.1s .15s}.autoAdsMaxLead-widget-style1 .float-btn-group.open .autoAdsMaxLead-widget-btn-float-container{width:380px}.autoAdsMaxLead-widget-style1 .float-btn-group .autoAdsMaxLead-widget-btn-float-container{width:50px}.autoAdsMaxLead-widget-style1 .float-btn-group .autoAdsMaxLead-widget-button-text{display:none}.autoAdsMaxLead-widget-style1 .float-btn-group .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container{position:absolute;top:0;opacity:0}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-top-left .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container{top:55px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-top-left.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(1){left:0;top:55px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-top-left.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(2){left:0;top:110px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-top-left.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(3){left:0;top:165px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-top-left.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(4){left:0;top:220px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-top-left.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(5){left:0;top:275px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-top-left.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(6){left:0;top:330px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-top-left.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(7){left:0;top:385px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-top-left.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(8){left:0;top:440px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-top-center .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container{top:55px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-top-center.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(1){left:0;top:55px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-top-center.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(2){left:0;top:110px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-top-center.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(3){left:0;top:165px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-top-center.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(4){left:0;top:220px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-top-center.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(5){left:0;top:275px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-top-center.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(6){left:0;top:330px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-top-center.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(7){left:0;top:385px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-top-center.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(8){left:0;top:440px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-top-right.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(1){right:0;top:55px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-top-right.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(2){right:0;top:110px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-top-right.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(3){right:0;top:165px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-top-right.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(4){right:0;top:220px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-top-right.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(5){right:0;top:275px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-top-right.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(6){right:0;top:330px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-top-right.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(7){right:0;top:385px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-top-right.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(8){right:0;top:440px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-middle-left .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container{top:-55px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-middle-left.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(8){left:0;top:-440px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-middle-left.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(7){left:0;top:-385px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-middle-left.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(6){left:0;top:-330px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-middle-left.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(5){left:0;top:-275px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-middle-left.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(4){left:0;top:-220px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-middle-left.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(3){left:0;top:-165px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-middle-left.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(2){left:0;top:-110px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-middle-left.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(1){left:0;top:-55px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-bottom-left .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container{top:-55px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-bottom-left.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(8){left:0;top:-440px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-bottom-left.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(7){left:0;top:-385px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-bottom-left.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(6){left:0;top:-330px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-bottom-left.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(5){left:0;top:-275px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-bottom-left.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(4){left:0;top:-220px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-bottom-left.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(3){left:0;top:-165px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-bottom-left.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(2){left:0;top:-110px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-bottom-left.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(1){left:0;top:-55px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-bottom-center .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container{top:-55px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-bottom-center.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(8){left:0;top:-440px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-bottom-center.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(7){left:0;top:-385px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-bottom-center.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(6){left:0;top:-330px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-bottom-center.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(5){left:0;top:-275px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-bottom-center.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(4){left:0;top:-220px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-bottom-center.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(3){left:0;top:-165px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-bottom-center.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(2){left:0;top:-110px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-bottom-center.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(1){left:0;top:-55px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-bottom-right.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(8){right:0;top:-440px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-bottom-right.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(7){right:0;top:-385px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-bottom-right.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(6){right:0;top:-330px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-bottom-right.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(5){right:0;top:-275px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-bottom-right.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(4){right:0;top:-220px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-bottom-right.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(3){right:0;top:-165px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-bottom-right.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(2){right:0;top:-110px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-bottom-right.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(1){right:0;top:-55px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-middle-right.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(8){right:0;top:-440px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-middle-right.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(7){right:0;top:-385px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-middle-right.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(6){right:0;top:-330px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-middle-right.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(5){right:0;top:-275px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-middle-right.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(4){right:0;top:-220px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-middle-right.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(3){right:0;top:-165px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-middle-right.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(2){right:0;top:-110px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-middle-right.open .autoAdsMaxLead-widget-btn-list .autoAdsMaxLead-widget-btn-float-container:nth-child(1){right:0;top:-55px}#autoadsmaxlead_call_back_form{margin-bottom:10px}.autoAdsMaxLead-call-back{display:none;background-color:#f9f9f9;background-repeat:no-repeat;position:fixed;z-index:99800!important;width:200px;margin-right:0;min-height:90px!important;line-height:25px!important;border-radius:8px!important;padding:5px 10px 5px 10px;box-shadow:0 0 2px 0 rgba(0,0,0,.2),0 3px 5px 0 rgba(0,0,0,.1)}.autoAdsMaxLead-call-back .autoAdsMaxLead-widget-form-error-message{margin-bottom:-10px!important;margin-top:2px!important}.autoAdsMaxLead-call-back .autoAdsMaxLead-call-back-header{font-size:14px!important;font-weight:bold!important;color:#2173f3;text-align:center!important;padding-bottom:10px!important;padding-top:5px!important}.autoAdsMaxLead-call-back .autoAdsMaxLead-form-group{width:100%!important;position:relative!important;margin-bottom:15px!important;margin-top:5px!important}.autoAdsMaxLead-call-back .autoAdsMaxLead-form-label{position:absolute!important;color:#777!important;font-size:12px!important;top:-12px!important}.autoAdsMaxLead-call-back .autoAdsMaxLead-form-input{height:28px!important;margin-top:10px!important;border:1px solid #dedede!important;border-radius:4px!important;padding:4px 10px 4px 10px!important;color:#777!important;font-size:12px!important;background-color:#fff!important;font-size:12px!important;display:initial;margin-left:0!important;margin-right:0!important;margin-bottom:0!important}.autoAdsMaxLead-call-back .autoAdsMaxLead-call-back-tel{width:100%!important}.autoAdsMaxLead-call-back .autoAdsMaxLead-call-back-subject{width:100%!important}.autoAdsMaxLead-call-back .autoAdsMaxLead-form-container-btn{text-align:right!important;margin-top:15px}.autoAdsMaxLead-call-back .autoAdsMaxLead-form-btn{border:none!important;color:#fff!important;padding:3px 10px!important;cursor:pointer!important;border-radius:25px!important;font-size:12px!important;width:100%!important;outline:none!important;height:30px!important}#autoadsmaxlead_call_back_message_container{display:none}.autoAdsMaxLead-call-back,.autoAdsMaxLead-message-info{font-size:14px;color:#6c738d;text-align:center;margin-top:5px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-top-left .autoAdsMaxLead-call-back{top:290px;left:15px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-top-center .autoAdsMaxLead-call-back{left:50%;margin-left:-100px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-top-right .autoAdsMaxLead-call-back{top:290px;right:15px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-middle-left .autoAdsMaxLead-call-back{top:50%;margin-top:-100px;left:15px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-middle-right .autoAdsMaxLead-call-back{top:50%;margin-top:-100px;right:15px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-bottom-right .autoAdsMaxLead-call-back{bottom:290px;right:15px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-bottom-center .autoAdsMaxLead-call-back{left:50%;margin-left:-100px}.autoAdsMaxLead-widget-style1 .autoAdsMaxLead-widget-button-bottom-left .autoAdsMaxLead-call-back{bottom:290px;left:15px}@-webkit-keyframes at-ripple{0%{box-shadow:0 4px 10px rgba(102,102,102,.1),0 0 0 0 rgba(102,102,102,.1),0 0 0 5px rgba(102,102,102,.1),0 0 0 10px rgba(102,102,102,.1)}100%{box-shadow:0 4px 10px rgba(102,102,102,.1),0 0 0 5px rgba(102,102,102,.1),0 0 0 10px rgba(102,102,102,.1),0 0 0 20px rgba(102,102,102,0)}}@keyframes at-ripple{0%{box-shadow:0 4px 10px rgba(102,102,102,.1),0 0 0 0 rgba(102,102,102,.1),0 0 0 5px rgba(102,102,102,.1),0 0 0 10px rgba(102,102,102,.1)}100%{box-shadow:0 4px 10px rgba(102,102,102,.1),0 0 0 5px rgba(102,102,102,.1),0 0 0 10px rgba(102,102,102,.1),0 0 0 20px rgba(102,102,102,0)}}.autoAdsMaxLead-widget-button-text{overflow:hidden!important;text-overflow:ellipsis!important;white-space:nowrap!important;height:35px!important;line-height:25px!important;color:#fff!important;font-size:12px!important;text-align:center!important;padding:5px 10px!important;background:rgba(0,0,0,.5);border-radius:5px!important;margin-top:5px;min-width:68px;max-width:300px;opacity:1;display:none;letter-spacing:normal!important}.autoAdsMaxLead-widget-button-text:hover{cursor:pointer}@keyframes reveal{from{clip-path:inset(0 0 0 100%)}to{clip-path:inset(0 0 0 0)}}.autoAdsMaxLead-widget-btn-default:hover .autoAdsMaxLead-widget-button-text{display:block}.autoAdsMaxLead-widget-btn-float-container a:hover+.autoAdsMaxLead-widget-button-text{display:block}.autoAdsMaxLead-widget-button-top-right .autoAdsMaxLead-widget-btn-float,.autoAdsMaxLead-widget-button-bottom-right .autoAdsMaxLead-widget-btn-float,.autoAdsMaxLead-widget-button-middle-right .autoAdsMaxLead-widget-btn-float{float:right}.autoAdsMaxLead-widget-button-text-top-right,.autoAdsMaxLead-widget-button-text-style1-top-right,.autoAdsMaxLead-widget-button-text-bottom-right,.autoAdsMaxLead-widget-button-text-style1-bottom-right,.autoAdsMaxLead-widget-button-text-middle-right,.autoAdsMaxLead-widget-button-text-style1-middle-right{margin-right:10px;float:right}.autoAdsMaxLead-widget-button-text-top-right::after,.autoAdsMaxLead-widget-button-text-style1-top-right::after,.autoAdsMaxLead-widget-button-text-bottom-right::after,.autoAdsMaxLead-widget-button-text-style1-bottom-right::after,.autoAdsMaxLead-widget-button-text-middle-right::after,.autoAdsMaxLead-widget-button-text-style1-middle-right::after{content:""!important;width:0!important;height:0!important;right:47px!important;top:15px!important;position:absolute!important;border-top:7px solid transparent;border-bottom:7px solid transparent;border-left:7px solid rgba(0,0,0,.5)}.autoAdsMaxLead-widget-button-top-left .autoAdsMaxLead-widget-btn-float,.autoAdsMaxLead-widget-button-top-center .autoAdsMaxLead-widget-btn-float,.autoAdsMaxLead-widget-button-bottom-left .autoAdsMaxLead-widget-btn-float,.autoAdsMaxLead-widget-button-bottom-center .autoAdsMaxLead-widget-btn-float,.autoAdsMaxLead-widget-button-middle-left .autoAdsMaxLead-widget-btn-float{float:left}.autoAdsMaxLead-widget-button-text-top-left,.autoAdsMaxLead-widget-button-text-style1-top-left,.autoAdsMaxLead-widget-button-text-top-center,.autoAdsMaxLead-widget-button-text-style1-top-center,.autoAdsMaxLead-widget-button-text-bottom-left,.autoAdsMaxLead-widget-button-text-style1-bottom-left,.autoAdsMaxLead-widget-button-text-bottom-center,.autoAdsMaxLead-widget-button-text-style1-bottom-center,.autoAdsMaxLead-widget-button-text-middle-left,.autoAdsMaxLead-widget-button-text-style1-middle-left{margin-left:10px;float:left}.autoAdsMaxLead-widget-button-text-top-left::after,.autoAdsMaxLead-widget-button-text-style1-top-left::after,.autoAdsMaxLead-widget-button-text-top-center::after,.autoAdsMaxLead-widget-button-text-style1-top-center::after,.autoAdsMaxLead-widget-button-text-bottom-left::after,.autoAdsMaxLead-widget-button-text-style1-bottom-left::after,.autoAdsMaxLead-widget-button-text-bottom-center::after,.autoAdsMaxLead-widget-button-text-style1-bottom-center::after,.autoAdsMaxLead-widget-button-text-middle-left::after,.autoAdsMaxLead-widget-button-text-style1-middle-left::after{content:""!important;width:0!important;height:0!important;left:47px!important;top:16px!important;position:absolute!important;border-top:7px solid transparent!important;border-bottom:7px solid transparent!important;border-right:7px solid rgba(0,0,0,.5)!important}.powered_by_autoAdsMaxLead{min-width:110px;max-width:150px;padding:4px;background:rgba(0,0,0,.5);border-radius:5px!important;display:none;color:#fff;position:absolute;text-align:center;white-space:nowrap;cursor:pointer;height:20px;line-height:12px;font-size:11px}.powered_by_autoAdsMaxLead span.autoAdsMaxLead_powered_by_text{font-size:7px!important}.powered_by_autoAdsMaxLead span.autoadsmaxlead_widget_name{font-size:11px!important}div.autoAdsMaxLead-widget-click-to-call-popup-container,div.autoAdsMaxLead-widget-line-popup-container,div.autoAdsMaxLead-widget-facebook-popup-container,div.autoAdsMaxLead-widget-zalo-popup-container,div.autoAdsMaxLead-widget-tawk-to-popup-container,div.autoAdsMaxLead-widget-allow-notification-permission-popup-container,div.autoAdsMaxLead-widget-contact-code-popup-container{opacity:0;position:fixed;top:100px;left:100px;width:366px;min-height:50px;z-index:99910;border-radius:5px;background:#f5f6fa;padding:26px 15px 15px 15px;box-shadow:0 0 20px 0 rgba(0,0,0,.2),0 5px 5px 0 rgba(0,0,0,.24);-moz-transition:opacity .5s ease-in-out;-o-transition:opacity .5s ease-in-out;-webkit-transition:opacity .5s ease-in-out;transition:opacity .5s ease-in-out;box-sizing:content-box;letter-spacing:normal!important}div.autoAdsMaxLead-widget-google-map-popup-container{position:fixed;top:100px;left:100px;min-height:50px;z-index:99999;border-radius:12px;background:#fff;box-shadow:0 0 20px 0 rgba(0,0,0,.2),0 5px 5px 0 rgba(0,0,0,.24);-moz-transition:opacity .5s ease-in-out;-o-transition:opacity .5s ease-in-out;-webkit-transition:opacity .5s ease-in-out;transition:opacity .5s ease-in-out;box-sizing:content-box;letter-spacing:normal!important}div.autoAdsMaxLead-widget-facebook-popup-container{background:none!important;border:0!important;box-shadow:none!important}div.autoAdsMaxLead-widget-tawk-to-popup-container{padding:0!important;z-index:2147483647!important}div.autoAdsMaxLead-widget-tawk-to-popup-container .autoAdsMaxLead-widget-icon-close{background:url(../../../plugins/Simple-Contact/assets/css/images/icon_close.png)!important}div.autoAdsMaxLead-widget-click-to-call-popup-container.hide,div.autoAdsMaxLead-widget-download-doc-popup-container.hide,div.autoAdsMaxLead-widget-facebook-popup-container.hide,div.autoAdsMaxLead-widget-line-popup-container.hide,div.autoAdsMaxLead-widget-zalo-popup-container.hide,div.autoAdsMaxLead-widget-tawk-to-popup-container.hide,div.autoAdsMaxLead-widget-allow-notification-permission-popup-container.hide,div.autoAdsMaxLead-widget-contact-code-popup-container.hide{top:-3000px!important}div.autoAdsMaxLead-widget-google-map-popup-container.hide{display:none!important}div.autoAdsMaxLead-widget-click-to-call-popup-container.open,div.autoAdsMaxLead-widget-download-doc-popup-container.open,div.autoAdsMaxLead-widget-line-popup-container.open,div.autoAdsMaxLead-widget-facebook-popup-container.open,div.autoAdsMaxLead-widget-zalo-popup-container.open,div.autoAdsMaxLead-widget-google-map-popup-container.open,div.autoAdsMaxLead-widget-tawk-to-popup-container.open,div.autoAdsMaxLead-widget-allow-notification-permission-popup-container.open,div.autoAdsMaxLead-widget-contact-code-popup-container.open{opacity:1!important}div.autoAdsMaxLead-widget-contact-popup-header,div.autoAdsMaxLead-widget-click-to-call-popup-header,div.autoAdsMaxLead-widget-download-doc-popup-header,div.autoAdsMaxLead-widget-line-popup-header,div.autoAdsMaxLead-widget-facebook-popup-header,div.autoAdsMaxLead-widget-google-map-popup-header,div.autoAdsMaxLead-widget-tawk-to-popup-header,div.autoAdsMaxLead-widget-allow-notification-permission-popup-header,div.autoAdsMaxLead-widget-contact-code-popup-header{text-align:center;font-weight:700;color:#1d243e;font-size:20px;min-height:22px!important}div.autoAdsMaxLead-widget-contact-popup-sub-header,div.autoAdsMaxLead-widget-click-to-call-popup-sub-header,div.autoAdsMaxLead-widget-download-doc-sub-header,div.autoAdsMaxLead-widget-line-popup-sub-header,div.autoAdsMaxLead-widget-facebook-popup-sub-header,div.autoAdsMaxLead-widget-tawk-to-popup-sub-header,div.autoAdsMaxLead-widget-allow-notification-permission-popup-sub-header,div.autoAdsMaxLead-widget-contact-code-popup-sub-header{text-align:center;color:#1d243e;font-size:14px;margin:5px 0 15px}div.autoAdsMaxLead-widget-contact-popup-body,div.autoAdsMaxLead-widget-click-to-call-popup-body,div.autoAdsMaxLead-widget-download-doc-popup-body,div.autoAdsMaxLead-widget-line-popup-body,div.autoAdsMaxLead-widget-facebook-popup-body,div.autoAdsMaxLead-widget-tawk-to-popup-body,div.autoAdsMaxLead-widget-allow-notification-permission-popup-body,div.autoAdsMaxLead-widget-contact-code-popup-body{min-height:50px;height:auto}div.autoAdsMaxLead-widget-contact-popup-footer,div.autoAdsMaxLead-widget-click-to-call-popup-footer,div.autoAdsMaxLead-widget-line-popup-footer,div.autoAdsMaxLead-widget-facebook-popup-footer,div.autoAdsMaxLead-widget-tawk-to-popup-footer,div.autoAdsMaxLead-widget-allow-notification-permission-popup-footer,div.autoAdsMaxLead-widget-contact-code-popup-footer{min-height:50px;height:auto}div.autoAdsMaxLead-widget-allow-notification-permission-popup-body{text-align:center!important;color:#555!important}div.autoAdsMaxLead-widget-contact-code-popup-body{text-align:center!important;font-size:35px!important;color:#555!important;text-decoration:none}div.autoAdsMaxLead-widget-desktop-contact-code-container{padding:10px;box-sizing:border-box!important;text-align:center!important;color:#efefef;width:200px!important;height:180px!important;position:fixed!important;z-index:999999;-moz-transition:.1s .15s;-o-transition:.1s .15s;-webkit-transition:.15s;-webkit-transition-delay:.15s;-webkit-transition:.1s .15s;transition:.1s .15s}div.autoAdsMaxLead-widget-desktop-contact-code-container.hide{top:-3000px!important}div.autoAdsMaxLead-widget-desktop-contact-code-container.open{opacity:1!important}div.autoAdsMaxLead-widget-desktop-contact-code-header{font-size:20px!important;color:#efefef!important}div.autoAdsMaxLead-widget-desktop-contact-code-body{font-size:60px!important;padding-top:5px!important;color:#fff!important}div.autoAdsMaxLead-widget-desktop-contact-code-footer{font-size:12px!important;color:#efefef!important;padding-top:15px!important}span.autoAdsMaxLead-widget-form-red-star{color:#f00!important;position:relative!important;top:3px!important;padding-left:5px!important}.autoAdsMaxLead-widget-form-error-message{font-size:13px!important;font-style:italic!important;color:#f00!important;display:none}.autoAdsMaxLead-form-submit{background-color:#2173f3;min-width:100px!important;min-height:40px!important;color:#fff!important;margin:10px 0 0 0!important;font-weight:bold!important;-webkit-border-radius:4px!important;-moz-border-radius:4px!important;border-radius:4px!important;border:none!important;cursor:pointer!important;width:100%!important;font-size:16px!important;outline:none!important;-webkit-appearance:none!important}.autoAdsMaxLead-form-btn-close{cursor:pointer!important;-webkit-appearance:none!important}.autoAdsMaxLead-form-btn-action{min-width:100px!important;min-height:40px!important;color:#fff!important;margin-right:10px!important;margin-top:10px!important;font-weight:bold!important;-webkit-border-radius:100px!important;-moz-border-radius:100px!important;border-radius:100px!important;border:none!important;cursor:pointer!important;width:100%!important;font-size:16px!important;outline:none!important;-webkit-appearance:none!important}a.autoAdsMaxLead-form-btn-action{display:block!important;text-align:center!important;line-height:40px!important;text-decoration:none!important}a.autoAdsMaxLead-form-btn-block-notification{margin:0!important;float:left!important;width:48%!important;background-color:#ddd!important;color:#666!important}a.autoAdsMaxLead-form-btn-allow-notification{margin:0!important;float:right!important;width:48%!important}.autoAdsMaxLead-widget-form-label{width:100%!important;color:#999!important;font-size:14px!important;display:block!important;text-align:left!important;outline:none!important;display:none!important}.autoAdsMaxLead-widget-form-error-container{height:auto!important}.autoAdsMaxLead-widget-form-input{padding:23px 5px!important;line-height:22px!important;width:100%!important;margin:10px 0 0 0!important;border:1px solid #d8dde6!important;font-size:14px!important;color:#1d243e!important;background:#fff!important;outline:none!important;border-radius:4px!important;-webkit-box-shadow:none!important;-moz-box-shadow:none!important;box-shadow:none!important;height:30px!important;min-height:30px!important;max-width:none!important;-webkit-box-sizing:border-box!important;-moz-box-sizing:border-box!important;box-sizing:border-box!important}.autoAdsMaxLead-widget-form-textarea{padding:12px 5px!important;line-height:22px!important;width:100%!important;margin:10px 0 0 0!important;resize:none!important;height:96px!important;min-height:60px!important;border:1px solid #d8dde6!important;font-size:14px!important;color:#1d243e!important;background:#fff!important;outline:none!important;border-radius:4px!important;-webkit-box-shadow:none!important;-moz-box-shadow:none!important;box-shadow:none!important;-webkit-box-sizing:border-box!important;-moz-box-sizing:border-box!important;box-sizing:border-box!important}input.autoAdsMaxLead-widget-form-input::placeholder,textarea.autoAdsMaxLead-widget-form-textarea::placeholder{color:#929aae!important}.autoAdsMaxLead-widget-form-file-upload{position:relative!important}.autoAdsMaxLead-widget-form-file-upload span{font-size:14px!important;color:#1d243e;-webkit-border-radius:100px!important;-moz-border-radius:100px!important;cursor:pointer!important;background:#f5f6fa url(../../../plugins/Simple-Contact/assets/css/images/widget_icon_upload.png) no-repeat right center;padding-right:22px}.autoAdsMaxLead-widget-form-file-select{display:inline-block;overflow:hidden!important;text-overflow:ellipsis!important;white-space:nowrap!important;padding-top:0!important;padding-bottom:0!important;margin-bottom:0!important}.autoAdsMaxLead-widget-form-file-select-display{max-width:calc(100% - 25px)!important;display:inline-block;overflow:hidden!important;text-overflow:ellipsis!important;white-space:nowrap!important;padding-top:0!important;padding-bottom:0!important;margin-bottom:0!important}.autoAdsMaxLead-widget-form-file{width:100%!important;position:absolute!important;top:0!important;right:0!important;margin:0!important;padding:0!important;cursor:pointer!important;opacity:0!important}.autoAdsMaxLead-widget-form-input:focus,.autoAdsMaxLead-widget-form-textarea:focus{outline-width:0!important;border-bottom:2px solid #2173f3!important}#autoadsmaxlead_contact_form{margin:0!important;margin-top:0!important;margin-bottom:0!important;margin-left:0!important;margin-right:0!important;padding:0!important;overflow:hidden}#autoadsmaxlead_message_info,#autoadsmaxlead_thank_you,#autoadsmaxlead_show_loading{display:none}div.autoAdsMaxLead-widget-contact-popup-header{color:#1d243e!important}div.autoAdsMaxLead-widget-contact-popup-footer .autoAdsMaxLead-form-submit{-webkit-appearance:none!important;-webkit-box-shadow:none!important;-moz-box-shadow:none!important;box-shadow:none!important;padding:0!important;text-align:center!important}div.autoAdsMaxLead-widget-click-to-call-popup-header{color:#1d243e!important}.auto-ads-ml-popup-container{opacity:0;position:fixed;width:608px;padding:64px 40px;z-index:99990;border-radius:4px;background:#fff;box-shadow:0 4px 6px rgba(0,0,0,.2);-moz-transition:opacity .5s ease-in-out;-o-transition:opacity .5s ease-in-out;-webkit-transition:opacity .5s ease-in-out;transition:opacity .5s ease-in-out;box-sizing:content-box;letter-spacing:normal!important;color:#1d243e!important}.auto-ads-ml-popup-container.open{opacity:1!important}.auto-ads-ml-popup-container.hide{top:-3000px!important}.auto-ads-ml-col{display:inline-block!important;float:left!important}.auto-ads-ml-text-center{text-align:center!important}.auto-ads-ml-text-title{font-weight:bold!important;font-size:24px!important;line-height:31px!important;color:#1d243e!important}.auto-ads-ml-text-content{font-size:14px!important;line-height:18px!important;color:#1d243e!important}.auto-ads-ml-mobile .auto-ads-ml-text-title{font-size:16px!important;line-height:21px!important}.auto-ads-ml-mobile.auto-ads-ml-template-picture .auto-ads-ml-text-title{margin-top:24px!important}.auto-ads-ml-mobile .auto-ads-ml-text-content{font-size:10px!important;line-height:13px!important}.auto-ads-ml-pdt-8{padding-top:8px!important}.auto-ads-ml-pdb-8{padding-bottom:8px!important}.auto-ads-ml-pdt-16{padding-top:16px!important}.auto-ads-ml-pdb-16{padding-bottom:16px!important}#autoAdsMaxLead_widget_inform_popup{width:370px!important;padding:40px 30px!important}@media only screen and (min-device-width:360px) and (max-device-width:780px){#autoAdsMaxLead_widget_inform_popup{width:314px!important;padding:32px!important}}.auto-ads-ml-text-title-inform{font-style:normal!important;font-weight:bold!important;font-size:20px!important;line-height:26px!important;padding-bottom:8px!important}.auto-ads-ml-text-content-tks{font-style:normal!important;font-weight:normal!important;font-size:14px!important;line-height:18px!important;padding-bottom:16px!important}.auto-ads-ml-text-content-inform{color:#aeb4c5!important;font-size:12px!important;line-height:16px!important;font-style:normal!important;font-weight:normal!important}.auto-ads-ml-desktop .auto-ads-ml-dd-img{width:180px!important;height:240px}.auto-ads-ml-desktop .auto-ads-ml-dd-img img{width:100%;height:100%}.auto-ads-ml-mobile .auto-ads-ml-dd-img,.auto-ads-ml-mobile .auto-ads-ml-dd-content{width:100%!important;text-align:center!important}.auto-ads-ml-mobile .auto-ads-ml-dd-img img{width:120px;height:160px}.auto-ads-ml-desktop.auto-ads-ml-template-picture .auto-ads-ml-dd-content{width:380px!important;margin:26px 0 0 48px}.auto-ads-ml-desktop .auto-ads-ml-text-content{margin:8px 0 32px 0}.auto-ads-ml-mobile .auto-ads-ml-text-content{margin:6px 0 16px 0}.auto-ads-ml-desktop.auto-ads-ml-template-content{width:430px!important;padding:64px!important}.auto-ads-ml-mobile.auto-ads-ml-popup-container{width:288px!important;padding:24px!important}.auto-ads-ml-desktop.auto-ads-ml-template-content .auto-ads-ml-dd-content{width:100%!important}.auto-ads-ml-desktop.auto-ads-ml-template-content{text-align:center!important}div.autoAdsMaxLead-widget-popup-group{height:48px!important;background:#fff!important;border:1px solid #d8dde6!important;box-sizing:border-box!important;border-radius:4px!important;margin:16px 0!important}div.autoAdsMaxLead-widget-popup-group input[type="text"]{width:50%!important;margin:11px 0 11px 9px!important;padding:0 24px 0 0!important;border:0!important;outline:none!important;height:24px!important;line-height:24px!important;box-shadow:unset!important;display:inline-block!important;color:#1d243e!important;font-size:14px!important}div.autoAdsMaxLead-widget-popup-group input[type="text"]:focus{box-shadow:unset!important}.autoAdsMaxLead-widget-popup-group input[type="text"]:focus{background-color:#fff!important}.autoAdsMaxLead-widget-popup-group input[type="text"]::placeholder{color:#929aae!important}div.autoAdsMaxLead-widget-popup-group input[type="button"],div.autoAdsMaxLead-widget-popup-group button{float:right!important;width:40%!important;height:40px!important;border-radius:4px!important;border:0!important;margin:3px!important;padding:0!important;color:#fff!important;text-transform:unset!important;line-height:unset!important;text-align:center!important;font-size:14px!important;cursor:pointer}.auto-ads-ml-dd-content .autoAdsMaxLead-widget-popup-group{margin-bottom:0!important}.auto-ads-ml-desktop .autoAdsMaxLead-widget-popup-group img{vertical-align:bottom!important}.aml-modal{display:none;position:fixed;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:#000;background-color:rgba(0,0,0,.4)}.aml_dk-desktop .aml-trans-text{color:#6c738d!important;margin:4px 0 12px 0!important;font-size:14px!important}.aml_dk-desktop .aml-modal-header{position:relative;left:calc(100% - 34.41px)!important;top:21.41px!important;height:40px!important;width:40px!important;margin:0!important}.aml_dk-desktop .aml-close{position:absolute;left:-10px!important;top:-15px!important;width:100%!important;height:100%!important;background:url(../../../plugins/Simple-Contact/assets/css/images/widget_icon_click_close.svg) no-repeat center center}.aml_dk-desktop .aml-close:hover{cursor:pointer}.aml_dk-desktop .aml-modal-content{position:absolute;width:570px!important;height:auto!important;background-color:#fff!important;border:1px solid rgba(0,0,0,.2)!important;border-radius:8px!important;box-shadow:0 4px 8px 0 rgba(0,0,0,.2),0 6px 20px 0 rgba(0,0,0,.19)!important;-webkit-animation-name:aml-ease-in-out;-webkit-animation-duration:.5s;animation-name:aml-ease-in-out;animation-duration:.5s;top:50%;left:50%;transform:translate(-50%,-50%)}@-webkit-keyframes aml-ease-in-out{from{opacity:0}to{opacity:1}}@keyframes aml-ease-in-out{from{opacity:0}to{opacity:1}}.aml_dk-desktop .aml-modal-body{position:relative}.aml_dk-desktop .aml-head-body{padding:0 32px 0 32px!important}.aml_dk-desktop .aml-modal-title{margin-bottom:0!important;color:#1d243e!important;font-weight:bold!important;line-height:24px!important;font-size:16px!important}.aml_dk-desktop .aml-input-phone{position:relative;width:100%!important;height:48px!important;background:#fff!important;border:1px solid #d8dde6!important;box-sizing:border-box!important;border-radius:4px!important;margin-top:24px!important;display:flex!important;padding:0!important;align-items:center!important}.aml_dk-desktop .aml-input-icon{background:transparent;position:relative;float:left!important;margin:0 10px 0 20px!important}.aml_dk-desktop .aml-input-field{border:none!important;width:calc(85% - 150px)!important;height:19px!important;font-style:normal!important;font-weight:normal!important;font-size:14px!important;line-height:18px!important;letter-spacing:.01em!important;margin:0!important}.aml_dk-desktop .aml-input-field:focus{outline:0}.aml_dk-desktop ::placeholder{color:#aeb4c5!important}#autoAdsMaxLead_widget_form_CallbackPhone_label{margin-left:32px;margin-top:8px}.aml_dk-desktop .aml-btn-require-callback{position:absolute!important;right:0!important;top:0!important;min-width:150px!important;align-items:center!important;height:40px!important;border-radius:4px!important;margin:3px!important;border:none!important;order:2!important;color:#fff!important;padding:0 16px 0 16px!important;font-size:14px!important;font-weight:normal!important;text-transform:none!important}.aml_dk-desktop .aml-btn-require-callback:hover{cursor:pointer}.aml_dk-desktop .aml-list-phone{background:#f5f6fa!important;border-radius:0 0 8px 8px!important;margin-top:32px!important;padding:12px 32px 32px 32px!important}.aml_dk-desktop .aml-scroll-list-phone{padding-right:5px!important;max-height:240px!important;overflow-y:auto!important}.aml_dk-desktop .aml-phone-info{width:100%!important;height:40px!important;background:#fdfdfd!important;border-radius:8px!important;margin-top:8px!important;display:flex!important;align-items:center!important;line-height:24px!important}.aml_dk-desktop .aml-phone-info:first-child{margin-top:0!important}.aml_dk-desktop .aml-region{color:#6c738d!important;max-width:55%!important;font-size:14px!important}.aml_dk-desktop .aml-phone-number{color:#1d243e!important;font-size:14px!important;margin-left:5px!important}.aml_dk-desktop .aml-blue-call-icon{position:relative!important;top:-8%!important;left:21%!important;width:13px!important;height:13px!important}.aml_dk-desktop .aml-blue-call{width:24px!important;height:24px!important;border-radius:50%!important;background:#fff!important;margin:0 16px 0 24px!important;border:1px solid #fff!important;box-sizing:border-box!important;box-shadow:0 0 10px rgba(29,36,62,.08)!important}.aml_dk-desktop ::-webkit-scrollbar{width:8px}.aml_dk-desktop ::-webkit-scrollbar-track{background-color:#f5f6fa}.aml_dk-desktop ::-webkit-scrollbar-thumb{border-radius:4px;background-color:#d8dde6}.aml_dk-desktop .aml-desktop-devider{text-align:center}.aml_dk-desktop .aml-desktop-devider-bar{width:130px;height:4px!important;border-top:1px solid #e9ebf1!important;display:inline-block!important}.aml_dk-desktop .aml-desktop-devider-text{font-size:12px!important;line-height:16px!important;padding-left:10px!important;padding-right:10px!important;color:#d8dde6!important}.aml_dk-desktop .aml-modal-content.aml-modal-content-one-phone{width:482px!important}.aml-modal-title-desktop-one-phone{padding:0 52px!important}.aml-bold-phone-number{font-size:32px!important;line-height:48px!important;font-weight:bold!important;text-align:center!important;margin-top:4px!important;color:#1d243e!important}.aml_dk-desktop .aml-bold-contact-title{line-height:24px!important;font-size:16px!important;font-weight:bold!important;text-align:center!important;margin-top:16px!important;color:#1d243e!important}.aml_dk-desktop .aml-package-free .aml-bold-contact-title{margin-top:0!important}.aml_dk-desktop .aml-package-free .aml-one-number-content{padding-top:0!important}.aml_dk-desktop .aml-contact-name{font-size:14px!important}.aml-contact-name{line-height:24px!important;margin-top:4px!important;color:#6c738d!important;text-align:center!important}.aml-modal.aml_dk-mobile{z-index:9999999990}.aml_dk-mobile .aml-close{border:none!important;width:14px!important;height:14px!important;background:url(../../../plugins/Simple-Contact/assets/css/images/widget_icon_click_close.svg) no-repeat center center;background-color:transparent;position:absolute;top:18px!important;right:18px!important;margin-bottom:0!important;margin-left:5px!important}.aml_dk-mobile .aml-modal-content{position:absolute;width:calc(100% - 16px)!important;height:auto!important;left:8px!important;background:#fff!important;border-radius:8px!important;-webkit-animation-name:animatetop;-webkit-animation-duration:.4s;animation-name:aml-animatebottom;animation-duration:.4s;bottom:8px}.aml_dk-mobile .aml-modal-content.horizontal{max-height:calc(100% - 60px)!important}@-webkit-keyframes aml-animatebottom{from{margin-top:100%;opacity:0}to{margin-top:0%;opacity:1}}@keyframes aml-animatebottom{from{margin-top:100%;opacity:0}to{margin-top:0%;opacity:1}}.aml_dk-mobile .aml-list-head{display:flex;align-items:center!important;height:48px!important;background:#efefef!important;border:1px solid #fff!important;border-bottom:none!important;border-radius:8px 8px 0 0!important}.aml_dk-mobile .aml-list-head h4{margin:12px 0 12px 16px!important;font-size:16px!important;font-weight:bold!important;max-width:calc(100% - 60px)!important;line-height:24px!important;color:#6c738d!important;line-height:115%!important}.aml_dk-mobile .aml-modal-body{max-height:80vh;overflow-y:auto!important;background-color:#f9f9f9!important;border-radius:0 0 8px 8px!important}.aml_dk-mobile .aml-phone-info-detail{display:flex!important;align-items:center!important;padding:0 16px 0 16px!important;width:100%!important;height:100%!important}.aml_dk-mobile .aml-phone-info-detail.horizontal{border-right:1px solid #fff!important;border-left:1px solid #d8dde6!important}.aml_dk-mobile .aml-phone-info-detail.left{border-left:1px solid #fff!important}.aml_dk-mobile .aml-phone-info-detail.last{border-right:none!important}.aml_dk-mobile .aml-modal-body.horizontal{max-height:calc(100vh - 116px)!important;overflow-y:auto!important;display:flex!important;flex-wrap:wrap!important}.aml_dk-mobile .aml-phone-info{padding:8px 0 8px 0!important;display:flex!important;align-items:center!important;background:#f9f9f9!important;border-bottom:1px solid #d8dde6!important;border-top:1px solid #fff!important}.aml_dk-mobile .aml-phone-info.last{border-radius:0 0 8px 8px!important;border-bottom:none!important}.aml_dk-mobile .aml-phone-info.horizontal{width:50%!important}.aml_dk-mobile .aml-phone-info-left{position:relative!important;float:left!important;width:80%!important}.aml_dk-mobile .aml-phone-info p{font-weight:bold!important;font-size:16px!important;margin-bottom:8px!important;line-height:21px!important;color:#1d243e!important}.aml_dk-mobile .aml-phone-info span{margin-right:9px!important;font-style:normal!important;font-weight:normal!important;font-size:13px!important;line-height:20px!important;color:#6c738d!important}.aml_dk-mobile .aml-phone-info-left img{width:13.29px!important;height:13.25px!important}.aml_dk-mobile .aml-phone-info-right{position:relative!important;margin-left:calc(20% - 40px)!important}.aml_dk-mobile .aml-blue-call-icon{position:relative!important}.aml_dk-mobile .aml-blue-call{width:40px!important;height:40px!important;border-radius:50%!important;background:#fff!important;box-shadow:0 9px 20px rgba(0,0,0,.05)!important;display:flex!important;justify-content:center!important}.aml_dk-mobile .aml-separate{width:100%!important;height:0!important;border-top:1px solid #d8dde6!important;border-bottom:1px solid #fff!important}.autoAdsMaxLead_fixed_center{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);-webkit-transform:translate(-50%,-50%)}.autoAdsMaxLead_fixed_center.autoAdsMaxLead_fixed_top_0{top:0;transform:translate(-50%,0);-webkit-transform:translate(-50%,0)}.autoAdsMaxLead_fixed_top6px{top:6px;transform:translate(-50%,0);-webkit-transform:translate(-50%,0)}#autoAdsMaxLead_widget_click_to_call_popup .autoAdsMaxLead-widget-popup-group input[type="button"]{background:#00b151!important;width:118px!important}#autoAdsMaxLead_widget_click_to_call_popup.aml_dk-mobile{width:100%;border-radius:8px;padding:8px}#autoAdsMaxLead_widget_click_to_call_popup #iframe-call-old{width:100%;height:100%;border-radius:8px}#autoAdsMaxLead_widget_download_doc_popup .autoAdsMaxLead-widget-popup-group button{background-color:#474fff!important}.auto-ads-ml-desktop .autoAdsMaxLead-widget-popup-group button{width:166px!important}.auto-ads-ml-template-picture.auto-ads-ml-mobile .autoAdsMaxLead-widget-popup-group button{width:99px!important;font-size:14px!important}.auto-ads-ml-click-to-call-content{font-weight:bold!important;font-size:14px!important;line-height:18px!important;text-align:center!important;color:#1d243e!important}.auto-ads-ml-click-to-call-phone{font-weight:bold!important;font-size:20px!important;line-height:26px!important;color:#1d243e!important;text-decoration:none!important}a.auto-ads-ml-click-to-call-phone:hover{text-decoration:none!important}div.autoAdsMaxLead-widget-click-to-call-popup-divider{border-bottom:1px solid #e9ebf1!important;height:15px!important;opacity:.74!important}div.autoAdsMaxLead-widget-click-to-call-popup-divider span{font-size:12px!important;font-weight:normal!important;line-height:16px!important;padding-left:10px!important;background:#fff!important;color:#d8dde6!important}div.autoAdsMaxLead-widget-click-to-call-popup-sub-header{margin-top:10px!important}div.autoAdsMaxLead-widget-click-to-call-popup-body{text-align:center!important;margin-top:5px;min-height:50px;height:auto}div.autoAdsMaxLead-widget-click-to-call-popup-footer .autoAdsMaxLead-form-btn-action{background:#ff9c00!important;-webkit-appearance:none!important}div.autoAdsMaxLead-widget-click-to-call-popup-body a.autoAdsMaxLead-widget-display-phone-number{font-size:32px!important;color:#1d243e!important;text-decoration:none}.aml-line-clamp-2{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}.aml-line-clamp-1{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1;overflow:hidden}.autoAdsMaxLead-widget-display-qr-code canvas{border:1px solid #ddd!important}.autoAdsMaxLead-widget-display-url{text-align:center;color:#777;font-size:14px;margin:10px 0 0}div.autoAdsMaxLead-widget-line-popup-header{color:#00b800!important}div.autoAdsMaxLead-widget-line-popup-body{text-align:center!important;margin:30px 0 15px;min-height:50px;height:auto}div.autoAdsMaxLead-widget-line-popup-footer .autoAdsMaxLead-form-btn-action{background:#00b800!important;-webkit-appearance:none!important}div.autoAdsMaxLead-widget-facebook-popup-header{color:#2173f3!important}div.autoAdsMaxLead-widget-facebook-popup-body{text-align:center!important;min-height:50px;height:auto}div.autoAdsMaxLead-widget-facebook-popup-footer .autoAdsMaxLead-form-btn-action{background:#2173f3!important;-webkit-appearance:none!important}div.autoAdsMaxLead-widget-google-map-popup-header{color:#1d243e!important}.autoAdsMaxLead-widget-form-error{color:#f00!important}label.autoAdsMaxLead-widget-form-error,div.autoAdsMaxLead-widget-form-error{display:block!important}.autoAdsMaxLead-widget-form-input.autoAdsMaxLead-widget-form-error,.autoAdsMaxLead-widget-form-file-upload.autoAdsMaxLead-widget-form-error{border-bottom:2px solid #f00!important}.autoAdsMaxLead-widget-form-label.autoAdsMaxLead-widget-form-error .autoAdsMaxLead-widget-form-error-message{display:block!important}.autoAdsMaxLead-widget-form-file-upload span.autoAdsMaxLead-widget-form-file-select-display:before{display:inline-block!important;content:"×"!important;width:15px!important;font-size:14px!important}.autoAdsMaxLead-widget-form-file-upload span.autoAdsMaxLead-widget-form-file-select-display{max-width:calc(100% - 25px)!important;display:inline-block;overflow:hidden!important;text-overflow:ellipsis!important;white-space:nowrap!important;padding-top:0!important;padding-bottom:0!important;margin-bottom:0!important}div.autoAdsMaxLead-widget div{overflow:visible!important}#autoadsmaxlead_widget_google_map_popup,#autoadsmaxlead_widget_facebook_popup{-webkit-box-sizing:initial!important;-moz-box-sizing:initial!important;box-sizing:initial!important}.autoAdsMaxLead-call-back-footer{position:relative}.autoAdsMaxLead-call-back-container-category{width:70%;float:left}.autoAdsMaxLead-call-back-container-category .dropdown-caterory{width:100%}.autoAdsMaxLead-call-back-container-btn{width:30%;float:left}#autoadsmaxlead_widget_form_input_email_label{clear:both!important}.autoAdsMaxLead-widget .autoAdsMaxLead-widget-btn-list div:before,.autoAdsMaxLead-widget .autoAdsMaxLead-widget-btn-list div:after{display:unset!important}.autoAdsMaxLead-widget-btn-pulse::before{content:'';background-color:inherit;width:55px;height:55px;-webkit-border-radius:50px!important;-moz-border-radius:50px!important;border-radius:50px!important;position:absolute;left:-5px;top:-5px;z-index:-1;-webkit-transform:scale(1.5);-ms-transform:scale(1.5);transform:scale(1.5);-webkit-animation:autoAdsMaxLead-widget-animation-pulse 2s infinite;animation:autoAdsMaxLead-widget-animation-pulse 2s infinite}.autoAdsMaxLead-widget-btn-pulse::after{content:'';background-color:inherit;width:55px;height:55px;-webkit-border-radius:50px!important;-moz-border-radius:50px!important;border-radius:50px!important;position:absolute;left:-5px;top:-5px;z-index:-1;-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0);-webkit-animation:autoAdsMaxLead-widget-animation-pulse 2s infinite;animation:autoAdsMaxLead-widget-animation-pulse 2s infinite;-webkit-animation-delay:.5s;animation-delay:.5s}.autoAdsMaxLead-minimize-wrapper{position:absolute;width:60px;height:35px;left:calc(100% - 72px);opacity:.2;top:13px;cursor:pointer}@-webkit-keyframes autoAdsMaxLead-widget-animation-pulse{0%{-webkit-transform:scale(0);transform:scale(0);opacity:1}50%{opacity:.5}100%{-webkit-transform:scale(1.5);transform:scale(1.5);opacity:0}}@keyframes autoAdsMaxLead-widget-animation-pulse{0%{-webkit-transform:scale(0);transform:scale(0);opacity:1}50%{opacity:.5}100%{-webkit-transform:scale(1.5);transform:scale(1.5);opacity:0}}.autoAdsMaxLead-minimize-facebook-wrapper{position:fixed;right:13px;bottom:202px;width:50px;height:50px;border-radius:50%;cursor:pointer;z-index:999998!important;background-image:url(../../../plugins/Simple-Contact/assets/css/images/fb_icon_close.png)!important;background-repeat:no-repeat;background-position:center;display:none}#autoAdsMaxLead-widget-btn-click_to_call .tooltip{text-overflow:ellipsis!important;white-space:nowrap!important;height:35px!important;line-height:25px!important;color:#fff!important;font-size:12px!important;text-align:center!important;padding:5px!important;background:rgba(0,0,0,.5);border-radius:5px!important;opacity:1;top:-45px;position:absolute;display:block!important}#autoAdsMaxLead-widget-btn-click_to_call .tooltip::after{content:""!important;width:0;height:0;bottom:-9px;right:39px;position:absolute;border-left:9px solid transparent;border-right:9px solid transparent}.autoAdsMaxLead-widget-btn-list .active-icon{background-color:#d8dde6!important}.customer-popup-location{min-width:90px}.max-widget-mobile{border:0 none!important;padding:0!important;z-index:9999999981;overflow:visible!important;min-width:0!important;min-height:0!important;max-width:none!important;max-height:none!important;width:auto!important;height:auto!important;position:fixed!important;margin:0!important;left:0!important;top:0!important;right:0!important;bottom:0!important;display:block!important;box-shadow:unset!important;border-radius:0!important}.max-widget-mobile iframe{position:absolute;left:0}.max-widget-mobile .autoAdsMaxLead-widget-google-map-popup-header{padding-top:26px!important}.max-widget-mobile .autoAdsMaxLead-widget-google-map-popup-header{font-size:16px!important}.validate-ok{background-image:url(../../../plugins/Simple-Contact/assets/css/images/checked-circle.png)!important;background-repeat:no-repeat!important;background-position:98% center!important}.zalo-chat-widget{bottom:17px!important;right:17px!important}#autoAdsMaxLead_widget_tawk_to_popup .autoAdsMaxLead-widget-icon-close-container{top:15px;right:30px;z-index:999999998}#autoAdsMaxLead_widget_tawk_to_popup.max-widget-mobile iframe{top:0;height:100%!important}.autoAdsMaxLead-widget-popup-loader{background-image:url(../../../plugins/Simple-Contact/assets/css/images/loader32x32.gif);width:32px;height:32px;position:fixed;bottom:15px;right:15px;display:none}#autoAdsMaxLead_widget_facebook_popup .autoAdsMaxLead-widget-icon-close{background-image:url(../../../plugins/Simple-Contact/assets/css/images/fb_icon_close.png)!important;background-repeat:no-repeat!important;background-position:center!important;width:50px!important;height:50px!important;border-radius:50%!important}.autoAdsMaxLead-Mobile .autoAdsMaxLead-widget-btn-float-container{position:unset!important;width:69px!important;text-align:center!important}.autoAdsMaxLead-Mobile .mobile-background .autoAdsMaxLead-widget-btn-float-container{width:60px!important;padding:8px 0 4px 0!important}.autoAdsMaxLead-Mobile .autoAdsMaxLead-widget-btn-list{position:fixed!important;bottom:0!important;width:100%!important;color:#6c738d!important;text-align:center!important;z-index:999999999!important}.autoAdsMaxLead-Mobile .autoAdsMaxLead-widget-btn-float-container span{font-size:9px!important;display:block!important;margin-top:-3px!important}.autoAdsMaxLead-Mobile .autoAdsMaxLead-widget-btn-list{display:flex!important;flex-direction:row!important;flex-wrap:nowrap!important;padding:0 0 0 20px!important}.autoAdsMaxLead-Mobile .autoAdsMaxLead-widget-btn-list.mobile-background{justify-content:space-around!important;padding-left:0!important;padding:0!important}.autoAdsMaxLead-Mobile .autoAdsMaxLead-widget-btn-float-container .autoAdsMaxLead-widget-btn-float{float:none!important}.autoAdsMaxLead-Mobile .mobile-background.autoAdsMaxLead-widget-btn-list{background-color:#f9f9f9!important;border-top:1px solid #d8dde6!important;box-shadow:0 -4px 8px rgba(29,36,62,.2)}.autoAdsMaxLead-Mobile .mobile-background .autoAdsMaxLead-widget-btn-float{background-color:transparent!important;-moz-box-shadow:none!important;-webkit-box-shadow:none!important;box-shadow:none!important;border-radius:0!important;width:28px!important;height:28px!important;background-size:cover!important}.autoAdsMaxLead-Mobile .mobile-background .autoAdsMaxLead-widget-menu-contact-form{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_m_icon_contact_form.svg)!important}.autoAdsMaxLead-Mobile .mobile-background .autoAdsMaxLead-widget-menu-click-to-call{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_m_icon_click_to_call.svg)!important}.autoAdsMaxLead-Mobile .mobile-background .autoAdsMaxLead-widget-menu-facebook{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_m_icon_facebook.svg)!important}.autoAdsMaxLead-Mobile .mobile-background .autoAdsMaxLead-widget-menu-zalo{background-image:url(../../../plugins/Simple-Contact/assets/images/widget_m_icon_zalo.svg)!important}.autoAdsMaxLead-Mobile .mobile-background .autoAdsMaxLead-widget-menu-tawk-to{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_m_icon_livechat.svg)!important}.autoAdsMaxLead-Mobile .mobile-background .autoAdsMaxLead-widget-menu-google-map{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_m_icon_map.svg)!important}.autoAdsMaxLead-Mobile .mobile-background .autoAdsMaxLead-widget-menu-whatsapp{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_m_icon_whatsapp.svg)!important}.autoAdsMaxLead-Mobile .mobile-background .autoAdsMaxLead-widget-menu-download-doc{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_m_icon_download_doc.svg)!important}#autoadsmaxlead_contact_form{margin:0!important;padding:0!important}.autoAdsMaxLead-widget-tooltip{width:50px!important}.autoAdsMaxLead-widget-tooltip .autoAdsMaxLead-widget-tooltiptext{visibility:hidden;text-align:center;border-radius:5px!important;white-space:nowrap!important;width:auto!important;height:35px!important;line-height:25px!important;padding:5px 10px!important;position:absolute;z-index:1;top:4px;font-size:12px!important}.autoAdsMaxLead-widget-tooltip .autoAdsMaxLead-widget-tooltiptext::after{content:"";position:absolute;top:50%;margin-top:-5px;border-width:5px;border-style:solid}.autoAdsMaxLead-widget-tooltip:hover .autoAdsMaxLead-widget-tooltiptext{visibility:visible}.autoAdsMaxLead-widget-tooltiptext-style1-top-left.autoAdsMaxLead-widget-tooltiptext,.autoAdsMaxLead-widget-tooltiptext-style1-middle-left.autoAdsMaxLead-widget-tooltiptext,.autoAdsMaxLead-widget-tooltiptext-style1-bottom-left.autoAdsMaxLead-widget-tooltiptext{left:110%}.autoAdsMaxLead-widget-tooltip .autoAdsMaxLead-widget-tooltiptext-style1-top-left.autoAdsMaxLead-widget-tooltiptext::after,.autoAdsMaxLead-widget-tooltip .autoAdsMaxLead-widget-tooltiptext-style1-middle-left.autoAdsMaxLead-widget-tooltiptext::after,.autoAdsMaxLead-widget-tooltip .autoAdsMaxLead-widget-tooltiptext-style1-bottom-left.autoAdsMaxLead-widget-tooltiptext::after{right:100%}.autoAdsMaxLead-widget-tooltiptext-style1-top-right.autoAdsMaxLead-widget-tooltiptext,.autoAdsMaxLead-widget-tooltiptext-style1-middle-right.autoAdsMaxLead-widget-tooltiptext,.autoAdsMaxLead-widget-tooltiptext-style1-bottom-right.autoAdsMaxLead-widget-tooltiptext{right:110%}.autoAdsMaxLead-widget-tooltip .autoAdsMaxLead-widget-tooltiptext-style1-top-right.autoAdsMaxLead-widget-tooltiptext::after,.autoAdsMaxLead-widget-tooltip .autoAdsMaxLead-widget-tooltiptext-style1-middle-right.autoAdsMaxLead-widget-tooltiptext::after,.autoAdsMaxLead-widget-tooltip .autoAdsMaxLead-widget-tooltiptext-style1-bottom-right.autoAdsMaxLead-widget-tooltiptext::after{left:100%;transform:rotateZ(-180deg)}.auto-ads-ml-powered-by{color:#666!important;visibility:hidden;opacity:0;transition:visibility 1s,opacity .3s linear}.auto-ads-ml-powered-by b{color:#555!important}.auto-ads-ml-desktop .auto-ads-ml-powered-by{writing-mode:vertical-rl;text-orientation:mixed;position:absolute;background:rgba(0,0,0,.1);border-radius:4px;cursor:pointer;font-size:10px;box-sizing:border-box;text-align:center;height:132px;width:18px;padding:10px 0;background-clip:content-box;line-height:18px!important}.auto-ads-ml-powered-by.open{visibility:visible;opacity:1}.auto-ads-ml-desktop .autoAdsMaxLead-widget-button-middle-right .auto-ads-ml-powered-by{transform:rotate(180deg);border-top-left-radius:0;border-bottom-left-radius:0}.auto-ads-ml-desktop .autoAdsMaxLead-widget-button-top-right .auto-ads-ml-powered-by{transform:rotate(180deg);border-top-left-radius:0;border-bottom-left-radius:0}.auto-ads-ml-desktop .autoAdsMaxLead-widget-button-bottom-right .auto-ads-ml-powered-by{transform:rotate(180deg);border-top-left-radius:0;border-bottom-left-radius:0}.auto-ads-ml-desktop .autoAdsMaxLead-widget-button-middle-left .auto-ads-ml-powered-by{border-top-left-radius:0;border-bottom-left-radius:0}.auto-ads-ml-desktop .autoAdsMaxLead-widget-button-top-left .auto-ads-ml-powered-by{border-top-left-radius:0;border-bottom-left-radius:0}.auto-ads-ml-desktop .autoAdsMaxLead-widget-button-bottom-left .auto-ads-ml-powered-by{border-top-left-radius:0;border-bottom-left-radius:0}.auto-ads-ml-mobile .auto-ads-ml-powered-by{height:62px;width:16px;font-size:8px;padding:4px 4px 4px 0!important;position:fixed;background-clip:content-box!important;line-height:12px!important}.auto-ads-ml-mobile.auto-ads-ml-horizontal .auto-ads-ml-powered-by{border-bottom-right-radius:2px;border-top-right-radius:2px;background:rgba(0,0,0,.1);writing-mode:vertical-rl;bottom:-4px!important;left:-4px!important}.auto-ads-ml-mobile.auto-ads-ml-horizontal.auto-ads-ml-background .auto-ads-ml-powered-by{background:none;bottom:0!important;right:6px!important;transform:rotate(180deg);height:55px;width:16px;font-size:8px;padding:2px 4px 2px 0!important}.auto-ads-ml-mobile.auto-ads-ml-vertical .auto-ads-ml-powered-by{border-top-right-radius:2px;border-top-left-radius:2px;background:rgba(0,0,0,.1);text-align:center;width:62px;height:16px;bottom:0;padding:4px 4px 0 4px!important}.location-preview-mobile .aml-toggle.container-up{right:32px}.location-preview-mobile .aml-toggle{width:8px;height:8px}.autoAdsMaxLead-widget-popup-container input[type="button"]:disabled,.autoAdsMaxLead-widget-popup-container input[type="submit"]:disabled{opacity:.24}#autoAdsMaxLead_location_modal_list_item{border-bottom-left-radius:12px}.autoAdsMaxLead-widget-google-map-popup-place{padding:16px;border-left:2px solid transparent;cursor:pointer}.autoAdsMaxLead-widget-google-map-popup-place:hover{background-color:rgba(245,246,250,.5)}.autoAdsMaxLead-widget-google-map-popup-place.active-mobile .aml-address-mobile{color:#0070e0!important}.autoAdsMaxLead-widget-google-map-popup-place.active{border-left:2px solid #0070e0!important;background-color:#f5f6fa}.aml_dk-desktop#autoAdsMaxLead_location_modal_container #autoAdsMaxLead_location_modal_list_item::-webkit-scrollbar{width:8px}.aml_dk-desktop#autoAdsMaxLead_location_modal_container::-webkit-scrollbar{width:10px}.aml_dk-desktop#autoAdsMaxLead_location_modal_container #autoAdsMaxLead_location_modal_list_item::-webkit-scrollbar-track,.aml_dk-desktop#autoAdsMaxLead_location_modal_container::-webkit-scrollbar-track{background:#fefefe}.aml_dk-desktop#autoAdsMaxLead_location_modal_container::-webkit-scrollbar-track{margin:19px 0}.aml_dk-desktop#autoAdsMaxLead_location_modal_container #autoAdsMaxLead_location_modal_list_item::-webkit-scrollbar-thumb,.aml_dk-desktop#autoAdsMaxLead_location_modal_container::-webkit-scrollbar-thumb{background:#d8dde6}.aml_dk-desktop#autoAdsMaxLead_location_modal_container #autoAdsMaxLead_location_modal_list_item::-webkit-scrollbar-thumb{border-radius:4px}.aml_dk-desktop#autoAdsMaxLead_location_modal_container::-webkit-scrollbar-thumb{border-right:2px solid #fff}.aml_dk-desktop#autoAdsMaxLead_location_modal_container::-webkit-scrollbar-thumb{border-radius:8px}.aml_dk-desktop#autoAdsMaxLead_location_modal_container #autoAdsMaxLead_location_modal_list_item::-webkit-scrollbar-thumb:hover,.aml_dk-desktop#autoAdsMaxLead_location_modal_container::-webkit-scrollbar-thumb:hover{background:#555}.aml-map-head-colapse{height:40px;width:auto;border-radius:8px 8px 8px 8px;display:flex;align-items:center;line-height:40px;padding-left:16px;background-color:#efefef;border:1px solid #fff}.mobile .aml-map-head-colapse.horizontal{padding-left:9px}.mobile .aml-map-head-colapse{padding-left:16px}.aml-map-head-colapse.horizontal{padding-left:9px!important}.aml-map-head-location-image{line-height:40px;height:16px;width:16px;background:url(../../../plugins/Simple-Contact/assets/css/images/widget_icon_pin.svg) no-repeat center center}.aml-map-head-colapse-image{line-height:40px;height:16px;width:16px;background:url(../../../plugins/Simple-Contact/assets/css/images/list_colpase.svg) no-repeat center center}.aml-map-head-colapse-content{margin-left:8px;color:#6c738d;font-weight:700;font-size:16px;line-height:24px}.aml-toggle{position:absolute;width:12px;height:12px;border:solid #6c738d;border-width:0 2px 2px 0;display:inline-block;cursor:pointer}.aml-toggle.up{top:12px;left:8px;transform:rotate(-135deg);-webkit-transform:rotate(-135deg)}.aml-toggle.down{top:6px;left:8px;transform:rotate(45deg);-webkit-transform:rotate(45deg)}.aml-toggle.left{top:8px;left:11px;transform:rotate(135deg);-webkit-transform:rotate(135deg);z-index:2000000;border:solid #fff!important;border-width:0 2px 2px 0!important}.aml-toggle.right{top:8px;left:4px;transform:rotate(-45deg);-webkit-transform:rotate(-45deg);z-index:2000000;border:solid #fff!important;border-width:0 2px 2px 0!important}.aml-toggle.left.disabled,.aml-toggle.right.disabled{border:solid #bcbcbc!important;border-width:0 2px 2px 0!important}.aml-toggle.container-left,.aml-toggle.container-right{width:28px;height:28px;border-width:0;border-radius:4px;background-color:rgba(0,0,0,.4)!important;right:-36px}.aml-toggle.container-up,.aml-toggle.container-down{position:absolute;position:absolute;width:28px;height:28px;background-color:transparent;border:none}.aml-toggle.container-up{right:40px}.aml-toggle.container-down{right:10px}.aml-toggle.container-left{top:calc(50% + 1px);background-color:rgba(0,0,0,.4)!important}.aml-toggle.container-right{top:calc(50% - 29px);background-color:rgba(0,0,0,.4)!important}.aml-toggle.container-left.disabled,.aml-toggle.container-right.disabled{background-color:rgba(0,0,0,.08)!important}.aml-map-inner-content{padding:0 16px 0 16px}.aml-map-inner-content.horizontal.left{border-left:1px solid #fff!important}.aml-map-inner-content.horizontal.last{border-right:1px solid #d8dde6!important}#autoAdsMaxLead_location_modal_container.mobile{width:calc(100% - 20px);max-height:calc(100% - 68px)!important}#autoAdsMaxLead_location_modal_container.horizontal{top:8px!important;max-height:calc(100vh - 16px)!important;width:auto;max-width:calc(100% - 69px)!important}#autoAdsMaxLead_location_modal_list_item:not(.horizontal){display:block!important}#autoAdsMaxLead_location_modal_list_item.horizontal{display:flex!important;flex-wrap:wrap!important;max-height:calc(100% - 40px)!important;max-width:100%}.autoAdsMaxLead-widget-google-map-popup-place{border-bottom:1px solid #d8dde6!important;border-top:1px solid #fff!important}.autoAdsMaxLead-widget-google-map-popup-place.horizontal{width:50%!important}.aml-map-inner-content.mobile.horizontal{border-right:1px solid #fff;border-left:1px solid #d8dde6;padding:0 8px 0 8px}.aml-map-inner-content.mobile{padding:0 16px 0 16px}#amlMap .gm-style-iw .gm-ui-hover-effect{color:#666;top:.5px!important;right:.5px!important}.aml-map-head-colapse.level-0{width:40px;height:100%;padding:8px 0!important;justify-content:center;align-items:start}.aml-map-inner-content.mobile.level-1{border-left:none;border-right:none}.aml-tooltip{position:relative;display:inline-block}.aml-tooltip .aml-tooltiptext{visibility:hidden;font-size:12px!important;line-height:16px!important;text-align:center;white-space:nowrap;border-radius:4px;padding:8px;position:absolute;top:calc(50% - 16px);z-index:1;opacity:0;transition:opacity .5s}.aml-tooltip .aml-tooltiptext::after{content:"";position:absolute;top:50%;margin-top:-5px;border-width:5px;border-style:solid}.aml-tooltip:hover .aml-tooltiptext{visibility:visible;opacity:1}.aml_dk-bottom-center .aml-tooltip .aml-tooltiptext{top:auto;bottom:calc(150% - 18px);left:0}.aml_dk-bottom-center .aml-tooltip .aml-tooltiptext::after{top:110%;left:50%}.aml_dk-top-left .aml-tooltip .aml-tooltiptext,.aml_dk-middle-left .aml-tooltip .aml-tooltiptext,.aml_dk-bottom-left .aml-tooltip .aml-tooltiptext{left:120%}.aml_dk-top-left .aml-tooltip .aml-tooltiptext::after,.aml_dk-middle-left .aml-tooltip .aml-tooltiptext::after,.aml_dk-bottom-left .aml-tooltip .aml-tooltiptext::after{right:100%}.aml_dk-top-right .aml-tooltip .aml-tooltiptext,.aml_dk-middle-right .aml-tooltip .aml-tooltiptext,.aml_dk-bottom-right .aml-tooltip .aml-tooltiptext{right:120%}.aml_dk-top-right .aml-tooltip .aml-tooltiptext::after,.aml_dk-middle-right .aml-tooltip .aml-tooltiptext::after,.aml_dk-bottom-right .aml-tooltip .aml-tooltiptext::after{left:100%}.aml_dk-desktop.aml_dk-style-horizontal.aml_dk-style-default.aml_dk-bottom-center .aml-tooltip .aml-tooltiptext{left:41%;-moz-transform:translateX(-50%);-webkit-transform:translateX(-50%);transform:translateX(-50%)}.aml_dk-wrap{font-size:14px!important;position:fixed;z-index:2147483647}.aml_dk-wrap.aml_dk-sb .aml_dk-flex-container>div{width:26px;height:26px}.aml_dk-flex-container{display:flex;justify-content:center}.aml_dk-flex-container>div{margin:8px;text-align:center;background-repeat:no-repeat;background-position:center center;background-size:auto;cursor:pointer;position:relative}.aml_dk-lg .aml_dk-flex-container>div{margin:3px 8px}.aml_dk-md .aml_dk-flex-container>div{margin:2px 8px}.aml_dk-sm .aml_dk-flex-container>div{margin:2px 8px}.aml_dk-desktop.aml_dk-style-default.aml_dk-bottom-right .aml_dk-flex-container>div:hover,.aml_dk-desktop.aml_dk-style-default.aml_dk-bottom-left .aml_dk-flex-container>div:hover,.aml_dk-desktop.aml_dk-style-default[class*='-middle'] .aml_dk-flex-container>div:hover,.aml_dk-desktop.aml_dk-style-default[class*='-top'] .aml_dk-flex-container>div:hover{text-decoration:none!important;box-shadow:0 5px 10px rgba(0,0,0,.15),0 4px 15px rgba(0,0,0,.13)}.aml_dk-style-horizontal.aml_dk-sm .aml_dk-flex-container>div,.aml_dk-style-horizontal-default.aml_dk-sm .aml_dk-flex-container>div{background-size:auto!important}.aml_dk-mobile.aml_dk-style-horizontal.aml_dk-sm .aml_dk-flex-container>div,.aml_dk-style-horizontal-default.aml_dk-sm .aml_dk-flex-container>div{background-size:30px!important}.aml_dk-style-default .aml_dk-flex-container{flex-direction:column}.aml_dk-style-default.aml_dk-bottom-center .aml_dk-flex-container{flex-direction:row-reverse}.aml_dk-mobile.aml_dk-style-default>.aml_dk-flex-container{justify-content:center}.aml_dk-mobile.aml_dk-style-default.aml_dk-bottom-center>.aml_dk-flex-container{padding:0 16px}.aml_dk-style-default.aml_dk-bottom-center.aml_dk-channel-1 .aml-flc-style-default,.aml_dk-style-default.aml_dk-bottom-center.aml_dk-channel-2 .aml-flc-style-default,.aml_dk-style-default.aml_dk-bottom-center.aml_dk-channel-1 .aml-flc-style-square,.aml_dk-style-default.aml_dk-bottom-center.aml_dk-channel-2 .aml-flc-style-square,.aml_dk-style-default.aml_dk-bottom-center.aml_dk-channel-1 .aml-flc-style-gradient-default,.aml_dk-style-default.aml_dk-bottom-center.aml_dk-channel-2 .aml-flc-style-gradient-default{justify-content:flex-end}.aml_dk-style-default.aml_dk-bottom-center.aml_dk-channel-3 .aml-flc-style-default{justify-content:center}.aml_dk-style-default.aml_dk-top-right{top:24px;right:0}.aml_dk-style-default.aml_dk-top-left{top:24px;left:0}.aml_dk-mobile.aml_dk-style-default.aml_dk-lg.aml_dk-top-right{top:20px;right:0}.aml_dk-mobile.aml_dk-style-default.aml_dk-lg.aml_dk-top-left{top:20px;left:0}.aml_dk-mobile.aml_dk-style-default.aml_dk-md.aml_dk-top-right{top:22px;right:0}.aml_dk-mobile.aml_dk-style-default.aml_dk-md.aml_dk-top-left{top:22px;left:0}.aml_dk-mobile.aml_dk-style-default.aml_dk-sm.aml_dk-top-right{top:24px;right:0}.aml_dk-mobile.aml_dk-style-default.aml_dk-sm.aml_dk-top-left{top:24px;left:0}.aml_dk-style-default.aml_dk-middle-right{right:0}.aml_dk-style-default.aml_dk-middle-left{left:0}.aml_dk-style-default.aml_dk-bottom-right{bottom:24px;right:0}.aml_dk-style-default.aml_dk-bottom-left{bottom:24px;left:0}.aml_dk-mobile.aml_dk-style-default.aml_dk-bottom-center{bottom:0;left:0;width:100%}.aml-powered-by{text-align:center;cursor:pointer;visibility:hidden;opacity:0;transition:visibility 2s ease,opacity .6s ease}.aml_dk-desktop.aml_dk-style-default.aml_dk-channel-1[class*='-top-']{top:38px}.aml_dk-desktop.aml_dk-style-default.aml_dk-channel-2[class*='-top-']{top:8px}.aml_dk-desktop.aml_dk-style-default.aml_dk-channel-1[class*='-bottom-']{bottom:38px}.aml_dk-desktop.aml_dk-style-default.aml_dk-channel-2[class*='-bottom-']{bottom:8px}.aml_dk-desktop.aml_dk-style-horizontal.aml_dk-channel-1[class*='-bottom-']{bottom:0}.aml_dk-desktop.aml_dk-style-horizontal.aml_dk-channel-2[class*='-bottom-']{bottom:0}.aml_dk-desktop.aml_dk-style-default[class*='-right']{padding-right:20px}.aml_dk-desktop.aml_dk-style-default[class*='-left']{padding-left:20px}.aml_dk-desktop.aml_dk-style-default .aml-pb-style-default.aml-powered-by,.aml_dk-desktop.aml_dk-style-main-button .aml-pb-style-main-button.aml-powered-by,.aml_dk-desktop.aml_dk-style-default .aml-pb-style-gradient-default.aml-powered-by,.aml_dk-desktop.aml_dk-style-square .aml-pb-style-square.aml-powered-by{color:#555!important;background:rgba(0,0,0,.1);font-size:10px;height:19px;line-height:18px;position:absolute;transform-origin:0 0;padding:1px 7px 2px 7px;border-top-right-radius:4px;border-top-left-radius:4px;letter-spacing:.3px;white-space:nowrap!important}.aml-powered-by-b{font-weight:bold!important}.aml_dk-desktop .aml-powered-by-b{font-size:10px!important}.aml_dk-desktop.aml_dk-style-default[class*='-right'] .aml-pb-style-default.aml-powered-by,.aml_dk-desktop.aml_dk-style-default[class*='-right'] .aml-pb-style-main-button.aml-powered-by,.aml_dk-desktop.aml_dk-style-default[class*='-right'] .aml-pb-style-gradient-default.aml-powered-by{top:calc(50% + 57px);right:-104px;transform:rotate(-90deg)}.aml_dk-desktop.aml_dk-style-default[class*='-left'] .aml-pb-style-default.aml-powered-by,.aml_dk-desktop.aml_dk-style-default[class*='-left'] .aml-pb-style-main-button.aml-powered-by,.aml_dk-desktop.aml_dk-style-default[class*='-left'] .aml-pb-style-gradient-default.aml-powered-by{top:calc(50% - 57px);left:20px;transform:rotate(90deg)}.aml_dk-mobile.aml_dk-style-default .aml-pb-style-default.aml-powered-by,.aml_dk-mobile.aml_dk-style-default .aml-pb-style-square.aml-powered-by,.aml_dk-mobile.aml_dk-style-default .aml-pb-style-gradient-default.aml-powered-by{color:#666!important;background:rgba(0,0,0,.1);font-size:9px!important;border-radius:2px 2px 0 0;position:absolute;line-height:16px;padding:0 5px;white-space:nowrap}.aml_dk-mobile.aml_dk-style-default[class*='-left'] .aml-pb-style-default.aml-powered-by,.aml_dk-mobile.aml_dk-style-default[class*='-right'] .aml-pb-style-default.aml-powered-by{bottom:-24px}.aml_dk-mobile.aml_dk-style-default[class*='-right'].aml_dk-lg .aml-pb-style-default.aml-powered-by{right:6px}.aml_dk-mobile.aml_dk-style-default[class*='-right'].aml_dk-md .aml-pb-style-default.aml-powered-by{right:2px}.aml_dk-mobile.aml_dk-style-default[class*='-right'].aml_dk-sm .aml-pb-style-default.aml-powered-by{right:-2px}.aml_dk-mobile.aml_dk-style-default[class*='-left'].aml_dk-lg .aml-pb-style-default.aml-powered-by{left:6px}.aml_dk-mobile.aml_dk-style-default[class*='-left'].aml_dk-md .aml-pb-style-default.aml-powered-by{left:2px}.aml_dk-mobile.aml_dk-style-default[class*='-left'].aml_dk-sm .aml-pb-style-default.aml-powered-by{left:-2px}.aml_dk-mobile.aml_dk-style-default[class*='bottom-left'],.aml_dk-mobile.aml_dk-style-default[class*='bottom-right']{bottom:24px}.aml_dk-mobile.aml_dk-style-default[class*='-center'] .aml-pb-style-default.aml-powered-by,.aml_dk-mobile.aml_dk-style-default[class*='-center'] .aml-pb-style-square.aml-powered-by,.aml_dk-mobile.aml_dk-style-default[class*='-center'] .aml-pb-style-gradient-default.aml-powered-by{transform:rotate(90deg);left:-20px}@supports (-webkit-overflow-scrolling:touch){.aml_dk-mobile.aml_dk-style-horizontal .aml_dk-flex-item span,.aml_dk-mobile.aml_dk-style-horizontal-default .aml_dk-flex-item span{bottom:10%!important}.aml_dk-mobile.aml_dk-style-horizontal-default>.aml-powered-by,.aml_dk-mobile.aml_dk-style-horizontal>.aml-powered-by,.aml_dk-mobile.aml_dk-style-gradient-vertical>.aml-powered-by{font-size:7px!important}.aml_dk-mobile.aml_dk-style-default .aml-pb-style-default.aml-powered-by,.aml_dk-mobile.aml_dk-style-gradient-default .aml-pb-style-gradient-default.aml-powered-by,.aml_dk-mobile.aml_dk-style-square .aml-pb-style-square.aml-powered-by{font-size:8px!important}}.aml-powered-by.open{visibility:visible;opacity:1}.aml_dk-style-gradient-vertical{padding:0!important}.aml_dk-style-gradient-vertical[class*='-top-']{top:32px!important}.aml_dk-desktop.aml_dk-style-gradient-vertical[class*='-bottom-']{bottom:50px!important}.aml_dk-mobile.aml_dk-style-gradient-vertical[class*='bottom']{bottom:50px}.aml_dk-style-gradient-vertical[class*='-left']{border-radius:0 10px 10px 0;left:0!important}.aml_dk-style-gradient-vertical[class*='-left'] .aml_dk-flex-container{border-radius:0 10px 10px 0;box-shadow:0 2px 7px rgba(0,0,0,0);transition:border-radius .5s ease}.aml_dk-style-gradient-vertical:hover[class*='-left'] .aml_dk-flex-container{border-radius:0 10px 0 0}.aml_dk-style-gradient-vertical[class*='-right']{border-radius:10px 0 0 10px;right:0!important}.aml_dk-style-gradient-vertical[class*='-right'] .aml_dk-flex-container{border-radius:10px 0 0 10px;box-shadow:0 2px 7px rgba(0,0,0,0)}.aml_dk-style-gradient-vertical:hover[class*='-right'] .aml_dk-flex-container{border-radius:10px 0 0 0}.aml_dk-style-gradient-vertical .aml_dk-flex-container>div{width:32px;height:32px}.aml_dk-style-gradient-vertical .aml_dk-flex-container>div:hover{box-shadow:0 1px rgba(255,255,255,.16)!important}.aml_dk-style-gradient-vertical .aml_dk-flex-item{margin:0!important;border-bottom:1px solid rgba(0,0,0,.1);box-shadow:0 1px rgba(255,255,255,.16)}.aml_dk-style-gradient-vertical .aml_dk-flex-item:last-child{border-bottom:1px solid rgba(0,0,0,0);box-shadow:none;transition:border-bottom .5s ease,box-shadow .5s ease}.aml_dk-style-gradient-vertical:hover .aml_dk-flex-item:last-child{border-bottom:1px solid rgba(0,0,0,.1);box-shadow:0 1px rgba(255,255,255,.16)!important}.aml_dk-style-gradient-vertical .aml_dk-channel-facebook{background-image:url(/images/Messenger_On.svg)}.aml_dk-style-gradient-vertical .aml_dk-channel-zalo{background-image:url(/images/Zalo_On.svg)}.aml_dk-style-gradient-vertical .aml_dk-channel-click_to_call{background-image:url(/images/Call_On.svg)}.aml_dk-style-gradient-vertical .aml_dk-channel-google_map{background-image:url(/images/Location.svg)}.aml_dk-style-gradient-vertical.dark .aml_dk-channel-facebook{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_icon_dark_messenger.svg)}.aml_dk-style-gradient-vertical.dark .aml_dk-channel-zalo{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_icon_dark_zalo.svg)}.aml_dk-style-gradient-vertical.dark .aml_dk-channel-click_to_call{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_icon_dark_click_to_call.svg)}.aml_dk-style-gradient-vertical.dark .aml_dk-channel-google_map{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_icon_dark_map.svg)}.aml_dk-style-gradient-vertical .aml-pb-style-gradient-vertical.aml-powered-by{position:absolute;bottom:0;z-index:-1;width:100%;height:18px;padding:4px 0;font-size:8px;color:rgba(230,221,216,.8)!important;line-height:10px;visibility:visible;opacity:1;transition:bottom .5s ease}.aml_dk-style-gradient-vertical:hover .aml-pb-style-gradient-vertical.aml-powered-by{bottom:-18px}.aml_dk-style-gradient-vertical.dark .aml-pb-style-gradient-vertical.aml-powered-by{color:#333!important}.aml_dk-style-default[class*='-left'] .aml-pb-style-gradient-vertical.aml-powered-by{left:0;border-radius:0 0 10px 0}.aml_dk-style-default[class*='-right'] .aml-pb-style-gradient-vertical.aml-powered-by{right:0!important;border-radius:0 0 0 10px}.aml_dk-desktop.aml_dk-style-square{padding:0!important}.aml_dk-style-square .aml_dk-channel-facebook{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_icon_messenger_square.svg)}.aml_dk-style-square .aml_dk-channel-zalo{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_icon_zalo_square.svg)}.aml_dk-style-square .aml_dk-channel-click_to_call{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_icon_click_to_call_square.svg)}.aml_dk-style-square .aml_dk-channel-tawk_to{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_icon_tawkto_square.svg)}.aml_dk-style-square .aml_dk-channel-contact_form{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_icon_contact_form_square.svg)}.aml_dk-style-square .aml_dk-channel-google_map{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_icon_map_square.svg)}.aml_dk-style-square .aml_dk-channel-whatsapp{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_icon_whatsapp_square.svg)}.aml_dk-style-square .aml_dk-channel-download_doc{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_icon_download_doc_square.svg)}.aml_dk-style-square .aml_dk-channel-promotion{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_icon_promotion_square.svg)}.aml_dk-desktop.aml_dk-style-square .aml_dk-channel-facebook .aml-text-content{background-image:linear-gradient(0deg,#1d77e2 1.46%,#2cb7ff 99.03%)}.aml_dk-desktop.aml_dk-style-square .aml_dk-channel-zalo .aml-text-content{background-image:linear-gradient(180deg,#3a8bff 0%,#035ada 100%)}.aml_dk-desktop.aml_dk-style-square .aml_dk-channel-click_to_call .aml-text-content{background-image:linear-gradient(179.83deg,#8ad336 .15%,#509600 92.02%)}.aml_dk-desktop.aml_dk-style-square .aml_dk-channel-tawk_to .aml-text-content{background-image:linear-gradient(180deg,#08ca60 0%,#007e39 100%)}.aml_dk-desktop.aml_dk-style-square .aml_dk-channel-contact_form .aml-text-content{background-image:linear-gradient(180deg,#ffc044 0%,#ef9f00 100%)}.aml_dk-desktop.aml_dk-style-square .aml_dk-channel-google_map .aml-text-content{background-image:linear-gradient(180deg,#07d8f8 0%,#00a0d2 100%)}.aml_dk-desktop.aml_dk-style-square .aml_dk-channel-whatsapp .aml-text-content{background-image:linear-gradient(180deg,#24ea6e 0%,#088e3a 100%)}.aml_dk-desktop.aml_dk-style-square .aml_dk-channel-download_doc .aml-text-content{background-image:linear-gradient(180deg,#5930ff 0%,#585fec .01%,#2a32e1 100%)}.aml_dk-desktop.aml_dk-style-square .aml_dk-channel-promotion .aml-text-content{background-image:linear-gradient(4.15deg,#f71f01 18.44%,#ff9c05 85.14%)}.aml_dk-desktop.aml_dk-style-square .aml_dk-flex-container>div:hover{box-shadow:initial!important}.aml_dk-desktop.aml_dk-style-square[class*='-left'] .aml_dk-flex-container>div{right:0;transition:right .5s ease}.aml_dk-desktop.aml_dk-style-square[class*='-right'] .aml_dk-flex-container>div{left:0;transition:left .5s ease}.aml_dk-desktop.aml_dk-style-square .aml-text-content{position:absolute;white-space:nowrap;color:#fff;padding:0 8px}.aml_dk-desktop.aml_dk-style-square[class*='-left'] .aml-text-content{text-align:left}.aml_dk-desktop.aml_dk-style-square[class*='-right'] .aml-text-content{text-align:right}.aml_dk-desktop.aml_dk-style-square .aml-powered-by{bottom:-18px;padding:1px 3px!important;font-size:9px!important}.aml_dk-desktop.aml_dk-style-square[class*='-left'] .aml-powered-by{left:3px;border-radius:0 4px 4px 0!important}.aml_dk-desktop.aml_dk-style-square[class*='-right'] .aml-powered-by{right:3px;border-radius:4px 0 0 4px!important}.aml_dk-desktop.aml_dk-style-square[class*='-bottom-']{bottom:24px!important}.aml_dk-desktop.aml_dk-style-square[class*='-top-']{top:24px!important}.aml_dk-mobile.aml_dk-style-square .aml_dk-channel-facebook{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_m_icon_messenger_square.svg)}.aml_dk-mobile.aml_dk-style-square .aml_dk-channel-zalo{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_m_icon_zalo_square.svg)}.aml_dk-mobile.aml_dk-style-square .aml_dk-channel-click_to_call{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_m_icon_click_to_call_square.svg)}.aml_dk-mobile.aml_dk-style-square .aml_dk-channel-tawk_to{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_m_icon_tawkto_square.svg)}.aml_dk-mobile.aml_dk-style-square .aml_dk-channel-contact_form{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_m_icon_contact_form_square.svg)}.aml_dk-mobile.aml_dk-style-square .aml_dk-channel-google_map{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_m_icon_map_square.svg)}.aml_dk-mobile.aml_dk-style-square .aml_dk-channel-whatsapp{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_m_icon_whatsapp_square.svg)}.aml_dk-mobile.aml_dk-style-square .aml_dk-channel-download_doc{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_m_icon_download_doc_square.svg)}.aml_dk-mobile.aml_dk-style-square .aml_dk-channel-promotion{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_m_icon_promotion_square.svg)}.aml_dk-mobile.aml_dk-style-horizontal-default .aml_dk-flex-container>div,.aml_dk-mobile.aml_dk-style-horizontal .aml_dk-flex-container>div{background-position:center 28%}.aml_dk-mobile.aml_dk-style-horizontal .aml_dk-flex-item span,.aml_dk-mobile.aml_dk-style-horizontal-default .aml_dk-flex-item span{width:100%;position:absolute;left:0;bottom:12%;white-space:nowrap;line-height:normal!important}.aml_dk-mobile.aml_dk-style-horizontal .aml_dk-flex-item span{color:#fff}.aml_dk-mobile.aml_dk-style-horizontal.dark .aml_dk-flex-item span{color:#333!important}.aml_dk-desktop.aml_dk-style-horizontal .aml_dk-flex-item span:first-child{font-size:12px;line-height:48px;padding:0 16px 0 32px;white-space:nowrap}.aml_dk-desktop.aml_dk-style-horizontal .aml_dk-flex-container{height:48px}.aml_dk-style-horizontal .aml_dk-channel-facebook{background-image:url(../../../plugins/Simple-Contact/assets/images/Messenger_On.svg)}.aml_dk-style-horizontal .aml_dk-channel-zalo{background-image:url(../../../plugins/Simple-Contact/assets/images/Zalo_On.svg)}.aml_dk-style-horizontal .aml_dk-channel-click_to_call{background-image:url(../../../plugins/Simple-Contact/assets/images/Call_On.svg)}.aml_dk-style-horizontal .aml_dk-channel-tawk_to{background-image:url(../../../plugins/Simple-Contact/assets/images/ht_tawkto.svg)}.aml_dk-style-horizontal .aml_dk-channel-contact_form{background-image:url(../../../plugins/Simple-Contact/assets/images/ht_contact_form.svg)}.aml_dk-style-horizontal .aml_dk-channel-google_map{background-image:url(../../../plugins/Simple-Contact/assets/images/Location.svg)}.aml_dk-style-horizontal .aml_dk-channel-whatsapp{background-image:url(../../../plugins/Simple-Contact/assets/images/ht_whatsapp.svg)}.aml_dk-style-horizontal .aml_dk-channel-download_doc{background-image:url(../../../plugins/Simple-Contact/assets/images/ht_download_doc.svg)}.aml_dk-style-horizontal .aml_dk-channel-promotion{background-image:url(../../../plugins/Simple-Contact/assets/images/widget_m_icon_light_promotion.svg)}.aml_dk-style-horizontal.dark .aml_dk-channel-facebook{background-image:url(../../../plugins/Simple-Contact/assets/images/widget_icon_dark_messenger.svg)}.aml_dk-style-horizontal.dark .aml_dk-channel-zalo{background-image:url(../../../plugins/Simple-Contact/assets/images/widget_icon_dark_zalo.svg)}.aml_dk-style-horizontal.dark .aml_dk-channel-click_to_call{background-image:url(../../../plugins/Simple-Contact/assets/images/widget_icon_dark_click_to_call.svg)}.aml_dk-style-horizontal.dark .aml_dk-channel-tawk_to{background-image:url(../../../plugins/Simple-Contact/assets/images/widget_icon_dark_tawkto.svg)}.aml_dk-style-horizontal.dark .aml_dk-channel-contact_form{background-image:url(../../../plugins/Simple-Contact/assets/images/widget_icon_dark_contact_form.svg)}.aml_dk-style-horizontal.dark .aml_dk-channel-google_map{background-image:url(../../../plugins/Simple-Contact/assets/images/widget_icon_dark_map.svg)}.aml_dk-style-horizontal.dark .aml_dk-channel-whatsapp{background-image:url(../../../plugins/Simple-Contact/assets/images/widget_icon_dark_whatsapp.svg)}.aml_dk-style-horizontal.dark .aml_dk-channel-download_doc{background-image:url(../../../plugins/Simple-Contact/assets/images/widget_icon_dark_download_doc.svg)}.aml_dk-style-horizontal{bottom:0;left:0!important;width:100%}.aml_dk-mobile.aml_dk-style-horizontal-default .aml-powered-by,.aml_dk-mobile.aml_dk-style-horizontal.dark>.aml-powered-by{color:rgba(108,115,141,.72)!important}.aml_dk-desktop.aml_dk-style-horizontal>.aml_dk-flex-container{background-color:#0974f6}.aml_dk-desktop.aml_dk-style-horizontal>.aml_dk-flex-container>.aml-text-content{font-size:14px;line-height:1.2em;text-align:center;display:-webkit-box;-webkit-line-clamp:2;overflow:hidden;max-height:24px;color:#fff;padding-left:48px;vertical-align:middle}.aml_dk-desktop.aml_dk-style-horizontal>.aml_dk-flex-container{display:flex;justify-content:center}.aml_dk-desktop.aml_dk-style-horizontal>.aml_dk-flex-container>div{background-position:0 center;background-size:24px!important;width:auto;min-width:100px;height:48px;color:#fff;margin:0 8px!important}.aml_dk-desktop.aml_dk-style-horizontal>.aml_dk-flex-container>.aml_dk-flex-item:not(:first-of-type){border-right:1px solid rgba(0,0,0,.16);box-shadow:1px 0 0 0 hsla(0,0%,100%,.1)}.aml_dk-desktop.aml_dk-style-horizontal.dark>.aml_dk-flex-container>div{color:#333!important}.aml_dk-desktop.aml_dk-style-horizontal .aml-powered-by{position:fixed;right:4px;bottom:52px;font-style:normal;font-weight:400;font-size:11px;line-height:14px}.aml_dk-mobile.aml_dk-style-horizontal-default,.aml_dk-mobile.aml_dk-style-horizontal{bottom:0;width:100%;box-shadow:0 -4px 8px rgba(29,36,62,.2)}.aml_dk-mobile.aml_dk-style-horizontal-default{background-color:#fff}.aml_dk-mobile.aml_dk-style-horizontal-default .aml_dk-flex-item span{color:#6c738d}.aml_dk-mobile.aml_dk-style-horizontal-default>.aml-powered-by,.aml_dk-mobile.aml_dk-style-horizontal>.aml-powered-by{position:absolute;right:-19px!important;height:16px;padding:0 5px;font-size:8px;line-height:16px!important;transform:rotate(-90deg)}.aml_dk-mobile.aml_dk-style-horizontal>.aml-powered-by{color:#d8dde6!important}.aml_dk-style-horizontal-default .aml_dk-channel-facebook{background-image:url(../../../plugins/Simple-Contact/assets/images/widget_m_icon_messenger.svg)}.aml_dk-style-horizontal-default .aml_dk-channel-zalo{background-image:url(../../../plugins/Simple-Contact/assets/images/widget_m_icon_zalo.svg)}.aml_dk-style-horizontal-default .aml_dk-channel-click_to_call{background-image:url(../../../plugins/Simple-Contact/assets/images/widget_m_icon_click_to_call.svg)}.aml_dk-style-horizontal-default .aml_dk-channel-tawk_to{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_m_icon_tawkto.svg)}.aml_dk-style-horizontal-default .aml_dk-channel-contact_form{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_m_icon_contact_form.svg)}.aml_dk-style-horizontal-default .aml_dk-channel-google_map{background-image:url(../../../plugins/Simple-Contact/assets/images/widget_m_icon_map.svg)}.aml_dk-style-horizontal-default .aml_dk-channel-whatsapp{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_m_icon_whatsapp.svg)}.aml_dk-style-horizontal-default .aml_dk-channel-download_doc{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_m_icon_download_doc.svg)}.aml_dk-style-horizontal-default .aml_dk-channel-promotion{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_m_icon_promotion.svg)}.aml_dk-main-button{position:absolute;cursor:pointer}.aml_dk-desktop.aml_dk-style-main-button .aml_dk-main-button{position:fixed;width:70px;height:70px}.aml_dk-mobile.aml_dk-style-main-button .aml_dk-main-button{width:56px;height:56px}.aml_dk-style-main-button .aml_dk-main-button{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;background-color:#fff;border-radius:50%;box-shadow:0 4px 8px rgba(0,0,0,.15);animation:pulse 2s infinite}.aml_dk-desktop.aml_dk-style-main-button .aml_dk-main-button{border:8px solid}.aml_dk-mobile.aml_dk-style-main-button .aml_dk-main-button{border:6px solid}.aml_dk-main-button-icon{position:absolute;top:0;left:0;transition:.2s all}.aml_dk-main-button.aml_dk-background-color-main-button-contact-us-desktop,.aml_dk-main-button.aml_dk-background-color-main-button-contact-us-mobile{border:2px solid #fff!important}.aml_dk-icons-line{display:flex;transition:.2s all}.aml_dk-main-button svg path{fill:currentColor!important}.aml_dk-desktop .aml_dk-main-button span svg{width:32px;height:32px;margin:11px}.aml_dk-mobile .aml_dk-main-button span svg{width:28px;height:28px;margin:8px}.aml_dk-style-main-button.open .aml_dk-flex-container{display:flex}.aml_dk-style-main-button.open[class*='-top'] .aml_dk-flex-container{flex-direction:column}.aml_dk-style-main-button.open .aml_dk-main-button,.aml_dk-style-main-button.open .aml_dk-hightlight{display:none}.aml_dk-style-main-button.aml-hide .aml_dk-flex-container{display:none}.aml_dk-style-main-button.aml-hide{display:block!important}.aml_dk-style-main-button.aml-hide .aml_dk-main-button,.aml_dk-style-main-button.aml-hide .aml_dk-hightlight{display:block}.aml_dk-mobile.aml_dk-style-main-button.open .aml-powered-by,.aml_dk-style-main-button.aml-hide .aml-powered-by{visibility:visible;opacity:1;display:unset}.aml_dk-style-main-button.aml-hide .aml-powered-by{display:none}.aml_dk-desktop.aml_dk-style-main-button[class*='-bottom']{bottom:16px!important}.aml_dk-style-main-button[class*='-middle']{margin-top:unset!important;top:calc(50% - 35px)}.aml_dk-style-main-button[class*='-top']{top:16px}.aml_dk-desktop.aml_dk-style-main-button.open[class*='-middle']{top:50%}.aml_dk-desktop.aml_dk-style-main-button.open[class*='-middle'].aml_dk-lg.aml_dk-channel-1{margin-top:-128px!important}.aml_dk-desktop.aml_dk-style-main-button.open[class*='-middle'].aml_dk-lg.aml_dk-channel-2{margin-top:-192px!important}.aml_dk-desktop.aml_dk-style-main-button.open[class*='-middle'].aml_dk-lg.aml_dk-channel-3{margin-top:-256px!important}.aml_dk-desktop.aml_dk-style-main-button.open[class*='-middle'].aml_dk-lg.aml_dk-channel-4{margin-top:-320px!important}.aml_dk-desktop.aml_dk-style-main-button.open[class*='-middle'].aml_dk-lg.aml_dk-channel-5{margin-top:-384px!important}.aml_dk-desktop.aml_dk-style-main-button.open[class*='-middle'].aml_dk-md.aml_dk-channel-1{margin-top:-85px!important}.aml_dk-desktop.aml_dk-style-main-button.open[class*='-middle'].aml_dk-md.aml_dk-channel-2{margin-top:-145px!important}.aml_dk-desktop.aml_dk-style-main-button.open[class*='-middle'].aml_dk-md.aml_dk-channel-3{margin-top:-205px!important}.aml_dk-desktop.aml_dk-style-main-button.open[class*='-middle'].aml_dk-md.aml_dk-channel-4{margin-top:-265px!important}.aml_dk-desktop.aml_dk-style-main-button.open[class*='-middle'].aml_dk-md.aml_dk-channel-5{margin-top:-325px!important}.aml_dk-desktop.aml_dk-style-main-button.open[class*='-middle'].aml_dk-sm.aml_dk-channel-1{margin-top:-112px!important}.aml_dk-desktop.aml_dk-style-main-button.open[class*='-middle'].aml_dk-sm.aml_dk-channel-2{margin-top:-168px!important}.aml_dk-desktop.aml_dk-style-main-button.open[class*='-middle'].aml_dk-sm.aml_dk-channel-3{margin-top:-224px!important}.aml_dk-desktop.aml_dk-style-main-button.open[class*='-middle'].aml_dk-sm.aml_dk-channel-4{margin-top:-280px!important}.aml_dk-desktop.aml_dk-style-main-button.open[class*='-middle'].aml_dk-sm.aml_dk-channel-5{margin-top:-336px!important}@media only screen and (max-height:650px){.aml_dk-desktop.aml_dk-style-main-button[class*='-middle'].aml_dk-lg.aml_dk-channel-5,.aml_dk-desktop.aml_dk-style-main-button[class*='-middle'].aml_dk-md.aml_dk-channel-5,.aml_dk-desktop.aml_dk-style-main-button[class*='-middle'].aml_dk-sm.aml_dk-channel-5{top:calc(50% + 35px)!important}.aml_dk-desktop.aml_dk-style-main-button[class*='-middle'].aml_dk-lg.aml_dk-channel-4,.aml_dk-desktop.aml_dk-style-main-button[class*='-middle'].aml_dk-md.aml_dk-channel-4,.aml_dk-desktop.aml_dk-style-main-button[class*='-middle'].aml_dk-sm.aml_dk-channel-4{top:calc(50% + 105px)!important}.aml_dk-desktop.aml_dk-style-main-button.open[class*='-middle'].aml_dk-lg.aml_dk-channel-5,.aml_dk-desktop.aml_dk-style-main-button.open[class*='-middle'].aml_dk-md.aml_dk-channel-5,.aml_dk-desktop.aml_dk-style-main-button.open[class*='-middle'].aml_dk-sm.aml_dk-channel-5{margin-top:-295px!important}.aml_dk-desktop.aml_dk-style-main-button.open[class*='-middle'].aml_dk-lg.aml_dk-channel-4,.aml_dk-desktop.aml_dk-style-main-button.open[class*='-middle'].aml_dk-md.aml_dk-channel-4,.aml_dk-desktop.aml_dk-style-main-button.open[class*='-middle'].aml_dk-sm.aml_dk-channel-4{margin-top:-235px!important}}.aml_dk-mobile.aml_dk-style-main-button{width:56px;height:56px;cursor:pointer}.aml_dk-mobile.aml_dk-style-main-button.aml-hide2{display:none!important}.aml_dk-mobile.aml_dk-style-main-button.aml-hide[class*='-right']{right:16px}.aml_dk-mobile.aml_dk-style-main-button.aml-hide[class*='-left']{left:16px}.aml_dk-mobile.aml_dk-style-main-button[class*='-bottom']{bottom:16px}.aml_dk-mobile.aml_dk-style-main-button .aml_dk-flex-container{flex-direction:column;position:fixed;bottom:0;left:0;width:calc(100% - 16px);margin:8px;background-color:#f5f6fa!important;box-shadow:0 4px 20px rgba(0,0,0,.2);border-radius:12px}.aml_dk-mobile.aml_dk-style-main-button .aml_dk-flex-container>div{display:table;width:100%;margin:0;padding:2px 16px 2px 66px;background-size:30px;background-position:16px center;text-align:left;color:#1d243e!important}.aml_dk-mobile.aml_dk-style-main-button .aml_dk-flex-container>div:not(:last-of-type){border-bottom:1px solid #ecedf1;box-shadow:0 1px 0 0 #fff}.aml_dk-mobile.aml_dk-style-main-button .aml_dk-flex-container>div>p{margin:10px 0!important}.aml_dk-mobile.aml_dk-style-main-button .aml_dk-flex-container div:first-child{margin-top:8px;height:auto;z-index:1}.aml_dk-mobile.aml_dk-style-main-button .aml_dk-flex-container div:first-child p{padding-right:16px}.aml_dk-mobile.aml_dk-style-main-button .aml_dk-flex-container div:nth-last-child(2){margin-bottom:16px!important;border-bottom:none!important}.aml_dk-mobile.aml_dk-style-main-button .aml_dk-main-button-close{position:absolute;top:0;right:0;padding:8px;z-index:2}.aml_dk-mobile.aml_dk-style-main-button .aml_dk-channel-facebook{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_m_icon_messenger.svg)}.aml_dk-mobile.aml_dk-style-main-button .aml_dk-channel-zalo{background-image:url(../../../plugins/Simple-Contact/assets/images/widget_m_icon_zalo.svg)}.aml_dk-mobile.aml_dk-style-main-button .aml_dk-channel-click_to_call{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_m_icon_click_to_call.svg)}.aml_dk-mobile.aml_dk-style-main-button .aml_dk-channel-tawk_to{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_m_icon_tawkto.svg)}.aml_dk-mobile.aml_dk-style-main-button .aml_dk-channel-contact_form{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_m_icon_contact_form.svg)}.aml_dk-mobile.aml_dk-style-main-button .aml_dk-channel-google_map{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_m_icon_map.svg)}.aml_dk-mobile.aml_dk-style-main-button .aml_dk-channel-whatsapp{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_m_icon_whatsapp.svg)}.aml_dk-mobile.aml_dk-style-main-button .aml_dk-channel-download_doc{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_m_icon_download_doc.svg)}.aml_dk-mobile.aml_dk-style-main-button .aml_dk-channel-promotion{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_m_icon_promotion.svg)}.aml_dk-mobile.aml_dk-style-main-button .aml-powered-by{color:#aeb4c5!important;z-index:2;position:fixed;bottom:12px;right:20px;font-size:9px}.aml-moveable{position:fixed!important}.aml_dk-hightlight{z-index:-1;position:fixed;height:48px;font-weight:600;font-size:16px;line-height:18px;color:#fff;cursor:pointer;white-space:nowrap}.aml_dk-desktop[class*='-right'] .aml_dk-hightlight{padding:14px 51px 14px 23px;border-radius:24px 0 0 24px}.aml_dk-desktop[class*='-left'] .aml_dk-hightlight{padding:14px 23px 14px 51px;border-radius:0 24px 24px 0}@media only screen and (min-device-width:375px) and (min-device-height:812px) and (-webkit-device-pixel-ratio:3) and (orientation:portrait),only screen and (device-width:414px) and (device-height:896px) and (-webkit-device-pixel-ratio:2) and (orientation:portrait),only screen and (device-width:414px) and (device-height:896px) and (-webkit-device-pixel-ratio:3) and (orientation:portrait){.aml_dk-mobile.aml_dk-style-horizontal-default>.aml-powered-by,.aml_dk-mobile.aml_dk-style-horizontal>.aml-powered-by{top:19px!important}.aml_dk-mobile.aml_dk-style-default.aml_dk-bottom-center.aml_dk-lg{bottom:10px}.aml_dk-mobile.aml_dk-style-default[class*='-left'].aml_dk-sm{left:8px}.aml_dk-mobile.aml_dk-style-default[class*='-right'].aml_dk-sm{right:8px}.aml_dk-mobile.aml_dk-style-default[class*='-left'].aml_dk-md{left:8px}.aml_dk-mobile.aml_dk-style-default[class*='-right'].aml_dk-md{right:8px}.aml_dk-mobile.aml_dk-style-default[class*='-left'].aml_dk-lg{left:8px}.aml_dk-mobile.aml_dk-style-default[class*='-right'].aml_dk-lg{right:8px}.aml_dk-mobile.aml_dk-style-main-button .aml-powered-by{right:20px!important}.aml_dk-mobile.aml_dk-style-main-button .aml_dk-flex-container{margin-bottom:19px!important}.aml_dk-mobile.aml_dk-style-main-button .aml-powered-by{bottom:23px!important}}.aml_dk-mobile.aml_dk-style-gradient-default .aml_dk-flex-container>div{border-radius:50%!important}.aml_dk-style-gradient-default [class*='aml_dk-channel-']{height:100%;background-repeat:no-repeat;background-position:center}.aml_dk-style-gradient-default .aml_dk-channel-facebook{background-image:url(../../../plugins/Simple-Contact/assets/images/Messenger_On.svg)}.aml_dk-style-gradient-default .aml_dk-channel-zalo{background-image:url(../../../plugins/Simple-Contact/assets/images/Zalo_On.svg)}.aml_dk-style-gradient-default .aml_dk-channel-click_to_call{background-image:url(../../../plugins/Simple-Contact/assets/images/Call_On.svg)}.aml_dk-style-gradient-default .aml_dk-channel-tawk_to{background-image:url(../../../plugins/Simple-Contact/assets/images/ht_tawkto.svg)}.aml_dk-style-gradient-default .aml_dk-channel-contact_form{background-image:url(../../../plugins/Simple-Contact/assets/images/ht_contact_form.svg)}.aml_dk-style-gradient-default .aml_dk-channel-google_map{background-image:url(../../../plugins/Simple-Contact/assets/images/Location.svg)}.aml_dk-style-gradient-default .aml_dk-channel-whatsapp{background-image:url(../../../plugins/Simple-Contact/assets/css/images/ht_whatsapp.svg)}.aml_dk-style-gradient-default .aml_dk-channel-download_doc{background-image:url(../../../plugins/Simple-Contact/assets/css/images/ht_download_doc.svg)}.aml_dk-style-gradient-default .aml_dk-channel-promotion{background-image:url(../../../plugins/Simple-Contact/assets/css/images/ht_promotion.svg)}.aml_dk-style-gradient-default.dark .aml_dk-channel-facebook{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_icon_dark_messenger.svg)}.aml_dk-style-gradient-default.dark .aml_dk-channel-zalo{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_icon_dark_zalo.svg)}.aml_dk-style-gradient-default.dark .aml_dk-channel-click_to_call{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_icon_dark_click_to_call.svg)}.aml_dk-style-gradient-default.dark .aml_dk-channel-tawk_to{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_icon_dark_tawkto.svg)}.aml_dk-style-gradient-default.dark .aml_dk-channel-contact_form{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_icon_dark_contact_form.svg)}.aml_dk-style-gradient-default.dark .aml_dk-channel-google_map{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_icon_dark_map.svg)}.aml_dk-style-gradient-default.dark .aml_dk-channel-whatsapp{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_icon_dark_whatsapp.svg)}.aml_dk-style-gradient-default.dark .aml_dk-channel-download_doc{background-image:url(../../../plugins/Simple-Contact/assets/css/images/widget_icon_dark_download_doc.svg)}.aml_dk-flex-item svg{fill:#fff}.aml_pb-bottom-right{bottom:16px;right:20px}.aml_pb-bottom-left{bottom:16px;left:20px}.aml_pb-bottom-right.mobile{right:16px;bottom:16px}.aml_pb-bottom-left.mobile{bottom:16px;left:16px}.aml_pb-bottom-left.aml-tooltip .aml-tooltiptext{left:116%!important;right:unset!important}.aml_pb-bottom-right.aml-tooltip .aml-tooltiptext{right:116%!important;left:unset!important}.aml_pb-bottom-left.aml-tooltip .aml-tooltiptext::after{right:100%}.aml_pb-bottom-right.aml-tooltip .aml-tooltiptext::after{left:100%}.iframe-layout{overflow-y:hidden}#promotion-frame{border-radius:8px;box-shadow:0 8px 32px rgba(108,115,141,.12)!important;position:fixed;display:block;width:360px;height:0;display:flex}#promotion-frame.mobile{position:fixed;width:100%;box-shadow:none;padding:0 6px}#iframe_promotion{width:100%;border-width:0;border-radius:8px;z-index:1000000;max-height:100%;height:100%}#autoAdsMaxLead_widget_promotion_popup{display:none}#autoAdsMaxLead_widget_promotion_popup.mobile{background-color:rgba(0,0,0,.4);width:100%;height:100%;position:fixed;left:0;top:0}#promotion-frame.mobile.horizontal{position:absolute;height:100%}.promotion-desktop-preview #promotion-frame{max-height:80vh!important}.promotion-mobile-preview.mobile #promotion-frame{max-width:calc(100vw - 13px)}#aml_pb_wrap:hover{cursor:pointer}.ring-animation{-webkit-animation:ring .6s 0s ease-out infinite;-moz-animation:ring .6s 0s ease-out infinite;-o-animation:ring .6s 0s ease-out infinite;animation:ring .6s 0s ease-out infinite}@keyframes ring{0%{transform:rotate(0) scale(1) skew(1deg)}20%{transform:rotate(25deg) scale(1) skew(1deg)}30%{transform:rotate(-25deg) scale(1) skew(1deg)}40%{transform:rotate(25deg) scale(1) skew(1deg)}50%{transform:rotate(0) scale(1) skew(1deg)}100%{transform:rotate(0) scale(1) skew(1deg)}}#aml_pb_wrap .call-trap-box.call-trap{position:absolute;top:14px;left:14px;border-radius:100%;width:32px;height:32px}.aml-highlight-item{background:linear-gradient(360deg,#e5ebef 0%,#eef2f5 50.52%,#fefefe 100%);box-shadow:0 16px 19px rgba(186,189,212,.2),inset 0 -1px 1px rgba(0,0,0,.25);border-radius:88px;width:auto;height:auto}.aml-highlight-item .aml-icon-box{width:60px;height:60px;border-radius:100%;display:inline-flex;align-items:center;justify-content:center}.aml-highlight-item .aml-icon-box .icon{width:60px;height:60px}.aml-highlight-item .icon{background-size:cover}.aml-highlight-item .text{line-height:43px;white-space:nowrap}.aml-highlight-item .text.aml-right{float:left!important;margin:4px 4px 0 16px;width:auto!important}.aml-highlight-item .aml-icon-box.aml-right{float:left!important;margin:4px}.aml-highlight-item .text.aml-left{float:right!important;margin:4px 16px 0 4px;width:auto!important}.aml-highlight-item .aml-icon-box.aml-left{float:right!important;margin:4px}.aml-text-transform-uppercase{text-transform:uppercase!important}.aml-overflow-hidden{overflow:hidden!important}#call-modal{position:fixed;max-height:576px;bottom:16px;width:300px;box-shadow:0 0 15px rgba(90,80,108,.2)!important;border-radius:16px}#call-modal:not(.mobile) #wrap-call.preview{max-height:500px}#call-modal.left{left:16px}#call-modal.right{right:16px}#call-modal.mobile{width:100%;height:100%;max-height:100%;bottom:0;border-radius:0!important;background-color:rgba(0,0,0,.4)}#iframe-call{height:100%;width:100%;border-radius:16px!important}#wrap-call.mobile{position:fixed;width:100%;padding:0 6px}#wrap-call.horizontal{height:100%!important;bottom:0;padding:0}.aml-notification-count-badge{width:24px;height:24px;background:linear-gradient(157.23deg,#e73604 8.86%,#f03400 38.81%,#bc2602 82.43%,#b72401 90.69%);border-radius:50%;position:absolute;z-index:10000;color:#fff;text-align:center;font-size:14px;line-height:24px;font-weight:700}.aml-banner-popup{display:none;position:fixed!important;top:50%;left:50%;transform:translate(-50%,-50%);-webkit-transform:translate(-50%,-50%);box-shadow:0 8px 32px rgba(108,115,141,.12)!important;padding:0!important;margin:0}.aml-banner-popup.mobile{max-width:100%;width:100%;height:100vh}.aml-banner-popup.mobile.horizontal:not(.banner-nine){height:100vh!important}.aml-banner-popup.mobile.banner-nine{max-width:none;height:auto}.aml-banner-popup.mobile.banner-nine.horizontal{width:auto}.aml-banner-popup.mobile.no-center{top:0;left:0;bottom:0;transform:translate(0,0);-webkit-transform:translate(0,0)}.aml-banner-popup.mobile.horizontal.horizontal-center{width:80%;top:50%;left:50%;transform:translate(-50%,-50%);-webkit-transform:translate(-50%,-50%)}.aml-banner-frame,.aml-contact_form-frame{width:100%;height:100%;position:relative;border:none;display:block}.aml-banner-popup.banner-three.desktop .aml-banner-frame{border:1px solid #dadada;border-radius:20px}.aml-contact_form-frame{border-radius:6px}.aml-banner-popup .aml-banner-close{position:absolute;width:48px;height:48px;top:0;right:0;z-index:2;display:flex;justify-content:center;align-items:center;cursor:pointer}.aml-banner-popup.mobile .aml-banner-close{width:48px;height:48px}.aml-banner-popup .aml-btn-close{width:24px;height:24px;background:url(../../../plugins/Simple-Contact/assets/css/images/banner_close.svg) no-repeat center center;background-color:#0006;border-radius:4px}.aml-banner-popup .aml-banner-power-by,.aml-contact_form-popup .aml-contact_form-power-by{position:absolute;width:114px;height:19px;background:#000;opacity:.5;border-radius:2px;color:#8f8f8f;font-size:10px;line-height:13px;display:flex;justify-content:center;align-items:center;bottom:-24px;left:50%;transform:translate(-50%)}.aml-contact_form-popup .aml-contact_form-power-by{color:#e6e6e6}.aml-banner-popup.desktop .aml-banner-power-by:hover,.aml-contact_form-popup.aml-pu-desktop .aml-contact_form-power-by{cursor:pointer}.aml-banner-popup.mobile .aml-banner-power-by,.aml-contact_form-popup.aml-pu-mobile .aml-contact_form-power-by{color:#8c8c8c}.aml-color-73{color:#737373!important}.aml-banner-popup.mobile.no-center .aml-banner-power-by{bottom:4px!important;background:none!important}.aml-banner-popup.mobile.no-center.banner-three .aml-banner-power-by{background:#000!important}.aml-banner-popup.mobile .aml-banner-power-by.horizontal{bottom:4px!important;background:none!important}.aml-banner-popup.mobile .aml-banner-power-by:not(.horizontal){color:#8c8c8c}.aml-banner-popup .aml-banner-power-by.horizontal.left{left:25%!important}.aml-banner-popup .aml-banner-power-by.horizontal.right{left:100%!important;transform:translate(-100%)!important}.aml-banner-popup .banner-nine-img{width:500px}.aml_dk-style-default.aml_dk-bottom-left .zalo-chat-widget{bottom:17px!important;right:auto!important;left:17px!important}.aml-banner-popup.mobile .banner-nine-img{width:100vw}.aml-banner-popup.mobile.horizontal .banner-nine-img{height:100vh;max-width:unset!important;width:auto;margin:auto}.aml-banner-rounded{border-radius:12px}.aml-banner-no-rounded{border-radius:unset}@media(min-width:980px){.aml-banner-popup.desktop{width:512px!important}}@media(min-width:1396px){.aml-banner-popup.desktop{width:600px!important}}@media(min-width:1876px){.aml-banner-popup.desktop{width:720px!important}}.aml-loading-div{z-index:2}.aml-fb-customerchat-close{z-index:2147483647!important;width:60px!important;height:60px!important;position:fixed!important;background-image:url(../../../plugins/Simple-Contact/assets/css/images/fb_icon_close.svg)!important;background-position:center!important;background-size:cover!important;cursor:pointer!important}.fb-customerchat iframe.aml-fb-hiding{bottom:-3000px!important}.fb-customerchat.fb_iframe_widget>span>iframe{width:399px!important}.aml-contact_form-popup.aml-pu-desktop{width:33%;max-width:600px;min-width:400px;border-radius:6px}.aml-contact_form-popup.aml-pu-mobile{width:100%;height:100%;margin:0;-webkit-overflow-scrolling:touch!important;overflow-y:scroll!important;border-radius:0!important}.aml-contact_form-popup.aml-pu-mobile #iframe_contact_form{border-radius:0!important}.autoAdsMaxLead_widget_contact_form_container{position:fixed;width:100%;height:100%;top:-3000px;left:0;overflow:auto}.autoAdsMaxLead_widget_contact_form_container.show{top:0}.autoAdsMaxLead_widget_contact_form_container.show.aml-form-not-overflow{display:flex!important;align-items:center!important}.aml-contact_form-popup{position:relative;margin:38px auto;background-color:#fff;box-sizing:content-box;letter-spacing:normal!important}.aml-contact_form-popup #iframe_contact_form{width:100%;height:100%;border:unset}.aml-contact_form-popup .autoAdsMaxLead-message-info{text-align:center!important;font-size:15px!important;color:#333!important;padding:15px 0 15px!important}.aml-pu-mobile .aml-contact_form-power-by{display:none}.simple-contact-mobile{display:none!important}@media only screen and (min-width:768px){.aml_dk-flex-container>div{width:54px!important;height:54px!important;margin:6px!important;background-size:100%!important;border:2px solid #fff!important;border-radius:50%!important}.aml_dk-style-gradient-default [class*='aml_dk-channel-']{background-size:100%!important}}.aml-tooltip .aml-tooltiptext{background-color:#1D243E;color:#fff}.aml_dk-top-right .aml-tooltip .aml-tooltiptext::after,.aml_dk-middle-right .aml-tooltip .aml-tooltiptext::after,.aml_dk-bottom-right .aml-tooltip .aml-tooltiptext::after{border-color:transparent transparent transparent #1D243E}.autoAdsMaxLead-widget:hover .aml-powered-by{visibility:visible;opacity:1}@media only screen and (max-width:767px){.aml_dk-flex-container>div{width:76.00px!important;height:58.00px!important;margin:0.00px!important;background-size:45px!important}.aml_dk-bottom-center .aml_dk-flex-container>div{height:70px!important;background-size:45px!important}.aml_dk-mobile.aml_dk-style-default.aml_dk-bottom-right>.aml_dk-flex-container{display:inline-block}.aml_dk-flex-item span{font-size:10.13px!important}.aml_dk-channel-google_map{background-image:url(../../../plugins/Simple-Contact/assets/images/widget_icon_map.svg)}.aml_dk-channel-zalo{background-image:url(../../../plugins/Simple-Contact/assets/images/widget_icon_zalo.svg)}.aml_dk-channel-facebook{background-image:url(../../../plugins/Simple-Contact/assets/images/widget_icon_messenger.svg)}.aml_dk-channel-click_to_call{background-image:url(../../../plugins/Simple-Contact/assets/images/widget_icon_click_to_call.svg)}.simple-contact-mobile{display:block!important}.simple-contact-desktop{display:none!important}.simple-contact-mobile .aml_dk-flex-item a{display:block;min-height:50px}.zalo-chat-widget{bottom:17px!important;right:6px!important}.aml_dk-channel-zalo-oa .zalo-chat-widget{bottom:2px!important;right:auto!important;left:5px}}.simple-contact-desktop:hover .aml-powered-by{opacity:1;visibility:visible}@charset "UTF-8";html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block}audio:not([controls]){display:none;height:0}progress{vertical-align:baseline}template,[hidden]{display:none}a{background-color:transparent}a:active,a:hover{outline-width:0}abbr[title]{border-bottom:none;text-decoration:none}b,strong{font-weight:inherit}b,strong{font-weight:bolder}dfn{font-style:italic}mark{background-color:#ff0;color:#000}small{font-size:80%;display:inline-block}img{border-style:none}svg:not(:root){overflow:hidden}button,input,select,textarea{font:inherit}optgroup{font-weight:700}button,input,select{overflow:visible}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{cursor:pointer}[disabled]{cursor:default}button,html [type=button],[type=reset],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}button:-moz-focusring,input:-moz-focusring{outline:1px dotted ButtonText}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}textarea{overflow:auto}[type=checkbox],[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}*,*:before,*:after{-webkit-box-sizing:border-box;box-sizing:border-box}html{-webkit-box-sizing:border-box;box-sizing:border-box;background-attachment:fixed;-webkit-tap-highlight-color:transparent}body{color:#777;scroll-behavior:smooth;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.xdebug-var-dump{position:relative;z-index:1000}hr{margin:15px 0;border-width:0;border-top:1px solid currentColor;opacity:.1}img{max-width:100%;height:auto;display:inline-block;vertical-align:middle}figure{margin:0}pre{background-color:#f1f1f1;border:1px solid #ddd;padding:20px;width:100%;overflow-x:auto}p:empty{display:none}a,button,input{-ms-touch-action:manipulation;touch-action:manipulation}ins{text-decoration:none}embed,iframe,object{max-width:100%}.col,.gallery-item,.columns{position:relative;margin:0;padding:0 15px 30px;width:100%}.col-fit{-webkit-box-flex:1;-ms-flex:1;flex:1}.col-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.col-last{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.col-inner{position:relative;margin-left:auto;margin-right:auto;width:100%;background-position:50% 50%;background-size:cover;background-repeat:no-repeat;-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto}.col-has-radius{overflow:hidden}@media screen and (min-width:850px){.col:first-child .col-inner{margin-left:auto;margin-right:0}.col+.col .col-inner{margin-right:auto;margin-left:0}}@media screen and (max-width:549px){.small-col-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}}@media screen and (min-width:850px){.large-col-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}}@media screen and (max-width:849px){.medium-col-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.col{padding-bottom:30px}}@media screen and (min-width:850px){.row-divided>.col+.col:not(.large-12){border-left:1px solid #ececec}.row-divided.row-reverse>.col+.col:not(.large-12){border-left:0;border-right:1px solid #ececec}.col-divided{padding-right:30px;border-right:1px solid #ececec}.col.col-divided:not(.col-first):last-child{border-right:0;padding-right:0;padding-left:30px;border-left:1px solid #ececec}.col-border{padding-right:0;border-right:1px solid #ececec}.col-border+.col,.col-divided+.col{padding-left:30px}}.dark .col-divided{border-color:rgba(255,255,255,.2)}.align-equal>.col{display:-webkit-box;display:-ms-flexbox;display:flex}.align-middle{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important;-ms-flex-item-align:center!important;align-self:center!important;vertical-align:middle!important}.align-bottom{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important;-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important;-ms-flex-item-align:end!important;align-self:flex-end!important;vertical-align:bottom!important}.align-top{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important;-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important;-ms-flex-item-align:start!important;align-self:flex-start!important;vertical-align:top!important}.align-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.align-right{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.small-1{max-width:8.3333333333%;-ms-flex-preferred-size:8.3333333333%;flex-basis:8.3333333333%}.small-2{max-width:16.6666666667%;-ms-flex-preferred-size:16.6666666667%;flex-basis:16.6666666667%}.small-3{max-width:25%;-ms-flex-preferred-size:25%;flex-basis:25%}.small-4{max-width:33.3333333333%;-ms-flex-preferred-size:33.3333333333%;flex-basis:33.3333333333%}.small-5{max-width:41.6666666667%;-ms-flex-preferred-size:41.6666666667%;flex-basis:41.6666666667%}.small-6{max-width:50%;-ms-flex-preferred-size:50%;flex-basis:50%}.small-7{max-width:58.3333333333%;-ms-flex-preferred-size:58.3333333333%;flex-basis:58.3333333333%}.small-8{max-width:66.6666666667%;-ms-flex-preferred-size:66.6666666667%;flex-basis:66.6666666667%}.small-9{max-width:75%;-ms-flex-preferred-size:75%;flex-basis:75%}.small-10{max-width:83.3333333333%;-ms-flex-preferred-size:83.3333333333%;flex-basis:83.3333333333%}.small-11{max-width:91.6666666667%;-ms-flex-preferred-size:91.6666666667%;flex-basis:91.6666666667%}.small-12{max-width:100%;-ms-flex-preferred-size:100%;flex-basis:100%}.small-columns-1>.col,.small-columns-1 .flickity-slider>.col{max-width:100%;-ms-flex-preferred-size:100%;flex-basis:100%}.small-columns-2>.col,.small-columns-2 .flickity-slider>.col{max-width:50%;-ms-flex-preferred-size:50%;flex-basis:50%}.small-columns-3>.col,.small-columns-3 .flickity-slider>.col{max-width:33.3333333333%;-ms-flex-preferred-size:33.3333333333%;flex-basis:33.3333333333%}.small-columns-4>.col,.small-columns-4 .flickity-slider>.col{max-width:25%;-ms-flex-preferred-size:25%;flex-basis:25%}.small-columns-5>.col,.small-columns-5 .flickity-slider>.col{max-width:20%;-ms-flex-preferred-size:20%;flex-basis:20%}.small-columns-6>.col,.small-columns-6 .flickity-slider>.col{max-width:16.6666666667%;-ms-flex-preferred-size:16.6666666667%;flex-basis:16.6666666667%}.small-columns-7>.col,.small-columns-7 .flickity-slider>.col{max-width:14.2857142857%;-ms-flex-preferred-size:14.2857142857%;flex-basis:14.2857142857%}.small-columns-8>.col,.small-columns-8 .flickity-slider>.col{max-width:12.5%;-ms-flex-preferred-size:12.5%;flex-basis:12.5%}@media screen and (min-width:550px){.medium-1{max-width:8.3333333333%;-ms-flex-preferred-size:8.3333333333%;flex-basis:8.3333333333%}.medium-2{max-width:16.6666666667%;-ms-flex-preferred-size:16.6666666667%;flex-basis:16.6666666667%}.medium-3{max-width:25%;-ms-flex-preferred-size:25%;flex-basis:25%}.medium-4{max-width:33.3333333333%;-ms-flex-preferred-size:33.3333333333%;flex-basis:33.3333333333%}.medium-5{max-width:41.6666666667%;-ms-flex-preferred-size:41.6666666667%;flex-basis:41.6666666667%}.medium-6{max-width:50%;-ms-flex-preferred-size:50%;flex-basis:50%}.medium-7{max-width:58.3333333333%;-ms-flex-preferred-size:58.3333333333%;flex-basis:58.3333333333%}.medium-8{max-width:66.6666666667%;-ms-flex-preferred-size:66.6666666667%;flex-basis:66.6666666667%}.medium-9{max-width:75%;-ms-flex-preferred-size:75%;flex-basis:75%}.medium-10{max-width:83.3333333333%;-ms-flex-preferred-size:83.3333333333%;flex-basis:83.3333333333%}.medium-11{max-width:91.6666666667%;-ms-flex-preferred-size:91.6666666667%;flex-basis:91.6666666667%}.medium-12{max-width:100%;-ms-flex-preferred-size:100%;flex-basis:100%}.medium-columns-1>.col,.medium-columns-1 .flickity-slider>.col{max-width:100%;-ms-flex-preferred-size:100%;flex-basis:100%}.medium-columns-2>.col,.medium-columns-2 .flickity-slider>.col{max-width:50%;-ms-flex-preferred-size:50%;flex-basis:50%}.medium-columns-3>.col,.medium-columns-3 .flickity-slider>.col{max-width:33.3333333333%;-ms-flex-preferred-size:33.3333333333%;flex-basis:33.3333333333%}.medium-columns-4>.col,.medium-columns-4 .flickity-slider>.col{max-width:25%;-ms-flex-preferred-size:25%;flex-basis:25%}.medium-columns-5>.col,.medium-columns-5 .flickity-slider>.col{max-width:20%;-ms-flex-preferred-size:20%;flex-basis:20%}.medium-columns-6>.col,.medium-columns-6 .flickity-slider>.col{max-width:16.6666666667%;-ms-flex-preferred-size:16.6666666667%;flex-basis:16.6666666667%}.medium-columns-7>.col,.medium-columns-7 .flickity-slider>.col{max-width:14.2857142857%;-ms-flex-preferred-size:14.2857142857%;flex-basis:14.2857142857%}.medium-columns-8>.col,.medium-columns-8 .flickity-slider>.col{max-width:12.5%;-ms-flex-preferred-size:12.5%;flex-basis:12.5%}}@media screen and (min-width:850px){.large-1{max-width:8.3333333333%;-ms-flex-preferred-size:8.3333333333%;flex-basis:8.3333333333%}.large-2{max-width:16.6666666667%;-ms-flex-preferred-size:16.6666666667%;flex-basis:16.6666666667%}.large-3{max-width:25%;-ms-flex-preferred-size:25%;flex-basis:25%}.large-4{max-width:33.3333333333%;-ms-flex-preferred-size:33.3333333333%;flex-basis:33.3333333333%}.large-5{max-width:41.6666666667%;-ms-flex-preferred-size:41.6666666667%;flex-basis:41.6666666667%}.large-6{max-width:50%;-ms-flex-preferred-size:50%;flex-basis:50%}.large-7{max-width:58.3333333333%;-ms-flex-preferred-size:58.3333333333%;flex-basis:58.3333333333%}.large-8{max-width:66.6666666667%;-ms-flex-preferred-size:66.6666666667%;flex-basis:66.6666666667%}.large-9{max-width:75%;-ms-flex-preferred-size:75%;flex-basis:75%}.large-10{max-width:83.3333333333%;-ms-flex-preferred-size:83.3333333333%;flex-basis:83.3333333333%}.large-11{max-width:91.6666666667%;-ms-flex-preferred-size:91.6666666667%;flex-basis:91.6666666667%}.large-12{max-width:100%;-ms-flex-preferred-size:100%;flex-basis:100%}.gallery-columns-1 .gallery-item,.large-columns-1>.col,.large-columns-1 .flickity-slider>.col{max-width:100%;-ms-flex-preferred-size:100%;flex-basis:100%}.gallery-columns-2 .gallery-item,.large-columns-2>.col,.large-columns-2 .flickity-slider>.col{max-width:50%;-ms-flex-preferred-size:50%;flex-basis:50%}.gallery-columns-3 .gallery-item,.large-columns-3>.col,.large-columns-3 .flickity-slider>.col{max-width:33.3333333333%;-ms-flex-preferred-size:33.3333333333%;flex-basis:33.3333333333%}.gallery-columns-4 .gallery-item,.large-columns-4>.col,.large-columns-4 .flickity-slider>.col{max-width:25%;-ms-flex-preferred-size:25%;flex-basis:25%}.gallery-columns-5 .gallery-item,.large-columns-5>.col,.large-columns-5 .flickity-slider>.col{max-width:20%;-ms-flex-preferred-size:20%;flex-basis:20%}.gallery-columns-6 .gallery-item,.large-columns-6>.col,.large-columns-6 .flickity-slider>.col{max-width:16.6666666667%;-ms-flex-preferred-size:16.6666666667%;flex-basis:16.6666666667%}.gallery-columns-7 .gallery-item,.large-columns-7>.col,.large-columns-7 .flickity-slider>.col{max-width:14.2857142857%;-ms-flex-preferred-size:14.2857142857%;flex-basis:14.2857142857%}.gallery-columns-8 .gallery-item,.large-columns-8>.col,.large-columns-8 .flickity-slider>.col{max-width:12.5%;-ms-flex-preferred-size:12.5%;flex-basis:12.5%}}.has-shadow>.col>.col-inner{background-color:#fff}.col-hover-focus .col-inner,.col-hover-fade .col-inner,.col-hover-blur .col-inner{-webkit-transition:all,.2s;-o-transition:all,.2s;transition:all,.2s}.col-hover-fade .col-inner{opacity:.6}.col-hover-fade:hover .col-inner{opacity:1}.col-hover-blur .col-inner{-webkit-filter:blur(3px);filter:blur(3px)}.col-hover-blur:hover .col-inner{-webkit-filter:blur(0);filter:blur(0)}.col-hover-focus:hover .col-inner{opacity:1}.row:hover .col-hover-focus .col:not(:hover){opacity:.6}body,.container,.full-width .ubermenu-nav,.container-width,.row{width:100%;margin-left:auto;margin-right:auto}.container{padding-left:15px;padding-right:15px}.container-width,.full-width .ubermenu-nav,.container,.row{max-width:1080px}.row.row-collapse{max-width:1050px}.row.row-small{max-width:1065px}.row.row-large{max-width:1110px}body.framed,body.framed header,body.framed .header-wrapper,body.boxed,body.boxed header,body.boxed .header-wrapper,body.boxed .is-sticky-section{max-width:1170px}@media screen and (min-width:850px){body.framed{margin:30px auto}}.flex-row{-js-display:flex;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;width:100%}.flex-row-start{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.flex-row-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.flex-row-col{-js-display:flex;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.text-center .flex-row{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.header .flex-row{height:100%}.flex-col{max-height:100%}.flex-grow{-webkit-box-flex:1;-ms-flex:1;flex:1;-ms-flex-negative:1;-ms-flex-preferred-size:auto!important}.flex-center{margin:0 auto}.flex-left{margin-right:auto}.flex-right{margin-left:auto}.flex-wrap{-ms-flex-wrap:wrap;flex-wrap:wrap}.flex-has-center>.nav-row>.flex-col:not(.flex-center),.flex-has-center>.flex-row>.flex-col:not(.flex-center),.flex-has-center>.flex-col:not(.flex-center){-webkit-box-flex:1;-ms-flex:1;flex:1}@media(max-width:849px){.medium-flex-wrap{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-flow:column wrap;flex-flow:column wrap}.medium-flex-wrap .flex-col{padding-top:5px;padding-bottom:5px;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;width:100%}}@media(max-width:549px){.small-flex-wrap{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-flow:column wrap;flex-flow:column wrap}.small-flex-wrap .flex-col{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;width:100%}}@media(min-width:850px){.col2-set,.u-columns{-js-display:flex;display:-webkit-box;display:-ms-flexbox;display:flex}.col2-set>div+div,.u-columns>div+div{padding-left:30px}}.row-grid .box .image-cover{padding:0;height:100%}.grid-col>.col-inner{height:100%}.grid-col .slider:not(.flickity-enabled),.grid-col>.col-inner>.img,.grid-col>.col-inner>.img div,.grid-col>.col-inner>.img .img-inner>img,.grid-col .slider>.img,.grid-col .flickity-slider>.img,.grid-col .col-inner>.img,.grid-col .slider-wrapper,.grid-col .slider,.grid-col .banner,.grid-col .box,.grid-col .box-image,.grid-col .box-image img,.grid-col .image-cover,.grid-col .image-cover img{-o-object-fit:cover;object-fit:cover;width:100%;position:absolute!important;top:0;bottom:0;height:100%;padding:0!important}.grid-col .box-image img{font-family:"object-fit: cover;"}.grid-col .flickity-viewport{height:100%!important}.grid-col .box:not(.box-shade):not(.box-overlay):not(.box-badge) .box-text{background-color:rgba(255,255,255,.95);position:absolute;bottom:0;padding-left:1.5em;padding-right:1.5em}@media all and (-ms-high-contrast:none){.payment-icon svg{max-width:50px}.slider-nav-circle .flickity-prev-next-button svg{height:36px!important}.nav>li>a>i{top:-1px}}.row,.gallery{width:100%;-js-display:flex;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap}.row>div:not(.col):not([class^=col-]){width:100%!important}.row.row-masonry,.row.row-grid{display:block}.row.row-masonry>.col,.row.row-grid>.col{float:left}.row .gallery,.row .row:not(.row-collapse),.container .row:not(.row-collapse),.lightbox-content .row:not(.row-collapse){padding-left:0;padding-right:0;margin-left:-15px;margin-right:-15px;width:auto}.row .container{padding-left:0;padding-right:0}.slider-wrapper+.row:not(.row-collapse),.banner-grid-wrapper+.row:not(.row-collapse),.banner+.row:not(.row-collapse),.section+.row:not(.row-collapse){margin-top:30px}.row-full-width{max-width:100%!important}.row-isotope{-webkit-transition:height .3s;-o-transition:height .3s;transition:height .3s}.row-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}@media screen and (max-width:549px){.small-row-reverse{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}}@media screen and (max-width:849px){.medium-row-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}}.row-collapse{padding:0}.row-collapse>.flickity-viewport>.flickity-slider>.col,.row-collapse>.col{padding:0!important}.row-collapse>.col .container{max-width:100%}.row .row-small:not(.row-collapse),.container .row-small:not(.row-collapse){margin-left:-10px;margin-right:-10px;margin-bottom:0}.row-small>.flickity-viewport>.flickity-slider>.col,.row-small>.col{padding:0 9.8px 19.6px;margin-bottom:0}.row .row-xsmall:not(.row-collapse),.container .row-xsmall:not(.row-collapse){margin-left:-2px;margin-right:-2px;margin-bottom:0}.row-xsmall>.flickity-viewport>.flickity-slider>.col,.row-xsmall>.col{padding:0 2px 3px;margin-bottom:0}@media screen and (min-width:850px){.row-large{padding-left:0;padding-right:0}.row .row-large:not(.row-collapse),.container .row-large:not(.row-collapse){margin-left:-30px;margin-right:-30px;margin-bottom:0}.row-large>.flickity-viewport>.flickity-slider>.col,.row-large>.col{padding:0 30px 30px;margin-bottom:0}}.row-dashed,.row-solid{overflow:hidden}.row-dashed .col,.row-solid .col{position:relative;padding:0}.row-dashed .col-inner,.row-solid .col-inner{padding:15px}.row-dashed .col:before,.row-solid .col:before{position:absolute;content:" ";height:100%;top:0;left:-1px;border-left:1px dashed #ddd}.row-dashed .col:after,.row-solid .col:after{position:absolute;content:" ";width:100%;height:0;top:auto;left:0;bottom:-1px;border-bottom:1px dashed #ddd}.row-solid .col:before{border-left-style:solid}.row-solid .col:after{border-bottom-style:solid}.dark .row-solid .col:before,.dark .row-solid .col:after,.dark .row-dashed .col:before,.dark .row-dashed .col:after{border-color:rgba(255,255,255,.2)}.block-html-after-header .row .col{padding-bottom:0}.wpb-js-composer .row:before{display:block!important}.section{padding:30px 0;position:relative;min-height:auto;width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row;flex-flow:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.section.dark{background-color:#666}.section-bg{overflow:hidden}.section-bg,.section-content{width:100%}.section-content{z-index:1}.has-parallax{overflow:hidden}.container .section,.row .section{padding-left:30px;padding-right:30px}.is-sticky-section+.sticky-section-helper{min-height:100vh!important;background-color:#000}.sticky-section-helper+div{position:relative;background-color:#fff;-webkit-box-shadow:15px 15px 15px 15px rgba(0,0,0,.1);box-shadow:15px 15px 15px 15px rgba(0,0,0,.1)}.sticky-section{padding:0!important;height:100%!important;height:100vh!important;width:100%!important;top:0;left:0;right:0;margin:0 auto;background-color:#fff;position:relative;overflow:hidden}.is-sticky-section{position:fixed!important}.nav-dropdown{position:absolute;min-width:260px;max-height:0;z-index:9;padding:20px 0 20px;opacity:0;margin:0;-webkit-transition:opacity .25s;-o-transition:opacity .25s;transition:opacity .25s;color:#777;background-color:#fff;text-align:left;display:table;left:-99999px}.dark.nav-dropdown{color:#f1f1f1}.nav-dropdown:after{visibility:hidden;display:block;content:"";clear:both;height:0}.nav-dropdown li{display:block;margin:0;vertical-align:top}.nav-dropdown li ul{margin:0;padding:0}.nav-dropdown>li.html{min-width:260px}li.current-dropdown>.nav-dropdown,.next-prev-thumbs li.has-dropdown:hover>.nav-dropdown,.no-js li.has-dropdown:hover>.nav-dropdown{opacity:1;max-height:inherit;left:-15px}.nav-right li.current-dropdown:last-child>.nav-dropdown,.nav-right li.has-dropdown:hover:last-child>.nav-dropdown{left:auto;right:-15px}.nav-column li>a,.nav-dropdown>li>a{width:auto;display:block;padding:10px 20px;line-height:1.3}.nav-column>li:last-child:not(.nav-dropdown-col)>a,.nav-dropdown>li:last-child:not(.nav-dropdown-col)>a{border-bottom:0!important}.dropdown-uppercase.nav-dropdown .nav-column>li>a,.nav-dropdown.dropdown-uppercase>li>a{text-transform:uppercase;font-size:.85em}.nav-dropdown>li.nav-dropdown-col,.nav-dropdown>li.image-column{text-align:left;display:table-cell;white-space:nowrap;width:160px;min-width:160px}.nav-dropdown>li.nav-dropdown-col:not(:last-child),.nav-dropdown>li.image-column:not(:last-child){border-right:1px solid transparent}.nav-dropdown .menu-item-has-children>a,.nav-dropdown .title>a,.nav-dropdown .nav-dropdown-col>a{text-transform:uppercase;font-size:.8em;font-weight:bolder;color:#000}.nav-dropdown .nav-dropdown-col .menu-item-has-children{margin-top:5px}.nav-dropdown li.image-column{margin:0!important;padding:0!important;border:0!important}.nav-dropdown li.image-column>a{line-height:0!important;font-size:0!important;padding:0!important;margin-left:0!important;margin-right:0!important;margin-top:-20px!important;margin-bottom:-20px!important}.nav-dropdown li.image-column>a img{margin:0;display:block;width:100%}.nav-dropdown li.image-column>a:hover{opacity:.8}.nav-dropdown-default li.image-column:first-child>a{margin-left:-20px!important;margin-right:20px!important}.nav-dropdown-default li.image-column:last-child>a{margin-right:-20px!important}.nav-dropdown.nav-dropdown-bold>li.nav-dropdown-col,.nav-dropdown.nav-dropdown-simple>li.nav-dropdown-col{border-color:#f1f1f1}.nav-dropdown-default .nav-column li>a,.nav-dropdown.nav-dropdown-default>li>a{padding-left:0;padding-right:0;margin:0 10px;border-bottom:1px solid #ececec}.nav-dropdown-default{padding:20px}.nav-dropdown-bold .nav-column li>a,.nav-dropdown.nav-dropdown-bold>li>a{margin:0 10px;padding-left:10px;border-radius:10px;padding-right:5px}.nav-dropdown-bold .nav-column li>a:hover,.nav-dropdown.nav-dropdown-bold>li>a:hover,.nav-dropdown-bold.dark .nav-column li>a:hover,.nav-dropdown.nav-dropdown-bold.dark>li>a:hover{color:#fff!important;background-color:#446084}.nav-dropdown-simple .nav-column li>a:hover,.nav-dropdown.nav-dropdown-simple>li>a:hover{background-color:rgba(0,0,0,.03)}.nav-dropdown.nav-dropdown-simple li.html,.nav-dropdown.nav-dropdown-bold li.html{padding:0 20px 10px}.menu-item-has-block .nav-dropdown{padding:0}li.current-dropdown>.nav-dropdown-full,li.has-dropdown:hover>.nav-dropdown-full{position:fixed;margin-left:0!important;margin-right:0!important;left:50%!important;-webkit-transition:opacity .3s!important;-o-transition:opacity .3s!important;transition:opacity .3s!important;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);right:auto;width:100%;max-width:1150px!important;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.nav-dropdown-full>li.nav-dropdown-col{white-space:normal}.nav-dropdown-has-arrow li.has-dropdown:after,.nav-dropdown-has-arrow li.has-dropdown:before{bottom:-2px;z-index:10;opacity:0;left:50%;border:solid transparent;content:"";height:0;width:0;position:absolute;pointer-events:none}.nav-dropdown-has-arrow li.has-dropdown:after{border-color:rgba(221,221,221,0);border-bottom-color:#fff;border-width:8px;margin-left:-8px}.nav-dropdown-has-arrow li.has-dropdown:before{z-index:-999;border-width:11px;margin-left:-11px}.nav-dropdown-has-arrow li.has-dropdown.menu-item-design-container-width:after,.nav-dropdown-has-arrow li.has-dropdown.menu-item-design-container-width:before,.nav-dropdown-has-arrow li.has-dropdown.menu-item-design-full-width:after,.nav-dropdown-has-arrow li.has-dropdown.menu-item-design-full-width:before{display:none}.nav-dropdown-has-arrow .ux-nav-vertical-menu .menu-item-design-default:after,.nav-dropdown-has-arrow .ux-nav-vertical-menu .menu-item-design-default:before,.nav-dropdown-has-arrow .ux-nav-vertical-menu .menu-item-design-custom-size:after,.nav-dropdown-has-arrow .ux-nav-vertical-menu .menu-item-design-custom-size:before{display:none}.nav-dropdown-has-shadow .nav-dropdown{-webkit-box-shadow:1px 1px 15px rgba(0,0,0,.15);box-shadow:1px 1px 15px rgba(0,0,0,.15)}.nav-dropdown-has-arrow.nav-dropdown-has-border li.has-dropdown:before{border-bottom-color:#ddd}.nav-dropdown-has-border .nav-dropdown{border:2px solid #ddd}.nav-dropdown-has-arrow li.current-dropdown.has-dropdown:before,.nav-dropdown-has-arrow li.current-dropdown.has-dropdown:after{-webkit-transition:opacity .25s;-o-transition:opacity .25s;transition:opacity .25s;opacity:1}.label-new.menu-item>a:after,.label-hot.menu-item>a:after,.label-sale.menu-item>a:after,.label-popular.menu-item>a:after{content:"";display:inline-block;font-size:9px;line-height:9px;text-transform:uppercase;letter-spacing:-.1px;margin-left:4px;background-color:#000;font-weight:bolder;border-radius:2px;color:#fff;padding:2px 3px 3px;position:relative;top:-2px}.label-new.menu-item>a:after{background-color:#446084}.label-sale.menu-item>a:after{background-color:#d26e4b}.label-popular.menu-item>a:after{background-color:#7a9c59}.label-hot.menu-item>a:after{background-color:#b20000}.nav p{margin:0;padding-bottom:0}.nav,.nav ul:not(.nav-dropdown){margin:0;padding:0}.nav>li>a.button,.nav>li>button{margin-bottom:0}.nav{width:100%;position:relative;display:inline-block;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.nav>li{display:inline-block;list-style:none;margin:0;padding:0;position:relative;margin:0 7px;-webkit-transition:background-color .3s;-o-transition:background-color .3s;transition:background-color .3s}.nav>li>a{padding:10px 0;display:inline-block;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.html .nav>li>a{padding-top:0;padding-bottom:0}.nav-small .nav>li>a,.nav.nav-small>li>a{vertical-align:top;padding-top:5px;padding-bottom:5px;font-weight:400}.nav-small.nav>li.html{font-size:.75em}.nav-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.nav-fill{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.nav-left{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.nav-right{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}@media(max-width:849px){.medium-nav-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}}@media(max-width:549px){.small-nav-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}}.nav>li>a,.nav-dropdown>li>a,.nav-column>li>a,.nav-vertical-fly-out>li>a{color:rgba(102,102,102,.85);-webkit-transition:all .2s;-o-transition:all .2s;transition:all .2s}.nav-dropdown>li>a,.nav-column>li>a{display:block}.nav>li>a:hover,.nav>li.active>a,.nav>li.current>a,.nav>li>a.active,.nav>li>a.current,.nav-dropdown li.active>a,.nav-column li.active>a,.nav-dropdown>li>a:hover,.nav-column li>a:hover,.nav-vertical-fly-out>li>a:hover{color:rgba(17,17,17,.85)}.nav li:first-child{margin-left:0!important}.nav li:last-child{margin-right:0!important}.nav-uppercase>li>a{letter-spacing:.02em;text-transform:uppercase;font-weight:bolder}.nav-thin>li>a{font-weight:thin!important}@media(min-width:850px){.nav-divided>li{margin:0 .7em}.nav-divided>li+li>a:after{content:"";position:absolute;top:50%;width:1px;border-left:1px solid rgba(0,0,0,.1);height:15px;margin-top:-7px;left:-1em}.nav-divided>li+li.icon-top>a:after{height:50px;margin-top:-25px}}li.html .row,li.html form,li.html select,li.html input{margin:0}li.html>.button{margin-bottom:0}li.hide-title>a{display:none!important}.nav-pagination>li>span,.nav-pagination>li>a{font-size:1.1em;display:block;height:2.25em;line-height:2em;text-align:center;width:auto;min-width:2.25em;padding:0 7px;font-weight:bolder;border-radius:99px;border:2px solid currentColor;-webkit-transition:all .3s;-o-transition:all .3s;transition:all .3s;vertical-align:top}.nav-pagination>li i{font-size:1.2em;vertical-align:middle;top:-1px}.nav-pagination>li>.current,.nav-pagination>li>span:hover,.nav-pagination>li>a:hover{border-color:#446084;background-color:#446084;color:#fff}.off-canvas .mobile-sidebar-slide{position:fixed;top:0;bottom:0;width:100%;overflow:hidden}.off-canvas .mobile-sidebar-slide .sidebar-menu{height:100%;padding-top:0;padding-bottom:0;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;-o-transition:transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;-webkit-transform:translateX(0%);-ms-transform:translateX(0%);transform:translateX(0%);will-change:transform}.mobile-sidebar-levels-1 .nav-slide>li>ul.children,.mobile-sidebar-levels-1 .nav-slide>li>.sub-menu{position:fixed;top:0;bottom:0;width:100%;padding-top:20px;padding-right:0;padding-bottom:20px;left:100%;opacity:1;display:none;overflow:visible;overflow-y:auto;-webkit-transform:none;-ms-transform:none;transform:none;-webkit-overflow-scrolling:touch}.mobile-sidebar-levels-1 .nav-slide>li>ul.children>li,.mobile-sidebar-levels-1 .nav-slide>li>.sub-menu>li{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mobile-sidebar-levels-1 .nav-slide>li>ul.children.is-current-slide,.mobile-sidebar-levels-1 .nav-slide>li>.sub-menu.is-current-slide{display:block}.mobile-sidebar-levels-1 .nav-slide>li>ul.children.is-current-parent,.mobile-sidebar-levels-1 .nav-slide>li>.sub-menu.is-current-parent{overflow-y:hidden;width:200%;padding-right:100%}.mobile-sidebar-levels-2 .nav-slide>li>ul.children>li:not(.nav-slide-header),.mobile-sidebar-levels-2 .nav-slide>li>.sub-menu>li:not(.nav-slide-header){margin-top:0;margin-bottom:0;border-top:1px solid #ececec;-webkit-transition:background-color .3s;-o-transition:background-color .3s;transition:background-color .3s}.mobile-sidebar-levels-2 .nav-slide>li>ul.children>li:not(.nav-slide-header)>a,.mobile-sidebar-levels-2 .nav-slide>li>.sub-menu>li:not(.nav-slide-header)>a{padding-top:15px;padding-bottom:15px;padding-left:20px;text-transform:uppercase;font-size:.8em;letter-spacing:.02em;color:rgba(102,102,102,.85)}.mobile-sidebar-levels-2 .nav-slide>li>ul.children>li:not(.nav-slide-header).active,.mobile-sidebar-levels-2 .nav-slide>li>ul.children>li:not(.nav-slide-header):hover,.mobile-sidebar-levels-2 .nav-slide>li>.sub-menu>li:not(.nav-slide-header).active,.mobile-sidebar-levels-2 .nav-slide>li>.sub-menu>li:not(.nav-slide-header):hover{background-color:rgba(0,0,0,.05)}.mobile-sidebar-levels-2 .nav-slide>li>ul.children>li:not(.nav-slide-header)>ul.children,.mobile-sidebar-levels-2 .nav-slide>li>ul.children>li:not(.nav-slide-header)>.sub-menu,.mobile-sidebar-levels-2 .nav-slide>li>.sub-menu>li:not(.nav-slide-header)>ul.children,.mobile-sidebar-levels-2 .nav-slide>li>.sub-menu>li:not(.nav-slide-header)>.sub-menu{position:fixed;top:0;bottom:0;width:100%;padding-top:20px;padding-right:0;padding-bottom:20px;left:200%;opacity:1;display:none;overflow:visible;overflow-y:auto;-webkit-transform:none;-ms-transform:none;transform:none;-webkit-overflow-scrolling:touch}.mobile-sidebar-levels-2 .nav-slide>li>ul.children>li:not(.nav-slide-header)>ul.children>li,.mobile-sidebar-levels-2 .nav-slide>li>ul.children>li:not(.nav-slide-header)>.sub-menu>li,.mobile-sidebar-levels-2 .nav-slide>li>.sub-menu>li:not(.nav-slide-header)>ul.children>li,.mobile-sidebar-levels-2 .nav-slide>li>.sub-menu>li:not(.nav-slide-header)>.sub-menu>li{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mobile-sidebar-levels-2 .nav-slide>li>ul.children>li:not(.nav-slide-header)>ul.children.is-current-slide,.mobile-sidebar-levels-2 .nav-slide>li>ul.children>li:not(.nav-slide-header)>.sub-menu.is-current-slide,.mobile-sidebar-levels-2 .nav-slide>li>.sub-menu>li:not(.nav-slide-header)>ul.children.is-current-slide,.mobile-sidebar-levels-2 .nav-slide>li>.sub-menu>li:not(.nav-slide-header)>.sub-menu.is-current-slide{display:block}.mobile-sidebar-levels-2 .nav-slide>li>ul.children>li:not(.nav-slide-header)>ul.children.is-current-parent,.mobile-sidebar-levels-2 .nav-slide>li>ul.children>li:not(.nav-slide-header)>.sub-menu.is-current-parent,.mobile-sidebar-levels-2 .nav-slide>li>.sub-menu>li:not(.nav-slide-header)>ul.children.is-current-parent,.mobile-sidebar-levels-2 .nav-slide>li>.sub-menu>li:not(.nav-slide-header)>.sub-menu.is-current-parent{overflow-y:hidden;width:200%;padding-right:100%}.nav-slide{height:100%;padding-top:20px;overflow:visible;overflow-y:auto;-webkit-overflow-scrolling:auto}.nav-slide .active>.toggle{-webkit-transform:none;-ms-transform:none;transform:none}.nav-slide>li{-ms-flex-negative:0;flex-shrink:0}.nav-slide-header .toggle{position:relative!important;top:0!important;margin-left:0!important;padding-left:5px;text-align:left;width:100%}.nav-slide-header .toggle i{margin-right:2px;font-size:1.4em}.text-center .nav-slide-header .toggle{width:auto;margin-left:auto!important;margin-right:auto!important}.nav-line-bottom>li>a:before,.nav-line-grow>li>a:before,.nav-line>li>a:before{content:" ";position:absolute;top:0;left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);width:100%;background-color:#446084;-webkit-transition:all .3s;-o-transition:all .3s;transition:all .3s;opacity:0;height:3px}.nav-line-bottom>li:hover>a:before,.nav-line-grow>li:hover>a:before,.nav-line-bottom>li.active>a:before,.nav-line-grow>li.active>a:before,.nav-line>li.active>a:before,.nav-line>li:hover>a:before{opacity:1}.nav:hover>li:not(:hover)>a:before{opacity:0}.tabbed-content .nav-line-bottom:before{top:auto;bottom:0}.nav-line-grow>li>a:before{width:0%}.nav-line-grow>li.active>a:before,.nav-line-grow>li:hover>a:before{width:100%}.nav-line-bottom>li:before,.nav-line-bottom>li:after{display:none}.nav-line-bottom>li>a:before{top:auto;bottom:0}.nav-box>li.active>a,.nav-pills>li.active>a{opacity:1;color:#fff;background-color:#446084}.nav-tabs>li.active>a{background-color:#fff}.nav-dark .nav.nav-tabs>li.active>a{color:#000}.nav-outline>li.active>a{color:#446084;border-color:currentColor}.tabbed-content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap}.tabbed-content .nav,.tabbed-content .tab-panels{width:100%}.tab-panels{padding-top:1em}.tab-panels .entry-content{padding:0}.tab-panels .panel:not(.active){zoom:1;visibility:hidden;height:0;padding:0;display:block;overflow:hidden;opacity:0}.tab-panels .panel.active{display:block!important}.nav-box>li,.nav-tabs>li,.nav-outline>li,.nav-pills>li{margin:0}.nav-box>li>a{padding:0 .75em;line-height:2.5em}.nav-pills>li>a{padding:0 .75em;border-radius:99px;line-height:2.5em}.nav-tabs>li>a{border-top:2px solid #ddd;border-left:1px solid #ddd;border-right:1px solid #ddd;background-color:rgba(0,0,0,.04);padding-left:15px;padding-right:15px}.nav-tabs>li.active>a{border-top-color:#446084}.nav-dark .nav-tabs>li:not(.active)>a{background-color:rgba(255,255,255,.1);border-color:transparent}.tabbed-content .nav-tabs>li{margin:0 .1em;margin-bottom:-1px}.nav-tabs+.tab-panels{border:1px solid #ddd;background-color:#fff;padding:30px}.nav-outline>li>a{line-height:2.4em;padding:0 .75em;position:relative;z-index:10;border:2px solid transparent;border-radius:32px}@media(min-width:850px){.tabbed-content .nav-vertical{padding-top:0;width:25%}.nav-vertical+.tab-panels{margin-top:0!important;border-left:1px solid #ddd;padding:0 30px 30px;-webkit-box-flex:1;-ms-flex:1;flex:1}.tabbed-content .nav-vertical.nav-outline{padding-right:15px}}@media(max-width:549px){.small-nav-collapse>li{width:100%;margin:0!important}.small-nav-collapse>li a{width:100%;display:block}}@media(max-width:549px){.small-nav-touch{-webkit-overflow-scrolling:touch;overflow-x:auto;overflow-y:hidden;white-space:nowrap;-ms-flex-flow:nowrap;flex-flow:nowrap}.small-nav-touch>li{display:inline-block}}.sidebar-menu-tabs__tab{-webkit-box-flex:1;-ms-flex:1 0 50%;flex:1 0 50%;max-width:50%;list-style-type:none;background-color:rgba(0,0,0,.02);text-align:center}.sidebar-menu-tabs__tab.active{background-color:rgba(0,0,0,.05)}.sidebar-menu-tabs__tab-text{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.sidebar-menu-tabs.nav>li{margin:0}.sidebar-menu-tabs.nav>li>a{display:-webkit-box;display:-ms-flexbox;display:flex;padding:15px 10px}.toggle{height:auto;width:45px;line-height:1;-webkit-box-shadow:none!important;box-shadow:none!important;padding:0;color:currentColor;opacity:.6;margin:0 5px 0 0}.toggle i{font-size:1.8em;-webkit-transition:all .3s;-o-transition:all .3s;transition:all .3s}.toggle:focus{color:currentColor}.toggle:hover{cursor:pointer;opacity:1}.active>.toggle{-webkit-transform:rotate(-180deg);-ms-transform:rotate(-180deg);transform:rotate(-180deg)}.active>ul.children{display:block!important}.active>ul.sub-menu:not(.nav-dropdown){display:block!important}.widget .toggle{width:1em;min-height:1em;margin:0 0 0 5px}.widget .toggle i{top:1px;font-size:1.2em}.nav.nav-vertical{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-flow:column;flex-flow:column}.nav.nav-vertical li{list-style:none;margin:0;width:100%}.nav-vertical li li{font-size:1em;padding-left:.5em}.nav-vertical .image-column{display:none!important}.nav-vertical>li{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.nav-vertical>li ul{width:100%}.nav-vertical li li.menu-item-has-children{margin-bottom:1em}.nav-vertical li li.menu-item-has-children:not(:first-child){margin-top:1em}.nav-vertical>li>ul>li a,.nav-vertical>li>a{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:auto;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.nav-vertical li li.menu-item-has-children>a{color:#000;text-transform:uppercase;font-size:.8em;font-weight:bolder}.nav-vertical>li.html{padding-top:1em;padding-bottom:1em}.nav-vertical>li>ul li a{-webkit-transition:color .2s;-o-transition:color .2s;transition:color .2s;color:#666}.nav-vertical>li>ul li a:hover{opacity:1;color:#111}.nav-vertical>li>ul{margin:0 0 2em;padding-left:1em}.nav .children{position:fixed;opacity:0;left:-99999px;-webkit-transition:background-color .6s,opacity .3s,-webkit-transform .3s;transition:background-color .6s,opacity .3s,-webkit-transform .3s;-o-transition:background-color .6s,transform .3s,opacity .3s;transition:background-color .6s,transform .3s,opacity .3s;transition:background-color .6s,transform .3s,opacity .3s,-webkit-transform .3s;-webkit-transform:translateX(-10px);-ms-transform:translateX(-10px);transform:translateX(-10px)}.nav:not(.nav-slide) .active>.children{position:inherit;opacity:1;left:auto;padding-bottom:30px;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}.nav-sidebar.nav-vertical>li.menu-item.active,.nav-sidebar.nav-vertical>li.menu-item:hover{background-color:rgba(0,0,0,.05)}.nav-sidebar.nav-vertical>li+li{border-top:1px solid #ececec}.dark .nav-sidebar.nav-vertical>li+li{border-color:rgba(255,255,255,.2)}.nav-vertical>li+li,.nav-vertical-fly-out>li+li{border-top:1px solid #ececec}.nav-vertical.nav-line>li>a:before{right:-2px;z-index:1;left:auto;width:3px;height:100%}.nav-vertical.nav-tabs>li>a{border:0}.nav-vertical.nav-tabs>li.active>a{border-left:3px solid #446084}.text-center .toggle{margin-left:-35px}.text-center .nav-vertical li{border:0}.text-center.nav-vertical li li,.text-center .nav-vertical li li{padding-left:0}@media screen and (max-width:549px){.small-nav-vertical{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-flow:column;flex-flow:column;margin-bottom:20px}.small-nav-vertical>li{list-style:none;margin:0!important;width:100%;border-bottom:1px solid #ececec}}.nav-vertical .mega-menu-item{width:100%}.nav-vertical .social-icons,.nav-vertical .header-button{display:block;width:100%}@media screen and (min-width:849px){.col-divided>.col-inner>.nav-wrapper>.nav-vertical{width:calc(100% + 31px)}}.header-vertical-menu__opener{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:12px 15px;width:250px;height:50px;font-weight:600;font-size:.9em;background-color:#446084}.header-vertical-menu__opener .icon-menu{font-size:1.7em;margin-right:10px}.header-vertical-menu__tagline{display:block;font-size:.9em;font-weight:400;line-height:1.3}.header-vertical-menu__title{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.header-vertical-menu__fly-out{position:absolute;z-index:9;opacity:0;visibility:hidden;width:250px;background-color:#fff}.header-vertical-menu__fly-out .nav-vertical-fly-out{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.header-vertical-menu__fly-out .nav-vertical-fly-out>li.menu-item{position:static;margin:0;list-style:none}.header-vertical-menu__fly-out .nav-vertical-fly-out>li.menu-item[class^=label-]>a:after,.header-vertical-menu__fly-out .nav-vertical-fly-out>li.menu-item[class*=" label-"]>a:after{top:0;-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.header-vertical-menu__fly-out .nav-vertical-fly-out>li.menu-item>a>i.icon-angle-down{margin-left:auto;margin-right:-.1em;-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3;-webkit-transform:rotate(-90deg);-ms-transform:rotate(-90deg);transform:rotate(-90deg)}.header-vertical-menu__fly-out .nav-vertical-fly-out>li.menu-item>a{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:10px 15px}.header-vertical-menu__fly-out .nav-vertical-fly-out li.has-icon-left>a>i,.header-vertical-menu__fly-out .nav-vertical-fly-out li.has-icon-left>a>svg,.header-vertical-menu__fly-out .nav-vertical-fly-out li.has-icon-left>a>img{margin-right:10px}.header-vertical-menu__fly-out .nav-top-link{font-size:.9em;-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.header-vertical-menu__fly-out .current-dropdown .nav-dropdown{top:0;left:100%!important}.header-vertical-menu__fly-out .current-dropdown.menu-item-design-custom-size .nav-dropdown{min-height:100%}.header-vertical-menu__fly-out--open{opacity:1;visibility:visible}.stuck .header-vertical-menu__fly-out,.sticky-hide-on-scroll--active .header-vertical-menu__fly-out{opacity:0;visibility:hidden}.header-wrapper:not(.stuck) .header-vertical-menu__fly-out{-webkit-transition:opacity .25s,visibility .25s;-o-transition:opacity .25s,visibility .25s;transition:opacity .25s,visibility .25s}.header-vertical-menu__fly-out.has-shadow{-webkit-box-shadow:1px 1px 15px rgba(0,0,0,.15);box-shadow:1px 1px 15px rgba(0,0,0,.15)}.header-vertical-menu:hover .header-vertical-menu__fly-out{opacity:1;visibility:visible}.badge-container{margin:30px 0 0 0}.badge{display:table;z-index:20;pointer-events:none;height:2.8em;width:2.8em;-webkit-backface-visibility:hidden;backface-visibility:hidden}.badge.top{left:0}.badge-inner{display:table-cell;vertical-align:middle;text-align:center;width:100%;height:100%;background-color:#446084;line-height:.85;color:#fff;font-weight:bolder;padding:2px;white-space:nowrap;-webkit-transition:background-color .3s,color .3s,border .3s;-o-transition:background-color .3s,color .3s,border .3s;transition:background-color .3s,color .3s,border .3s}.badge-small{width:2.3em;height:2.3em}.badge-small .badge-inner{line-height:.7}.badge+.badge{opacity:.9;width:2.5em;height:2.5em}.badge+.badge+.badge{opacity:.8}.badge-frame .badge-inner,.badge-outline .badge-inner{color:#446084;background-color:#fff;border:2px solid currentColor}.has-hover:hover .badge-outline .badge-inner{border-color:#446084;background-color:#446084;color:#fff}.badge-outline,.badge-circle{margin-left:-.4em}.badge-circle-inside{margin-left:1em}.badge-circle+.badge{margin-top:-.4em;margin-left:-.4em}.badge-circle-inside .badge-inner,.badge-circle .badge-inner{border-radius:999px}.badge-frame .badge-inner,.widget .badge-outline .badge-inner{background-color:transparent}.badge-frame{height:2em;margin-left:-4px}.widget .badge{margin:0!important}.dark .widget .badge-outline .badge-inner{color:#fff;opacity:.7}.row-collapse .badge-circle{margin-left:15px}.banner{position:relative;background-color:#446084;width:100%;min-height:30px}.banner-bg{overflow:hidden}.banner-layers{max-height:100%;height:100%;position:relative}@media(max-width:549px){.banner-layers{overflow:auto;-webkit-overflow-scrolling:touch}}.banner-layers>*{position:absolute!important}.dark .banner a{color:#fff}.video-bg{-o-object-fit:cover;object-fit:cover;-o-object-position:50% 50%;object-position:50% 50%;font-family:"object-fit: cover; object-position: center center;";position:absolute;width:100%;height:100%}@media(min-width:549px){.has-video .bg{display:none}}.box{width:100%;position:relative;margin:0 auto}.box>a{width:100%;display:block}.box a{display:inline-block}.box,.box-image,.box-text{-webkit-transition:opacity .3s,background-color .3s,-webkit-transform .3s;transition:opacity .3s,background-color .3s,-webkit-transform .3s;-o-transition:opacity .3s,transform .3s,background-color .3s;transition:opacity .3s,transform .3s,background-color .3s;transition:opacity .3s,transform .3s,background-color .3s,-webkit-transform .3s}.box-image>a,.box-image>div>a{display:block}.box-text{padding-top:.7em;padding-bottom:1.4em;position:relative;width:100%;font-size:.9em}.has-shadow .box-text{padding-left:1.2em;padding-right:1.2em}@media(max-width:549px){.box-text{font-size:85%}}.box-image{position:relative;height:auto;margin:0 auto;overflow:hidden}.box-image[style*=-radius]{-webkit-mask-image:-webkit-radial-gradient(white,black)}.box-image-inner{position:relative;overflow:hidden;z-index:0}.box-text.text-center{padding-left:10px;padding-right:10px}.box-image img{max-width:100%;width:100%;margin:0 auto}.box-label{overflow:hidden}.box-label .box-text.text-center{-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);left:50%;margin:10% 0}.box-label .box-text.text-right{right:0;left:auto}.box-label .box-text{position:absolute;bottom:0;width:auto;padding:0;margin:10%;padding:.5em 1.5em .55em;background-color:#fff;opacity:.95;-webkit-box-shadow:1px 1px 3px 0 rgba(0,0,0,.1);box-shadow:1px 1px 3px 0 rgba(0,0,0,.1)}.box-label:hover .box-text{opacity:1}.box-badge{overflow:hidden}.box-badge .box-text{background-color:rgba(255,255,255,.95);padding:.8em 1em 1em;position:absolute;bottom:15%;-webkit-transition:background .3s;-o-transition:background .3s;transition:background .3s;z-index:1}.dark .box-badge .box-text{background-color:rgba(0,0,0,.95)}.box-badge:hover .box-text{background-color:#446084}.box-bounce .box-text{padding:15px 15px 20px;z-index:1}.box-bounce:hover .box-text{-webkit-transform:translateY(-15px);-ms-transform:translateY(-15px);transform:translateY(-15px);background-color:#fff}.dark .box-bounce:hover .box-text{background-color:#222}.box-bounce:hover .box-image{-webkit-transform:translateY(-5px);-ms-transform:translateY(-5px);transform:translateY(-5px)}.box-push .box-text{padding:15px 20px;background-color:rgba(255,255,255,.95);max-width:85%;margin:-15% auto 0}.box-overlay .box-text,.box-shade .box-text{position:absolute;width:100%;max-height:100%;bottom:0;padding-left:1.5em;padding-right:1.5em}.box-overlay.dark .box-text,.box-shade.dark .box-text{text-shadow:1px 1px 1px rgba(0,0,0,.5)}.box-none .box-text{display:none!important}.has-post-icon:hover .box-shade .box-text,.has-post-icon:hover .box-overlay .box-text{opacity:0!important}.box-text-middle.box-overlay .box-text,.box-text-middle.box-shade .box-text{position:absolute;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);top:50%;bottom:auto!important;z-index:16;left:0;right:0}.box-text-top.box-overlay .box-text,.box-text-top.box-shade .box-text{position:absolute;top:0;bottom:auto!important;z-index:16;left:0;right:0}.box-vertical .box-text-middle .box-text{position:relative;top:auto;bottom:auto;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}.has-box-vertical .col{width:100%!important;max-width:100%!important}@media screen and (max-width:549px){.box-vertical .box-image{width:100%!important}}@media screen and (min-width:550px){.box-list-view .col{-ms-flex-preferred-size:100%!important;flex-basis:100%!important;max-width:100%!important}.box-list-view .box,.box-vertical{display:table;width:100%}.box-list-view .box .image-right,.box-vertical .image-right{direction:rtl}.box-list-view .box .box-image,.box-list-view .box .box-text,.box-vertical .box-image,.box-vertical .box-text{direction:ltr;display:table-cell;vertical-align:middle}.box-list-view .box .box-text,.box-vertical .box-text{padding-left:1.5em;padding-right:1.5em}.box-list-view .box .box-image,.box-vertical .box-image{width:50%}.box-list-view .box.align-top .box-text,.box-vertical.align-top .box-text{vertical-align:top}}.button,button,input[type=submit],input[type=reset],input[type=button]{position:relative;display:inline-block;background-color:transparent;text-transform:uppercase;font-size:.97em;letter-spacing:.03em;cursor:pointer;font-weight:bolder;text-align:center;color:currentColor;text-decoration:none;border:1px solid transparent;vertical-align:middle;border-radius:0;margin-top:0;margin-right:1em;text-shadow:none;line-height:2.4em;min-height:2.5em;padding:0 1.2em;max-width:100%;-webkit-transition:border .3s,background .3s,opacity .3s,color .3s,-webkit-transform .3s,-webkit-box-shadow .3s;transition:border .3s,background .3s,opacity .3s,color .3s,-webkit-transform .3s,-webkit-box-shadow .3s;-o-transition:transform .3s,border .3s,background .3s,box-shadow .3s,opacity .3s,color .3s;transition:transform .3s,border .3s,background .3s,box-shadow .3s,opacity .3s,color .3s;transition:transform .3s,border .3s,background .3s,box-shadow .3s,opacity .3s,color .3s,-webkit-transform .3s,-webkit-box-shadow .3s;text-rendering:optimizeLegibility;-webkit-box-sizing:border-box;box-sizing:border-box}.button span{display:inline-block;line-height:1.6}.button.is-outline{line-height:2.19em}.nav>li>a.button:hover,.nav>li>a.button{padding-top:0;padding-bottom:0}.nav>li>a.button:hover{color:#fff}.button,input[type=submit],input[type=submit].button,input[type=reset].button,input[type=button].button{color:#fff;background-color:#446084;background-color:var(--primary-color);border-color:rgba(0,0,0,.05)}.button.is-outline,input[type=submit].is-outline,input[type=reset].is-outline,input[type=button].is-outline{border:2px solid currentColor;background-color:transparent}.dark .button.is-form:hover,.button:hover,input[type=submit]:hover,input[type=reset]:hover,input[type=button]:hover{outline:none;opacity:1;color:#fff;-webkit-box-shadow:inset 0 0 0 100px rgba(0,0,0,.2);box-shadow:inset 0 0 0 100px rgba(0,0,0,.2)}.button.is-underline,.button.is-link{background-color:transparent!important;border-color:transparent!important;padding-left:.15em;padding-right:.15em}.button.is-underline:before{content:"";height:2px;background-color:currentColor;opacity:.3;-webkit-transition:all .3s;-o-transition:all .3s;transition:all .3s;position:absolute;bottom:0;left:20%;width:60%}.button.is-underline:hover:before{left:0%;width:100%;opacity:1}.is-link,.is-underline{color:#666}.dark .button.is-underline:hover,.dark .button.is-link:hover{color:#fff;opacity:.8}.button.is-underline:hover,.button.is-link:hover{color:#333;-webkit-box-shadow:none;box-shadow:none}.is-form,button.is-form,input[type=submit].is-form,input[type=reset].is-form,input[type=button].is-form{overflow:hidden;position:relative;background-color:#f9f9f9;text-shadow:1px 1px 1px #fff;color:#666;border:1px solid #ddd;text-transform:none;font-weight:400}.button.is-form:hover{color:#000;background-color:#f1f1f1}.dark .button,.dark input[type=submit],.dark input[type=reset],.dark input[type=button]{color:#fff}.dark .button.is-form,.dark input[type=submit].is-form,.dark input[type=reset].is-form,.dark input[type=button].is-form{color:#000}.is-round{border-radius:99px}.is-shade,.is-bevel,.is-gloss{overflow:hidden}.is-gloss:after,.is-shade:after,.is-bevel:after{content:"";position:absolute;top:0;left:-25%;height:100%;width:150%;-webkit-box-shadow:inset 0 1.2em 0 0 rgba(255,255,255,.1);box-shadow:inset 0 1.2em 0 0 rgba(255,255,255,.1)}.is-shade:after{-webkit-box-shadow:inset 1px 1px 0 0 rgba(255,255,255,.1),inset 0 2em 15px 0 rgba(255,255,255,.2);box-shadow:inset 1px 1px 0 0 rgba(255,255,255,.1),inset 0 2em 15px 0 rgba(255,255,255,.2)}.is-bevel:after{left:0;width:100%;-webkit-box-shadow:inset -.01em -.1em 0 0 rgba(0,0,0,.15);box-shadow:inset -.01em -.1em 0 0 rgba(0,0,0,.15)}.is-outline{color:silver}.is-outline:hover{-webkit-box-shadow:none!important;box-shadow:none!important}input[type=submit],input[type=submit].button,input[type=submit],.primary{background-color:#446084}.primary.is-underline,.primary.is-link,.primary.is-outline{color:#446084}.is-outline:hover,.primary.is-outline:hover{color:#fff;background-color:#446084;border-color:#446084}.success{background-color:#7a9c59}.success.is-underline,.success.is-link,.success.is-outline{color:#7a9c59}.success.is-outline:hover{background-color:#7a9c59;border-color:#7a9c59;color:#fff}.white{background-color:#fff!important;color:#666!important}.white.button.is-outline{background-color:transparent;color:currentColor!important}.white.is-underline,.white.is-link,.white.is-outline{color:#fff!important;background-color:transparent!important}.white.is-outline:hover{background-color:#fff!important;border-color:#fff;color:#666!important}.secondary,.checkout-button,.button.checkout,.button.alt{background-color:#d26e4b}.secondary.is-underline,.secondary.is-link,.secondary.is-outline{color:#d26e4b}.secondary.is-outline:hover{background-color:#d26e4b;border-color:#d26e4b;color:#fff}a.primary:not(.button),a.secondary:not(.button){background-color:transparent}.alert{background-color:#b20000}.alert.is-underline,.alert.is-link,.alert.is-outline{color:#b20000}.alert.is-outline:hover{background-color:#b20000;border-color:#b20000;color:#fff}.text-center .button:first-of-type{margin-left:0!important}.text-right .button:last-of-type,.text-center .button:last-of-type{margin-right:0!important}.button.disabled,button.disabled,.button[disabled],button[disabled]{opacity:.6}.header-buttons .button{margin-bottom:0;margin-right:.65em}.header-button{display:inline-block}.header-button .plain.is-outline:not(:hover){color:#999}.nav-dark .header-button .plain.is-outline:not(:hover){color:#fff}.header-button .button{margin:0}.scroll-for-more{margin-left:0!important}.scroll-for-more:not(:hover){opacity:.7}.flex-col button,.flex-col .button,.flex-col input{margin-bottom:0}code{padding:.2rem .5rem;margin:0 .2rem;font-size:.9em;background:#f1f1f1;border:1px solid #e1e1e1;border-radius:4px}pre>code{display:block;padding:1rem 1.5rem;white-space:pre}.dark code{border-color:#000;background-color:rgba(0,0,0,.5)}.is-divider{height:3px;display:block;background-color:rgba(0,0,0,.1);margin:1em 0 1em;width:100%;max-width:30px}.widget .is-divider{margin-top:.66em}.dark .is-divider{background-color:rgba(255,255,255,.3)}form{margin-bottom:0}input[type=email],input[type=date],input[type=search],input[type=number],input[type=text],input[type=tel],input[type=url],input[type=password],textarea,select,.select-resize-ghost,.select2-container .select2-choice,.select2-container .select2-selection{-webkit-box-sizing:border-box;box-sizing:border-box;border:1px solid #ddd;padding:0 .75em;height:2.507em;font-size:.97em;border-radius:0;max-width:100%;width:100%;vertical-align:middle;background-color:#fff;color:#333;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1);-webkit-transition:color .3s,border .3s,background .3s,opacity .3s;-o-transition:color .3s,border .3s,background .3s,opacity .3s;transition:color .3s,border .3s,background .3s,opacity .3s}input:hover,textarea:hover,select:hover{-webkit-box-shadow:inset 0 -1.8em 1em 0 rgba(0,0,0,0);box-shadow:inset 0 -1.8em 1em 0 rgba(0,0,0,0)}input[type=email],input[type=search],input[type=number],input[type=url],input[type=tel],input[type=text],textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none}textarea{padding-top:.7em;min-height:120px}input[type=email]:focus,input[type=search]:focus,input[type=number]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=password]:focus,textarea:focus,select:focus{-webkit-box-shadow:0 0 5px #ccc;box-shadow:0 0 5px #ccc;opacity:1!important;outline:0;color:#333;background-color:#fff}label,legend{font-weight:700;display:block;font-size:.9em;margin-bottom:.4em}legend{width:100%;font-size:1em;text-transform:uppercase;font-weight:700;border-bottom:1px solid #f1f1f1;padding-bottom:10px;margin:30px 0 15px}fieldset{border-width:0;padding:0}input[type=checkbox],input[type=radio]{display:inline;margin-right:10px;font-size:16px}label>.label-body{display:inline-block;font-weight:400;margin-left:.5em}abbr[title=required]{color:#b20000}input[type=checkbox]+label,input[type=radio]+label{display:inline}select,.select-resize-ghost,.select2-container .select2-choice,.select2-container .select2-selection{-webkit-box-shadow:inset 0 -1.4em 1em 0 rgba(0,0,0,.02);box-shadow:inset 0 -1.4em 1em 0 rgba(0,0,0,.02);background-color:#fff;-webkit-appearance:none;-moz-appearance:none;background-image:url("data:image/svg+xml;charset=utf8, %3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23333' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='feather feather-chevron-down'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");background-position:right .45em top 50%;background-repeat:no-repeat;padding-right:1.4em;background-size:auto 16px;border-radius:0;display:block}.select-resize-ghost{display:inline-block;width:auto;position:absolute;opacity:0}select.resize-select{width:55px}.select2-selection__arrow b{border-color:transparent!important}.select2-container .selection .select2-selection--multiple{padding:10px;height:auto;max-height:200px;background-image:none;line-height:1.7em}.select2-container .selection .select2-selection--multiple .select2-selection__choice{padding:5px}@media screen and (-ms-high-contrast:active),(-ms-high-contrast:none){select::-ms-expand{display:none}select:focus::-ms-value{background:transparent;color:currentColor}}.form-flat input:not([type=submit]),.form-flat textarea,.form-flat select{background-color:rgba(0,0,0,.03);-webkit-box-shadow:none;box-shadow:none;border-color:rgba(0,0,0,.09);color:currentColor!important;border-radius:99px}.form-flat button,.form-flat input{border-radius:99px}.form-flat textarea{border-radius:15px}.form-flat .flex-row .flex-col,.flex-row.form-flat .flex-col{padding-right:4px}.dark .form-flat input:not([type=submit]),.dark .form-flat textarea,.dark .form-flat select,.nav-dark .form-flat input:not([type=submit]),.nav-dark .form-flat textarea,.nav-dark .form-flat select{background-color:rgba(255,255,255,.2)!important;border-color:rgba(255,255,255,.09);color:#fff}.dark .form-flat select option{color:#333}.nav-dark .form-flat select,.dark .form-flat select{background-image:url("data:image/svg+xml;charset=utf8, %3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='feather feather-chevron-down'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E")}.nav-dark .form-flat input::-webkit-input-placeholder,.dark .form-flat input::-webkit-input-placeholder{color:#fff}.form-flat .button.icon{color:currentColor!important;border-color:transparent!important;background-color:transparent!important;-webkit-box-shadow:none;box-shadow:none}.form-minimal input:not([type=submit]),.form-minimal textarea,.form-minimal select{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.form-minimal.quantity .qty{max-width:2em;border-left:0;border-right:0}input.wpcf7-not-valid,.woocommerce-invalid input{border-color:#b20000;color:#b20000}.woocommerce-invalid select{border-color:#b20000}.woocommerce-invalid input.input-checkbox{outline:1px solid #b20000;outline-offset:1px}.select2-container{text-align:left}.form-row .select2-container{margin-bottom:1em}.select2-search__field{margin-bottom:0}.select2-container--default .select2-selection--single .select2-selection__arrow{width:30px}.select2-container .select2-choice>.select2-chosen,.select2-container .select2-selection--single .select2-selection__rendered,.select2-selection{padding:0;line-height:2.507em}.select2-container--default .select2-selection--single .select2-selection__arrow{height:2.507em}.fl-wrap{position:relative}.loading-site .fl-labels label[for]:first-child{display:none}.fl-labels .fl-wrap label[for]:first-child{-webkit-transition:all .3s;-o-transition:all .3s;transition:all .3s;font-size:12px;white-space:nowrap;position:absolute;line-height:1;top:.5em;opacity:0;pointer-events:none;left:1.1em;font-weight:400}.dark .fl-wrap label{color:#000}.fl-wrap.fl-is-active>label[for]:first-child{z-index:1;opacity:.8}.fl-labels .form-row input:not([type=checkbox]),.fl-labels .form-row textarea,.fl-labels .form-row select{height:3.0084em;-webkit-transition:padding .3s;-o-transition:padding .3s;transition:padding .3s}.form-row .fl-is-active input,.form-row .fl-is-active textarea{padding-top:1.1em;padding-bottom:.5em}.form-row .fl-is-active select{padding-top:1.1em;padding-bottom:.4em}.icon-box .icon-box-img{margin-bottom:1em;max-width:100%;position:relative}.slider>.icon-box,.flickity-slider>.icon-box{padding-right:3%!important;padding-left:3%!important}.icon-box-img svg,.icon-box-img img{padding-top:.2em;width:100%}.icon-box-img svg{width:100%;height:100%;-webkit-transition:all .3s;-o-transition:all .3s;transition:all .3s;fill:currentColor}.icon-box-img svg path{fill:currentColor}.icon-box:hover .has-icon-bg svg path,.icon-box:hover .has-icon-bg svg,.icon-box:hover .has-icon-bg i{fill:#fff}.has-icon-bg .icon{padding-top:100%;height:0;overflow:hidden;position:relative}.has-icon-bg .icon .icon-inner{color:#446084;position:absolute;height:100%;width:100%;top:0;border:2px solid currentColor;border-radius:100%;-webkit-transition:all .3s;-o-transition:all .3s;transition:all .3s}.icon-box:hover .has-icon-bg .icon .icon-inner{background-color:currentColor}.has-icon-bg .icon svg,.has-icon-bg .icon i,.has-icon-bg .icon img{position:absolute;left:0;-o-object-fit:cover;object-fit:cover;padding:0;top:50%;margin:0;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);width:60%;margin-left:20%;margin-right:20%}.icon-box-left .has-icon-bg .icon{position:absolute;width:100%}.icon-box-left,.icon-box-right{-js-display:flex;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;width:100%}.icon-box-left .icon-box-img,.icon-box-right .icon-box-img{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin-bottom:0;max-width:200px}.icon-box-left .icon-box-text,.icon-box-right .icon-box-text{-webkit-box-flex:1;-ms-flex:1 1 0%;flex:1 1 0%}.icon-box-right .icon-box-text{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.icon-box-left .icon-box-img+.icon-box-text{padding-left:1em}.icon-box-right .icon-box-img+.icon-box-text{padding-right:1em}.icon-box-center .icon-box-img{margin:0 auto 1em}.links>li>a:before,i[class^=icon-],i[class*=" icon-"]{font-family:"fl-icons"!important;font-display:block;speak:none!important;margin:0;padding:0;display:inline-block;font-style:normal!important;font-weight:normal!important;font-variant:normal!important;text-transform:none!important;position:relative;line-height:1.2}.widget-title i{opacity:.35;margin-right:4px}button i,.button i{vertical-align:middle;top:-1.5px}.button.open-video i{top:-.027em}a.remove,a.icon-remove{display:block;width:24px;height:24px;font-size:15px!important;line-height:19px!important;border-radius:100%;color:#ccc;font-weight:700;text-align:center;border:2px solid currentColor}button.icon:not(.button),a.icon:not(.button){font-family:sans-serif;margin-left:.25em;margin-right:.25em;font-size:1.2em}.header a.icon:not(.button){margin-left:.3em;margin-right:.3em}.header .nav-small a.icon:not(.button){font-size:1em}.button.icon{margin-left:.12em;margin-right:.12em;min-width:2.5em;padding-left:.6em;padding-right:.6em;display:inline-block}.button.icon i{font-size:1.2em}.button.icon i+span{padding-right:.5em}.button.icon.is-small{border-width:1px}.button.icon.is-small i{top:-1px}.button.icon.circle{padding-left:0;padding-right:0}.button.icon.circle>span{margin:0 8px}.button.icon.circle>span+i{margin-left:-4px}.button.icon.circle>i{margin:0 8px}.button.icon.circle>i+span{margin-left:-4px}.button.icon.circle>i:only-child{margin:0}.nav>li>a>i{vertical-align:middle;-webkit-transition:color .3s;-o-transition:color .3s;transition:color .3s;font-size:20px}.nav>li>a>i+span{margin-left:5px}.nav li.has-icon-left>a>i,.nav li.has-icon-left>a>svg,.nav li.has-icon-left>a>img{margin-right:5px}.nav>li>a>span+i{margin-left:5px}.nav-small>li>a>i{font-size:1em}.nav>li>a>i.icon-search{font-size:1.2em}.nav>li>a>i.icon-menu{font-size:1.9em}.nav>li.has-icon>a>i{min-width:1em}.nav-vertical>li>a>i{font-size:16px;opacity:.6}.header-button a.icon:not(.button){display:inline-block;padding:6px 0}.header-button a.icon:not(.button) i{font-size:24px}.header-button a.icon:not(.button) i.icon-search{font-size:16px}.nav-small .header-button a.icon:not(.button){padding:3px 0}.button:not(.icon)>i{margin-left:-.15em;margin-right:.4em}.button:not(.icon)>span+i{margin-right:-.15em;margin-left:.4em}.has-dropdown .icon-angle-down{font-size:16px;margin-left:.2em;opacity:.6}.overlay-icon{background-color:rgba(0,0,0,.2);width:3em;color:#fff;height:3em;line-height:2.8em;border-radius:100%;text-align:center;border:2px solid #fff;opacity:.8;-webkit-transition:opacity .2s,-webkit-transform .2s;transition:opacity .2s,-webkit-transform .2s;-o-transition:transform .2s,opacity .2s;transition:transform .2s,opacity .2s;transition:transform .2s,opacity .2s,-webkit-transform .2s}.overlay-icon i{font-size:1.3em;-webkit-transition:color .3s;-o-transition:color .3s;transition:color .3s;top:3px}.has-hover:hover .overlay-icon{opacity:1;-webkit-transform:scale(1.15);-ms-transform:scale(1.15);transform:scale(1.15)}.box-shade .overlay-icon,.box-overlay .overlay-icon{opacity:0}.image-icon{display:inline-block;height:auto;vertical-align:middle;position:relative}span+.image-icon{margin-left:10px}.image-icon img{max-width:32px;min-width:100%}.nav-small .image-icon{width:16px;height:16px;margin:0 5px}.nav-small .image-icon img{vertical-align:top}[data-icon-label]{position:relative}[data-icon-label="0"]:after{display:none}[data-icon-label]:after{content:attr(data-icon-label);position:absolute;font-style:normal;font-family:Arial,Sans-serif!important;top:-10px;right:-10px;font-weight:bolder;background-color:#d26e4b;-webkit-box-shadow:1px 1px 3px 0 rgba(0,0,0,.3);box-shadow:1px 1px 3px 0 rgba(0,0,0,.3);font-size:11px;padding-left:2px;padding-right:2px;opacity:.9;line-height:17px;letter-spacing:-.5px;height:17px;min-width:17px;border-radius:99px;color:#fff;text-align:center;z-index:1;-webkit-transition:-webkit-transform .2s;transition:-webkit-transform .2s;-o-transition:transform .2s;transition:transform .2s;transition:transform .2s,-webkit-transform .2s}.nav-small [data-icon-label]:after{min-width:13px;top:-4px;right:-10px;height:13px;font-size:10px;line-height:13px}.button [data-icon-label]:after{top:-12px;right:-12px}.reveal-icon i{width:1em}.reveal-icon i,.reveal-icon span{display:inline-block;-webkit-transition:opacity .3s,-webkit-transform .3s;transition:opacity .3s,-webkit-transform .3s;-o-transition:opacity .3s,transform .3s;transition:opacity .3s,transform .3s;transition:opacity .3s,transform .3s,-webkit-transform .3s}.reveal-icon span{-webkit-transform:translateX(.75em);-ms-transform:translateX(.75em);transform:translateX(.75em)}.reveal-icon i+span{-webkit-transform:translateX(-.75em);-ms-transform:translateX(-.75em);transform:translateX(-.75em)}.reveal-icon:hover>span{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}.reveal-icon:not(:hover) i{opacity:0}img{-webkit-transition:opacity 1s;-o-transition:opacity 1s;transition:opacity 1s;opacity:1}.col-inner>.img:not(:last-child),.col>.img:not(:last-child){margin-bottom:1em}.img{position:relative}.img .img-inner{position:relative;overflow:hidden}.img,.img img{width:100%}.overlay{position:absolute;top:0;bottom:0;height:100%;left:-1px;right:-1px;background-color:rgba(0,0,0,.15);-webkit-transition:opacity .6s,-webkit-transform .3s;transition:opacity .6s,-webkit-transform .3s;-o-transition:transform .3s,opacity .6s;transition:transform .3s,opacity .6s;transition:transform .3s,opacity .6s,-webkit-transform .3s;pointer-events:none}.img .caption{position:absolute;-webkit-transition:-webkit-transform .5s;transition:-webkit-transform .5s;-o-transition:transform .5s;transition:transform .5s;transition:transform .5s,-webkit-transform .5s;-webkit-transform:translateY(100%);-ms-transform:translateY(100%);transform:translateY(100%);max-height:100%!important;overflow-y:auto;bottom:0;padding:4px 10px;font-size:14px;color:#fff;width:100%;background-color:rgba(0,0,0,.3)}.img .caption-show,.img:hover .caption{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}.lazy-load{background-color:rgba(0,0,0,.03)}.has-format,.video-fit,.image-cover{position:relative;height:auto;overflow:hidden;padding-top:100%;background-position:50% 50%;background-size:cover}.video-fit{padding-top:56.5%}.video-fit video,.video-fit iframe,img.back-image,.image-cover img,.has-format img,.has-equal-box-heights .box-image img{right:0;width:100%;height:100%;bottom:0;left:0;top:0;position:absolute;-o-object-position:50% 50%;object-position:50% 50%;-o-object-fit:cover;object-fit:cover;font-family:"object-fit: cover;"}.has-equal-box-heights .box-image{padding-top:100%}.video-fit iframe{-o-object-fit:fill;object-fit:fill}.image-tools{padding:10px;position:absolute}.image-tools a:last-child{margin-bottom:0}.image-tools a.button{display:block}.image-tools.bottom.left{padding-top:0;padding-right:0}.image-tools.top.right{padding-bottom:0;padding-left:0}.image-tools .cart-icon{position:absolute;left:10px;margin:5px;bottom:100%}.image-tools .wishlist-button:hover{background-color:#b20000;border-color:#b20000}@media only screen and (max-device-width:1024px){.image-tools{opacity:1!important;padding:5px}}.overlay-tools{margin-top:10px}.overlay-tools a{display:inline-block;font-size:.8em;background-color:rgba(0,0,0,.4);padding:2px 10px 3px;margin-right:5px;border-radius:99px;text-shadow:none;-webkit-transition:all .3s;-o-transition:all .3s;transition:all .3s}.overlay-tools a:hover{background-color:#fff;color:#000!important}.tag-label{text-transform:uppercase;display:inline-block;font-size:.65em;line-height:1;letter-spacing:1.1px;font-weight:700;border-radius:2px;padding:2px 5px;color:#fff;background-color:rgba(0,0,0,.4);-webkit-transition:background-color .3s,opacity .3s;-o-transition:background-color .3s,opacity .3s;transition:background-color .3s,opacity .3s}.has-hover:hover .tag-label{opacity:1;background-color:#d26e4b}.lightbox-content{background-color:#fff;max-width:875px;margin:0 auto;-webkit-box-shadow:3px 3px 20px 0 rgba(0,0,0,.15);box-shadow:3px 3px 20px 0 rgba(0,0,0,.15);position:relative}.lightbox-content .lightbox-inner{padding:30px 20px}.pswp__bg{background-color:rgba(0,0,0,.6)}@media(min-width:549px){.pswp__top-bar{background-color:transparent!important}}.pswp__item{-webkit-transition:opacity .5s;-o-transition:opacity .5s;transition:opacity .5s;opacity:0}.pswp--visible .pswp__item{opacity:1}.pswp__caption__center{text-align:center}.mfp-bg{top:0;left:0;width:100%;height:100%;z-index:1042;overflow:hidden;position:fixed;background:#0b0b0b;opacity:0;-webkit-transition:opacity .25s;-o-transition:opacity .25s;transition:opacity .25s}.mfp-bg.mfp-ready{opacity:.6}.mfp-bg.mfp-removing{opacity:0!important}.mfp-wrap{top:0;left:0;width:100%;height:100%;z-index:1043;position:fixed;outline:none!important;-webkit-backface-visibility:hidden}.mfp-container{text-align:center;position:absolute;width:100%;height:100%;left:0;top:0;padding:30px;-webkit-box-sizing:border-box;box-sizing:border-box}.mfp-container:before{content:"";display:inline-block;height:100%;vertical-align:middle}.mfp-image-holder{padding:40px 6.66%}.mfp-align-top .mfp-container:before{display:none}.mfp-content{position:relative;display:inline-block;vertical-align:middle;max-width:100%;margin:0 auto;text-align:left;z-index:1045;-webkit-transform:translateY(-30px);-ms-transform:translateY(-30px);transform:translateY(-30px);opacity:0;-webkit-transition:opacity .3s,-webkit-transform .5s;transition:opacity .3s,-webkit-transform .5s;-o-transition:transform .5s,opacity .3s;transition:transform .5s,opacity .3s;transition:transform .5s,opacity .3s,-webkit-transform .5s}.mfp-content-inner{-webkit-box-shadow:1px 1px 5px 0 rgba(0,0,0,.2);box-shadow:1px 1px 5px 0 rgba(0,0,0,.2)}.mfp-ready .mfp-content{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}.mfp-ready.mfp-removing .mfp-content{opacity:0}.mfp-inline-holder .mfp-content,.mfp-ajax-holder .mfp-content{width:100%;cursor:auto}.mfp-ajax-cur{cursor:progress}.mfp-zoom-out-cur,.mfp-zoom-out-cur .mfp-image-holder .mfp-close{cursor:-webkit-zoom-out;cursor:zoom-out}.mfp-zoom{cursor:pointer;cursor:-webkit-zoom-in;cursor:zoom-in}.mfp-auto-cursor .mfp-content{cursor:auto}.mfp-close,.mfp-arrow,.mfp-preloader,.mfp-counter{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mfp-loading.mfp-figure{display:none}.mfp-hide{display:none!important}.mfp-preloader{color:#ccc;position:absolute;top:50%;width:auto;text-align:center;margin-top:-.8em;left:8px;right:8px;z-index:1044}.mfp-preloader a{color:#ccc}.mfp-preloader a:hover{color:#fff}.mfp-s-ready .mfp-preloader{display:none}.mfp-s-error .mfp-content{display:none}.mfp-close{cursor:pointer;outline:none;z-index:1046;-webkit-box-shadow:none;box-shadow:none;position:fixed;top:0;right:0;text-decoration:none;text-align:center;opacity:0;padding:0;mix-blend-mode:difference;margin:0!important;color:#fff;font-style:normal;font-weight:300;font-size:40px;min-height:0;width:40px;-webkit-backface-visibility:hidden;height:40px;line-height:40px;font-family:Arial,monospace;-webkit-transition:opacity .6s,-webkit-transform .6s;transition:opacity .6s,-webkit-transform .6s;-o-transition:opacity .6s,transform .6s;transition:opacity .6s,transform .6s;transition:opacity .6s,transform .6s,-webkit-transform .6s;-webkit-transform:translateY(50%) translateZ(1px);transform:translateY(50%) translateZ(1px)}.mfp-close svg{pointer-events:none}.mfp-content .mfp-close{position:absolute}.mfp-ready .mfp-close{opacity:.6;-webkit-transform:translateY(0) translateZ(1px);transform:translateY(0) translateZ(1px)}.mfp-removing .mfp-close{display:none!important}.mfp-close:hover{opacity:1}.mfp-close-btn-in .mfp-close{top:0!important;color:currentColor}.mfp-counter{position:absolute;top:0;right:0;color:#ccc;font-size:12px;line-height:18px}.mfp-arrow{position:fixed;opacity:.6;color:#fff;mix-blend-mode:difference;top:50%;z-index:1046;margin:0;text-align:center;width:50px;height:50px}.mfp-arrow i{pointer-events:none;font-size:42px!important}.mfp-arrow:hover{opacity:1}.mfp-arrow:active{top:50.1%}.mfp-arrow-left{left:0;-webkit-transform:translateX(100%);-ms-transform:translateX(100%);transform:translateX(100%)}.mfp-arrow-right{right:0;-webkit-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%)}.mfp-ready .mfp-arrow-right,.mfp-ready .mfp-arrow-left{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}.mfp-iframe-holder{padding-top:40px;padding-bottom:40px}.mfp-iframe-holder .mfp-content{line-height:0;width:100%;max-width:900px}.mfp-iframe-holder .mfp-close{top:-40px}.mfp-iframe-scaler{width:100%;height:0;overflow:hidden;padding-top:56.25%}.mfp-iframe-scaler iframe{position:absolute;display:block;top:0;left:0;width:100%;height:100%;-webkit-box-shadow:0 0 8px rgba(0,0,0,.6);box-shadow:0 0 8px rgba(0,0,0,.6);background:#000}img.mfp-img{width:auto;max-width:100%;height:auto;display:block;-webkit-backface-visibility:hidden;backface-visibility:hidden;line-height:0;padding:0 0 40px;margin:0 auto}.mfp-figure{line-height:0}.mfp-figure:after{content:"";position:absolute;left:0;top:0;bottom:40px;display:block;right:0;width:auto;height:auto;z-index:-1;-webkit-box-shadow:0 0 8px rgba(0,0,0,.6);box-shadow:0 0 8px rgba(0,0,0,.6);background:#444}.mfp-figure small{color:#bdbdbd;display:block;font-size:12px;line-height:14px}.mfp-figure figure{margin:0}.mfp-bottom-bar{margin-top:-36px;position:absolute;top:100%;left:0;width:100%;cursor:auto}.mfp-title{font-size:11px;text-align:left;line-height:18px;color:#f3f3f3;word-wrap:break-word;padding-right:36px}.mfp-title a{text-decoration:underline;color:#f3f3f3}.mfp-title a:hover{text-decoration:none;color:#f3f3f3;opacity:.8}.mfp-image-holder .mfp-content{max-width:100%}.mfp-gallery .mfp-image-holder .mfp-figure{cursor:pointer}@media screen and (max-width:800px)and (orientation:landscape),screen and (max-height:300px){.mfp-img-mobile .mfp-image-holder{padding-left:0;padding-right:0}.mfp-img-mobile img.mfp-img{padding:0}.mfp-img-mobile .mfp-figure:after{top:0;bottom:0}.mfp-img-mobile .mfp-figure small{display:inline;margin-left:5px}.mfp-img-mobile .mfp-bottom-bar{background:rgba(0,0,0,.6);bottom:0;margin:0;top:auto;padding:3px 5px;position:fixed;-webkit-box-sizing:border-box;box-sizing:border-box}.mfp-img-mobile .mfp-bottom-bar:empty{padding:0}.mfp-img-mobile .mfp-counter{right:5px;top:3px}}@media(max-width:849px){body.body-scroll-lock--active .mfp-wrap{position:fixed!important;overflow:auto}}.processing,.loading-spin{position:relative}.processing:before,.loading-spin{content:"";margin:0 auto;font-size:10px;text-indent:-9999em;border-top:3px solid rgba(0,0,0,.1)!important;border-right:3px solid rgba(0,0,0,.1)!important;border-bottom:3px solid rgba(0,0,0,.1)!important;opacity:.8;border-left:3px solid #446084;-webkit-animation:spin .6s infinite linear;animation:spin .6s infinite linear;border-radius:50%;width:30px;height:30px;pointer-events:none}.box-image.processing:before,.dark .processing:before,.dark.processing:before,.dark.loading-spin,.dark .loading-spin{border-top:3px solid rgba(0,0,0,.1)!important;border-right:3px solid rgba(0,0,0,.1)!important;border-bottom:3px solid rgba(0,0,0,.1)!important;border-left:3px solid #fff!important}.box-image.processing:after{content:"";background-color:#000;opacity:.1;position:absolute;top:0;left:0;right:0;bottom:0}.box-image.processing .image-tools{opacity:0!important}.woocommerce-checkout.processing:before{position:fixed}.processing:before,.loading-spin.centered{position:absolute;top:50%;left:50%;margin-left:-15px;margin-top:-15px;z-index:99}.loading-spin{border-radius:50%;width:30px;height:30px}.button.loading{opacity:1!important;position:relative;color:rgba(255,255,255,.05);pointer-events:none!important}.button.loading:after{-webkit-animation:spin 500ms infinite linear;animation:spin 500ms infinite linear;border:2px solid #fff;border-radius:32px;border-right-color:transparent!important;border-top-color:transparent!important;content:"";display:block;height:16px;top:50%;margin-top:-8px;left:50%;margin-left:-8px;position:absolute;width:16px}.is-outline .button.loading:after{border-color:#446084}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.ux-menu-link{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.ux-menu-link--active .ux-menu-link__link,.ux-menu-link:hover .ux-menu-link__link{color:rgba(17,17,17,.85)}.dark .ux-menu-link__link{border-bottom-color:rgba(255,255,255,.2)}.dark .ux-menu-link--active .ux-menu-link__link,.dark .ux-menu-link:hover .ux-menu-link__link{color:rgba(255,255,255,.85)}.ux-menu.ux-menu--divider-solid .ux-menu-link:not(:last-of-type) .ux-menu-link__link{border-bottom-style:solid}.ux-menu-link__link{-webkit-box-flex:1;-ms-flex:1;flex:1;min-height:2.5em;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline;padding-top:.3em;padding-bottom:.3em;color:currentColor;-webkit-transition:all .2s;-o-transition:all .2s;transition:all .2s;border-bottom-color:#ececec;border-bottom-width:1px}.ux-menu-link__icon{width:16px;-ms-flex-negative:0;flex-shrink:0;vertical-align:middle}.ux-menu-link__icon+.ux-menu-link__text{padding-left:.5em}.ux-menu-title{-webkit-box-align:center;-ms-flex-align:center;align-items:center;text-transform:uppercase;font-size:.8em;font-weight:bolder;margin-top:5px;color:#000;min-height:3.125em;padding-top:.3em;padding-bottom:.3em}.ux-menu-link+.ux-menu-title{margin-top:5px!important}.dark .ux-menu-title{color:currentColor}.off-canvas .mfp-content{-ms-scrollbar-base-color:#000;-ms-scrollbar-arrow-color:#000;-ms-overflow-style:-ms-autohiding-scrollbar}.off-canvas .nav-vertical>li>a{padding-top:15px;padding-bottom:15px}.off-canvas .nav-vertical li li>a{padding-top:5px;padding-bottom:5px}.off-canvas .hide-for-off-canvas{display:none!important}.off-canvas .hide-for-small,.off-canvas .hide-for-medium{display:inline-block!important}.off-canvas-right .mfp-content,.off-canvas-left .mfp-content{position:fixed;top:0;bottom:0;width:260px;background-color:rgba(255,255,255,.95);left:0;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;-webkit-transition:-webkit-transform .2s;transition:-webkit-transform .2s;-o-transition:transform .2s;transition:transform .2s;transition:transform .2s,-webkit-transform .2s;-webkit-transform:translateX(-270px);-ms-transform:translateX(-270px);transform:translateX(-270px);-webkit-box-shadow:0 0 10px 0 rgba(0,0,0,.5);box-shadow:0 0 10px 0 rgba(0,0,0,.5)}.off-canvas-right.dark .mfp-content,.off-canvas-left.dark .mfp-content{background-color:rgba(0,0,0,.95)}.off-canvas-right .mfp-content{left:auto;right:0;-webkit-transform:translateX(270px);-ms-transform:translateX(270px);transform:translateX(270px)}.off-canvas-center .nav-vertical>li>ul>li a,.off-canvas-center .nav-vertical>li>a{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.off-canvas-center .nav-vertical>li>a{font-size:1.5em}.off-canvas-center .mfp-container{padding:0}.off-canvas-center .mfp-content{padding-top:50px;max-width:700px;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch}.off-canvas-center .mfp-content .searchform{max-width:260px;margin:0 auto}.off-canvas-center.mfp-bg.mfp-ready{opacity:.85}.mfp-bg.off-canvas-center:not(.dark){background-color:#fff;opacity:.95}.off-canvas-center .nav-sidebar.nav-vertical>li{border:0}.off-canvas-center .nav-sidebar.nav-vertical>li>a{padding-right:30px;padding-left:30px}.off-canvas-center .nav-sidebar.nav-vertical>li .toggle{position:absolute;top:15px;right:0}.off-canvas-center:not(.dark) .mfp-close{color:currentColor}.off-canvas.mfp-removing .mfp-content{opacity:0!important}.off-canvas-left.mfp-ready .mfp-content,.off-canvas-right.mfp-ready .mfp-content{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0);opacity:1}.has-off-canvas .off-canvas-blur{-webkit-filter:blur(5px);filter:blur(5px)}.has-off-canvas .off-canvas-zoom{-webkit-transform:scale(.98);-ms-transform:scale(.98);transform:scale(.98)}.has-off-canvas .current-lightbox-clicked{opacity:0!important;-webkit-transform:translateY(-7px);-ms-transform:translateY(-7px);transform:translateY(-7px)}.has-off-canvas.has-off-canvas-right .current-lightbox-clicked,.has-off-canvas.has-off-canvas-left .current-lightbox-clicked{-webkit-transform:translateX(-7px);-ms-transform:translateX(-7px);transform:translateX(-7px)}.off-canvas .sidebar-menu{padding:30px 0}.off-canvas .sidebar-inner{padding:30px 20px}.off-canvas:not(.off-canvas-center) .nav-vertical li>a{padding-left:20px}.off-canvas:not(.off-canvas-center) li.html{padding:20px}.slider-wrapper{position:relative}.slider>.img,.flickity-slider>.img,.slider-wrapper:last-child{margin-bottom:0}.slider,.row-slider{position:relative;scrollbar-width:none}.slider-full .flickity-slider>.col{padding:0!important}.slider-load-first{-webkit-transition:max-height 2s;-o-transition:max-height 2s;transition:max-height 2s;max-height:999px}.slider-load-first:not(.flickity-enabled){max-height:500px}.slider-load-first:not(.flickity-enabled)>div{opacity:0}.slider:not(.flickity-enabled){white-space:nowrap;overflow-y:hidden;overflow-x:scroll;width:auto;-ms-overflow-style:-ms-autohiding-scrollbar}.slider::-webkit-scrollbar,.row-slider::-webkit-scrollbar{width:0px!important;height:0px!important}.row-slider:not(.flickity-enabled){display:block!important}.slider:not(.flickity-enabled)>*{display:inline-block!important;white-space:normal!important;vertical-align:top}.slider:not(.flickity-enabled)>a{width:100%}.slider>div:not(.col),.slider>a,.slider>p,.slider>a>img,.slider>img{width:100%}.flickity-slider>div:not(.col),.flickity-slider>a,.flickity-slider>p,.flickity-slider>a>img,.flickity-slider>img,.flickity-slider>figure{width:100%!important;padding:0;margin:0;-webkit-transition:opacity .6s,-webkit-transform .6s,-webkit-box-shadow .6s;transition:opacity .6s,-webkit-transform .6s,-webkit-box-shadow .6s;-o-transition:transform .6s,opacity .6s,box-shadow .6s;transition:transform .6s,opacity .6s,box-shadow .6s;transition:transform .6s,opacity .6s,box-shadow .6s,-webkit-transform .6s,-webkit-box-shadow .6s}.flickity-slider>.row:not(.is-selected){opacity:0}.flickity-enabled{position:relative;display:block}.flickity-enabled:focus{outline:none}.flickity-viewport{overflow:hidden;position:relative;height:100%;width:100%}.flickity-slider{position:absolute;width:100%;height:100%}.slider-has-parallax .bg{-webkit-transition:opacity .3s!important;-o-transition:opacity .3s!important;transition:opacity .3s!important}.is-dragging .flickity-viewport .flickity-slider{pointer-events:none}.flickity-enabled.is-draggable{-webkit-tap-highlight-color:transparent;tap-highlight-color:transparent;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.flickity-enabled.is-draggable .flickity-viewport{cursor:move;cursor:-webkit-grab;cursor:grab}.flickity-enabled.is-draggable .flickity-viewport.is-pointer-down{cursor:-webkit-grabbing;cursor:grabbing}.flickity-prev-next-button{position:absolute;top:40%;bottom:40%;background-color:transparent;margin:0;padding:0;width:36px;color:#111;border:none;cursor:pointer;opacity:0;-webkit-transition:opacity .3s,background .3s,-webkit-transform .3s,-webkit-box-shadow .3s;transition:opacity .3s,background .3s,-webkit-transform .3s,-webkit-box-shadow .3s;-o-transition:transform .3s,opacity .3s,background .3s,box-shadow .3s;transition:transform .3s,opacity .3s,background .3s,box-shadow .3s;transition:transform .3s,opacity .3s,background .3s,box-shadow .3s,-webkit-transform .3s,-webkit-box-shadow .3s}.flickity-prev-next-button.next{-webkit-transform:translateX(-20%);-ms-transform:translateX(-20%);transform:translateX(-20%);right:2%}.flickity-prev-next-button.previous{-webkit-transform:translateX(20%);-ms-transform:translateX(20%);transform:translateX(20%);left:2%}.slider-show-nav .flickity-prev-next-button,.slider:hover .flickity-prev-next-button{opacity:.7;-webkit-transform:translateX(0)!important;-ms-transform:translateX(0)!important;transform:translateX(0)!important}.slider .flickity-prev-next-button:hover{-webkit-box-shadow:none;box-shadow:none;opacity:1}.slider .flickity-prev-next-button:hover svg,.slider .flickity-prev-next-button:hover .arrow{fill:#446084}@media(min-width:850px){.slider-nav-outside .flickity-prev-next-button.next{right:auto;left:100%}.slider-nav-outside .flickity-prev-next-button.previous{left:auto;right:100%}}.flickity-prev-next-button:disabled,button.flickity-prev-next-button[disabled]{opacity:0!important;background:none!important;cursor:auto;-webkit-box-shadow:none!important;box-shadow:none!important;pointer-events:none}.flickity-prev-next-button svg{position:absolute;padding:5px;left:50%;top:50%;width:100%;max-width:100%;padding:20%;max-height:100%;height:auto;-webkit-transition:all .3s;-o-transition:all .3s;transition:all .3s;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.slider-nav-push:not(.slider-nav-reveal) .flickity-prev-next-button{margin-top:-10%}.slider-nav-push.slider-nav-reveal .flickity-prev-next-button svg{margin-top:-40px}.flickity-prev-next-button svg,.flickity-prev-next-button .arrow{border-color:currentColor;fill:currentColor;-webkit-transition:all .3s;-o-transition:all .3s;transition:all .3s}.slider-auto-height,.animate-height{-webkit-transition:height .2s;-o-transition:height .2s;transition:height .2s}.flickity-prev-next-button.no-svg{color:#111;font-size:26px}.slider-no-arrows .flickity-prev-next-button{display:none!important}.slider-type-fade .flickity-slider{-webkit-transform:none!important;-ms-transform:none!important;transform:none!important}.slider-type-fade .flickity-slider>*{opacity:0;z-index:1;left:0!important}.slider-type-fade .flickity-slider>*.is-selected{opacity:1;z-index:2}.slider-type-fade .flickity-prev-next-button,.slider-type-fade .flickity-page-dots{z-index:3}.flickity-page-dots{position:absolute;bottom:15px;left:20%;right:20%;padding:0;margin:0;list-style:none;text-align:center;line-height:1}.slider-nav-outside .flickity-page-dots,.row-slider .flickity-page-dots{bottom:0}.flickity-rtl .flickity-page-dots{direction:rtl}.flickity-page-dots .dot{display:inline-block;width:12px;height:12px;margin:0 5px;border:3px solid #111;border-radius:50%;opacity:.4;cursor:pointer;-webkit-transition:opacity .3s;-o-transition:opacity .3s;transition:opacity .3s}.nav-dots-small .flickity-page-dots .dot,.row-slider .flickity-page-dots .dot{opacity:.2;width:10px;height:10px;border:0;background-color:#111}.flickity-page-dots .dot:hover{opacity:.7}.flickity-page-dots .dot.is-selected{background-color:#111;opacity:1!important}.slider-nav-dots-dashes .flickity-page-dots .dot{height:4px;width:40px;margin:0;border-radius:0}.slider-nav-dots-dashes-spaced .flickity-page-dots .dot{height:4px;width:40px;border-radius:0}.slider-nav-dots-simple .flickity-page-dots .dot{background-color:#111}.slider-nav-dots-square .flickity-page-dots .dot{border-radius:0}.slider-nav-circle .flickity-prev-next-button svg,.slider-nav-circle .flickity-prev-next-button .arrow{border-radius:100%;border:2px solid currentColor}.slider-nav-circle .flickity-prev-next-button:hover svg,.slider-nav-circle .flickity-prev-next-button:hover .arrow{background-color:#446084;border-color:#446084;fill:#fff!important}.slider-nav-outside.slider-nav-circle .next{-webkit-transform:translateX(-50%)!important;-ms-transform:translateX(-50%)!important;transform:translateX(-50%)!important}.slider-nav-outside.slider-nav-circle .previous{-webkit-transform:translateX(50%)!important;-ms-transform:translateX(50%)!important;transform:translateX(50%)!important}.slider-nav-reveal{padding-top:0;overflow:hidden}.slider-nav-reveal .flickity-prev-next-button:hover,.slider-nav-reveal .flickity-prev-next-button{width:30px;top:-2px;bottom:0;height:100%;background-color:#fff;-webkit-box-shadow:0 -150px 15px 0 rgba(0,0,0,.3);box-shadow:0 -150px 15px 0 rgba(0,0,0,.3);margin:0!important}.dark .slider-nav-reveal .flickity-prev-next-button{border-radius:99px;background-color:rgba(0,0,0,.3);color:#fff}.slider-nav-reveal .flickity-prev-next-button.next{-webkit-transform:translateX(10%);-ms-transform:translateX(10%);transform:translateX(10%);left:auto!important;right:-1px!important}.slider-nav-reveal .flickity-prev-next-button.previous{-webkit-transform:translateX(-10%);-ms-transform:translateX(-10%);transform:translateX(-10%);transform:translateX(-10%);right:auto!important;left:-1px!important}.slider-nav-light .flickity-prev-next-button{color:#fff}.slider-nav-light .flickity-prev-next-button svg,.slider-nav-light .flickity-prev-next-button .arrow{fill:#fff}.slider-nav-light .flickity-page-dots .dot{border-color:#fff}.slider-nav-light .flickity-page-dots .dot.is-selected{background-color:#fff}.slider-nav-light.slider-nav-dots-simple .flickity-page-dots .dot{background-color:#fff}.slider-style-container .flickity-slider>*,.slider-style-shadow .flickity-slider>*,.slider-style-focus .flickity-slider>*{max-width:1080px;margin:0 auto}.slider-style-container:not(.flickity-enabled) .ux_banner,.slider-style-shadow:not(.flickity-enabled) .ux_banner,.slider-style-focus:not(.flickity-enabled) .ux_banner{opacity:0!important}.slider-style-container .ux_banner,.slider-style-shadow .ux_banner,.slider-style-focus .ux_banner{opacity:1}.slider-style-container .flickity-slider>*:not(.is-selected),.slider-style-shadow .flickity-slider>*:not(.is-selected),.slider-style-focus .flickity-slider>*:not(.is-selected){opacity:.5}.slider-style-shadow{padding:15px 0 25px}.slider-style-shadow .flickity-slider>*:before{content:"";position:absolute;bottom:-6px;height:100px;left:-10%;right:-10%;background-size:100% 100%;z-index:-2;background-image:url(../../../themes/flatsome/assets/img/shadow@2x.png)}.slider-style-shadow .flickity-slider>*:not(.is-selected){-webkit-transform:scale(.9);-ms-transform:scale(.9);transform:scale(.9);z-index:-1;opacity:1}.slider-style-shadow .flickity-slider>*:not(.is-selected):before{height:200px;opacity:.5}.slider-style-shadow .flickity-slider>.is-selected{-webkit-transform:scale(.95);-ms-transform:scale(.95);transform:scale(.95)}.slider-style-focus{background-color:transparent;padding:30px 0}.slider-style-focus .flickity-page-dots{bottom:6px}.slider-style-focus .flickity-slider>*{max-width:1050px}.slider-style-focus .flickity-slider>*:not(.is-selected){-webkit-transform:scale(.93);-ms-transform:scale(.93);transform:scale(.93)}@media screen and (max-width:549px){.slider-wrapper .flickity-prev-next-button{display:none}.row-slider .flickity-prev-next-button{width:20px!important;opacity:.8;background-color:transparent!important;-webkit-box-shadow:none!important;box-shadow:none!important;-webkit-transform:translateX(0)!important;-ms-transform:translateX(0)!important;transform:translateX(0)!important}.row-slider .flickity-prev-next-button svg{padding:3px!important;border:0!important}.flickity-page-dots{pointer-events:none}.flickity-slider .banner-layers{overflow:hidden}}.stack{--stack-gap:0;-js-display:flex;display:-webkit-box;display:-ms-flexbox;display:flex}.stack>.text>*:first-child{margin-top:0}.stack>.text>*:last-child{margin-bottom:0}.stack-row{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.stack-row>*{margin:0!important}.stack-row>*~*{margin-left:var(--stack-gap)!important}.stack-col{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.stack-col>*{margin:0!important}.stack-col>*~*{margin-top:var(--stack-gap)!important}.items-stretch{-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.items-start{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.items-center{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.items-end{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.items-baseline{-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.justify-start{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.justify-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.justify-end{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.justify-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.justify-around{-ms-flex-pack:distribute;justify-content:space-around}@media(max-width:849px){.md\:stack-row{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.md\:stack-row>*{margin:0!important}.md\:stack-row>*~*{margin-left:var(--stack-gap)!important}.md\:stack-col{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.md\:stack-col>*{margin:0!important}.md\:stack-col>*~*{margin-top:var(--stack-gap)!important}.md\:items-stretch{-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.md\:items-start{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.md\:items-center{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.md\:items-end{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.md\:items-baseline{-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.md\:justify-start{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.md\:justify-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.md\:justify-end{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.md\:justify-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.md\:justify-around{-ms-flex-pack:distribute;justify-content:space-around}}@media(max-width:549px){.sm\:stack-row{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.sm\:stack-row>*{margin:0!important}.sm\:stack-row>*~*{margin-left:var(--stack-gap)!important}.sm\:stack-col{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.sm\:stack-col>*{margin:0!important}.sm\:stack-col>*~*{margin-top:var(--stack-gap)!important}.sm\:items-stretch{-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.sm\:items-start{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.sm\:items-center{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.sm\:items-end{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.sm\:items-baseline{-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.sm\:justify-start{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.sm\:justify-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.sm\:justify-end{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.sm\:justify-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.sm\:justify-around{-ms-flex-pack:distribute;justify-content:space-around}}table{width:100%;margin-bottom:1em;border-color:#ececec;border-spacing:0}th,td{padding:.5em;text-align:left;border-bottom:1px solid #ececec;line-height:1.3;font-size:.9em}td{color:#666}th:first-child,td:first-child{padding-left:0}th:last-child,td:last-child{padding-right:0}.dark th,.dark td{border-color:rgba(255,255,255,.08)}td label,td .label,td input,td select,td form,td dl,td p{margin:.5em 0}label{color:#222}.table{display:table}.table-cell{display:table-cell;vertical-align:middle}@media(max-width:849px){.touch-scroll-table{width:calc(100% + 30px);padding:15px;position:relative;overflow-y:hidden;margin-left:-15px;overflow-x:scroll;-webkit-box-shadow:inset -2px 0 18px -5px rgba(0,0,0,.5);box-shadow:inset -2px 0 18px -5px rgba(0,0,0,.5)}.touch-scroll-table table{width:100%}}.text-box{max-height:100%}.text-box .text-box-content{position:relative;z-index:10;-webkit-backface-visibility:hidden;backface-visibility:hidden}.text-box-square .text,.text-box-circle .text{height:0;padding:100% 0 0 0!important;background-color:rgba(0,0,0,.9)}.text-box-square .text-inner,.text-box-circle .text-inner{position:absolute;left:0;right:0;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.text-box-circle .border,.text-box-circle .text-box-content{border-radius:100%!important}a{color:#334862;text-decoration:none}a:focus,.button:focus,button:focus,input:focus{outline:none}a.plain{color:currentColor;-webkit-transition:color .3s,opacity .3s,-webkit-transform .3s;transition:color .3s,opacity .3s,-webkit-transform .3s;-o-transition:color .3s,opacity .3s,transform .3s;transition:color .3s,opacity .3s,transform .3s;transition:color .3s,opacity .3s,transform .3s,-webkit-transform .3s}.nav-dark a.plain:hover{opacity:.7}a:hover,a.remove:hover,a.icon-circle:hover{color:#000}.dark a,.dark .widget a{color:currentColor}.dark a:hover,.dark .widget a:hover{color:#fff}ul.links{margin:5px 0;font-size:.85em}ul.links li{margin:0 .4em;display:inline-block}ul.links li a{color:currentColor}ul.links li:before{font-family:"fl-icons";display:inline-block;margin-right:5px}ul.links li:first-child{margin-left:0}ul.links li:last-child{margin-right:0}.next-prev-nav .flex-col{padding:.7em 0}.next-prev-nav i{font-size:2em;margin:0 10px!important;top:-1px;vertical-align:middle}.next-prev-nav .flex-col+.flex-col{border-left:1px solid #ececec}ul{list-style:disc}ol{list-style:decimal}ol,ul{margin-top:0;padding:0}ul ul,ul ol,ol ol,ol ul{margin:1.5em 0 1.5em 3em}li{margin-bottom:.6em}dl dt,dl dd{display:inline-block;margin:0 5px 0 0}dl dt p,dl dd p{margin:0;padding:0}dl{opacity:.8;text-transform:uppercase;font-size:.85em}ul.ul-reset{margin:0;padding:0}ul.ul-reset>li{margin:0;padding:0;list-style:none}.entry-content ol li,.entry-summary ol li,.col-inner ol li,.entry-content ul li,.entry-summary ul li,.col-inner ul li{margin-left:1.3em}.entry-content ol li.tab,.entry-summary ol li.tab,.col-inner ol li.tab,.entry-content ul li.tab,.entry-summary ul li.tab,.col-inner ul li.tab{margin-left:0}ul li.bullet-checkmark,ul li.bullet-arrow,ul li.bullet-star{list-style:none;position:relative;padding:7px 0 7px 25px;margin:0;border-bottom:1px solid #ececec}.dark ul li.bullet-checkmark,.dark ul li.bullet-arrow,.dark ul li.bullet-star{border-color:rgba(255,255,255,.2)}ul li.bullet-checkmark:before,ul li.bullet-arrow:before,ul li.bullet-star:before{font-family:"fl-icons";left:0;position:absolute;font-size:16px;color:#7a9c59}ul li.bullet-checkmark:before{content:""!important}ul li.bullet-arrow:before{content:""!important}ul li.bullet-star:before{content:""!important}.button,button,input,textarea,select,fieldset{margin-bottom:1em}pre,blockquote,form,figure,p,dl,ul,ol{margin-bottom:1.3em}form p{margin-bottom:.5em}body{line-height:1.6}h1,h2,h3,h4,h5,h6{color:#555;width:100%;margin-top:0;margin-bottom:.5em;text-rendering:optimizeSpeed}.h1,h1{font-size:1.7em;line-height:1.3}.h2,h2{font-size:1.6em;line-height:1.3}.h3,h3{font-size:1.25em}.h4,h4{font-size:1.125em}.h5,h5{font-size:1em}.h6,h6{font-size:.85em;opacity:.8}h1.entry-title.mb{margin-bottom:30px}@media(max-width:549px){h1{font-size:1.4em}h2{font-size:1.2em}h3{font-size:1em}}h6 span{font-weight:400;font-weight:500}h3 label{display:inline-block;margin-right:10px}p{margin-top:0}h1>span,h2>span,h3>span,h4>span,h5>span,h6>span,p.headline>span{-webkit-box-decoration-break:clone;box-decoration-break:clone}p.lead,a.lead{font-size:1.3em}.uppercase,h6,th,span.widget-title{line-height:1.05;letter-spacing:.05em;text-transform:uppercase}.lowercase{text-transform:none!important}span.widget-title{font-size:1em;font-weight:600}.is-normal{font-weight:400}.is-bold{font-weight:700}.thin-font,.is-thin{font-weight:300!important}.thin-font strong,.is-thin strong{font-weight:700!important}.is-italic{font-style:italic!important}.is-uppercase,.uppercase{line-height:1.2;text-transform:uppercase}.is-alt-font,.alt-font{font-family:Georgia}.is-xxxlarge{font-size:2.5em}.is-xxlarge{font-size:2em}.is-xlarge{font-size:1.5em}.is-larger{font-size:1.3em}.is-large{font-size:1.15em}.is-small,.is-small.button{font-size:.8em}.is-smaller{font-size:.75em}.is-xsmall{font-size:.7em}.is-xxsmall{font-size:.6em}@media(max-width:549px){.is-xxlarge{font-size:2.5em}.is-xlarge{font-size:1.8em}.is-larger{font-size:1.2em}.is-large{font-size:1em}}.box-text h1,.box-text h2,.box-text h3,.box-text h4,.box-text h5,.box-text h6,.box-text a:not(.button){line-height:1.3;margin-top:.1em;margin-bottom:.1em}.box-text p{margin-top:.1em;margin-bottom:.1em}.box-text .button{margin-top:1em}.banner .button{margin-top:.5em;margin-bottom:.5em}.banner .is-divider,.banner .text-center .is-divider{margin-top:1em;margin-bottom:1em}.banner h1{font-size:3.5em}.banner h2{font-size:2.9em}.banner h3{font-size:2em}.banner h2,.banner h3,.banner h1{padding:0;font-weight:400;margin-top:.2em;margin-bottom:.2em;line-height:1}.banner h4{padding:0;font-size:1.5em;margin-top:.6em;margin-bottom:.6em}.banner h6,.banner h5,.banner p{padding:0;margin-top:1em;margin-bottom:1em}.line-height-small{line-height:1.4em}[data-line-height=xs]{line-height:.85!important}[data-line-height=s]{line-height:1!important}[data-line-height=m]{line-height:1.2!important}[data-line-height=l]{line-height:1.4!important}[data-line-height=xl]{line-height:1.6!important}.nav>li>a{font-size:.8em}.nav>li.html{font-size:.85em}.nav-size-xsmall>li>a{font-size:.65em}.nav-size-small>li>a{font-size:.7em}.nav-size-medium>li>a{font-size:.9em}.nav-size-large>li>a{font-size:1em}.nav-size-xlarge>li>a{font-size:1.1em}.nav-spacing-xsmall>li{margin:0}.nav-spacing-small>li{margin:0 5px}.nav-spacing-medium>li{margin:0 9px}.nav-spacing-large>li{margin:0 11px}.nav-spacing-xlarge>li{margin:0 13px}.fancy-underline{position:relative}.fancy-underline:after{content:"";color:green;position:absolute;left:0;border-radius:999px;right:0;top:100%;height:9px;image-rendering:-webkit-optimize-contrast;background:url(../../../themes/flatsome/assets/img/underline.png) 50% top no-repeat;background-size:100% 9px}span.count-up{opacity:0;-webkit-transition:opacity 2s;-o-transition:opacity 2s;transition:opacity 2s}span.count-up.active{opacity:1}[data-text-color=primary]{color:#446084!important}[data-text-color=secondary]{color:#d26e4b!important}[data-text-color=alert]{color:#b20000!important}[data-text-color=success]{color:#7a9c59!important}[data-text-bg=primary]{background-color:#446084}[data-text-bg=secondary]{background-color:#d26e4b}[data-text-bg=alert]{background-color:#b20000}[data-text-bg=success]{background-color:#7a9c59}.text-bordered-white,.text-bordered-primary,.text-bordered-dark{border:2px solid #fff;padding:5px;display:inline-block}.text-bordered-dark{border-color:#000}h1.text-bordered-white,h1.text-bordered-primary,h1.text-bordered-dark{padding:15px}.text-boarder-top-bottom-white,.text-boarder-top-bottom-dark{border-top:3px solid #fff;padding-top:15px;border-bottom:3px solid #fff;padding-bottom:15px;display:inline-block}.text-boarder-top-bottom-dark{border-color:#000}blockquote{position:relative;font-size:1.2em;margin:0 0 1.25em;padding:0 1.25em 0 1.875em;border-left:2px solid #446084;font-style:italic;color:#333}.dark blockquote{color:#fff}.container:after,.row:after,.clearfix:after,.clear:after{content:"";display:table;clear:both}@media(max-width:549px){[data-show=hide-for-small],.hide-for-small{display:none!important}.small-text-center{text-align:center!important;width:100%!important;float:none!important}}@media(min-width:550px){[data-show=show-for-small],.show-for-small{display:none!important}}@media(min-width:850px){[data-show=show-for-medium],.show-for-medium{display:none!important}}@media(max-width:849px){[data-show=hide-for-medium],.hide-for-medium{display:none!important}.medium-text-center .pull-left,.medium-text-center .pull-right{float:none}.medium-text-center .ml{margin-left:auto}.medium-text-center .mr{margin-right:auto}.medium-text-center{text-align:center!important;width:100%!important;float:none!important}}@media(min-width:850px){[data-show=hide-for-large],.hide-for-large{display:none!important}}.full-width,.expand{width:100%!important;max-width:100%!important;padding-left:0!important;padding-right:0!important;display:block}.pull-right{float:right;margin-right:0!important}.pull-left{float:left;margin-left:0!important}.mb{margin-bottom:30px}.mt{margin-top:30px}.mr{margin-right:30px}.ml{margin-left:30px}.mb-0{margin-bottom:0!important}.ml-0{margin-left:0!important}.mr-0{margin-right:0!important}.mt-0{margin-top:0!important}.mb-half{margin-bottom:15px}.mt-half{margin-top:15px}.mr-half{margin-right:15px}.ml-half{margin-left:15px}.mb-half:last-child,.mb:last-child{margin-bottom:0}.pb{padding-bottom:30px}.pt{padding-top:30px}.pb-half{padding-bottom:15px}.pt-half{padding-top:15px}.pb-0{padding-bottom:0!important}.pt-0{padding-top:0!important}.no-margin{margin:0!important}.no-padding{padding:0!important}.inner-padding{padding:30px}.first-reset *:first-child{margin-top:0}.last-reset *:last-child{margin-bottom:0}.no-select{-webkit-user-select:none!important;-moz-user-select:none!important;-ms-user-select:none!important;user-select:none!important}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-center>div,.text-center>div>div,.text-center .is-divider,.text-center .star-rating,.text-center .is-star-rating{margin-left:auto;margin-right:auto}.text-center .pull-right,.text-center .pull-left{float:none}.text-left .is-divider,.text-left .star-rating,.text-left .is-star-rating{margin-right:auto;margin-left:0}.text-right>div,.text-right>div>div,.text-right .is-divider,.text-right .star-rating,.text-right .is-star-rating{margin-left:auto;margin-right:0}.relative{position:relative!important}.absolute{position:absolute!important}.fixed{position:fixed!important;z-index:12}.top{top:0}.right{right:0}.left{left:0}.bottom{bottom:0}.fill{position:absolute;top:0;left:0;height:100%;right:0;bottom:0;padding:0!important;margin:0!important}.v-center{bottom:auto;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.h-center{left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}.h-center.v-center{left:auto!important;bottom:auto!important;right:50%;top:50%;-webkit-transform:translate(50%,-50%);-ms-transform:translate(50%,-50%);transform:translate(50%,-50%)}.pull-right{float:right}.pull-left{float:left}.is-full-height{min-height:550px;height:100%;height:100vh;padding-top:0!important;padding-bottom:0!important}.bg-fill{background-size:cover!important;background-repeat:no-repeat!important;background-position:50% 50%}.bg-top{background-position:top;-o-object-position:top;object-position:top}.circle{border-radius:999px!important;-o-object-fit:cover;object-fit:cover}.circle img{border-radius:999px!important;-o-object-fit:cover;object-fit:cover}.round{border-radius:5px}.has-border{border:2px solid #446084;padding:15px 30px 30px}.dashed-border{border-style:dashed}.success-border{border-color:#7a9c59}.bt{border-top:1px solid #ececec}.bb{border-bottom:1px solid #ececec}.bl{border-left:1px solid #ececec}.br{border-right:1px solid #ececec}.hidden{display:none!important;visibility:hidden!important}.is-invisible{visibility:hidden;opacity:0}.z-1{z-index:21}.z-2{z-index:22}.z-3{z-index:23}.z-4{z-index:24}.z-5{z-index:25}.z-top{z-index:9995}.z-top-2{z-index:9996}.z-top-3{z-index:9997}.no-click{pointer-events:none}.no-wrap{white-space:nowrap}.primary-color{color:#446084}.secondary-color{color:#d26e4b}.success-color{color:#7a9c59}.alert-color{color:#b20000}.bg-primary-color{background-color:#446084}.bg-secondary-color{background-color:#d26e4b}.bg-success-color{background-color:#7a9c59}.bg-alert-color{background-color:#b20000}.is-transparent{background-color:transparent!important}.inline{display:inline}.block{display:block}.flex{display:-webkit-box;display:-ms-flexbox;display:flex;-js-display:flex}@media(max-width:549px){.small-block{display:block}}.inline-block{display:inline-block}.inline-images img,img.inline{display:inline-block!important}.is-well{padding:30px;background-color:rgba(0,0,0,.02);-webkit-box-shadow:1px 1px 3px 0 rgba(0,0,0,.2),0 1px 0 rgba(0,0,0,.07),inset 0 0 0 1px rgba(0,0,0,.05);box-shadow:1px 1px 3px 0 rgba(0,0,0,.2),0 1px 0 rgba(0,0,0,.07),inset 0 0 0 1px rgba(0,0,0,.05)}.no-overflow{overflow:hidden}.no-text-overflow{white-space:nowrap;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.strong{font-weight:700}.op-4{opacity:.4}.op-5{opacity:.5}.op-6{opacity:.6}.op-7{opacity:.7}.op-8{opacity:.8}@media(max-width:549px){.sm-touch-scroll{overflow-y:none;overflow-x:auto;-webkit-overflow-scrolling:touch}}.no-scrollbar{-ms-overflow-style:-ms-autohiding-scrollbar;scrollbar-width:none}.no-scrollbar::-webkit-scrollbar{width:0px!important;height:0px!important}.screen-reader-text{clip:rect(1px,1px,1px,1px);position:absolute!important;height:1px;width:1px;overflow:hidden}.screen-reader-text:focus{background-color:#f1f1f1;border-radius:3px;-webkit-box-shadow:0 0 2px 2px rgba(0,0,0,.6);box-shadow:0 0 2px 2px rgba(0,0,0,.6);clip:auto!important;color:#21759b;display:block;font-size:14px;font-size:.875rem;font-weight:700;height:auto;left:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}@media screen and (max-width:549px){.x5{left:5%}.x15{left:15%}.x25{left:25%}.x35{left:35%}.x45{left:45%}.x55{right:45%}.x65{right:35%}.x75{right:25%}.x85{right:15%}.x95{right:5%}.x0{left:0%}.x10{left:10%}.x20{left:20%}.x30{left:30%}.x40{left:40%}.x60{right:40%}.x70{right:30%}.x80{right:20%}.x90{right:10%}.x100{right:0%}.y0{top:0%}.y10{top:10%}.y20{top:20%}.y30{top:30%}.y40{top:40%}.y60{bottom:40%}.y70{bottom:30%}.y80{bottom:20%}.y90{bottom:10%}.y100{bottom:0%}.y5{top:5%}.y15{top:15%}.y25{top:25%}.y35{top:35%}.y45{top:45%}.y55{bottom:45%}.y65{bottom:35%}.y75{bottom:25%}.y85{bottom:15%}.y95{bottom:5%}.x50{left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}.y50{top:50.3%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.y50.x50{-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}}@media screen and (min-width:550px)and (max-width:849px){.md-x5{left:5%}.md-x15{left:15%}.md-x25{left:25%}.md-x35{left:35%}.md-x45{left:45%}.md-x55{right:45%}.md-x65{right:35%}.md-x75{right:25%}.md-x85{right:15%}.md-x95{right:5%}.md-y5{top:5%}.md-y15{top:15%}.md-y25{top:25%}.md-y35{top:35%}.md-y45{top:45%}.md-y55{bottom:45%}.md-y65{bottom:35%}.md-y75{bottom:25%}.md-y85{bottom:15%}.md-y95{bottom:5%}.md-x0{left:0%}.md-x10{left:10%}.md-x20{left:20%}.md-x30{left:30%}.md-x40{left:40%}.md-x60{right:40%}.md-x70{right:30%}.md-x80{right:20%}.md-x90{right:10%}.md-x100{right:0%}.md-y0{top:0%}.md-y10{top:10%}.md-y20{top:20%}.md-y30{top:30%}.md-y40{top:40%}.md-y60{bottom:40%}.md-y70{bottom:30%}.md-y80{bottom:20%}.md-y90{bottom:10%}.md-y100{bottom:0%}.md-x50{left:50%;-webkit-transform:translateX(-50%)!important;-ms-transform:translateX(-50%)!important;transform:translateX(-50%)!important}.md-y50{top:50%;-webkit-transform:translateY(-50%)!important;-ms-transform:translateY(-50%)!important;transform:translateY(-50%)!important}.md-x50.md-y50{-webkit-transform:translate(-50%,-50%)!important;-ms-transform:translate(-50%,-50%)!important;transform:translate(-50%,-50%)!important}}@media screen and (min-width:850px){.lg-x5{left:5%}.lg-x15{left:15%}.lg-x25{left:25%}.lg-x35{left:35%}.lg-x45{left:45%}.lg-x55{right:45%}.lg-x65{right:35%}.lg-x75{right:25%}.lg-x85{right:15%}.lg-x95{right:5%}.lg-y5{top:5%}.lg-y15{top:15%}.lg-y25{top:25%}.lg-y35{top:35%}.lg-y45{top:45%}.lg-y55{bottom:45%}.lg-y65{bottom:35%}.lg-y75{bottom:25%}.lg-y85{bottom:15%}.lg-y95{bottom:5%}.lg-x0{left:0%}.lg-x10{left:10%}.lg-x20{left:20%}.lg-x30{left:30%}.lg-x40{left:40%}.lg-x60{right:40%}.lg-x70{right:30%}.lg-x80{right:20%}.lg-x90{right:10%}.lg-x100{right:0%}.lg-y0{top:0%}.lg-y10{top:10%}.lg-y20{top:20%}.lg-y30{top:30%}.lg-y40{top:40%}.lg-y60{bottom:40%}.lg-y70{bottom:30%}.lg-y80{bottom:20%}.lg-y90{bottom:10%}.lg-y100{bottom:0%}.lg-x50{left:50%;-webkit-transform:translateX(-50%)!important;-ms-transform:translateX(-50%)!important;transform:translateX(-50%)!important}.lg-y50{top:50%;-webkit-transform:translateY(-50%)!important;-ms-transform:translateY(-50%)!important;transform:translateY(-50%)!important}.lg-x50.lg-y50{-webkit-transform:translate(-50%,-50%)!important;-ms-transform:translate(-50%,-50%)!important;transform:translate(-50%,-50%)!important}}.res-text{font-size:11px}.widget-area .res-text,.small-1 .res-text,.small-2 .res-text,.small-3 .res-text{font-size:8px}.small-1 .res-text h6,.small-2 .res-text h6,.small-3 .res-text h6{font-size:10px}.small-1 .res-text p.lead,.small-2 .res-text p.lead,.small-3 .res-text p.lead{font-size:16px}.small-4 .res-text{font-size:8.5px}.small-5 .res-text{font-size:9px}.small-6 .res-text{font-size:10px}.small-7 .res-text{font-size:11px}.small-8 .res-text{font-size:12px}.small-9 .res-text{font-size:13px}.small-10 .res-text{font-size:14px}.small-11 .res-text{font-size:15px}@media screen and (min-width:550px){.medium-1 .res-text,.medium-2 .res-text,.medium-3 .res-text,.medium-4 .res-text,.medium-5 .res-text,.medium-6 .res-text,.medium-7 .res-text{font-size:.8vw}.medium-8 .res-text{font-size:.9vw}.medium-9 .res-text{font-size:1.15vw}.medium-10 .res-text{font-size:1.3vw}.medium-11 .res-text{font-size:1.5vw}.res-text{font-size:1.8vw}}@media screen and (min-width:850px){.res-text{font-size:16px}.widget-area .res-text,.large-1 .res-text,.large-2 .res-text,.large-3 .res-text{font-size:8px}.large-1 .res-text h6,.large-2 .res-text h6,.large-3 .res-text h6{font-size:10px}.large-1 .res-text p.lead,.large-2 .res-text p.lead,.large-3 .res-text p.lead{font-size:16px}.large-4 .res-text{font-size:8.5px}.large-5 .res-text{font-size:9px}.large-6 .res-text{font-size:10px}.large-7 .res-text{font-size:11px}.large-8 .res-text{font-size:12px}.large-9 .res-text{font-size:13px}.large-10 .res-text{font-size:14px}.large-11 .res-text{font-size:15px}}[data-animate],.slider [data-animate]{will-change:filter,transform,opacity;-webkit-backface-visibility:hidden;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;opacity:0!important;-webkit-transition:opacity .7s ease-in,-webkit-filter 1.3s,-webkit-transform 1.6s;transition:opacity .7s ease-in,-webkit-filter 1.3s,-webkit-transform 1.6s;-o-transition:filter 1.3s,transform 1.6s,opacity .7s ease-in;transition:filter 1.3s,transform 1.6s,opacity .7s ease-in;transition:filter 1.3s,transform 1.6s,opacity .7s ease-in,-webkit-filter 1.3s,-webkit-transform 1.6s}[data-animate=bounceInLeft],[data-animate=bounceInUp],[data-animate=bounceInDown],[data-animate=bounceInRight],.slider [data-animate=bounceInLeft],.slider [data-animate=bounceInUp],.slider [data-animate=bounceInDown],.slider [data-animate=bounceInRight]{-webkit-transition:opacity .5s ease-in,-webkit-transform .8s cubic-bezier(0,.195,0,1.465);transition:opacity .5s ease-in,-webkit-transform .8s cubic-bezier(0,.195,0,1.465);-o-transition:transform .8s cubic-bezier(0,.195,0,1.465),opacity .5s ease-in;transition:transform .8s cubic-bezier(0,.195,0,1.465),opacity .5s ease-in;transition:transform .8s cubic-bezier(0,.195,0,1.465),opacity .5s ease-in,-webkit-transform .8s cubic-bezier(0,.195,0,1.465)}[data-animate=bounceInLeft],.slider [data-animate=bounceInLeft]{-webkit-transform:translate3d(-300px,0,0);transform:translate3d(-300px,0,0)}[data-animate=blurIn],.slider [data-animate=blurIn]{-webkit-filter:blur(15px);filter:blur(15px)}[data-animate=fadeInLeft],.slider [data-animate=fadeInLeft]{-webkit-transform:translate3d(-70px,0,0);transform:translate3d(-70px,0,0)}[data-animate=fadeInRight],.slider [data-animate=fadeInRight]{-webkit-transform:translate3d(70px,0,0);transform:translate3d(70px,0,0)}[data-animate=bounceInUp],[data-animate=fadeInUp],.slider [data-animate=bounceInUp],.slider [data-animate=fadeInUp]{-webkit-transform:translate3d(0,70px,0);transform:translate3d(0,70px,0)}[data-animate=bounceInRight],.slider [data-animate=bounceInRight]{-webkit-transform:translate3d(300px,0,0);transform:translate3d(300px,0,0)}[data-animate=bounceIn],.slider [data-animate=bounceIn]{-webkit-transform:scale(1.3);-ms-transform:scale(1.3);transform:scale(1.3)}[data-animate=bounceInDown],[data-animate=fadeInDown],.slider [data-animate=bounceInDown],.slider [data-animate=fadeInDown]{-webkit-transform:translate3d(0,-70px,0);transform:translate3d(0,-70px,0)}[data-animate=flipInY],.slider [data-animate=flipInY]{-webkit-transform:perspective(400px) rotate3d(0,1,0,-90deg) translate3d(15px,0,0);transform:perspective(400px) rotate3d(0,1,0,-90deg) translate3d(15px,0,0);-webkit-backface-visibility:visible;backface-visibility:visible}[data-animate=flipInX],.slider [data-animate=flipInX]{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg) translate3d(0,-15px,0);transform:perspective(400px) rotate3d(1,0,0,90deg) translate3d(0,-15px,0);-webkit-backface-visibility:visible;backface-visibility:visible}[data-animated=true],.slider .is-selected [data-animated=true],.row-slider.slider [data-animated=true]{-webkit-animation-delay:.1s;animation-delay:.1s;-webkit-transform:translate3d(0,0,0) scale(1);transform:translate3d(0,0,0) scale(1);opacity:1!important}.flickity-slider>*:not(.is-selected) [data-animated=true]{-webkit-transition:opacity .3s!important;-o-transition:opacity .3s!important;transition:opacity .3s!important}[data-animate=none],.slider [data-animate=none]{opacity:1!important}[data-animated=true][data-animate=blurIn],.slider [data-animate=blurIn][data-animated=true]{-webkit-filter:blur(0);filter:blur(0)}[data-animated=false]{-webkit-transition:none!important;-o-transition:none!important;transition:none!important}.has-shadow [data-animate],[data-animate]:hover{-webkit-transition-delay:0s!important;-o-transition-delay:0s!important;transition-delay:0s!important}[data-animate-delay="100"]{-webkit-transition-delay:.1s;-o-transition-delay:.1s;transition-delay:.1s}.nav-anim>li{-webkit-transition:opacity .3s,-webkit-transform .3s;transition:opacity .3s,-webkit-transform .3s;-o-transition:transform .3s,opacity .3s;transition:transform .3s,opacity .3s;transition:transform .3s,opacity .3s,-webkit-transform .3s;-webkit-transform:translateY(-15px);-ms-transform:translateY(-15px);transform:translateY(-15px);opacity:0}.active .nav-anim>li,.nav-anim.active>li,.mfp-ready .nav-anim>li{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}.nav-anim>li,.col+.col [data-animate],[data-animate-delay="200"],[data-animate]+[data-animate]{-webkit-transition-delay:.2s;-o-transition-delay:.2s;transition-delay:.2s}.nav-anim>li+li,[data-animate-delay="300"]{-webkit-transition-delay:.3s;-o-transition-delay:.3s;transition-delay:.3s}.nav-anim>li+li+li,.col+.col+.col [data-animate],[data-animate-delay="400"],[data-animate]+[data-animate]+[data-animate]{-webkit-transition-delay:.4s;-o-transition-delay:.4s;transition-delay:.4s}.nav-anim>li+li+li+li,[data-animate-delay="500"]{-webkit-transition-delay:.5s;-o-transition-delay:.5s;transition-delay:.5s}.nav-anim>li+li+li+li+li,.col+.col+.col+.col [data-animate],[data-animate-delay="600"],[data-animate]+[data-animate]+[data-animate]+[data-animate]{-webkit-transition-delay:.6s;-o-transition-delay:.6s;transition-delay:.6s}.nav-anim>li+li+li+li+li+li,[data-animate-delay="700"]{-webkit-transition-delay:.7s;-o-transition-delay:.7s;transition-delay:.7s}.nav-anim>li+li+li+li+li+li+li,.col+.col+.col+.col+.col [data-animate],[data-animate]+[data-animate]+[data-animate]+[data-animate]+[data-animate],[data-animate-delay="800"]{-webkit-transition-delay:.8s;-o-transition-delay:.8s;transition-delay:.8s}.nav-anim>li+li+li+li+li+li+li+li,.col+.col+.col+.col+.col+.col [data-animate],[data-animate-delay="900"]{-webkit-transition-delay:.9s;-o-transition-delay:.9s;transition-delay:.9s}.nav-anim>li+li+li+li+li+li+li+li+li,.col+.col+.col+.col+.col+.col+.col [data-animate],[data-animate-delay="1000"]{-webkit-transition-delay:1s;-o-transition-delay:1s;transition-delay:1s}.slider-type-fade .flickity-slider>*:not(.is-selected) [data-animate]{opacity:0!important;-webkit-transition:none!important;-o-transition:none!important;transition:none!important}@-webkit-keyframes stuckMoveDown{0%{-webkit-transform:translateY(-100%);transform:translateY(-100%)}100%{-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes stuckMoveDown{0%{-webkit-transform:translateY(-100%);transform:translateY(-100%)}100%{-webkit-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes stuckMoveUp{0%{-webkit-transform:translateY(100%);transform:translateY(100%)}100%{-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes stuckMoveUp{0%{-webkit-transform:translateY(100%);transform:translateY(100%)}100%{-webkit-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes stuckFadeIn{0%{opacity:0}100%{opacity:1}}@keyframes stuckFadeIn{0%{opacity:0}100%{opacity:1}}.is-border{border-width:1px;border-style:solid;border-color:#ececec;position:absolute;pointer-events:none;border-radius:0;margin:0;top:0;bottom:0;right:0;left:0}.is-dashed{border-style:dashed}.is-dotted{border-style:dotted}.has-shadow.box:not(.box-overlay):not(.box-shade),.has-shadow .box:not(.box-overlay):not(.box-shade){background-color:#fff}.dark .has-shadow.box:not(.box-overlay):not(.box-shade),.dark .has-shadow .box:not(.box-overlay):not(.box-shade){background-color:#333}.row-box-shadow-1 .col-inner,.row-box-shadow-2 .col-inner,.row-box-shadow-3 .col-inner,.row-box-shadow-4 .col-inner,.row-box-shadow-5 .col-inner,.row-box-shadow-1-hover .col-inner,.row-box-shadow-2-hover .col-inner,.row-box-shadow-3-hover .col-inner,.row-box-shadow-4-hover .col-inner,.row-box-shadow-5-hover .col-inner,.box-shadow-1,.box-shadow-2,.box-shadow-3,.box-shadow-4,.box-shadow-5,.box-shadow-1-hover,.box-shadow-2-hover,.box-shadow-3-hover,.box-shadow-4-hover,.box-shadow-5-hover{-webkit-transition:background-color .3s,color .3s,opacity .3s,-webkit-transform .3s,-webkit-box-shadow .3s;transition:background-color .3s,color .3s,opacity .3s,-webkit-transform .3s,-webkit-box-shadow .3s;-o-transition:transform .3s,box-shadow .3s,background-color .3s,color .3s,opacity .3s;transition:transform .3s,box-shadow .3s,background-color .3s,color .3s,opacity .3s;transition:transform .3s,box-shadow .3s,background-color .3s,color .3s,opacity .3s,-webkit-transform .3s,-webkit-box-shadow .3s}.row-box-shadow-1 .col-inner,.row-box-shadow-1-hover .col-inner:hover,.box-shadow-1,.box-shadow-1-hover:hover{-webkit-box-shadow:0 1px 3px -2px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24);box-shadow:0 1px 3px -2px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24)}.box-shadow,.row-box-shadow-2 .col-inner,.row-box-shadow-2-hover .col-inner:hover,.box-shadow-2,.box-shadow-2-hover:hover{-webkit-box-shadow:0 3px 6px -4px rgba(0,0,0,.16),0 3px 6px rgba(0,0,0,.23);box-shadow:0 3px 6px -4px rgba(0,0,0,.16),0 3px 6px rgba(0,0,0,.23)}.row-box-shadow-3 .col-inner,.row-box-shadow-3-hover .col-inner:hover,.box-shadow-3,.box-shadow-3-hover:hover{-webkit-box-shadow:0 10px 20px rgba(0,0,0,.19),0 6px 6px rgba(0,0,0,.22);box-shadow:0 10px 20px rgba(0,0,0,.19),0 6px 6px rgba(0,0,0,.22)}.row-box-shadow-4 .col-inner,.row-box-shadow-4-hover .col-inner:hover,.box-shadow-4,.box-shadow-4-hover:hover{-webkit-box-shadow:0 14px 28px rgba(0,0,0,.25),0 10px 10px rgba(0,0,0,.1);box-shadow:0 14px 28px rgba(0,0,0,.25),0 10px 10px rgba(0,0,0,.1)}.row-box-shadow-5 .col-inner,.row-box-shadow-5-hover .col-inner:hover,.box-shadow-5,.box-shadow-5-hover:hover{-webkit-box-shadow:0 30px 40px 0 rgba(0,0,0,.2);box-shadow:0 30px 40px 0 rgba(0,0,0,.2)}.row-box-shadow-5-hover .col-inner:hover,.box-shadow-5-hover:hover,.box-shadow-4-hover:hover,.row-box-shadow-4-hover .col-inner:hover{-webkit-transform:translateY(-6px);-ms-transform:translateY(-6px);transform:translateY(-6px)}.text-shadow,.text-shadow-1{text-shadow:1px 1px 1px rgba(0,0,0,.3)}.text-shadow-2{text-shadow:2px 2px 5px rgba(0,0,0,.4)}.text-shadow-3{text-shadow:3px 3px 8px rgba(0,0,0,.4)}.text-shadow-4{text-shadow:3px 3px 12px rgba(0,0,0,.5)}.text-shadow-5{text-shadow:5px 5px 16px rgba(0,0,0,.6)}a.hotspot{background-color:#000;color:#fff;border-radius:99px;opacity:.8;font-weight:bolder;display:block;padding:0;line-height:1.5em;text-align:center;height:1.5em;width:1.5em;-webkit-transition:all .3s;-o-transition:all .3s;transition:all .3s}a.hotspot i{font-size:.8em}a.hotspot:hover{opacity:1;color:#000!important;background-color:#fff!important}.has-hover .bg,.has-hover [class*=image-] img{-webkit-transition:opacity .6s,-webkit-filter .6s,-webkit-transform .6s,-webkit-box-shadow .3s;transition:opacity .6s,-webkit-filter .6s,-webkit-transform .6s,-webkit-box-shadow .3s;-o-transition:filter .6s,opacity .6s,transform .6s,box-shadow .3s;transition:filter .6s,opacity .6s,transform .6s,box-shadow .3s;transition:filter .6s,opacity .6s,transform .6s,box-shadow .3s,-webkit-filter .6s,-webkit-transform .6s,-webkit-box-shadow .3s}.bg-color .bg,.bg-grayscale:hover .bg,.has-hover .image-color img,.has-hover:hover .image-grayscale img{-webkit-filter:grayscale(100%);filter:grayscale(100%)}.bg-color:hover .bg,.has-hover:hover .image-color img{-webkit-filter:grayscale(0);filter:grayscale(0)}.bg-zoom:hover .bg,.has-hover:hover .image-zoom img{-webkit-transform:scale(1.1);-ms-transform:scale(1.1);transform:scale(1.1)}.bg-zoom-long .bg,.has-hover .image-zoom-long img{-webkit-transition:-webkit-transform 5s!important;transition:-webkit-transform 5s!important;-o-transition:transform 5s!important;transition:transform 5s!important;transition:transform 5s,-webkit-transform 5s!important}.bg-zoom-long .bg,.has-hover:hover .image-zoom-long img{-webkit-transform:scale(1.3);-ms-transform:scale(1.3);transform:scale(1.3)}.bg-zoom-fade:hover .bg,.has-hover:hover .image-zoom-fade img{opacity:.7;-webkit-transform:scale(1.1);-ms-transform:scale(1.1);transform:scale(1.1)}.bg-glow:hover .bg,.has-hover:hover .image-glow img{-webkit-filter:brightness(1.1);filter:brightness(1.1)}.bg-fade-out:hover .bg,.has-hover:hover .image-fade-out img{opacity:.7}.image-fade:hover .bg,.has-hover:hover .image-fade img{opacity:.6}.bg-fade-in .bg,.image-fade-in img{opacity:.7}.bg-fade-in:hover .bg,.has-hover:hover .image-fade-in img{opacity:1}.bg-blur:hover .bg,.has-hover:hover .image-blur img{-webkit-filter:blur(5px);filter:blur(5px)}.bg-overlay-remove:hover .overlay,.bg-overlay-add:not(:hover) .overlay,.has-hover:hover .image-overlay-remove .overlay,.has-hover:not(:hover) .image-overlay-add .overlay{opacity:0}.bg-overlay-remove-50:hover .overlay,.bg-overlay-add-50:not(:hover) .overlay,.has-hover:hover .image-overlay-remove-50 .overlay,.has-hover:not(:hover) .image-overlay-add-50 .overlay{opacity:.5}.has-mask{overflow:hidden;-webkit-transform:translateZ(0);transform:translateZ(0)}.mask-circle{-webkit-clip-path:circle(50% at center);clip-path:circle(50% at center)}.mask-angled{-webkit-clip-path:polygon(0 calc(0% + 30px),100% 0,100% 100%,0 100%);clip-path:polygon(0 calc(0% + 30px),100% 0,100% 100%,0 100%)}.mask-angled-right{-webkit-clip-path:polygon(0 0,100% calc(0% + 30px),100% 100%,0 100%);clip-path:polygon(0 0,100% calc(0% + 30px),100% 100%,0 100%)}.mask-arrow{-webkit-clip-path:polygon(0 0,calc(50% - 30px) 0,50% calc(0% + 30px),calc(50% + 30px) 0,100% 0,100% 100%,0 100%);clip-path:polygon(0 0,calc(50% - 30px) 0,50% calc(0% + 30px),calc(50% + 30px) 0,100% 0,100% 100%,0 100%)}.mask-angled-large{-webkit-clip-path:polygon(0 calc(0% + 60px),100% 0,100% 100%,0 100%);clip-path:polygon(0 calc(0% + 60px),100% 0,100% 100%,0 100%)}.mask-angled-right-large{-webkit-clip-path:polygon(0 0,100% 0,100% calc(100% - 60px),0 100%);clip-path:polygon(0 0,100% 0,100% calc(100% - 60px),0 100%)}.mask-arrow-large{-webkit-clip-path:polygon(0 0,calc(50% - 60px) 0,50% calc(0% + 60px),calc(50% + 60px) 0,100% 0,100% 100%,0 100%);clip-path:polygon(0 0,calc(50% - 60px) 0,50% calc(0% + 60px),calc(50% + 60px) 0,100% 0,100% 100%,0 100%)}.mask-angled-right,.mask-arrow,.mask-angled{margin-top:-30px}.mask-angled-right-large,.mask-arrow-large,.mask-angled-large{margin-top:-60px}[data-parallax]:not(.parallax-active){opacity:0}[data-parallax]{will-change:transform!important}[data-parallax-container]{overflow:hidden}[data-parallax]:not(.parallax-active) .bg{opacity:0}.shade{content:" ";position:absolute;top:0;bottom:0;left:0;right:0;background:rgba(0,0,0,.2);background:-webkit-gradient(linear,left bottom,left top,from(#323232),color-stop(33%,rgba(50,50,50,0)));background:-o-linear-gradient(bottom,#323232 0%,rgba(50,50,50,0) 33%);background:linear-gradient(to top,#323232 0%,rgba(50,50,50,0) 33%);opacity:.3;pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transition:opacity .3s;-o-transition:opacity .3s;transition:opacity .3s}.shade-top{opacity:.4;background:rgba(0,0,0,.2);background:-webkit-gradient(linear,left top,left bottom,from(black),color-stop(70%,rgba(0,0,0,0)));background:-o-linear-gradient(top,black 0%,rgba(0,0,0,0) 70%);background:linear-gradient(to bottom,black 0%,rgba(0,0,0,0) 70%)}.box:hover .shade{opacity:.5}.box-shade:not(.dark) .shade{opacity:.8;background:rgba(255,255,255,.2);background:-webkit-gradient(linear,left bottom,left top,from(white),color-stop(33%,rgba(255,255,255,0)));background:-o-linear-gradient(bottom,white 0%,rgba(255,255,255,0) 33%);background:linear-gradient(to top,white 0%,rgba(255,255,255,0) 33%)}.show-on-hover,.hover-slide,.hover-slide-in,.hover-zoom,.hover-zoom-in{opacity:0;-webkit-transition:opacity .5s,max-height .6s,-webkit-transform .3s,-webkit-filter .6s;transition:opacity .5s,max-height .6s,-webkit-transform .3s,-webkit-filter .6s;-o-transition:opacity .5s,transform .3s,max-height .6s,filter .6s;transition:opacity .5s,transform .3s,max-height .6s,filter .6s;transition:opacity .5s,transform .3s,max-height .6s,filter .6s,-webkit-transform .3s,-webkit-filter .6s;-webkit-filter:blur(0);filter:blur(0);pointer-events:none}.hover-slide{-webkit-transform:translateY(15%) translateZ(0);transform:translateY(15%) translateZ(0)}.hover-slide-in{-webkit-transform:translateY(100%) translateZ(0);transform:translateY(100%) translateZ(0)}.box-text-middle .box-text.hover-slide{-webkit-transform:translateY(-40%) translateZ(0);transform:translateY(-40%) translateZ(0)}.hover-fade-out{-webkit-transition:opacity .3s;-o-transition:opacity .3s;transition:opacity .3s}.has-hover:hover .hover-fade-out{opacity:0}.hover-invert{opacity:1!important;-webkit-filter:invert(0);filter:invert(0)}.has-hover:hover .hover-invert{-webkit-filter:invert(100%);filter:invert(100%)}.hover-reveal{-webkit-transition:all .6s;-o-transition:all .6s;transition:all .6s;opacity:0;-webkit-transform:translateY(15%) translateZ(0);transform:translateY(15%) translateZ(0);max-height:0}.has-hover:hover .hover-reveal{opacity:1;max-height:150px}.has-hover:hover .hover-reveal.reveal-small{max-height:30px}.hover-blur{opacity:0;-webkit-transition:opacity .3s,-webkit-filter .3s;transition:opacity .3s,-webkit-filter .3s;-o-transition:filter .3s,opacity .3s;transition:filter .3s,opacity .3s;transition:filter .3s,opacity .3s,-webkit-filter .3s;-webkit-filter:blur(10px);filter:blur(10px)}.has-hover:hover .hover-blur{opacity:1;-webkit-filter:blur(0)!important;filter:blur(0)!important}.hover-zoom{-webkit-transform:scale(1.1) translateZ(0);transform:scale(1.1) translateZ(0)}.box-text-middle .box-text.hover-zoom{-webkit-transform:scale(1.1) translateZ(0) translateY(-50%);transform:scale(1.1) translateZ(0) translateY(-50%)}.hover-zoom-in{-webkit-transform:scale(.9) translateZ(0);transform:scale(.9) translateZ(0)}.box-text-middle .box-text.hover-zoom-in{-webkit-transform:scale(.9) translateZ(0) translateY(-50%);transform:scale(.9) translateZ(0) translateY(-50%)}.hover-bounce{opacity:1!important;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;-o-transition:transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;-webkit-transform:scale(1) translateZ(0) translateY(10px)!important;transform:scale(1) translateZ(0) translateY(10px)!important}.has-hover:hover .hover-bounce{-webkit-transform:scale(1) translateZ(0) translateY(0)!important;transform:scale(1) translateZ(0) translateY(0)!important}.box-text-middle .hover-bounce{-webkit-transform:scale(1) translateZ(0) translateY(-40%)!important;transform:scale(1) translateZ(0) translateY(-40%)!important}.box-text-middle:hover .box-text.hover-bounce{-webkit-transform:scale(1) translateZ(0) translateY(-50%)!important;transform:scale(1) translateZ(0) translateY(-50%)!important}.has-hover:hover img.show-on-hover{opacity:1}.has-hover:hover .hover-slide,.has-hover:hover .hover-slide-in,.has-hover:hover .hover-zoom,.has-hover:hover .hover-zoom-in,.has-hover:hover .show-on-hover{opacity:1;-webkit-transform:scale(1) translateZ(0) translateY(0)!important;transform:scale(1) translateZ(0) translateY(0)!important;pointer-events:inherit}.has-hover:hover .show-on-hover.center,.box-text-middle:hover .show-on-hover.box-text{-webkit-transform:scale(1) translateZ(0) translateY(-50%)!important;transform:scale(1) translateZ(0) translateY(-50%)!important}.slider .has-slide-effect{overflow:hidden;background-color:transparent!important}.slider .has-slide-effect .bg{opacity:0;-webkit-transition:opacity 1s;-o-transition:opacity 1s;transition:opacity 1s}.slide-zoom-in .bg,.slide-zoom-in-fast .bg{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.slide-zoom-out-fast .bg,.slide-zoom-out .bg{-webkit-transform:scale(1.2);-ms-transform:scale(1.2);transform:scale(1.2)}.has-slide-effect.is-selected .bg{opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);-webkit-transition:opacity 1s,-webkit-transform 20s ease-out;transition:opacity 1s,-webkit-transform 20s ease-out;-o-transition:opacity 1s,transform 20s ease-out;transition:opacity 1s,transform 20s ease-out;transition:opacity 1s,transform 20s ease-out,-webkit-transform 20s ease-out}.slide-fade-in.is-selected .bg{-webkit-transition:opacity 3.5s;-o-transition:opacity 3.5s;transition:opacity 3.5s}.slide-fade-in-fast.is-selected .bg{-webkit-transition:opacity 1.5s;-o-transition:opacity 1.5s;transition:opacity 1.5s}.slide-zoom-in-fast.is-selected .bg,.slide-zoom-in.is-selected .bg{-webkit-transform:scale(1.2);-ms-transform:scale(1.2);transform:scale(1.2)}.slide-zoom-out-fast.is-selected .bg{-webkit-transition:opacity 1s,-webkit-transform 5s ease-out;transition:opacity 1s,-webkit-transform 5s ease-out;-o-transition:opacity 1s,transform 5s ease-out;transition:opacity 1s,transform 5s ease-out;transition:opacity 1s,transform 5s ease-out,-webkit-transform 5s ease-out}.button.tooltip{opacity:1}.tooltipster-default{border-radius:5px;background:#111;color:#fff;-webkit-transition:opacity .2s;-o-transition:opacity .2s;transition:opacity .2s;opacity:0}.tooltipster-default a{color:#eee}.tooltipster-default:hover{color:#fff}.tooltipster-fade-show{opacity:1}.tooltipster-default .tooltipster-content{font-family:Arial,sans-serif;font-size:14px;line-height:16px;padding:8px 10px;overflow:hidden}.tooltipster-base{padding:0;font-size:0;line-height:0;position:absolute;left:0;top:0;z-index:9999999;pointer-events:none;width:auto;overflow:visible}.tooltipster-base .tooltipster-content{overflow:hidden}.tooltipster-arrow{display:block;text-align:center;width:100%;height:100%;position:absolute;top:0;left:0;z-index:-1}.tooltipster-arrow span,.tooltipster-arrow-border{display:block;width:0;height:0;position:absolute}.tooltipster-arrow-top span,.tooltipster-arrow-top-right span,.tooltipster-arrow-top-left span{border-left:8px solid transparent!important;border-right:8px solid transparent!important;border-top:8px solid;bottom:-7px}.tooltipster-arrow-top .tooltipster-arrow-border,.tooltipster-arrow-top-right .tooltipster-arrow-border,.tooltipster-arrow-top-left .tooltipster-arrow-border{border-left:9px solid transparent!important;border-right:9px solid transparent!important;border-top:9px solid;bottom:-7px}.tooltipster-arrow-bottom span,.tooltipster-arrow-bottom-right span,.tooltipster-arrow-bottom-left span{border-left:8px solid transparent!important;border-right:8px solid transparent!important;border-bottom:8px solid;top:-7px}.tooltipster-arrow-bottom .tooltipster-arrow-border,.tooltipster-arrow-bottom-right .tooltipster-arrow-border,.tooltipster-arrow-bottom-left .tooltipster-arrow-border{border-left:9px solid transparent!important;border-right:9px solid transparent!important;border-bottom:9px solid;top:-7px}.tooltipster-arrow-top span,.tooltipster-arrow-top .tooltipster-arrow-border,.tooltipster-arrow-bottom span,.tooltipster-arrow-bottom .tooltipster-arrow-border{left:0;right:0;margin:0 auto}.tooltipster-arrow-top-left span,.tooltipster-arrow-bottom-left span{left:6px}.tooltipster-arrow-top-left .tooltipster-arrow-border,.tooltipster-arrow-bottom-left .tooltipster-arrow-border{left:5px}.tooltipster-arrow-top-right span,.tooltipster-arrow-bottom-right span{right:6px}.tooltipster-arrow-top-right .tooltipster-arrow-border,.tooltipster-arrow-bottom-right .tooltipster-arrow-border{right:5px}.tooltipster-arrow-left span,.tooltipster-arrow-left .tooltipster-arrow-border{border-top:8px solid transparent!important;border-bottom:8px solid transparent!important;border-left:8px solid;top:50%;margin-top:-7px;right:-7px}.tooltipster-arrow-left .tooltipster-arrow-border{border-top:9px solid transparent!important;border-bottom:9px solid transparent!important;border-left:9px solid;margin-top:-8px}.tooltipster-arrow-right span,.tooltipster-arrow-right .tooltipster-arrow-border{border-top:8px solid transparent!important;border-bottom:8px solid transparent!important;border-right:8px solid;top:50%;margin-top:-7px;left:-7px}.tooltipster-arrow-right .tooltipster-arrow-border{border-top:9px solid transparent!important;border-bottom:9px solid transparent!important;border-right:9px solid;margin-top:-8px}.dark,.dark p,.dark td{color:#f1f1f1}.dark a.lead,.dark label,.dark .heading-font,.dark h1,.dark h2,.dark h3,.dark h4,.dark h5,.dark h6,.hover-dark:hover p,.hover-dark:hover h1,.hover-dark:hover h2,.hover-dark:hover h3,.hover-dark:hover h4,.hover-dark:hover h5,.hover-dark:hover h6,.hover-dark:hover a{color:#fff}.dark .stars a+a,.dark .product-section,.dark .product-footer .woocommerce-tabs{border-color:rgba(255,255,255,.2)}.nav-dark .is-outline,.dark .nav>li>a,.dark .nav>li.html,.dark .nav-vertical li li.menu-item-has-children>a,.dark .nav-vertical>li>ul li a,.dark .nav-vertical-fly-out>li>a,.nav-dropdown.dark>li>a,.nav-dropdown.dark .nav-column>li>a,.nav-dark .nav>li>a,.nav-dark .nav>li>button{color:rgba(255,255,255,.8)}.dark .nav>li>a:hover,.dark .nav>li.active>a,.dark .nav>li>a.active,.nav-dark .nav>li.current>a,.nav-dark .nav>li>a:hover,.nav-dark .nav>li.active>a,.nav-dropdown.dark>li>a:hover,.nav-dropdown.dark .nav-column>li>a:hover,.dark .nav-vertical-fly-out>li>a:hover,.nav-dark a.plain:hover,.nav-dark .nav>li>a.active{color:#fff}.dark.nav-dropdown.nav-dropdown-bold>li.nav-dropdown-col,.dark.nav-dropdown.nav-dropdown-simple>li.nav-dropdown-col,.nav-dropdown.dark .nav-column>li>a,.nav-dropdown.dark>li>a,.nav-dark .nav>li.header-divider,.nav-dark .header-divider:after,.nav-dark .nav-divided>li+li>a:after{border-color:rgba(255,255,255,.2)}.dark .nav-vertical li li.menu-item-has-children>a,.nav-dark .nav-vertical li li.menu-item-has-children>a,.nav-dark .nav>li.html,.nav-dark .header-button{color:#fff}.nav-box a:hover span.amount,.nav-dark span.amount{color:currentColor}html{overflow-x:hidden}@media(max-width:849px){body{overflow-x:hidden}}#wrapper,#main{background-color:#fff;position:relative}#main.dark{background-color:#333}.page-wrapper{padding-top:30px;padding-bottom:30px}.page-wrapper-full{padding-top:0}.is-sticky-column{will-change:min-height}.is-sticky-column__inner{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0);-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);will-change:position,transform}.ux-body-overlay{display:block;position:fixed;top:0;left:0;bottom:0;right:0;height:100%;width:100%;background-color:rgba(0,0,0,.3);z-index:29;opacity:0;visibility:hidden;-webkit-transition:visibility .3s,opacity .3s ease-in-out;-o-transition:visibility .3s,opacity .3s ease-in-out;transition:visibility .3s,opacity .3s ease-in-out}.ux-body-overlay--hover-active,.ux-body-overlay--click-active{opacity:1;visibility:visible}.header,.header-wrapper{width:100%;z-index:30;position:relative;background-size:cover;background-position:50% 0;-webkit-transition:background-color .3s,opacity .3s;-o-transition:background-color .3s,opacity .3s;transition:background-color .3s,opacity .3s}.header-bg-color{background-color:rgba(255,255,255,.9)}.header-top,.header-bottom{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:no-wrap;flex-wrap:no-wrap}.header.show-on-scroll,.header.has-transparent,.header.transparent{position:absolute}.header.show-on-scroll:not(.stuck),.header.transparent:not(.stuck){left:auto;right:auto}.header.show-on-scroll .header-wrapper{-webkit-transition:opacity .3s;-o-transition:opacity .3s;transition:opacity .3s;visibility:hidden;opacity:0}.header.show-on-scroll .header-wrapper.stuck{visibility:visible;opacity:1}.header.transparent .header-wrapper,.header.transparent .header-bg-image,.header.transparent .header-bg-color,.header.transparent .header-bottom{-webkit-box-shadow:none;box-shadow:none;background-color:transparent;background-image:none!important}.header-bg-image,.header-bg-color{background-position:50% 0;-webkit-transition:background .4s;-o-transition:background .4s;transition:background .4s}.header-top{background-color:#446084;z-index:11;position:relative;min-height:20px}.header-main{z-index:10;position:relative}.header-bottom{z-index:9;position:relative;min-height:35px}.top-divider{margin-bottom:-1px;border-top:1px solid currentColor;opacity:.1}.nav-dark .top-divider{display:none}.stuck{top:0;position:fixed;left:0;right:0;margin:0 auto}.sticky-jump .stuck{-webkit-animation:stuckMoveDown .6s;animation:stuckMoveDown .6s}.sticky-fade .stuck{-webkit-animation:stuckFadeIn .6s;animation:stuckFadeIn .6s}.sticky-shrink .stuck .header-main{-webkit-transition:height .8s;-o-transition:height .8s;transition:height .8s}.stuck .header-inner,.stuck .logo,.stuck .logo img{padding-top:0;margin-top:0}.header-wrapper:not(.stuck) .logo img{-webkit-transition:max-height .5s;-o-transition:max-height .5s;transition:max-height .5s}.header.show-on-scroll .hide-for-sticky,.stuck .hide-for-sticky{display:none}.header-wrapper.stuck,.header-shadow .header-wrapper,.layout-shadow #wrapper{-webkit-box-shadow:1px 1px 10px rgba(0,0,0,.15);box-shadow:1px 1px 10px rgba(0,0,0,.15)}.nav>li.header-divider{border-left:1px solid rgba(0,0,0,.1);height:30px;vertical-align:middle;position:relative;margin:0 7.5px}.nav-dark .nav>li.header-divider{border-color:rgba(255,255,255,.1)}.header-block{width:100%;min-height:15px}.header-full-width .container{max-width:100%!important}@media(max-width:849px){.header-main li.html.custom{display:none}}@media(max-width:549px){.nav-mobile>li>a:not(.button){line-height:5em}}.post{margin:0 0 30px}.masonery .post{margin-bottom:0}.entry-header-text{padding:1.5em 0 1.5em}.entry-header-text.text-center{padding-left:1.5em;padding-right:1.5em}.entry-header-text-top{padding-top:0}.entry-header-text-bottom{padding-bottom:0}.entry-content{padding-top:1.5em;padding-bottom:1.5em}.masonery .article-inner .box{margin-bottom:1.5em}.article-inner{-webkit-transition:opacity .3s,-webkit-box-shadow .5s,-webkit-transform .3s;transition:opacity .3s,-webkit-box-shadow .5s,-webkit-transform .3s;-o-transition:opacity .3s,box-shadow .5s,transform .3s;transition:opacity .3s,box-shadow .5s,transform .3s;transition:opacity .3s,box-shadow .5s,transform .3s,-webkit-box-shadow .5s,-webkit-transform .3s}.blog-featured-title+#main .post-sidebar{padding-top:30px}.from_the_blog_comments{padding-top:7px;opacity:.8}.article-inner.has-shadow{background-color:#fff}.article-inner.has-shadow .entry-content,.article-inner.has-shadow footer.entry-meta,.article-inner.has-shadow .entry-header-text,.article-inner.has-shadow .author-box{padding-left:1.5em;padding-right:1.5em}.article-inner.has-shadow .entry-header-text-top{padding-top:1.5em}.entry-author{padding:2em 0}.banner h2.entry-title{font-size:2em}.badge.post-date{top:7%}.entry-image img{width:100%}.entry-image-float{position:relative}@media(min-width:850px){.entry-image-float{max-width:50%;float:left;margin-right:2em}.entry-image-float+.entry-content{padding-top:0}}.post .entry-summary p:last-of-type{margin-bottom:0}footer.entry-meta{font-size:.8em;border-top:1px solid #ececec;border-bottom:2px solid #ececec;padding:.5em 0 .6em}li.recentcomments{padding:7px 0}li.recentcomments a{display:inline!important}.box-blog-post .is-divider{margin-top:.5em;margin-bottom:.5em;height:2px}.bypostauthor{display:block}.more-link{margin-top:1.5em}.updated:not(.published){display:none}@media(min-width:850px){.alignleft{display:inline;float:left;margin-right:1.5em}.alignright{display:inline;float:right;margin-left:1.5em}.aligncenter{clear:both;display:block;margin:0 auto}}.wp-caption{margin-bottom:2em;max-width:100%}.wp-caption .wp-caption-text{padding:.4em;font-size:.9em;background:rgba(0,0,0,.05);font-style:italic}.wp-caption-text{text-align:center}img.size-full.alignnone{margin-bottom:2em}.row .entry-content .gallery{padding:0}.gallery-caption{display:block}.page-content .wp-smiley,.entry-content .wp-smiley,.comment-content .wp-smiley{border:none;margin-bottom:0;margin-top:0;padding:0}.widget{margin-bottom:1.5em}.widget ul{margin:0}.widget li{list-style:none}.widgets-framed .widget,.widgets-boxed .widget{padding:15px 20px 15px;background-color:#fff;border:1px solid #ddd;-webkit-box-shadow:2px 2px 10px 0 rgba(0,0,0,.05);box-shadow:2px 2px 10px 0 rgba(0,0,0,.05)}.widgets-boxed .widget h3{background-color:#446084;margin-left:-21px;margin-top:-16px;padding:10px 20px 10px;width:calc(100% + 42px);color:#fff}.widgets-boxed h3+.is-divider{display:none}ul.menu>li,.widget>ul>li{list-style:none;margin-bottom:.3em;text-align:left;margin:0}ul.menu>li li,.widget>ul>li li{list-style:none}ul.menu>li>a,ul.menu>li>span:first-child,.widget>ul>li>a,.widget>ul>li>span:first-child{display:inline-block;padding:6px 0;-webkit-box-flex:1;-ms-flex:1;flex:1}ul.menu>li:before,.widget>ul>li:before{font-family:"fl-icons";display:inline-block;opacity:.6;margin-right:6px}ul.menu>li li>a,.widget>ul>li li>a{font-size:.9em;padding:3px 0;display:inline-block}ul.menu>li+li,.widget>ul>li+li{border-top:1px solid #ececec}.dark ul.menu>li+li,.dark .widget>ul>li+li{border-color:rgba(255,255,255,.08)}ul.menu>li ul,.widget>ul>li ul{border-left:1px solid #ddd;margin:0 0 10px 3px;padding-left:15px;width:100%;display:none}ul.menu>li ul li,.widget>ul>li ul li{border:0;margin:0}.dark ul.menu>li ul,.dark .widget>ul>li ul{border-color:rgba(255,255,255,.08)}.dark ul.menu>li>a:hover,.dark ul.menu>li.active>a,.dark ul.menu>li.current-cat>a,.dark .widget>ul>li>a:hover,.dark .widget>ul>li.active>a,.dark .widget>ul>li.current-cat>a{color:#fff}ul.menu>li.has-child,.widget>ul>li.has-child{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.widget>ul>li .count{opacity:.5;font-size:.7em;line-height:3em}.widget .current>ul,.widget .current-cat-parent>ul{display:block}.widget .current-cat>a{color:#000;font-weight:bolder}.recent-blog-posts{padding:10px 0 10px}.recent-blog-posts a{line-height:1.2;display:block;margin-bottom:6px}.widget .instagram-pics:after{content:"";display:table;clear:both}.widget .instagram-pics>li{border:0;list-style:none;float:left;width:33.333333%;margin:0;padding:0}.widget .instagram-pics>li a{padding:0;margin:0;display:block}.widget .instagram-pics>li img{display:block;width:100%}.widget_layered_nav li{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.widget_display-latest-tweets li{font-style:italic;font-size:.9em}.widget_display-latest-tweets a{display:inline!important}.widget_display-latest-tweets span{font-weight:bolder;display:block}.wpcf7{color:#333;position:relative}.wpcf7 .ajax-loader{display:none!important}.dark .wpcf7{color:#fff}.wpcf7 p{padding:0;margin:0}.wpcf7 br{display:none}.wpcf7 label{display:inline-block;width:100%}.wpcf7 span.wpcf7-list-item{margin-left:0;margin-right:1.2em}.wpcf7 .wpcf7-form-control-wrap{display:block}.wpcf7 .ajax-loader{position:absolute;right:0;background-color:#fff;border-radius:99px}.wpcf7 .wpcf7-not-valid-tip{margin-top:-10px;position:relative;padding:5px 8px;line-height:1.2em;border-radius:3px;opacity:.8;background-color:#f1f1f1;color:#b20000}.wpcf7 .wpcf7-not-valid-tip:after{bottom:100%;left:30px;border:solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none;border-color:rgba(136,183,213,0);border-bottom-color:#f1f1f1;border-width:10px;margin-left:-10px}.wpcf7 .wpcf7-validation-errors{display:none!important}.wpcf7 .flex-col .wpcf7-not-valid-tip{position:absolute;z-index:99;margin-top:5px;width:100%}.wpcf7 .wpcf7-response-output{margin:5px 0 0 0;border-radius:10px}.wpcf7-form .processing *{opacity:.8}.password-required form.post-password-form{max-width:620px;margin:0 auto;padding:30px 15px 30px}.portfolio-inner img{width:100%}.portfolio-bottom{margin-bottom:-1px}.row+.portfolio-related .portfolio-element-wrapper{margin-top:30px}.accordion-inner{padding:1em 2.3em;display:none}.accordion-title{font-size:110%;padding:.6em 2.3em;display:block;position:relative;border-top:1px solid #ddd;-webkit-transition:border 200ms ease-out,background-color .3s;-o-transition:border 200ms ease-out,background-color .3s;transition:border 200ms ease-out,background-color .3s}.dark .accordion-title{border-color:rgba(255,255,255,.2)}.accordion-title.active{border-color:#446084;color:#446084;font-weight:700;background-color:rgba(0,0,0,.03)}.dark .accordion-title.active{color:#fff}.accordion .toggle{width:2.3em;height:1.5em;margin-right:5px;top:.3em;border-radius:999px;position:absolute;-webkit-transform-origin:50% 47%;-ms-transform-origin:50% 47%;transform-origin:50% 47%;left:0}.accordion .active .toggle{opacity:1;color:currentColor}.breadcrumbs{color:#222;font-weight:700;letter-spacing:0;padding:0}.product-info .breadcrumbs{font-size:.85em;margin:0 0 .5em}.breadcrumbs .divider,.breadcrumbs .separator{position:relative;top:0;opacity:.35;margin:0 .3em;font-weight:300}.dark .breadcrumbs{color:#fff}.breadcrumbs a{color:rgba(102,102,102,.7);font-weight:400}.breadcrumbs a:first-of-type{margin-left:0}.breadcrumbs a.current,.breadcrumbs a:hover{color:#111}.dark .breadcrumbs a{color:#fff}.checkout-breadcrumbs{padding:15px 0}.checkout-breadcrumbs a{color:#ccc;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.checkout-breadcrumbs .divider{top:2px;margin:0 .5em}.breadcrumb-step{display:inline-block;background-color:#ccc;color:#fff;margin:0 .5em;font-weight:bolder;text-align:center;height:1.5em;width:1.5em;font-size:.7em;line-height:1.5em;border-radius:99px;position:relative;top:1px}.current .breadcrumb-step{background-color:#d26e4b}@media(min-width:850px){.comment-form{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;margin-left:-15px;margin-right:-15px}.comment-form>div{padding:0 15px;width:100%}.comment-form>p{padding:0 15px;width:100%}.comment-form p.comment-form-author,.comment-form p.comment-form-email,.comment-form p.comment-form-url{-webkit-box-flex:1;-ms-flex:1;flex:1}}.comment-inner:target{padding:15px;background-color:#f1f1f1;border-radius:10px}.commentlist li,.comment-list li{list-style:none;padding:1em 0 0 0}.commentlist li .meta,.comment-list li .meta{margin-bottom:0}.commentlist li .avatar,.comment-list li .avatar{border-radius:100%}.commentlist li .description,.comment-list li .description{font-style:italic}.commentlist li .comment-text,.comment-list li .comment-text{padding:0 1.5em}.commentlist>li:not(:first-child),.comment-list>li:not(:first-child){border-top:1px dashed #ddd}#comments .comment-respond{background-color:rgba(0,0,0,.05);margin-top:15px;padding:15px 25px 0}#comments .comment-respond .comment-reply-title{font-size:1.2em}#comments .comment-respond small{text-transform:uppercase;margin-left:10px;font-size:.6em}.footer-wrapper{width:100%;position:relative}.footer{padding:30px 0 0}.footer-1{background-color:#fff}.footer-2{background-color:#777}.footer-1,.footer-2{border-top:1px solid rgba(0,0,0,.05)}.footer-secondary{padding:7.5px 0}.absolute-footer,html{background-color:#5b5b5b}.footer ul{margin:0}.absolute-footer{color:rgba(0,0,0,.5);padding:10px 0 15px;font-size:.9em}.absolute-footer.dark{color:rgba(255,255,255,.5)}.absolute-footer.fixed{left:0;right:0;bottom:0;padding:7.5px 15px;z-index:101;color:#fff;background-color:transparent;text-shadow:1px 1px 1px rgba(0,0,0,.7)}.absolute-footer ul{padding-bottom:5px;opacity:.8;border-bottom:1px solid #ddd}.absolute-footer.dark ul{border-color:rgba(255,255,255,.08)}.absolute-footer.text-center ul{border:0;padding-top:5px}.reveal-footer{z-index:1;margin-bottom:100px;position:relative;-webkit-box-shadow:0 0 20px 0 rgba(0,0,0,.5);box-shadow:0 0 20px 0 rgba(0,0,0,.5)}.reveal-footer+.footer-wrapper{position:fixed;bottom:0;z-index:0}.back-to-top{margin:0;opacity:0;bottom:20px;right:20px;pointer-events:none;-webkit-transform:translateY(30%);-ms-transform:translateY(30%);transform:translateY(30%)}.back-to-top.left{left:20px;right:unset}.back-to-top.active{opacity:1;pointer-events:inherit;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}.instagram-image-container{display:block;padding-bottom:100%}.instagram-image-container a>img{position:absolute;left:0;width:100%;height:100%;-o-object-fit:cover;object-fit:cover;font-family:"object-fit: cover;"}.logo{line-height:1;margin:0}.logo-tagline{font-style:italic;font-size:.9em;line-height:1;margin:.85em 0}.logo a{text-decoration:none;display:block;color:#446084;font-size:32px;text-transform:uppercase;font-weight:bolder;margin:0}.logo img{display:block;width:auto}.header-logo-dark,.nav-dark .header-logo,.header-logo-sticky,.sticky .dark .header-logo-dark,.sticky .has-sticky-logo .header-logo{display:none!important}.nav-dark .header-logo-dark,.stuck .header-logo-sticky{display:block!important}.stuck .header-logo-sticky+img,.stuck .header-logo-sticky+img+img{display:none!important}.nav-dark .logo a{color:#fff}.logo-left .logo{margin-left:0;margin-right:30px}.logo-center .flex-left{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1;-webkit-box-flex:1;-ms-flex:1 1 0%;flex:1 1 0%}.logo-center .logo{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2;text-align:center;margin:0 30px}.logo-center .logo img{margin:0 auto}.logo-center .flex-right{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3;-webkit-box-flex:1;-ms-flex:1 1 0%;flex:1 1 0%}@media screen and (max-width:849px){.header-inner .nav{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.medium-logo-left .flex-left{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1;-webkit-box-flex:0;-ms-flex:0;flex:0}.medium-logo-left .logo{-webkit-box-flex:1;-ms-flex:1;flex:1}.medium-logo-center .flex-left{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1;-webkit-box-flex:1;-ms-flex:1 1 0%;flex:1 1 0%}.medium-logo-center .logo{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2;text-align:center;margin:0 15px}.medium-logo-center .logo img{margin:0 auto}.medium-logo-center .flex-right{-webkit-box-flex:1;-ms-flex:1 1 0%;flex:1 1 0%;-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}}.map-height{height:400px}.map-inner{background-color:#fff;background-color:rgba(255,255,255,.9);padding:20px}.message-box{padding-left:30px;padding-right:30px;background-color:#f1f1f1}.message-box.dark{background-color:#333}.message-box .col,.message-box .col-inner,.message-box .row{padding-top:0!important;padding-bottom:0!important}.next-prev-thumbs li{position:relative;display:inline-block;margin:0 1px 0!important}.next-prev-thumbs li .button{margin-bottom:0}.next-prev-thumbs .nav-dropdown{padding:2px;width:90px;min-width:90px}.page-title{position:relative}.page-title .widget{margin:0 .3em;vertical-align:middle}.page-title-bg{overflow:hidden}.title-bg{-webkit-transition:opacity .6s;-o-transition:opacity .6s;transition:opacity .6s}.title-overlay{background-color:rgba(0,0,0,.25)}.page-title-inner{position:relative;padding-top:20px;min-height:60px}.page-title-inner ul,.page-title-inner select,.page-title-inner form,.page-title-inner button,.page-title-inner p{margin-top:0;margin-bottom:0}.normal-title{background-color:#f7f7f7;border-top:1px solid #ececec;border-bottom:1px solid #ececec}.normal-title .page-title-inner{padding-top:15px;padding-bottom:15px}.featured-title{background-color:#446084;text-shadow:1px 1px 1px rgba(0,0,0,.2)}.featured-title .page-title-inner{padding-bottom:20px}.featured-title .page-title-bg{-webkit-box-shadow:inset 0 0 30px 0 rgba(0,0,0,.1);box-shadow:inset 0 0 30px 0 rgba(0,0,0,.1)}.featured-title .overlay{background-color:rgba(0,0,0,.4)}.payment-icons .payment-icon{display:inline-block;opacity:.6;-webkit-transition:opacity .3s;-o-transition:opacity .3s;transition:opacity .3s;border-radius:5px;background-color:rgba(0,0,0,.1);padding-bottom:0;padding:3px 5px 5px;margin:3px 3px 0}.payment-icons .payment-icon svg{vertical-align:middle;height:20px;width:auto!important}.payment-icons .payment-icon:hover{opacity:1}.dark .payment-icons .payment-icon{background-color:rgba(255,255,255,.1)}.dark .payment-icons .payment-icon svg{fill:#fff}.pricing-table{border:1px solid #ececec;background-color:#fff;padding-bottom:15px;overflow:hidden}.dark .pricing-table{border-color:rgba(255,255,255,.2)}.pricing-table .title{padding:.5em 15%;border-bottom:1px solid #ececec}.dark .pricing-table .title{border-color:rgba(255,255,255,.2)}.pricing-table .price{color:#000;padding:.6em 15% 0;font-weight:300}.pricing-table .description{padding:15px 15px 0}.pricing-table .items{padding:10px 15%}.pricing-table .is-disabled{text-decoration:line-through;opacity:.6}.pricing-table .items .button:last-child{margin:30px 0 0}.pricing-table .bullet-more-info{font-size:14px;margin-left:10px}.pricing-table .items>div{padding:7.5px 0;border-bottom:1px solid #ececec}.dark .pricing-table .items>div{border-color:rgba(255,255,255,.08)}.dark .pricing-table{background-color:#333}.pricing-table .title{background-color:rgba(0,0,0,.02)}.featured-table{margin-top:-15px;border-color:#446084;border-width:2px}.featured-table .title{color:#fff;border-color:#446084;background-color:#446084}.scroll-to{width:100%}.scroll-to-bullets{right:0;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);z-index:999;max-height:100vh;overflow:hidden;position:fixed}.scroll-to-bullets a{display:block;border:3px solid transparent;background-color:#446084;margin:10px 15px;width:15px;height:15px;border-radius:30px;-webkit-transition:all .3s;-o-transition:all .3s;transition:all .3s;-webkit-box-shadow:1px 1px 1px rgba(0,0,0,.3);box-shadow:1px 1px 1px rgba(0,0,0,.3)}.scroll-to-bullets a:hover{opacity:1;background-color:#fff}.scroll-to-bullets a.active{opacity:1;border-color:#446084;background-color:#fff}.sidebar-menu .search-form{display:block!important}.searchform-wrapper form{margin-bottom:0}.mobile-nav>.search-form,.sidebar-menu .search-form{padding:5px 0;width:100%}.form-flat .search-form-categories{padding-right:5px}.widget_search .submit-button,.searchform-wrapper:not(.form-flat) .submit-button{border-top-left-radius:0!important;border-bottom-left-radius:0!important}.searchform{position:relative}.searchform .button.icon{margin:0}.searchform .button.icon i{font-size:1.2em}.searchform-wrapper{width:100%}.searchform-wrapper.form-flat .submit-button.loading .icon-search{opacity:0}.searchform-wrapper.form-flat .submit-button.loading:after{border-color:currentColor}.searchform-wrapper.form-flat .flex-col:last-of-type{margin-left:-2.9em}.searchform-wrapper .autocomplete-suggestions{overflow-y:scroll;-webkit-overflow-scrolling:touch;max-height:50vh;overflow-y:auto}.header-block .autocomplete-suggestions,.header .search-form .autocomplete-suggestions{max-height:80vh}.col .live-search-results,.header-block .live-search-results,.header .search-form .live-search-results{text-align:left;color:#111;top:105%;-webkit-box-shadow:0 0 10px 0 rgba(0,0,0,.1);box-shadow:0 0 10px 0 rgba(0,0,0,.1);left:0;right:0;background-color:rgba(255,255,255,.95);position:absolute}.header li .html .live-search-results{top:0;position:relative;-webkit-box-shadow:none;box-shadow:none;background-color:transparent}.autocomplete-suggestion{padding:10px .75em;border-bottom:1px solid rgba(0,0,0,.05);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;cursor:default}.autocomplete-suggestion .search-name{-webkit-box-flex:1;-ms-flex:1;flex:1}.autocomplete-suggestion img{width:40px;border-radius:99px;height:40px;display:inline-block;margin-right:10px}.autocomplete-suggestion img+.search-name{margin-top:-.15em;padding-left:.5em}.autocomplete-suggestion .search-price{padding-top:3px;margin-left:5px;font-size:.8em}.autocomplete-suggestion:last-child{border-bottom:none}.autocomplete-selected{background-color:rgba(0,0,0,.05)}#search-lightbox{font-size:1.5em;margin:0 auto;max-width:600px}.section-title-container{margin-bottom:1.5em}.row-collapse+.section-title-container,.slider-wrapper+.section-title-container,.banner+.section-title-container{margin-top:30px}.section-title{position:relative;-js-display:flex;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;width:100%}.section-title i{opacity:.6;margin-right:.5em}.section-title i.icon-angle-right{margin-right:0;margin-left:10px}.section-title span{text-transform:uppercase}.section-title small{text-transform:none;font-weight:400;padding-left:15px;font-size:1em;opacity:.7}.section-title b{display:block;-webkit-box-flex:1;-ms-flex:1;flex:1;height:2px;opacity:.1;background-color:currentColor}.section-title a{display:block;padding-left:15px;font-size:.8em;margin-left:auto}.section-title-normal{border-bottom:2px solid #ececec}.section-title-normal span{margin-right:15px;padding-bottom:7.5px;border-bottom:2px solid rgba(0,0,0,.1);margin-bottom:-2px}.dark .section-title-normal span,.dark .section-title-normal{border-color:rgba(255,255,255,.2)}.section-title-normal b{display:none}.section-title-center span{margin:0 15px}.section-title-center span,.section-title-bold-center span{text-align:center}.section-title-center small,.section-title-bold-center small{padding:0 15px;display:block}.section-title-bold-center span,.section-title-bold span{border:2px solid rgba(0,0,0,.1);padding:.3em .8em}.section-title-bold b:first-of-type{display:none}.flatsome-cookies{position:fixed;top:auto;right:0;bottom:0;left:0;z-index:999;padding:15px 30px;background-color:#fff;-webkit-box-shadow:0 0 9px rgba(0,0,0,.14);box-shadow:0 0 9px rgba(0,0,0,.14);-webkit-transition:-webkit-transform .35s ease;transition:-webkit-transform .35s ease;-o-transition:transform .35s ease;transition:transform .35s ease;transition:transform .35s ease,-webkit-transform .35s ease;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}.flatsome-cookies__inner{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.flatsome-cookies__text{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;padding-right:30px}.flatsome-cookies__buttons{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.flatsome-cookies__buttons>a{margin-right:20px;margin-bottom:0}.flatsome-cookies__buttons>a:last-child{margin-right:0}.flatsome-cookies--inactive{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}.flatsome-cookies--active{-webkit-transform:none;-ms-transform:none;transform:none}@media(max-width:849px){.flatsome-cookies__inner{-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;text-align:center;font-size:.9em}.flatsome-cookies__buttons{margin-top:15px}.flatsome-cookies__text{padding-right:0}}.icon-lock:before{content:""}.icon-user-o:before{content:""}.icon-line:before,.icon-chat:before{content:""}.icon-user:before{content:""}.icon-shopping-cart:before{content:""}.icon-tumblr:before{content:""}.icon-gift:before{content:""}.icon-phone:before{content:""}.icon-play:before{content:""}.icon-menu:before{content:""}.icon-equalizer:before{content:""}.icon-shopping-basket:before{content:""}.icon-shopping-bag:before{content:""}.icon-google-plus:before{content:""}.icon-heart-o:before{content:""}.icon-heart:before{content:""}.icon-500px:before{content:""}.icon-vk:before{content:""}.icon-angle-left:before{content:""}.icon-angle-right:before{content:""}.icon-angle-up:before{content:""}.icon-angle-down:before{content:""}.icon-twitter:before{content:""}.icon-envelop:before{content:""}.icon-tag:before{content:""}.icon-star:before{content:""}.icon-star-o:before{content:""}.icon-facebook:before{content:""}.icon-feed:before{content:""}.icon-checkmark:before{content:""}.icon-plus:before{content:""}.icon-instagram:before{content:""}.icon-tiktok:before{content:""}.icon-pinterest:before{content:""}.icon-search:before{content:""}.icon-skype:before{content:""}.icon-dribbble:before{content:""}.icon-certificate:before{content:""}.icon-expand:before{content:""}.icon-linkedin:before{content:""}.icon-map-pin-fill:before{content:""}.icon-pen-alt-fill:before{content:""}.icon-youtube:before{content:""}.icon-flickr:before{content:""}.icon-clock:before{content:""}.icon-snapchat:before{content:""}.icon-whatsapp:before{content:""}.icon-telegram:before{content:""}.icon-twitch:before{content:""}.icon-discord:before{content:""}.ux-shape-divider{--divider-top-width:100%;--divider-width:100%;position:absolute;left:0;width:100%;overflow:hidden;line-height:0}.ux-shape-divider svg{display:block;position:relative;left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);height:150px}.ux-shape-divider--top{top:-1px;-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.ux-shape-divider--top svg{width:calc(var(--divider-top-width) + 2px)}.ux-shape-divider--bottom{bottom:-1px}.ux-shape-divider--bottom svg{width:calc(var(--divider-width) + 2px)}.ux-shape-divider--flip svg{-webkit-transform:translateX(-50%) rotateY(180deg);transform:translateX(-50%) rotateY(180deg)}.ux-shape-divider--to-front{z-index:2}.ux-shape-divider .ux-shape-fill{fill:#fff}.text-center .social-icons{margin-left:auto;margin-right:auto}.social-icons{display:inline-block;vertical-align:middle;font-size:.85em;color:#999}.html .social-icons{font-size:1em}.html .social-icons .button{margin-bottom:0}.social-icons span{font-weight:700;padding-right:10px}.social-icons i{min-width:1em}.nav-dark .social-icons,.dark .social-icons{color:#fff}.nav-dark .social-icons .button.is-outline,.dark .social-icons .button.is-outline{border-color:rgba(255,255,255,.5)}.social-button,.social-icons .button.icon:not(.is-outline),.social-icons .button.icon:hover{background-color:currentColor!important;border-color:currentColor!important}.social-button>i,.social-button>span,.social-icons .button.icon:not(.is-outline)>i,.social-icons .button.icon:not(.is-outline)>span,.social-icons .button.icon:hover>i,.social-icons .button.icon:hover>span{color:#fff!important}.button.facebook:not(.is-outline),.button.facebook:hover{color:#3a589d!important}.button.instagram:not(.is-outline),.button.instagram:hover{color:#3b6994!important}.button.whatsapp:not(.is-outline),.button.whatsapp:hover{color:#51cb5a!important}.button.twitter:not(.is-outline),.button.twitter:hover{color:#2478ba!important}.button.tiktok:not(.is-outline),.button.tiktok:hover,.button.email:not(.is-outline),.button.email:hover{color:#111!important}.button.phone:not(.is-outline),.button.phone:hover{color:#51cb5a!important}.button.pinterest:not(.is-outline),.button.pinterest:hover{color:#cb2320!important}.button.rss:not(.is-outline),.button.rss:hover{color:#fc7600!important}.button.tumblr:not(.is-outline),.button.tumblr:hover{color:#36455d!important}.button.vk:not(.is-outline),.button.vk:hover{color:#527498!important}.button.google-plus:not(.is-outline),.button.google-plus:hover{color:#dd4e31!important}.button.linkedin:not(.is-outline),.button.linkedin:hover{color:#0072b7!important}.button.youtube:not(.is-outline),.button.youtube:hover{color:#c33223!important}.button.flickr:not(.is-outline),.button.flickr:hover{color:#e5086f!important}.button.snapchat:not(.is-outline),.button.snapchat:hover{color:#fff600!important}.button.snapchat:not(.is-outline) i,.button.snapchat:hover i{text-shadow:0 0 6px rgba(0,0,0,.4)}.button.px500:not(.is-outline),.button.px500:hover{color:#0099e5!important}.button.telegram:not(.is-outline),.button.telegram:hover{color:#54a9ea!important}.button.twitch:not(.is-outline),.button.twitch:hover{color:#9146fe!important}.button.discord:not(.is-outline),.button.discord:hover{color:#7189d9!important}.woocommerce-product-rating{visibility:visible;position:relative}.star-rating{text-align:left;font-size:16px;display:block;overflow:hidden;position:relative;height:1em;line-height:1em;letter-spacing:0;margin:.5em 0;width:5.06em;font-family:"fl-icons"!important;font-weight:normal!important;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.star-rating:before,.woocommerce-page .star-rating:before{content:"";color:#d26e4b;float:left;top:0;left:0;position:absolute}.star-rating span{overflow:hidden;float:left;width:10px;height:10px;top:0;left:0;font-family:"fl-icons"!important;font-weight:normal!important;position:absolute;padding-top:1.5em}.star-rating span:before{content:"";color:#d26e4b;top:0;position:absolute;left:0}.star-rating--inline{display:inline-block;vertical-align:middle;height:18px}.woocommerce-review-link{font-size:90%}li.wc-layered-nav-rating{font-size:.8em}li.wc-layered-nav-rating .star-rating{margin-bottom:0;display:inline-block}.stars a{font-size:16px;margin-left:-10px;display:inline-block;color:transparent!important;overflow:hidden;font-family:"fl-icons"}.stars a+a{margin-left:.3em;border-left:1px solid #ececec}.stars a:hover:after,.stars a.active:after{color:#d26e4b}.stars a:after{color:#ddd;content:""}.stars a.star-2:after{content:""}.stars a.star-3:after{content:""}.stars a.star-4:after{content:""}.stars a.star-5:after{content:""} \ No newline at end of file diff --git a/wp-content/cache/min/1/28ddaf2bd7547e4cd818ca3342088a73.css.gz b/wp-content/cache/min/1/28ddaf2bd7547e4cd818ca3342088a73.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..e41ed33bba3d56cb0f8f0e04c95f05bb94105b3d GIT binary patch literal 48042 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�jFlNYSJC)Y2Ze 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]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="

",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0");t!==e&&T(e)!==T(t)&&u("HTML tags must be properly nested and closed: "+e)}var O=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,q=s.htmlPrefilter;s.UNSAFE_restoreLegacyHtmlPrefilter=function(){s.htmlPrefilter=function(e){return P(e),e.replace(O,"<$1>")}},s.htmlPrefilter=function(e){return P(e),q(e)};var D,_=s.fn.offset;s.fn.offset=function(){var e=this[0];return!e||e.nodeType&&e.getBoundingClientRect?_.apply(this,arguments):(u("jQuery.fn.offset() requires a valid DOM element"),arguments.length?this:void 0)},s.ajax&&(D=s.param,s.param=function(e,t){var r=s.ajaxSettings&&s.ajaxSettings.traditional;return void 0===t&&r&&(u("jQuery.param() no longer uses jQuery.ajaxSettings.traditional"),t=r),D.call(this,e,t)});var E,F,J=s.fn.andSelf||s.fn.addBack;return s.fn.andSelf=function(){return u("jQuery.fn.andSelf() is deprecated and removed, use jQuery.fn.addBack()"),J.apply(this,arguments)},s.Deferred&&(E=s.Deferred,F=[["resolve","done",s.Callbacks("once memory"),s.Callbacks("once memory"),"resolved"],["reject","fail",s.Callbacks("once memory"),s.Callbacks("once memory"),"rejected"],["notify","progress",s.Callbacks("memory"),s.Callbacks("memory")]],s.Deferred=function(e){var i=E(),a=i.promise();return i.pipe=a.pipe=function(){var o=arguments;return u("deferred.pipe() is deprecated"),s.Deferred(function(n){s.each(F,function(e,t){var r="function"==typeof o[e]&&o[e];i[t[1]](function(){var e=r&&r.apply(this,arguments);e&&"function"==typeof e.promise?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[t[0]+"With"](this===a?n.promise():this,r?[e]:arguments)})}),o=null}).promise()},e&&e.call(i,i),i},s.Deferred.exceptionHook=E.exceptionHook),s});if(screen.width<=767){}else{};var runtime=function(a){"use strict";var u,t=Object.prototype,h=t.hasOwnProperty,r="function"==typeof Symbol?Symbol:{},n=r.iterator||"@@iterator",e=r.asyncIterator||"@@asyncIterator",o=r.toStringTag||"@@toStringTag";function i(t,r,e){return Object.defineProperty(t,r,{value:e,enumerable:!0,configurable:!0,writable:!0}),t[r]}try{i({},"")}catch(t){i=function(t,r,e){return t[r]=e}}function c(t,r,e,n){var o,i,a,c,r=r&&r.prototype instanceof v?r:v,r=Object.create(r.prototype),n=new j(n||[]);return r._invoke=(o=t,i=e,a=n,c=l,function(t,r){if(c===p)throw new Error("Generator is already running");if(c===y){if("throw"===t)throw r;return k()}for(a.method=t,a.arg=r;;){var e=a.delegate;if(e){var n=function t(r,e){var n=r.iterator[e.method];if(n===u){if(e.delegate=null,"throw"===e.method){if(r.iterator.return&&(e.method="return",e.arg=u,t(r,e),"throw"===e.method))return g;e.method="throw",e.arg=new TypeError("The iterator does not provide a 'throw' method")}return g}var n=f(n,r.iterator,e.arg);if("throw"===n.type)return e.method="throw",e.arg=n.arg,e.delegate=null,g;n=n.arg;if(!n)return e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,g;{if(!n.done)return n;e[r.resultName]=n.value,e.next=r.nextLoc,"return"!==e.method&&(e.method="next",e.arg=u)}e.delegate=null;return g}(e,a);if(n){if(n===g)continue;return n}}if("next"===a.method)a.sent=a._sent=a.arg;else if("throw"===a.method){if(c===l)throw c=y,a.arg;a.dispatchException(a.arg)}else"return"===a.method&&a.abrupt("return",a.arg);c=p;n=f(o,i,a);if("normal"===n.type){if(c=a.done?y:s,n.arg!==g)return{value:n.arg,done:a.done}}else"throw"===n.type&&(c=y,a.method="throw",a.arg=n.arg)}}),r}function f(t,r,e){try{return{type:"normal",arg:t.call(r,e)}}catch(t){return{type:"throw",arg:t}}}a.wrap=c;var l="suspendedStart",s="suspendedYield",p="executing",y="completed",g={};function v(){}function d(){}function m(){}var w={};i(w,n,function(){return this});r=Object.getPrototypeOf,r=r&&r(r(O([])));r&&r!==t&&h.call(r,n)&&(w=r);var L=m.prototype=v.prototype=Object.create(w);function x(t){["next","throw","return"].forEach(function(r){i(t,r,function(t){return this._invoke(r,t)})})}function b(a,c){var r;this._invoke=function(e,n){function t(){return new c(function(t,r){!function r(t,e,n,o){t=f(a[t],a,e);if("throw"!==t.type){var i=t.arg;return(e=i.value)&&"object"==typeof e&&h.call(e,"__await")?c.resolve(e.__await).then(function(t){r("next",t,n,o)},function(t){r("throw",t,n,o)}):c.resolve(e).then(function(t){i.value=t,n(i)},function(t){return r("throw",t,n,o)})}o(t.arg)}(e,n,t,r)})}return r=r?r.then(t,t):t()}}function E(t){var r={tryLoc:t[0]};1 in t&&(r.catchLoc=t[1]),2 in t&&(r.finallyLoc=t[2],r.afterLoc=t[3]),this.tryEntries.push(r)}function _(t){var r=t.completion||{};r.type="normal",delete r.arg,t.completion=r}function j(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(E,this),this.reset(!0)}function O(r){if(r){var t=r[n];if(t)return t.call(r);if("function"==typeof r.next)return r;if(!isNaN(r.length)){var e=-1,t=function t(){for(;++eo;)u(e,r=n[o++])&&(~f(i,r)||p(i,r));return i}},function(t,n,r){var f=r(10),a=r(55),p=r(57),r=function(c){return function(t,n,r){var e,o=f(t),i=p(o),u=a(r,i);if(c&&n!=n){for(;u"+t+""}function i(t){t.write(o("")),t.close();var n=t.parentWindow.Object;return t=null,n}var u,c=r(42),f=r(64),a=r(59),p=r(48),s=r(66),l=r(39),r=r(47),y="prototype",v="script",d=r("IE_PROTO"),b=function(){try{u=new ActiveXObject("htmlfile")}catch(t){}var t;b="undefined"==typeof document||document.domain&&u?i(u):((t=l("iframe")).style.display="none",s.appendChild(t),t.src=String("javascript:"),(t=t.contentWindow.document).open(),t.write(o("document.F=Object")),t.close(),t.F);for(var n=a.length;n--;)delete b[y][a[n]];return b()};p[d]=!0,t.exports=Object.create||function(t,n){var r;return null!==t?(e[y]=c(t),r=new e,e[y]=null,r[d]=t):r=b(),n===C?r:f(r,n)}},function(t,n,r){var e=r(5),c=r(41),f=r(42),a=r(10),p=r(65);t.exports=e?Object.defineProperties:function(t,n){f(t);for(var r,e=a(n),o=p(n),i=o.length,u=0;u1;return c&&(a/=2),s.offset=o(s.offset),s.over=o(s.over),this.each((function(){if(null!==r){var l,u=n(this),d=u?this.contentWindow||window:this,f=t(d),h=r,p={};switch(typeof h){case"number":case"string":if(/^([+-]=?)?\d+(\.\d+)?(px|%)?$/.test(h)){h=o(h);break}h=u?t(h):t(h,d);case"object":if(0===h.length)return;(h.is||h.style)&&(l=(h=t(h)).offset())}var y=i(s.offset)&&s.offset(d,h)||s.offset;t.each(s.axis.split(""),(function(t,n){var i="x"===n?"Left":"Top",o=i.toLowerCase(),r="scroll"+i,a=f[r](),m=e.max(d,n);if(l)p[r]=l[o]+(u?0:a-f.offset()[o]),s.margin&&(p[r]-=parseInt(h.css("margin"+i),10)||0,p[r]-=parseInt(h.css("border"+i+"Width"),10)||0),p[r]+=y[o]||0,s.over[o]&&(p[r]+=h["x"===n?"width":"height"]()*s.over[o]);else{var v=h[o];p[r]=v.slice&&"%"===v.slice(-1)?parseFloat(v)/100*m:v}s.limit&&/^\d+$/.test(p[r])&&(p[r]=p[r]<=0?0:Math.min(p[r],m)),!t&&s.axis.length>1&&(a===p[r]?p={}:c&&(g(s.onAfterFirst),p={}))})),g(s.onAfter)}function g(e){var n=t.extend({},s,{queue:!0,duration:a,complete:e&&function(){e.call(d,h,s)}});f.animate(p,n)}}))},e.max=function(e,i){var o="x"===i?"Width":"Height",r="scroll"+o;if(!n(e))return e[r]-t(e)[o.toLowerCase()]();var a="client"+o,s=e.ownerDocument||e.document,c=s.documentElement,l=s.body;return Math.max(c[r],l[r])-Math.min(c[a],l[a])},t.Tween.propHooks.scrollLeft=t.Tween.propHooks.scrollTop={get:function(e){return t(e.elem)[e.prop]()},set:function(e){var n=this.get(e);if(e.options.interrupt&&e._last&&e._last!==n)return t(e.elem).stop();var i=Math.round(e.now);n!==i&&(t(e.elem)[e.prop](i),e._last=this.get(e))}},e})?i.apply(e,o):i)||(t.exports=r)}()},function(t,e){!function(){"use strict";var t=0,e={};function n(i){if(!i)throw new Error("No options passed to Waypoint constructor");if(!i.element)throw new Error("No element option passed to Waypoint constructor");if(!i.handler)throw new Error("No handler option passed to Waypoint constructor");this.key="waypoint-"+t,this.options=n.Adapter.extend({},n.defaults,i),this.element=this.options.element,this.adapter=new n.Adapter(this.element),this.callback=i.handler,this.axis=this.options.horizontal?"horizontal":"vertical",this.enabled=this.options.enabled,this.triggerPoint=null,this.group=n.Group.findOrCreate({name:this.options.group,axis:this.axis}),this.context=n.Context.findOrCreateByElement(this.options.context),n.offsetAliases[this.options.offset]&&(this.options.offset=n.offsetAliases[this.options.offset]),this.group.add(this),this.context.add(this),e[this.key]=this,t+=1}n.prototype.queueTrigger=function(t){this.group.queueTrigger(this,t)},n.prototype.trigger=function(t){this.enabled&&this.callback&&this.callback.apply(this,t)},n.prototype.destroy=function(){this.context.remove(this),this.group.remove(this),delete e[this.key]},n.prototype.disable=function(){return this.enabled=!1,this},n.prototype.enable=function(){return this.context.refresh(),this.enabled=!0,this},n.prototype.next=function(){return this.group.next(this)},n.prototype.previous=function(){return this.group.previous(this)},n.invokeAll=function(t){var n=[];for(var i in e)n.push(e[i]);for(var o=0,r=n.length;oi.oldScroll?i.forward:i.backward;for(var r in this.waypoints[n]){var a=this.waypoints[n][r];if(null!==a.triggerPoint){var s=i.oldScroll=a.triggerPoint;(s&&c||!s&&!c)&&(a.queueTrigger(o),t[a.group.id]=a.group)}}}for(var l in t)t[l].flushTriggers();this.oldScroll={x:e.horizontal.newScroll,y:e.vertical.newScroll}},r.prototype.innerHeight=function(){return this.element==this.element.window?i.viewportHeight():this.adapter.innerHeight()},r.prototype.remove=function(t){delete this.waypoints[t.axis][t.key],this.checkEmpty()},r.prototype.innerWidth=function(){return this.element==this.element.window?i.viewportWidth():this.adapter.innerWidth()},r.prototype.destroy=function(){var t=[];for(var e in this.waypoints)for(var n in this.waypoints[e])t.push(this.waypoints[e][n]);for(var i=0,o=t.length;i-1&&(h=Math.ceil(a.contextDimension*h/100))),c=a.contextScroll-a.contextOffset,f.triggerPoint=Math.floor(y+c-h),l=p=a.oldScroll,d=!l&&!u,!g&&l&&u?(f.queueTrigger(a.backward),o[f.group.id]=f.group):(!g&&d||g&&a.oldScroll>=f.triggerPoint)&&(f.queueTrigger(a.forward),o[f.group.id]=f.group)}}return i.requestAnimationFrame((function(){for(var t in o)o[t].flushTriggers()})),this},r.findOrCreateByElement=function(t){return r.findByElement(t)||new r(t)},r.refreshAll=function(){for(var t in n)n[t].refresh()},r.findByElement=function(t){return n[t.waypointContextKey]},window.onload=function(){o&&o(),r.refreshAll()},i.requestAnimationFrame=function(e){(window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||t).call(window,e)},i.Context=r}(),function(){"use strict";function t(t,e){return t.triggerPoint-e.triggerPoint}function e(t,e){return e.triggerPoint-t.triggerPoint}var n={vertical:{},horizontal:{}},i=window.Waypoint;function o(t){this.name=t.name,this.axis=t.axis,this.id=this.name+"-"+this.axis,this.waypoints=[],this.clearTriggerQueues(),n[this.axis][this.name]=this}o.prototype.add=function(t){this.waypoints.push(t)},o.prototype.clearTriggerQueues=function(){this.triggerQueues={up:[],down:[],left:[],right:[]}},o.prototype.flushTriggers=function(){for(var n in this.triggerQueues){var i=this.triggerQueues[n],o="up"===n||"left"===n;i.sort(o?e:t);for(var r=0,a=i.length;r-1&&this.waypoints.splice(e,1)},o.prototype.first=function(){return this.waypoints[0]},o.prototype.last=function(){return this.waypoints[this.waypoints.length-1]},o.findOrCreate=function(t){return n[t.axis][t.name]||new o(t)},i.Group=o}(),function(){"use strict";var t=window.jQuery,e=window.Waypoint;function n(e){this.$element=t(e)}t.each(["innerHeight","innerWidth","off","offset","on","outerHeight","outerWidth","scrollLeft","scrollTop"],(function(t,e){n.prototype[e]=function(){var t=Array.prototype.slice.call(arguments);return this.$element[e].apply(this.$element,t)}})),t.each(["extend","inArray","isEmptyObject"],(function(e,i){n[i]=t[i]})),e.adapters.push({name:"jquery",Adapter:n}),e.Adapter=n}(),function(){"use strict";var t=window.Waypoint;function e(e){return function(){var n=[],i=arguments[0];return e.isFunction(arguments[0])&&((i=e.extend({},arguments[1])).handler=arguments[0]),this.each((function(){var o=e.extend({},i,{element:this});"string"==typeof o.context&&(o.context=e(this).closest(o.context)[0]),n.push(new t(o))})),n}}window.jQuery&&(window.jQuery.fn.waypoint=e(window.jQuery)),window.Zepto&&(window.Zepto.fn.waypoint=e(window.Zepto))}()},function(t,e,n){"use strict";(function(t){var e=n(7),i=n.n(e);t.Flatsome={behaviors:{},plugin:function(t,e,n){n=n||{},jQuery.fn[t]=function(o){if("string"==typeof arguments[0]){var r=null,a=arguments[0],s=Array.prototype.slice.call(arguments,1);return this.each((function(){if(!jQuery.data(this,"plugin_"+t)||"function"!=typeof jQuery.data(this,"plugin_"+t)[a])throw new Error("Method "+a+" does not exist on jQuery."+t);r=jQuery.data(this,"plugin_"+t)[a].apply(this,s)})),"destroy"===a&&this.each((function(){jQuery(this).removeData("plugin_"+t)})),void 0!==r?r:this}if("object"===i()(o)||!o)return this.each((function(){jQuery.data(this,"plugin_"+t)||(o=jQuery.extend({},n,o),jQuery.data(this,"plugin_"+t,new e(this,o)))}))}},behavior:function(t,e){this.behaviors[t]=e,e.arrive&&jQuery(document).arrive(e.arrive.selector,e.arrive.handler||function(){Flatsome.attach(t,this.parentNode)})},attach:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:t;if("string"==typeof t)return this.behaviors.hasOwnProperty(t)&&"function"==typeof this.behaviors[t].attach?this.behaviors[t].attach(e||document):null;for(var n in this.behaviors)"function"==typeof this.behaviors[n].attach&&this.behaviors[n].attach(e||document)},detach:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:t;if("string"==typeof t)return this.behaviors.hasOwnProperty(t)&&"function"==typeof this.behaviors[t].detach?this.behaviors[t].detach(e||document):null;for(var n in this.behaviors)"function"==typeof this.behaviors[n].detach&&this.behaviors[n].detach(e||document)}}}).call(this,n(2))},function(t,e,n){"use strict";var i=n(0),o=jQuery("#wrapper"),r=jQuery("#header"),a=jQuery(".header-top",r),s=jQuery("#wpadminbar"),c=s.length&&s.is(":visible")?s.height():0,l=r.hasClass("has-sticky"),u=r.hasClass("sticky-hide-on-scroll"),d=-jQuery(".header-wrapper").height()-100,f=a.hasClass("hide-for-sticky")?-a.height()-1:-1;if(jQuery(".sticky-shrink .header-wrapper").length){var h=a.hasClass("hide-for-sticky")?a.height():0;d=-1-h+c,f=-1-h}if(l&&(r.find(".header-wrapper").waypoint((function(t){var e=jQuery(this.element),n=r.height();"down"===t&&(jQuery(document).trigger("flatsome-header-sticky"),e.addClass("stuck"),r.height(n),jQuery(".has-transparent").removeClass("transparent"),jQuery(".toggle-nav-dark").removeClass("nav-dark"))}),{offset:d}),o.waypoint((function(t){Object(i.c)()||"up"===t&&(r.height(""),jQuery(".header-wrapper").removeClass("stuck"),jQuery(".has-transparent").addClass("transparent"),jQuery(".toggle-nav-dark").addClass("nav-dark"))}),{offset:f+c}),u)){var p,y=0;jQuery(window).on("scroll",(function(){if(!Object(i.c)()){clearTimeout(p);var t=jQuery(window).scrollTop(),e=jQuery(".header-wrapper");t>=e.outerHeight()&&(t<=y?(e.addClass("stuck"),r.removeClass("sticky-hide-on-scroll--active")):(e.removeClass("stuck"),r.addClass("sticky-hide-on-scroll--active"))),p=setTimeout((function(){y=jQuery(window).scrollTop()}),100)}}))}},function(t,e){},function(t,e,n){"use strict";var i=[];function o(){for(var t=0;tr||f.top+a.offsetHeight<0))switch(i){case"backgroundImage":v=f.top*o,n.style.backgroundPosition=o?"50% ".concat(v.toFixed(0),"px"):null,n.style.backgroundAttachment=o?"fixed":null;break;case"backgroundElement":v=y*o-l/2,n.style.transform=o?"translate3d(0, ".concat(v.toFixed(2),"px, 0)"):null,n.style.backfaceVisibility=o?"hidden":null;break;case"element":v=g*o,n.style.transform=o?"translate3d(0, ".concat(v.toFixed(2),"px, 0)"):null,n.style.backfaceVisibility=o?"hidden":null,void 0!==n.dataset.parallaxFade&&(n.style.opacity=o?(e=1-m,e*(2-e)).toFixed(2):null)}}(t)}function a(t){return void 0!==t.dataset.parallaxBackground?"backgroundElement":void 0!==t.dataset.parallaxElemenet?"element":""!==t.style.backgroundImage?"backgroundImage":"element"}function s(){return document.documentElement.scrollTop||document.body.scrollTop}function c(t){return function(t){for(var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;t&&!l(t).call(t,e);)t=t.parentElement;return t}(t,t.dataset.parallaxContainer||"[data-parallax-container]")||t}function l(t){return t.matches||t.webkitMatchesSelector||t.mozMatchesSelector||t.msMatchesSelector}function u(t){return t/10*-1/(2-Math.abs(t)/10)}window.addEventListener("scroll",(function(){return window.requestAnimationFrame(o)})),window.addEventListener("resize",(function(){return window.requestAnimationFrame(o)})),window.addEventListener("DOMNodeInserted",(function(){return window.requestAnimationFrame(o)})),window.jQuery&&(window.jQuery.fn.flatsomeParallax=function(t){"destroy"!==t&&this.each((function(t,e){return function(t){t.classList.add("parallax-active"),!document.querySelector("body").classList.contains("parallax-mobile")&&/Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent)||t.classList&&t.dataset&&(i.push({element:t,type:a(t)}),r(i[i.length-1]))}(e)}))})},function(t,e){Flatsome.plugin("resizeselect",(function(t,e){jQuery(t).change((function(){var t=jQuery(this),e=t.find("option:selected").val(),n=t.find("option:selected").text(),i=jQuery('').html(n);i.appendTo(t.parent());var o=i.width();i.remove(),t.width(o+7),e&&t.parent().parent().find("input.search-field").focus()})).change()}))},function(t,e,n){"use strict";var i=n(3);function o(){return console.warn("Flatsome: Flickity is lazy loaded. Use 'lazyFlickity()' to instantiate and 'flatsome-flickity-ready' event to interact with Flickity instead."),this}jQuery.fn.flickity||(jQuery.fn.flickity=o),jQuery.fn.lazyFlickity=function(t){var e=Object(i.a)((function(i){if(i.isIntersecting){if(e.unobserve(i.target),!jQuery.fn.flickity||jQuery.fn.flickity===o)return n.e(5).then(n.t.bind(null,54,7)).then((function(){jQuery(i.target).flickity(t),jQuery(i.target).trigger("flatsome-flickity-ready")}));jQuery(i.target).flickity(t),jQuery(i.target).trigger("flatsome-flickity-ready")}}));return this.each((function(n,i){"string"==typeof t?jQuery.fn.flickity&&jQuery(i).flickity(t):e.observe(i)}))}},function(t,e,n){jQuery.fn.lazyTooltipster=function(t){return this.each((function(e,i){var o=jQuery(i);"string"==typeof t?jQuery.fn.tooltipster&&o.hasClass("tooltipstered")&&o.tooltipster(t):o.one("mouseenter",(function(e){!function(t,e){(jQuery.fn.tooltipster?Promise.resolve():n.e(3).then(n.t.bind(null,55,7))).then((function(){t.hasClass("tooltipstered")||t.tooltipster(e),t.tooltipster("show")}))}(o,t)}))}))}},function(t,e){jQuery(".section .loading-spin, .banner .loading-spin, .page-loader").fadeOut(),jQuery("#top-link").on("click",(function(t){jQuery.scrollTo(0,300),t.preventDefault()})),jQuery(".scroll-for-more").on("click",(function(){jQuery.scrollTo(jQuery(this),{duration:300})})),jQuery(".search-dropdown button").on("click",(function(t){jQuery(this).parent().find("input").trigger("focus"),t.preventDefault()})),jQuery(".current-cat").addClass("active"),jQuery("html").removeClass("loading-site"),setTimeout((function(){jQuery(".page-loader").remove()}),1e3),jQuery(".resize-select").resizeselect(),flatsomeVars.user.can_edit_pages&&jQuery(".block-edit-link").each((function(){var t=jQuery(this),e=t.data("link"),n=t.data("backend"),i=t.data("title"),o=t.parents('[id^="menu-item-"]');if(o.length&&o.hasClass("menu-item-has-block")){var r=o.attr("id").match(/menu-item-(\d+)/);r&&r[1]&&(e+="&menu_id=".concat(r[1]))}jQuery(this).next().addClass("has-block").lazyTooltipster({animationDuration:100,distance:-15,delay:0,repositionOnScroll:!0,interactive:!0,contentAsHTML:!0,content:i+'
UX Builder WP Editor'}),jQuery(this).remove()})),document.addEventListener("uxb_app_ready",(function(){var t=new URLSearchParams(window.top.location.search),e=parseInt(t.get("menu_id"));e&&setTimeout((function(){var t=jQuery("#menu-item-".concat(e)),n=t.parent().hasClass("ux-nav-vertical-menu");t.hasClass("menu-item-has-block has-dropdown")&&!t.hasClass("current-dropdown")&&(n&&jQuery(".header-vertical-menu__fly-out").addClass("header-vertical-menu__fly-out--open"),jQuery("#menu-item-".concat(e," a:first")).trigger("click"))}),1e3)})),jQuery("#hotspot").on("click",(function(t){t.preventDefault()})),jQuery(".wpcf7-form .wpcf7-submit").on("click",(function(t){jQuery(this).parent().parent().addClass("processing")})),jQuery(".wpcf7").on("wpcf7invalid wpcf7spam wpcf7mailsent wpcf7mailfailed",(function(t){jQuery(".processing").removeClass("processing")})),jQuery(document).ajaxComplete((function(t,e,n){jQuery(".processing").removeClass("processing")}))},function(t,e){Flatsome.behavior("animate",{attach:function(t){jQuery("[data-animate]",t).each((function(t,e){var n=jQuery(e);if(0===n.data("animate").length)return n.attr("data-animated","true");n.waypoint((function(t){if("down"===t){if("true"==n.data("animated"))return;setTimeout((function(){n.attr("data-animated","true")}),300)}}),{offset:"101%"})}))},detach:function(t){jQuery("[data-animate]",t).each((function(t,e){jQuery(e).attr("data-animated","false")}))}})},function(t,e){Flatsome.behavior("commons",{attach:function(t){jQuery("select.resizeselect").resizeselect(),jQuery("[data-parallax]",t).flatsomeParallax(),jQuery.fn.packery&&(jQuery("[data-packery-options], .has-packery",t).each((function(){var t=jQuery(this);t.packery({originLeft:!flatsomeVars.rtl}),setTimeout((function(){t.imagesLoaded((function(){t.packery("layout")}))}),100)})),jQuery(".banner-grid-wrapper").imagesLoaded((function(){jQuery(this.elements).removeClass("processing")}))),"objectFitPolyfill"in window&&window.objectFitPolyfill()},detach:function(t){}})},function(t,e,n){Flatsome.behavior("count-up",{attach:function(t){jQuery("span.count-up",t).each((function(t,e){var i=jQuery(e);i.waypoint({handler:function(t){jQuery(this.element).hasClass("active")||n.e(0).then(n.bind(null,56)).then((function(t){var e=t.CountUp,n=parseInt(i.text());new e(i.get(0),n,{decimalPlaces:0,duration:4}).start(),i.addClass("active")}))},offset:"100%"})}))}})},function(t,e,n){"use strict";(function(t){var e=n(8),i=n.n(e);function o(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,i)}return n}function r(t){for(var e=1;eg&&pi&&n.addClass("nav-dropdown-full")}if(s){n.css({inset:0});var v=n.closest(".container").get(0).getBoundingClientRect(),b=n.get(0).getBoundingClientRect();n.css(r(r({width:i},u&&{right:15-(v.right-b.right)}),!u&&{left:v.left-b.left+15}))}if(a){n.css({inset:0});var w=document.body,j=w.getBoundingClientRect(),k=n.get(0).getBoundingClientRect(),Q=w.clientWidth;n.css(r(r({width:Q},u&&{right:-(j.right-k.right)}),!u&&{left:j.left-k.left}))}if(s||a){var x=null;if(o.closest("#top-bar").length&&(x=document.querySelector("#top-bar")),o.closest("#masthead").length&&(x=document.querySelector("#masthead")),o.closest("#wide-nav").length&&(x=document.querySelector("#wide-nav")),null!==x){var C=x.getBoundingClientRect(),P=o.get(0).getBoundingClientRect();n.css({top:C.bottom-P.bottom+P.height})}}}(e.find(".nav-dropdown"))}function s(t){t.removeClass("current-dropdown"),t.find(".nav-dropdown").attr("style","")}function c(t){t.each((function(t,e){var n=jQuery(e);n.hasClass("current-dropdown")&&s(n)}))}function l(t,e){t.length&&t.removeClass("ux-body-overlay--".concat(e,"-active"))}Flatsome.behavior("dropdown",{attach:function(t){var e=jQuery(".nav li.has-dropdown",t),n="uxBuilder"===jQuery("html").attr("ng-app"),i=jQuery(".ux-body-overlay"),o="ontouchstart"in window,r=!1,u=null;e.each((function(t,d){var f=jQuery(d),h=f.hasClass("nav-dropdown-toggle")&&!o,p=!1,y=!1;f.on("touchstart click",(function(t){"touchstart"===t.type&&(p=!0),"click"===t.type&&p&&(p&&!y&&t.preventDefault(),y=!0)})),n||h?(r=!0,f.on("click","a:first",(function(t){if(t.preventDefault(),u=f,f.hasClass("current-dropdown"))return s(f),void l(i,"click");c(e),a(f),function(t,e){t.length&&t.addClass("ux-body-overlay--".concat("click","-active"))}(i),jQuery(document).trigger("flatsome-dropdown-opened",[f])}))):f.hoverIntent({sensitivity:3,interval:20,timeout:70,over:function(t){c(e),a(f),l(i,"click"),jQuery(document).trigger("flatsome-dropdown-opened",[f])},out:function(){y=!1,p=!1,s(f)}})})),!n&&r&&jQuery(document).on("click",(function(t){null===u||u===t.target||u.has(t.target).length||(s(u),l(i,"click"))})),jQuery(document).on("flatsome-dropdown-opened",(function(t,e){e.hasClass("menu-item-has-block")&&jQuery.fn.packery&&e.find("[data-packery-options]").packery("layout")})),jQuery(document).on("flatsome-header-sticky",(function(){c(e),l(i,"click")}))}})}).call(this,n(2))},function(t,e,n){"use strict";var i=n(0);Flatsome.behavior("lightbox-gallery",{attach:function(t){var e={delegate:"a",type:"image",closeBtnInside:flatsomeVars.lightbox.close_btn_inside,closeMarkup:flatsomeVars.lightbox.close_markup,tLoading:'
',removalDelay:300,gallery:{enabled:!0,navigateByImgClick:!0,arrowMarkup:'',preload:[0,1]},image:{tError:'The image #%curr% could not be loaded.',verticalFit:!1},callbacks:{beforeOpen:function(){Object(i.a)()},beforeClose:function(){Object(i.b)()}}};jQuery('.lightbox .gallery a[href*=".jpg"], .lightbox .gallery a[href*=".jpeg"], .lightbox a.lightbox-gallery',t).parent().lazyMagnificPopup(e),jQuery(".lightbox .lightbox-multi-gallery",t).length&&jQuery(".lightbox-multi-gallery",t).each((function(){jQuery(this).lazyMagnificPopup(e)}))}})},function(t,e,n){"use strict";var i=n(0);Flatsome.behavior("lightbox-image",{attach:function(t){jQuery(['.lightbox *[id^="attachment"] a[href*=".jpg"]','.lightbox *[id^="attachment"] a[href*=".jpeg"]','.lightbox .wp-block-image a[href*=".jpg"]:not([target="_blank"])','.lightbox .wp-block-image a[href*=".jpeg"]:not([target="_blank"])',".lightbox a.image-lightbox",'.lightbox .entry-content a[href*=".jpg"]','.lightbox .entry-content a[href*=".jpeg"]'].join(","),t).not([".lightbox a.lightbox-gallery",'.lightbox .gallery a[href*=".jpg"]','.lightbox .gallery a[href*=".jpeg"]','.lightbox .lightbox-multi-gallery a[href*=".jpg"]','.lightbox .lightbox-multi-gallery a[href*=".jpeg"]'].join(",")).lazyMagnificPopup({type:"image",tLoading:'
',closeOnContentClick:!0,closeBtnInside:flatsomeVars.lightbox.close_btn_inside,closeMarkup:flatsomeVars.lightbox.close_markup,removalDelay:300,image:{verticalFit:!1},callbacks:{beforeOpen:function(){Object(i.a)()},beforeClose:function(){Object(i.b)()}}})}})},function(t,e,n){"use strict";var i=n(1),o=n(0);Flatsome.behavior("lightboxes-link",{attach:function(t){jQuery(".lightbox-by-id",t).each((function(){var e=jQuery(this).attr("id");jQuery('a[href="#'+e+'"]',t).on("click",(function(t){t.preventDefault();var e=jQuery(t.currentTarget);Object(i.a)().then((function(){var t=e.attr("href").substring(1),n=jQuery("#".concat(t,".lightbox-by-id"));if(t&&n.length>0){var i=n[0],r=jQuery.magnificPopup.open?300:0;r&&jQuery.magnificPopup.close(),setTimeout((function(){jQuery.magnificPopup.open({removalDelay:300,closeBtnInside:flatsomeVars.lightbox.close_btn_inside,closeMarkup:flatsomeVars.lightbox.close_markup,items:{src:i,type:"inline",tLoading:'
'},callbacks:{beforeOpen:function(){Object(o.a)()},open:function(){if(Flatsome.attach(this.content),jQuery.fn.flickity&&jQuery("[data-flickity-options].flickity-enabled",this.content).each((function(t,e){jQuery(e).flickity("resize")})),jQuery.fn.packery){var t=jQuery("[data-packery-options]",this.content);t&&t.imagesLoaded((function(){t.packery("layout")}))}},beforeClose:function(){Object(o.b)()}}})}),r)}}))}))}))}})},function(t,e,n){"use strict";var i=n(0);Flatsome.behavior("lightbox-video",{attach:function(t){jQuery('a.open-video, a.button[href*="vimeo"], a.button[href*="youtube.com/watch"]',t).lazyMagnificPopup({type:"iframe",closeBtnInside:flatsomeVars.lightbox.close_btn_inside,mainClass:"my-mfp-video",closeMarkup:flatsomeVars.lightbox.close_markup,tLoading:'
',removalDelay:300,preloader:!0,callbacks:{beforeOpen:function(){Object(i.a)()},open:function(){jQuery(".slider .is-selected .video").trigger("pause")},beforeClose:function(){Object(i.b)()},close:function(){jQuery(".slider .is-selected .video").trigger("play")}}})}})},function(t,e,n){"use strict";var i=n(1),o=n(0);Flatsome.behavior("lightboxes",{attach:function(t){jQuery("[data-open]",t).on("click",(function(t){t.preventDefault();var e=jQuery(t.currentTarget);Object(i.a)().then((function(){var t=e.data("open"),n=e.data("color"),i=e.data("bg"),r=e.data("pos"),a=e.data("visible-after"),s=e.data("class"),c=e.attr("data-focus");e.offset(),e.addClass("current-lightbox-clicked"),jQuery.magnificPopup.open({items:{src:t,type:"inline",tLoading:'
'},removalDelay:300,closeBtnInside:flatsomeVars.lightbox.close_btn_inside,closeMarkup:flatsomeVars.lightbox.close_markup,focus:c,callbacks:{beforeOpen:function(){this.st.mainClass="off-canvas ".concat(n," off-canvas-").concat(r),Object(o.a)()},open:function(){jQuery("html").addClass("has-off-canvas"),jQuery("html").addClass("has-off-canvas-"+r),s&&jQuery(".mfp-content").addClass(s),i&&jQuery(".mfp-bg").addClass(i),jQuery(".mfp-content .resize-select").change(),jQuery.fn.packery&&jQuery("[data-packery-options], .has-packery").packery("layout")},beforeClose:function(){jQuery("html").removeClass("has-off-canvas"),Object(o.b)()},afterClose:function(){jQuery("html").removeClass("has-off-canvas-"+r),jQuery(".current-lightbox-clicked").removeClass("current-lightbox-clicked"),a&&jQuery(t).removeClass("mfp-hide")}}})}))}))}})},function(t,e){Flatsome.behavior("slider",{attach:function(t){var e;(e=jQuery(t).data("flickityOptions")?jQuery(t):jQuery("[data-flickity-options]",t)).length&&e.each((function(t,e){var n=jQuery(e),i=n.closest(".slider-wrapper"),o=n.data("flickity-options");"undefined"!=typeof UxBuilder&&(o.draggable=!1),!0!==o.watchCSS&&(n.on("flatsome-flickity-ready",(function(){n.find(".flickity-slider > :not(.is-selected) .video-bg").trigger("pause"),n.find(".is-selected .video-bg").trigger("play"),"requestAnimationFrame"in window&&(n.removeClass("flickity-enabled"),window.requestAnimationFrame((function(){n.addClass("flickity-enabled")})));var t=n.data("flickity");if(t&&o.parallax){var e=n.find(".bg, .flickity-slider > .img img");n.addClass("slider-has-parallax"),n.on("scroll.flickity",(function(n,i){t.slides.forEach((function(n,i){var r=e[i],a=-1*(n.target+t.x)/o.parallax;r&&(r.style.transform="translateX( "+a+"px)")}))}))}})),n.lazyFlickity(o),n.imagesLoaded((function(){i.find(".loading-spin").fadeOut()})),n.on("change.flickity",(function(){n.find(".flickity-slider > :not(.is-selected) .video-bg").trigger("pause"),n.find(".is-selected .video-bg").trigger("play")})),n.on("dragStart.flickity",(function(){document.ontouchmove=function(t){return t.preventDefault()},n.addClass("is-dragging")})),n.on("dragEnd.flickity",(function(){document.ontouchmove=function(){return!0},n.removeClass("is-dragging")})))}))},detach:function(t){jQuery.fn.flickity&&(jQuery(t).data("flickityOptions")?jQuery(t).flickity("destroy"):jQuery("[data-flickity-options]",t).flickity("destroy"))}})},function(t,e){function n(t,e,n){e.each((function(e,n){return jQuery(n).toggleClass("active",e===t)})),n.each((function(e,n){return jQuery(n).toggleClass("active",e===t)})),jQuery.fn.packery&&jQuery("[data-packery-options]",n[t]).packery("layout")}Flatsome.behavior("tabs",{attach:function(t){var e=window.location.hash;jQuery(".tabbed-content",t).each((function(t,i){var o=jQuery(i),r=o.find("> .nav > li"),a=o.find("> .tab-panels > .panel"),s=o.find("> .nav").hasClass("active-on-hover");a.removeAttr("style"),r.each((function(t,i){var o=jQuery(i).find("a");o.on("click",(function(e){n(t,r,a),e.preventDefault(),e.stopPropagation()})),s&&o.hoverIntent({sensitivity:3,interval:20,timeout:70,over:function(e){n(t,r,a)},out:function(){}}),e.substr(1).length&&e.substr(1)===o.attr("href").split("#")[1]&&n(t,r,a)}))}))}})},function(t,e){Flatsome.behavior("toggle",{attach:function(t){function e(t){var e=jQuery(t.currentTarget).parent();e.toggleClass("active"),e.attr("aria-expanded","false"===e.attr("aria-expanded")?"true":"false"),t.preventDefault()}jQuery([".widget ul.children",".nav ul.children",".menu .sub-menu",".mobile-sidebar-levels-2 .nav ul.children > li > ul"].join(", "),t).each((function(){var t=jQuery(this).parents(".nav-slide").length?"right":"down";jQuery(this).parent().addClass("has-child").attr("aria-expanded","false"),jQuery(this).before(''))})),jQuery(".current-cat-parent",t).addClass("active").attr("aria-expanded","true").removeClass("current-cat-parent"),jQuery(".toggle",t).on("click",e);var n=jQuery("body").hasClass("mobile-submenu-toggle");jQuery(".sidebar-menu li.menu-item.has-child",t).each((function(){var t=jQuery(this),i=t.find("> a:first");"#"===i.attr("href")?i.on("click",(function(e){e.preventDefault(),t.toggleClass("active"),t.attr("aria-expanded","false"===t.attr("aria-expanded")?"true":"false")})):n&&i.next(".toggle").length&&i.on("click",e)}))}})},function(t,e){function n(t){t.attr("aria-hidden","true"),t.find("> li > a, > li > button").attr("tabindex","-1")}Flatsome.behavior("sidebar-slider",{attach:function(t){var e=jQuery("body").hasClass("mobile-submenu-toggle");jQuery(".mobile-sidebar-slide",t).each((function(t,i){var o=parseInt(jQuery(i).data("levels"),10)||1,r=jQuery(".sidebar-menu",i),a=jQuery(".nav-sidebar",i);jQuery(["> li > ul.children","> li > .sub-menu",o>1?"> li > ul.children > li > ul":null].filter(Boolean).join(", "),a).each((function(t,i){var o=jQuery(i),a=o.parent(),s=a.parents("ul:first"),c=jQuery(["> .toggle",'> a[href="#"]',e&&"> a"].filter(Boolean).join(","),a),l=a.find("> a").text().trim(),u=o.parents("ul").length,d=Boolean(window.flatsomeVars.rtl),f=jQuery('\n \n "));o.prepend(f),n(o);var h=null;c.off("click").on("click",(function(t){var e;a.attr("aria-expanded","true"),s.addClass("is-current-parent"),o.addClass("is-current-slide"),r.css("transform","translateX(".concat(d?"":"-").concat(100*u,"%)")),(e=o).attr("aria-hidden","false"),e.find("> li > a, > li > button").attr("tabindex",""),clearTimeout(h),t.preventDefault()})),f.find(".toggle").on("click",(function(){r.css("transform","translateX(".concat(d?"":"-").concat(100*(u-1),"%)")),n(o),h=setTimeout((function(){o.removeClass("is-current-slide"),s.removeClass("is-current-parent")}),300),a.removeClass("active"),a.attr("aria-expanded","false")}))}))}))}})},function(t,e){Flatsome.behavior("sidebar-tabs",{attach:function(t){jQuery(".sidebar-menu-tabs",t).each((function(t,e){var n=jQuery(e),i=n.find(".sidebar-menu-tabs__tab"),o=n.parent().find("ul.nav-sidebar");i.each((function(t,e){jQuery(e).on("click",(function(e){!function(t,e,n){e.each((function(e,n){return jQuery(n).toggleClass("active",e===t)})),n.each((function(e,n){return jQuery(n).toggleClass("hidden",e===t)}))}(t,i,o),e.preventDefault(),e.stopPropagation()}))}))}))}})},function(t,e){Flatsome.behavior("nav-hover",{attach:function(t){var e=jQuery(".ux-body-overlay",t);e.length&&jQuery([".nav-prompts-overlay li.menu-item",".nav-prompts-overlay .header-vertical-menu__opener"].join(", "),t).on({mouseenter:function(){e.addClass("ux-body-overlay--hover-active")},mouseleave:function(){e.removeClass("ux-body-overlay--hover-active")}})}})},function(t,e){Flatsome.behavior("back-to-top",{attach:function(t){jQuery("body",t).waypoint({handler:function(e){jQuery(".back-to-top",t).toggleClass("active")},offset:"-100%"})}})},function(t,e){Flatsome.behavior("scroll-to",{attach:function(){var t=jQuery("span.scroll-to"),e=jQuery(".scroll-to-bullets"),n=flatsomeVars.sticky_height;if(e.length&&(e.children().lazyTooltipster("destroy"),e.remove()),jQuery("li.scroll-to-link").remove(),t.length&&(e=jQuery('
'),jQuery("body").append(e),t.each((function(t,e){var i=jQuery(e),o=i.data("link"),r=i.data("title"),a=i.data("bullet"),s='a[href*="'.concat(o||"",'"]');if(a){var c=jQuery('\n \n \n \n '));c.lazyTooltipster({position:"left",delay:50,contentAsHTML:!0,touchDevices:!1}),jQuery(".scroll-to-bullets").append(c)}var l=jQuery('\n \n "));jQuery("li.nav-single-page").before(l),setTimeout((function(){jQuery(".scroll-to-link a").attr("data-animated","true")}),300),i.waypoint((function(t){jQuery(".scroll-to-bullets a, .scroll-to-link").removeClass("active"),jQuery(".scroll-to-bullets").find(s).addClass("active"),jQuery(".nav-single-page").parent().find(s).parent().addClass("active"),"up"===t&&jQuery(".scroll-to-bullets, .nav-single-page").find(s).removeClass("active").prev().addClass("active")}),{offset:n}),jQuery(s).off("click").on("click",(function(t){var e=jQuery(this).attr("href").split("#")[1];e&&(setTimeout((function(){jQuery.scrollTo("a[name="+e+"]",{duration:500,axis:"y",offset:-n})}),0),jQuery.fn.magnificPopup&&jQuery.magnificPopup.close(),t.preventDefault())}))})),location.hash)){var i=location.hash.replace("#","");jQuery.scrollTo("a[name="+i+"]",{duration:500,axis:"y",offset:-n})}},detach:function(){jQuery("span.scroll-to").length&&setTimeout(this.attach,0)}})},function(t,e){Flatsome.behavior("accordion",{attach:function(t){jQuery(".accordion",t).each((function(){var t=jQuery(this).attr("rel");if(t>0){var e=jQuery(this).find(".accordion-item:nth-child("+t+") .accordion-inner");e.show(),e.prev().addClass("active"),jQuery.fn.packery&&e.find("[data-packery-options]").packery("layout")}}))}}),Flatsome.behavior("accordion-title",{attach:function(t){jQuery(".accordion-title",t).each((function(){jQuery(this).off("click.flatsome").on("click.flatsome",(function(t){var e=this;jQuery(this).next().is(":hidden")?(jQuery(this).parent().parent().find(".accordion-title").removeClass("active").next().slideUp(200),jQuery(this).toggleClass("active").next().slideDown(200,(function(){/Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent)&&jQuery.scrollTo(jQuery(this).prev(),{duration:300,offset:-100})})),window.requestAnimationFrame((function(){jQuery.fn.flickity&&jQuery(e).next().find("[data-flickity-options].flickity-enabled").each((function(t,e){jQuery(e).flickity("resize")})),jQuery.fn.packery&&jQuery(e).next().find("[data-packery-options]").packery("layout")}))):jQuery(this).parent().parent().find(".accordion-title").removeClass("active").next().slideUp(200),t.preventDefault()}))}))}})},function(t,e){Flatsome.behavior("tooltips",{attach:function(t){jQuery(".tooltip, .has-tooltip, .tip-top, li.chosen a",t).lazyTooltipster(),jQuery(".tooltip-as-html",t).lazyTooltipster({interactive:!0,contentAsHTML:!0})}})},function(t,e,n){"use strict";var i=n(3);Flatsome.behavior("lazy-load-bg",{attach:function(t){var e=Object(i.a)((function(t){t.intersectionRatio>0&&(e.unobserve(t.target),jQuery(t.target).addClass("bg-loaded"))}));jQuery(".bg",t).each((function(t,n){e.observe(n)}))}})},function(t,e){Flatsome.behavior("sticky-section",{attach:function(t){jQuery(".sticky-section",t).each((function(t,e){var n=jQuery(e);n.waypoint((function(t){"down"===t&&(n.addClass("is-sticky-section"),n.after('
')),"up"===t&&(n.removeClass("is-sticky-section"),n.next(".sticky-section-helper").remove())}),{offset:"0.1px"}),n.waypoint((function(t){"down"===t&&(n.removeClass("is-sticky-section"),n.next(".sticky-section-helper").remove()),"up"===t&&(n.addClass("is-sticky-section"),n.after('
'))}),{offset:"-100%"})}))}})},function(t,e,n){Flatsome.behavior("sticky-sidebar",{attach:function(t){var e=parseInt(flatsomeVars.sticky_height)+15;jQuery(".is-sticky-column",t).each((function(t,i){n.e(2).then(n.t.bind(null,57,7)).then((function(){jQuery(i).stickySidebar({topSpacing:e,bottomSpacing:15,minWidth:850,innerWrapperSelector:".is-sticky-column__inner"}),jQuery(document).on("updated_checkout flatsome-infiniteScroll-append",(function(){jQuery(i).stickySidebar("updateSticky")}))}))}))}})},function(t,e){Flatsome.behavior("youtube",{attach:function(t){var e,n,i,o,r,a=jQuery(".ux-youtube",t);0!==a.length&&(window.onYouTubePlayerAPIReady=function(){a.each((function(){var t=jQuery(this),e=t.attr("id"),n=t.data("videoid"),i=t.data("loop"),o=t.data("audio");new YT.Player(e,{height:"100%",width:"100%",playerVars:{html5:1,autoplay:1,controls:0,rel:0,modestbranding:1,playsinline:1,showinfo:0,fs:0,loop:i,el:0,playlist:i?n:void 0},videoId:n,events:{onReady:function(t){0===o&&t.target.mute()}}})}))},n="script",i="youtube-jssdk",r=(e=document).getElementsByTagName(n)[0],e.getElementById(i)||((o=e.createElement(n)).id=i,o.src="https://www.youtube.com/player_api",r.parentNode.insertBefore(o,r)))}})}]);Flatsome.behavior('wp-rocket-lazy-load-packery',{attach:function(context){jQuery('.has-packery .lazy-load',context).waypoint(function(direction){var $element=jQuery(this.element);$element.imagesLoaded(function(){jQuery('.has-packery').packery('layout')})},{offset:'90%'})}});!function(a){"use strict";"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports&&"function"==typeof require?require("jquery"):jQuery)}(function(a){"use strict";function b(c,d){var e=function(){},f=this,g={ajaxSettings:{},autoSelectFirst:!1,appendTo:document.body,serviceUrl:null,lookup:null,onSelect:null,width:"auto",minChars:1,maxHeight:300,deferRequestBy:0,params:{},formatResult:b.formatResult,delimiter:null,zIndex:9999,type:"GET",noCache:!1,onSearchStart:e,onSearchComplete:e,onSearchError:e,preserveInput:!1,containerClass:"autocomplete-suggestions",tabDisabled:!1,dataType:"text",currentRequest:null,triggerSelectOnValidInput:!0,preventBadQueries:!0,lookupFilter:function(a,b,c){return-1!==a.value.toLowerCase().indexOf(c)},paramName:"query",transformResult:function(b){return"string"==typeof b?a.parseJSON(b):b},showNoSuggestionNotice:!1,noSuggestionNotice:"No results",orientation:"bottom",forceFixPosition:!1};f.element=c,f.el=a(c),f.suggestions=[],f.badQueries=[],f.selectedIndex=-1,f.currentValue=f.element.value,f.intervalId=0,f.cachedResponse={},f.onChangeInterval=null,f.onChange=null,f.isLocal=!1,f.suggestionsContainer=null,f.noSuggestionsContainer=null,f.options=a.extend({},g,d),f.classes={selected:"autocomplete-selected",suggestion:"autocomplete-suggestion"},f.hint=null,f.hintValue="",f.selection=null,f.initialize(),f.setOptions(d)}var c=function(){return{escapeRegExChars:function(a){return a.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")},createNode:function(a){var b=document.createElement("div");return b.className=a,b.style.position="absolute",b.style.display="none",b}}}(),d={ESC:27,TAB:9,RETURN:13,LEFT:37,UP:38,RIGHT:39,DOWN:40};b.utils=c,a.Autocomplete=b,b.formatResult=function(a,b){var d="("+c.escapeRegExChars(b)+")";return a.value.replace(new RegExp(d,"gi"),"$1").replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/<(\/?strong)>/g,"<$1>")},b.prototype={killerFn:null,initialize:function(){var c,d=this,e="."+d.classes.suggestion,f=d.classes.selected,g=d.options;d.element.setAttribute("autocomplete","off"),d.killerFn=function(b){0===a(b.target).closest("."+d.options.containerClass).length&&(d.killSuggestions(),d.disableKillerFn())},d.noSuggestionsContainer=a('
').html(this.options.noSuggestionNotice).get(0),d.suggestionsContainer=b.utils.createNode(g.containerClass),c=a(d.suggestionsContainer),c.appendTo(g.appendTo),"auto"!==g.width&&c.width(g.width),c.on("mouseover.autocomplete",e,function(){d.activate(a(this).data("index"))}),c.on("mouseout.autocomplete",function(){d.selectedIndex=-1,c.children("."+f).removeClass(f)}),c.on("click.autocomplete",e,function(){d.select(a(this).data("index"))}),d.fixPositionCapture=function(){d.visible&&d.fixPosition()},a(window).on("resize.autocomplete",d.fixPositionCapture),d.el.on("keydown.autocomplete",function(a){d.onKeyPress(a)}),d.el.on("keyup.autocomplete",function(a){d.onKeyUp(a)}),d.el.on("blur.autocomplete",function(){d.onBlur()}),d.el.on("focus.autocomplete",function(){d.onFocus()}),d.el.on("change.autocomplete",function(a){d.onKeyUp(a)}),d.el.on("input.autocomplete",function(a){d.onKeyUp(a)})},onFocus:function(){var a=this;a.fixPosition(),0===a.options.minChars&&0===a.el.val().length&&a.onValueChange()},onBlur:function(){this.enableKillerFn()},abortAjax:function(){var a=this;a.currentRequest&&(a.currentRequest.abort(),a.currentRequest=null)},setOptions:function(b){var c=this,d=c.options;a.extend(d,b),c.isLocal=a.isArray(d.lookup),c.isLocal&&(d.lookup=c.verifySuggestionsFormat(d.lookup)),d.orientation=c.validateOrientation(d.orientation,"bottom"),a(c.suggestionsContainer).css({"max-height":d.maxHeight+"px",width:d.width+"px","z-index":d.zIndex})},clearCache:function(){this.cachedResponse={},this.badQueries=[]},clear:function(){this.clearCache(),this.currentValue="",this.suggestions=[]},disable:function(){var a=this;a.disabled=!0,clearInterval(a.onChangeInterval),a.abortAjax()},enable:function(){this.disabled=!1},fixPosition:function(){var b=this,c=a(b.suggestionsContainer),d=c.parent().get(0);if(d===document.body||b.options.forceFixPosition){var e=b.options.orientation,f=c.outerHeight(),g=b.el.outerHeight(),h=b.el.offset(),i={top:h.top,left:h.left};if("auto"===e){var j=a(window).height(),k=a(window).scrollTop(),l=-k+h.top-f,m=k+j-(h.top+g+f);e=Math.max(l,m)===l?"top":"bottom"}if("top"===e?i.top+=-f:i.top+=g,d!==document.body){var n,o=c.css("opacity");b.visible||c.css("opacity",0).show(),n=c.offsetParent().offset(),i.top-=n.top,i.left-=n.left,b.visible||c.css("opacity",o).hide()}"auto"===b.options.width&&(i.width=b.el.outerWidth()-2+"px"),c.css(i)}},enableKillerFn:function(){var b=this;a(document).on("click.autocomplete",b.killerFn)},disableKillerFn:function(){var b=this;a(document).off("click.autocomplete",b.killerFn)},killSuggestions:function(){var a=this;a.stopKillSuggestions(),a.intervalId=window.setInterval(function(){a.visible&&(a.el.val(a.currentValue),a.hide()),a.stopKillSuggestions()},50)},stopKillSuggestions:function(){window.clearInterval(this.intervalId)},isCursorAtEnd:function(){var a,b=this,c=b.el.val().length,d=b.element.selectionStart;return"number"==typeof d?d===c:document.selection?(a=document.selection.createRange(),a.moveStart("character",-c),c===a.text.length):!0},onKeyPress:function(a){var b=this;if(!b.disabled&&!b.visible&&a.which===d.DOWN&&b.currentValue)return void b.suggest();if(!b.disabled&&b.visible){switch(a.which){case d.ESC:b.el.val(b.currentValue),b.hide();break;case d.RIGHT:if(b.hint&&b.options.onHint&&b.isCursorAtEnd()){b.selectHint();break}return;case d.TAB:if(b.hint&&b.options.onHint)return void b.selectHint();if(-1===b.selectedIndex)return void b.hide();if(b.select(b.selectedIndex),b.options.tabDisabled===!1)return;break;case d.RETURN:if(-1===b.selectedIndex)return void b.hide();b.select(b.selectedIndex);break;case d.UP:b.moveUp();break;case d.DOWN:b.moveDown();break;default:return}a.stopImmediatePropagation(),a.preventDefault()}},onKeyUp:function(a){var b=this;if(!b.disabled){switch(a.which){case d.UP:case d.DOWN:return}clearInterval(b.onChangeInterval),b.currentValue!==b.el.val()&&(b.findBestHint(),b.options.deferRequestBy>0?b.onChangeInterval=setInterval(function(){b.onValueChange()},b.options.deferRequestBy):b.onValueChange())}},onValueChange:function(){var b=this,c=b.options,d=b.el.val(),e=b.getQuery(d);return b.selection&&b.currentValue!==e&&(b.selection=null,(c.onInvalidateSelection||a.noop).call(b.element)),clearInterval(b.onChangeInterval),b.currentValue=d,b.selectedIndex=-1,c.triggerSelectOnValidInput&&b.isExactMatch(e)?void b.select(0):void(e.lengthh&&(c.suggestions=c.suggestions.slice(0,h)),c},getSuggestions:function(b){var c,d,e,f,g=this,h=g.options,i=h.serviceUrl;if(h.params[h.paramName]=b,d=h.ignoreParams?null:h.params,h.onSearchStart.call(g.element,h.params)!==!1){if(a.isFunction(h.lookup))return void h.lookup(b,function(a){g.suggestions=a.suggestions,g.suggest(),h.onSearchComplete.call(g.element,b,a.suggestions)});g.isLocal?c=g.getSuggestionsLocal(b):(a.isFunction(i)&&(i=i.call(g.element,b)),e=i+"?"+a.param(d||{}),c=g.cachedResponse[e]),c&&a.isArray(c.suggestions)?(g.suggestions=c.suggestions,g.suggest(),h.onSearchComplete.call(g.element,b,c.suggestions)):g.isBadQuery(b)?h.onSearchComplete.call(g.element,b,[]):(g.abortAjax(),f={url:i,data:d,type:h.type,dataType:h.dataType},a.extend(f,h.ajaxSettings),g.currentRequest=a.ajax(f).done(function(a){var c;g.currentRequest=null,c=h.transformResult(a,b),g.processResponse(c,b,e),h.onSearchComplete.call(g.element,b,c.suggestions)}).fail(function(a,c,d){h.onSearchError.call(g.element,b,a,c,d)}))}},isBadQuery:function(a){if(!this.options.preventBadQueries)return!1;for(var b=this.badQueries,c=b.length;c--;)if(0===a.indexOf(b[c]))return!0;return!1},hide:function(){var b=this,c=a(b.suggestionsContainer);a.isFunction(b.options.onHide)&&b.visible&&b.options.onHide.call(b.element,c),b.visible=!1,b.selectedIndex=-1,clearInterval(b.onChangeInterval),a(b.suggestionsContainer).hide(),b.signalHint(null)},suggest:function(){if(0===this.suggestions.length)return void(this.options.showNoSuggestionNotice?this.noSuggestions():this.hide());var b,c=this,d=c.options,e=d.groupBy,f=d.formatResult,g=c.getQuery(c.currentValue),h=c.classes.suggestion,i=c.classes.selected,j=a(c.suggestionsContainer),k=a(c.noSuggestionsContainer),l=d.beforeRender,m="",n=function(a,c){var d=a.data[e];return b===d?"":(b=d,'
'+b+"
")};return d.triggerSelectOnValidInput&&c.isExactMatch(g)?void c.select(0):(a.each(c.suggestions,function(a,b){e&&(m+=n(b,g,a)),m+='
'+f(b,g)+"
"}),this.adjustContainerWidth(),k.detach(),j.html(m),a.isFunction(l)&&l.call(c.element,j),c.fixPosition(),j.show(),d.autoSelectFirst&&(c.selectedIndex=0,j.scrollTop(0),j.children("."+h).first().addClass(i)),c.visible=!0,void c.findBestHint())},noSuggestions:function(){var b=this,c=a(b.suggestionsContainer),d=a(b.noSuggestionsContainer);this.adjustContainerWidth(),d.detach(),c.empty(),c.append(d),b.fixPosition(),c.show(),b.visible=!0},adjustContainerWidth:function(){var b,c=this,d=c.options,e=a(c.suggestionsContainer);"auto"===d.width&&(b=c.el.outerWidth()-2,e.width(b>0?b:300))},findBestHint:function(){var b=this,c=b.el.val().toLowerCase(),d=null;c&&(a.each(b.suggestions,function(a,b){var e=0===b.value.toLowerCase().indexOf(c);return e&&(d=b),!e}),b.signalHint(d))},signalHint:function(b){var c="",d=this;b&&(c=d.currentValue+b.value.substr(d.currentValue.length)),d.hintValue!==c&&(d.hintValue=c,d.hint=b,(this.options.onHint||a.noop)(c))},verifySuggestionsFormat:function(b){return b.length&&"string"==typeof b[0]?a.map(b,function(a){return{value:a,data:null}}):b},validateOrientation:function(b,c){return b=a.trim(b||"").toLowerCase(),-1===a.inArray(b,["auto","bottom","top"])&&(b=c),b},processResponse:function(a,b,c){var d=this,e=d.options;a.suggestions=d.verifySuggestionsFormat(a.suggestions),e.noCache||(d.cachedResponse[c]=a,e.preventBadQueries&&0===a.suggestions.length&&d.badQueries.push(b)),b===d.getQuery(d.currentValue)&&(d.suggestions=a.suggestions,d.suggest())},activate:function(b){var c,d=this,e=d.classes.selected,f=a(d.suggestionsContainer),g=f.find("."+d.classes.suggestion);return f.find("."+e).removeClass(e),d.selectedIndex=b,-1!==d.selectedIndex&&g.length>d.selectedIndex?(c=g.get(d.selectedIndex),a(c).addClass(e),c):null},selectHint:function(){var b=this,c=a.inArray(b.hint,b.suggestions);b.select(c)},select:function(a){var b=this;b.hide(),b.onSelect(a)},moveUp:function(){var b=this;if(-1!==b.selectedIndex)return 0===b.selectedIndex?(a(b.suggestionsContainer).children().first().removeClass(b.classes.selected),b.selectedIndex=-1,b.el.val(b.currentValue),void b.findBestHint()):void b.adjustScroll(b.selectedIndex-1)},moveDown:function(){var a=this;a.selectedIndex!==a.suggestions.length-1&&a.adjustScroll(a.selectedIndex+1)},adjustScroll:function(b){var c=this,d=c.activate(b);if(d){var e,f,g,h=a(d).outerHeight();e=d.offsetTop,f=a(c.suggestionsContainer).scrollTop(),g=f+c.options.maxHeight-h,f>e?a(c.suggestionsContainer).scrollTop(e):e>g&&a(c.suggestionsContainer).scrollTop(e-c.options.maxHeight+h),c.options.preserveInput||c.el.val(c.getValue(c.suggestions[b].value)),c.signalHint(null)}},onSelect:function(b){var c=this,d=c.options.onSelect,e=c.suggestions[b];c.currentValue=c.getValue(e.value),c.currentValue===c.el.val()||c.options.preserveInput||c.el.val(c.currentValue),c.signalHint(null),c.suggestions=[],c.selection=e,a.isFunction(d)&&d.call(c.element,e)},getValue:function(a){var b,c,d=this,e=d.options.delimiter;return e?(b=d.currentValue,c=b.split(e),1===c.length?a:b.substr(0,b.length-c[c.length-1].length)+a):a},dispose:function(){var b=this;b.el.off(".autocomplete").removeData("autocomplete"),b.disableKillerFn(),a(window).off("resize.autocomplete",b.fixPositionCapture),a(b.suggestionsContainer).remove()}},a.fn.autocomplete=a.fn.devbridgeAutocomplete=function(c,d){var e="autocomplete";return 0===arguments.length?this.first().data(e):this.each(function(){var f=a(this),g=f.data(e);"string"==typeof c?g&&"function"==typeof g[c]&&g[c](d):(g&&g.dispose&&g.dispose(),g=new b(this,c),f.data(e,g))})}});jQuery(document).ready(function($){"use strict";$('.searchform').each(function(){var append=$(this).find('.live-search-results');var search_categories=$(this).find('.search_categories');var serviceUrl=flatsomeVars.ajaxurl+'?action=flatsome_ajax_search_products';var product_cat='';if(search_categories.length&&search_categories.val()!==''){serviceUrl+='&product_cat='+search_categories.val()} +$(this).find('.search-field').devbridgeAutocomplete({minChars:3,appendTo:append,triggerSelectOnValidInput:!1,serviceUrl:serviceUrl,deferRequestBy:parseInt(flatsomeVars.options.search_result_latency),onSearchStart:function(){$('.submit-button').removeClass('loading');$('.submit-button').addClass('loading')},onSelect:function(suggestion){if(suggestion.id!=-1){window.location.href=suggestion.url}},onSearchComplete:function(){$('.submit-button').removeClass('loading')},beforeRender:function(container){$(container).removeAttr('style')},formatResult:function(suggestion,currentValue){var pattern='('+$.Autocomplete.utils.escapeRegExChars(currentValue)+')';var html='';if(suggestion.img)html+='';html+='
'+suggestion.value.replace(new RegExp(pattern,'gi'),'$1<\/strong>')+'
';if(suggestion.price)html+=''+suggestion.price+'';return html}});if(search_categories.length){var searchForm=$(this).find('.search-field').devbridgeAutocomplete();search_categories.on('change',function(e){if(search_categories.val()!=''){searchForm.setOptions({serviceUrl:flatsomeVars.ajaxurl+'?action=flatsome_ajax_search_products&product_cat='+search_categories.val()})}else{searchForm.setOptions({serviceUrl:flatsomeVars.ajaxurl+'?action=flatsome_ajax_search_products'})} +searchForm.hide();searchForm.onValueChange()})}})});/*! This file is auto-generated */ +window.addComment=function(v){var I,C,h,E=v.document,b={commentReplyClass:"comment-reply-link",commentReplyTitleId:"reply-title",cancelReplyId:"cancel-comment-reply-link",commentFormId:"commentform",temporaryFormId:"wp-temp-form-div",parentIdFieldId:"comment_parent",postIdFieldId:"comment_post_ID"},e=v.MutationObserver||v.WebKitMutationObserver||v.MozMutationObserver,r="querySelector"in E&&"addEventListener"in v,n=!!E.documentElement.dataset;function t(){d(),e&&new e(o).observe(E.body,{childList:!0,subtree:!0})}function d(e){if(r&&(I=g(b.cancelReplyId),C=g(b.commentFormId),I)){I.addEventListener("touchstart",l),I.addEventListener("click",l);function t(e){if((e.metaKey||e.ctrlKey)&&13===e.keyCode)return C.removeEventListener("keydown",t),e.preventDefault(),C.submit.click(),!1}C&&C.addEventListener("keydown",t);for(var n,d=function(e){var t=b.commentReplyClass;e&&e.childNodes||(e=E);t=E.getElementsByClassName?e.getElementsByClassName(t):e.querySelectorAll("."+t);return t}(e),o=0,i=d.length;ol@mCZWw|bb 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 +Options -Indexes + \ No newline at end of file diff --git a/wp-content/cache/wp-rocket/index.html b/wp-content/cache/wp-rocket/index.html new file mode 100644 index 0000000..e69de29 diff --git a/wp-content/cache/wp-rocket/localhost/2022/02/12/choang-ngop-voi-mau-biet-thu-3000m2-tan-co-dien-sieu-sang-bt1111121/index-mobile.html b/wp-content/cache/wp-rocket/localhost/2022/02/12/choang-ngop-voi-mau-biet-thu-3000m2-tan-co-dien-sieu-sang-bt1111121/index-mobile.html new file mode 100644 index 0000000..fee333d --- /dev/null +++ b/wp-content/cache/wp-rocket/localhost/2022/02/12/choang-ngop-voi-mau-biet-thu-3000m2-tan-co-dien-sieu-sang-bt1111121/index-mobile.html @@ -0,0 +1,861 @@ + + + + + + + + + + +Choáng ngợp với mẫu biệt thự 3000m2 tân cổ điển siêu sang BT1111121 – Nội thất – kiến trúc An Việt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+ +
+
+ + + + +
+
+
+
+ + +

Choáng ngợp với mẫu biệt thự 3000m2 tân cổ điển siêu sang BT1111121

+
+ + +
+
+ + +
+
+
+ + +

 Biệt thự 3000m2 là mẫu thiết kế biệt thự với phong cách kiến trúc tân cổ điển, chắt lọc và pha trộn, dung hòa giữa lối thiết kế cổ điển sang trọng, lộng lẫy luôn trường tồn với thời gian qua nhiều thế kỉ cùng với những nét kiến trúc mạnh mẽ, phóng khoáng của xu hướng hiện đại để tạo lên sự độc đáo, riêng biệt cho công trình. Hơn nữa với phong cách kiến trúc tân cổ điển sẽ lược bỏ được những sự rườm rà, cầu kỳ không cần thiết để chú trọng hơn vào những công năng, giá trị sử dụng cho biệt thự, mang đến chất lượng sống và hưởng thụ tuyệt vời nhất cho gia chủ. 

+ + + +

Biệt thự 3000m2 được thiết kế xây dựng với quy mô 4 tầng theo trường phái tân cổ điển do kiến trúc Angcovat triển khai thực hiện trong năm 2021. Các công trình lâu đài, dinh thự, biệt thự của Angcovat khẳng định vai trò tiên phong, sự vững mạnh và phát triển hàng đầu trong lĩnh vực xây dựng. Trải qua gần 15 năm kinh nghiệm với gần 3000 công trình lớn nhỏ trên khắp dải đất hình chữ S, angcovat ngày càng vươn xa, lớn mạnh và phát triển quy mô. Các gia chủ biết tới Angcovat không chỉ ở các công trình biệt thự lâu đài to lớn mà ngay cả các mẫu nhà dân nhỏ xinh, nhà cấp 4 vừa phải hay mẫu nhà phố chật hẹp, đều được chúng tôi thiết kế và xây dựng làm hài lòng quý khách hàng.

+ + + +

Chính vì tính đa dạng sản phẩm, đa dạng phong cách kiến trúc mà Angcovat được rất nhiều gia chủ yêu mến. Khách hàng sau khi làm việc với Angcovat sẽ nhận thấy tính chuyên nghiệp, tác phong chỉnh chu, cầu toàn và luôn tìm được phương án hoàn hảo, phù hợp nhất với từng phân khúc khách hàng. Vì thế mà luôn giới thiệu cho bạn bè, người thân và nếu có ý định xây dựng các công trình tiếp theo cũng luôn liên hệ với chúng tôi. Hiểu được tình cảm, sự yêu mến của quý khách hàng, angcovat ngày càng nâng cao trình độ, tính chuyên nghiệp cũng như kinh nghiệm chuyên môn để nâng tầm sản phẩm lên nữa. Không bao giờ hài lòng với hiện tại để có thể vươn xa xứng tầm đẳng cấp. Đó là tôn chỉ của chúng tôi khi làm việc trong lĩnh vực thiết kế và xây dụng nhà ở. 

+ + + +

Công trình biệt thự 3000m2 4 tầng đươc Angcovat triển khai cho chủ đầu tư – bà Đỗ Thị Nguyệt Ánh tại Văn Lâm – Hưng Yên trong những tháng vừa qua cũng đánh dấu được thương hiệu Angcovat trong lĩnh vực thiết kế biệt thự – dinh thự. Với xu hướng thiết kế dinh thự tân cổ điển tinh tế, nhẹ nhàng, công trình xứng tầm đẳng cấp, thể hiện được tính cách, sở thích và gia thế của chủ đầu tư. 

+ + + +

Cùng chúng tôi tìm hiểu nhiều hơn nữa về kiến trúc, mặt bằng, chi phí xây dựng biệt thự 3000m2 đẹp lỗng lẫy và kiêu sa đẳng cấp này nhé. Đây có lẽ là giấc mơ của rất nhiều gia đình hiện nay, nhất là trong bối cảnh quỹ đất ngày càng trở nên chật hẹp và đông đúc. 

+ + +
+ + + + + +
+
+ + + + +
+ + + + +
+

Trả lời

Email của bạn sẽ không được hiển thị công khai.

+ +

+

+ +

+ +
+
+ +
+ +
+ + +
+ + + +
+ + + + + +
+
+
+ + + + + +
+
+
+ + +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/cache/wp-rocket/localhost/2022/02/12/choang-ngop-voi-mau-biet-thu-3000m2-tan-co-dien-sieu-sang-bt1111121/index-mobile.html_gzip b/wp-content/cache/wp-rocket/localhost/2022/02/12/choang-ngop-voi-mau-biet-thu-3000m2-tan-co-dien-sieu-sang-bt1111121/index-mobile.html_gzip new file mode 100644 index 0000000000000000000000000000000000000000..4703f1fdaded35106581267d9243781a7d3d2900 GIT binary patch literal 14804 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 literal 0 HcmV?d00001 diff --git a/wp-content/cache/wp-rocket/localhost/2022/02/12/choang-ngop-voi-mau-biet-thu-3000m2-tan-co-dien-sieu-sang-bt1111121/index.html b/wp-content/cache/wp-rocket/localhost/2022/02/12/choang-ngop-voi-mau-biet-thu-3000m2-tan-co-dien-sieu-sang-bt1111121/index.html new file mode 100644 index 0000000..0d4497d --- /dev/null +++ b/wp-content/cache/wp-rocket/localhost/2022/02/12/choang-ngop-voi-mau-biet-thu-3000m2-tan-co-dien-sieu-sang-bt1111121/index.html @@ -0,0 +1,879 @@ + + + + + + + + + + +Choáng ngợp với mẫu biệt thự 3000m2 tân cổ điển siêu sang BT1111121 – Nội thất – kiến trúc An Việt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+ +
+
+ + + + +
+
+
+
+ + +

Choáng ngợp với mẫu biệt thự 3000m2 tân cổ điển siêu sang BT1111121

+
+ + +
+
+ + +
+
+
+ + +

 Biệt thự 3000m2 là mẫu thiết kế biệt thự với phong cách kiến trúc tân cổ điển, chắt lọc và pha trộn, dung hòa giữa lối thiết kế cổ điển sang trọng, lộng lẫy luôn trường tồn với thời gian qua nhiều thế kỉ cùng với những nét kiến trúc mạnh mẽ, phóng khoáng của xu hướng hiện đại để tạo lên sự độc đáo, riêng biệt cho công trình. Hơn nữa với phong cách kiến trúc tân cổ điển sẽ lược bỏ được những sự rườm rà, cầu kỳ không cần thiết để chú trọng hơn vào những công năng, giá trị sử dụng cho biệt thự, mang đến chất lượng sống và hưởng thụ tuyệt vời nhất cho gia chủ. 

+ + + +

Biệt thự 3000m2 được thiết kế xây dựng với quy mô 4 tầng theo trường phái tân cổ điển do kiến trúc Angcovat triển khai thực hiện trong năm 2021. Các công trình lâu đài, dinh thự, biệt thự của Angcovat khẳng định vai trò tiên phong, sự vững mạnh và phát triển hàng đầu trong lĩnh vực xây dựng. Trải qua gần 15 năm kinh nghiệm với gần 3000 công trình lớn nhỏ trên khắp dải đất hình chữ S, angcovat ngày càng vươn xa, lớn mạnh và phát triển quy mô. Các gia chủ biết tới Angcovat không chỉ ở các công trình biệt thự lâu đài to lớn mà ngay cả các mẫu nhà dân nhỏ xinh, nhà cấp 4 vừa phải hay mẫu nhà phố chật hẹp, đều được chúng tôi thiết kế và xây dựng làm hài lòng quý khách hàng.

+ + + +

Chính vì tính đa dạng sản phẩm, đa dạng phong cách kiến trúc mà Angcovat được rất nhiều gia chủ yêu mến. Khách hàng sau khi làm việc với Angcovat sẽ nhận thấy tính chuyên nghiệp, tác phong chỉnh chu, cầu toàn và luôn tìm được phương án hoàn hảo, phù hợp nhất với từng phân khúc khách hàng. Vì thế mà luôn giới thiệu cho bạn bè, người thân và nếu có ý định xây dựng các công trình tiếp theo cũng luôn liên hệ với chúng tôi. Hiểu được tình cảm, sự yêu mến của quý khách hàng, angcovat ngày càng nâng cao trình độ, tính chuyên nghiệp cũng như kinh nghiệm chuyên môn để nâng tầm sản phẩm lên nữa. Không bao giờ hài lòng với hiện tại để có thể vươn xa xứng tầm đẳng cấp. Đó là tôn chỉ của chúng tôi khi làm việc trong lĩnh vực thiết kế và xây dụng nhà ở. 

+ + + +

Công trình biệt thự 3000m2 4 tầng đươc Angcovat triển khai cho chủ đầu tư – bà Đỗ Thị Nguyệt Ánh tại Văn Lâm – Hưng Yên trong những tháng vừa qua cũng đánh dấu được thương hiệu Angcovat trong lĩnh vực thiết kế biệt thự – dinh thự. Với xu hướng thiết kế dinh thự tân cổ điển tinh tế, nhẹ nhàng, công trình xứng tầm đẳng cấp, thể hiện được tính cách, sở thích và gia thế của chủ đầu tư. 

+ + + +

Cùng chúng tôi tìm hiểu nhiều hơn nữa về kiến trúc, mặt bằng, chi phí xây dựng biệt thự 3000m2 đẹp lỗng lẫy và kiêu sa đẳng cấp này nhé. Đây có lẽ là giấc mơ của rất nhiều gia đình hiện nay, nhất là trong bối cảnh quỹ đất ngày càng trở nên chật hẹp và đông đúc. 

+ + +
+ + + + + +
+
+ + + + +
+ + + + +
+

Trả lời

Email của bạn sẽ không được hiển thị công khai.

+ +

+

+ +

+ +
+
+ +
+ +
+ + +
+ + + +
+ + + + + + + + + +
+
+
+
+ + Facebook Messenger +
+
+
+ Chat với chúng tôi qua Zalo +
+ +
+
+ Gọi ngay +
+ + + + + +
+ + +
+
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/cache/wp-rocket/localhost/2022/02/12/choang-ngop-voi-mau-biet-thu-3000m2-tan-co-dien-sieu-sang-bt1111121/index.html_gzip b/wp-content/cache/wp-rocket/localhost/2022/02/12/choang-ngop-voi-mau-biet-thu-3000m2-tan-co-dien-sieu-sang-bt1111121/index.html_gzip new file mode 100644 index 0000000000000000000000000000000000000000..7290001a1e995d8c64f26301e9d4cd744281a41a GIT binary patch literal 14966 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 + + + + + + + + + +Cập nhật hình ảnh thi công ngôi nhà trệt cấp 4 mái thái đẹp 160m2 hình chữ U chi phí 1,1 tỷ đồng TC508108 – Nội thất – kiến trúc An Việt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+ +
+
+ + + + +
+
+
+
+ + +

Cập nhật hình ảnh thi công ngôi nhà trệt cấp 4 mái thái đẹp 160m2 hình chữ U chi phí 1,1 tỷ đồng TC508108

+
+ + +
+
+ + +
+
+
+ + +

Chắc hẳn ai trong chúng ta cũng đã quá quen thuộc với câu thơ “Quê hương mỗi người chỉ một; Như là chỉ một mẹ thôi; Quê hương nếu ai không nhớ; Sẽ không lớn nổi thành người!” – Đó cũng chính là những lời chia sẻ của anh Đạt khi tới văn phòng kiến trúc yêu cầu tư vấn thiết kế mẫu nhà trệt cấp 4 mái thái đẹp diện tích 160m2. Tâm sự với chúng tôi anh Hải cho biết hiện nay anh đang làm việc và sinh sống tại thành phố Hải Phòng nhưng anh muốn xây dựng một ngôi nhà biệt thự 1 tầng kiểu nhà vườn ở quê Thái Bình – Đó là nơi anh đã sinh ra và lớn lên. Ngôi nhà không chỉ là nơi để ở để sinh sống mà còn là nơi để người con đi xa trở về, là nơi chất chứa nhiều kỷ niệm gắn liền với tuổi thơ! Hiểu được tâm lý đó của khách hàng, chúng tôi đã đặt nhiều tâm huyết vào hồ sơ thiết kế nhà cấp 4 3 phòng ngủ phong cách hiện đại cho gia đình anh Đạt. Hồ sơ thiết kế nhà được kiến trúc sư Angcovat hoàn thành từ đầu năm 2018 đến nay công trình đã thi công và đang trong quá trình hoàn thiện. Dưới đây là một số hình ảnh phối cảnh do kiến trúc sư thiết kế và cập nhật hình ảnh ngôi nhà trệt cấp 4 mà anh Đạt đã gửi về cho chúng tôi.

+

THÔNG SỐ TỔNG QUAN CỦA MẪU NHÀ TRỆT CẤP 4 MÁI THÁI ĐẸP Ở THÁI BÌNH KÍCH THƯỚC 13X15M

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
    +
  • Mẫu biệt thự
  • +
+
+

BT208018

+
+
    +
  • Số tầng
  • +
+
+

01

+
+
    +
  • Chủ đầu tư
  • +
+
+

anh Đạt

+
+
    +
  • Địa chỉ
  • +
+
+

Vũ An- Kiến Xương – Thái Bình

+
+
    +
  • Mặt tiền
  • +
+
+

13.1m

+
+
    +
  • Chiều sâu
  • +
+
+

14.9m

+
+
    +
  • Kích thước ô đất
  • +
+
+

15x35m

+
+
    +
  • Diện tích mái
  • +
+
+

64m2

+
+
    +
  • Phương án móng
  • +
+
+

Ép cọc

+
+
    +
  • Kiến trúc sư thiết kế
  • +
+
+

Kiến trúc sư Angcovat

+
+
    +
  • Thời gian khởi công
  • +
+
+

1/2018

+
+
    +
  • Thời gian hoàn thành
  • +
+
+

10/2018

+
+
    +
  • Chi phí thi công và hoàn thiện ngoại thất
  • +
+
+

1,1 tỷ đồng

+
+
    +
  • Thông số công năng, diện tích
  • +
+
+

Tổng diện tích: 160m2/sàn. 

+

Sảnh chính 13.5m2, Phòng khách 36.4m2, Phòng thờ 3.5m2, Phòng bếp ăn 15.7m2, Phòng ngủ 1 15.7m2, WC: 2.3m2, Phòng ngủ 2: 14m2, WC2: 4.0m2, WC3: 3.8m2, Phòng ngủ 3: 14m2. 

+
+

 HÌNH ẢNH PHỐI CẢNH MẪU NHÀ TRỆT CẤP 4 MÁI THÁI ĐẸP CỦA GIA ĐÌNH ANH ĐẠT DO KIẾN TRÚC SƯ ANGCOVAT THIẾT KẾ 

+

hình ảnh phối cảnh thiết kế nhà trệt cấp 4 mái thái hiện đại

+

 Phối cảnh view 1: Ngôi nhà trệt cấp 4 mái thái đẹp hình chữ U

+

Lại nhớ khoảng đầu năm 2018 dương lịch anh Đạt có tới văn phòng công ty kiến trúc Angcovat để nhớ chúng tôi thiết kế một ngôi nhà vườn, đẹp mắt, khang trang vừa là nơi thờ cúng tổ tiên ông bà, vừa là nơi để vợ chồng con cái anh trở về vào các dịp ngày nghỉ cuối tuần hay lễ tết. Đó cũng là nơi sum vầy anh em họ hàng gặp gỡ trong các ngày nghỉ đó, vì thế anh mong muốn một ngôi nhà với kiến trúc đơn giản hiện đại và có chút độc đáo. Sở hữu diện tích đất tương đối rộng lớn khoảng 525m2 ở vùng quê Thái Bình, chúng tôi đã nhanh chóng gợi ý anh Đạt một mẫu nhà vườn 1 tầng hình chữ U diện tích khoảng 160m2. Vì diện tích lớn nên việc phân chia mặt bằng các phòng cũng tương đối đơn giản, hơn nữa vì cùng được đặt trên một sàn nên việc di chuyển giữa các không gian tương đối thuận tiện và dễ dàng. 

+

Thay vì sở hữu các mẫu nhà chữ nhật, hình vuông thông thường, các bạn có thể tham khảo thêm các kiểu nhà cấp 4 hình chữ U cũng là một gợi ý tuyệt vời. Nhà chữ U được tạo bởi các khối kiến trúc gồm 3 cạnh vuông góc nhau, 2 cạnh nhô ra và 1 cạnh nằm ngang thụt vào phía trong. Với ưu điểm tạo ra nhiều không gian tiếp xúc với thiên nhiên nên rất thoáng đãng, các phòng đều được đón ánh sáng tự nhiên và không khí lưu thông trao đổi thường xuyên tốt cho sức khỏe. Ngôi nhà biệt thự 1 tầng chữ U thường xuất hiện ở các vùng ngoại thành hay nông thôn bởi ở đó có quỹ đất rộng, dễ dàng tạo hình khối kiến trúc cho ngôi nhà thêm phần độc đáo. Mẫu nhà trệt cấp 4 mái thái đẹp của gia đình anh Đạt cũng là một trong số đó, được xây dựng ở mảnh đất rộng lớn bằng phẳng ở quê nhà. Ngôi nhà được chúng tôi xây dựng trên ý tưởng hiện đại nhưng vẫn gần gũi với thiên nhiên, con người, làng xóm nơi đây!  

+

Xem thêm: Biệt thự 1 tầng kiểu Pháp

+

mặt tiền ngôi nhà trệt cấp 4 mái thái hình chữ U

+

 Phối cảnh view 2: Mẫu nhà trệt cấp 4 mái thái đẹp kích thước mặt tiền 13m

+

Mặt tiền ngôi nhà được trang trí khá đơn giản nhưng vẫn toát lên được sự độc đáo lôi cuốn người nhìn. Hai bên cạnh nhô ra của hình chữ U được thiết kế khá đối xứng và cân bằng nhau, đặc biệt là phần kệ chữ A phía đầu hồi. Bên dưới được thiết kế ô thoáng hình tròn đặt trong một khối chữ A kẻ chỉ ngang màu xám nhẹ nhàng. Các phần kiến trúc được phân chia rõ ràng theo tỷ lệ nhất định bằng cách đắp những lớp phào nhỏ sơn màu trắng ngăn cách giữa phần đầu hồi, cửa sổ và chân tường. Không quá cầu kỳ như các công trình nhà biệt thự phong cách cổ điển hay bán cổ điển, các mẫu nhà hiện đại thông thường sở hữu các lớp tường phẳng, sắp xếp theo lối phi đối xứng, thì mẫu nhà 1 tầng 160m2 của gia đình anh Đạt được chúng tôi cách tân bằng cách đắp thêm các lớp phào nhẹ nhàng khoảng 10cm dầy khoảng 5cm nhô ra phía ngoài tường để tạo điểm nhấn trong kiến trúc.

+

Phía chân tường mẫu nhà trệt cấp 4 mái thái đẹp được ốp bằng lớp gạch granite màu ghi xám vừa là để tạo vẻ đẹp thẩm mỹ cho công trình vừa là có tác dụng bảo vệ lớp tường phía trong khỏi bị các tác động của thời tiết như nồm ẩm, mưa gió gây ẩm mốc, bong tróc ảnh hưởng tới chất lượng cả ngôi nhà. Đặc biệt khi ốp gạch thẻ phía chân tường sẽ rất dễ vệ sinh lau rửa, tránh bị bẩn vào những ngày mưa gió hay bụi bẩn gây mất thẩm mỹ. Công trình trở nên bề thế, sang trọng hơn rất nhiều nhờ vào việc ốp gạch thẻ chân tường! Toàn bộ hệ thống cửa được sử dụng là hệ cửa kính khung gỗ giúp thu hút ánh sáng tốt hơn, dễ lau rửa vệ sinh giúp cho căn nhà lúc nào trông cũng như mới với vẻ ngoài ngoại thất sáng bóng sạch sẽ. Đặc biệt khi sử dụng chất liệu kính sẽ cho người nhìn cảm giác không gian rộng lớn hơn so với thực tế. Gia chủ có thể ngắm nhìn khung cảnh bên ngoài qua các ô cửa sổ nhỏ mà không lo ảnh hưởng của các tia bức xạ mặt trời có hại.  

+

Xem thêm: Biệt thự 1 tầng phong cách châu âu

+

mẫu nhà trệt cấp 4 mái thái màu xanh ghi hiện đại lịch lãm

+

 Phối cảnh view 3: Mẫu nhà trệt cấp 4 mái thái màu xanh lam hiện đại, lịch lãm

+

Mái thái được nhiều người biết đến và sử dụng rộng rãi bởi những đặc tính ưu việt mà nó mang lại. Mái Thái do có độ dốc lớn nên dễ dàng thoát nước mưa không bị tù đọng nước gây ẩm mốc ảnh hưởng tới chất lượng và thẩm mỹ công trình. Ngoài ra vì tạo thành độ dốc lớn nên nhà 1 tầng mái thái không bị thấp mà trông rất cao ráo, thoáng đãng nên có cảm giác ở nhà trệt cấp 4 mái thái rất mát mẻ vào mùa hè. Kết cấu mái được sử dụng là đổ bê tông mái dốc. Sau khi đổ bê tông tiếp tục lợp vì kèo và dán ngói thái lên. Các lớp ngói được thực hiện giật cấp và nhô ra phía mặt tiền tạo sự độc đáo khác với những ngôi nhà cấp 4 mái ngói đỏ thông thường. Lựa chọn màu xanh lam cho mẫu nhà trệt mái thái 3 phòng ngủ với mong muốn mang tới không gian sống thực sự lịch lãm, sang trọng giống như các ngôi nhà kiểu Châu Âu hiện đại. Sự kết hợp màu sắc trong một công trình kiến trúc đòi hỏi người kiến trúc sư phải là người có kinh nghiệm lâu năm trong nghề. Có các cách kết hợp như các tone màu đối nghịch nhau hoặc cùng tone màu nóng, lạnh, trung tính với tác dụng tạo sự tương đồng về màu sắc. 

+

Ngoài cách tạo hình khối kiến trúc thì cách phối  màu cũng vô cùng quan trọng mang tới vẻ đẹp cho ngôi nhà. Nếu không khéo lựa chọn màu sắc sẽ làm giảm giá trị thẩm mỹ cho ngôi nhà. Kiến trúc sư lựa chọn hệ mái thái màu xanh lam kết hợp với màu trắng của tường nhà và lớp gạch ốp tường màu ghi xám. Các màu sắc không quá rực rỡ nhưng khi đặt vào trong không gian nhiều cây cối làng quê xung quanh sẽ cảm nhận được vẻ đẹp bình dị, mộc mạc nhưng lại rất lịch lãm sang trọng. Các màu sắc được tạo điểm nhấn ở phần kệ chữ A màu xanh ghi và các phần viền chìm giữa các khối phào ngăn cách được sơn lớp sơn màu khác trông nổi bật hơn hẳn. Toàn bộ phần sân phía trước hiên nhà trệt câp 4 mái thái được lát bằng lớp đá hoa chống trơn màu vàng đậm rất bắt mắt. Kết hợp với việc tạo tiểu cảnh trước sân nhà sẽ mang lại không gian sống xanh mát, khoáng đạt và vô cùng dễ chịu. Đây sẽ là nơi nghỉ dưỡng lý tưởng của gia đình anh Đạt cùng với người thân trong gia đình, tận hưởng những ngày cuối tuần hay dịp lễ tết về quê thăm họ hàng bà con làng xóm. Sau khoảng thời gian 20 ngày làm việc, trao đổi thống nhất các phương án, bộ hồ sơ thiết kế ngoại thất nhà đã hoàn thành và bàn giao cho anh Đạt. Anh Đạt đã có những phản hồi tích cực dành cho các kiến trúc sư khi nhận được bản vẽ thiết kế n1hà. Công trình đươc bắt tay triển khai thực hiện luôn để sớm hoàn thành và đi vào sử dụng. Bây giờ hãy tiếp tục cùng chúng tôi khám phá hình ảnh ngôi nhà đã thi công và đang trong giai đoạn hoàn thiện nhé!

+

Xem thêm: Biệt thự 1 tầng 3 phòng ngủ

+

CẬP NHẬT HÌNH ẢNH NGÔI NHÀ TRỆT CẤP 4 MÁI THÁI ĐẸP DIỆN TÍCH 160M2 HÌNH CHỮ U ĐANG TRONG QUÁ TRÌNH HOÀN THIỆN

+

 Trải qua bao nhiêu năm trong nghề xây dựng, chúng tôi hiểu rằng quá trình biến một công trình nhà ở từ phương án thiết kế cho tới thực tế đòi hỏi rất nhiều tâm huyết, sự cố gắng nỗ lực và làm việc chặt chẽ giữa chủ nhà, thợ thi công và kiến trúc sư. Người kiến trúc sư là người vẽ lên những ý tưởng của chủ nhà, biến một công trình chỉ trong mơ thành hồ sơ bản vẽ. Trong khi người thợ thi công là người triển khai bản vẽ kỹ thuật sao cho ngôi nhà giống như bản vẽ. Chủ nhà là người đóng vai trò kết nối giữa thợ thi công và kiến trúc sư. Mỗi một khâu đòi hỏi đều phải có sự gắn kết, làm việc tỉ mỉ và cẩn thận. Ngôi nhà hoàn thành trước hết phải được gia chủ cảm nhận được cái đẹp đầu tiên, sự thoải mái, tiện nghi trong sử dụng thì công trình mới trở nên hoàn hảo, ấn tượng. Mỗi một bộ hồ sơ thiết kế nhà chúng tôi đều làm việc rất nhiệt tình, ngay từ bước thu thập thông tin ban đầu, khảo sát hiện trạng lên ý tưởng công năng sử dụng trong ngôi nhà gồm các phòng nào, diện tích ra sao, vị trí đặt như thế nào. Chốt phương án mặt bằng chúng tôi mới chuyển sang bước dựng phối cảnh 3D- đó chính là những hình ảnh mà chúng tôi giới thiệu với bạn phía trên, sau khi chủ nhà đồng ý phương án phối cảnh từ màu sơn, hình khối kiến trúc, màu ngói,… chúng tôi mới chuyển tiếp sang bước triển khai bản vẽ thi công. Bộ hồ sơ thiết kế hoàn thành gồm 4 phần chi tiết được trình bày lần lượt gồm: kiến trúc, kết cấu, điện, nước. Các bản vẽ rõ ràng dễ đọc dễ hiểu giúp thợ thi công dễ dàng triển khai bản vẽ. Đó cũng là lời nhận xét của bất kỳ gia chủ nào khi nhận được bộ hồ sơ thiết kế nhà của chúng tôi. 

+

Kiến trúc sư Angcovat và chủ nhà thường xuyên liên lạc từ khi bắt đầu ký hợp đồng cho tới khi hoàn thành nhiệm vụ thiết kế và trong quá trinh thi công xây dựng nếu có bất kỳ vấn đề gì về mặt kỹ thuật mà cả chủ nhà và thợ thi công không giải quyết được có thể liên hệ với đội kỹ thuật của chúng tôi, sẽ có kiến trúc sư hoặc kỹ sư tư vấn giải thích qua các phương tiện truyền thông như email, điện thoại, zalo,… Các hình ảnh thi công thực tế nhà được gia chủ gửi về cho chúng tôi để biết được công trình do thợ thi công triển khai có đúng kỹ thuật hay chưa, đúng như bản vẽ thiết kế của kiến trúc sư Angcovat hay không? Và dưới đây là một số hình ảnh mà anh Đạt gửi cho chúng tôi dịp vừa qua, khi công trình đang trong quá trình hoàn thiện…. Mời quý vị cùng chiêm ngưỡng ngôi nhà trệt cấp 4 mái thái đẹp 220m2 của gia đình anh Đạt thi công tại Thái Bình. 

+

ngôi nhà trệt cấp 4 mái thái 160m2 mặt tiền 13m đang được thi công hoàn thiện

+

 Hình ảnh thi công thực tế mẫu nhà trệt cấp 4 mái thái đẹp ở Thái Bình – Hình ảnh do chủ nhà cung cấp ngày 8/10/2018

+

Đây là hình ảnh ngôi nhà cấp 4 1 tầng của gia đình anh Đạt đang trong quá trình hoàn thiện và gửi về cho kiến trúc sư Angcovat chúng tôi. Anh Đạt rất vui mừng khi trao đổi với chúng tôi rằng “Anh thấy ngôi nhà giống như bản vẽ thiết kế, anh khá hài lòng, chỉ có khác màu sơn thôi đúng không em?”. Thú thật khi nhận được các hình ảnh thi công thực tế của chủ nhà gửi về cho Angcovat, chúng tôi đều khá hài lòng bởi trình độ tay nghề cao của anh em thợ thi công địa phương, thi công khá chính xác bản vẽ của chúng tôi. Tuy nhiên khi nhìn thấy hình ảnh ngôi nhà trệt cấp 4 mái thái của anh Đạt gửi về chúng tôi khá bất ngờ và có trao đổi với anh Đạt về một số điểm không giống với hồ sơ thiết kế mà chúng tôi đã thực hiện. Cụ thể các điểm không giống như trong bản vẽ thiết kế gồm có:

+

– Thứ nhất dễ dàng nhận thấy nhất có lẽ là màu sơn nhà: So với bản vẽ thiết kế mẫu nhà trệt cấp 4 mái thái đẹp 220m2 thì màu sơn phần tường chúng tôi chỉ định là màu trắng, phần sơn ngăn cách giữa 2 phào chỉ thân nhà và phần đầu hồi bằng màu xanh ngọc và riêng màu sơn ở phần đầu hồi tạo điểm nhấn là màu ghi xám. Các màu sắc được phân biệt rõ ràng với mục đích tạo điểm lôi cuốn, hút mắt người nhìn. Tuy nhiên khi thực hiện công trình, gia chủ đã sơn toàn bộ phần tường nhà bằng màu xanh nên không tạo được điểm nhấn nhá, điểm chính, phụ rõ ràng.

+

– Thứ hai là về mái nhà: Nếu như mái nhà trong bản vẽ kiến trúc sư chỉ định là mẫu mái thái màu xanh đậm thì khi thi công thực tế anh Đạt lựa chọn màu xanh nhạt hơn. Tâm sự với chúng tôi anh Đạt có giải thích rằng ở quê anh lựa chọn màu mái Thái như bản vẽ của kiến trúc sư không có, nên anh chỉ chọn được màu gần giống. Mặc dù không giống đúng như chỉ định màu của kiến trúc sư nhưng mẫu nhà trệt cấp 4 mái thái mang vẻ đẹp độc – lạ, tạo sự khác biệt so với các công trình đơn giản xung quanh. 

+

Xem thêm: Biệt thự 1 tầng 4 phòng ngủ

+

ngôi nhà trệt cấp 4 mái thái đẹp chữ U 3 phòng ngủ

+

 Mặt tiền mẫu nhà trệt cấp 4 mái thái đẹp kích thước 13x15m đang được hoàn thiện do chủ đầu tư chụp ngày 8/10/2018

+

 – Thứ ba là về tạo hình khối kiến trúc trong mẫu nhà trệt cấp 4 mái thái đẹp: thợ thi công không tạo phần ốp viền phía dưới cửa sổ không cách điệu như trong bản vẽ thiết kế, không ngắt khối rõ ràng nên vô hình chung không tạo được điểm nhấn trong kiến trúc, khiến cho các khối bị mờ nhạt, đơn giản quá. 

+

– Thứ tư là về phần ốp chân tường: Nếu như trong bản vẽ thiết kế các kiến trúc sư có tỉa khối bám theo viền cửa sổ lên xuống rất độc đáo thì trong khi thi công lại ốp tường bằng gạch màu xám có chiều cao thấp hơn nhiều so với bệ cửa sổ, nên chưa diễn đạt được hết ý tưởng của kiến trúc sư, không tạo được sự bề thế của công trình nhà ở biệt thự 1 tầng.

+

– Thứ năm là về phần trang trí ở đầu hồi hình chữ A: để tạo được sự thu hút người nhìn, kiến trúc sư chúng tôi sơn màu ghi khác biệt so với tone màu nền tường trong khi thợ thi công sơn toàn bộ phần chữ A là màu xanh cùng tone màu với màu sơn tường nên không làm nổi bật được phần trang trí đó lên. 

+

thi công mẫu nhà trệt cấp 4 mái thái 13x15m diện tích 160m2 3 phòng ngủ

+

Ngôi nhà trệt cấp 4 mái thái đẹp đang được thợ thi công hoàn thiện phần cổng hàng rào 

+

 Sau khi nghe kiến trúc sư Angcovat đưa ra một số nhận xét về ngôi nhà trệt cấp 4 mái thái đang thi công hoàn thiện, anh Đạt có hỏi chúng tôi cách khắc phục đơn giản một số lỗi đó được không? Thành thật mà nói, dưới con mắt tinh tường của kiến trúc sư dễ dàng nhận ra điểm khác biệt giữa bản vẽ và thực tế thi công, tuy nhiên điều này không phải ai cũng nhận ra được. Công trình về cơ bản cũng rất hiện đại, độc đáo và nổi bật so với các công trình xung quanh. Tuy nhiên dưới góc độ của người làm nghề lâu năm như kiến trúc sư Angcovat chúng tôi vẫn đưa ra một số giải pháp khắc phục đơn giản như sau:

+

– Thứ nhất là về phần mầu sơn tường: Gia chủ có thể lựa chọn màu sơn trắng cho phần tường đúng như bản vẽ thiết kế. Bởi màu trắng trong kiến trúc là gam màu kinh điển, dễ kết hợp với các gam màu khác tạo sự nổi bật, tinh khôi cho toàn bộ công trình. 

+

– Thứ hai: quan trọng là phần viền ngắt ở cửa sổ, phải tỉa ra khoảng 3cm sau đó trát và sơn hoặc ốp đều được. Khi đó các khối kiến trúc mới tạo được điểm nhấn và tôn được vẻ đẹp cả công trình lên.

+

– Thứ ba là phần đầu hồi chữ A gia chủ cũng nên sơn màu khác, cụ thể là gam màu ghi như trong bản vẽ của kiến trúc sư đã chỉ định. Có như thế tổng thể công trình mới không bị nhạt nhòa, mà ngược lại rất tinh tế, sang trọng.

+

Đó là một vài góp ý của kiến trúc sư để tạo ra một công trình thực sự hoàn hảo, tinh tế trong mắt người nhìn. Anh Đạt rất vui vẻ với những nhận xét của kiến trúc sư Angcovat đưa ra. Anh cho rằng đó thực sự là những góp ý chân thành của những người kiến trúc sư trong nghề, đưa cho anh những giải pháp khắc phục đơn giản, hiệu quả và chính xác.

+

Xem thêm: Biệt thự 1 tầng ở nông thôn

+

PHẢN HỒI CỦA CHỦ ĐẦU TƯ SAU KHI CÔNG TRÌNH NHÀ TRỆT CẤP 4 MÁI THÁI 160M2 ĐANG HOÀN THIỆN VÀ SẮP ĐI VÀO SỬ DỤNG

+

Vào cuối tuần vừa qua, sau khi xuống khảo sát công trình tại Thái Bình anh Đạt có gọi điện cho chúng tôi và chia sẻ rằng: “Thú thật với em lý do khách quan mà công trình chưa hoàn hảo như trong bản vẽ thiết kế là do anh làm việc và ở thành phố Hải Phòng, nhưng xây dựng ở quê Thái Bình, chỉ tranh thủ được ngày nghỉ hoặc cuối tuần về thăm nom giám sát công trình nên có phần chưa sát sao. Mặc dù anh nhìn công trình nhà trệt cấp 4 mái thái rất đẹp và khang trang nhưng có lẽ các em trong nghề nên dễ nhận ra một số lỗi trong thi công. Anh cảm ơn các em kiến trúc sư, kỹ sư Angcovat đã luôn giữ vững nhiệt huyết trong nghề, mặc dù hồ sơ kiến trúc đã hoàn thành nhưng bất cứ khi nào anh cần ý kiến của các em, các em đều tư vấn rất nhiệt tình, đó không chỉ là công việc mà còn là cái tình trong cuộc sống. Anh sẽ sớm khắc phục và gửi những hình ảnh mới nhất cho các em. Chúc công ty làm ăn phát đạt và ngày càng mở rộng quy mô hơn nữa nhé!”

+

 Vẫn biết rằng để tạo ra một công trình biệt thự nhà ở đẹp, cần phải tuân thủ đúng từng chi tiết, ý tưởng của kiến trúc sư phải phụ thuộc vào rất nhiều tâm huyết, công sức của chủ đầu tư cũng như đội thợ thi công. Thông thường gia chủ sẽ lựa chọn đội thợ thi công ở địa phương với lý do dễ dàng trong di chuyển, sinh hoạt cũng như tiết kiệm chi phí xây dựng. Tuy nhiên để đảm bảo công trình được bền đẹp, thẩm mỹ, tiện nghi thì đòi hỏi người thợ thi công phải có tay nghề cao, đảm bảo hiệu quả và trung thực trong công việc.

+

Hiện nay, để đảm bảo yếu tố chuyên nghiệp từ khâu thiết kế cho tới thi công xây dựng, công ty kiến trúc Angcovat chúng tôi đã triển khai thi công trọn gói nhà ở dân dụng, chìa khóa trao tay cho chủ nhà. Đảm nhận vai trò từ khâu thiết kế cho tới thi công, giám sát công trình dảm bảo bản quyền công trình, đáp ứng nhu cầu của đại đa số khách hàng. Nếu quý vị có nhu cầu thiết kế, thi công nhà ở, biệt thự hãy liên hệ với kiến trúc sư Angcovat qua số Hotline để được tư vấn chi tiết rõ ràng nhất nhé!

+ + +
+ + + + + +
+
+ + + + +
+ + + + +
+

Trả lời

Email của bạn sẽ không được hiển thị công khai.

+ +

+

+ +

+ +
+
+ +
+ +
+ + +
+ + + +
+ + + + + +
+
+
+ + + + + +
+
+
+ + +
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/cache/wp-rocket/localhost/2022/02/13/cap-nhat-hinh-anh-thi-cong-ngoi-nha-tret-cap-4-mai-thai-dep-160m2-hinh-chu-u-chi-phi-11-ty-dong-tc508108/index-mobile.html_gzip b/wp-content/cache/wp-rocket/localhost/2022/02/13/cap-nhat-hinh-anh-thi-cong-ngoi-nha-tret-cap-4-mai-thai-dep-160m2-hinh-chu-u-chi-phi-11-ty-dong-tc508108/index-mobile.html_gzip new file mode 100644 index 0000000000000000000000000000000000000000..d3bda5eaec6c54849bd47977e82fb9bd05826ee4 GIT binary patch literal 22100 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 + + + + + + + + + +Cập nhật hình ảnh thi công ngôi nhà trệt cấp 4 mái thái đẹp 160m2 hình chữ U chi phí 1,1 tỷ đồng TC508108 – Nội thất – kiến trúc An Việt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+ +
+
+ + + + +
+
+
+
+ + +

Cập nhật hình ảnh thi công ngôi nhà trệt cấp 4 mái thái đẹp 160m2 hình chữ U chi phí 1,1 tỷ đồng TC508108

+
+ + +
+
+ + +
+
+
+ + +

Chắc hẳn ai trong chúng ta cũng đã quá quen thuộc với câu thơ “Quê hương mỗi người chỉ một; Như là chỉ một mẹ thôi; Quê hương nếu ai không nhớ; Sẽ không lớn nổi thành người!” – Đó cũng chính là những lời chia sẻ của anh Đạt khi tới văn phòng kiến trúc yêu cầu tư vấn thiết kế mẫu nhà trệt cấp 4 mái thái đẹp diện tích 160m2. Tâm sự với chúng tôi anh Hải cho biết hiện nay anh đang làm việc và sinh sống tại thành phố Hải Phòng nhưng anh muốn xây dựng một ngôi nhà biệt thự 1 tầng kiểu nhà vườn ở quê Thái Bình – Đó là nơi anh đã sinh ra và lớn lên. Ngôi nhà không chỉ là nơi để ở để sinh sống mà còn là nơi để người con đi xa trở về, là nơi chất chứa nhiều kỷ niệm gắn liền với tuổi thơ! Hiểu được tâm lý đó của khách hàng, chúng tôi đã đặt nhiều tâm huyết vào hồ sơ thiết kế nhà cấp 4 3 phòng ngủ phong cách hiện đại cho gia đình anh Đạt. Hồ sơ thiết kế nhà được kiến trúc sư Angcovat hoàn thành từ đầu năm 2018 đến nay công trình đã thi công và đang trong quá trình hoàn thiện. Dưới đây là một số hình ảnh phối cảnh do kiến trúc sư thiết kế và cập nhật hình ảnh ngôi nhà trệt cấp 4 mà anh Đạt đã gửi về cho chúng tôi.

+

THÔNG SỐ TỔNG QUAN CỦA MẪU NHÀ TRỆT CẤP 4 MÁI THÁI ĐẸP Ở THÁI BÌNH KÍCH THƯỚC 13X15M

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
    +
  • Mẫu biệt thự
  • +
+
+

BT208018

+
+
    +
  • Số tầng
  • +
+
+

01

+
+
    +
  • Chủ đầu tư
  • +
+
+

anh Đạt

+
+
    +
  • Địa chỉ
  • +
+
+

Vũ An- Kiến Xương – Thái Bình

+
+
    +
  • Mặt tiền
  • +
+
+

13.1m

+
+
    +
  • Chiều sâu
  • +
+
+

14.9m

+
+
    +
  • Kích thước ô đất
  • +
+
+

15x35m

+
+
    +
  • Diện tích mái
  • +
+
+

64m2

+
+
    +
  • Phương án móng
  • +
+
+

Ép cọc

+
+
    +
  • Kiến trúc sư thiết kế
  • +
+
+

Kiến trúc sư Angcovat

+
+
    +
  • Thời gian khởi công
  • +
+
+

1/2018

+
+
    +
  • Thời gian hoàn thành
  • +
+
+

10/2018

+
+
    +
  • Chi phí thi công và hoàn thiện ngoại thất
  • +
+
+

1,1 tỷ đồng

+
+
    +
  • Thông số công năng, diện tích
  • +
+
+

Tổng diện tích: 160m2/sàn. 

+

Sảnh chính 13.5m2, Phòng khách 36.4m2, Phòng thờ 3.5m2, Phòng bếp ăn 15.7m2, Phòng ngủ 1 15.7m2, WC: 2.3m2, Phòng ngủ 2: 14m2, WC2: 4.0m2, WC3: 3.8m2, Phòng ngủ 3: 14m2. 

+
+

 HÌNH ẢNH PHỐI CẢNH MẪU NHÀ TRỆT CẤP 4 MÁI THÁI ĐẸP CỦA GIA ĐÌNH ANH ĐẠT DO KIẾN TRÚC SƯ ANGCOVAT THIẾT KẾ 

+

hình ảnh phối cảnh thiết kế nhà trệt cấp 4 mái thái hiện đại

+

 Phối cảnh view 1: Ngôi nhà trệt cấp 4 mái thái đẹp hình chữ U

+

Lại nhớ khoảng đầu năm 2018 dương lịch anh Đạt có tới văn phòng công ty kiến trúc Angcovat để nhớ chúng tôi thiết kế một ngôi nhà vườn, đẹp mắt, khang trang vừa là nơi thờ cúng tổ tiên ông bà, vừa là nơi để vợ chồng con cái anh trở về vào các dịp ngày nghỉ cuối tuần hay lễ tết. Đó cũng là nơi sum vầy anh em họ hàng gặp gỡ trong các ngày nghỉ đó, vì thế anh mong muốn một ngôi nhà với kiến trúc đơn giản hiện đại và có chút độc đáo. Sở hữu diện tích đất tương đối rộng lớn khoảng 525m2 ở vùng quê Thái Bình, chúng tôi đã nhanh chóng gợi ý anh Đạt một mẫu nhà vườn 1 tầng hình chữ U diện tích khoảng 160m2. Vì diện tích lớn nên việc phân chia mặt bằng các phòng cũng tương đối đơn giản, hơn nữa vì cùng được đặt trên một sàn nên việc di chuyển giữa các không gian tương đối thuận tiện và dễ dàng. 

+

Thay vì sở hữu các mẫu nhà chữ nhật, hình vuông thông thường, các bạn có thể tham khảo thêm các kiểu nhà cấp 4 hình chữ U cũng là một gợi ý tuyệt vời. Nhà chữ U được tạo bởi các khối kiến trúc gồm 3 cạnh vuông góc nhau, 2 cạnh nhô ra và 1 cạnh nằm ngang thụt vào phía trong. Với ưu điểm tạo ra nhiều không gian tiếp xúc với thiên nhiên nên rất thoáng đãng, các phòng đều được đón ánh sáng tự nhiên và không khí lưu thông trao đổi thường xuyên tốt cho sức khỏe. Ngôi nhà biệt thự 1 tầng chữ U thường xuất hiện ở các vùng ngoại thành hay nông thôn bởi ở đó có quỹ đất rộng, dễ dàng tạo hình khối kiến trúc cho ngôi nhà thêm phần độc đáo. Mẫu nhà trệt cấp 4 mái thái đẹp của gia đình anh Đạt cũng là một trong số đó, được xây dựng ở mảnh đất rộng lớn bằng phẳng ở quê nhà. Ngôi nhà được chúng tôi xây dựng trên ý tưởng hiện đại nhưng vẫn gần gũi với thiên nhiên, con người, làng xóm nơi đây!  

+

Xem thêm: Biệt thự 1 tầng kiểu Pháp

+

mặt tiền ngôi nhà trệt cấp 4 mái thái hình chữ U

+

 Phối cảnh view 2: Mẫu nhà trệt cấp 4 mái thái đẹp kích thước mặt tiền 13m

+

Mặt tiền ngôi nhà được trang trí khá đơn giản nhưng vẫn toát lên được sự độc đáo lôi cuốn người nhìn. Hai bên cạnh nhô ra của hình chữ U được thiết kế khá đối xứng và cân bằng nhau, đặc biệt là phần kệ chữ A phía đầu hồi. Bên dưới được thiết kế ô thoáng hình tròn đặt trong một khối chữ A kẻ chỉ ngang màu xám nhẹ nhàng. Các phần kiến trúc được phân chia rõ ràng theo tỷ lệ nhất định bằng cách đắp những lớp phào nhỏ sơn màu trắng ngăn cách giữa phần đầu hồi, cửa sổ và chân tường. Không quá cầu kỳ như các công trình nhà biệt thự phong cách cổ điển hay bán cổ điển, các mẫu nhà hiện đại thông thường sở hữu các lớp tường phẳng, sắp xếp theo lối phi đối xứng, thì mẫu nhà 1 tầng 160m2 của gia đình anh Đạt được chúng tôi cách tân bằng cách đắp thêm các lớp phào nhẹ nhàng khoảng 10cm dầy khoảng 5cm nhô ra phía ngoài tường để tạo điểm nhấn trong kiến trúc.

+

Phía chân tường mẫu nhà trệt cấp 4 mái thái đẹp được ốp bằng lớp gạch granite màu ghi xám vừa là để tạo vẻ đẹp thẩm mỹ cho công trình vừa là có tác dụng bảo vệ lớp tường phía trong khỏi bị các tác động của thời tiết như nồm ẩm, mưa gió gây ẩm mốc, bong tróc ảnh hưởng tới chất lượng cả ngôi nhà. Đặc biệt khi ốp gạch thẻ phía chân tường sẽ rất dễ vệ sinh lau rửa, tránh bị bẩn vào những ngày mưa gió hay bụi bẩn gây mất thẩm mỹ. Công trình trở nên bề thế, sang trọng hơn rất nhiều nhờ vào việc ốp gạch thẻ chân tường! Toàn bộ hệ thống cửa được sử dụng là hệ cửa kính khung gỗ giúp thu hút ánh sáng tốt hơn, dễ lau rửa vệ sinh giúp cho căn nhà lúc nào trông cũng như mới với vẻ ngoài ngoại thất sáng bóng sạch sẽ. Đặc biệt khi sử dụng chất liệu kính sẽ cho người nhìn cảm giác không gian rộng lớn hơn so với thực tế. Gia chủ có thể ngắm nhìn khung cảnh bên ngoài qua các ô cửa sổ nhỏ mà không lo ảnh hưởng của các tia bức xạ mặt trời có hại.  

+

Xem thêm: Biệt thự 1 tầng phong cách châu âu

+

mẫu nhà trệt cấp 4 mái thái màu xanh ghi hiện đại lịch lãm

+

 Phối cảnh view 3: Mẫu nhà trệt cấp 4 mái thái màu xanh lam hiện đại, lịch lãm

+

Mái thái được nhiều người biết đến và sử dụng rộng rãi bởi những đặc tính ưu việt mà nó mang lại. Mái Thái do có độ dốc lớn nên dễ dàng thoát nước mưa không bị tù đọng nước gây ẩm mốc ảnh hưởng tới chất lượng và thẩm mỹ công trình. Ngoài ra vì tạo thành độ dốc lớn nên nhà 1 tầng mái thái không bị thấp mà trông rất cao ráo, thoáng đãng nên có cảm giác ở nhà trệt cấp 4 mái thái rất mát mẻ vào mùa hè. Kết cấu mái được sử dụng là đổ bê tông mái dốc. Sau khi đổ bê tông tiếp tục lợp vì kèo và dán ngói thái lên. Các lớp ngói được thực hiện giật cấp và nhô ra phía mặt tiền tạo sự độc đáo khác với những ngôi nhà cấp 4 mái ngói đỏ thông thường. Lựa chọn màu xanh lam cho mẫu nhà trệt mái thái 3 phòng ngủ với mong muốn mang tới không gian sống thực sự lịch lãm, sang trọng giống như các ngôi nhà kiểu Châu Âu hiện đại. Sự kết hợp màu sắc trong một công trình kiến trúc đòi hỏi người kiến trúc sư phải là người có kinh nghiệm lâu năm trong nghề. Có các cách kết hợp như các tone màu đối nghịch nhau hoặc cùng tone màu nóng, lạnh, trung tính với tác dụng tạo sự tương đồng về màu sắc. 

+

Ngoài cách tạo hình khối kiến trúc thì cách phối  màu cũng vô cùng quan trọng mang tới vẻ đẹp cho ngôi nhà. Nếu không khéo lựa chọn màu sắc sẽ làm giảm giá trị thẩm mỹ cho ngôi nhà. Kiến trúc sư lựa chọn hệ mái thái màu xanh lam kết hợp với màu trắng của tường nhà và lớp gạch ốp tường màu ghi xám. Các màu sắc không quá rực rỡ nhưng khi đặt vào trong không gian nhiều cây cối làng quê xung quanh sẽ cảm nhận được vẻ đẹp bình dị, mộc mạc nhưng lại rất lịch lãm sang trọng. Các màu sắc được tạo điểm nhấn ở phần kệ chữ A màu xanh ghi và các phần viền chìm giữa các khối phào ngăn cách được sơn lớp sơn màu khác trông nổi bật hơn hẳn. Toàn bộ phần sân phía trước hiên nhà trệt câp 4 mái thái được lát bằng lớp đá hoa chống trơn màu vàng đậm rất bắt mắt. Kết hợp với việc tạo tiểu cảnh trước sân nhà sẽ mang lại không gian sống xanh mát, khoáng đạt và vô cùng dễ chịu. Đây sẽ là nơi nghỉ dưỡng lý tưởng của gia đình anh Đạt cùng với người thân trong gia đình, tận hưởng những ngày cuối tuần hay dịp lễ tết về quê thăm họ hàng bà con làng xóm. Sau khoảng thời gian 20 ngày làm việc, trao đổi thống nhất các phương án, bộ hồ sơ thiết kế ngoại thất nhà đã hoàn thành và bàn giao cho anh Đạt. Anh Đạt đã có những phản hồi tích cực dành cho các kiến trúc sư khi nhận được bản vẽ thiết kế n1hà. Công trình đươc bắt tay triển khai thực hiện luôn để sớm hoàn thành và đi vào sử dụng. Bây giờ hãy tiếp tục cùng chúng tôi khám phá hình ảnh ngôi nhà đã thi công và đang trong giai đoạn hoàn thiện nhé!

+

Xem thêm: Biệt thự 1 tầng 3 phòng ngủ

+

CẬP NHẬT HÌNH ẢNH NGÔI NHÀ TRỆT CẤP 4 MÁI THÁI ĐẸP DIỆN TÍCH 160M2 HÌNH CHỮ U ĐANG TRONG QUÁ TRÌNH HOÀN THIỆN

+

 Trải qua bao nhiêu năm trong nghề xây dựng, chúng tôi hiểu rằng quá trình biến một công trình nhà ở từ phương án thiết kế cho tới thực tế đòi hỏi rất nhiều tâm huyết, sự cố gắng nỗ lực và làm việc chặt chẽ giữa chủ nhà, thợ thi công và kiến trúc sư. Người kiến trúc sư là người vẽ lên những ý tưởng của chủ nhà, biến một công trình chỉ trong mơ thành hồ sơ bản vẽ. Trong khi người thợ thi công là người triển khai bản vẽ kỹ thuật sao cho ngôi nhà giống như bản vẽ. Chủ nhà là người đóng vai trò kết nối giữa thợ thi công và kiến trúc sư. Mỗi một khâu đòi hỏi đều phải có sự gắn kết, làm việc tỉ mỉ và cẩn thận. Ngôi nhà hoàn thành trước hết phải được gia chủ cảm nhận được cái đẹp đầu tiên, sự thoải mái, tiện nghi trong sử dụng thì công trình mới trở nên hoàn hảo, ấn tượng. Mỗi một bộ hồ sơ thiết kế nhà chúng tôi đều làm việc rất nhiệt tình, ngay từ bước thu thập thông tin ban đầu, khảo sát hiện trạng lên ý tưởng công năng sử dụng trong ngôi nhà gồm các phòng nào, diện tích ra sao, vị trí đặt như thế nào. Chốt phương án mặt bằng chúng tôi mới chuyển sang bước dựng phối cảnh 3D- đó chính là những hình ảnh mà chúng tôi giới thiệu với bạn phía trên, sau khi chủ nhà đồng ý phương án phối cảnh từ màu sơn, hình khối kiến trúc, màu ngói,… chúng tôi mới chuyển tiếp sang bước triển khai bản vẽ thi công. Bộ hồ sơ thiết kế hoàn thành gồm 4 phần chi tiết được trình bày lần lượt gồm: kiến trúc, kết cấu, điện, nước. Các bản vẽ rõ ràng dễ đọc dễ hiểu giúp thợ thi công dễ dàng triển khai bản vẽ. Đó cũng là lời nhận xét của bất kỳ gia chủ nào khi nhận được bộ hồ sơ thiết kế nhà của chúng tôi. 

+

Kiến trúc sư Angcovat và chủ nhà thường xuyên liên lạc từ khi bắt đầu ký hợp đồng cho tới khi hoàn thành nhiệm vụ thiết kế và trong quá trinh thi công xây dựng nếu có bất kỳ vấn đề gì về mặt kỹ thuật mà cả chủ nhà và thợ thi công không giải quyết được có thể liên hệ với đội kỹ thuật của chúng tôi, sẽ có kiến trúc sư hoặc kỹ sư tư vấn giải thích qua các phương tiện truyền thông như email, điện thoại, zalo,… Các hình ảnh thi công thực tế nhà được gia chủ gửi về cho chúng tôi để biết được công trình do thợ thi công triển khai có đúng kỹ thuật hay chưa, đúng như bản vẽ thiết kế của kiến trúc sư Angcovat hay không? Và dưới đây là một số hình ảnh mà anh Đạt gửi cho chúng tôi dịp vừa qua, khi công trình đang trong quá trình hoàn thiện…. Mời quý vị cùng chiêm ngưỡng ngôi nhà trệt cấp 4 mái thái đẹp 220m2 của gia đình anh Đạt thi công tại Thái Bình. 

+

ngôi nhà trệt cấp 4 mái thái 160m2 mặt tiền 13m đang được thi công hoàn thiện

+

 Hình ảnh thi công thực tế mẫu nhà trệt cấp 4 mái thái đẹp ở Thái Bình – Hình ảnh do chủ nhà cung cấp ngày 8/10/2018

+

Đây là hình ảnh ngôi nhà cấp 4 1 tầng của gia đình anh Đạt đang trong quá trình hoàn thiện và gửi về cho kiến trúc sư Angcovat chúng tôi. Anh Đạt rất vui mừng khi trao đổi với chúng tôi rằng “Anh thấy ngôi nhà giống như bản vẽ thiết kế, anh khá hài lòng, chỉ có khác màu sơn thôi đúng không em?”. Thú thật khi nhận được các hình ảnh thi công thực tế của chủ nhà gửi về cho Angcovat, chúng tôi đều khá hài lòng bởi trình độ tay nghề cao của anh em thợ thi công địa phương, thi công khá chính xác bản vẽ của chúng tôi. Tuy nhiên khi nhìn thấy hình ảnh ngôi nhà trệt cấp 4 mái thái của anh Đạt gửi về chúng tôi khá bất ngờ và có trao đổi với anh Đạt về một số điểm không giống với hồ sơ thiết kế mà chúng tôi đã thực hiện. Cụ thể các điểm không giống như trong bản vẽ thiết kế gồm có:

+

– Thứ nhất dễ dàng nhận thấy nhất có lẽ là màu sơn nhà: So với bản vẽ thiết kế mẫu nhà trệt cấp 4 mái thái đẹp 220m2 thì màu sơn phần tường chúng tôi chỉ định là màu trắng, phần sơn ngăn cách giữa 2 phào chỉ thân nhà và phần đầu hồi bằng màu xanh ngọc và riêng màu sơn ở phần đầu hồi tạo điểm nhấn là màu ghi xám. Các màu sắc được phân biệt rõ ràng với mục đích tạo điểm lôi cuốn, hút mắt người nhìn. Tuy nhiên khi thực hiện công trình, gia chủ đã sơn toàn bộ phần tường nhà bằng màu xanh nên không tạo được điểm nhấn nhá, điểm chính, phụ rõ ràng.

+

– Thứ hai là về mái nhà: Nếu như mái nhà trong bản vẽ kiến trúc sư chỉ định là mẫu mái thái màu xanh đậm thì khi thi công thực tế anh Đạt lựa chọn màu xanh nhạt hơn. Tâm sự với chúng tôi anh Đạt có giải thích rằng ở quê anh lựa chọn màu mái Thái như bản vẽ của kiến trúc sư không có, nên anh chỉ chọn được màu gần giống. Mặc dù không giống đúng như chỉ định màu của kiến trúc sư nhưng mẫu nhà trệt cấp 4 mái thái mang vẻ đẹp độc – lạ, tạo sự khác biệt so với các công trình đơn giản xung quanh. 

+

Xem thêm: Biệt thự 1 tầng 4 phòng ngủ

+

ngôi nhà trệt cấp 4 mái thái đẹp chữ U 3 phòng ngủ

+

 Mặt tiền mẫu nhà trệt cấp 4 mái thái đẹp kích thước 13x15m đang được hoàn thiện do chủ đầu tư chụp ngày 8/10/2018

+

 – Thứ ba là về tạo hình khối kiến trúc trong mẫu nhà trệt cấp 4 mái thái đẹp: thợ thi công không tạo phần ốp viền phía dưới cửa sổ không cách điệu như trong bản vẽ thiết kế, không ngắt khối rõ ràng nên vô hình chung không tạo được điểm nhấn trong kiến trúc, khiến cho các khối bị mờ nhạt, đơn giản quá. 

+

– Thứ tư là về phần ốp chân tường: Nếu như trong bản vẽ thiết kế các kiến trúc sư có tỉa khối bám theo viền cửa sổ lên xuống rất độc đáo thì trong khi thi công lại ốp tường bằng gạch màu xám có chiều cao thấp hơn nhiều so với bệ cửa sổ, nên chưa diễn đạt được hết ý tưởng của kiến trúc sư, không tạo được sự bề thế của công trình nhà ở biệt thự 1 tầng.

+

– Thứ năm là về phần trang trí ở đầu hồi hình chữ A: để tạo được sự thu hút người nhìn, kiến trúc sư chúng tôi sơn màu ghi khác biệt so với tone màu nền tường trong khi thợ thi công sơn toàn bộ phần chữ A là màu xanh cùng tone màu với màu sơn tường nên không làm nổi bật được phần trang trí đó lên. 

+

thi công mẫu nhà trệt cấp 4 mái thái 13x15m diện tích 160m2 3 phòng ngủ

+

Ngôi nhà trệt cấp 4 mái thái đẹp đang được thợ thi công hoàn thiện phần cổng hàng rào 

+

 Sau khi nghe kiến trúc sư Angcovat đưa ra một số nhận xét về ngôi nhà trệt cấp 4 mái thái đang thi công hoàn thiện, anh Đạt có hỏi chúng tôi cách khắc phục đơn giản một số lỗi đó được không? Thành thật mà nói, dưới con mắt tinh tường của kiến trúc sư dễ dàng nhận ra điểm khác biệt giữa bản vẽ và thực tế thi công, tuy nhiên điều này không phải ai cũng nhận ra được. Công trình về cơ bản cũng rất hiện đại, độc đáo và nổi bật so với các công trình xung quanh. Tuy nhiên dưới góc độ của người làm nghề lâu năm như kiến trúc sư Angcovat chúng tôi vẫn đưa ra một số giải pháp khắc phục đơn giản như sau:

+

– Thứ nhất là về phần mầu sơn tường: Gia chủ có thể lựa chọn màu sơn trắng cho phần tường đúng như bản vẽ thiết kế. Bởi màu trắng trong kiến trúc là gam màu kinh điển, dễ kết hợp với các gam màu khác tạo sự nổi bật, tinh khôi cho toàn bộ công trình. 

+

– Thứ hai: quan trọng là phần viền ngắt ở cửa sổ, phải tỉa ra khoảng 3cm sau đó trát và sơn hoặc ốp đều được. Khi đó các khối kiến trúc mới tạo được điểm nhấn và tôn được vẻ đẹp cả công trình lên.

+

– Thứ ba là phần đầu hồi chữ A gia chủ cũng nên sơn màu khác, cụ thể là gam màu ghi như trong bản vẽ của kiến trúc sư đã chỉ định. Có như thế tổng thể công trình mới không bị nhạt nhòa, mà ngược lại rất tinh tế, sang trọng.

+

Đó là một vài góp ý của kiến trúc sư để tạo ra một công trình thực sự hoàn hảo, tinh tế trong mắt người nhìn. Anh Đạt rất vui vẻ với những nhận xét của kiến trúc sư Angcovat đưa ra. Anh cho rằng đó thực sự là những góp ý chân thành của những người kiến trúc sư trong nghề, đưa cho anh những giải pháp khắc phục đơn giản, hiệu quả và chính xác.

+

Xem thêm: Biệt thự 1 tầng ở nông thôn

+

PHẢN HỒI CỦA CHỦ ĐẦU TƯ SAU KHI CÔNG TRÌNH NHÀ TRỆT CẤP 4 MÁI THÁI 160M2 ĐANG HOÀN THIỆN VÀ SẮP ĐI VÀO SỬ DỤNG

+

Vào cuối tuần vừa qua, sau khi xuống khảo sát công trình tại Thái Bình anh Đạt có gọi điện cho chúng tôi và chia sẻ rằng: “Thú thật với em lý do khách quan mà công trình chưa hoàn hảo như trong bản vẽ thiết kế là do anh làm việc và ở thành phố Hải Phòng, nhưng xây dựng ở quê Thái Bình, chỉ tranh thủ được ngày nghỉ hoặc cuối tuần về thăm nom giám sát công trình nên có phần chưa sát sao. Mặc dù anh nhìn công trình nhà trệt cấp 4 mái thái rất đẹp và khang trang nhưng có lẽ các em trong nghề nên dễ nhận ra một số lỗi trong thi công. Anh cảm ơn các em kiến trúc sư, kỹ sư Angcovat đã luôn giữ vững nhiệt huyết trong nghề, mặc dù hồ sơ kiến trúc đã hoàn thành nhưng bất cứ khi nào anh cần ý kiến của các em, các em đều tư vấn rất nhiệt tình, đó không chỉ là công việc mà còn là cái tình trong cuộc sống. Anh sẽ sớm khắc phục và gửi những hình ảnh mới nhất cho các em. Chúc công ty làm ăn phát đạt và ngày càng mở rộng quy mô hơn nữa nhé!”

+

 Vẫn biết rằng để tạo ra một công trình biệt thự nhà ở đẹp, cần phải tuân thủ đúng từng chi tiết, ý tưởng của kiến trúc sư phải phụ thuộc vào rất nhiều tâm huyết, công sức của chủ đầu tư cũng như đội thợ thi công. Thông thường gia chủ sẽ lựa chọn đội thợ thi công ở địa phương với lý do dễ dàng trong di chuyển, sinh hoạt cũng như tiết kiệm chi phí xây dựng. Tuy nhiên để đảm bảo công trình được bền đẹp, thẩm mỹ, tiện nghi thì đòi hỏi người thợ thi công phải có tay nghề cao, đảm bảo hiệu quả và trung thực trong công việc.

+

Hiện nay, để đảm bảo yếu tố chuyên nghiệp từ khâu thiết kế cho tới thi công xây dựng, công ty kiến trúc Angcovat chúng tôi đã triển khai thi công trọn gói nhà ở dân dụng, chìa khóa trao tay cho chủ nhà. Đảm nhận vai trò từ khâu thiết kế cho tới thi công, giám sát công trình dảm bảo bản quyền công trình, đáp ứng nhu cầu của đại đa số khách hàng. Nếu quý vị có nhu cầu thiết kế, thi công nhà ở, biệt thự hãy liên hệ với kiến trúc sư Angcovat qua số Hotline để được tư vấn chi tiết rõ ràng nhất nhé!

+ + +
+ + + + + +
+
+ + + + +
+ + + + +
+

Trả lời

Email của bạn sẽ không được hiển thị công khai.

+ +

+

+ +

+ +
+
+ +
+ +
+ + +
+ + + +
+ + + + + + + + + +
+
+
+
+ + Facebook Messenger +
+
+
+ Chat với chúng tôi qua Zalo +
+ +
+
+ Gọi ngay +
+ + + + + +
+ + +
+
+ +
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/cache/wp-rocket/localhost/2022/02/13/cap-nhat-hinh-anh-thi-cong-ngoi-nha-tret-cap-4-mai-thai-dep-160m2-hinh-chu-u-chi-phi-11-ty-dong-tc508108/index.html_gzip b/wp-content/cache/wp-rocket/localhost/2022/02/13/cap-nhat-hinh-anh-thi-cong-ngoi-nha-tret-cap-4-mai-thai-dep-160m2-hinh-chu-u-chi-phi-11-ty-dong-tc508108/index.html_gzip new file mode 100644 index 0000000000000000000000000000000000000000..c65e29f0f1763ef32464f526267de062415fe623 GIT binary patch literal 22240 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 literal 0 HcmV?d00001 diff --git a/wp-content/cache/wp-rocket/localhost/2022/02/13/hinh-anh-ngoi-nha-cap-4-dep-o-phu-tho-220m2-chi-phi-17-ty-dong-dang-thi-cong-va-hoan-thien-tc505108/index-mobile.html b/wp-content/cache/wp-rocket/localhost/2022/02/13/hinh-anh-ngoi-nha-cap-4-dep-o-phu-tho-220m2-chi-phi-17-ty-dong-dang-thi-cong-va-hoan-thien-tc505108/index-mobile.html new file mode 100644 index 0000000..cba250f --- /dev/null +++ b/wp-content/cache/wp-rocket/localhost/2022/02/13/hinh-anh-ngoi-nha-cap-4-dep-o-phu-tho-220m2-chi-phi-17-ty-dong-dang-thi-cong-va-hoan-thien-tc505108/index-mobile.html @@ -0,0 +1,1024 @@ + + + + + + + + + + +Hình ảnh ngôi nhà cấp 4 đẹp ở Phú Thọ 220m2 chi phí 1,7 tỷ đồng đang thi công và hoàn thiện TC505108 – Nội thất – kiến trúc An Việt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+ +
+
+ + + + +
+
+
+
+ + +

Hình ảnh ngôi nhà cấp 4 đẹp ở Phú Thọ 220m2 chi phí 1,7 tỷ đồng đang thi công và hoàn thiện TC505108

+
+ + +
+
+ + +
+
+
+ + +

Phú Thọ được coi là vùng đất tổ cội nguồn của người dân Việt Nam, là nơi lưu giữ nhiều giá trị văn hóa từ thời Hùng Vương. Trung tâm thành phố cách thủ đô Hà Nội khoảng 90km. Công ty kiến trúc Angcovat có điều kiện tiếp xúc và làm việc với rất nhiều khách hàng thiết kế tại tỉnh Phú Thọ. Có thể nói các công trình mà chúng tôi thiết kế từ nhà biệt thự 1 tầng, 2 tầng, 3 tầng cho tới lâu đài, khách sạn nhưng không thể không nhắc tới mẫu nhà cấp 4 đẹp ở Phú Thọ. Đó chính là mẫu nhà 1 tầng kích thước 18x14m diện tích sử dụng 220m2 của gia đình anh Thức do kiến trúc sư Angcovat chủ trì thiết kế năm 2017.

+

Được biết ngay sau khi nhận được bộ hồ sơ thiết kế nhà, anh Thức đã có những phản hồi tích cực dành cho kiến trúc sư chúng tôi, đó chính là những tình cảm, lời động viên khen ngợi để anh em công ty cố gắng hoàn thành tốt nhiệm vụ và không ngừng nâng cao kiến thức, sức sáng tạo để cho ra đời hàng nghìn mẫu biệt thự đẹp hàng năm. Lại nhớ khoảng giữa năm 2017, văn phòng công ty kiến trúc Angcovat có nhận được cuộc gọi của anh Thức với nội dung yêu cầu tư vấn thiết kế nhà trệt 1 tầng theo phong cách đồng quê hiện đại trên lô đất rộng 1,5 hecta ở nông thôn. Ngay sau khi đồng ý ký hợp đồng, kiến trúc sư đã có dịp về tận Phú Thọ để khảo sát đo đạc hiện trạng, tư vấn về mặt công năng cho gia đình anh Thức, sau khoảng thời gian 20 ngày trao đổi thống nhất các phương án chúng tôi đã hoàn thành bộ hồ sơ thiết kế nhà cấp 4 đẹp ở Phú Thọ diện tích 220m2 4 phòng ngủ tiện nghi. Anh Thức cho biết sau khi nhận được hồ sơ thiết kế anh đã triển khai tìm đội thợ thi công và bắt tay vào tiến hành thực hiện xây dựng ngôi nhà trong mơ của gia đình mình, dự kiến cuối năm 2017 sẽ hoàn thành và đi vào sử dụng. Trong quá trình thi công xây dựng nếu có bất cứ vấn đề nào thắc mắc về mặt kỹ thuật mà cả chủ nhà và thợ thi công đều không giải đáp được chúng tôi sẵn sàng giúp đỡ hỗ trợ qua điện thoại, email, zalo. Và vì thế mà khách hàng thường xuyên cập nhật các hình ảnh ngôi nhà đang triển khai thi công để gửi về cho chúng tôi. Dưới đây là một số hình ảnh phối cảnh kiến trúc sư đã dựng và một vài hình ảnh thực tế thi công nhà cấp 4 anh Thức. Nhiều người lo rằng ngôi nhà sau khi hoàn thiện sẽ khác xa so với bản vẽ thiết kế? Vậy đây chính là câu trả lời cho quý vị nào còn băn khoăn nhé, hãy cùng chúng tôi chiêm ngưỡng mẫu nhà cấp 4 đẹp ở Phú Thọ mái thái hiện đại của gia đình anh Thức nhé!

+

THÔNG SỐ TỔNG QUAN CỦA MẪU NHÀ CẤP 4 ĐẸP Ở PHÚ THỌ KÍCH THƯỚC 18X14M

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
    +
  • Mẫu biệt thự
  • +
+
+

BT106077

+
+
    +
  • Số tầng
  • +
+
+

01

+
+
    +
  • Chủ đầu tư
  • +
+
+

Anh Thức

+
+
    +
  • Địa chỉ
  • +
+
+

Phú Thọ

+
+
    +
  • Mặt tiền
  • +
+
+

18m

+
+
    +
  • Chiều sâu
  • +
+
+

14m

+
+
    +
  • Kích thước ô đất
  • +
+
+

1.5 hecta

+
+
    +
  • Diện tích mái
  • +
+
+

88m2

+
+
    +
  • Phương án móng
  • +
+
+

Ép cọc

+
+
    +
  • Kiến trúc sư thiết kế
  • +
+
+

Kiến trúc sư Angcovat

+
+
    +
  • Thời gian khởi công
  • +
+
+

10/2017

+
+
    +
  • Thời gian hoàn thành
  • +
+
+

3/2018

+
+
    +
  • Chi phí thi công và hoàn thiện ngoại thất
  • +
+
+

1,7 tỷ đồng

+
+
    +
  • Thông số công năng, diện tích
  • +
+
+

Tổng diện tích: 220m2. 

+

+) Tầng 1: tiền sảnh (17.5m2), phòng khách (25.5m2), phòng ngủ 1 (17.6m2), phòng ngủ 2 (17.6m2), phòng thờ (13m2), phòng bếp + phòng ăn (22m2), kho: (5.2m2).phòng ngủ 3: (18.5m2), phòng ngủ 4: (13m2), WC 1: (4.7m2), WC2:( 5m2), WC3: (4.7m2), WC 4: (7.4m2).

+
+

 HÌNH ẢNH PHỐI CẢNH MẪU NHÀ CẤP 4 ĐẸP Ở PHÚ THỌ DO KIẾN TRÚC SƯ ANGCOVAT CHỦ TRÌ THIẾT KẾ

+

phối cảnh mẫu thiết kế nhà cấp 4 đẹp ở Phú thọ theo phong cách đồng quê

+

 Hình ảnh thiết kế phối cảnh 3D mẫu nhà cấp 4 đẹp ở Hải Phòng diện tích 220m2

+

Theo xu hướng hiện nay, các mẫu nhà cấp 4 đang dần thay đổi, mang phong cách mới, tiện nghi và phù hợp với thói quen sống hiện đại. Có thể nói các mẫu nhà theo phong cách đồng quê sẽ mang tới cho gia chủ cuộc sống yên bình tránh xa cuộc sống xô bồ tấp nập và khói bụi chốn thành thị phố xá ồn ào. Do có ưu thế về diện tích, ngôi nhà cấp 4 được xây dựng trên khu đất rộng, tràn ngập sắc xanh cây cỏ tự nhiên, thoáng đãng. Thoạt nhìn vào mẫu nhà cấp 4 đẹp ở Phú Thọ trên mảnh đất gần 1,5 hecta sẽ trở thành tâm điểm của mọi sự chú ý nhờ vẻ đẹp bình dị, yên ả mà nó mang lại. 

+

Ngôi nhà được thiết kế 1 tầng nên ưu điểm lớn nhất là sự tiện lợi trong sinh hoạt hàng ngày do các phòng chức năng đều được thiết kế trên cùng một cốt nền, rất dễ dàng di chuyển đi lại giữa các khu vực, nhất là những gia đình có người già hay trẻ nhỏ thì việc xây dựng một ngôi nhà cấp 4 là rất thiết thực. Để đảm bảo tỷ lệ chiều ngang, dài, cao được cân đối chúng tôi nâng cốt nền lên bằng cách tạo các bậc thêm lên xuống. Số bậc theo phong thủy là 5 bậc theo đúng cung sinh là “Sinh – lão – bênh -tử- sinh”, với mong muốn mang lại cuộc sống bình yên hạnh phúc cho gia chủ. Các bậc thềm lên xuống được thiết kế theo đúng kiểu bậc thang có lan can hai bên vừa là để tăng giá trị thẩm mỹ cho ngôi nhà vừa là tạo tay vịn cho người cao tuổi hay trẻ nhỏ. Toàn bộ lan can đều đổ bê tông và sơn màu sơn trắng đồng bộ với tổng thể căn nhà. Cũng giống như phần lan can, toàn bộ tường nhà sơn màu trắng tinh. Bởi màu trắng là màu tượng trưng cho sự khởi đầu mới, sự thuần khiết và vô cùng tinh tế, hơn nữa đó là gam màu rất bền màu theo thời gian nên được nhiều gia chủ yêu mến và lựa chọn. Trong kiến trúc cũng như hội họa, màu trắng được coi là gam màu kinh điển bởi khả năng ứng dụng rộng rãi, dễ kết hợp với màu sắc khác nhau nhằm mục đích tôn tone màu kia thêm nổi bật. Màu trắng sẽ dễ dàng bắt gặp ở hầu hết các công trình kiến trúc từ hiện đại cho tới cổ điển và tân cổ điển. Ngoài cách tạo hình khối thì việc sử dụng hiệu quả các màu săc sẽ mang lại giá trị thẩm mỹ cao cho ngôi nhà bạn. Với kinh nghiệm lâu năm trong nghề như kiến trúc sư Angcovat thì sự phối hợp các màu sắc đã trở nên nhuần nhuyễn trong mỗi tác phẩm kiến trúc của mình. Trong công trình nhà cấp 4 đẹp ở Phú Thọ, chúng tôi kết hợp màu trắng của phần tường nhà và màu xanh lam lịch lãm của mái nhà.

+

Nếu như trước đây bạn đã quá quen thuộc với các ngôi nhà cấp 4 mái ngói đỏ tươi thì ngày nay với sự ra đời của hệ mái thái cùng với yêu cầu thẩm mỹ cao của người dùng, các mẫu nhà cấp 4 hiện đại sở hữu hệ mái thái với đa dạng màu sắc, chủng loại, kích thước sóng to, sóng nhỏ,… phù hợp với sở thích cá nhân cũng như phong thủy của từng gia chủ. Mái thái màu xanh thường được xuất hiện trong các công trình nhà ở biệt thự tân cổ điển Châu Âu, nó thể hiện được phần nào sự lịch lãm sang trọng cũng như cá tính của gia chủ. Nhà mái Thái được tạo thành hình chóp chữ A cao ráo, thoáng đãng nên vô hình chung ở nhà mái thái rất mát mẻ vào mùa hè, hơn nữa do có độ dốc lớn nên việc thoát nước mưa rất nhanh, không bị tù đọng nước gây ủ rột và nấm mốc ảnh hưởng tới chất lượng cũng như thẩm mỹ của công trình. Với cách phối hợp các màu sắc chủ đạo trắng – xanh lam, tone màu đối nghịch tạo ra sự tương phản nhưng lại làm nổi bật nhau lên, tạo thành tổng thể thống nhất không thể tách rời. Một công trình đẹp không phải là công trình sở hữu quá nhiều màu sắc, mà cần có sự chọn lọc sao cho thể hiện được chủ đích của một tác phẩm kiến trúc. Trong mẫu nhà cấp 4 đẹp ở Phú Thọ, kiến trúc sư muốn thể hiện yêu cầu của gia chủ đó là một ngôi nhà biệt thự vườn theo phong cách đồng quê, thể hiện dược sự bình yên, không gian sống mở, gần gũi với thiên nhiên và con người nơi đây. Đó chính là lý do mà kiến trúc sư muốn lựa chọn 2 màu sắc chru đạo trắng -xanh lam để phối màu trong công tình kiến trúc 220m2 của gia đình anh Thức.

+

Xem thêm: Biệt thự 1 tầng phong cách châu âu

+

thiết kế mặt tiền của mẫu nhà cấp 4 đẹp ở phú thọ

+

 Thiết kế mặt tiền mẫu nhà cấp 4 đẹp ở Phú Thọ kích thước 18m theo kiểu đơn giản tinh tế

+

 Mặt tiền ngôi nhà cấp 4 đẹp ở Phú Thọ được trang trí vô cùng sang trọng và tinh tế. Nổi bật là hệ thống cột được làm bằng cột tròn bên dưới đổ trụ bê tông hình chữ nhật vuông vắn và bề thế. Thay vì các cột hình vuông vững chãi khỏe khoắn thì kiến trúc sư muốn tạo ra nét độc đáo khác lạ bằng cách tạo cột hình tròn to dần đều về phía chân cột. Các thức cột tròn thể hiện sự mềm mại, uyển chuyển thay vì khô cứng như các thức cột vuông. Cột được đổ bê tông cốt thép sau đó sơn màu trắng tinh, các thức cột vừa với công dụng chống đỡ lực cho phần mái nhà vừa là thể hiện nét đẹp thẩm mỹ cho mặt tiền công trình. 

+

Toàn bộ phần chân tường được ốp bằng lớp đá ốp màu nhám sạch sẽ và đẳng cấp. Gạch ốp với tác dụng bảo vệ lớp tường phía trong không bị ảnh hưởng bởi các yếu tố thời tiết như mưa gió, nồm ẩm tránh ảnh hưởng tới chất lượng cũng như thẩm mỹ công trình. Ngoài ra lớp đá ốp phần chân tường sẽ càng làm cho ngôi nhà thêm phần bề thế và sang trọng. Phần đầu hồi được trang trí tương đối đơn giản bằng cách sơn màu trắng và kẻ chỉ ngang nhẹ nhàng. Ngoài ra để tăng sự thoáng đãng cho các phòng bên trong ngôi nhà, chúng tôi tạo ra các ô thoáng, cửa sổ nhỏ phần đầu hồi, đó là nơi trao đổi lưu thông không khí, ngoài ra theo ý nghĩa phong thủy thì đó là nơi đón tài lộc vào trong căn nhà. Việc quy hoạch thiết kế mẫu nhà cấp 4 đẹp ở Phú Thọ diện tích 220m2 trên lô đất rộng 2,5hecta là điều tương đối thuận lợi cho kiến trúc sư chúng tôi. Với đặc điểm đất đồii tốt, trồng được nhiều cây cối xung quanh nên phương án móng được lựa chọn đó là ép cọc. Mẫu nhà vườn 1 tầng phong cách đồng quê được đặt trên một tổng thể hài hòa, gắn kết với thiên nhiên, phần diện tích còn lại được quy hoạch làm sân vườn, trồng cây tăng bóng mát điều hòa không khí và cũng phần nào thỏa thú vui chơi cây cảnh của chủ nhà. Đó là một vài hình ảnh phối cảnh mà kiến trúc sư Angcovat đã dựng lên cho gia đình anh Thức, liệu rằng hình ảnh thi công thực tế ngôi nhà như thế nào? Mời quý vị xem tiếp các hình ảnh ngôi nhà đang trong quá trình thi công và hoàn thiện do chính gia chủ gửi về cho chúng tôi.

+

Xem thêm: Biệt thự 1 tầng kiểu Pháp

+

 CẬP NHẬT HÌNH ẢNH THI CÔNG THỰC TẾ MẪU NHÀ CẤP 4 ĐẸP Ở PHÚ THỌ KÍCH THƯỚC 18X14M THEO PHONG CÁCH ĐỒNG QUÊ ẤN TƯỢNG

+

thi công mẫu nhà cấp 4 đẹp ở phú thọ diện tích 220m2

+

 Hình ảnh công trình nhà cấp 4 đẹp ở Phú Thọ đang thi công xây dựng tháng 1/2018

+

Quá trình biến một công trình nhà ở từ phương án thiết kế cho tới thực tế đòi hỏi công sức, tiền bạc, tâm huyết của chủ đầu tư, thợ thi công và cả của những người kiến trúc sư. Hiểu được điều này, chúng tôi những người kiến trúc sư và chủ đầu tư luôn luôn trao đổi thống nhất lựa chọn các phương án phù hợp về thẩm mỹ, công năng, túi tiền cũng như các yếu tố phong thủy. Hồ sơ thiết kế sau khi hoàn thành sẽ được bàn giao cho chủ đầu tư để gia chủ có thể sớm bắt tay vào triển khai thi công công trình trong mơ của gia đình mình. Xây nhà là việc làm trọng đại, đánh dấu bước ngoặt lớn trong cuộc đời của mỗi con người. Nên chúng tôi hiểu tâm lý khách hàng luôn đòi hỏi yếu tố cẩn thận, tỉ mỉ ngay từ khâu thiết kế ban đầu cho tới khi công trình hoàn thiện và đi vào sử dụng.

+

Công ty kiến trúc Angcovat là một trong những công ty hàng đầu trong lĩnh vực thiết kế, thi công xây dựng nhà ở, biệt thự, lâu đài, khách sạn. Hàng năm cho ra đời hàng trăm mẫu thiết kế nhà nên kinh nghiệm thiết kế nhà cao, chuyên môn tốt, dễ dàng xử lý các yêu cầu thiết kế của khách hàng cho dù là khó tính nhất. Bởi chúng tôi luôn đặt chất lượng, thẩm mỹ công trình lên hàng đầu. Mỗi sản phẩm gắn liền với thương hiệu thiết kế của kiến trúc Angcovat, để có được như ngày hôm nay tập thể anh em kiến trúc sư, kỹ sư Angcovat luôn luôn nỗ lực trau dồi kiến thức, tũy lũy kinh nghiệm chuyên môn và chăm sóc khách hàng thật tận tâm. Các sản phẩm thiết kế bàn giao cho chủ đầu tư xong không phải đã là xong nhiệm vụ, chúng tôi tiếp tục lắng nghe, chủ động hỏi han các gia đình chủ đầu tư xem công trình thi công có gặp vướng mắc gì không, chúng tôi sẵn sàng hỗ trợ giải đáp miễn phí qua điện thoại, email và các phương tiện truyền thông khác. Đây là điều khách hàng rất hài lòng ở công ty chúng tôi, thể hiện sự chuyên nghiệp, hiểu thấu đáo tâm lý khách hàng. Anh Thức cũng là một trong những khách hàng đó của chúng tôi khi lựa chọn dịch vụ thiết kế nhà anh đã phải tìm hiểu rất nhiều các đơn vị tư vấn khác về cả sản phẩm, gia cả cũng như chế độ hậu mãi khách hàng. Tâm sự với chúng tôi anh Thức chia sẻ rằng ngôi nhà cấp 4 đẹp ở Phú Thọ là tài sản tích cóp của vợ chồng anh sau nhiều năm lao động miệt mài, đó là tài sản lớn, nên anh rất trân trọng, tìm hiểu kỹ ngay từ khâu thiết kế ban đầu. Từ khi thi công cho tới khi hoàn thiện, anh Thức rất vui mừng vì ngôi nhà được đúng như ý tưởng ban đầu mà kiến trúc sư chúng tôi đã dựng lên, ngôi nhà được xây dựng theo đúng như những gì mà anh và gia đình mong đợi.  

+

ngôi nhà cấp 4 đẹp ở phú thọ được gia đình anh Thức thi công theo đúng bản vẽ

+

Ngôi nhà cấp 4 đẹp ở Phú Thọ 4 phòng ngủ đang trong quá trình ốp đá và sơn ngoại thất

+

 Có thể dễ dàng nhận thấy hình ảnh thiết kế 3D của kiến trúc sư dựng so với hình ảnh thực tế chủ đầu tư đã thi công tuân thủ khá chính xác từ tỷ lệ bản vẽ chiều cao, chiều rộng, chiều dài cho tới hình dáng toát lên được dáng vẻ của ngôi nhà mang đậm phong cách đồng quê mộc mạc dản dị nhưng không kém phần sang trọng. Thợ thi công đang triển khai bước ốp đá cho trụ cột và chân công trình. Hệ thống cột được thi công theo đúng ý tưởng của kiến trúc sư, được đổ cột trụ bê tông sau đó sơn màu trắng phía ngoài. Cột được thực hiện theo hình tròn đường kính lón dần về phía chân cột. Trụ cột được để bê tông vững chãi và ốp đá phía ngoài cho sang trọng, lịch thiệp. 

+

Điểm nổi bật ở công trình nhà cấp 4 đẹp ở Phú Thọ thực tế lợp mái thái màu ghi xám thay vì màu xanh lam như trong bản vẽ thiết kế. Tâm sự với chúng tôi anh Thức có chia sẻ rằng:“Nói thật với các chú, anh rất thích bản vẽ mà các kiến trúc sư đã thiết kế từ hình dáng kích thước cho tới màu sắc, anh đều ưng cả, nhưng thú thật tìm quanh khu vực nơi anh ở không có mẫu mái thái màu xanh lam như kiến trúc sư đã chỉ định trong bản vẽ, anh chỉ tìm được một màu ghi cũng là màu hợp mệnh với anh, lại vẫn giữ được nét đẹp mộc mạc nên anh quyết định chuyển sang màu mái ngói này”. Đó là nội dung anh Thức chia sẻ khi gọi điện cho chúng tôi, những lời nói cũng hết sức bình dị như chính ngôi nhà mà chúng tôi thể hiện trong bản vẽ. 

+

Phương án triển khai hệ mái thái của công trình đó là đổ bê tông mái vát sau đó sử dụng hệ vì kèo và dán ngói thái. Trên phần mái còn để ô cửa thông khí vừa là ống thông khói từ nhà bếp vừa là để tạo độ thông thoáng lưu thông không khí trong ngôi nhà. Ngoài ra do lợp vì kèo mái thái nên tạo khoảng cách từ trần nhà cho tới mái nhà vô hình chung nhìn từ bên ngoài sẽ thấy ngôi nhà đạt tỷ lệ đẹp, thoáng đãng không có cảm giác bị bí bách như những kiểu nhà cấp 4 thời xưa, còn cảm nhận từ bên trong ngôi nhà đó là sự mát mẻ vào mùa hè, ấm nóng vào mùa đông rất thích hợp với điều kiện thời tiết nắng lắm mưa nhiều như ở nước ta. Để đảm bảo kết cấu và bố cục thẩm mx của toàn bộ công trình thì phần mái được đua ra từ 60 đến 150cm, như đối với mẫu nhà cấp 4 đẹp ở Phú Thọ thì phần mái được thiết kế thi công đua ra ngoài khoảng 80cm.

+

Xem thêm: Biệt thự 1 tầng 3 phòng ngủ  

+

mặt tiền ngôi nhà cấp 4 đẹp ở phú thọ đang trong quá trình thi công và dần hoàn thiện

+

Mặt tiền ngôi nhà cấp 4 đẹp ở Phú Thọ với bề ngang rộng 18m đang trong quá trình dần hoàn thiện

+

Mặt tiền công trình về cơ bản đã xong phần thô, đang hoàn thiện phần sơn, trang trí kẻ chỉ đầu hồi và ốp đá phía chân tường. Mặt tiền thể hiện bộ mặt của một ngôi nhà, vì thế trang trí mặt tiền sao cho đơn giản nhưng không được phép đơn điệu, lịch lãm sang trọng là điều vô cùng cần thiết. Phần đầu hồi được nâng lên cao hơn so với phần mái phía sau, tạo ra mốt không gian kiến trúc độc đáo ấn tượng, ngôi nhà trở nên cao ráo và không kém phần bề thế. Cũng đúng như bản vẽ thiết kế mẫu nhà cấp 4 đẹp ở Phú Thọ, phần đầu hồi đều mở thêm các ô thoáng, cửa sổ để lưu thông không khí, đón gió, ánh sáng vào các phòng chức năng trong căn nhà.

+

Tiếp tục cùng chúng tôi chiêm ngưỡng một vài hình ảnh công trình đang được thợ thi công hoàn thiện do chủ đầu tư cung cấp vào tháng 1/2018: 

+

thi công thực tế mẫu nhà cấp 4 đẹp ở phú thọ 4 phòng ngủ 1 phòng thờ

+

 Công trình nhà cấp 4 đẹp ở Phú Thọ đồng quê hiện đại 4 phòng ngủ tiện nghi đặt trên mảnh đất rộng 2,5 hecta

+

  Phía trước ngôi nhà là khoảng sân vườn rất rộng rãi, ngôi nhà biệt thự 1 tầng ở nông thôn thông thường sở hữu diện tích “Khủng”, do đó kiến trúc sư chúng tôi lên ý tưởng ngôi nhà phải gắn với tiểu cảnh sân vườn. Khoảng diện tích lớn trước nhà anh Thức cũng đang tiến hành làm đất, trồng cỏ và để sau khi hoàn thiện ngôi nhà cấp 4 đẹp ở Phú Thọ sẽ tạo cảnh quan, bonsai và trồng thêm nhiều cây tăng bóng mát nữa. Đó mới thực sự là không gian sống hữu tình, thân thiện và gần gũi với thiên nhiên!

+

PHẢN HỒI CỦA CHỦ ĐẦU TƯ SAU KHI NGÔI NHÀ CẤP 4 ĐẸP Ở PHÚ THỌ 220M2 ĐANG GẦN HOÀN THIỆN

+

hi công ngôi nhà cấp 4 đẹp ở phú thọ kiểu phong cách đồng quê

+

 Hình ảnh thi công thực tế mẫu nhà cấp 4 đẹp ở Phú Thọ do chủ đầu tư cung câp tháng 1/2018

+

Một ngôi nhà đẹp phải được đặt trong một tổng thể quy hoạch gọn gàng sạch đẹp, nhất là đối với những gia chủ sở hữu lô đất rộng 2,5hecta ở nông thôn. Phần diện tích còn lại được sử dụng làm sân vườn, vườn tược trồng cây xanh, cây cảnh là nơi cả gia đình ngắm cảnh vui đùa cùng nhau. Phần sân được trát xi măng lát gạch chống trơn màu đở. Gạch chống trơn ngày nay càng được sử dụng rộng rãi và nhất là ốp ở phần sân nhà, cổng để tránh trình trạng trơn trượt trong những ngày mưa gió hay tưới cây làm ướt sân nhất là những gia đình có người già và con nhỏ như gia đình anh Thức. Thợ thi công đang tiến hành trát toàn bộ xi măng phần nền xung quanh nhà, lối dẫn ra cổng và vườn. 

+

 Công trình hiện nay đã được hoàn thiện và đi vào sử dụng, anh Thức chia sẻ với chúng tôi rằng “Anh rất hài lòng với chất lượng công trình cũng như chất lượng thẩm mỹ của phần ngoại thất, cảm ơn anh em kiến trúc sư Angcovat đã đồng hành cùng anh trong suốt thời gian qua. Nói thật chỉ bỏ ra khoảng hơn 20 triệu đồng tiền thiết kế nhưng công trình được đảm bảo từ khâu lên ý tưởng cho tới khi hoàn thành. Chúc cho công ty làm ăn ngày càng phát đạt, mở rộng quy mô và cho ra đời nhiều công trình đẹp!”

+ + +
+ + + + + +
+
+ + + + +
+ + + + +
+

Trả lời

Email của bạn sẽ không được hiển thị công khai.

+ +

+

+ +

+ +
+
+ +
+ +
+ + +
+ + + +
+ + + + + +
+
+
+ + + + + +
+
+
+ + +
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/cache/wp-rocket/localhost/2022/02/13/hinh-anh-ngoi-nha-cap-4-dep-o-phu-tho-220m2-chi-phi-17-ty-dong-dang-thi-cong-va-hoan-thien-tc505108/index-mobile.html_gzip b/wp-content/cache/wp-rocket/localhost/2022/02/13/hinh-anh-ngoi-nha-cap-4-dep-o-phu-tho-220m2-chi-phi-17-ty-dong-dang-thi-cong-va-hoan-thien-tc505108/index-mobile.html_gzip new file mode 100644 index 0000000000000000000000000000000000000000..0f83eecffe641b05cd1c74fc41734250c6e0c509 GIT binary patch literal 21957 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 cb*ujsv)k^NYhB#557xl{2kcY%rW9EL09rMt + + + + + + + + + +Hình ảnh ngôi nhà cấp 4 đẹp ở Phú Thọ 220m2 chi phí 1,7 tỷ đồng đang thi công và hoàn thiện TC505108 – Nội thất – kiến trúc An Việt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+ +
+
+ + + + +
+
+
+
+ + +

Hình ảnh ngôi nhà cấp 4 đẹp ở Phú Thọ 220m2 chi phí 1,7 tỷ đồng đang thi công và hoàn thiện TC505108

+
+ + +
+
+ + +
+
+
+ + +

Phú Thọ được coi là vùng đất tổ cội nguồn của người dân Việt Nam, là nơi lưu giữ nhiều giá trị văn hóa từ thời Hùng Vương. Trung tâm thành phố cách thủ đô Hà Nội khoảng 90km. Công ty kiến trúc Angcovat có điều kiện tiếp xúc và làm việc với rất nhiều khách hàng thiết kế tại tỉnh Phú Thọ. Có thể nói các công trình mà chúng tôi thiết kế từ nhà biệt thự 1 tầng, 2 tầng, 3 tầng cho tới lâu đài, khách sạn nhưng không thể không nhắc tới mẫu nhà cấp 4 đẹp ở Phú Thọ. Đó chính là mẫu nhà 1 tầng kích thước 18x14m diện tích sử dụng 220m2 của gia đình anh Thức do kiến trúc sư Angcovat chủ trì thiết kế năm 2017.

+

Được biết ngay sau khi nhận được bộ hồ sơ thiết kế nhà, anh Thức đã có những phản hồi tích cực dành cho kiến trúc sư chúng tôi, đó chính là những tình cảm, lời động viên khen ngợi để anh em công ty cố gắng hoàn thành tốt nhiệm vụ và không ngừng nâng cao kiến thức, sức sáng tạo để cho ra đời hàng nghìn mẫu biệt thự đẹp hàng năm. Lại nhớ khoảng giữa năm 2017, văn phòng công ty kiến trúc Angcovat có nhận được cuộc gọi của anh Thức với nội dung yêu cầu tư vấn thiết kế nhà trệt 1 tầng theo phong cách đồng quê hiện đại trên lô đất rộng 1,5 hecta ở nông thôn. Ngay sau khi đồng ý ký hợp đồng, kiến trúc sư đã có dịp về tận Phú Thọ để khảo sát đo đạc hiện trạng, tư vấn về mặt công năng cho gia đình anh Thức, sau khoảng thời gian 20 ngày trao đổi thống nhất các phương án chúng tôi đã hoàn thành bộ hồ sơ thiết kế nhà cấp 4 đẹp ở Phú Thọ diện tích 220m2 4 phòng ngủ tiện nghi. Anh Thức cho biết sau khi nhận được hồ sơ thiết kế anh đã triển khai tìm đội thợ thi công và bắt tay vào tiến hành thực hiện xây dựng ngôi nhà trong mơ của gia đình mình, dự kiến cuối năm 2017 sẽ hoàn thành và đi vào sử dụng. Trong quá trình thi công xây dựng nếu có bất cứ vấn đề nào thắc mắc về mặt kỹ thuật mà cả chủ nhà và thợ thi công đều không giải đáp được chúng tôi sẵn sàng giúp đỡ hỗ trợ qua điện thoại, email, zalo. Và vì thế mà khách hàng thường xuyên cập nhật các hình ảnh ngôi nhà đang triển khai thi công để gửi về cho chúng tôi. Dưới đây là một số hình ảnh phối cảnh kiến trúc sư đã dựng và một vài hình ảnh thực tế thi công nhà cấp 4 anh Thức. Nhiều người lo rằng ngôi nhà sau khi hoàn thiện sẽ khác xa so với bản vẽ thiết kế? Vậy đây chính là câu trả lời cho quý vị nào còn băn khoăn nhé, hãy cùng chúng tôi chiêm ngưỡng mẫu nhà cấp 4 đẹp ở Phú Thọ mái thái hiện đại của gia đình anh Thức nhé!

+

THÔNG SỐ TỔNG QUAN CỦA MẪU NHÀ CẤP 4 ĐẸP Ở PHÚ THỌ KÍCH THƯỚC 18X14M

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
    +
  • Mẫu biệt thự
  • +
+
+

BT106077

+
+
    +
  • Số tầng
  • +
+
+

01

+
+
    +
  • Chủ đầu tư
  • +
+
+

Anh Thức

+
+
    +
  • Địa chỉ
  • +
+
+

Phú Thọ

+
+
    +
  • Mặt tiền
  • +
+
+

18m

+
+
    +
  • Chiều sâu
  • +
+
+

14m

+
+
    +
  • Kích thước ô đất
  • +
+
+

1.5 hecta

+
+
    +
  • Diện tích mái
  • +
+
+

88m2

+
+
    +
  • Phương án móng
  • +
+
+

Ép cọc

+
+
    +
  • Kiến trúc sư thiết kế
  • +
+
+

Kiến trúc sư Angcovat

+
+
    +
  • Thời gian khởi công
  • +
+
+

10/2017

+
+
    +
  • Thời gian hoàn thành
  • +
+
+

3/2018

+
+
    +
  • Chi phí thi công và hoàn thiện ngoại thất
  • +
+
+

1,7 tỷ đồng

+
+
    +
  • Thông số công năng, diện tích
  • +
+
+

Tổng diện tích: 220m2. 

+

+) Tầng 1: tiền sảnh (17.5m2), phòng khách (25.5m2), phòng ngủ 1 (17.6m2), phòng ngủ 2 (17.6m2), phòng thờ (13m2), phòng bếp + phòng ăn (22m2), kho: (5.2m2).phòng ngủ 3: (18.5m2), phòng ngủ 4: (13m2), WC 1: (4.7m2), WC2:( 5m2), WC3: (4.7m2), WC 4: (7.4m2).

+
+

 HÌNH ẢNH PHỐI CẢNH MẪU NHÀ CẤP 4 ĐẸP Ở PHÚ THỌ DO KIẾN TRÚC SƯ ANGCOVAT CHỦ TRÌ THIẾT KẾ

+

phối cảnh mẫu thiết kế nhà cấp 4 đẹp ở Phú thọ theo phong cách đồng quê

+

 Hình ảnh thiết kế phối cảnh 3D mẫu nhà cấp 4 đẹp ở Hải Phòng diện tích 220m2

+

Theo xu hướng hiện nay, các mẫu nhà cấp 4 đang dần thay đổi, mang phong cách mới, tiện nghi và phù hợp với thói quen sống hiện đại. Có thể nói các mẫu nhà theo phong cách đồng quê sẽ mang tới cho gia chủ cuộc sống yên bình tránh xa cuộc sống xô bồ tấp nập và khói bụi chốn thành thị phố xá ồn ào. Do có ưu thế về diện tích, ngôi nhà cấp 4 được xây dựng trên khu đất rộng, tràn ngập sắc xanh cây cỏ tự nhiên, thoáng đãng. Thoạt nhìn vào mẫu nhà cấp 4 đẹp ở Phú Thọ trên mảnh đất gần 1,5 hecta sẽ trở thành tâm điểm của mọi sự chú ý nhờ vẻ đẹp bình dị, yên ả mà nó mang lại. 

+

Ngôi nhà được thiết kế 1 tầng nên ưu điểm lớn nhất là sự tiện lợi trong sinh hoạt hàng ngày do các phòng chức năng đều được thiết kế trên cùng một cốt nền, rất dễ dàng di chuyển đi lại giữa các khu vực, nhất là những gia đình có người già hay trẻ nhỏ thì việc xây dựng một ngôi nhà cấp 4 là rất thiết thực. Để đảm bảo tỷ lệ chiều ngang, dài, cao được cân đối chúng tôi nâng cốt nền lên bằng cách tạo các bậc thêm lên xuống. Số bậc theo phong thủy là 5 bậc theo đúng cung sinh là “Sinh – lão – bênh -tử- sinh”, với mong muốn mang lại cuộc sống bình yên hạnh phúc cho gia chủ. Các bậc thềm lên xuống được thiết kế theo đúng kiểu bậc thang có lan can hai bên vừa là để tăng giá trị thẩm mỹ cho ngôi nhà vừa là tạo tay vịn cho người cao tuổi hay trẻ nhỏ. Toàn bộ lan can đều đổ bê tông và sơn màu sơn trắng đồng bộ với tổng thể căn nhà. Cũng giống như phần lan can, toàn bộ tường nhà sơn màu trắng tinh. Bởi màu trắng là màu tượng trưng cho sự khởi đầu mới, sự thuần khiết và vô cùng tinh tế, hơn nữa đó là gam màu rất bền màu theo thời gian nên được nhiều gia chủ yêu mến và lựa chọn. Trong kiến trúc cũng như hội họa, màu trắng được coi là gam màu kinh điển bởi khả năng ứng dụng rộng rãi, dễ kết hợp với màu sắc khác nhau nhằm mục đích tôn tone màu kia thêm nổi bật. Màu trắng sẽ dễ dàng bắt gặp ở hầu hết các công trình kiến trúc từ hiện đại cho tới cổ điển và tân cổ điển. Ngoài cách tạo hình khối thì việc sử dụng hiệu quả các màu săc sẽ mang lại giá trị thẩm mỹ cao cho ngôi nhà bạn. Với kinh nghiệm lâu năm trong nghề như kiến trúc sư Angcovat thì sự phối hợp các màu sắc đã trở nên nhuần nhuyễn trong mỗi tác phẩm kiến trúc của mình. Trong công trình nhà cấp 4 đẹp ở Phú Thọ, chúng tôi kết hợp màu trắng của phần tường nhà và màu xanh lam lịch lãm của mái nhà.

+

Nếu như trước đây bạn đã quá quen thuộc với các ngôi nhà cấp 4 mái ngói đỏ tươi thì ngày nay với sự ra đời của hệ mái thái cùng với yêu cầu thẩm mỹ cao của người dùng, các mẫu nhà cấp 4 hiện đại sở hữu hệ mái thái với đa dạng màu sắc, chủng loại, kích thước sóng to, sóng nhỏ,… phù hợp với sở thích cá nhân cũng như phong thủy của từng gia chủ. Mái thái màu xanh thường được xuất hiện trong các công trình nhà ở biệt thự tân cổ điển Châu Âu, nó thể hiện được phần nào sự lịch lãm sang trọng cũng như cá tính của gia chủ. Nhà mái Thái được tạo thành hình chóp chữ A cao ráo, thoáng đãng nên vô hình chung ở nhà mái thái rất mát mẻ vào mùa hè, hơn nữa do có độ dốc lớn nên việc thoát nước mưa rất nhanh, không bị tù đọng nước gây ủ rột và nấm mốc ảnh hưởng tới chất lượng cũng như thẩm mỹ của công trình. Với cách phối hợp các màu sắc chủ đạo trắng – xanh lam, tone màu đối nghịch tạo ra sự tương phản nhưng lại làm nổi bật nhau lên, tạo thành tổng thể thống nhất không thể tách rời. Một công trình đẹp không phải là công trình sở hữu quá nhiều màu sắc, mà cần có sự chọn lọc sao cho thể hiện được chủ đích của một tác phẩm kiến trúc. Trong mẫu nhà cấp 4 đẹp ở Phú Thọ, kiến trúc sư muốn thể hiện yêu cầu của gia chủ đó là một ngôi nhà biệt thự vườn theo phong cách đồng quê, thể hiện dược sự bình yên, không gian sống mở, gần gũi với thiên nhiên và con người nơi đây. Đó chính là lý do mà kiến trúc sư muốn lựa chọn 2 màu sắc chru đạo trắng -xanh lam để phối màu trong công tình kiến trúc 220m2 của gia đình anh Thức.

+

Xem thêm: Biệt thự 1 tầng phong cách châu âu

+

thiết kế mặt tiền của mẫu nhà cấp 4 đẹp ở phú thọ

+

 Thiết kế mặt tiền mẫu nhà cấp 4 đẹp ở Phú Thọ kích thước 18m theo kiểu đơn giản tinh tế

+

 Mặt tiền ngôi nhà cấp 4 đẹp ở Phú Thọ được trang trí vô cùng sang trọng và tinh tế. Nổi bật là hệ thống cột được làm bằng cột tròn bên dưới đổ trụ bê tông hình chữ nhật vuông vắn và bề thế. Thay vì các cột hình vuông vững chãi khỏe khoắn thì kiến trúc sư muốn tạo ra nét độc đáo khác lạ bằng cách tạo cột hình tròn to dần đều về phía chân cột. Các thức cột tròn thể hiện sự mềm mại, uyển chuyển thay vì khô cứng như các thức cột vuông. Cột được đổ bê tông cốt thép sau đó sơn màu trắng tinh, các thức cột vừa với công dụng chống đỡ lực cho phần mái nhà vừa là thể hiện nét đẹp thẩm mỹ cho mặt tiền công trình. 

+

Toàn bộ phần chân tường được ốp bằng lớp đá ốp màu nhám sạch sẽ và đẳng cấp. Gạch ốp với tác dụng bảo vệ lớp tường phía trong không bị ảnh hưởng bởi các yếu tố thời tiết như mưa gió, nồm ẩm tránh ảnh hưởng tới chất lượng cũng như thẩm mỹ công trình. Ngoài ra lớp đá ốp phần chân tường sẽ càng làm cho ngôi nhà thêm phần bề thế và sang trọng. Phần đầu hồi được trang trí tương đối đơn giản bằng cách sơn màu trắng và kẻ chỉ ngang nhẹ nhàng. Ngoài ra để tăng sự thoáng đãng cho các phòng bên trong ngôi nhà, chúng tôi tạo ra các ô thoáng, cửa sổ nhỏ phần đầu hồi, đó là nơi trao đổi lưu thông không khí, ngoài ra theo ý nghĩa phong thủy thì đó là nơi đón tài lộc vào trong căn nhà. Việc quy hoạch thiết kế mẫu nhà cấp 4 đẹp ở Phú Thọ diện tích 220m2 trên lô đất rộng 2,5hecta là điều tương đối thuận lợi cho kiến trúc sư chúng tôi. Với đặc điểm đất đồii tốt, trồng được nhiều cây cối xung quanh nên phương án móng được lựa chọn đó là ép cọc. Mẫu nhà vườn 1 tầng phong cách đồng quê được đặt trên một tổng thể hài hòa, gắn kết với thiên nhiên, phần diện tích còn lại được quy hoạch làm sân vườn, trồng cây tăng bóng mát điều hòa không khí và cũng phần nào thỏa thú vui chơi cây cảnh của chủ nhà. Đó là một vài hình ảnh phối cảnh mà kiến trúc sư Angcovat đã dựng lên cho gia đình anh Thức, liệu rằng hình ảnh thi công thực tế ngôi nhà như thế nào? Mời quý vị xem tiếp các hình ảnh ngôi nhà đang trong quá trình thi công và hoàn thiện do chính gia chủ gửi về cho chúng tôi.

+

Xem thêm: Biệt thự 1 tầng kiểu Pháp

+

 CẬP NHẬT HÌNH ẢNH THI CÔNG THỰC TẾ MẪU NHÀ CẤP 4 ĐẸP Ở PHÚ THỌ KÍCH THƯỚC 18X14M THEO PHONG CÁCH ĐỒNG QUÊ ẤN TƯỢNG

+

thi công mẫu nhà cấp 4 đẹp ở phú thọ diện tích 220m2

+

 Hình ảnh công trình nhà cấp 4 đẹp ở Phú Thọ đang thi công xây dựng tháng 1/2018

+

Quá trình biến một công trình nhà ở từ phương án thiết kế cho tới thực tế đòi hỏi công sức, tiền bạc, tâm huyết của chủ đầu tư, thợ thi công và cả của những người kiến trúc sư. Hiểu được điều này, chúng tôi những người kiến trúc sư và chủ đầu tư luôn luôn trao đổi thống nhất lựa chọn các phương án phù hợp về thẩm mỹ, công năng, túi tiền cũng như các yếu tố phong thủy. Hồ sơ thiết kế sau khi hoàn thành sẽ được bàn giao cho chủ đầu tư để gia chủ có thể sớm bắt tay vào triển khai thi công công trình trong mơ của gia đình mình. Xây nhà là việc làm trọng đại, đánh dấu bước ngoặt lớn trong cuộc đời của mỗi con người. Nên chúng tôi hiểu tâm lý khách hàng luôn đòi hỏi yếu tố cẩn thận, tỉ mỉ ngay từ khâu thiết kế ban đầu cho tới khi công trình hoàn thiện và đi vào sử dụng.

+

Công ty kiến trúc Angcovat là một trong những công ty hàng đầu trong lĩnh vực thiết kế, thi công xây dựng nhà ở, biệt thự, lâu đài, khách sạn. Hàng năm cho ra đời hàng trăm mẫu thiết kế nhà nên kinh nghiệm thiết kế nhà cao, chuyên môn tốt, dễ dàng xử lý các yêu cầu thiết kế của khách hàng cho dù là khó tính nhất. Bởi chúng tôi luôn đặt chất lượng, thẩm mỹ công trình lên hàng đầu. Mỗi sản phẩm gắn liền với thương hiệu thiết kế của kiến trúc Angcovat, để có được như ngày hôm nay tập thể anh em kiến trúc sư, kỹ sư Angcovat luôn luôn nỗ lực trau dồi kiến thức, tũy lũy kinh nghiệm chuyên môn và chăm sóc khách hàng thật tận tâm. Các sản phẩm thiết kế bàn giao cho chủ đầu tư xong không phải đã là xong nhiệm vụ, chúng tôi tiếp tục lắng nghe, chủ động hỏi han các gia đình chủ đầu tư xem công trình thi công có gặp vướng mắc gì không, chúng tôi sẵn sàng hỗ trợ giải đáp miễn phí qua điện thoại, email và các phương tiện truyền thông khác. Đây là điều khách hàng rất hài lòng ở công ty chúng tôi, thể hiện sự chuyên nghiệp, hiểu thấu đáo tâm lý khách hàng. Anh Thức cũng là một trong những khách hàng đó của chúng tôi khi lựa chọn dịch vụ thiết kế nhà anh đã phải tìm hiểu rất nhiều các đơn vị tư vấn khác về cả sản phẩm, gia cả cũng như chế độ hậu mãi khách hàng. Tâm sự với chúng tôi anh Thức chia sẻ rằng ngôi nhà cấp 4 đẹp ở Phú Thọ là tài sản tích cóp của vợ chồng anh sau nhiều năm lao động miệt mài, đó là tài sản lớn, nên anh rất trân trọng, tìm hiểu kỹ ngay từ khâu thiết kế ban đầu. Từ khi thi công cho tới khi hoàn thiện, anh Thức rất vui mừng vì ngôi nhà được đúng như ý tưởng ban đầu mà kiến trúc sư chúng tôi đã dựng lên, ngôi nhà được xây dựng theo đúng như những gì mà anh và gia đình mong đợi.  

+

ngôi nhà cấp 4 đẹp ở phú thọ được gia đình anh Thức thi công theo đúng bản vẽ

+

Ngôi nhà cấp 4 đẹp ở Phú Thọ 4 phòng ngủ đang trong quá trình ốp đá và sơn ngoại thất

+

 Có thể dễ dàng nhận thấy hình ảnh thiết kế 3D của kiến trúc sư dựng so với hình ảnh thực tế chủ đầu tư đã thi công tuân thủ khá chính xác từ tỷ lệ bản vẽ chiều cao, chiều rộng, chiều dài cho tới hình dáng toát lên được dáng vẻ của ngôi nhà mang đậm phong cách đồng quê mộc mạc dản dị nhưng không kém phần sang trọng. Thợ thi công đang triển khai bước ốp đá cho trụ cột và chân công trình. Hệ thống cột được thi công theo đúng ý tưởng của kiến trúc sư, được đổ cột trụ bê tông sau đó sơn màu trắng phía ngoài. Cột được thực hiện theo hình tròn đường kính lón dần về phía chân cột. Trụ cột được để bê tông vững chãi và ốp đá phía ngoài cho sang trọng, lịch thiệp. 

+

Điểm nổi bật ở công trình nhà cấp 4 đẹp ở Phú Thọ thực tế lợp mái thái màu ghi xám thay vì màu xanh lam như trong bản vẽ thiết kế. Tâm sự với chúng tôi anh Thức có chia sẻ rằng:“Nói thật với các chú, anh rất thích bản vẽ mà các kiến trúc sư đã thiết kế từ hình dáng kích thước cho tới màu sắc, anh đều ưng cả, nhưng thú thật tìm quanh khu vực nơi anh ở không có mẫu mái thái màu xanh lam như kiến trúc sư đã chỉ định trong bản vẽ, anh chỉ tìm được một màu ghi cũng là màu hợp mệnh với anh, lại vẫn giữ được nét đẹp mộc mạc nên anh quyết định chuyển sang màu mái ngói này”. Đó là nội dung anh Thức chia sẻ khi gọi điện cho chúng tôi, những lời nói cũng hết sức bình dị như chính ngôi nhà mà chúng tôi thể hiện trong bản vẽ. 

+

Phương án triển khai hệ mái thái của công trình đó là đổ bê tông mái vát sau đó sử dụng hệ vì kèo và dán ngói thái. Trên phần mái còn để ô cửa thông khí vừa là ống thông khói từ nhà bếp vừa là để tạo độ thông thoáng lưu thông không khí trong ngôi nhà. Ngoài ra do lợp vì kèo mái thái nên tạo khoảng cách từ trần nhà cho tới mái nhà vô hình chung nhìn từ bên ngoài sẽ thấy ngôi nhà đạt tỷ lệ đẹp, thoáng đãng không có cảm giác bị bí bách như những kiểu nhà cấp 4 thời xưa, còn cảm nhận từ bên trong ngôi nhà đó là sự mát mẻ vào mùa hè, ấm nóng vào mùa đông rất thích hợp với điều kiện thời tiết nắng lắm mưa nhiều như ở nước ta. Để đảm bảo kết cấu và bố cục thẩm mx của toàn bộ công trình thì phần mái được đua ra từ 60 đến 150cm, như đối với mẫu nhà cấp 4 đẹp ở Phú Thọ thì phần mái được thiết kế thi công đua ra ngoài khoảng 80cm.

+

Xem thêm: Biệt thự 1 tầng 3 phòng ngủ  

+

mặt tiền ngôi nhà cấp 4 đẹp ở phú thọ đang trong quá trình thi công và dần hoàn thiện

+

Mặt tiền ngôi nhà cấp 4 đẹp ở Phú Thọ với bề ngang rộng 18m đang trong quá trình dần hoàn thiện

+

Mặt tiền công trình về cơ bản đã xong phần thô, đang hoàn thiện phần sơn, trang trí kẻ chỉ đầu hồi và ốp đá phía chân tường. Mặt tiền thể hiện bộ mặt của một ngôi nhà, vì thế trang trí mặt tiền sao cho đơn giản nhưng không được phép đơn điệu, lịch lãm sang trọng là điều vô cùng cần thiết. Phần đầu hồi được nâng lên cao hơn so với phần mái phía sau, tạo ra mốt không gian kiến trúc độc đáo ấn tượng, ngôi nhà trở nên cao ráo và không kém phần bề thế. Cũng đúng như bản vẽ thiết kế mẫu nhà cấp 4 đẹp ở Phú Thọ, phần đầu hồi đều mở thêm các ô thoáng, cửa sổ để lưu thông không khí, đón gió, ánh sáng vào các phòng chức năng trong căn nhà.

+

Tiếp tục cùng chúng tôi chiêm ngưỡng một vài hình ảnh công trình đang được thợ thi công hoàn thiện do chủ đầu tư cung cấp vào tháng 1/2018: 

+

thi công thực tế mẫu nhà cấp 4 đẹp ở phú thọ 4 phòng ngủ 1 phòng thờ

+

 Công trình nhà cấp 4 đẹp ở Phú Thọ đồng quê hiện đại 4 phòng ngủ tiện nghi đặt trên mảnh đất rộng 2,5 hecta

+

  Phía trước ngôi nhà là khoảng sân vườn rất rộng rãi, ngôi nhà biệt thự 1 tầng ở nông thôn thông thường sở hữu diện tích “Khủng”, do đó kiến trúc sư chúng tôi lên ý tưởng ngôi nhà phải gắn với tiểu cảnh sân vườn. Khoảng diện tích lớn trước nhà anh Thức cũng đang tiến hành làm đất, trồng cỏ và để sau khi hoàn thiện ngôi nhà cấp 4 đẹp ở Phú Thọ sẽ tạo cảnh quan, bonsai và trồng thêm nhiều cây tăng bóng mát nữa. Đó mới thực sự là không gian sống hữu tình, thân thiện và gần gũi với thiên nhiên!

+

PHẢN HỒI CỦA CHỦ ĐẦU TƯ SAU KHI NGÔI NHÀ CẤP 4 ĐẸP Ở PHÚ THỌ 220M2 ĐANG GẦN HOÀN THIỆN

+

hi công ngôi nhà cấp 4 đẹp ở phú thọ kiểu phong cách đồng quê

+

 Hình ảnh thi công thực tế mẫu nhà cấp 4 đẹp ở Phú Thọ do chủ đầu tư cung câp tháng 1/2018

+

Một ngôi nhà đẹp phải được đặt trong một tổng thể quy hoạch gọn gàng sạch đẹp, nhất là đối với những gia chủ sở hữu lô đất rộng 2,5hecta ở nông thôn. Phần diện tích còn lại được sử dụng làm sân vườn, vườn tược trồng cây xanh, cây cảnh là nơi cả gia đình ngắm cảnh vui đùa cùng nhau. Phần sân được trát xi măng lát gạch chống trơn màu đở. Gạch chống trơn ngày nay càng được sử dụng rộng rãi và nhất là ốp ở phần sân nhà, cổng để tránh trình trạng trơn trượt trong những ngày mưa gió hay tưới cây làm ướt sân nhất là những gia đình có người già và con nhỏ như gia đình anh Thức. Thợ thi công đang tiến hành trát toàn bộ xi măng phần nền xung quanh nhà, lối dẫn ra cổng và vườn. 

+

 Công trình hiện nay đã được hoàn thiện và đi vào sử dụng, anh Thức chia sẻ với chúng tôi rằng “Anh rất hài lòng với chất lượng công trình cũng như chất lượng thẩm mỹ của phần ngoại thất, cảm ơn anh em kiến trúc sư Angcovat đã đồng hành cùng anh trong suốt thời gian qua. Nói thật chỉ bỏ ra khoảng hơn 20 triệu đồng tiền thiết kế nhưng công trình được đảm bảo từ khâu lên ý tưởng cho tới khi hoàn thành. Chúc cho công ty làm ăn ngày càng phát đạt, mở rộng quy mô và cho ra đời nhiều công trình đẹp!”

+ + +
+ + + + + +
+
+ + + + +
+ + + + +
+

Trả lời

Email của bạn sẽ không được hiển thị công khai.

+ +

+

+ +

+ +
+
+ +
+ +
+ + +
+ + + +
+ + + + + + + + + +
+
+
+
+ + Facebook Messenger +
+
+
+ Chat với chúng tôi qua Zalo +
+ +
+
+ Gọi ngay +
+ + + + + +
+ + +
+
+ +
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/cache/wp-rocket/localhost/2022/02/13/hinh-anh-ngoi-nha-cap-4-dep-o-phu-tho-220m2-chi-phi-17-ty-dong-dang-thi-cong-va-hoan-thien-tc505108/index.html_gzip b/wp-content/cache/wp-rocket/localhost/2022/02/13/hinh-anh-ngoi-nha-cap-4-dep-o-phu-tho-220m2-chi-phi-17-ty-dong-dang-thi-cong-va-hoan-thien-tc505108/index.html_gzip new file mode 100644 index 0000000000000000000000000000000000000000..1804405493633bc69a7a670cd6995ef2da37a60a GIT binary patch literal 22105 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 literal 0 HcmV?d00001 diff --git a/wp-content/cache/wp-rocket/localhost/2022/02/13/kien-truc-su-tu-van-cai-tao-mat-tien-nha-pho-7-tang-rong-9m-o-bac-ninh-np218110/index-mobile.html b/wp-content/cache/wp-rocket/localhost/2022/02/13/kien-truc-su-tu-van-cai-tao-mat-tien-nha-pho-7-tang-rong-9m-o-bac-ninh-np218110/index-mobile.html new file mode 100644 index 0000000..b39743e --- /dev/null +++ b/wp-content/cache/wp-rocket/localhost/2022/02/13/kien-truc-su-tu-van-cai-tao-mat-tien-nha-pho-7-tang-rong-9m-o-bac-ninh-np218110/index-mobile.html @@ -0,0 +1,1011 @@ + + + + + + + + + + +Kiến trúc sư tư vấn cải tạo mặt tiền nhà phố 7 tầng rộng 9m ở Bắc Ninh NP218110 – Nội thất – kiến trúc An Việt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+ +
+
+ + + + +
+
+
+
+ + +

Kiến trúc sư tư vấn cải tạo mặt tiền nhà phố 7 tầng rộng 9m ở Bắc Ninh NP218110

+
+ + +
+
+ + +
+
+
+ + +

 Trong suốt nhiều năm làm việc trong lĩnh vực xây dựng chúng tôi nhận ra rằng ở thời điểm này đa số các gia đình lựa chọn thiết kế nhà trước khi bắt tay vào thi công. Tuy vậy vẫn có những gia đình chưa nhận thấy vai trò quan trọng của bản vẽ thiết kế nhà và thuê đội thợ ở địa phương nhận thi công và xây nhà cho gia đình mình. Tuy nhiên khi đang xây dựng dở dang nhận ra những lỗi vướng mắc về kỹ thuật, nhận thấy những điểm chưa phù hợp hoặc xấu về thẩm mỹ và tìm cách để khắc phục. Có những lỗi sai có thể khắc phục được đơn giản nhưng cũng có những điểm chưa hài lòng khó có thể sửa sai. Vì vậy chúng tôi luôn đưa ra lời khuyên cho khách hàng đó là: Tìm kiếm một đơn vị tư vấn thiết kế nhà ở chuyên nghiệp để lên phương án cho gia đình bạn, bởi chi phí thiết kế nhà chiếm một phần rất nhỏ trong tổng thể kinh phí làm nhà. Nhưng giá trị nhận lại vô cùng to lớn: gia chủ hình dung dễ dàng bản thiết kế ngôi nhà mình trong tương lai như thế nào, mọi thay đổi trên bản vẽ sẽ đơn giản hơn rất nhiều so với việc công trình đang thi công dở dang. 

+

Thời gian gân đây chúng tôi nhận được yêu cầu tư vấn thiết kế cải tạo mặt tiền nhà phố rộng 9m cao 7 tầng của gia đình chị Hà ở Bắc Ninh. Công trình hiện đang xây dựng và bước vào giai đoạn hoàn thiện mặt tiền nhưng gia chủ nhận thấy những điểm lỗi kỹ thuật cũng như không phù hợp về mặt thẩm mỹ vì thế đã liên hệ với chúng tôi để giúp gia đình chị lên phương án thiết kế mặt tiền nhà 7 tầng rộng 9m ở Bắc Ninh. Dưới đây là phương án thiết kế cải tạo mặt tiền nhà phố mà kiến trúc sư Angcovat đã hoàn thiện ý tưởng trong vòng 1-2 ngày. Chị Hà rất vui mừng khi nhận được bản vẽ phối cảnh 3D và gọi điện ngay cho chúng tôi với những tâm sự rất chân thực: “Cảm ơn các em KTS Angcovat đã lên phương án cải tạo mặt tiền nhà cho gia đình chị, chị rất hài lòng với kiểu dáng kiến trúc tân cổ điển, sang trọng mà đẹp mắt. Nếu có cơ hội xây dựng ngôi nhà khác, chị nhất định sẽ nhờ Angcovat thiết kế ngay từ đầu để tránh xảy ra tình trạng thi công rồi mà không ưng ý”.  Cùng chúng tôi tham khảo phương án cải tạo mặt tiền nhà phố dưới đây và hình ảnh hiện trạng ngôi nhà đang thi công xây dựng của gia đình chị Hà để nhận ra sự khác biệt khi KTS chuyên nghiệp thiết kế.

+ + + + + + + + + + + + + + + +
+
    +
  •  
  • +
+
Khám phá sức hấp dẫn của các mẫu nhà cấp 4 mái nhật 4 phòng ngủ
+
    +
  •  
  • +
+
Mẫu biệt thự 3 tầng ở nông thôn làm say đắm lòng người
+
    +
  •  
  • +
+
+

Chi phí xây nhà 3 tầng 120m2 đẹp theo đơn giá hiện hành 2020

+
+

THÔNG TIN SƠ BỘ PHƯƠNG ÁN CẢI TẠO MẶT TIỀN NHÀ PHỐ Ở BẮC NINH

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
    +
  • Mã số công trình 
  • +
+
+

 NP218110

+
+
    +
  • Số tầng
  • +
+
+

 7 tầng

+
+
    +
  • Chủ đầu tư
  • +
+
 chị Hà
+
    +
  • Địa Chỉ
  • +
+
 Bắc Ninh
+
    +
  • Mặt tiền
  • +
+
+

 9m

+
+
    +
  • Chiều sâu
  • +
+
+

 18m

+
+
    +
  • Kiến trúc sư thiết kế
  • +
+
+

 Kiến trúc sư Angcovat

+
+
    +
  • Năm thi công
  • +
+
+

 2020

+
+
    +
  • Kinh phí đầu tư dự kiến 
  • +
+
+

 Khoảng 5,5-6 tỷ đồng

+
+

 

+

HÌNH THÀNH Ý TƯỞNG THIẾT KẾ CẢI TẠO MẶT TIỀN NHÀ PHỐ 7 TẦNG TÂN CỔ ĐIỂN ĐẸP

+

 Ý tưởng thiết kế là một trong những yêu cầu bắt buộc của một kiến trúc sư chuyên nghiệp. Ý tưởng thiết kế được hình thành dựa trên yêu cầu của chủ nhà, diện tích kích thước thực tế lô đất và kinh tế của gia chủ. Các mẫu thiết kế biệt thự đẹp hay nhà phố của Angcovat đều ra đời dựa trên các ý tưởng thiết kế mang lại giá trị về thẩm mỹ, không gian cũng như phù hợp về mặt phong thủy. 

+

cải tạo mặt tiền nhà phố phong cách tân cổ điển

+

 Bản vẽ thiết kế cải tạo mặt tiền nhà phố 7 tầng rộng 9m ở Bắc Ninh

+

Mỗi một ngôi nhà được định hình theo một phong cách kiến trúc riêng và xuyên suốt trong tác phẩm thiết kế đó từ ngoại thất cho tới nội thất cần đồng bộ để đảm bảo nét đẹp tổng thể hoàn mỹ cho ngôi nhà. Dựa trên sở thích và nhu cầu của gia chủ khi mong muốn cải tạo mặt tiền nhà phố 7 tầng theo phong cách kiến trúc tân cổ điển sang trọng, lịch lãm. Nhận nhiệm vụ thiết kế, yêu cầu đề bài rõ ràng cùng với quá trình khảo sát hiện trạng thực tế chúng tôi đã dần hình thành ý tưởng thiết kế trong đầu và thể hiện trên bản vẽ. 

+

Mỗi một ngôi nhà có thể theo phong cách kiến trúc hiện đại, tân cổ điển hoặc cổ điển. Mỗi phong cách thiết kế có vẻ đẹp riêng, đặc trưng riêng và phù hợp với sở thích của từng gia chủ. Kiến trúc tân cổ điển xuất hiện từ cuối thế kỷ 17 đầu thế kỷ 18 ở các nước phương tây và dần dần du nhập và trở nên phổ biến ở nước ta trong suốt thập kỷ qua. Chúng tôi là những người làm việc trong lĩnh vực thiết kế, xây dựng nhà ở, có một quá trình dài để nhìn nhận sự thay đổi và biến chuyển về kiến trúc nhà ở. Hiểu được xu thế thiết kế nhà và theo nhận định của chúng tôi thì các mẫu nhà phong cách tân cổ điển luôn trường tồn theo thời gian và không lo bị lỗi mốt. 

+

Mẫu nhà phố 7 tầng tân cổ điển là sự kết hợp hoàn hảo giữa các chi tiết HIỆN ĐẠI và CỔ ĐIỂN. Sự giao thoa giữa 2 trường phái đối lập tạo nên nét đẹp đặc trưng, sở hữu các ưu điểm tuyệt vời của cả phong cách hiện đại và phong cách cổ điển. Nếu như thiết kế nhà theo phong cách kiến trúc cổ điển sở hữu nhiều chi tiết hoa văn, phào chỉ cầu kỳ, rườm rà thì kiến trúc tân cổ điển sẽ vận dụng các nét đẹp uyển chuyển đó trong các họa tiết phù điêu nhưng ở mức vừa phải, tiết chế được sự rối rắm, quá chi ly đó. Đặc biệt khi thiết kế nhà phố 7 tầng mặt tiền 9m, do đặc trưng của nhà phố chỉ có duy nhất một mặt tiền nên cần có sự thông thoáng và vì thế cách vận dụng sáng tạo các chi tiết kiến trúc đều được chúng tôi cân nhắc khi lên ý tưởng. 

+

Tìm hiểu thêm: thiết kế nhà 5 tầng 60m2 phong cách hiện đại

+

Thiết kế mặt tiền nhà phố 7 tầng theo kiến trúc tân cổ điển cũng sẽ vận dụng được những nét đẹp tinh hoa của phong cách thiết kế nhà hiện đại. Không chỉ về các khối kiến trúc hình học không gian tinh tế, sáng tạo mà còn vận dụng ở cả màu sắc tổng thể của ngôi nhà. Màu sắc mới mẻ mang tới không gian sống phù hợp với cuộc sống hiện đại ngày nay. Kiến trúc hiện đại tập trung vào giá trị công năng sử dụng bên trong ngôi nhà, thiết kế kiểu dáng thoáng đãng, không gian mở, tiếp cận với thiên nhiên một cách tự nhiên và gần gũi, thì kiến trúc tân cổ điển cũng được thiết kế dựa trên những ưu điểm tuyệt vời đó.

+

 CÁCH TRANG TRÍ HÌNH KHỐI KIẾN TRÚC KHI LÊN PHƯƠNG ÁN CẢI TẠO MẶT TIỀN NHÀ PHỐ RỘNG 9M

+

cải tạo mặt tiền nhà phố rộng 9m sâu 18m

+

 Phương án cải tạo mặt tiền nhà phố rộng 9m sâu 18m sang trọng

+

So với nhiều mẫu nhà phố tại các thành phố lớn thì sở hữu ngôi nhà mặt tiền rộng 9m là điều đáng mong ước của rất nhiều gia đình hiện nay. Sở dĩ các mẫu nhà phố thường có tên gọi là nhà ống vì có mặt tiền hẹp và chiều sâu rộng, thông thường các mẫu nhà ống có mặt tiền rộng từ 5-6m và cách triển khai các mẫu nhà ống mặt tiền nhỏ thường theo kiến trúc hiện đại đơn giản, với mục đích giảm tải các yếu tố họa tiết hoa văn trang trí, tăng không gian mở, tận dụng tối đa khoảng không gian tiếp xúc với thiên nhiên. Vì thế khi sở hữu mảnh đất rộng 9m sâu 18m là không gian lý tưởng để thiết kế nhà phố 1 mặt tiền phong cách tân cổ điển.

+

Với chiều ngang 9m chúng tôi dễ dàng lên phương án thiết kế nhà theo kiểu tân cổ điển sang trọng và lịch lãm – đúng với mong ước của chủ nhà. Cách trang trí các khối kiến trúc khi cải tạo mặt tiền nhà phố theo kiểu dáng tân cổ điển là sự giao thoa giữa hiện đại và yếu tố cổ điển, mang tới nét đẹp tinh tế, lôi cuốn người nhìn.

+

Thứ nhất, dễ nhận thấy nhất khi cải tạo mặt tiền nhà phố theo phong cách tân cổ điển đó chính là các thức cột tròn dài xuyên suốt từ tầng lầu cho tới tầng 7. Trong thiết kế nhà cổ điển hay tân cổ điển, phào chỉ đóng vai trò không thể thiếu, nhưng để đảm bảo kết cấu vững chắc, sự trong trọng và hoàn hảo lại tới từ các thức cột giữ vai trò đặc biệt quan trọng. Thay vì các thức cột vuông vắn như kiến trúc hiện đại thì trong các tác phẩm nhà tân cổ điển thì yếu tố cột tròn mang lại sự bề thế, tinh tế và uyển chuyển mềm mại. Để tránh sự trống trải khi thiết kế các thức cột tròn, kiến trúc sư đã tạo các đường gờ kẻ chỉ xuyên suốt từ dưới lên trên và được sơn màu trắng toàn bộ. Các chi tiết dọc thân tường cũng được kẻ chỉ nhỏ tinh tế và độc đáo, mới lạ.

+

+ Thứ hai đó là cách trang trí hoàn thiện phần mái nhà được làm theo kiểu nhà 7 tầng mái bằng nhưng phần mặt tiền nhà được trang trí phần bán nguyệt vô cùng bắt mắt và thu hút người nhìn. Thay vì các khối kiến trúc vuông vức, sắc cạnh như trong bản vẽ thiết kế nhà hiện đại thì ý tưởng cải tạo mặt tiền nhà phố của chúng tôi sử dụng các chi tiết tròn, cong để xóa bỏ các nét gồ ghề, góc cạnh đó. 

+

cải tạo mặt tiền nhà phố 7 tầng tân cổ điển ở Bắc Ninh

+

 Bản vẽ cải tạo mặt tiền nhà phố 7 tầng lịch lãm sang trọng 

+

+Thứ ba, điểm nhấn tiếp theo trong phương án cải tạo mặt tiền nhà phố của gia đình chị Hà đó là hệ thống lan can ban công bằng sắt phun sơn tĩnh điện màu đen. Cách xử lý các khối hình kiến trúc lan can cũng khá thú vị. Tầng 3 và tầng 6 được thiết kế theo kiểu vòm cong màu đen thì tầng 2,3 và tầng 7 được tạo dựng theo hình vuông. Các khối kiến trúc vòm cong và vuông xen kẽ nhau mang tới sự mởi mẻ và muốn khám phá nhiều hơn nữa không gian sống của ngôi nhà. 

+

+ Thứ tư, hệ thống cửa sổ làm bằng chất liệu nhôm kính với mục đích tăng sự thoáng đãng, khả năng lấy sáng tự nhiên cho bên trong ngôi nhà. Nếu như các mẫu nhà phố chật hẹp ở các khu phố lớn rất thiếu ánh sáng do mặt tiền nhỏ, hẹp và chỉ có duy nhất một mặt tiền. Thì mẫu thiết kế nhà phố mặt tiền rộng 9m có nhiều cửa sổ, ban công như mẫu nhà 7 tầng của gia đình chị Hà sẽ mang tới không gian sống lý tưởng và hoàn hảo. Kính là vật liệu thu hút ánh sáng tự nhiên và có tác dụng tạo ảo giác không gian rộng lớn hơn so với thưc tế. 

+

+ Màu sắc mang lại hiệu quả tối ưu khi thiết kế nhà nói chung và nhà phố nói riêng. Nắm bắt được nhược điểm của các mẫu nhà phố mặt tiền hẹp nên khi lựa chọn màu sắc cần sử dụng các gam màu giản dị, giúp không gian nhìn rộng rãi hơn so với thực tế. Màu trắng là gam màu kinh điển giúp cho mặt tiền nhà phố trở nên khoáng đạt và mới mẻ. Các tầng lầu của ngôi nhà đều được sơn bằng gam màu trắng tinh khiết đối lập với gam màu đen huyền bí của hệ thống lan can ban công. Trong khi tầng trệt được ốp bằng loại đá trang trí màu vàng nâu vô cùng sang trọng và đẳng cấp. 

+

Nhìn nhận tổng thể các khối kiến trúc khi thiết kế cải tạo nhà phố 7 tầng dễ dàng nhận ra sự hài hòa về bố cục tỷ lệ cả về kích thước, màu sắc và ánh sáng. Các khối hình vuông, hình vòm cong đan xen vào nhau, các họa tiết đơn giản kết hợp với những chi tiết cầu kỳ cũng được thể hiện một cách trọn vẹn trong bản vẽ cải tạo nhà phố mặt tiền 9m theo phong cách tân cổ điển.

+

Trước khi lên ý tưởng thiết kế nhà, chúng tôi đã có buổi về trực tiếp khảo sát hiện trạng ngôi nhà đang xây dở dang và tiếp nhận yêu cầu đề bài của gia chủ. Dưới đây là những hình ảnh ngôi nhà hiện trang đang xây dựng của gia đình chị Hà tại Bắc Ninh.

+

Tham khảo: Mẫu nhà ống 3 tầng 90m2 đẹp

+

CUNG CẤP MỘT SỐ HÌNH ẢNH KHẢO SÁT HIỆN TRẠNG TRƯỚC KHI LÊN PHƯƠNG ÁN CẢI TẠO NHÀ PHỐ 7 TẦNG DIỆN TÍCH 9X18M

+

 Ngay sau khi nhận được cuộc gọi điện thoại của chị Hà khi có nhu cầu cải tạo mặt tiền nhà phố, các kiến trúc sư Angcovat đã về tận nơi để khảo sát và chụp ảnh, đo đạc cũng như tiếp nhận yêu cầu đề bài của chủ nhà. Tâm sự với chúng tôi chị Hà cho biết: “Trước khi xây nhà gia đình chị có thuê đơn vị thiết kế nhà ở địa phương, nhưng khi xây dựng lên quả thực ngôi nhà xấu và không đúng ý của chị, gặp một số vướng mắc về mặt kỹ thuật nữa, nên chị đã lên mạng để tìm kiếm các đơn vị thiết kế nhà chuyên nghiệp và tình cờ biết tới các sản phẩm của Angcovat. Chị ưng các mẫu thiết kế nhà của các em lắm! Mẫu nhà nào cũng có cá tính riêng, có nét đẹp rất riêng và có “chất” chứ không đại trà và chung chung như các mẫu nhà thường thấy. Thật may mắn khi chị biết tới Angcovat và lên ý tưởng cải tạo mặt tiền nhà phố 7 tầng giúp chị!”

+

 Dưới đây là một số hình ảnh chúng tôi đã khảo sát hiện trạng ngôi nhà đang xây dở dang của gia đình chị Hà: 

+

tư vấn cải tạo mặt tiền nhà phố đẹp nhất

+

 Hình ảnh hiện trạng công trình nhà phố 7 tầng đang xây dựng dở dang của gia đình chị Hà 

+

Thực tế ngôi nhà 3 tầng màu vàng là nhà cũ của gia đình chị Hà, sau đó nhà chị mua thêm đất ở bên cạnh và thiết kế nhà 7 tầng. Sau khi thuê đội thiết kế tại địa phương và triển khai thi công gặp một số vướng mắc kỹ thuật cũng như không ưng ý về kiểu dáng hình khối, chị Hà đã liên hệ với Angcovat để lên phương án cải tạo mặt tiền nhà phố 7 tầng.

+

hiện trạng thi công cải tạo mặt tiền nhà phố 7 tầng sang trọng

+

  Hình ảnh hiện trạng công trình nhà phố 7 tầng đang xây dựng dở dang của gia đình chị Hà (chụp tháng 11/2020) 

+

hiện trạng thi công cải tạo mặt tiền nhà phố lịch lãm

+

 Hình ảnh hiện trạng công trình nhà phố 7 tầng đang xây dựng dở dang của gia đình chị Hà (chụp tháng 11/2020)

+

hiện trạng thi công cải tạo mặt tiền nhà phố kiến trúc tân cổ điển

+

 Hình ảnh hiện trạng công trình nhà phố 7 tầng đang xây dựng dở dang của gia đình chị Hà (chụp tháng 11/2020)

+

hiện trạng thi công cải tạo mặt tiền nhà phố diện tích 9x18m

+

 Hình ảnh hiện trạng công trình nhà phố 7 tầng đang xây dựng dở dang của gia đình chị Hà (chụp tháng 11/2020)

+

hiện trạng thi công cải tạo mặt tiền nhà phố

+

 Hình ảnh hiện trạng công trình nhà phố 7 tầng đang xây dựng dở dang của gia đình chị Hà (chụp tháng 11/2020) 

+

hiện trạng thi công cải tạo mặt tiền nhà phố

+

 Hình ảnh hiện trạng công trình nhà phố 7 tầng đang xây dựng dở dang của gia đình chị Hà (chụp tháng 11/2020)

+

Ý tưởng thiết kế mới hoàn toàn sẽ rất dễ dàng cho kiến trúc sư chúng tôi, dễ dàng lên phương án thiết kế nhà đảm bảo giá trị về thẩm mỹ, công năng và phong thủy. Và khi phải lên ý tưởng cải tạo mặt tiền nhà phố, dựa trên hiện trạng ngôi nhà đang xây dở dang sẽ bị bó buộc trong khuôn mẫu cũ và cần năng lực và chuyên môn cao của các kiến trúc sư chuyên nghiệp.

+

Vì vậy lời khuyên của chúng tôi dành cho các gia chủ có ý định xây nhà đó là lựa chọn đơn vị tư vấn thiết kế nhà chuyên nghiệp, có kinh nghiệm để tư vấn thiết kế ngôi nhà cho gia đình bạn.

+

Angcovat là một trong số những đơn vị tiên phong hàng đầu trong lĩnh vực thiết kế nhà phố, biệt thự và có đội ngũ kiến trúc sư, kỹ sư được đào tạo bài bản, chuyên môn cao. Vì thế chúng tôi tự tin khẳng định thương hiệu Angcovat trong lĩnh vực thiết kế và thi công xây dựng nhà. Chúng tôi tư vấn thiết kế nhà trong khắp các tỉnh thành của cả nước, từ miền nam cho tới miền bắc, từ hải đảo cho tới đất liền và thậm chí có rất nhiều gia chủ đang học tập và làm việc tại nước ngoài cũng là khách hàng thiết kế nhà từ xa của chúng tôi. 

+

Hãy liên hệ ngay với chúng tôi để nhận được sự tư vấn thiết kế nhà chi tiết rõ ràng nhất!

+ + +
+ + + + + +
+
+ + + + +
+ + + + +
+

Trả lời

Email của bạn sẽ không được hiển thị công khai.

+ +

+

+ +

+ +
+
+ +
+ +
+ + +
+ + + +
+ + + + + +
+
+
+ + + + + +
+
+
+ + +
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/cache/wp-rocket/localhost/2022/02/13/kien-truc-su-tu-van-cai-tao-mat-tien-nha-pho-7-tang-rong-9m-o-bac-ninh-np218110/index-mobile.html_gzip b/wp-content/cache/wp-rocket/localhost/2022/02/13/kien-truc-su-tu-van-cai-tao-mat-tien-nha-pho-7-tang-rong-9m-o-bac-ninh-np218110/index-mobile.html_gzip new file mode 100644 index 0000000000000000000000000000000000000000..61e4d409856e56244f269f050cf69a30a2823a16 GIT binary patch literal 20178 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 z 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 + + + + + + + + + +Kiến trúc sư tư vấn cải tạo mặt tiền nhà phố 7 tầng rộng 9m ở Bắc Ninh NP218110 – Nội thất – kiến trúc An Việt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+ +
+
+ + + + +
+
+
+
+ + +

Kiến trúc sư tư vấn cải tạo mặt tiền nhà phố 7 tầng rộng 9m ở Bắc Ninh NP218110

+
+ + +
+
+ + +
+
+
+ + +

 Trong suốt nhiều năm làm việc trong lĩnh vực xây dựng chúng tôi nhận ra rằng ở thời điểm này đa số các gia đình lựa chọn thiết kế nhà trước khi bắt tay vào thi công. Tuy vậy vẫn có những gia đình chưa nhận thấy vai trò quan trọng của bản vẽ thiết kế nhà và thuê đội thợ ở địa phương nhận thi công và xây nhà cho gia đình mình. Tuy nhiên khi đang xây dựng dở dang nhận ra những lỗi vướng mắc về kỹ thuật, nhận thấy những điểm chưa phù hợp hoặc xấu về thẩm mỹ và tìm cách để khắc phục. Có những lỗi sai có thể khắc phục được đơn giản nhưng cũng có những điểm chưa hài lòng khó có thể sửa sai. Vì vậy chúng tôi luôn đưa ra lời khuyên cho khách hàng đó là: Tìm kiếm một đơn vị tư vấn thiết kế nhà ở chuyên nghiệp để lên phương án cho gia đình bạn, bởi chi phí thiết kế nhà chiếm một phần rất nhỏ trong tổng thể kinh phí làm nhà. Nhưng giá trị nhận lại vô cùng to lớn: gia chủ hình dung dễ dàng bản thiết kế ngôi nhà mình trong tương lai như thế nào, mọi thay đổi trên bản vẽ sẽ đơn giản hơn rất nhiều so với việc công trình đang thi công dở dang. 

+

Thời gian gân đây chúng tôi nhận được yêu cầu tư vấn thiết kế cải tạo mặt tiền nhà phố rộng 9m cao 7 tầng của gia đình chị Hà ở Bắc Ninh. Công trình hiện đang xây dựng và bước vào giai đoạn hoàn thiện mặt tiền nhưng gia chủ nhận thấy những điểm lỗi kỹ thuật cũng như không phù hợp về mặt thẩm mỹ vì thế đã liên hệ với chúng tôi để giúp gia đình chị lên phương án thiết kế mặt tiền nhà 7 tầng rộng 9m ở Bắc Ninh. Dưới đây là phương án thiết kế cải tạo mặt tiền nhà phố mà kiến trúc sư Angcovat đã hoàn thiện ý tưởng trong vòng 1-2 ngày. Chị Hà rất vui mừng khi nhận được bản vẽ phối cảnh 3D và gọi điện ngay cho chúng tôi với những tâm sự rất chân thực: “Cảm ơn các em KTS Angcovat đã lên phương án cải tạo mặt tiền nhà cho gia đình chị, chị rất hài lòng với kiểu dáng kiến trúc tân cổ điển, sang trọng mà đẹp mắt. Nếu có cơ hội xây dựng ngôi nhà khác, chị nhất định sẽ nhờ Angcovat thiết kế ngay từ đầu để tránh xảy ra tình trạng thi công rồi mà không ưng ý”.  Cùng chúng tôi tham khảo phương án cải tạo mặt tiền nhà phố dưới đây và hình ảnh hiện trạng ngôi nhà đang thi công xây dựng của gia đình chị Hà để nhận ra sự khác biệt khi KTS chuyên nghiệp thiết kế.

+ + + + + + + + + + + + + + + +
+
    +
  •  
  • +
+
Khám phá sức hấp dẫn của các mẫu nhà cấp 4 mái nhật 4 phòng ngủ
+
    +
  •  
  • +
+
Mẫu biệt thự 3 tầng ở nông thôn làm say đắm lòng người
+
    +
  •  
  • +
+
+

Chi phí xây nhà 3 tầng 120m2 đẹp theo đơn giá hiện hành 2020

+
+

THÔNG TIN SƠ BỘ PHƯƠNG ÁN CẢI TẠO MẶT TIỀN NHÀ PHỐ Ở BẮC NINH

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
    +
  • Mã số công trình 
  • +
+
+

 NP218110

+
+
    +
  • Số tầng
  • +
+
+

 7 tầng

+
+
    +
  • Chủ đầu tư
  • +
+
 chị Hà
+
    +
  • Địa Chỉ
  • +
+
 Bắc Ninh
+
    +
  • Mặt tiền
  • +
+
+

 9m

+
+
    +
  • Chiều sâu
  • +
+
+

 18m

+
+
    +
  • Kiến trúc sư thiết kế
  • +
+
+

 Kiến trúc sư Angcovat

+
+
    +
  • Năm thi công
  • +
+
+

 2020

+
+
    +
  • Kinh phí đầu tư dự kiến 
  • +
+
+

 Khoảng 5,5-6 tỷ đồng

+
+

 

+

HÌNH THÀNH Ý TƯỞNG THIẾT KẾ CẢI TẠO MẶT TIỀN NHÀ PHỐ 7 TẦNG TÂN CỔ ĐIỂN ĐẸP

+

 Ý tưởng thiết kế là một trong những yêu cầu bắt buộc của một kiến trúc sư chuyên nghiệp. Ý tưởng thiết kế được hình thành dựa trên yêu cầu của chủ nhà, diện tích kích thước thực tế lô đất và kinh tế của gia chủ. Các mẫu thiết kế biệt thự đẹp hay nhà phố của Angcovat đều ra đời dựa trên các ý tưởng thiết kế mang lại giá trị về thẩm mỹ, không gian cũng như phù hợp về mặt phong thủy. 

+

cải tạo mặt tiền nhà phố phong cách tân cổ điển

+

 Bản vẽ thiết kế cải tạo mặt tiền nhà phố 7 tầng rộng 9m ở Bắc Ninh

+

Mỗi một ngôi nhà được định hình theo một phong cách kiến trúc riêng và xuyên suốt trong tác phẩm thiết kế đó từ ngoại thất cho tới nội thất cần đồng bộ để đảm bảo nét đẹp tổng thể hoàn mỹ cho ngôi nhà. Dựa trên sở thích và nhu cầu của gia chủ khi mong muốn cải tạo mặt tiền nhà phố 7 tầng theo phong cách kiến trúc tân cổ điển sang trọng, lịch lãm. Nhận nhiệm vụ thiết kế, yêu cầu đề bài rõ ràng cùng với quá trình khảo sát hiện trạng thực tế chúng tôi đã dần hình thành ý tưởng thiết kế trong đầu và thể hiện trên bản vẽ. 

+

Mỗi một ngôi nhà có thể theo phong cách kiến trúc hiện đại, tân cổ điển hoặc cổ điển. Mỗi phong cách thiết kế có vẻ đẹp riêng, đặc trưng riêng và phù hợp với sở thích của từng gia chủ. Kiến trúc tân cổ điển xuất hiện từ cuối thế kỷ 17 đầu thế kỷ 18 ở các nước phương tây và dần dần du nhập và trở nên phổ biến ở nước ta trong suốt thập kỷ qua. Chúng tôi là những người làm việc trong lĩnh vực thiết kế, xây dựng nhà ở, có một quá trình dài để nhìn nhận sự thay đổi và biến chuyển về kiến trúc nhà ở. Hiểu được xu thế thiết kế nhà và theo nhận định của chúng tôi thì các mẫu nhà phong cách tân cổ điển luôn trường tồn theo thời gian và không lo bị lỗi mốt. 

+

Mẫu nhà phố 7 tầng tân cổ điển là sự kết hợp hoàn hảo giữa các chi tiết HIỆN ĐẠI và CỔ ĐIỂN. Sự giao thoa giữa 2 trường phái đối lập tạo nên nét đẹp đặc trưng, sở hữu các ưu điểm tuyệt vời của cả phong cách hiện đại và phong cách cổ điển. Nếu như thiết kế nhà theo phong cách kiến trúc cổ điển sở hữu nhiều chi tiết hoa văn, phào chỉ cầu kỳ, rườm rà thì kiến trúc tân cổ điển sẽ vận dụng các nét đẹp uyển chuyển đó trong các họa tiết phù điêu nhưng ở mức vừa phải, tiết chế được sự rối rắm, quá chi ly đó. Đặc biệt khi thiết kế nhà phố 7 tầng mặt tiền 9m, do đặc trưng của nhà phố chỉ có duy nhất một mặt tiền nên cần có sự thông thoáng và vì thế cách vận dụng sáng tạo các chi tiết kiến trúc đều được chúng tôi cân nhắc khi lên ý tưởng. 

+

Tìm hiểu thêm: thiết kế nhà 5 tầng 60m2 phong cách hiện đại

+

Thiết kế mặt tiền nhà phố 7 tầng theo kiến trúc tân cổ điển cũng sẽ vận dụng được những nét đẹp tinh hoa của phong cách thiết kế nhà hiện đại. Không chỉ về các khối kiến trúc hình học không gian tinh tế, sáng tạo mà còn vận dụng ở cả màu sắc tổng thể của ngôi nhà. Màu sắc mới mẻ mang tới không gian sống phù hợp với cuộc sống hiện đại ngày nay. Kiến trúc hiện đại tập trung vào giá trị công năng sử dụng bên trong ngôi nhà, thiết kế kiểu dáng thoáng đãng, không gian mở, tiếp cận với thiên nhiên một cách tự nhiên và gần gũi, thì kiến trúc tân cổ điển cũng được thiết kế dựa trên những ưu điểm tuyệt vời đó.

+

 CÁCH TRANG TRÍ HÌNH KHỐI KIẾN TRÚC KHI LÊN PHƯƠNG ÁN CẢI TẠO MẶT TIỀN NHÀ PHỐ RỘNG 9M

+

cải tạo mặt tiền nhà phố rộng 9m sâu 18m

+

 Phương án cải tạo mặt tiền nhà phố rộng 9m sâu 18m sang trọng

+

So với nhiều mẫu nhà phố tại các thành phố lớn thì sở hữu ngôi nhà mặt tiền rộng 9m là điều đáng mong ước của rất nhiều gia đình hiện nay. Sở dĩ các mẫu nhà phố thường có tên gọi là nhà ống vì có mặt tiền hẹp và chiều sâu rộng, thông thường các mẫu nhà ống có mặt tiền rộng từ 5-6m và cách triển khai các mẫu nhà ống mặt tiền nhỏ thường theo kiến trúc hiện đại đơn giản, với mục đích giảm tải các yếu tố họa tiết hoa văn trang trí, tăng không gian mở, tận dụng tối đa khoảng không gian tiếp xúc với thiên nhiên. Vì thế khi sở hữu mảnh đất rộng 9m sâu 18m là không gian lý tưởng để thiết kế nhà phố 1 mặt tiền phong cách tân cổ điển.

+

Với chiều ngang 9m chúng tôi dễ dàng lên phương án thiết kế nhà theo kiểu tân cổ điển sang trọng và lịch lãm – đúng với mong ước của chủ nhà. Cách trang trí các khối kiến trúc khi cải tạo mặt tiền nhà phố theo kiểu dáng tân cổ điển là sự giao thoa giữa hiện đại và yếu tố cổ điển, mang tới nét đẹp tinh tế, lôi cuốn người nhìn.

+

Thứ nhất, dễ nhận thấy nhất khi cải tạo mặt tiền nhà phố theo phong cách tân cổ điển đó chính là các thức cột tròn dài xuyên suốt từ tầng lầu cho tới tầng 7. Trong thiết kế nhà cổ điển hay tân cổ điển, phào chỉ đóng vai trò không thể thiếu, nhưng để đảm bảo kết cấu vững chắc, sự trong trọng và hoàn hảo lại tới từ các thức cột giữ vai trò đặc biệt quan trọng. Thay vì các thức cột vuông vắn như kiến trúc hiện đại thì trong các tác phẩm nhà tân cổ điển thì yếu tố cột tròn mang lại sự bề thế, tinh tế và uyển chuyển mềm mại. Để tránh sự trống trải khi thiết kế các thức cột tròn, kiến trúc sư đã tạo các đường gờ kẻ chỉ xuyên suốt từ dưới lên trên và được sơn màu trắng toàn bộ. Các chi tiết dọc thân tường cũng được kẻ chỉ nhỏ tinh tế và độc đáo, mới lạ.

+

+ Thứ hai đó là cách trang trí hoàn thiện phần mái nhà được làm theo kiểu nhà 7 tầng mái bằng nhưng phần mặt tiền nhà được trang trí phần bán nguyệt vô cùng bắt mắt và thu hút người nhìn. Thay vì các khối kiến trúc vuông vức, sắc cạnh như trong bản vẽ thiết kế nhà hiện đại thì ý tưởng cải tạo mặt tiền nhà phố của chúng tôi sử dụng các chi tiết tròn, cong để xóa bỏ các nét gồ ghề, góc cạnh đó. 

+

cải tạo mặt tiền nhà phố 7 tầng tân cổ điển ở Bắc Ninh

+

 Bản vẽ cải tạo mặt tiền nhà phố 7 tầng lịch lãm sang trọng 

+

+Thứ ba, điểm nhấn tiếp theo trong phương án cải tạo mặt tiền nhà phố của gia đình chị Hà đó là hệ thống lan can ban công bằng sắt phun sơn tĩnh điện màu đen. Cách xử lý các khối hình kiến trúc lan can cũng khá thú vị. Tầng 3 và tầng 6 được thiết kế theo kiểu vòm cong màu đen thì tầng 2,3 và tầng 7 được tạo dựng theo hình vuông. Các khối kiến trúc vòm cong và vuông xen kẽ nhau mang tới sự mởi mẻ và muốn khám phá nhiều hơn nữa không gian sống của ngôi nhà. 

+

+ Thứ tư, hệ thống cửa sổ làm bằng chất liệu nhôm kính với mục đích tăng sự thoáng đãng, khả năng lấy sáng tự nhiên cho bên trong ngôi nhà. Nếu như các mẫu nhà phố chật hẹp ở các khu phố lớn rất thiếu ánh sáng do mặt tiền nhỏ, hẹp và chỉ có duy nhất một mặt tiền. Thì mẫu thiết kế nhà phố mặt tiền rộng 9m có nhiều cửa sổ, ban công như mẫu nhà 7 tầng của gia đình chị Hà sẽ mang tới không gian sống lý tưởng và hoàn hảo. Kính là vật liệu thu hút ánh sáng tự nhiên và có tác dụng tạo ảo giác không gian rộng lớn hơn so với thưc tế. 

+

+ Màu sắc mang lại hiệu quả tối ưu khi thiết kế nhà nói chung và nhà phố nói riêng. Nắm bắt được nhược điểm của các mẫu nhà phố mặt tiền hẹp nên khi lựa chọn màu sắc cần sử dụng các gam màu giản dị, giúp không gian nhìn rộng rãi hơn so với thực tế. Màu trắng là gam màu kinh điển giúp cho mặt tiền nhà phố trở nên khoáng đạt và mới mẻ. Các tầng lầu của ngôi nhà đều được sơn bằng gam màu trắng tinh khiết đối lập với gam màu đen huyền bí của hệ thống lan can ban công. Trong khi tầng trệt được ốp bằng loại đá trang trí màu vàng nâu vô cùng sang trọng và đẳng cấp. 

+

Nhìn nhận tổng thể các khối kiến trúc khi thiết kế cải tạo nhà phố 7 tầng dễ dàng nhận ra sự hài hòa về bố cục tỷ lệ cả về kích thước, màu sắc và ánh sáng. Các khối hình vuông, hình vòm cong đan xen vào nhau, các họa tiết đơn giản kết hợp với những chi tiết cầu kỳ cũng được thể hiện một cách trọn vẹn trong bản vẽ cải tạo nhà phố mặt tiền 9m theo phong cách tân cổ điển.

+

Trước khi lên ý tưởng thiết kế nhà, chúng tôi đã có buổi về trực tiếp khảo sát hiện trạng ngôi nhà đang xây dở dang và tiếp nhận yêu cầu đề bài của gia chủ. Dưới đây là những hình ảnh ngôi nhà hiện trang đang xây dựng của gia đình chị Hà tại Bắc Ninh.

+

Tham khảo: Mẫu nhà ống 3 tầng 90m2 đẹp

+

CUNG CẤP MỘT SỐ HÌNH ẢNH KHẢO SÁT HIỆN TRẠNG TRƯỚC KHI LÊN PHƯƠNG ÁN CẢI TẠO NHÀ PHỐ 7 TẦNG DIỆN TÍCH 9X18M

+

 Ngay sau khi nhận được cuộc gọi điện thoại của chị Hà khi có nhu cầu cải tạo mặt tiền nhà phố, các kiến trúc sư Angcovat đã về tận nơi để khảo sát và chụp ảnh, đo đạc cũng như tiếp nhận yêu cầu đề bài của chủ nhà. Tâm sự với chúng tôi chị Hà cho biết: “Trước khi xây nhà gia đình chị có thuê đơn vị thiết kế nhà ở địa phương, nhưng khi xây dựng lên quả thực ngôi nhà xấu và không đúng ý của chị, gặp một số vướng mắc về mặt kỹ thuật nữa, nên chị đã lên mạng để tìm kiếm các đơn vị thiết kế nhà chuyên nghiệp và tình cờ biết tới các sản phẩm của Angcovat. Chị ưng các mẫu thiết kế nhà của các em lắm! Mẫu nhà nào cũng có cá tính riêng, có nét đẹp rất riêng và có “chất” chứ không đại trà và chung chung như các mẫu nhà thường thấy. Thật may mắn khi chị biết tới Angcovat và lên ý tưởng cải tạo mặt tiền nhà phố 7 tầng giúp chị!”

+

 Dưới đây là một số hình ảnh chúng tôi đã khảo sát hiện trạng ngôi nhà đang xây dở dang của gia đình chị Hà: 

+

tư vấn cải tạo mặt tiền nhà phố đẹp nhất

+

 Hình ảnh hiện trạng công trình nhà phố 7 tầng đang xây dựng dở dang của gia đình chị Hà 

+

Thực tế ngôi nhà 3 tầng màu vàng là nhà cũ của gia đình chị Hà, sau đó nhà chị mua thêm đất ở bên cạnh và thiết kế nhà 7 tầng. Sau khi thuê đội thiết kế tại địa phương và triển khai thi công gặp một số vướng mắc kỹ thuật cũng như không ưng ý về kiểu dáng hình khối, chị Hà đã liên hệ với Angcovat để lên phương án cải tạo mặt tiền nhà phố 7 tầng.

+

hiện trạng thi công cải tạo mặt tiền nhà phố 7 tầng sang trọng

+

  Hình ảnh hiện trạng công trình nhà phố 7 tầng đang xây dựng dở dang của gia đình chị Hà (chụp tháng 11/2020) 

+

hiện trạng thi công cải tạo mặt tiền nhà phố lịch lãm

+

 Hình ảnh hiện trạng công trình nhà phố 7 tầng đang xây dựng dở dang của gia đình chị Hà (chụp tháng 11/2020)

+

hiện trạng thi công cải tạo mặt tiền nhà phố kiến trúc tân cổ điển

+

 Hình ảnh hiện trạng công trình nhà phố 7 tầng đang xây dựng dở dang của gia đình chị Hà (chụp tháng 11/2020)

+

hiện trạng thi công cải tạo mặt tiền nhà phố diện tích 9x18m

+

 Hình ảnh hiện trạng công trình nhà phố 7 tầng đang xây dựng dở dang của gia đình chị Hà (chụp tháng 11/2020)

+

hiện trạng thi công cải tạo mặt tiền nhà phố

+

 Hình ảnh hiện trạng công trình nhà phố 7 tầng đang xây dựng dở dang của gia đình chị Hà (chụp tháng 11/2020) 

+

hiện trạng thi công cải tạo mặt tiền nhà phố

+

 Hình ảnh hiện trạng công trình nhà phố 7 tầng đang xây dựng dở dang của gia đình chị Hà (chụp tháng 11/2020)

+

Ý tưởng thiết kế mới hoàn toàn sẽ rất dễ dàng cho kiến trúc sư chúng tôi, dễ dàng lên phương án thiết kế nhà đảm bảo giá trị về thẩm mỹ, công năng và phong thủy. Và khi phải lên ý tưởng cải tạo mặt tiền nhà phố, dựa trên hiện trạng ngôi nhà đang xây dở dang sẽ bị bó buộc trong khuôn mẫu cũ và cần năng lực và chuyên môn cao của các kiến trúc sư chuyên nghiệp.

+

Vì vậy lời khuyên của chúng tôi dành cho các gia chủ có ý định xây nhà đó là lựa chọn đơn vị tư vấn thiết kế nhà chuyên nghiệp, có kinh nghiệm để tư vấn thiết kế ngôi nhà cho gia đình bạn.

+

Angcovat là một trong số những đơn vị tiên phong hàng đầu trong lĩnh vực thiết kế nhà phố, biệt thự và có đội ngũ kiến trúc sư, kỹ sư được đào tạo bài bản, chuyên môn cao. Vì thế chúng tôi tự tin khẳng định thương hiệu Angcovat trong lĩnh vực thiết kế và thi công xây dựng nhà. Chúng tôi tư vấn thiết kế nhà trong khắp các tỉnh thành của cả nước, từ miền nam cho tới miền bắc, từ hải đảo cho tới đất liền và thậm chí có rất nhiều gia chủ đang học tập và làm việc tại nước ngoài cũng là khách hàng thiết kế nhà từ xa của chúng tôi. 

+

Hãy liên hệ ngay với chúng tôi để nhận được sự tư vấn thiết kế nhà chi tiết rõ ràng nhất!

+ + +
+ + + + + +
+
+ + + + +
+ + + + +
+

Trả lời

Email của bạn sẽ không được hiển thị công khai.

+ +

+

+ +

+ +
+
+ +
+ +
+ + +
+ + + +
+ + + + + + + + + +
+
+
+
+ + Facebook Messenger +
+
+
+ Chat với chúng tôi qua Zalo +
+ +
+
+ Gọi ngay +
+ + + + + +
+ + +
+
+ +
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/cache/wp-rocket/localhost/2022/02/13/kien-truc-su-tu-van-cai-tao-mat-tien-nha-pho-7-tang-rong-9m-o-bac-ninh-np218110/index.html_gzip b/wp-content/cache/wp-rocket/localhost/2022/02/13/kien-truc-su-tu-van-cai-tao-mat-tien-nha-pho-7-tang-rong-9m-o-bac-ninh-np218110/index.html_gzip new file mode 100644 index 0000000000000000000000000000000000000000..565aeb644565debcb9caf76b9904a506aed0cfcd GIT binary patch literal 20335 zcmV(|K+(S+iwFP!000006Yafga~#K&Ao`hz*#D4f1`WXK>h9_nx&Z-y0GEbg7uRNJ~^OZNhy1Vy(+oD<9at<%~bn zv>dR(LSTb409%_t39R1wpTDwp=dJY*cks>59N2Tk*_?Q@Nh1g+&7-m3)b;XL zP>Yda?iW6D1JiJ)K@>NSJU5(~joEZY->zI+xfwgLYwx_{ymbT+8!w)HX0p4EKV^6Cwe^9nx7e4i58ArE#qL5$06PU7ar$syt;Q{%y$_iF zGQQd5l~h_9#mBB4O>H}#+t$OGW(Iz2`*G7W%&Fb<93Wb=J+Lfe+#XpQz3ztHHLZa@ zFpW;9+ind8#zv=MMp2Dt5AT4e&+ z_Nr$bX^v-1Y;6|W2abKX=^Ek0UM+lB!&kE)gcit8Yln^%Pq!`j%Ct4QsWU(vJBF)8 z&@g*juQPz}c!?(;V1+WutXh7Ac*k~ZPFFc?R+~-J@*9sL%XXcEu;JS=ugqy*jiFvq zV-f@t*EVKO)Gz~Yxi6!}Au?*AFwir$L*IyjvE$3@T*owGC-9qL6uk-z3a_xY zw`*^n`~p}ho}T;)|2Tf0WwbfW!oCz5-$;V3xqLCUZL3+kc*TJ8pMC5z;QzmIE~#oj zUJv*nx`aBOsY2}K4gWIj=2D~GYPXxMc2n;(_Z{2U;xI9_DAD3XJ1~6BG#o890?jjG zEynl$)X-+rK-+-FAdSNSehob>&_E<=KGZ_xkelXp4|jJ zU_-w>ikjv$@%Le%Bz~OC8e_X{>MgwwgYPQQMX_VRjNZWL_j(&wj5Q7d zH+E)GqdnBST~jx&7~cUX(;x(K6U-98It2M`8oif=HFANvVPo8~+UCd{N~|k4Nf(JB z8QVuNj6s9!tT^7J0cau*^!Ra|Zf!4k?M# z1tB2X1WTg)=17aCh7}xEy`9?5WEyWW-S+Y?NRd=L_dqQ<{w8a&R-?61e0yMrz*V4l z4A+@JDXrBgK|o_;5(2MVRTY{U7TQIKKz;sXdwk$7zFWSO@prt3zV})-3XoP2I1!QR%^o?8C%t_H7%TsHd}SQ z-L30`{=8C_5$@ZerneAWe`M&V7EA%RHtKr+wDN5N+%pCnrxuiehXA|NQ;Tz6;iiH% z4$LIlY|oCKyiWEDThk8h(Y_O-^`Z%@V&)v#t`?%!*le%Y*YH(nM}eE59@*4~ZENPN zKQ7U?0+Zh80j?)XQM3eL^k^Dd4j_)cX=|Dvgr4DU>iyZ#*4#qVWMXf2vFZekHKslh8QUGH&ApdR%<4dEK_{5(FgU(f~R-{6Wp(G z6Wq+{lZF%9UZg!rz~mb{!2eVqetRr!n$59mgQXA~VO;(|z$|_un_Dc-n^K7YT2n3` z%?!{oBRf6>u~zyn_x4F6GD-Ns7(?BH^m;6;pVpS?Iq4llGhr%|3ueXHNqv3S`0(f7!ECOLUCjZWifUWg%hagm zbf6beXl}A3bl1+|0YF8Xgrq64HS8dM?O?mp(0h%}dWL~6u3ajc>yABkjxuCyjQtd^ z)ogEM1FwSOn*mTDTW!65+4v8G@wi=qo1R|*zBnFNU;}^OzQP91Y2OuKiw-6!vg`6` zh814dI5Vl^MhUTH!OqqEFyfIpiqi36v@mjqReOz(pzU|Tyt&c2C3O0Y_U=Zj1;4xW z8?QHZ-!yy^B*Lrr&Cr>}xx!HFOV`0fkdkLRIy7ed2?$hZ>991SMMQPga9ti0%%nmH zqZM?t3&tWw(ih8xM(DcQagfBx2z(j94XP}a)j%x}QwO$`X5h5MV8(6s`i*wyhLnY^ zlGw+Htq||f^sOfqNSHGY4bOgD)(a>NTU@rbwiGB*<>0j<9=88wgEm2`kmAtr1;9o(V$hXaniqVt z>UsImyoPR0u{Rz|9AgKgoSP%6sBcHn+D7ljdgaFr{QFqcd!wByB)a6f4roBi3jT76 zk-4;~b^56xpkV?2piC~MuTB#OGdBTf5kBG!Ed>I!u_g>a}SL8i1ix7VkJ!j1`|fjej8EkLS2x%ssGd>3k0 ze#^CK?(U7_J!5hgq{rGSmReo^p!H#$8#~Ge7*>jH@y!~y@K)Ei=x+mw1BElQM?9zB z_mP0u%sqIEr8Y-k0fu&c(->2%KzQ1PaQx~P)}{d?8NBx0spDE}1P*Z8@t)(^prO{r ziBF-3we`nTIa4ZCRU`_h^f|hZIsp66wU3;U;{q!csIH_?D7=Iw^fFwN z%#cr`RO*^x02HvaTX(g0Z|!QG_ED#eTDiv1V~)0K^rR>zE(x1HY#+f-4xe~d5==9U z(Z)eyPPNOzK4=}m5650eMerg;#A|zwYu~{H21V;#0C9Vxbp$^d;?(r7nMnjju0|rD zIDy9FnU67s=Xf|D#3LT;dbite4Z2{ZPkE39g9*|MWN7?7x$Xv&fUIb=jmxhdb3<{^ z0i#b8HXdhY^q_^$C3tR#KgKzbbcPKIr0>Cg%)M;WOOl;45H>!>WGgD#DHW@(H7`f; zMWyVkVEtl-30YN}V<(JaEf{M^!+J&G>xi1|s2?pVW;qAT7UqRS12HBx1M59k9~I7H z>6oF>&H5^x8(^&*YQTLk@B`PagS1P`{Yu(xz<0Tr8BX|P5t=xG6?%`EoEYU! zpX~1m=QLIh*|BgkGS=F?US0mQ8pHJhr&N7+eXQeu(BHuf)OM)(22$8{;Fs}O4aYH@ zCu2F@W{p!zmua==qh1R?l5>O^-?LtKI6GQrkE=&kYyQZ>S5FY5X2ICEf1rAd}w$6<*2V<(&r|tT*Q=fM0 z(_VeruM>rF=wabHYXsvln410pjB6hHC-7+s30}(#fQ*guLD-7MorbqDGJJ5U7?evd z+f_6G%bdO_pcFwV#)DEt%H}^(dR=9m=9k$nsU5a^|33S2vmw2G_%uK|q!Tfe(y*1u z499jYR$%OWZo|CPjVBG)7}>7o+lLLX_!13gO^~7mqpfz=KCGpsr$M~9^z9(dN=F8m zhzpC~hZ0$N%%TBnc=0Fqc%fQm++Vv^o$x~X9F2lZrSD)&vw`Ld_7G+tgpCf5Ky`l?mc_1HBm9rQPvcrF4Q$bKYGw+BB4gPtVMjG7DguVPy{6$z zzeY1^R7l1(!TS?6$r6+>t4MG6z=wbf{uk8eS_@yWCL17(IUPi_MqUvV?GLak(gY`Q zTS%hP1V2@C&3rDa(AL%f)Qz5|V&y5Gr8S|Y2luL*+~`E*R`C#Lv27K20cpR}t{@92 zT>L}?N0|~G)mws$qi<^2NXD|N2pk2jg*C<5Jf&k3wAM@`vN;Gb5e;(3L*L`jM>si) zt=E!cBE`igh*={!;`q^rdH4{2gOZtBimX8dU+R}^>UygrD;O&d{t#@&5cFe6Z2;Mn zW|m#M=?AHknmQcCxduOY6meNq5n-;g4=DE=OKafaewdr0&&l^R^wG?)HhIGT%1tyx zXjldZZR}WDyWNwIc~A#w<6A~(v2g-5rV+v@ zJqZRMQ%x+5(qw2f)+nTG$Vx=}&Wt*Wm8Ywvr%C30ZRb7|1wkQ&-OZ+fEkXx@r(mdwFVT8K z{8)zZkI)a0<`-FCp5eNTF6q}S47^z!X(&H{@90@NXmfZ77g%YM1h`Ozt72Mo^ALyu zBznl}2Ll45h_bK>@z!1T?u%z1?J|w+O))DxX8Z7)`D#A7IZcjF{>f+lWQuv@Gvs~* z2t4mPJ4%I`iJQ`}2}A@wIV(jubxxz{rP1(mD^F5S#Zjob>JDPPxRktnP7os^3QSx{ zLi5kebF~%@B(*iU0%LH)LA>%j3$_E|BNu~8LY&pXe6M)B_Hg7H{=Qf%L-yr%?QO%f zM?nBjDWv5Gn6ZGJ6kv9C7}6z2k}cB$WDH~@IIv^!ITLB-=@io2^a+E483rSCGQ8#Y zJ2xE_gEme-1eSGnP^vA}yd@f-KURC?RY!Po4v`~Ri-NdXwv5ijl>Dd~o zwqWnjiE;RyuM1hsKVQ(m6hU?KklO}<5MY5bXJ(1Oa- z$EB*@w|$Ex5i@)ypsO`6y)9PU_Q9DCW@^Prwk$0<7ly5 zy(R`Ex*pv4LzjmyhphElt(tJ3#SKk2;i%rEg_h0eV1kqW^&6dCxV+JB!HplK6W)i1 zhmFGyrB1ZLv%})6PzV=bz7ZU4ueRU@e|qxw>W$7@01FGkRiX1A61_w}bBY^od?wPQ zB8fW|XPaK((<(Hb(%ezJoYN_GPAr$-{ASKk!ixWn_B9`!54%0r%LUGw^447-NaTNH0cdR@Q zMvrVW)=VR|CqbybL1r^C`y#Y`rs7dFDm zrt&&ErWhcq?Ywd4#qarJ<-$_=7**tWGnW{% zOi#VlxnzPO#4{1aH4+elPP4Z2?#Xw)&OZPC$+zxsquq7p)VY1>b#9-n&hmm1#|{$c zD4jCLn)%LTcWOYab1=?-AieZnS?moL;+|R-KGsLTbMqj??n1XuB3Q&y4>nA!^Hgj zOB7!sIdY!#A|Ag7H2wZdmR;@cWy>yvcovGtw9%BqGFnvdS7j3}hpX}s&(nl%MH9Nq zHKF%AH87w)VhEgz4!sIG^v)_OE{7tg5BA<=j`F|(X=%iBhxv==Ke&Uk^VvV{z3hSB zyYzwHTXLXFqR0y^v*mIWVL2Oa;dtrwFTFASb2cWG?D@7R5`A$?E}PF0;`v&F`^Zc* zv(zoSx4(Y(D{S|R&rWH{#-+DpU8p4rJ?G>IXmP_z7Dre4z=hg^TEMv1D@7?cllDGj-) zSSq6yVabvF5>q`=WK;$hRxn3ytN|=RweswE8d$iFEv}UT*T@zL{K|MgpNZgwOO;FK zHDo1}jErIrt3jJG-oG7Ab@RN4|a{+tM3p;BxXs3Q>(67;a)?XbeXi+|OLY zw5Nd!MBT3Ko&3z>5lQG8+FuU0nft_RG#Y%TOpIy~+s>&fZ^X5mqa=<4U)C-ec}_;X ztPl7L#{X#Io5+Sc`I`Bgd8eIc&%WvNP>{LLhqX#TD}d+B$nD5+7Cz6 zF|;EP5D}xqFN%A86UTgQC!Ov>K9JL1*V3owi~5Ne?%9PvWf1oiAy5&;<%53dLCo@_ zF*W_<;LVw-a|~WSGL#^2elj@6*l8TMI47LzZytEPmY=0P)h=b%{wS*cD60N96;;<% zTWoo`r6vK)O|DRq0oBK7I9a$=8&2}4*^IR`nL|l0P*V!>V~bWA$-IEELz1Dg6is}} z5*))EXt-`ESB_IF?FpWgYKJ0WlWZoQ=ivA$mdg|kXl|!#V!O)MGwV}f zKqcR!OH72DPx&j|P=Y!QGbKGrn!Xu3o?RdY^e7X94L3}{dn~nG!-{FGwx)OX^zLS_ zv)S#w+G=g$jE~-7d()GrK>gc>Q)gHbH+lE$JceY3(5iv<_F5a8dRqnBn+uef3TeEP zqx9$)ox|D=8y&OU3+yb-NWdZq*?|dSgM4gRs}L*&V5zxlviXNi+BdaX+o8W|75E=T zCQD6UQ1+a_T=?g$mjwg+D%nA3a3#@bpr)VPQFsJBo@I5GLeZ9Cm zoNAUfUY)QthmJ3&Qs*XN zInSra!Xv|iujR5c%y%bs&7}st)Pf}Dqj07CCD*CdB9dUhuVWM^a%hdh1!X;;+>~W* z*xs})zFWDL%m2)q->Jz|H9AFaq)T^@Jp5pdnaph6`I0}1W?Ord(wbwB?E^w7bJ=l^W7qmv&UGYc*;M|OJh3=cy%`IQ48UOfBM zXQ2U#>>0j9Ef#}{`=P@=|7(B-ko}X7j^V}tCj&H}dGgd`6UTrjCqD!DE&#=oNM1bu zo}bUoBy|~wU;O;V^M5ee{?uV3P>-NZjbnCj@=<`L0o-PLJsFH%roPP0hLspv7$lwFRK{fsh_Kn0qg^m@0M!tCd69W-~TLd8grJ`yFSiNa- z@=pL==A}LVm?(e`zH5N4|KjIgpe{%;iVD-WL{oxff}N+-(!<}pP0&S{po)zL3c`nK zM_7o;GBWs~kv1C0`tKcfK*WPvj|>aw%Wp#ip8p2x4PV6d0xjg%vgtC)yoX2Py4rXvdi zy7(+*C9o}u`~qD1)UU&z=l>Zf39JGg_GtwUbE;Mho&BHqIBtI&69NBUG4A6R&;O3j zJfZGDTa@6DfIv76c9+wC;+#CC0rOqSMlRF@xbEavKrA$!ArhN|wqH#>b`#T!iKt5$4 zNBAqpPE)*=bl@T}3b4!m!I2V?k6M6*_245h8_elAY@})bT-x4j&UR1+?{R?$Gyt3@ zKSIXBVO$|dQ+@|VNYIn`Niv6R1O|a`37?}-x6JV{jUe+!xZKN$Ozhv=f<-e21xK<% z6XICELP()Z7zr6pQX62SFbj}rL7qVGQ@il%Ld^w}Nyb?$s<VNm{^V052$8=0hb3U(pz;j`b&NXN$@oZ;()be;LdQ)FGROw<9X zh*eTzvT8ohswdM0s!d`NiTcBg90l=*Ho$ z3eAv?tnzp*@BxkXlYgO((YG4BtE3!-9@{02qINupd5`RckAt)H59fU=HXn}6ECnV#CtJJ3`Q#Zx;-?K5B(F%;3#o?<+$#mO^Eo6Kp{lw+YO2gkI{H-YH(qy1L*$hF$GZjH@J z&)3~!D;j)bqkm-B38tN3&I#MQbC=!!;v>+w&ws$~-TvaUFFt~&C*QuyKui4S4#tK* z`YMBN{{Qx%?2G5$x~t@YK^Olg)YboWm)*T{_cr+JZ8=WG);Qa>UTxu!eGhbvaFH{^ z>a>pL@3UZWkt}62_Ynmr{Apk}(sHMR-6b1Mr~)t&s$p}usaQM(=I7rhHyT0z)gpMA zjdTjY_Y`GtTH}Y_a?KVF!^w}5(;(`Dr9hUa78C_=8jjM(Qh6_f`7Q>6Qq^`EDn1sM zX^(UvGwvXbDJ-4kSo|FfJ$ww~qF3)}eKb6NO-l7|s@StE3}!i(367{~eSS&;OQv{(UF~H^9Kp{{MSI z7|1FBvdoB9Eh;qVxo^&GYiZIdz95f)jS?tj3bo0uUE;1>kfDyjweP|=?#agYu5jl3BPN= z9IEDRe{Z<*!=j?St1Awac)f@J4RpgJ;~xX@UOG6+aAbJ3GG8px9& zk&1fTki2NIb|HG0p=yqDNGW^L23u<$6%KQz^Mrv0`HH`h4CWi9!=DiUKbT zf0|>Ta`^`J{U>j8314weMreD`?`4KOzT_{oK887`Xv|w^-3N}AB(!!-^LZo~isB+Z zf7S!{XhTLh%l+AtJ&6!`MdyyyEV7An#tUZ)i-HeF>M28pyO`yHllDof^;ByYy>uMD zoXzH1AylbcW58zM%*6STloheaKA-2yTSj~m8Aha;bBkjcB&g?D%_F1h7k<7WWJjPd zgx3i+^fNPWt&5?e80qh2B|Wl*JhY_9f#=SGS{V$^mL`#LPMC*d#Ou8DrCCwt8^;9` zDqkw*>LE<{m1*xh08V2JN7zW5Kj@aztI_vHV+d-jIRTjV{0IojB{3;z8W;@0nWaF(lin{Lg1G?ROQhQT z(96BE&Pi9`QvGlV{eF<>6CV8~_J{?u^hfGhMhrP-x5 zD68$fUQpB2>Y~#_$iQtv`U2{P}OQo z>KYSx_vIW+UPY7AIKtXj=nS4=DIET(qw<}{b1lT2Kn3%=nO8`tTs5jA(oN^>L>2DLCp9T1SIPY3_Mc0x0!2l$xC{kN8fu>9 zC&J^Y^R6l-4I-_RS(wfPBk5Y6SGp-O?CLL?gnim=~Z9t=)n z)Z+0*gHgu*5)KZgW2E^UQq|3KO4KGu=gQc@a8pITnd-7*bCDTk&iuZVso7Xe>e7L( z2&D5Uj49K{KjZEJnBR5bfAZ+QG9=VkjVp|0P9cmjmZ(jfm(@?W%EIGTGyH+FQ(8#y zvkE8&3D44pn)xDubb;}X>Qsp0nqq(h zWcRmmZjqcX%$-QH@dRzTM#7N#$4)u?Fo$*P<+)`Fx+_jUH{wyDO)y_@AAKm!FBKdw z6YpH^zex8X3#6dRBM%NMN-3Sh0ysCrMVuOBu*hYMd6H+U*z>N1QXip!b7Z8|8>CU6 z@(l8Spm^QWRII$pxL}zYPMYeU8UU%R&1cGr?0S*ArnZkl$*Nq5z1g0K?RU6K&#b%~Zq_ zX-F(wLQ^r2R29FBj4ns1RVTR^lM)Jwc1~T_iS~|0Y@xY0HSQXhFcE)#v{z2arDo;NgkLofRqHX& zl&^AmH8SdH#DpxL)L7^9FEl=vN}OIkz$#1*bwXO^+bqnE7E+Z~TA&U>Mde~%4E&7n zFUcAq7b6m1vuWaUZ4uL4oLnS8y5sY|2J=T4#78I)(05Qp8IL&T1e(Oh)dwbLqeyy2 zi?UTH3Pg)Xd= z%qdC=;Bz^B1bFv(QooU?_BI&@9xWcD=qG-|vk!;{B5Pav^|V;ZC-c4{Hd>0X78p}# zQjqZVd|#VVHe*t4W5f8}9{8J~GAI>WJyk^XZVQZrSRu7r z6e<=Y(maF&{g4JSa6E}wU*11iWdtF3M-h{!YXC7`!&6U6?5xfoWOnA{jkH8DJ1O01x?Xo(YF38xa3=QIe?h9{s~ij+;Wdc<6ewE3~aQ!JD!Ditorf`fIg z+n%L_?5A=7I)+=k**uSspm`U(Aizo!m!xonbV@6jdMXZOG4U?WP5txsrXP?NAiwR~ zXsdrJ@Ge$=A{fB=NZ2DG+4pJf;LDk;og0W4B26Ww4g%pnpa_X4=-oLA+tK?_d76qN=<{(yCJ4&#vuyTr4&`nQ%Veomyk?;h5Z1Ti#7wJe-fjmbh zmy}#r862CLiIBWbRkdwh-leJ)7lM&er3pJ!s`ZMzg4{x5H3ucXYEf}fvaE>m6q%B# zmYa&BK0^Wd8^7#!&7pE3vtWr}R~BbeH)SZ!)|W+Gy_~U!q8YQ;|IQJ4(IFQE+&o>7 z2UuE(C$p`@P6%X4aVUais*@2*Ip^iIwX$#2b%6@{v|@%}hNag6^4S?>VQ&_{Ocyks zC#NA@#iggKxYE=Hxnd8UAhDEdm`ia8v?%bwHNuRBPAgltC3855lMncYa2a1GP! z2AO7`9)Krv8m8@?UD|8<#j}6Bhgpq3*u&|d?~AF~7temgCupDj=&S7h$+!1p4%Xh+ zUOfAVrg3qJ#!?fuRjV`J6wpq-w|kon|4bjeS6G*E7ZSGxW{}san3GRnxyzoi#=XEym@A9mrSMkG0fZZ_e;oa zms2$W7HwuVp99Og>c}M_3RkBliQ?#_*&`s47QnBQ`ln!|kgfQ_OAMZ8Dl-+ZrX!I& z`_!L`d6c4rlx=OW`-b%WbDM>!@j~IL<#!F^%NvvolWf%SXn@kZms;Bwe{a25u;qzx6$iSs2;@sDhL zwQPJjJUcuK|71JMUz~9-g7~tD_xr%AzyJ2}CGA_&dZ~Wh+0p&)$eglXb2rQ4=>sC! zmwr=<3lCo_6V|jzczIKr#?j9{s|7rPLLp+3J6>brgGFOi=OV?B@z(*K-Rr z&lq4Pa?uVCBQXj5_i|5-{VDAh!K3vUs-uWLrJ%^vEsXdbDAOJuetxOPL}(m} zG_I6Hr?gOnfh+a}7OS&V+icTILn10iBqqo=`)F-%X9s z=7+P%lkL5fCn{=BU?~2D~ila15C!})=BYCJ2NIfE}nT? zV|2RRcI`ef6u|gXEO~1-E1bqzdR;tCR${27$H|rkG#c?^!?f{Ww}u&byd_~{Hl4ke zZ2uMrEE@N=s8bCZXu6KM4@~a(R&dw|X12cuV>W7FOX_q*1go!dGq=}j)y4T)co_$? z?M|yTJF4T6iTrYPeT%_Bij&Z1W5bQ?Epfh`A0T)bqJ99t?J%Uvap1baA@mC#fCa|* z!;x$F`)BO#aoVC{_hxOa?B4Wsv3oO!^ZPeGbYc)iS=YXngzii3*FTgV6tpaN;GTR@ z*?;nFvHMbR<=*oQ$Blzc(jvz}625L&R%l1j)DCUz%GaV~^vE{<;AQ-m3~#oDn@Df( zPHl4^p#!tPALyD*`14yh0W;&JGx3g%U7B*vTX=`(G8ydc5b9y&S*QHE$UC-wV7tL= z(a4`U$USxx)7Xc*rWx8sY>QKwn=f4uP-miwGswE34I0#@vFkI z<=3d5%BQlN6C_b>XQ@+-Bgal)7#Uu+=SsVU>nY?hIWYb_OeLW^ESD~{pmBz$C5_@? zd!yBD>r%mE9cuZ*p{L-rlY=JD_Re>YLFc_v%VY=9QL^klZDcBPymR3;s-|-E4ugvF zTzmciw~z1&8#9bvJp0s?t4`n86V=X`VMRHrc8Na0?&N(E;uxCWDOhmH4w-Xmk-D2F zo=D|kFPKvsgj~O^w>C24icsxkS+nKiiuk-kZa>d-BSLuu8<6cU@Z*zzVt4Ox4D9S3 z%E^-J(Tv#Fif4AOaN0G2Vmo{wW(NryT#3*S<%h`QNCX{&CoD(lK$H(OkOu}oI+*^u zmVN>{Y!;xknEyhP&#CLD9Z`1X9&03mD#~Z?cJ^>58WDQGNd&>pE*QI1VZ%3VSIYxI z*(8rYze+WDJ#BjwAERKioM`46$D4lOgIM3Wjq@tvXm#F(=CreO6FS*rGH6q6b_$}S z?8C4}jd^xF4J>|KbWQCl1XiLYf9MAXhU?(j(mOY2#Ug$X+mVzh2#>r0`IuY#=~2f| z#avdpv_c*WBR4I|wj;%KnlrT> zzWO%ZFgtg)jT+{EN~h7_>YPeUm9W2@Kj$7}r)BCO0cAG;kw_~tc$k)`?YzMcsZJ=4 zdmi)z6ljF<4o8>Tt2K<(+sZA-N`Tz$flvw#;c5UZVH~-(Kfy`Vey`WYR{}Af5hs8y zYM+q+PlfsB$!B{Q#=c0a9DkO?)Fc5?v`F5?$1}LYYStLAX=3Av?Rcd7cCFLOHLl%N znns7ZQ@p*hN!+E)wMabT9DO-05{@%(ko2OdJ>q6@gY;HQpyaOL$hJnu`2o0Wd%^I} zx0W94(aO_9dsJ03 zpuaceXD{P1pomabp5UzVURvciRs}I0qF8)*=gn0CW3}Dxts<&&fhJUb33xDe{I~!@ zJQFBd92O3*CK6#s=+>LBXd086foU4(zm=k1F8+lJ=zJfaj00eRkjTU@YZ;~SRyz!h z*$hK>E2vl_oAgLZN^xr$;l7|XfAUc8_FBF6#zwzeGLT0TCQ4~=Id)u^jV2oX#S095 z;2YR~)Cjuzh1ksN8HZ>n6#!S;&L%lN?_6D7_vG~|_Z6rKAvW;-; z9F^4U2(;$@7UK@rCPB6m{;84>$y^TSqHQ4B5 zhbnXdfsZdcgMMeDJybNjE2io+z0Js~zzY|hL#+#diNLwOKuC`7BPa2N0L*v9JWD%b?gV}vA z8LDwuFV7L4`mxq&wT|G2fOO6aMDMkZ;D>;~-@{zPpw&Q)H4yk>2w-J#41l^i0DN>; znbLN4I*=a8XRIw|i}Rv6Lm&Tv_3X0!*;I4y_&DYRI`!Md!&Igg1OUlHfuY^Iak@CI z`aXrwY2A>5vIk z7tg=NZr%OL?pNQxwWn;SA#4og)8q);EI)y&8|FU$O;MLeNfbL{7{cHq#7vaZWG;vn z1>iRF##F*12b)4SjBcIS_PAAHRF!=AFfCu36R?r0DGPe!0Z^1vNn>FY6Y+q+GvE$1 zRYXt(VW>8K9t^n~oTv9fJe>~r9N%R3D1P&f%64AuTg&XC$#@5IDUVY;0hOw zGDh!Wei{uKav8`nGAcOk508rP-B$c+nt~KUApDIGj&`i@)~9k+OJR0|HWCZg=EN)B&VcOZ=_^K zclADaKkY$xIWu~27BjkF+GBV|L~s=&zqhf`hFY}SRYrclwb38w`k<cg5 zJ+TkFii|HYsZ=qqF<6l)UVfe_V`ZYMj#@9B2PJ&fqTnm@6#Ltk8;vM z-E(0RPY5kK2788V&P_H1m0!T@(8h6}m?Cy6;xLy3{7;f&xo9ANeEQ|1dMB5aoz53r z1*$!<(>vdb@k%gc;$3XXmf$}1ei;{?)V}oKY;}hH{zhwK2$8{A5-#B?H z7riVbBr&CGo#$DC%yR{i9@-wd5IBpj2^*ia8pC-8`;y$=8Ft$J&c;S%K<84KeK727 zv>vokB=^wt8a~h1bm6;DmwYT9UeHQeI>BpaDyw6m%H%NFe?UGH7BP1RpP`( zt2dV!8Mnm@*O~a645$0g%%E8icX5FQG0b*%(Czd(-Hj^qrVZ9jzdab}IhHSQy52so z&7~}1kbg@qdlm!1)rMPwf^BfWN8k}p!XWW2^oxUVGn|ap+Pz+#$zSVRa!tfafks&e z=G)13SR<`C^`-}HbfAAUj1yzbIlHRtuK84Fg)9N36Z8#`E3H9qP|*q9{;)OZ_S*Vo zh#e(qCf_Two&WI(!@v|b3+-5}OIgwo=xpenZoAcQUx6V!Z#fH3C6G5T(m9{xR?IMU zSeMeUsuu_>k(Z_Ql8@zZR4nYEQBYrRdM%uma&cz>3>{EAjBQGd1Jcl;|@rnqlxZ)rGRR?tbOwC}hnYiY9*k{deAZleP3# zuQS+abvk%V2Av=J&h5{?zsL4wjVzeR_ox@gEw_iwR=?S9={kpYSDtMp@)`MtFPlt; z+S8EbEpTY|5_Er+fcvb%j>||?G~`;1L6se+H#&1{wxaG&*W?v-|DZJlyQ9~U*;&uhob=M>t)YNt}wga-stqZ8`x)6 z7#hhD?k_O2(|Kb=#G-=sVA&DY`3Pafkm)Sad5jo8ESfI0`(QkKxo}5*RoG zD=6iIba8^rj^t?7gh?sNFkO;n6;mnZ1tZ6`!Pc_uk%97Ai_8!NC*FAD8K(EzwemI@ zqCC%&$bG~!EX7DnTxIzQtyM`8!S#WSt0@eZZW2t-G>ym>sv$N;+cjNGc`AX$bjCKD zyVWo!6+So${J=X_o(HtFS~HEY%9Tl|Y-IMQp9h`)dZ{5k} zC9k4_?Xy)dT@i+BOb!xI+d4m(Cr^ETNX`3rrpCI0)0H^c_z#&zBU>P9OE%rAQ)=hpO#l z$07Yr4Ec6T5UReN;69Y-@Q$T-+l4f)mD4soYlrvvb3vXvEJ{0{vAAN@8sWIv5@U8 zDP+q8H^zLYzo}8K{qC)|-=bs0bbX7n4*a|{fizr>_v5L9ssC8{z1w%#?#bWgYM9ju zGsMBW6W(u)7r2Q(bCDd*G{f?651s@Rg6DkG<~yvt^euRjI2Z>|i5tB)gu{HJ_vSXz z>LJzuA4IjCTT$dpd}a_4nd5Wcl6{pn(uvp(dk>yRDRKTZ2zGJdUTE6j*2U~?jBHR$ zMWkQg|5<=VT>TsR51rC~Bd+tlqBjE<)8v^QxO#Ix#;n&usEqMgS#5_Pr7o-Cxeu-V zhq!((TbM%6XiXmz*8-}%CD_^|H1OyV#5pz+H_pE;JmgUcKCdO8d6v8~VKDf%i*sYV zf(55v6cal%$nXL@g-7ODs*}=14K2~KjZK#LksV74Rs5S*AsTmB7a2k=Kq&2?<25|H z+3jt#yX_V(6`{3ur7-VK1wKiqaTfO%JDV6qq-wG=RgNMyV(Ft&TRvANClY{RqsaCr zb|~V23RI429(696M&C5t0LhdkqL<^~iztNOUmA6Gr+AKHY1h-X^v0Rqh=JXiY40E*e2fZtRSSvng*&1_vHZ@ zqVZt0ra>Q=`1niKZyRKvG{fMx%k*sV+{Td?+)ff7NAX1_->F z<0I>aqV%9?2f^z1#ZMW^}a&7_|IY=V$L4Ygyc^&%0dCe+(V|XJQqxWNT zH2)Kd>P|u%H@yL>K=F-{WsZ7_YM(3KYFVv8cL7l(v9b08+tSD8BG_u_R)5&B=ky6L zJxfAR#87lN>gjf|jj47j!iLdP0D!CpPMZ8;P4Dz9dr}W4BV(;!*Sj0_c6+0)ud~(- ze7L6fdi8-054*IE^2YjH)I|zsxK%RF$G@hx+kmH4*9WZ>eXHJX4eENQbt?7>mcSa! zVXsAGX!qJshhDvvk-?x8NxdZ=o~bGvWkwAe5{vOGs01C_t&MuO5C5Nr9AwUM+7-qz zqAd%71)b3D4C>-1O%|qO6{SRJ*a*6RHo(FMnP!VMsjotCTIdQOYiqGrhsSN9{j(~dJ;KMsa5Z{m*!C` ziT0OhVyCX_?W~EzAqoY3*v>HbK~4;Cw4R2VWMyF5r$__B+a=r?-a(thQ(IRMV}JKS zWDQOon6``j=$QB@iWXyUwTWZ&wlWO#4t2KPK9!9;$MX3^?IIj?plW-V!tcU>*MXOM zb9&E8f;a#}LBrWo8p#nDSLj=W?%L{gC@M?j3#`rsv@b~7oAYb5AN|2(PPY8N_3LT_^swM@0TLO{h+-W@d zVw35e+0pz$eCB-G6rrdscEHWz&jBstf6}!$} zalBa&#)cmY7)7PEB)H;d6_CluT@oCXt$>jl!ArtP%U8fkt%4w8wPg|Ftq6=LZuK=~&X z5c!xdrc^yH=U81_5?lny((>UVNKTg;7lFQXNeU9FWf; z)6RkAVzTVw2$z>(=fQOz*>&!&I+M&gFRPtNR-L;k%gd;9qnIn3P6-HSF^fzbDw44Z z@6y5MW%#fnMtq?vErVd$@i;Gfe6b3i1=G^9N)0YwX7wt-SMk{CG3Sf%+3E1BbZAv5 z`a<=ngji`06obeYLR$tm7pDv*UjjY}Y7q}&@c44r4I#~w^Asz-5Sk231&(}F_(FK{ zpek_5kmQB1NFWvP`TChOJoi{xj9Z3Sj2c$emoL#dJ3#(n74OjM+p`0t?<(LOog3m& z70hfg6E1b*o5ZS<@{f!IgFoe4rH{qBAMH_u|3i_`SlwA^ewp2T<%8WfZ|&XsfPJ~S z0u^Dh==(+(v2FIa7GpYBZS!#r1Rg53=O6 z2WckTgC_maurwW;QLlwDegqd$?3nw<5BZ8Qc(l=ihrpJ096ekJS!7>4Xi^2E2TfUX zz($`xXg-1;fJQQD6dYkAOgD(^hn^AcCo_P3Q>+f;3qBvzZqUVz2V!^p2V(W$1DP21 zpoUA92*?B6bm(Bh`0m#avT9}|>QgGWaeUR_Svsg`PdaNgdOe!9yCZ`4^7@$5-CS=8bIw z=m~7V|7u6rOgggaNQc)t*7g{$`fzd778l2D@owiPbQ6?Tzv-7g;ZVxo5T)=Br}_@` z9q+GE>_2pTOx><+(%D?VdP!u5)T4&~5QZ_H12D0p?7gE8e0+~9(l7-Pdiy%*PXWDo8UzADq%Ov`UPiY(i8 z4#I|S$4!6cHR-fHc`89Lf<8UK#gKt}jNJcvtD!eqP0NYm<{hQvS4Ba9_Zs}!rea*w zEd~hEZ*?bY4@f`Tx18~ZcpSv#HEc3%`pHpXIeyczb$yrec<+V543{I?(d*p?RJih0 z1H`0k6qOQ3U4X_1;T$d34)Ii+jfZ=}zZ)2qNXXrOES8iDFnb34mOVz!6>o40bom0WYjqMo4-t>!Pxvcw zqrS7P>=lfldOQW*od&K&{ER7lXq?ER2LdmfcgL@H~fj2W^XXM(o989X{yAGYAO8L3bnp)j;DvS&j zjG5@1M}Lxl*YL`A4WzI=1|ev1ko^A`C`+#%(F@Kacroop1t*y%vYwJ(w-=-W4-de3^bXtFm7Jy_J+J3?}?QOeZ*)i?`?1(2@ zP(y*`y(Bi&5y?TwakuT;hpbp+Ek)>wHxd7eZyj%fMvAvvTl9o@F87Fc3f3`woPueL zgYYfGoR%@HgS{25IZ)WSDW4&QZ0l}d!LZ|J>1;W#zN&UoMad7G4;vFZeoKs@H;(r> zBfYW>R+hlJy8aj$!0{9N$;#QF?IH^;hKEFow$D(twN)72tLs}%^pHND_iZ{PYIolI zN^OhN{;ZhjBY}*rm%zry-xlxLhuF1CAx&wuwpx%?h(F_{SGPIM(oR;G3f}Q%%9lm< zdUac=Rt8~B5);@(#iUb*r;SHuQjzH}KG*5M zuhYmFZCinvkR+ z>U~g}@=hqqnyLgvHBQB5f{3u2xWYznwvC}-n1{+9s-5uGjVIQBFI^y6B z%UYG;yxByW;$oy}?BV9hbjZ}+)QRwvuZZtB!dz$HW(NBjwX6 + + + + + + + + + +Ngỡ ngàng với mẫu thiết kế biệt thự 250m2 3 tầng có hồ bơi hiện đại BT2200921 – Nội thất – kiến trúc An Việt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+ +
+
+ + + + +
+
+
+
+ + +

Ngỡ ngàng với mẫu thiết kế biệt thự 250m2 3 tầng có hồ bơi hiện đại BT2200921

+
+ + +
+
+ + +
+
+
+ + +

Kính thưa quý khách hàng, dự án thiết kế biệt thự 250m2 3 tầng tại Kon Tum mà Angcovat muốn giới thiệu ngày hôm nay là của gia đình anh Trung. Công trình mang phong cách thiết kế hiện đại và là nguồn cảm hứng bất tận thể hiện cá tinh riêng của vị chủ nhà. Kiến trúc hiện đại luôn mang trong mình tính sáng tạo, độc đáo và tiện nghi, đẳng cấp.

+

 Mời quý vị cùng chiêm ngưỡng bản vẽ thiết kế biệt thự 3 tầng bằng kính hiện đại diện tích 250m2 mà ai cũng xuýt xoa khen ngợi.

+

YÊU CẦU THIẾT KẾ BIỆT THỰ 250M2 3 TẦNG CỦA CHỦ ĐẦU TƯ 

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
    +
  • Mã số 
  • +
+
 BT2200921
+
    +
  • Số tầng
  • +
+
 03 tầng nổi 1 tầng hầm
+
    +
  • Chủ đầu tư 
  • +
+
 Ông Trung
+
    +
  • Địa Chỉ 
  • +
+
 Kon Tum
+
    +
  • Mặt tiền
  • +
+
 21m
+
    +
  • Chiều sâu
  • +
+
+

 34m

+
+
    +
  • Kiến trúc sư 
  • +
+
+

 Kiến trúc sư Angcovat

+
+
    +
  • Năm thi công
  • +
+
+

 2021

+
+
    +
  • Kích thước lô đất
  • +
+
+

 30x50m

+
+
    +
  • Kinh phí đầu tư dự kiến
  • +
+
 Khoảng 6 tỷ đồng
+
    +
  • Thông số diện tích, Công năng 
  • +
+
+

– Diện tích nhà: 250m2/sàn

+

– Tầng hầm: đường hầm 18m2; phòng bếp ăn 52m2; phòng ngủ 18,5m2; sảnh trung tâm 25m2; wc1: 4m2; kho rượu 27m2; phòng giải trí 27m2

+

– Tầng 1: phòng khách 42m2; sảnh trung tâm 25m2; wc2 4m2; wc3: 18m2; phòng thay đồ 21m2; phòng ngủ 2: 37m2

+

– Tầng 2: sảnh trung tâm 25m2; phòng ngủ 3: 18,5m2; wc3: 4m2; phòng ngủ 4: 37m2; ban công 16m2; phòng ngủ 5: 20,7m2; ban công 17m2; wc 4: 7m2; phòng thay đồ 12m2

+

– Tầng 3: sảnh trung tâm 25m2; phòng thờ 20m2; ban công 17m2; phòng ngủ 6: 19m2; phòng ngủ 7: 32m2; wc5: 7m2l giặt phời 18,5m2; ban công 11m2; wc6: 4m2 ban công 3,7m2

+
+

THIẾT KẾ MẶT TIỀN MẪU BIỆT THỰ 250M2 3 TẦNG HIỆN ĐẠI

+

Lấy cảm hứng từ phong cách hiện đại, biệt thự 250m2 3 tầng gây ấn tượng bởi vẽ đẹp cá tính, thoải mái. Những chi tiết kiến trúc, tỷ lệ kích thước được kiến trúc sư trang trí một cách tỷ mỉ và hài hòa nhất

+

thiết kế biệt thự 250m2 3 tầng có tầng hầm rộng

+

 Thiết kế mặt tiền biệt thự 250m2 3 tầng đẹp

+

Kiến trúc ngoại thất hay còn gọi là mặt tiền bên ngoài luôn được đánh giá cao đến thẩm mỹ, nhìn từ bên ngoài có thể thấy được vẻ đẹp sang trọng, đẳng cấp hay nét tinh tế của gia chủ vì thế mà kiến trúc sư không ngừng sáng tạo để cho ra đời một biệt thự 3 tầng 250m đẹp mới lạ.

+

Không tuân theo một nguyên tắc nào cả, mẫu biệt thự 3 tầng nổi bật với những mảng tường phi đối xứng được kết hợp với nhau một cách ăn ý. Ngoài những khối hộp hình chữ nhật vuôn vức thì ngôi nhà xuất hiện những “mảnh ghép” hình thù khác làm điểm nhấn đặc biệt.

+

Ở góc nhìn này có thể thấy biệt thự 3 tầng 250m2 được thiết kế theo hình chữ L đẹp tạo ra một góc nhìn thông thoáng cho mặt tiền.

+

Trong khi đó ở một mặt tiền khác đưa đến người nhìn vẻ đẹp khỏe khoắn, chắc chắn với những đường nét dứt khoát. Các khối hình hộp được lắp ghép với nhau một cách ăn ý đặc biệt hơn các hệ cửa kính kết hợp với hệ lam làm nên khác biệt và giúp ánh sáng thiên nhiên vào trong được tốt hơn.

+

thiết kế biệt thự 250m2 3 tầng 6 phòng ngủ mái bằng

+

Bản vẽ thiết kế biệt thự 250m2 3 tầng kiến trúc hiện đại đẳng cấp

+

 Căn biệt thự nghỉ dưỡng 3 tầng thiết kế đẳng cấp với mức đầu tư khá cao. Điểm khiến ai cũng phải xuýt xoa ở căn biệt thự vườn 250m2 này là có sự giao hòa với thiên nhiên xanh tươi. Đây chính là không gian lý tưởng để nghỉ ngơi thư giãn cùng gia đình.

+

Là người yêu thích sự đơn giản, tinh tế, nét trẻ trung, khỏe khoắn. Anh Trung mong muốn có được ngôi biệt thự vườn 250m2 với thiết kế hiện đại. Thiết kế sao cho ngoài công trình chính thì cảnh quan sân vườn phải đẹp, nhiều không gian xanh mang đến không gian sống trong lành nhất.

+

Căn cứ vào mong muốn, mức đầu tư và phong thủy của anh. Kiến trúc sư tư vấn cho anh thiết kế Biệt thự vườn 250m2 3 tầng thiết kế hiện đại. Cùng với đó là phương án mặt bằng phân chia công năng các phòng trong nhà. Đảm bảo mỗi một không gian sinh hoạt không chỉ đầy đủ tiện nghi. Mà còn đáp ứng các tiêu chí rộng rãi, sang trọng, thoát mát. Phương án phối cảnh mặt tiền cũng được KTS gửi đến anh sau khi thống nhất phương án măt bằng. Đây cũng là thời gian quan trọng nhất trong quá trình tư vấn thiết kế. Bởi lẽ ở giai đoạn phương án này gia chủ sẽ hình dung được ngôi biệt thự trong tương lai của mình. Từ cách sắp xếp công năng bên trong đến hình ảnh bên ngoài. Để từ đó xem xét cân nhắc để chỉnh sửa phương án sao cho phù hợp nhất.

+

CÁCH SỬ DỤNG VẬT LIỆU HIỆN ĐẠI CỦA MẪU BIỆT THỰ 250M2 3 TẦNG 

+

thiết kế biệt thự 250m2 3 tầng mái bằng bằng kính đẹp

+

 Tiện nghi – đẳng cấp là điểm nổi bật của mẫu biệt thự 250m2 3 tầng lôi cuốn

+

Ngôi biệt thự được sử dụng những vật liệu hiện đại, mới nhất hiện nay với vật liệu gỗ, kính cường lực, inox, gạch ốp ngoại thất,…Hệ thống cửa Biệt thự vườn 250m2 3 tầng được sử dụng kính cường lực là chủ yếu. Sử dụng cửa pano gỗ kính đồng bộ toàn nhà có tác dụng lớn trong việc lấy sáng.

+

Việc thiết kế những ngôi biệt thự vườn mái bằng đang được các gia chủ ngày một chú ý. Chính bởi vậy mà chúng được thiết kế ngày một đẹp. Không chỉ có thiết kế ngoại thất xinh đẹp, những ngôi biệt thự mái bằng này còn được thiết kế kết hợp với không gian sân vườn. Chính sự kết hợp này đã khiến cho những mẫu biệt thự vườn mái bằng trở thành không gian sống xinh đẹp, hấp dẫn.

+

 Những mẫu biệt thự vườn 3 tầng mái bằng còn mang đến cho con người một không gian sống tiện nghi và đầy đủ. Đây là một điểm vô cùng hấp dẫn ở những công trình kiến trúc này. Sở dĩ nói như vậy là bởi những công trình biệt thự mái bằng sẽ được bố trí, thiết kế với đầy đủ những công năng, không gian. Chính cách bố trí, sắp xếp này đã làm cho cuộc sống sinh hoạt của con người trở nên tiện nghi, đầy đủ hơn.

+

Những công trình biệt thự vườn mái bằng thường được thiết kế theo phong cách hiện đại. Và, điều mà ta hay bắt gặp nhất của các công trình kiến trúc hiện đại là không gian mở. Chính sự mở của không gian này kết hợp với không gian sân vườn xanh tươi đã thành công tạo nên bầu không khí vô cùng tốt của mẫu biệt thự vườn mái bằng.

+

Toàn bộ ngôi nhà được thiết kế theo không gian mở với những bức tường kính tạo nên một căn hộ thông thoáng, rộng rãi. Ánh sáng có thể xuyên vào từng ngóc ngách của căn biệt thự để mang đến sự tươi mới. Không gian này tuyệt vời hơn khi tận dụng cây xanh để mang thiên nhiên vào gần gũi hơn với con người nơi đây.

+

thiết kế biệt thự 250m2 3 tầng tiện nghi đẳng cấp bậc nhất Việt Nam

+

 Mẫu thiết kế biệt thự kính 250m2 này đúng như một tác phẩm nghệ thuật hài hòa với quang cảnh xung quanh. Chúng ta đều mải mê với cuộc sống tấp lập của đô thị khiến cho đôi lúc mất đi những khoảnh khắc nghỉ ngơi, thư giãn ít ỏi của mình. Để có được một ngôi nhà yên tĩnh và ấm áp đáp ưng đầy đủ công năng sử dụng giúp cho bạn có được những giây phút thoải mái và thư thái sau những giờ làm việc mệt mỏi.

+

Tìm hiểu thêm: 1000 mẫu biệt thự 2 tầng đẹp

+

 MÀU SẮC HIỆN ĐẠI ĐỘC ĐÁO THỂ HIỆN ĐẦY TINH TẾ TRONG NGÔI NHÀ 250M2 3 TẦNG

+

thiết kế biệt thự 250m2 3 tầng có hồ bơi tiện nghi

+

 Mẫu thiết kế biệt thự 250m2 3 tầng mang màu sắc tinh tế

+

 

+

Ở Việt Nam nói chung và các tỉnh thành ở Tây Nguyên nói riêng, sự tác động của các yếu tố thời tiết ảnh hưởng quan trọng nhất là khí hậu, văn hoá, xã hội, gia đình nội thất có đặc điểm chung luôn là sự biến động. Sự tác động của chúng tới không gian nội thất có sự thay đổi theo thời gian. Biết cách kết hợp màu sắc hài hòa không chỉ giúp tạo điểm nhấn riêng ấn tượng cho không gian sống mà còn giúp chủ nhân luôn có cảm giác thoải mái và dễ chịu

+

Tuy nhiên, trong cách thiết kế biệt thự đẹp của kiến trúc sư về mẫu biệt thự 250m2 3 tầng hiện đại hoàn toàn có thể làm đơn giản quá trình này bằng cách phối hợp những màu sắc mà gia chủ thích và thu hẹp quá trình lựa chọn màu sắc bằng việc phối hợp từ 2 màu với nhau. Tất nhiên có nhiều cách kết hợp màu sắc, nhưng đây là cách kết hợp hiệu quả và đơn giản nhất.

+

thiết kế biệt thự 250m2 3 tầng đẹp phong cách kiến trúc hiện đại

+

Bản vẽ phối cảnh biệt thự 250m2 3 tầng bằng kính

+

 Nhà biệt thự 250m2 3 tầng mái bằng được thiết kế màu sắc đồng điệu, hiểu đơn giản, các màu sắc tương đồng là những màu sắc tương tự nhau, ví như màu trắng và màu ghi xám hoặc việc kết hợp các vật liệu với nhau cũng tạo hiệu ứng ánh sáng tốt, ví như kính trắng và đèn led trang trí. Với những ngôi nhà sử dụng cách phối màu theo kiểu này, chủ nhân sẽ có cảm giác yên tĩnh hơn, phản ánh tâm trạng và cá tính của người sở hữu nó. Cách phối các màu sắc tương đồng nên được áp dụng cho phòng ngủ, những góc thư giãn hoặc những nơi mà từ đó bạn tìm được sự yên tĩnh, thư giãn sau một ngày làm việc mệt mỏi.

+

Toàn bộ bên ngoài ngoại thất của ngôi nhà được bao phủ bởi lớp gạch ốp và kính bao phủ thay vì các bức tường sơn phủ truyền thống. Chính vì thế mà giá thành vật liệu và chi phí xây dựng tăng hơn so với những công trình nhà ở đơn giản khác. Nhưng ngược lại ngôi nhà sẽ chiếm trọn được vẻ đẹp sang trọng, tính hiện đại, thách thức mọi điều kiện thời tiết khắc nghiệt nhất.

+

Kính là vật liệu thích ứng với mọi điều kiện thời tiết, trời nắng sẽ giúp không gian rộng rãi thoáng đãng hơn, sử dụng điều hòa trong nhà sẽ không bị thất thoát điện năng, ánh sáng tràn ngập giúp giảm năng lượng đèn tiêu thụ. Ngược lại vào những ngày mát trời, có thể mở các ô cửa sở lớn đón không khí vào nhà, vô cùng dễ chịu.

+

Bên ngoài được ốp gạch cao cấp vừa toát lên vẻ đẹp sang trọng, vừa có thể bảo vệ lớp tường bên trong không bị nước mưa xâm hại, hoặc các điều kiện thời tiết bất lợi. Giúp bảo vệ ngôi nhà, tăng tuổi thọ công trình, kéo dài thời gian bảo trì. Chính vì vậy so với việc bỏ một số tiền lớn ban đầu nhưng giúp giảm tải tiền bảo hành sửa chữa ngôi nhà sau này. Nên tính ra, đây là phương án tối ưu cho các gia chủ có điều kiện đầu tư ngay từ đầu sẽ sở hữu được ngôi nhà vừa đẹp mắt, vừa bền vững theo thời gian.

+

Tìm hiểu thêm: mẫu nhà đẹp 2 tầng 120m2 mái nhật 

+

 THIẾT KẾ QUY HOẠCH MẶT BẰNG BIỆT THỰ 250M2 3 TẦNG 7 PHÒNG NGỦ

+

quy hoạch bản vẽ biệt thự 250m2 3 tầng trên lô đất rộng

+

 Bản vẽ quy hoạch biệt thự 250m2 3 tầng trên mảnh đất rộng 1500m2

+

Biệt thự vườn 250m2 3 tầng thiết kế hiện đại ở Kon Tum được thiết kế cho anh Trung. Biệt thự được nằm trên mảnh đất rộng hàng nghìn mét vuông với thiết kế hiện đại kết hợp không gian sống xanh. Bởi lẽ trong guồng quay của công việc thì cảm giác bình yên, thư giãn khi trở về ngôi nhà của mình là mong muốn lớn nhất của anh Trung. Để mỗi ngày đều được nhìn ngắm các con vui đùa trên sân, chơi cùng nhau trên bãi cỏ. Hay những giây phút yên bình ngồi ngắm cảnh, thư giãn bên bể bơi tiện nghi. Thông qua mẫu biệt thự 250m2 đáp ứng hoàn toàn công năng mong muốn cũng như không gian sống cho gia đình anh. Mang đến sự hài lòng cho anh và gia đình.

+

 

+

mặt bằng tầng 1 thiết kế biệt thự 250m2 6 phòng ngủ tiện nghi hiện đại

+

 Mặt bằng tầng 1 biệt thự 250m2 siêu tiện nghi

+

Tầng trệt được sắp xếp không gian như sau: phòng khách 42m2; sảnh trung tâm 25m2; wc2 4m2; wc3: 18m2; phòng thay đồ 21m2; phòng ngủ 2: 37m2

+

Phòng khách được thiết kế vô cùng rộng rãi, cân đối với tổng thể diện tích sử dụng lên tới 250m2 của mẫu biệt thự 3 tầng đẹp và tiện nghi đẳng cấp này. Sảnh trung tâm được đặt ở chính giữa, nối tiếp với sảnh chính của ngôi nhà. Đó là không gian đệm nối tiếp giữa bên trong và bên ngoài căn nhà, là nơi đón gió, thoáng mát và theo phong thủy là nơi đón tài lộc vào trong nhà. Trong tầng trệt có thêm 1 phòng ngủ rộng lên tới 37m2. Khuôn viên khá thoáng đãng với việc phân chia mặt bằng công năng thoải mái, hợp lý và siêu đẳng cấp.

+

Tìm hiểu: Những mẫu biệt thự 3 tầng 4 phòng ngủ cao cấp

+

 

+

mặt bằng tầng 2 thiết kế biệt thự 250m2 6 phòng ngủ có tầng hầm

+

 Không gian tầng 2 mẫu nhà 250m2 7 phòng ngủ

+

Tầng 2 gồm có: sảnh trung tâm 25m2; phòng ngủ 3: 18,5m2; wc3: 4m2; phòng ngủ 4: 37m2; ban công 16m2; phòng ngủ 5: 20,7m2; ban công 17m2; wc 4: 7m2; phòng thay đồ 12m2

+

 Tầng 1 biệt thự 250m2 3 tầng được thiết kế gồm phòng khách, phòng ngủ (có phòng WC khép kín), phòng WC, thay đồ. Nếu như phòng khách được bố trí cửa chính thì không gian đệm được bố trí cửa kính lớn kết hợp với tường đặc. Mang đến không gian đặc biệt nhất trong nha. Vừa ngồi chơi, uống trà vừa ngắm nhìn ra bên ngoài nhà. Ánh sáng tự nhiên cũng len lỏi vào nhà qua những ô cửa kính. Đem đến không gian sống nhẹ nhàng, thư thái nhất cho chủ nhân. Phòng ngủ ông bà rộng, có vệ sinh khép kín rất phù hợp cho người già không sợ bị gió, hay leo lên xuống cầu thang. 

+

 

+

mặt bằng tầng 2 thiết kế biệt thự 250m2 6 phòng ngủ hiện đại

+

 Mặt bằng tầng 3 thiết kế biệt thự 250m2

+

Mặt bằng tầng 3 gồm có: sảnh trung tâm 25m2; phòng thờ 20m2; ban công 17m2; phòng ngủ 6: 19m2; phòng ngủ 7: 32m2; wc5: 7m2l giặt phời 18,5m2; ban công 11m2; wc6: 4m2 ban công 3,7m2

+

 Tầng 2 được thiết kế gồm: phòng thờ, 2 phòng ngủ ban công rộng rãi, các phòng vệ sinh, phòng tắm tiện nghi bậc nhất, cùng với khuôn viên ban công hướng ra bên ngoài. Tổng thể tầng 2 khá thoáng, ở mỗi phòng đều có ban công rộng, với một vài chậu cây. Nơi đây là địa điểm lý tưởng cho gia chủ hít thở không khí trong lành, nhìn ngắm cảnh vật xung quanh. Phòng ngủ được thiết kế với diện tích ưu tiên đồng thời nằm sâu phía trong mảnh đất khá yên tĩnh đảm bảo giấc ngủ ngon cho cả gia đình. 

+

 

+

mặt bằng tầng hầm thiết kế biệt thự 250m2 6 phòng ngủ 1 phòng khách

+

 Thiết kế tầng hầm biệt thự 3 tầng 250m2

+

Mặt bằng tầng hầm gồm có: đường hầm 18m2; phòng bếp ăn 52m2; phòng ngủ 18,5m2; sảnh trung tâm 25m2; wc1: 4m2; kho rượu 27m2; phòng giải trí 27m2

+

Một điểm khâ đặc biệt là mẫu biệt thự 250m2 3 tầng có thêm tầng hầm vô cùng thoải mái và hiện đại. Khác với các tầng hầm nằm hoàn toàn dưới mặt đất, tầng hầm này được chúng tôi thiết kế kiểu bán hầm, không gian mở và được sử dụng với chức năng như một tầng bình thường. Tầng hầm sử dụng làm phòng bếp ăn, phòng ngủ và kho rượu. Ngoài ra còn có thêm 1 phòng giải trí hát karaoke để hạn chế tối đa tiếng ồn, ảnh hưởng tới xung quanh. Hoặc sử dụng làm phòng chiếu phim cho trẻ nhỏ.

+

Chắc chắn rằng công trình biệt thự 250m2 3 tầng của anh Trung là nơi sống lý tưởng, hài hòa thiên nhiên, gắn kết gia đình và là điều mong muốn của mọi gia đình trong cuộc sống hiện đại ngày nay.

+
+

 Đã bao giờ bạn nghĩ những mảng tường trống trơn, đơn điệu thành nguồn cảm hứng bất ngờ “lôi kéo” bạn về nhà? mẫu ngôi nhà biệt thự 3 tầng mái bằng 250m2 ở Kon Tum đã trở nên thân thiện và gần gũi với gia chủ ông Trung. Khung cảnh thiên nhiên như hút hồn gia chủ cũng như người qua lại, không cầu kỳ, không quá xa hoa lộng lẫy .nhưng ngôi biệt thự 250m2 3 tầng mặt tiền 21m đã toát lên một phong thái khỏe khoắn, sáng lạn và tươi tắn. chỉ ngắm nhìn thôi cũng làm ta có thêm nguồn sức sống và sự  thúc đẩy sự hào hứng.

+

Để nhận được nhiều kinh nghiệm xây nhà biệt thự 250m2 3 tầng độc đáo nhất vui lòng liên hệ qua Hotline: 0988030680

+

 Trân trọng!

+ + +
+ + + + + +
+
+ + + + +
+ + + + +
+

Trả lời

Email của bạn sẽ không được hiển thị công khai.

+ +

+

+ +

+ +
+
+ +
+ +
+ + +
+ + + +
+ + + + + +
+
+
+ + + + + +
+
+
+ + +
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/cache/wp-rocket/localhost/2022/02/13/ngo-ngang-voi-mau-thiet-ke-biet-thu-250m2-3-tang-co-ho-boi-hien-dai-bt2200921/index-mobile.html_gzip b/wp-content/cache/wp-rocket/localhost/2022/02/13/ngo-ngang-voi-mau-thiet-ke-biet-thu-250m2-3-tang-co-ho-boi-hien-dai-bt2200921/index-mobile.html_gzip new file mode 100644 index 0000000000000000000000000000000000000000..b5879ab6054b477d5371a944821e698db2503289 GIT binary patch literal 20613 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 literal 0 HcmV?d00001 diff --git a/wp-content/cache/wp-rocket/localhost/2022/02/13/ngo-ngang-voi-mau-thiet-ke-biet-thu-250m2-3-tang-co-ho-boi-hien-dai-bt2200921/index.html b/wp-content/cache/wp-rocket/localhost/2022/02/13/ngo-ngang-voi-mau-thiet-ke-biet-thu-250m2-3-tang-co-ho-boi-hien-dai-bt2200921/index.html new file mode 100644 index 0000000..24b6be8 --- /dev/null +++ b/wp-content/cache/wp-rocket/localhost/2022/02/13/ngo-ngang-voi-mau-thiet-ke-biet-thu-250m2-3-tang-co-ho-boi-hien-dai-bt2200921/index.html @@ -0,0 +1,1035 @@ + + + + + + + + + + +Ngỡ ngàng với mẫu thiết kế biệt thự 250m2 3 tầng có hồ bơi hiện đại BT2200921 – Nội thất – kiến trúc An Việt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+ +
+
+ + + + +
+
+
+
+ + +

Ngỡ ngàng với mẫu thiết kế biệt thự 250m2 3 tầng có hồ bơi hiện đại BT2200921

+
+ + +
+
+ + +
+
+
+ + +

Kính thưa quý khách hàng, dự án thiết kế biệt thự 250m2 3 tầng tại Kon Tum mà Angcovat muốn giới thiệu ngày hôm nay là của gia đình anh Trung. Công trình mang phong cách thiết kế hiện đại và là nguồn cảm hứng bất tận thể hiện cá tinh riêng của vị chủ nhà. Kiến trúc hiện đại luôn mang trong mình tính sáng tạo, độc đáo và tiện nghi, đẳng cấp.

+

 Mời quý vị cùng chiêm ngưỡng bản vẽ thiết kế biệt thự 3 tầng bằng kính hiện đại diện tích 250m2 mà ai cũng xuýt xoa khen ngợi.

+

YÊU CẦU THIẾT KẾ BIỆT THỰ 250M2 3 TẦNG CỦA CHỦ ĐẦU TƯ 

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
    +
  • Mã số 
  • +
+
 BT2200921
+
    +
  • Số tầng
  • +
+
 03 tầng nổi 1 tầng hầm
+
    +
  • Chủ đầu tư 
  • +
+
 Ông Trung
+
    +
  • Địa Chỉ 
  • +
+
 Kon Tum
+
    +
  • Mặt tiền
  • +
+
 21m
+
    +
  • Chiều sâu
  • +
+
+

 34m

+
+
    +
  • Kiến trúc sư 
  • +
+
+

 Kiến trúc sư Angcovat

+
+
    +
  • Năm thi công
  • +
+
+

 2021

+
+
    +
  • Kích thước lô đất
  • +
+
+

 30x50m

+
+
    +
  • Kinh phí đầu tư dự kiến
  • +
+
 Khoảng 6 tỷ đồng
+
    +
  • Thông số diện tích, Công năng 
  • +
+
+

– Diện tích nhà: 250m2/sàn

+

– Tầng hầm: đường hầm 18m2; phòng bếp ăn 52m2; phòng ngủ 18,5m2; sảnh trung tâm 25m2; wc1: 4m2; kho rượu 27m2; phòng giải trí 27m2

+

– Tầng 1: phòng khách 42m2; sảnh trung tâm 25m2; wc2 4m2; wc3: 18m2; phòng thay đồ 21m2; phòng ngủ 2: 37m2

+

– Tầng 2: sảnh trung tâm 25m2; phòng ngủ 3: 18,5m2; wc3: 4m2; phòng ngủ 4: 37m2; ban công 16m2; phòng ngủ 5: 20,7m2; ban công 17m2; wc 4: 7m2; phòng thay đồ 12m2

+

– Tầng 3: sảnh trung tâm 25m2; phòng thờ 20m2; ban công 17m2; phòng ngủ 6: 19m2; phòng ngủ 7: 32m2; wc5: 7m2l giặt phời 18,5m2; ban công 11m2; wc6: 4m2 ban công 3,7m2

+
+

THIẾT KẾ MẶT TIỀN MẪU BIỆT THỰ 250M2 3 TẦNG HIỆN ĐẠI

+

Lấy cảm hứng từ phong cách hiện đại, biệt thự 250m2 3 tầng gây ấn tượng bởi vẽ đẹp cá tính, thoải mái. Những chi tiết kiến trúc, tỷ lệ kích thước được kiến trúc sư trang trí một cách tỷ mỉ và hài hòa nhất

+

thiết kế biệt thự 250m2 3 tầng có tầng hầm rộng

+

 Thiết kế mặt tiền biệt thự 250m2 3 tầng đẹp

+

Kiến trúc ngoại thất hay còn gọi là mặt tiền bên ngoài luôn được đánh giá cao đến thẩm mỹ, nhìn từ bên ngoài có thể thấy được vẻ đẹp sang trọng, đẳng cấp hay nét tinh tế của gia chủ vì thế mà kiến trúc sư không ngừng sáng tạo để cho ra đời một biệt thự 3 tầng 250m đẹp mới lạ.

+

Không tuân theo một nguyên tắc nào cả, mẫu biệt thự 3 tầng nổi bật với những mảng tường phi đối xứng được kết hợp với nhau một cách ăn ý. Ngoài những khối hộp hình chữ nhật vuôn vức thì ngôi nhà xuất hiện những “mảnh ghép” hình thù khác làm điểm nhấn đặc biệt.

+

Ở góc nhìn này có thể thấy biệt thự 3 tầng 250m2 được thiết kế theo hình chữ L đẹp tạo ra một góc nhìn thông thoáng cho mặt tiền.

+

Trong khi đó ở một mặt tiền khác đưa đến người nhìn vẻ đẹp khỏe khoắn, chắc chắn với những đường nét dứt khoát. Các khối hình hộp được lắp ghép với nhau một cách ăn ý đặc biệt hơn các hệ cửa kính kết hợp với hệ lam làm nên khác biệt và giúp ánh sáng thiên nhiên vào trong được tốt hơn.

+

thiết kế biệt thự 250m2 3 tầng 6 phòng ngủ mái bằng

+

Bản vẽ thiết kế biệt thự 250m2 3 tầng kiến trúc hiện đại đẳng cấp

+

 Căn biệt thự nghỉ dưỡng 3 tầng thiết kế đẳng cấp với mức đầu tư khá cao. Điểm khiến ai cũng phải xuýt xoa ở căn biệt thự vườn 250m2 này là có sự giao hòa với thiên nhiên xanh tươi. Đây chính là không gian lý tưởng để nghỉ ngơi thư giãn cùng gia đình.

+

Là người yêu thích sự đơn giản, tinh tế, nét trẻ trung, khỏe khoắn. Anh Trung mong muốn có được ngôi biệt thự vườn 250m2 với thiết kế hiện đại. Thiết kế sao cho ngoài công trình chính thì cảnh quan sân vườn phải đẹp, nhiều không gian xanh mang đến không gian sống trong lành nhất.

+

Căn cứ vào mong muốn, mức đầu tư và phong thủy của anh. Kiến trúc sư tư vấn cho anh thiết kế Biệt thự vườn 250m2 3 tầng thiết kế hiện đại. Cùng với đó là phương án mặt bằng phân chia công năng các phòng trong nhà. Đảm bảo mỗi một không gian sinh hoạt không chỉ đầy đủ tiện nghi. Mà còn đáp ứng các tiêu chí rộng rãi, sang trọng, thoát mát. Phương án phối cảnh mặt tiền cũng được KTS gửi đến anh sau khi thống nhất phương án măt bằng. Đây cũng là thời gian quan trọng nhất trong quá trình tư vấn thiết kế. Bởi lẽ ở giai đoạn phương án này gia chủ sẽ hình dung được ngôi biệt thự trong tương lai của mình. Từ cách sắp xếp công năng bên trong đến hình ảnh bên ngoài. Để từ đó xem xét cân nhắc để chỉnh sửa phương án sao cho phù hợp nhất.

+

CÁCH SỬ DỤNG VẬT LIỆU HIỆN ĐẠI CỦA MẪU BIỆT THỰ 250M2 3 TẦNG 

+

thiết kế biệt thự 250m2 3 tầng mái bằng bằng kính đẹp

+

 Tiện nghi – đẳng cấp là điểm nổi bật của mẫu biệt thự 250m2 3 tầng lôi cuốn

+

Ngôi biệt thự được sử dụng những vật liệu hiện đại, mới nhất hiện nay với vật liệu gỗ, kính cường lực, inox, gạch ốp ngoại thất,…Hệ thống cửa Biệt thự vườn 250m2 3 tầng được sử dụng kính cường lực là chủ yếu. Sử dụng cửa pano gỗ kính đồng bộ toàn nhà có tác dụng lớn trong việc lấy sáng.

+

Việc thiết kế những ngôi biệt thự vườn mái bằng đang được các gia chủ ngày một chú ý. Chính bởi vậy mà chúng được thiết kế ngày một đẹp. Không chỉ có thiết kế ngoại thất xinh đẹp, những ngôi biệt thự mái bằng này còn được thiết kế kết hợp với không gian sân vườn. Chính sự kết hợp này đã khiến cho những mẫu biệt thự vườn mái bằng trở thành không gian sống xinh đẹp, hấp dẫn.

+

 Những mẫu biệt thự vườn 3 tầng mái bằng còn mang đến cho con người một không gian sống tiện nghi và đầy đủ. Đây là một điểm vô cùng hấp dẫn ở những công trình kiến trúc này. Sở dĩ nói như vậy là bởi những công trình biệt thự mái bằng sẽ được bố trí, thiết kế với đầy đủ những công năng, không gian. Chính cách bố trí, sắp xếp này đã làm cho cuộc sống sinh hoạt của con người trở nên tiện nghi, đầy đủ hơn.

+

Những công trình biệt thự vườn mái bằng thường được thiết kế theo phong cách hiện đại. Và, điều mà ta hay bắt gặp nhất của các công trình kiến trúc hiện đại là không gian mở. Chính sự mở của không gian này kết hợp với không gian sân vườn xanh tươi đã thành công tạo nên bầu không khí vô cùng tốt của mẫu biệt thự vườn mái bằng.

+

Toàn bộ ngôi nhà được thiết kế theo không gian mở với những bức tường kính tạo nên một căn hộ thông thoáng, rộng rãi. Ánh sáng có thể xuyên vào từng ngóc ngách của căn biệt thự để mang đến sự tươi mới. Không gian này tuyệt vời hơn khi tận dụng cây xanh để mang thiên nhiên vào gần gũi hơn với con người nơi đây.

+

thiết kế biệt thự 250m2 3 tầng tiện nghi đẳng cấp bậc nhất Việt Nam

+

 Mẫu thiết kế biệt thự kính 250m2 này đúng như một tác phẩm nghệ thuật hài hòa với quang cảnh xung quanh. Chúng ta đều mải mê với cuộc sống tấp lập của đô thị khiến cho đôi lúc mất đi những khoảnh khắc nghỉ ngơi, thư giãn ít ỏi của mình. Để có được một ngôi nhà yên tĩnh và ấm áp đáp ưng đầy đủ công năng sử dụng giúp cho bạn có được những giây phút thoải mái và thư thái sau những giờ làm việc mệt mỏi.

+

Tìm hiểu thêm: 1000 mẫu biệt thự 2 tầng đẹp

+

 MÀU SẮC HIỆN ĐẠI ĐỘC ĐÁO THỂ HIỆN ĐẦY TINH TẾ TRONG NGÔI NHÀ 250M2 3 TẦNG

+

thiết kế biệt thự 250m2 3 tầng có hồ bơi tiện nghi

+

 Mẫu thiết kế biệt thự 250m2 3 tầng mang màu sắc tinh tế

+

 

+

Ở Việt Nam nói chung và các tỉnh thành ở Tây Nguyên nói riêng, sự tác động của các yếu tố thời tiết ảnh hưởng quan trọng nhất là khí hậu, văn hoá, xã hội, gia đình nội thất có đặc điểm chung luôn là sự biến động. Sự tác động của chúng tới không gian nội thất có sự thay đổi theo thời gian. Biết cách kết hợp màu sắc hài hòa không chỉ giúp tạo điểm nhấn riêng ấn tượng cho không gian sống mà còn giúp chủ nhân luôn có cảm giác thoải mái và dễ chịu

+

Tuy nhiên, trong cách thiết kế biệt thự đẹp của kiến trúc sư về mẫu biệt thự 250m2 3 tầng hiện đại hoàn toàn có thể làm đơn giản quá trình này bằng cách phối hợp những màu sắc mà gia chủ thích và thu hẹp quá trình lựa chọn màu sắc bằng việc phối hợp từ 2 màu với nhau. Tất nhiên có nhiều cách kết hợp màu sắc, nhưng đây là cách kết hợp hiệu quả và đơn giản nhất.

+

thiết kế biệt thự 250m2 3 tầng đẹp phong cách kiến trúc hiện đại

+

Bản vẽ phối cảnh biệt thự 250m2 3 tầng bằng kính

+

 Nhà biệt thự 250m2 3 tầng mái bằng được thiết kế màu sắc đồng điệu, hiểu đơn giản, các màu sắc tương đồng là những màu sắc tương tự nhau, ví như màu trắng và màu ghi xám hoặc việc kết hợp các vật liệu với nhau cũng tạo hiệu ứng ánh sáng tốt, ví như kính trắng và đèn led trang trí. Với những ngôi nhà sử dụng cách phối màu theo kiểu này, chủ nhân sẽ có cảm giác yên tĩnh hơn, phản ánh tâm trạng và cá tính của người sở hữu nó. Cách phối các màu sắc tương đồng nên được áp dụng cho phòng ngủ, những góc thư giãn hoặc những nơi mà từ đó bạn tìm được sự yên tĩnh, thư giãn sau một ngày làm việc mệt mỏi.

+

Toàn bộ bên ngoài ngoại thất của ngôi nhà được bao phủ bởi lớp gạch ốp và kính bao phủ thay vì các bức tường sơn phủ truyền thống. Chính vì thế mà giá thành vật liệu và chi phí xây dựng tăng hơn so với những công trình nhà ở đơn giản khác. Nhưng ngược lại ngôi nhà sẽ chiếm trọn được vẻ đẹp sang trọng, tính hiện đại, thách thức mọi điều kiện thời tiết khắc nghiệt nhất.

+

Kính là vật liệu thích ứng với mọi điều kiện thời tiết, trời nắng sẽ giúp không gian rộng rãi thoáng đãng hơn, sử dụng điều hòa trong nhà sẽ không bị thất thoát điện năng, ánh sáng tràn ngập giúp giảm năng lượng đèn tiêu thụ. Ngược lại vào những ngày mát trời, có thể mở các ô cửa sở lớn đón không khí vào nhà, vô cùng dễ chịu.

+

Bên ngoài được ốp gạch cao cấp vừa toát lên vẻ đẹp sang trọng, vừa có thể bảo vệ lớp tường bên trong không bị nước mưa xâm hại, hoặc các điều kiện thời tiết bất lợi. Giúp bảo vệ ngôi nhà, tăng tuổi thọ công trình, kéo dài thời gian bảo trì. Chính vì vậy so với việc bỏ một số tiền lớn ban đầu nhưng giúp giảm tải tiền bảo hành sửa chữa ngôi nhà sau này. Nên tính ra, đây là phương án tối ưu cho các gia chủ có điều kiện đầu tư ngay từ đầu sẽ sở hữu được ngôi nhà vừa đẹp mắt, vừa bền vững theo thời gian.

+

Tìm hiểu thêm: mẫu nhà đẹp 2 tầng 120m2 mái nhật 

+

 THIẾT KẾ QUY HOẠCH MẶT BẰNG BIỆT THỰ 250M2 3 TẦNG 7 PHÒNG NGỦ

+

quy hoạch bản vẽ biệt thự 250m2 3 tầng trên lô đất rộng

+

 Bản vẽ quy hoạch biệt thự 250m2 3 tầng trên mảnh đất rộng 1500m2

+

Biệt thự vườn 250m2 3 tầng thiết kế hiện đại ở Kon Tum được thiết kế cho anh Trung. Biệt thự được nằm trên mảnh đất rộng hàng nghìn mét vuông với thiết kế hiện đại kết hợp không gian sống xanh. Bởi lẽ trong guồng quay của công việc thì cảm giác bình yên, thư giãn khi trở về ngôi nhà của mình là mong muốn lớn nhất của anh Trung. Để mỗi ngày đều được nhìn ngắm các con vui đùa trên sân, chơi cùng nhau trên bãi cỏ. Hay những giây phút yên bình ngồi ngắm cảnh, thư giãn bên bể bơi tiện nghi. Thông qua mẫu biệt thự 250m2 đáp ứng hoàn toàn công năng mong muốn cũng như không gian sống cho gia đình anh. Mang đến sự hài lòng cho anh và gia đình.

+

 

+

mặt bằng tầng 1 thiết kế biệt thự 250m2 6 phòng ngủ tiện nghi hiện đại

+

 Mặt bằng tầng 1 biệt thự 250m2 siêu tiện nghi

+

Tầng trệt được sắp xếp không gian như sau: phòng khách 42m2; sảnh trung tâm 25m2; wc2 4m2; wc3: 18m2; phòng thay đồ 21m2; phòng ngủ 2: 37m2

+

Phòng khách được thiết kế vô cùng rộng rãi, cân đối với tổng thể diện tích sử dụng lên tới 250m2 của mẫu biệt thự 3 tầng đẹp và tiện nghi đẳng cấp này. Sảnh trung tâm được đặt ở chính giữa, nối tiếp với sảnh chính của ngôi nhà. Đó là không gian đệm nối tiếp giữa bên trong và bên ngoài căn nhà, là nơi đón gió, thoáng mát và theo phong thủy là nơi đón tài lộc vào trong nhà. Trong tầng trệt có thêm 1 phòng ngủ rộng lên tới 37m2. Khuôn viên khá thoáng đãng với việc phân chia mặt bằng công năng thoải mái, hợp lý và siêu đẳng cấp.

+

Tìm hiểu: Những mẫu biệt thự 3 tầng 4 phòng ngủ cao cấp

+

 

+

mặt bằng tầng 2 thiết kế biệt thự 250m2 6 phòng ngủ có tầng hầm

+

 Không gian tầng 2 mẫu nhà 250m2 7 phòng ngủ

+

Tầng 2 gồm có: sảnh trung tâm 25m2; phòng ngủ 3: 18,5m2; wc3: 4m2; phòng ngủ 4: 37m2; ban công 16m2; phòng ngủ 5: 20,7m2; ban công 17m2; wc 4: 7m2; phòng thay đồ 12m2

+

 Tầng 1 biệt thự 250m2 3 tầng được thiết kế gồm phòng khách, phòng ngủ (có phòng WC khép kín), phòng WC, thay đồ. Nếu như phòng khách được bố trí cửa chính thì không gian đệm được bố trí cửa kính lớn kết hợp với tường đặc. Mang đến không gian đặc biệt nhất trong nha. Vừa ngồi chơi, uống trà vừa ngắm nhìn ra bên ngoài nhà. Ánh sáng tự nhiên cũng len lỏi vào nhà qua những ô cửa kính. Đem đến không gian sống nhẹ nhàng, thư thái nhất cho chủ nhân. Phòng ngủ ông bà rộng, có vệ sinh khép kín rất phù hợp cho người già không sợ bị gió, hay leo lên xuống cầu thang. 

+

 

+

mặt bằng tầng 2 thiết kế biệt thự 250m2 6 phòng ngủ hiện đại

+

 Mặt bằng tầng 3 thiết kế biệt thự 250m2

+

Mặt bằng tầng 3 gồm có: sảnh trung tâm 25m2; phòng thờ 20m2; ban công 17m2; phòng ngủ 6: 19m2; phòng ngủ 7: 32m2; wc5: 7m2l giặt phời 18,5m2; ban công 11m2; wc6: 4m2 ban công 3,7m2

+

 Tầng 2 được thiết kế gồm: phòng thờ, 2 phòng ngủ ban công rộng rãi, các phòng vệ sinh, phòng tắm tiện nghi bậc nhất, cùng với khuôn viên ban công hướng ra bên ngoài. Tổng thể tầng 2 khá thoáng, ở mỗi phòng đều có ban công rộng, với một vài chậu cây. Nơi đây là địa điểm lý tưởng cho gia chủ hít thở không khí trong lành, nhìn ngắm cảnh vật xung quanh. Phòng ngủ được thiết kế với diện tích ưu tiên đồng thời nằm sâu phía trong mảnh đất khá yên tĩnh đảm bảo giấc ngủ ngon cho cả gia đình. 

+

 

+

mặt bằng tầng hầm thiết kế biệt thự 250m2 6 phòng ngủ 1 phòng khách

+

 Thiết kế tầng hầm biệt thự 3 tầng 250m2

+

Mặt bằng tầng hầm gồm có: đường hầm 18m2; phòng bếp ăn 52m2; phòng ngủ 18,5m2; sảnh trung tâm 25m2; wc1: 4m2; kho rượu 27m2; phòng giải trí 27m2

+

Một điểm khâ đặc biệt là mẫu biệt thự 250m2 3 tầng có thêm tầng hầm vô cùng thoải mái và hiện đại. Khác với các tầng hầm nằm hoàn toàn dưới mặt đất, tầng hầm này được chúng tôi thiết kế kiểu bán hầm, không gian mở và được sử dụng với chức năng như một tầng bình thường. Tầng hầm sử dụng làm phòng bếp ăn, phòng ngủ và kho rượu. Ngoài ra còn có thêm 1 phòng giải trí hát karaoke để hạn chế tối đa tiếng ồn, ảnh hưởng tới xung quanh. Hoặc sử dụng làm phòng chiếu phim cho trẻ nhỏ.

+

Chắc chắn rằng công trình biệt thự 250m2 3 tầng của anh Trung là nơi sống lý tưởng, hài hòa thiên nhiên, gắn kết gia đình và là điều mong muốn của mọi gia đình trong cuộc sống hiện đại ngày nay.

+
+

 Đã bao giờ bạn nghĩ những mảng tường trống trơn, đơn điệu thành nguồn cảm hứng bất ngờ “lôi kéo” bạn về nhà? mẫu ngôi nhà biệt thự 3 tầng mái bằng 250m2 ở Kon Tum đã trở nên thân thiện và gần gũi với gia chủ ông Trung. Khung cảnh thiên nhiên như hút hồn gia chủ cũng như người qua lại, không cầu kỳ, không quá xa hoa lộng lẫy .nhưng ngôi biệt thự 250m2 3 tầng mặt tiền 21m đã toát lên một phong thái khỏe khoắn, sáng lạn và tươi tắn. chỉ ngắm nhìn thôi cũng làm ta có thêm nguồn sức sống và sự  thúc đẩy sự hào hứng.

+

Để nhận được nhiều kinh nghiệm xây nhà biệt thự 250m2 3 tầng độc đáo nhất vui lòng liên hệ qua Hotline: 0988030680

+

 Trân trọng!

+ + +
+ + + + + +
+
+ + + + +
+ + + + +
+

Trả lời

Email của bạn sẽ không được hiển thị công khai.

+ +

+

+ +

+ +
+
+ +
+ +
+ + +
+ + + +
+ + + + + + + + + +
+
+
+
+ + Facebook Messenger +
+
+
+ Chat với chúng tôi qua Zalo +
+ +
+
+ Gọi ngay +
+ + + + + +
+ + +
+
+ +
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/cache/wp-rocket/localhost/2022/02/13/ngo-ngang-voi-mau-thiet-ke-biet-thu-250m2-3-tang-co-ho-boi-hien-dai-bt2200921/index.html_gzip b/wp-content/cache/wp-rocket/localhost/2022/02/13/ngo-ngang-voi-mau-thiet-ke-biet-thu-250m2-3-tang-co-ho-boi-hien-dai-bt2200921/index.html_gzip new file mode 100644 index 0000000000000000000000000000000000000000..7eac0a06f271d6a4f9ad3887e027f2277285ca34 GIT binary patch literal 20770 zcmV)5K*_%!iwFP!000006YafgZzRW+DEPSv-2V`&Mw_HvS(RBYzM7P~sYf>?(He`A zXI3pVva+(OvYC%^KKO7?1AgG{;O^kU_Id_0#vQLMYdl)n*2-fUYq%S82e{PL|LFTm z_M8(DnGso8#Uh*Rk-ct-WIiI!i8yiMyy8UU%@Z`>z=5HP*y8z84;_*!8z-lQcPoMlZ zj|ER3|0-kY*n9f;-&1w~zggdV`s8m?c=q(kzp_@>3|g$s(x;C(;tsx7(eTxxQ|%wHr>7)L7sSJbSxl`+kiL?9?`(vNt^0u5ps{5e)6X-CmBPev~H5 zOd#7{4(wyY3+$0=Ok(%YbB{KCJ07{qrHVCtHHl*Afvj3P@&@U6djPc@*Pxp^1H`Fk z`$hsCbGNNJ1NdH$1@ZwlsG!X9AWRVN&`q83GN;XQv*`@N#)D+w`rcvO2;G!7=B!#n zXjjr0MbXH2?TME(oG4hVX3{u9HZ2tfdZun1+9|MgdNKhT*prFxId>M$tAS$Tn%E+Yw}N1ZYC{SW~jzH!bhmmIlc4k1c+|)R5jXwTO z$C*LRG1^9o#hl0(M@AnCL%Glx*q+f(MH{MVD>--(X_AiJz=bjL?KFu3w+R}+g)w`O zG@Wr49>65Y!Ze#ShHlHTOsfYI?<&zHsplM=fa)2zeLHU0-F3Uy?XF!h)-;Oz)SD!Y z)`r#TIF@t8_zpphMlpz*Xp#Ze4UpZA-F;qI6CbD>H-_e*<@B8miFN5F=^-&4Q}-CA zFldjRB`+8?08J8r20y9Ots6uSJoa$u+Q3UDzJ0O@f*l&|vKPDnwSXO_TT9paQ4EMS z!G@TAb8IAIdk`H}y&b#WXq;{`%MJ7wq(my72cVL?aFdzLY?y21w});FTm?$U_Pr65 zGR(#l1T-^7G4T4JszDQbfEE!VP@g|qy4fU}q1nQT=MA=(fmVGOpaaAA`mr6K7@Rf+ zP;;46cUe+*d1q-ej-vFTVL&Z=0E*e5VT3{Tqj>YWX|6ead#n1jVZ@{UrdhXIow~K& zn^kIH#|Lg~SSEt&^=<3Sf;nJwt#0+sD&Hc&U3-1)%z_f|2EcB2)#992xS3!KBPUBX zTa)8QUnSdxtr$mc|G-PpaxsKOG4YOF--uCTY_?YGEBGpQlgQ6dhiqCKt--`weKm!KM>5))?D~0UUS& z+yG2%jAHx5D7cLi=wbQ6=5^O~ryw917Y5L_@V|Mj;58S*rxmS$>>YXoDCvTJa!za* z{75{byS|^f2xkELD^=RAw0aX~h#lvpR)9SQ?x+roH89sZ@VB?ocH65e)=3smd|rU=K{!(O@T8 ze~`HYBLZ{w!ekoSL)*3L*L!PrZ_U!++i4Vd4v@*UgA0Qn4AwSm9F30M-O#{?$WSQD zFWmNa+uY~@ZQ7PIaE2Q2z#D{;VK2lzEwjB2WNEFhb%sE80vfxc44jx^);`RyHbF7) zLgeLCmuWS6t*$J`g+gVyLpxqMLzsvbq0l%#2&^Rlpg!U1&2XUqZv3!#vdN!J74+R< zsusihsX{SQUoAxs9$g1h0)?&jExQj>5M*=;Vm@&l6ul3nQGkl{QG@DDeHSc+)Q;2X3Ib-iitKK=IPXd&0_e?j`D9{) zmg&3c5s0;^dfMAZjl?102XhQ{3)1VMuzt)f$M+_iG0)nnjw1Oj{LgE=+!1_L+Tk`{}(HHi|B6r$ZH-RN#{D++5J zK@*Lm*q&^1b}WpWsvd2UvaC=wgTa7z($3OIF_5Nvha9n0zU4qVoz9kI95SD_v{@-T zjwrT}RW?CoZ;@Rk-taEuJ-6UJYqjB*)q#@4!UNZd$Y2OL>NJ`V7)}ua{VlN82JZ2u zW#T`@!prSrH1VX34gMQg6m#vnuTnRLz%6Jm!#{Bk)-;&SwV`i#z*9+Wt9Y3k)tnCW zB8i<%mc{CANker7s?Cw;NWs(OxYu(8aY&MRVPAhu(34j16&|(v_MU z^j+XpP<#^r3S_IT)-N0XQ8XO3Dsa>DE5Mhg!wPI^oVi!n!5RI#0&L0QC`Wc(J}t1q z>l$Y!b>1l9wIa~DtWP5zm7@q9pGI?|cG$ER`3%~A9n6~>?OQ^p-)QZwnI`=1&~Ln6 z+kMFn9gqlLdCQ5tNvaiwVqdxrCW4ea+sTnV;ZH!ILQglQX0(W=F5AA(1A>KAh+(#Z zj`qP=#2ET~xzLDx-#Ce~H0y&e1Gqtz<+2*61!C&ZmC_8HmK4mm&2F#JYTuBu(3}$c z7_AlJ9lE~tr~(P|hOr&E52y74N<)*&R&z^%B2^AvE8=lWvA@9auErIN9*U-$CFw5k z2qi|cx72#&a=Njxpa5^Q(6uDgRYl=saRSO^5_xD72soS~&afIc=w%Nvt$w2Es(u{&|?v_xlJYZk#Q z#F_wFn8!S#-kcZKdXPk6Q(q65A2r4bX97H$G!I)%AP{t@W%f$&Uj{?=?XTahj!6%+ znDp1*dTD`msTZMIIi`2y9|d;k4c#QILZrOr2xs@m3mrcjfb3T4G^kE>2R8wA@Y{OWdYkdZp z;VTi@AZPLnFV?ggW|OX7gekO*r9qe6XuSge=XKy3=>mUD{AIP_*QHVi;GMaYLRtpc z;E%L_T>o;TVq0*tP_sLY{^(%@u9ugBd2DVmMLaX{oLR{htB~~S`$r4_8K|V)K>^R& zdL#u`u?+v-td-hQoc!VedNQ=Y{|DWIVw%=$cWx$RtuV04w`;WI`2cJmKgtGBJ$A_q zvLD#TP2cM$O3b2R&kHP{T=8O0h2&?4(*uX@;%#T1Mul^nXWN%)0cgh zR_tz{?AxO~kQ*z@SZaCoUGu#YF+wx$8I82t6!vF8s~2pr&a(|s>+K{u@ovyg%i zE2|HwbnFJ8mbKE4>dai-DieiM`U1m81Ayb_yT@MN^MRF0R9Dg_6kbB(c@eJ3Cdj8r zE^nPU0tyU_TYJXqw|0$o>$u%QeOzPcD<|7EdQuh=mxRsQXdT0khEF`35=#?|&Zbf3 zjE&2}zHT1F5650gKnM~=yc_$T@7~3<1x4RI1LD@2c?>@V;@s%3IavbctwAE7ymZDR znGZ2~=LNVD#A6-odZ*Jf*E?XJk9l|n!wAvJ8_YdX z*nU_T(Ca2Xm*BYx{t#C`^0hT6kiQ4ZQG3~}j4k~H42KBUP8)_`nXdcckAO` zohXb`4-3~>BN`43@KX+9Uh|+ofzOji@LI0@7i^@5Un@Fy7T!kR4#AmXP%gi0RnY+K za;i~6DZ){Vhoj1r)hj8ZuCh+^%WRj_4%>a}E%xPRL;CqpH9|V%OE8qouvN$m&-Dka z#MpXP!>pu@M-AWZyS@>+M-8y}G6UC3kfJ4{t+wYL)$-EgD4k#WPLvj<6B|s#xy9dt z5=D8;p8;!lew8O%S)jeVAltI{ExrSBU&sEY0-1)W)6j7V#O_CM>Q!L0*1T0V&EFTL2GGL zNJccl`x7lGQj;*B$ZB=Lhky(I7u4s9i7!}_ts{&X14Oh&UJ(@St>aMSsZHXxls;t$ zeyZl0*<4nktq1F%Zmc{BOQ(2|(1eyA+^cSKqn%9miU&8#eXGC=NPF#81zAAhVige< zWlCJsG6fm?-!h7sjAd03*pK`HwiMU#l!49AT665gCe;=X_12WEV5~g(W3U-x(2p_o0c2C2Q+DlU z80AiC?r@Y>8N%p6!ev!OY`MDxJG3(&+-IOLw2=QXunbPx)EgKrvnL<(pbpX|9N6)I4Krvl%@9V3Nig}C zYGN6bAVagUM!{rTHX=FjCNxlNdZAi+nq=PBcHV-bASk4;yVdc!aCZ4u&)u=13aQyVF7m5KD#2U##7)j?Ra`bL58ns|@6gi&2Wh8)YrV9p@n zBo3mF9UlM$lvgSWVlCh&>MHb|&@fh63?^&=8tv#T;H-&4G_OWg!B7)5(RxGtScdUR z=m$vii>$A}_I*Z|^lK7F!6Z!#lpnx%^emsW8Xm$0R+=OMZcgErWs5Y?m2qU(NUq)hu#noSmHhGGyV1(z_?f{Rj|v-uHHt1~oH3 zr(qL_2z+v0igN0lMbk^8;pH}-q@IeS)O6Jy#CCBhdHI|mW<(M>xPOFJo>|}hs0r8>5pt2a(b1>5@-LBp5`*wIBcF2%@xm|n3cHDjx!BYxpg%Rc| z;2=eqmmSA+$&nOWvj7yW3RwF{eI`Br(!UMc|~AZ zZwIB?Lfu=SBPs>%h9Im*u^m+P56l+vc1{l!2-RII3Y7ck6;;pINwo+2M_!84?_xv9 zQeJ&d2Xh3~-IK4&ol9l4>8^p^^3!M&RC)YW7jN_)y=?GjqC;~UPnD;d{+1gKSe7t5 zWCFU{@~OAwhPxp+^U*|YILVfUCFdLwL=m*I2m%xH=-kp%L?H0}pRzLIH%rPB`A3=- z0eFZgJj=EPh1e?X15tpR`O`K9!vLCQ0?-4Y<-ndr9s|mHBZ|e>v~kCUHTF72;BXUZ zi5sxF2&*>57xYvgAKKl@?r^Kjmk`V1p@{ZZ?qoc-Ao02A4;MrmE zWhjK(E^kN2+sh{0;7?cnUcS+O8DL>SxGD|)eWI5bXHIe3PtQe~TqJSF;(W_1d|8E- zQ<^)9mvc77E{NswyWi9tC2aT?bgcR8B#+^XGsw?ll%J{N`tYL5sEXmTHX~8=25B7j zItoU)lwKv}7SefBUYMr!6y>J5Wb;%Q79!gK{Z(3!#lj$_q{O@~MjH(z;XG5MLp%m= z9;7oii{JN0WT@~mQlpA@6b;(06*fu2wX$w$yg|U}2@WnOjzj?|-nhpTI~=&68HTo> zaLEe)L)UbxgjXSxgkEDH#YW#iSE0HRoim!}9>$r@v^FHw28}kjf_rgbi%YJqwZZ0B z7&b(Bx-C;>?ErNuxPwfDJjS)Lk&jssiYs1Yz}!gf<0y=R6Xki-f8aW);n=A=isBQn zlwyqeQW(gvL&pWfDbAl#J+TO@l@!kkxX7vw=5D}qrnZvV4(7)y&jxOSK~ouy!kRLQ zRGV@dlwIng$xWH6)U2r!2EAL1GSzl&-+lVzf8S^Ocb-1^O^Nkvifs|5!X{o)Ml{L# z)M+iYr3bnaFPQkm-P40&ne9s%6&>Qah~nEB=4mx+JFlO9_igss4^F>*ms|e6H>1t1 zOK)@Qd~ME?&%&{79A+?37UiEc^}%F&cTT^}-ue8Kr%(QAk6CR0>EnOdd-aUYnU~%< z^MajgRraa1SU0RM)NF_Lh@4UVDD%<`1 zlQVj7K zZ@uzzaY7yP9Q>R^%3k(7+UU&`rwesI9eWrj7|oKP`*-fL-P6BQdw2oA|Le4V`OJ?0 z)UxTheSE%c`vkeLJpN9yjC(zO@BtvB>TKJSDIEER}aNm+vj#Dci z37(Yd#v);pY$l%P;DtHk)YKGDv2vKd?EBFupXPKUl2>V$mm(sx9^(X5kJu_p8#*z} zuuLX+8~($DRos6fGIuHJNrw)onY5T5OX;#?QPWkD+G&Od-1U7g8MAWMEFFGFNx0)I z=!cl%GlnK%Bv#nUxf?zGM8v_$trzVSNgrGUiHuiKf-s0}a^>3UJ4(T2Q%@+DHJ=#* zK~D#eI}IROkAIJ($Wp+raF73=<-=8N>Rme4|#EH>0PBGPMjLe77nx4e}4UC5b=VWv&Dg%hHU)wP?+#12*d#si)}Grvifm=8Cb_E&hK z1PvLcO9qrVeKYj}w?qmUPbOv@o|%C6SZce5%`(iEVYTurn}AVs_|&>>x*5wkig50nD+P8?$-ECLNpFtnJWWwF&%>BABJRFKK*EV6Fjl z6K2lbzB*EIvxA~O4?#CE{`T$=zDxyJ7u&y zQ+`hOEHb7@Jj`xuJebhF_v%co8PvPVrd*g@(`h|rX6@Sps4aJyVR}1hXD%P;r4eN* zpKnXkHMs(<7KH=@ex0D;kdvq%&nX)Ky~eEYy7tE{QE%y*mhP!r+qs2QH4nuY2;z`^jW0C8hKl z=0t;s9Gw1)-3muebO^pwkUf3!!;p8d+N$fxLja7x!x1#&M=%cH&jhGdKZ4qQ zp85Io@y8+c?R&B^fWIe=L&+YV?5Ly4N8yd9Pk!R@ zQRQtt{R37VLnnaDqtAZ>776b*_;iO)AOG8&QO>OpDE+VS=YU$ScXGh*pi?jioGozZ zZScbWC(`#AT9UHk$Oa~Ju}4pzeBhNkF>dYr)#?B7HroZm>TNKy?mm6|-}l*T@SEv* z4_)((R&Ibn@hAUsi|xXze_@~ffY<%}6HW)1B`tuQ;t955|LJzETf;}V+YSH5_-jB* zZ4@EjdE@j0aCV>kP(o0n=u{AX@pp>pMK78h*c8OK0Gc4;JaA@C>G0{3zxS9WZ^7sO zFgOFpE^#9c$A@58e*T-YTYvg@0Geji8K8lvPyW_sh~dAS4OUG3Ghn{)^zrXgV({;T z^Psh?vpbGJGMGv~&#EEe^x)9ioq)62e305~PUh3H0A8+@3%*5A?tS*X0Ougg)ZfkG zk^&W|RBNG*(0oJ@4#W#zw57_@|STgqb;d>=x|dKVv3NDamZ=O8rU=KRGhLC;#eg!XT;pnL7Nqk33tASG?YH;v=9h2J)x3A`-5x33pWPLzcCzz2 z2$&Pyyn@;NE6q;RtcSXotil*L)5OfphSBNIPZ(eeQRu)Np?UY@ryjRx5cnS^+=4@s zr4Aq?nl-`c`(A_X0fJAsRfLL&j2}gW*SSpcp)qLksB)Cg{0|&`Ujd4IJhWiMXJr7! zTq?~{gai-%3z>BwWjy%xTN?xp7skSbLx1avoKlN^Pr0PzF`X+6rJ5uxhCbq!4B;dq zl1gut4ulojuyGhRscQ)qZ00sp(=ztY^!VxT*bc};EW4^#jP5FkrF*Kx28>Q<;3w9| zuNjF$Kx#s7YMTrL#gdxaAU+=?vuV~!IEu)O7u#k~B03XFx^W8pjEBIIN4 z-sCd^ofi<2BM)YsV@HJa-^r(X{84~Y;16|Fv%e0xOi&>a!N~WbW}Fm2VLCsN(>dW2 z3>t<`s^%0?yTj9uQtq*(w0|#mCAqtHc=~Gs|L^3VOwHc|Zd;&8{uSC7g?mOS;(GuE z6tYb>Kk>vIulAOZ`m)ghdAvTrY2@@5UkS`ke~#pFBLNKDQ`&F{P(FcyIsI8gqO>kT z#?`pEzW_GJ$EgS~heEgo+`vkusWJg!hmHTC$BwydE`%BJ6x91*k^`|bO^%^GbNX)} zI{Ao6BnM*x2)};}gFx;rQu`B8N(SnwORuiza ziO30ot+VA!IImGG3qcX)1L$`QK8qY&9UxHfh>6Ro~HzHPZab?`15d2KV z*mp7VehFH5aXgntlnSN0b9<3USP8|!?4X~fmvWbal=m)hzOZBadPZcKVC9Wj#sJhB zJ!p5ky^3f$1`3Tq7SVT|sVGzeEet;s%pgsTLo6EFfzeO9RtHC*foV21-RK55XsZrH zm=Htg((>-_l)}9#v2<-LS2|JZE3pBbqi7m5z;EEP`(VronMVuhbE}>bG(_>|pv2Ic zdB{bS7#5Q16g>ucnc#cS`VqIY4`swznfu2WRE7q9j=sQWKR{Q)8I!0%Ai@v;5FyPU5VuFf(g29upJSWQ+%95qT%*e{3DJwMnqc7IgMd~c$o%~WX;Eu*#@T?}{(k=4 zp~*+YsfYX_+%XoPe&E$hUIkfaDe4R`cHUHb zJK;u;U@FZPMlBn7Ubgek|ILwazdL>J~H9s z670`~P+TQ(s*F()Y5pIU2`0*KEDuy9nx&O^PBNsQ)mCjYbEm=mNGLY<%wbtrctx6MCp;h4$iD1%i!x_Duj$3HP zjbf4J)FhWctw%UOseO>UN@V#KA-?iFuNqyn6n=^}FhO9=_G0B$!KrW&nyuV`A zgx}0TT_p{9B_ft;Rbyu`r$6_PDvUs3Y%3!1kc3}h0!m|vN2@t=anX2q`a9v6DcvHg zN0LzU9yGTeNl&x+r)==qM{xToN;Ga$eaw+@=C1@bi+#8il`~AA@knT+dGpy zl{`C^Vs=ghcILWbgS~V5vpQ!3@a#}9r8X@R0QgT*R4Kog=AG;%%Dma!P|EBo#R-7x zeyUI6fC3i;SuIH9UtBP#p$a}~Vit>rQm~l@qfhRnfOCLePQm*;t~t{*s33n4j3(_w zib{#x%ORO|+~pG(oHBh%Vdg$x6Og0KHKWoYp>EKT9+RHb!sm6>iEFUa@8n_LBD#Of zms5D8m#^xCJRUzHjuGQN67*M@3wEgz}S({^v&m5T~3r4@1EbKR5@K!9T+CNVVYchv5` z)$AmEjKUh^cR;iPg`g~5M!Y2lJV2lZcI#?n_Y}JF^vU;2Aq*aL(4wt!88?@cd^z{C zj{phUEYO62VOWX>r#}CUkTAL4RO272(H|%T(q#gqOto|uo==S3 z0TBwf7>O$CVCE880>Z%vhy?=dZ=nQmFDNR&?@{dfm%-+RLdx9a7Ungus9EW!mU9;D zB1Kqm@9DSS2D9w(|Fc^PxZsHV<1X5Q-}xGaTE43m_?N$8`*-*5VASQmv;D7sZSPgK z_v-22-Q`DT=rNf;o@k7|Jxq}pmn1sRxpU*$gy?ycV8g*WoQ?%7Ud@4IQ^rO&8a?!%S^wD@H zc`^|Kr|olLUT-6(NkDCL1f0~-+SDHP@?J$cAFD{`xB~>u8d-#)3g-{ zE}><*kd~MtwvXt^iYUt~yxc%8Ur32B_L+c3zzKvs;rW%AXXQ)_de9jEnd<#*mW%J~ zL|B(~5lpJsF;ljHDSwi?FXbgDP|4p}AjGJ9Ok;8+c(AK5(M2Lpu>`6uV35Tj{6XI2 zNuF-Rqw_opQjAVOi61gzYIp;IaXjNtLY|20&>2%JJCYDj67p~VXq`7OAj zfs7`McYHFweIP;~3cX4Tk6(C&C0I-K+-LjQm!!n1 z5+?MuY|1&YCzqhZ&WG#y5$}x57kzbeUK`Y9jdFYtLt+cAj#Ni=lsPDaiE)?W`fC=upl+=t#*P^2OUc^Q%}Pps0`H(TOq4DMoP})Drm;GWWAmbbQpM zpnp{;p!tYNp5w^ZIL>sbinyAZ2wht4kYt+*ys^F=5xqVXF=$*WnrJI!H~^f1in3(> zU>-ElxD^KlOvVyX zE1PUC`z( zF6Ms}u>n#@OR1 zA*@_R@uVM0*w>^gMZ{>eZ;z-;ZHw)?VwP)}LMiE~&wrEgNs%{NiV134 z8UNz#zhZa3hF@j7Bepeyq5GS?SLbeMToY#lv%OcJKKYmb@BrX9!DpvMSX#-=&Gfm; z1u-&jvC;c-x9F|WC{n5f<)REm*7U78{O5CZFW#l@u4*2XJQnaoHV4&>Y8S; z5&7Bjc*%T{r?FJKTQY@M9I&F{D+CcZY{9%n)2T6N@8GVZ0P`+s*OxS7=Cn}to~rUv zXmLnMSLJ$-pW;H%$&);)`MV-slP7;mucc2Wu4l`QK{evwCjY$CLkD+J6jS=!9 z`O7{Ua)A2#4R#0jJyt9Lo$zvGN`o)-BQM8DBdF1#&+`Y+>?lRXG4Y-#3#6VM@l#W+ z^)O$tnx*YfAXk`sxYL7yxV|dH7I-{z|(q^dS3xlsMN?<)wBz zb19*;kx5+-zKSr}dLeVU7B7q29zR*%2uIl^i1>4(d;X-HyB1W@iVDODcV`NGxltyS z0aa0g3`MS%ww{601q@YTy8TBS?eV6Dvs$AR&Xcyuf)eq?=3}81z z+E8}lr&B3oNR7Vf>QIw4L&}+Q!{53T=ukpigPV=+k=c-jiF*7e4YlIkCH_ zR4*k_O6e8Ko><;+z7;vuIF&o8c$k=_bBh>oWyp|uFjI=}0r%uK-Es^T5ZTEqj=3{DZf?-Vi#Q-)iXwNa!D%S^|4?Ag(YmPZQ; zr{;^Svs&jBwB@5PE=g5wlypbyYE{*_(LFZ`&el+Bf?|$aake?KH4RxwH??rn!jI5O z{Z!1CKfbe^cz8f4=!>2dNQTEnmz-_DUK?q)N}x7n@pt>M(p-GYcdo|EbtUpG%TlhomGs zRc}X45U&e|Ozt#MtnmUHKi>}V+4|n+*=AfAD03M9d52Ub#c{VsZ1w z~MO+e(F-;qr`BQCSPdTKaUW&bOe&egK zYBsti%xAc{)CbLN#pR&XEO4sHOFAxu~j#Qi-5Sb_G7p&qqK;{e>eM z1Op@X&0#*667l+Dk@);bymJaIOSgtDOYU1GIXuSmajsPIUjXCtB;}kv>Dul)75|*$ z)8=UaUb(CVzK}=jzM*X@1-kvbWcG@463@tpEkY+636za`c`F$!xO}$i!uTjX2-y)qFV^{iKX1;pd$K`LTsBJwJ`}@=cB{hmC z8q70jcnC+`KqT@C#UX!U_#4`h%cY>;&w?qAD0yC#{ZtHder{oG^Ze?HD3&_-V+@}i z*s&cQxMHu~nD4w9bN0ue-Df|vdEgEzqr|V5)8}~O~oHDHa#2#ig1X z%ZE%~zQwJ-%GT>KKRcAuiI%>KEu(z86_ydPhFG6`jW$~d(?{QVN>h>+569GXC8ecU zu*;oO^sarLVk9?0@EyocpM07>qFno98)TAAA!g(+Ajb)7gffM1>UfHB&aisWQp=L0 zD3YqU5RnmXq+=t#GarX<5v25TEgMyqLb3n8;5p!F-PV)SEC_ zx%|D|8lw;DZP(r+Mgkb$z>>EnlhT(!r(T!8WGgY$@=w`LtpTCqGqfESzbDslqJZ}# zZcN6L7qji>PF~TqS44|y&^^cZoC9EOFC0WijcDSAD}X3zU_a_~MdYe4bJM;BFk#hX>~z>|x%c^57PItsLC^b$M_Lh_gpGJ@QfzK*hkmn8p5c9o0XT@e`Ds z9=?6~qH^@)+w$P$;HJkeusuJGHc4}wL|Ob*doYOIBpJK0iv#&$lJy_B&Y!Sc|B@X{ zw(uJs+q+}eIpA$h;13MSCW3n2AKNT==v+MG;!x%s^D^GSJ7%+2Vn8*}S!VimnP=Sa z(DkFqy!k%ykZar|r5O)*O(%Bk)D>TWZa(MfPXmcc&7MYjX;d6-j0p zX%?uTj8Y_;?eHB?{dA+XW_A?wiSWNgeHVvk>2V!Xi|bena7=$!N{^Fjr-I$y7Z}<3 zhndq(8|Pv~u9ZIszQhUK1hVe%Nm+cm*yf6arYrwGJfdR6?=3gtO z|E}d#K#xr#v=8+fhI~%^F>Z^p6aT~@aa2*hc(=13;}WV*@ywe<5afuGc}oqpL&xLCj8Zp|at7g%^)DZD>z=O) z@Tj@E#W)X#j=7lNhr2mqVc(`N2$KNP*gJN=nR&50FovG%4~zhOME-ej)Ih-d0~g4F z22E{;zGRff`Mz2@7qp*=_^JL)vjI%0tQu1#>@VlDM*NvnPzMPphXII0`jNrIyhLs1 zHs67iQGoa&=m{v$2t^{!Ep=33@a(`%bEBvG0Z>TpsRqyDfYr z5Cd=tbYB1L40tNmyCJ3%dgX?-etLhSWVYMEKN1UTCr$@q3<{gq=GxbN@%M59BM|A^#hN*974mPi-!V%yu&8Q zYq@wJZUy=``LQLq(B&aQ*?5Ap%tvXN<5(8NxQ}A-{@s_B1&rmE*;__b(*>H)_yyp> z+zHbX2=PpyFgYxoUQHyzj?k<(UoZ?NH3KsY(0)s0tz7;K7clrCJ{d;905Oq?U)Bmr zJo%#6&3rE{C4)v;N4S zzj%Sc4xA)}@LK*;Sbt06PF)WY@I=U@Sp3-$b#vokWKWFt+B*E(*y!bb#iy?CBHiJU zYsW+HcuLFmL1`XrG46S7f?$cZ2>#MdD!8+BT?5V@f&nzK2jISp4Diu58Te&eOOKYm zN+BP%0v@$N4&7$A3$IqGLIsQxls183>=A&%6*)qk8)Cw=k|GDK7H$YdM~1a-S?!JP zn%TwCREPr7-mu#3UTeeZwbm8&?u#`z!)h@yDe%HaAJOOlV4|)z5D3W&Lu4cVR;9nR zE(5Sx?F0;+L*Tq)77UDI=8xdl30|Mz^$F)D%A2~sVfH#}t=0w~&1+?x0FUDoY)GXj zA4_C2by1QChne48QTkg~{w^oLiI&=FYCB^Rr$j^&eEd>mc9rti67XS{xE zw=n^E49z&IPp<%;SsDGuWB4H;?TZ4jy5=$b5D@r#q;(8>4b)fxVJ{{CHWp_9sH#K2 zM|YK}eCMYF=@30lZ$4XG6wNut_)lzP7ah;0no-E-F`v-6TQ45w0#%>?Bn<_ER`2pmTjT*_(KX8hcHiAjI?T4EAPY`q^LLi3^yV z_m}i>XoKB3{TbWCqiku$khefakzK)ae|l7W2UC6JCWp$e*=^#1PG8~EASKiYoltGo;MJoLt%?Gz1>;Nh+aRB5nVFuF)|}Uw~C3s(QWlw=6a=t-)(g}>)qD+ zT2)UadpN{V><^&0LmrjHTi-!$N- zFl*=8-U`K$=sdvbd-GruPY5+S1apQ=&P}!fI=_V3qXP;)azxlvgkUZQ_+Mlv`S&*! zIdv7NUaL+Jy$V$OC|bWKzhiSH7z*(o(|7godpf`g)3}<*Vhc~sR?pfn*IH)f% zFEEkBvbt8s>X~cZZjLG!MtrjDs^>etFF)gY`tx9+xw9}S@6bwIu?y{LxlqTZ9=m__ z(@UNTA`Xka3WT>YlUf{fJCBgWm8yMS;t4X)6--v_2IxlMV!9#Bd}cN_W|`~@@_Wm) zEUVpJTWei8zqdEcPG_yX(VE5X|Kn$u%h$L1Q3mcrauvh;mKz^>j(a7rZ~M`eh|FDh zX*(6uteO||@tR`AhS{CTjf|UPw(pI?O@;{o=jPBNggd{$>>y@qz1MAbO|xBL;dIx# z8=aP=M=(olZnZ9Ib16F$Dv^oyf-GamIzr%TP@n)tRC=Gpc#b1P5SdWEXYPP?yo zf1bSiie4?yezoIw!z8swu^m)(i+S?xoQ^3Fs(V%xD0j^(sxH(wwc&Xl{DlTg=GV{Z zS7oC8^y_nE+CTef6={DJU6Q$dbNW=BHdyg~;k?1JWSwI@;c;#~)9PG`x2z_j=>o$p zR6nIx9*w<}vMVWo0)M3d-l4!VnFKrgZX6^sa)Aj~Hm&Mj2-cgicW65&mjrDWroQJ+ zx9v=gU-qDS?X^yOt-D@rQck48RV@-OMz=7ZhXN5NJi8Ec>OL$*6Y|eS^P||+?^4{_ zd-Y~NX3ZUnCVuvV*Is*xnU>jYuY=NSvq8ka1O3{a&wjAa_9u-Zm?#gFq&>>5ji%Xa zq7BZW?aAG;B14ZK7_!M^s67u^-opLZ8M?npzkTXAM%y~>EQ8toYdTUq<( zTkgu*9}xDy0PC$)D1Tfc0qwv3Oy-xa5dW-N|Eya7tXltARBLIuvkjiW+D1=t$1ZcZ zGlzc8{;ZD69=b;Q>GZB?^2-Dz`LG{BdxPTnlqbxt zx7OOd&Kizc6^2H3jHd=n+5wYZOM96dX))fefEwFg(%O{B(zFAw^Gc+%vbiN&_Y@5RF5aB z>Ltaq0xl-}Ib+Wsz;osC#>TvzH?kGQ2Z(Ar>W6zsm?;!Xvc4d1K{f+l3&ga;>vHH) zys^B)l&*DC@nte{D$(!xq$$o}2MeyA_Z|}Xzc0d2*YMZ@w!Db)YJg;$7ZudK% zeRofMlksX>zMz<#Cb&IxiCM<>bnAC-z49`h5ouXloOR&mxe26=#dtp*dzko-jo-g> zm+hYZoz}vlRhS?S-ktD%YrMcs{F#a5Xkyrd08iV=zzhn!Z@K*ZwC8--PL@W)2%2!C zdt126H@YuvBc<*meteMBc5Wq!Hwu|eBxGL5JxlgAIy@&~JM0a3p5&zYMilMhhP~Kv z!Kq8xD;U?Hh>A$O!2gTzin#hu^dGvU|4Cfyo?9k^@rAjOo|QlO0SNLg)% zAmt9L9r*VL2lsK`Ua={Kp3z=DCawikc}uX3QEcOR5r}hWXMU=`Ej{Eh3BIT$p9KSX z<-k-3T^|?5cmqo=zbGaSZ;-(ScnXi4^E4-?iyBy>O&gmm3lle$6sq_)t3fpDuq`rx zT7ocjc23X;+-9e{*6Os(4Qr#b-ZnAKwiM*uslX@cG%TY2;%pPUj8x5Zrp8gcMr?Uh zTFV#8{Y#_HE{N^?FzVu< zYdp&Ke*-)VkZK0ir~}VLuhjK7=g?>#iRd7q`)PFF;U{`r4y|6LbDHsU)r)hG`lR%B zfmb?IAuHuW`BxX3*|C9V;u*N96r^L`c@hq^v3lf3ecR{4BQd;?)<&HqSr%Kfv9nFQ z-&sOP4-Eqp7oN-mGQ{AaYQumra1J)vb(8*WRhDs1z>w+tnU{=Fgn^{KZuk4^PP@7| z1@fWHkp5Mdnb;ukCSHiBhimHtd#$?MA*y8~b_Y<-8MfS(TV2l2Kp#h0A}U0|wAtHeyEDdwm!4!XC}JqO(eGMrxsSPaD#M1^Qv!gj1}>Vcv0}Bm19w!9M}2#x zSGPKA^;T=GZmlx&20mP|y50J^1rIy4hw{eiOw?rx7r0e2&c?rDwOWA3tXu15j^3=d z%=Nm}HqXRf!4lYl8SFKW46SYp+R&|=1sQD0kF-qj@LWydC<|)Pl$eiSK_%$WGS}*z z9{hh6a*#PE`B2y=h;~{C%o&7Md%Z4x3LfZf06{u+YomJ>dIzL6;ykkPaEu8Uw{aHC zMYz@hTpb*Eh3Blg)xx3QSY<7h0yr>0f{uI!4efL|d-UWptPIrKfcCHF&j3MZy}ouP z`G8D7B~HJyrwk2M%j`i9dP?h|m0f6k=S-&M*!odCaP92)3{21k=$6&%7EA%pI$ijG zm31X@ppsedwHD^lL6#gW(8YG$vRXwKH#SfxSR1VZa}VUiI?mR!P?M~T9QO=qKzKWZ zyTH5NBJtF+6vQ~*JrG&zXHHDlM}G7ie3T^fv70U87^|gB1FKDgZMDv1qre-4e3^D0 zjyh1awUNW`z=XGem%1}XZ;(Z41crivYo|1m6ELpOw}}0f>lU^&ZGn>y4i%F*Jsc{ zDyV8w@V8SS@`O8sr(SF_t35fMU5Kx{b?RJH;}ZUip~Cof+CE4K<3 zgq4@CfK_dJEC#o-?%6oFrF9_`RJ962*^*okda2q>TAv$ox!Np_DD3WYuti>JW_!;I zwp42-Tp^au1C&>(fXL^3Iic#|bcWTlOM+)Xvao!379?j&jc0+rm@Ih~4Cj|H&w}ll z$EWvh4zpFCfz{faTd_*|Q^DT!vi)*F|L4g@@`~GV7wOb}m_U;jSz$qb`hM zrffPRAY8;O3UR1N#wxrE2b&k+!-^R3Gc{=u1dGncS<&NXYv6e>Ei9|l;PPcQuL67( zkDVQJel|Wk8-A4ztqMgyQ#&dlR@wvQAo4Szod!1(rwk=u0zL_99uH#h_;T0{A=LbmjD&QSo7~*ji%wj7OZgk@Z#Hx$(59~vmKjlZH55=w@<3WP|Ly_2C-dSpX zncaNh-QAaN?caKreYv>=4PmnAJ9eC~ZT7I1VmeoC^I;9-TY?`4+N`x3R=3fvJ*wC2 z2lg=@O~1*L*zPs&6{%_W@;tVCP5NVCY5H77y%wif2`-YB z+@A|sWMABCQUjBFP1$n5M%C{%AHWYlBbn5XjW{H3BbN7_6G9pp7&}u z=;FpbaVq{jv3KyEObokM!wpLWhOQ0t1UBG*jbrR4eYEP>g4Y(d_5`nbaBl# z^rotCDARR_Quv2ceFw&lk5@kp?|UI8Zr3*H>s-KkS>nbtqIP&6rZJxXKXQ}ey=Se5 z_#XG8VG1IQ_8Yj_m#*P`#1j+=1a11fA4b57?)`$#E#%K5J9Wlxa^JU4qAV5gmFK`% z_Y)GS_uWJM7D#1@zB{%Ly(kt%-9dG+Y=WPILB>zY`0+J~hw7U2>ORcunN8p&QV(Zy z+ce>=YsbzQpJ#pw{e!B`37|D=j~;EIaCq;%9TW>7Z1@q>{7XbH7{uMtFj7}G=C3K{t)$o*e68&<)tT71GiMHR>%AMaJgBN4~u8OZ^dKeT=52v zKbJ4?x>hIgb06_|;fTKyH|jfgP`rW}R8PmiyW_|o5I~lX4nYVGI7t4yF$^1k^Buss`j9`$ zJJaA>-&R&-iIvqy^lwXmwg-ckQ66D~@Q8$!<<|u#Y;N8Sz0|XPp#5OEUeIavAzA>E zVd(IQ&~dlj#=uSS0ANo%*@6}dEN^6~tr@tpRE4+^$1f1HD945RpE+Zj(|SOt44Uh$x?cT+w?3b}*5XaLiWe?w=>`^s0; zL8>VEuJ>MJAk$V`Q6+(lt{1?@=ie3|+50%O3n9&EwX$52Rfxaf zrLSyrn&pG6FcrMx-IOoO?DdsxrC9}p6-i8B7ZsC51DP4j;^RNF} zErs{xR_vIo56jcC!EFVc_Nz2A`rCuZ$w(4a4o(e|bZe{cn(t9@V5y-u+I~oT;7~|x zzF^jqte?iN3zv_!{YYI&sv(RF{POMa1b5amJ2?rRvp*9u z@v{*K7ktFKE=+i^;G1$#n^q5$ro0o1vZg9Q(Tp>(IUpk3Cho7Xnk{?7wjJB;v^w3k z<#Y%A4Y$*G&5a&Db1cNcJ680nzdfp*e~>eFm(5!oKmQDBWPMgOL`pAd10J%s)IV$ + + + + + + + + + +Siêu phẩm biệt thự 200m2 3 tầng 1 tum có tầng hầm hiện đại bậc nhất BT9270421 – Nội thất – kiến trúc An Việt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+ +
+
+ + + + +
+
+
+
+ + +

Siêu phẩm biệt thự 200m2 3 tầng 1 tum có tầng hầm hiện đại bậc nhất BT9270421

+
+ + +
+
+ + +
+
+
+ + +

Kiến trúc hiện đại sở hữu vẻ đẹp của các hình khối, đường nét thể hiện sự tinh tế, tối đa hóa không gian sử dụng, mang tới sự tiện nghi đẳng cấp cho người sử dụng. Chính vì vậy mà ngày nay các mẫu thiết kế biệt thự hiện đại ngày càng chiếm lĩnh được lòng khách hàng. Mẫu nhà mà Angcovat muốn giới thiệu trong bài viết này đó chính là mẫu biệt thự 200m2 với chiều cao 3 tầng 1 tum và sở hữu 1 tầng hầm cùng với khuôn viên ngoại thất sang trọng, vườn cây tiểu cảnh cùng với bể bơi hiện đại. Đây là ngôi nhà được chúng tôi tư vấn thiết kế cho anh Thoang ở Sài Gòn. Công trình hiện nay đã được hoàn thiện hồ sơ thiết kế và đang chuẩn bị khởi công xây dựng. Cùng chúng tôi cảm nhận về mẫu biệt thự 200m2 hiện đại đẹp này nhé!

+

THÔNG TIN SƠ BỘ VỀ MẪU BIỆT THỰ 200M2 ĐẸP MÊ LY TẠI SÀI GÒN

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
    +
  • Mã số 
  • +
+
 BT9270421
+
    +
  • Số tầng
  • +
+
 03 tầng + 1 tum + 1 tầng hầm
+
    +
  • Chủ đầu tư 
  • +
+
 Ông Thoang
+
    +
  • Địa Chỉ 
  • +
+
 Sài Gòn
+
    +
  • Mặt tiền
  • +
+
 15m
+
    +
  • Chiều sâu
  • +
+
+

 19m

+
+
    +
  • Kiến trúc sư 
  • +
+
+

 Kiến trúc sư Angcovat

+
+
    +
  • Năm thi công
  • +
+
+

 2021

+
+
    +
  • Kích thước lô đất
  • +
+
+

 500m2

+
+
    +
  • Kinh phí đầu tư dự kiến
  • +
+
 Khoảng 4,6 tỷ đồng
+
    +
  • Thông số diện tích, Công năng mẫu thiết kế biệt thự 200m2
  • +
+
+

– Diện tích:200m2/sàn

+

– Thông số các phòng:  

+

+) Tầng hầm: gara ô tô 165m2

+

 +) Tầng 1: Sảnh tầng: 6,5m2; sảnh thang: 19,5m2; phòng khách và ăn 40,5m2; kho 5,2m2; wc 7,2m2; phòng thay đồ 10,7m2; wc 6,4m2; phòng ngủ 1: 32m2

+

 +) Tầng 2:  sảnh tầng 6,5m2; sảnh thang 19,5m2; phòng ngủ 2: 42,3m2; ban công: 10,2m2; wc: 12,6m2; phòng ngủ 3: 18,6m2; ban công: 3,8m2; wc: 10,2m2; phòng thay đồ 7,2m2

+

+ Tầng 3: Sảnh tầng: 6,5m2; sảnh thang: 19,5m2; phòng ngủ 4: 19,8m2; ban công 10,2m2; phòng thay đồ 9,1m2; wc 6m2; phòng kho 2,8m2; phòng ngủ 5: 10m2; wc 2,7m2; phòng tập gym 44m2; ban công 10,2m2

+

+) Tầng tum: phòng giải trí: 16,5m2; sân chơi

+
+

BẢNG KHÁI TOÁN CHI PHÍ XÂY DỰNG MẪU BIỆT THỰ 200M2 3 TẦNG 1 TUM HIỆN ĐẠI

+

 

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
BẢNG ĐƠN GIÁ THI CÔNG
TTHạng mục công việcDiện tíchĐơn giáThành tiền
1Diện tích móng       200                 1,650,000                          330,000,000  
2Diện tích tầng 01200               5,500,000                       1,100,000,000  
3Diện tích tầng 02200               5,500,000                       1,100,000,000  
4Diện tích tầng 03200               5,500,000                       1,100,000,000  
5Diện tích tầng hầm165               5,500,000                          907,500,000  
6Diện tích tầng tum20               5,500,000                          110,000,000  
7Chi phí chủ đầu tư tự thi công                       4,647,500,000  
8Chi phí thuê THI CÔNG NHÀ TRỌN GÓI                       5,112,250,000  
Gọi hotline để nhận báo giá chi tiết. Hotline: 0988.030.680
Đơn giá trên chưa bao gồm thuế VAT 10%
Đơn giá biến động theo thòi điểm, địa điểm, địa hình (Không vượt quá 5% giá trị hợp đồng)
+

 KHƠI NGUỒN CẢM HỨNG KHI LÊN Ý TƯỞNG THIẾT KẾ MẪU BIỆT THỰ 200M2 3 TẦNG 1 TUM HIỆN ĐẠI

+

thiết kế biệt thự 200m2 3 tầng 1 tum hiện đại

+

 Hình thành ý tưởng thiết kế mẫu biệt thự 200m2 3 tầng 1 tum đẹp

+

Một bản vẽ thiết kế nhà ra đời bắt nguồn từ ý tưởng của kiến trúc sư. ý tưởng của kiến trúc sư thì vô vàn, nhưng quan trọng là hợp gu cũng như nhu cầu mong muốn và tài chính của chủ nhà. Để hài hòa các yếu tố về kiến trúc, công năng và phong thủy cũng như kinh tế chúng tôi đưa ra phương án phù hợp nhất với 4 tiêu chí đó. 

+

Để hình thành nên bản vẽ thiết kế biệt thự 200m2 cần nắm bắt được diện tích, kích thước lô đất cũng như nhu cầu của chủ nhà. Dưới đây là tóm tắt thông tin về nhu cầu thiết kế nhà của anh Thoang:

+

– Về kích thước lô đất: Diện tích lô đất chủ nhà đang sở hữu khoảng 500m2 vuông vắn ở phía Nam. 

+

– Diện tích xây dựng: Với nhu cầu sử dụng của gia đình, anh Thoang mong muốn chúng tôi thiết kế một ngôi nhà 3 tầng 1 tum có hầm và diện tích sàn là 200m2.

+

– Công năng sử dụng: gara ô tô, phòng bếp ăn, phòng khách, 4 phòng ngủ, phòng giải trí, phòng tắm, thay đồ, kho, phòng tập gym và các không gian phụ trợ khác

+

– Kiến trúc; là một người còn khá trẻ, yêu thích sự năng động, khỏe khoắn anh Thoang mong muốn sở hữu một ngôi nhà biệt thự 200m2 phong cách kiến trúc hiện đại.

+

– Kinh phí đầu tư dự kiến: hoàn thiện ngoại thất khoảng 4-5 tỷ đồng

+

Từ những yêu cầu cơ bản của chủ đầu tư chúng tôi bắt tay vào quy hoạch mặt bằng, không gian sử dụng sao cho tiết kiệm diện tích, tạo sự thoáng đãng thoải mái khi sinh hoạt tại chính ngôi nhà của mình cũng như các vị trí phù hợp về mặt phong thủy. Từ phương án mặt bằng, các kiến trúc sư phác thảo ý tưởng dựng 3D phối cảnh cho ngôi nhà biệt thự 200m2 siêu đẹp này. Sau khi hoàn thiện ngôi nhà đã hoàn toàn chinh phục được chủ đầu tư không chỉ bởi vẻ ngoài lộng lẫy mà còn ở mặt bằng công năng hợp lý, đáp ứng nhu cầu sử dụng của gia đình. 

+

 MẪU BIỆT THỰ 200M2 KHOE NHIỀU CHI TIẾT KIẾN TRÚC ĐẸP QUA MẶT TIỀN RỘNG 15M 

+

thiết kế biệt thự 200m2 kiểu mái bằng

+

 Bản vẽ thiết kế mặt tiền rộng 15m của mẫu biệt thự 200m2

+

Kiến trúc hiện đại ra đời từ một cuộc cách mạng nhằm chống lại sự rối rắm phức tạp của kiến trúc cổ điển. Kiến trúc hiện đại ra đời hoàn toàn phù hợp với xu hướng phát triển. Một ngôi nhà cần có yếu tố về thẩm mỹ, công năng, bề mặt rộng rãi, thông thoáng tự nhiên. Chính vì vậy mà kiến trúc hiện đại ngày càng được ưa chuộng. Đặc biệt với những mảnh đất nhỏ, mặt tiền hẹp thì kiến trúc hiện đại đơn giản hoàn toàn đáp ứng được nhu cầu của người dân, giúp ngôi nhà trở nên thoáng đãng và có vẻ rộng rãi hơn nhiều. 

+

Kiến trúc biệt thự hiện đại – đúng với cái tên – Hiện đại – từ ý tưởng cho tới cách thể hiện, Hiện đại trong từng chi tiết kiến trúc cho tới màu sắc và vật liệu. Mọi yếu tố đó kết hợp với nhau tạo nên một tổng thể thống nhất. Kiến trúc hiện đại phù hợp với nhiều lứa tuổi khác nhau, phù hợp với nhiều diện tích kích thước đất khác nhau từ nhỏ tới lớn. Chính vì thế mà ngày càng được yêu chuộng và phát triển hơn nữa. Mẫu biệt thự 200m2 hiện đại là một trong số đó. Đáp ứng nhu cầu của chủ nhà, phù hợp với xu hướng thì một ngôi nhà 3 tầng 1 tum theo kiến trúc hiện đại bắt kịp với xu hướng hiện nay và đảm bảo không bao giờ bị lỗi thời. 

+

Thật may mắn, khi sở hữu một lô đất vuông vắn và rộng rãi lên tới 500m2. Vì thế mà diện tích dành cho ngôi nhà khá thoải mái với mặt tiền rộng 15m. Mặt tiền được ví như bộ mặt của con người, mọi thần thái, nét đẹp được khoe ra và tỏa sáng. Mặt tiền của ngôi nhà cũng vậy, với ý nghĩa là nơi chứa sảnh chính, nơi tiếp đón và gặp gỡ của khách và chủ nhà. Vì thế mà mọi ánh nhìn tập trung đầu tiên ở mặt tiền mẫu biệt thự 200m2 này. Với lợi thế mặt tiền rộng các kiến trúc sư thiết kế sao cho ngôi nhà thật thông thoáng, tập trung được nhiều năng lượng tự nhiên (ánh sáng, gió,..) sẽ mang tới cuộc sống tối ưu cho các thành viên trong gia đình.

+

 

+

thiết kế biệt thự 200m2 có bể bơi tiện nghi hiện đại

+

 Góc view nhìn từ trên cao của mẫu biệt thự 200m2 3 tầng 1 tum mái bằng

+

Mẫu biệt thự 200m2 hiện đại với kích thước tương đối thoải mái, mặt tiền rộng 15m và chiếu sâu 19m. Ngôi nhà có được tỷ lệ khá hoàn chỉnh và cân bằng. Với mặt tiền rộng 15m các kiến trúc sư lựa chọn cách thiết kế đối xứng, với không gian chính thụt vào phía trong một chút và 2 đầu hồi đối xứng qua sảnh chính. Chính điểm này vừa tạo ra sức hút vừa mang tới sự cân bằng về mặt tổng thể khi nhìn chính diện vào mặt tiền. Đúng vậy, mặt tiền rộng vừa là lợi thế lại vừa là thách thức cho kiến trúc sư. Nếu như không gian bị thiết kế dàn trải không tập trung sẽ mang tới sự nhàm chán. Vì thế mà với kích thước 15m chúng tôi tạo điểm nhấn chính là sự đối xứng qua sảnh chính, không gian giữa thụt vào một chút giống hình chữ U. 

+

 Cách thiết kế các khối kiến trúc đã ghi điểm cho mẫu nhà biệt thự 200m2 này. Các khối kiến trúc chính là cách nhìn trực quan nhất khi quan sát một ngôi nhà có hài hòa và đẹp mắt, gây ấn tượng cho người nhìn hay không. Kiểu kiến trúc đối xứng giữa các không gian, không quá chặt chẽ tuân thủ các quy tắc như kiến trúc cổ điển, ngược lại kiến trúc hiện đại tạo được không gian mở cùng với đó là sự lưu thông không khí tốt hơn, sự thu hút ánh sáng tự nhiên tốt hơn. Vì thế mà các thành viên trong gia đình có sức khỏe và thoải mái, tiện nghi hơn rất nhiều.

+

CÁCH LỰA CHỌN VẬT LIỆU HIỆN ĐẠI CHO MẪU THIẾT KẾ BIỆT THỰ 200M2 ĐẸP 

+

 

+

thiết kế biệt thự 200m2 kích thước 15x19m

+

 Bản vẽ thiết kế biệt thự 200m2 sở hữu vật liệu hiện đại, bền

+

 

+

 

+

 

+

thiết kế biệt thự 200m2 3 tầng 1 tum có hầm và bể bơi tiện nghi bậc nhất

+

 

+

 

+

thiết kế biệt thự 200m2 3 tầng 1 tum có hầm rộng 15m sâu 19m

+

 

+

 

+

 

+

mặt bằng tầng hầm thiết kế biệt thự 200m2 đẹp

+

 

+

 

+

 

+

thiết kế biệt thự tầng 1 biệt thự 200m2

+

 

+

 

+

thiết kế biệt thự tầng 2 biệt thự 200m2

+

 

+

thiết kế biệt thự tầng 3 biệt thự 200m2

+

 

+

thiết kế biệt thự tầng tum biệt thự 200m2

+ + +
+ + + + + +
+
+ + + + +
+ + + + +
+

Trả lời

Email của bạn sẽ không được hiển thị công khai.

+ +

+

+ +

+ +
+
+ +
+ +
+ + +
+ + + +
+ + + + + +
+
+
+ + + + + +
+
+
+ + +
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/cache/wp-rocket/localhost/2022/02/13/sieu-pham-biet-thu-200m2-3-tang-1-tum-co-tang-ham-hien-dai-bac-nhat-bt9270421/index-mobile.html_gzip b/wp-content/cache/wp-rocket/localhost/2022/02/13/sieu-pham-biet-thu-200m2-3-tang-1-tum-co-tang-ham-hien-dai-bac-nhat-bt9270421/index-mobile.html_gzip new file mode 100644 index 0000000000000000000000000000000000000000..5fabec07223a09e27d1426376e412a6c8a7d7e4a GIT binary patch literal 17987 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 K{=>ZaG64Xh97THo literal 0 HcmV?d00001 diff --git a/wp-content/cache/wp-rocket/localhost/2022/02/13/sieu-pham-biet-thu-200m2-3-tang-1-tum-co-tang-ham-hien-dai-bac-nhat-bt9270421/index.html b/wp-content/cache/wp-rocket/localhost/2022/02/13/sieu-pham-biet-thu-200m2-3-tang-1-tum-co-tang-ham-hien-dai-bac-nhat-bt9270421/index.html new file mode 100644 index 0000000..48e24e3 --- /dev/null +++ b/wp-content/cache/wp-rocket/localhost/2022/02/13/sieu-pham-biet-thu-200m2-3-tang-1-tum-co-tang-ham-hien-dai-bac-nhat-bt9270421/index.html @@ -0,0 +1,1098 @@ + + + + + + + + + + +Siêu phẩm biệt thự 200m2 3 tầng 1 tum có tầng hầm hiện đại bậc nhất BT9270421 – Nội thất – kiến trúc An Việt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+ +
+
+ + + + +
+
+
+
+ + +

Siêu phẩm biệt thự 200m2 3 tầng 1 tum có tầng hầm hiện đại bậc nhất BT9270421

+
+ + +
+
+ + +
+
+
+ + +

Kiến trúc hiện đại sở hữu vẻ đẹp của các hình khối, đường nét thể hiện sự tinh tế, tối đa hóa không gian sử dụng, mang tới sự tiện nghi đẳng cấp cho người sử dụng. Chính vì vậy mà ngày nay các mẫu thiết kế biệt thự hiện đại ngày càng chiếm lĩnh được lòng khách hàng. Mẫu nhà mà Angcovat muốn giới thiệu trong bài viết này đó chính là mẫu biệt thự 200m2 với chiều cao 3 tầng 1 tum và sở hữu 1 tầng hầm cùng với khuôn viên ngoại thất sang trọng, vườn cây tiểu cảnh cùng với bể bơi hiện đại. Đây là ngôi nhà được chúng tôi tư vấn thiết kế cho anh Thoang ở Sài Gòn. Công trình hiện nay đã được hoàn thiện hồ sơ thiết kế và đang chuẩn bị khởi công xây dựng. Cùng chúng tôi cảm nhận về mẫu biệt thự 200m2 hiện đại đẹp này nhé!

+

THÔNG TIN SƠ BỘ VỀ MẪU BIỆT THỰ 200M2 ĐẸP MÊ LY TẠI SÀI GÒN

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
    +
  • Mã số 
  • +
+
 BT9270421
+
    +
  • Số tầng
  • +
+
 03 tầng + 1 tum + 1 tầng hầm
+
    +
  • Chủ đầu tư 
  • +
+
 Ông Thoang
+
    +
  • Địa Chỉ 
  • +
+
 Sài Gòn
+
    +
  • Mặt tiền
  • +
+
 15m
+
    +
  • Chiều sâu
  • +
+
+

 19m

+
+
    +
  • Kiến trúc sư 
  • +
+
+

 Kiến trúc sư Angcovat

+
+
    +
  • Năm thi công
  • +
+
+

 2021

+
+
    +
  • Kích thước lô đất
  • +
+
+

 500m2

+
+
    +
  • Kinh phí đầu tư dự kiến
  • +
+
 Khoảng 4,6 tỷ đồng
+
    +
  • Thông số diện tích, Công năng mẫu thiết kế biệt thự 200m2
  • +
+
+

– Diện tích:200m2/sàn

+

– Thông số các phòng:  

+

+) Tầng hầm: gara ô tô 165m2

+

 +) Tầng 1: Sảnh tầng: 6,5m2; sảnh thang: 19,5m2; phòng khách và ăn 40,5m2; kho 5,2m2; wc 7,2m2; phòng thay đồ 10,7m2; wc 6,4m2; phòng ngủ 1: 32m2

+

 +) Tầng 2:  sảnh tầng 6,5m2; sảnh thang 19,5m2; phòng ngủ 2: 42,3m2; ban công: 10,2m2; wc: 12,6m2; phòng ngủ 3: 18,6m2; ban công: 3,8m2; wc: 10,2m2; phòng thay đồ 7,2m2

+

+ Tầng 3: Sảnh tầng: 6,5m2; sảnh thang: 19,5m2; phòng ngủ 4: 19,8m2; ban công 10,2m2; phòng thay đồ 9,1m2; wc 6m2; phòng kho 2,8m2; phòng ngủ 5: 10m2; wc 2,7m2; phòng tập gym 44m2; ban công 10,2m2

+

+) Tầng tum: phòng giải trí: 16,5m2; sân chơi

+
+

BẢNG KHÁI TOÁN CHI PHÍ XÂY DỰNG MẪU BIỆT THỰ 200M2 3 TẦNG 1 TUM HIỆN ĐẠI

+

 

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
BẢNG ĐƠN GIÁ THI CÔNG
TTHạng mục công việcDiện tíchĐơn giáThành tiền
1Diện tích móng       200                 1,650,000                          330,000,000  
2Diện tích tầng 01200               5,500,000                       1,100,000,000  
3Diện tích tầng 02200               5,500,000                       1,100,000,000  
4Diện tích tầng 03200               5,500,000                       1,100,000,000  
5Diện tích tầng hầm165               5,500,000                          907,500,000  
6Diện tích tầng tum20               5,500,000                          110,000,000  
7Chi phí chủ đầu tư tự thi công                       4,647,500,000  
8Chi phí thuê THI CÔNG NHÀ TRỌN GÓI                       5,112,250,000  
Gọi hotline để nhận báo giá chi tiết. Hotline: 0988.030.680
Đơn giá trên chưa bao gồm thuế VAT 10%
Đơn giá biến động theo thòi điểm, địa điểm, địa hình (Không vượt quá 5% giá trị hợp đồng)
+

 KHƠI NGUỒN CẢM HỨNG KHI LÊN Ý TƯỞNG THIẾT KẾ MẪU BIỆT THỰ 200M2 3 TẦNG 1 TUM HIỆN ĐẠI

+

thiết kế biệt thự 200m2 3 tầng 1 tum hiện đại

+

 Hình thành ý tưởng thiết kế mẫu biệt thự 200m2 3 tầng 1 tum đẹp

+

Một bản vẽ thiết kế nhà ra đời bắt nguồn từ ý tưởng của kiến trúc sư. ý tưởng của kiến trúc sư thì vô vàn, nhưng quan trọng là hợp gu cũng như nhu cầu mong muốn và tài chính của chủ nhà. Để hài hòa các yếu tố về kiến trúc, công năng và phong thủy cũng như kinh tế chúng tôi đưa ra phương án phù hợp nhất với 4 tiêu chí đó. 

+

Để hình thành nên bản vẽ thiết kế biệt thự 200m2 cần nắm bắt được diện tích, kích thước lô đất cũng như nhu cầu của chủ nhà. Dưới đây là tóm tắt thông tin về nhu cầu thiết kế nhà của anh Thoang:

+

– Về kích thước lô đất: Diện tích lô đất chủ nhà đang sở hữu khoảng 500m2 vuông vắn ở phía Nam. 

+

– Diện tích xây dựng: Với nhu cầu sử dụng của gia đình, anh Thoang mong muốn chúng tôi thiết kế một ngôi nhà 3 tầng 1 tum có hầm và diện tích sàn là 200m2.

+

– Công năng sử dụng: gara ô tô, phòng bếp ăn, phòng khách, 4 phòng ngủ, phòng giải trí, phòng tắm, thay đồ, kho, phòng tập gym và các không gian phụ trợ khác

+

– Kiến trúc; là một người còn khá trẻ, yêu thích sự năng động, khỏe khoắn anh Thoang mong muốn sở hữu một ngôi nhà biệt thự 200m2 phong cách kiến trúc hiện đại.

+

– Kinh phí đầu tư dự kiến: hoàn thiện ngoại thất khoảng 4-5 tỷ đồng

+

Từ những yêu cầu cơ bản của chủ đầu tư chúng tôi bắt tay vào quy hoạch mặt bằng, không gian sử dụng sao cho tiết kiệm diện tích, tạo sự thoáng đãng thoải mái khi sinh hoạt tại chính ngôi nhà của mình cũng như các vị trí phù hợp về mặt phong thủy. Từ phương án mặt bằng, các kiến trúc sư phác thảo ý tưởng dựng 3D phối cảnh cho ngôi nhà biệt thự 200m2 siêu đẹp này. Sau khi hoàn thiện ngôi nhà đã hoàn toàn chinh phục được chủ đầu tư không chỉ bởi vẻ ngoài lộng lẫy mà còn ở mặt bằng công năng hợp lý, đáp ứng nhu cầu sử dụng của gia đình. 

+

 MẪU BIỆT THỰ 200M2 KHOE NHIỀU CHI TIẾT KIẾN TRÚC ĐẸP QUA MẶT TIỀN RỘNG 15M 

+

thiết kế biệt thự 200m2 kiểu mái bằng

+

 Bản vẽ thiết kế mặt tiền rộng 15m của mẫu biệt thự 200m2

+

Kiến trúc hiện đại ra đời từ một cuộc cách mạng nhằm chống lại sự rối rắm phức tạp của kiến trúc cổ điển. Kiến trúc hiện đại ra đời hoàn toàn phù hợp với xu hướng phát triển. Một ngôi nhà cần có yếu tố về thẩm mỹ, công năng, bề mặt rộng rãi, thông thoáng tự nhiên. Chính vì vậy mà kiến trúc hiện đại ngày càng được ưa chuộng. Đặc biệt với những mảnh đất nhỏ, mặt tiền hẹp thì kiến trúc hiện đại đơn giản hoàn toàn đáp ứng được nhu cầu của người dân, giúp ngôi nhà trở nên thoáng đãng và có vẻ rộng rãi hơn nhiều. 

+

Kiến trúc biệt thự hiện đại – đúng với cái tên – Hiện đại – từ ý tưởng cho tới cách thể hiện, Hiện đại trong từng chi tiết kiến trúc cho tới màu sắc và vật liệu. Mọi yếu tố đó kết hợp với nhau tạo nên một tổng thể thống nhất. Kiến trúc hiện đại phù hợp với nhiều lứa tuổi khác nhau, phù hợp với nhiều diện tích kích thước đất khác nhau từ nhỏ tới lớn. Chính vì thế mà ngày càng được yêu chuộng và phát triển hơn nữa. Mẫu biệt thự 200m2 hiện đại là một trong số đó. Đáp ứng nhu cầu của chủ nhà, phù hợp với xu hướng thì một ngôi nhà 3 tầng 1 tum theo kiến trúc hiện đại bắt kịp với xu hướng hiện nay và đảm bảo không bao giờ bị lỗi thời. 

+

Thật may mắn, khi sở hữu một lô đất vuông vắn và rộng rãi lên tới 500m2. Vì thế mà diện tích dành cho ngôi nhà khá thoải mái với mặt tiền rộng 15m. Mặt tiền được ví như bộ mặt của con người, mọi thần thái, nét đẹp được khoe ra và tỏa sáng. Mặt tiền của ngôi nhà cũng vậy, với ý nghĩa là nơi chứa sảnh chính, nơi tiếp đón và gặp gỡ của khách và chủ nhà. Vì thế mà mọi ánh nhìn tập trung đầu tiên ở mặt tiền mẫu biệt thự 200m2 này. Với lợi thế mặt tiền rộng các kiến trúc sư thiết kế sao cho ngôi nhà thật thông thoáng, tập trung được nhiều năng lượng tự nhiên (ánh sáng, gió,..) sẽ mang tới cuộc sống tối ưu cho các thành viên trong gia đình.

+

 

+

thiết kế biệt thự 200m2 có bể bơi tiện nghi hiện đại

+

 Góc view nhìn từ trên cao của mẫu biệt thự 200m2 3 tầng 1 tum mái bằng

+

Mẫu biệt thự 200m2 hiện đại với kích thước tương đối thoải mái, mặt tiền rộng 15m và chiếu sâu 19m. Ngôi nhà có được tỷ lệ khá hoàn chỉnh và cân bằng. Với mặt tiền rộng 15m các kiến trúc sư lựa chọn cách thiết kế đối xứng, với không gian chính thụt vào phía trong một chút và 2 đầu hồi đối xứng qua sảnh chính. Chính điểm này vừa tạo ra sức hút vừa mang tới sự cân bằng về mặt tổng thể khi nhìn chính diện vào mặt tiền. Đúng vậy, mặt tiền rộng vừa là lợi thế lại vừa là thách thức cho kiến trúc sư. Nếu như không gian bị thiết kế dàn trải không tập trung sẽ mang tới sự nhàm chán. Vì thế mà với kích thước 15m chúng tôi tạo điểm nhấn chính là sự đối xứng qua sảnh chính, không gian giữa thụt vào một chút giống hình chữ U. 

+

 Cách thiết kế các khối kiến trúc đã ghi điểm cho mẫu nhà biệt thự 200m2 này. Các khối kiến trúc chính là cách nhìn trực quan nhất khi quan sát một ngôi nhà có hài hòa và đẹp mắt, gây ấn tượng cho người nhìn hay không. Kiểu kiến trúc đối xứng giữa các không gian, không quá chặt chẽ tuân thủ các quy tắc như kiến trúc cổ điển, ngược lại kiến trúc hiện đại tạo được không gian mở cùng với đó là sự lưu thông không khí tốt hơn, sự thu hút ánh sáng tự nhiên tốt hơn. Vì thế mà các thành viên trong gia đình có sức khỏe và thoải mái, tiện nghi hơn rất nhiều.

+

CÁCH LỰA CHỌN VẬT LIỆU HIỆN ĐẠI CHO MẪU THIẾT KẾ BIỆT THỰ 200M2 ĐẸP 

+

 

+

thiết kế biệt thự 200m2 kích thước 15x19m

+

 Bản vẽ thiết kế biệt thự 200m2 sở hữu vật liệu hiện đại, bền

+

 

+

 

+

 

+

thiết kế biệt thự 200m2 3 tầng 1 tum có hầm và bể bơi tiện nghi bậc nhất

+

 

+

 

+

thiết kế biệt thự 200m2 3 tầng 1 tum có hầm rộng 15m sâu 19m

+

 

+

 

+

 

+

mặt bằng tầng hầm thiết kế biệt thự 200m2 đẹp

+

 

+

 

+

 

+

thiết kế biệt thự tầng 1 biệt thự 200m2

+

 

+

 

+

thiết kế biệt thự tầng 2 biệt thự 200m2

+

 

+

thiết kế biệt thự tầng 3 biệt thự 200m2

+

 

+

thiết kế biệt thự tầng tum biệt thự 200m2

+ + +
+ + + + + +
+
+ + + + +
+ + + + +
+

Trả lời

Email của bạn sẽ không được hiển thị công khai.

+ +

+

+ +

+ +
+
+ +
+ +
+ + +
+ + + +
+ + + + + + + + + +
+
+
+
+ + Facebook Messenger +
+
+
+ Chat với chúng tôi qua Zalo +
+ +
+
+ Gọi ngay +
+ + + + + +
+ + +
+
+ +
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/cache/wp-rocket/localhost/2022/02/13/sieu-pham-biet-thu-200m2-3-tang-1-tum-co-tang-ham-hien-dai-bac-nhat-bt9270421/index.html_gzip b/wp-content/cache/wp-rocket/localhost/2022/02/13/sieu-pham-biet-thu-200m2-3-tang-1-tum-co-tang-ham-hien-dai-bac-nhat-bt9270421/index.html_gzip new file mode 100644 index 0000000000000000000000000000000000000000..1090409d7d3fec845a6f6696826adbd38bbfa663 GIT binary patch literal 18141 zcmV({K+?Y-iwFP!000006YahIbL2*HAo}w#;{JzHPmD;e8r?vDvAa2>G((Lv6B=>l z6(!qGqnJRW(cKuLfi^z)A$lVABi_64`EA_F_Ql!f+qcr{_V%>i4eg#B&(AaA+lZr1 z{|En*mzh-s6wv4oe#u&$Mj{CmsxqsxvNE%>vZ`*s@alJW_Wty(du$Yq-R+gzFKF6( z&VW6*$2#o&ZFU=znQMB(tZh&-VJx z;C)TY0Bg?$);aG9z3u_PVt-rsGU$$q!o&i_WvamCbLFn z5ZcjJ>7BjTw04PA@r&zt`z)~Ctq1mO5CpU z`YDYJqhr?&N46c!Z06xavwSbIy{KxL*2u1o9iUgW*6#PsL9N%{Xf`(NhShHyZOg3J z8#TS%HaF@OD-26)Z1){=t7N)viS^CM)S$34INmC8dh_n{%(1<-8u&dw3RjsxwzWDo zk2Gg&4sC4`*awb%*mccdXs_l9mhjWW51<9IXz9@DN29Gil(KA%Udjv*M~>-gAvDb1 zGRh3#JL7mP6R<)lWmfxMh5dbVE$R`Z_eb4fo=DzrOQ_g$H^xiu>SMEcCM&uK;AL% zL3jmqJXeL-S2FUa$u^S^HN94=>b0s-uZE5tYm<>V)_RT|Y0)Uws7_j4i$Dfzh6Xi) zk-C=E7^A$Q4)>pu?-#Mno;PF?JCHA8#?SsShYs6 zw+|yE_M&)F8Q3+;(2W+1y6Z$2Mvk?A3`(bO_spPTHrr;a+1$8htdZ}#kuwP^wT{tf zScY}Y_zpmU`T@upe-Z=M4hU|`Y<^W(Ll>wUR0ev#X7#L&#JX~ul#m#Uk$nW?7gWdg ziZdQo08Kas-F;l9S9|O~aoEYqjlL63T=TdKQXML7vlpB(ssPiAHdk)+`~VPj!Frhf za-@YLv+o}keI41(a1?c!VUM#PNP`rlk3k4(be$pO()7v{ z1T-*)0q}ais6rF7kG2pZP}85T+^!PM&|u-jbNXAWK&u{f(7xt6y}%5PHBK81sJY6i zyDF)>y1mj3d_OwTG$>{EK`U$2jnJvCA9Qc(`i9jrH;X@OS}^Q&^|DcGl#O<4R<6Do z?Aw86=m@UWGmV8A6TtdL*=Q}wUn9Uxv%Rq}qXgUm*!8BGo%0H}5wwAC#bLKLIePjE z87^#1JG6WIPK0KQCd`S6b7Z?(fa;=KTQ9HSr@#(J3eG&C7N9DQJGn&$^&)9o6q$6S_BT+n$1eWLz3R-N66m)q^5`KH-3`U5+IYGi(Zy^@1AOfCJ;|^a;+~pbZv$Cs?Ty9&$WA~5dlvS zN~_kC`M6Lh%y(c0YYT*ls1XW{^Mk-r0s!h0uHG~Y+HVIZX-b!;Ol5TKL8NBG_o++) zQeVwQ2~Tf=DS^V)`M~VK5Cj<=ftU|%3q|jVGzw6WKCMtWQ7a4PT|pP-m!qc@C$h(( z_9OT? zs$Ayl(@JQO@Pjdix&`TVBCH>M({i0jHvrnK8Iz;3^0U4v)f#5eCMFm+jtAYm26AY9 zvoKNEMo@ZFSUnm(`yj9fE|^mzr{A}|O=+>{n-f2DNFka%(v9{ex1zArAyiR249rQF zvtw%96t$>J%CbP!^!t6@NHdOn#Xy>F9dg8G{*?o1G#ZOuZ`F1-bRB*-=r=xZ?7V7v7D$Ab z-nIf~5@j+&wij=Li6AA8^;=RF>QiDLUA02IL(?~( z79e5HATY=F$+TWTX{dAAs&6V#q{_i(MLcdQ_7_aNi*b#IC!*?lPPz*`LWz;=&DCCc zoUUvjD8MT%bS(*WRZ&=R5Q1`<_zv0xi9(73(-QzIjgUcCZfaxygQE25q*)E^j<7dQ zB#wcD?#*tGD(cx`xVF)}wO&}bf`3m$y*Fx!LZU~m>wpHNtl%%F7@135t=>uu0SzXWyOlB(DpTENnYEdr?b%@Y_<^!G^T#k~ z-U1^&WX(z^UrEb^!GvD3uimGftIBFP0(%l)<#NnaRbHNKL0_J0aR!;;C7*1Ng*?Nv zRgH>XrKgu+2yJ0*&?UEOufhLG8F)szz#kod8Flz|rPKj<3)fLd%K#hvfwqt9Uv5-v z32qi@cDvFWp7=2Jaw0H~^-ZRTXC~5_5pJ>qNw0o?$^ejtO4{zH@Qlr;QgEdU@bAxB zrp@`uFYcfxLks5rpj%K((}L~x?U1Y$23Gl2iPk%xfbHY@aUY5YHkm=@6Z5F*I=!%p zOZd%j)`-QD9obGQp~ zV{H|4t**bPzhCBNj#2;}N|7zfta00Jb$yfmR**Q5IW>4hI{khd35dOo^p~tS1oKuS5s+UxNOUjn-qgG$Jr>JFSB zj5L3sAq~p~nQtO$wyhSLm#yy{ESs5U5)DLe*aYnMOnp>1Cvr-L<~D1obgqD%cGbM0Lb5Tp?o_-e#4BxuP>9a=`etL=+wLXmfzJKTm53Yub3US!2BNJ!7rw+>Y#;wd? zn)Z?ECi)W<=jhX(-#qzNAOv${ike{b-xxgZV}!}&-7q2#UNkuSSz9d*yU6rhf=ts7J@TXZx$pZ?nmaVXM4X%bZOD=4$M_krhUXV~ zi)SjO#{G>O#i1^w&(SDIRr)r1Gb?DmU=Ly3K_==2ZNANw8~Mc{#@P|R@KrQgT2fMJ z(W&nQe7y`lKnlOie2mTk-=bDZmSe3OA#*7XkS|hIriniL=6-j85c+G`RX@Z}Mxn?$(6=>^z z8`O=F1Yu<aEmg=irXN+@?Ll5C(EViaD$3%jQFAcLwe8lnN z9Om(3{0&NGW-hV@5&TrYq>I*@Q?i1w{NNA3W(+_-2Gjyynp338X|IM06I@W_>3nwp0vI_ zFk=^{&p=_QA^)Rc9vrlh)7NT7T_$s<4${W!n?auqVyH2V5JrJXF!-2iVrdj0L!+@o z&SXjeCc;;r#N!F64#JWtuci2Ii0_C?7}Yss$gyk$<_r=};vo8%!9GAh zd8MKt)&hQ_rb62Z4P%AbV8EuJ(TCN!)9 z5rI$6OHodpMKrxK8eVPXN$ROMa#dHSgIF&vC9j?n#E1xe3pbC@$}=0gnvMfWZA~V_ z0H)y}UU`HC+XnHG@j=A_uIFH+SF}}n+;dHDUu=&d`*N%FnrYcR--lFkX?Z@zDqtu1 z7?&Lc^vIEt)IKm<#Me13R3H>LG0l)~qmvdrUnA8P>>WB04!?_aA&YqN zISot@6gN+P&NnWS#ipAEddrRcE~xV06&qi&ExM=iG|`|rm8Zf}Re#&|`YaBa=`jIa zt@+f~e8p`KCiDJ8tvJb+r6uPa5kwxeya)ml^YGl#Q+Oco`!`t`@s|}PMgEbd#TaIY zC_MAF1-aM??E{g4oB7i=1w#i~#sr`Qq2<7yMIHmnIz#fsmooj13v28ldf;&TXpS4O zx(KT@#TS&C?H}6L%IEt5M^yD;BtVnE{5gByQ1<>5OZ zOHExbiRrU=q2(qV)m_?KSq%?{xZGd9Ro{WfTQwbCyf9hpK0G|E9M&mlq6RZN%)Sbl zaL?sk|7dGfhZp>5%HONE>h}N^W`w6)=RYQTiGJo3H{Ix5q)9{)pIDr4d4(^l&~i$3 zTbbo7rq~6sTz&JanTZls{A=3Re00)`;p@}MUqvrps^Qu0#VMmIhV$BtMA4h1ao9r? zjB+WxNXjjx^QLBD8Lg)%x6G7mo(jWEWEi|AMgvJqp2^c8l3_Lv z(iyA8-+MzcRCpe#QN=g%25ps6nbPtSwVy?ErNOxPwfD#K+a?Bz=~;;?mFPFxMjU$oKs5v6Alhp4e8TS!QGp{ooiZ zr2u`tY-h6F`={S$?|%8&+4KLr%M7-6_UymzzP_Mw`jt0M zzhL8Pg>9-W*9_xpHQJ#*Vq9O47WG0})Td~{Re*S&mVu2c?%Y{YtZ{|n3weAp@@Gje z;_$E1Jw}^XK1Q2Mj!{Vz`Jkm{ zScW1jV}8wL^=9kJ8`HXAV-lg9ZHpp|=eOj_2W@l7K|9qFJV9otSySDzbN`*)*V)dO zpDk#~#+A2ZLn@)V^9iaLK-qlv6M&6!r~)Y5<@)_ zWRwRtRxn2%sR1lOwHn*e$nWD0wx~1>xI_~M-z)U@^OXpmd8%^Bx`wQT5|NSbVby7K z189mrw;gX1M&ol#ZZh#R+iaTNKUtX zH(}_C1acbkR%F%*IaH4DM$TlB1R-;UzE?T4Y#WqCEVVUs5{{^2V22XRe31|A7J6>;OS7{g8rR>JHqUu{w^}ng8x}n-)%gZe_2w-M#g%S*? zCZplh$3xn1kw1xMEG5AlN_c@9Qji^6w9`n&1q>XL428L9;Zx?|7-m4jeM^~qoLWgw z@Ss#X5CNNHGx0bF$4eNeq=tBkmBZv?&-I7NFsBz0yh^*g6cLeWF%CfWh^@S|p%cS2 zLuZ1w;Xe#m#r-EDa+kcGbm)K@NsHmJ6fR2^H9duq8O3s?%~fpNPx zI{g^>;=bvW8Ro>3-N$woLp(uf#Xy^Tdb`_bb(*XPtdComWP zS^H(qz`j0a5E@(wG-|6MD6MM@*J;!5*357nGm1=Wgfk9)`XueI7mtS%F7X|{r=7xC zE)|>uWE&wp_w9Lftvs2~hWFwStr?WNu4-JEOw+MEc_!_deJCxrmSIdgsbnq}=%ePx z5g%tO(tHd7tF~!23n0+I@Q`6)kL|K8<`l-tcjhNMMdLJ&_CIp zgXG~?WlUuB>h>FIBve+hglErxhDY3g7PEu1XU{45pC`;Zd;Uw1D5oDo{?lK3BeoBD zJ_ND##fM-1_U!pjL5g{&pK^`%BMCA@?G`zZ8#LMP%kUeDKnV~Ar=Obug6>BcIwocP z4eOsh|AjZiYa;O4gtO;=???~?4x=xrKA&R%E@(ce*2srss)3`zsIZ;U>2Cn>!RfED z9ltqd*+@r3Vh64GCq6u4{L)3hkq`YP z`hj2az``#-&f+AyJye;mc4uS{QJm*zj}vd z!$x%d%^Fbt?AibK7JKvb-?4{(ini=W4}fyte*l#Gt6h*YH2@sp!M|eL?pCQ;!X(@z zh<^k8)u$CoT3FbA6G#f|_2G+NFPv;<7au4i{Nmpfqm@2XIj|{+Zv!;Jr1QY(37@|t zIQ^v@b1%TN1C;+IQTdlK^4a1Roc;}f<}9}WHjw%GUz!Y2{KaCp3F|I^3cdPI5skMW zc=O;H&Bbl!@*+I_d0Y$$wTFP#8FPl44>F@-!ujM(f#*vl;&K_3yI=fhjN_FL#6_sU zE-{vB$mwrDm`5WN6Mv5){vU}+ei1D~(8NK!9H~GqO+dIS+(!~bL@dwi+c!o&3fduS zlv}7W{|R9{|LcVuxyN-c4pr9YawfutmW8zRzW5RRUZfyvyoodEAXX$_RS{y z%W0ElQ|m2{_*$1WYUMhn_s|MOD&sjqvfl7qE4QYK z)gisj)0JZNayu!d&uT9bBIzpGj=E^a1<229)S&csrbcsW(J32}=$W4MS&ak90B>T0 zME)A@E(sEJ^@I(N$E?vP!adECpnkftG#Gf#K5cJ4pGAch~aKRNy3pR!j$sY8aDnqGRUFzof6 zH`#s6u}k{@qX$CKOU~m}TCDcb{fUzm`YNXuqM~2?UVDtRv|0n0 z1bm)I=R}Op|BYRk6@up}ecs>9D7Tt=S^p|=Ua+S1I@NPVU9=QBqu=e@wW;P2GQ@Jy3NBD`#de+A;f zoVPK9L+4p$?KyOeM)B#dQj?Vj)9!um?D_u<*6itDKlo-6vRO7@3Ro+$`sNTaYyaEh z?bpwq|JY$8pO#N(680nM>Fk|;?2~bgzG<|dpZz|n2prP3=jFOg@3h+$y{=bUZC$AV zAXusvsUeS(u3ynS>$fJ%+Moh3EkqYljGl~l@9e<@?$(6>_qd-5oA`G$>9l>k?)kr? zn-=}w<1&5wOLOX-ub!;E!F?U%IsYVLe-;DK<}F!kbSlGu{$wJ(IqTE4ESx5CioS9G z%a0zg-Phkad;V82PlOp6O!&^8|2LXIK41?||J^P-{VChSjgbEjI*eg9`0Rh|u{YrN zC1;SdXn0Mlss{a@T2rN^zXd+3{3=MswO*2|oQR-ssgl_m0E<9^K!PX7_TfLC$OgY?MGSQF7}xj2+8=roBXstQl|8Y@N~#=N zg)3vUoQiosx`+kXW2je5i>Z78Nv&vEctyDX77@@67^3wrkJT#e%XQhz@)RzInMlnE zGprI{M0CWWT?%NL7dhy3J+hm3 zbiYfzHmknfjK4h7kfgR^6;fHq-IogiO}-8sbNvF9_h>y7ts9f=n&Vs-75V7ZHOwy7 z_U|2~!OAkbXzI|x(TBZUR+nK_R?jTrW+eiSZDrlJAP$bNO(Qd_UCwX~f%=I!rIK%v zx{#sNIkQwymR?$5t=~`3wO`J9{L8@Os++i6;MOfGj^fWi)2A-zGImRO+K-G)p`omX zKun+`e?gMu6OKIJAa!wUQ-lF<;)wtV3(!zeg!1fpnH}Tc1lA>L;h5so5N1o67Owxj z&3Om-WJcd9TsGBP1tXRV9E;XV_Gbo~Om)|yRj_Vug+3RNknn#)YvvZhIG#P!1Rgd6 zG7({fAo%iQA&*p%pwvNST`qwl=wIkUA7uYAL%i73F|EczhTn0@7RI))5Ufy)R*1w9 zz_yHYk_`9+jAb7A0&V`7dhGNQlHxvb-T3rljL&c|$Y;cB5K*y2l_*`rn>8jOtcXJ5 zzXP;1k%v_gFQXEmIjZugFd|__F=QLfSvs#aC&nITs7526n6Gie&qQsM&ej>lpZ$I)7X5^a*}e$kVd{udbT@iT`9Mgjk! zT6Xyizy-sG#~9Hd#1W&?CZm-(mEF^S!AZgC#}mlSdu163n-SlM#Xr+%f8+jl@4+M% zK79WjS~1!arau1Jg_-T?f7+2zAb<4E9kl-c-#yIq{QJ8MroDfQ_I~qCiS%o3Lhr z6w89@!RaSXIWbLzsvyUoH^QjB8Bvh4m2xJ=F%gM4Bfxk!#7R?*mFbY^w~ruKAKoR z;}embe&u%A=Ul)mM23!q`glA_DrZ1v7-vrSsI+qc)w3id(!yaGVNK-c`-O$3r?F^5 zNDwrSNaJqHIUqcy6hZLFRmJ#FMneJ+SOitjv(GG|2l7qCTnbMmPX4i@GA%`>?h`z9 zFnA*~7KRKFnh$0u@gIae@gw^Ep%~4-h~|#Ksj()y0=4g_Cd?B6uEULH!d#wRA~S=? z&A|lUrf@jjiH`+wTpZt-afJi+_eykeZt!qRQ;Z%lAy;IB;4BzErVJHc7zvtM{=8>H z*$)&+TVPM*=eh;tQH2+c&PDSwa(T`f!rW5c2m7)Jg%X9!V`?cXwnrwSFu2HH3)z0k zV{C!&|B;M+7}&WHxHlpe9Rsj2&ST2lG|tajl!XTC=XR-1rm};wY3e3=))bZ(ugmn(UEGJVP2=I5Ju;@zPOQakMSR9jB!C#_81AJv3 zj4ur21R%_jY}97tcLJU^VG8}Rh*3}ROCg#nE1EQr{wRx*<-z@2j3{%AtRX1hzOGh3 zYV34xfx21bI^6vAITku@M1%2k`DwtCNUo7Sv*!h`pMDOq2|6$tg`gwFN*l8O+-X2w zjVSYy)Z4$578ILQvKl-Rz6rF~KXfuOxIA;>!ljNwHVsC=Gou4Cc~=pDK)_^-l5Yt_ z#lPiZek6PeXV3q_69NolJ9(3&WSKc-DwHSy{C8Yk|JX~+JEe<7NP$ZHgDDKY088N1 zi({ZK`7K=vkyL+E#y~_Z&RI+}NN8SakV;ard!D5_s)*dY8mO&QG4D!N65paxVoiU_ zZQ|*bqFrJXzJ{U@ovf5hKlN$e5)cQ9oT}8%%WUqT1%AVsEy(x0`YU93;v&_zPCbxx z&4~6&DI3QK$$}ovdN0ui`^?NRlgdE&8FdU_s)(B!P+ z+x>V;uq(#tPP&6o@jHtz;(5}O?C|#x?er--m=+|G1vzQGf|-T3 zX9PMK*G~8rHL1TdyA(NITq599ril-_XmSKlyGZmwe#s!|C<-3{+LMJiB9Bds1B@KE zycoKwBbwBS)xQ~@kg}*L?q;OHF~`Q2%$As!Dc6kA1XDNv(L6EXKo^Y>VG`{pe||%j zN;o9J?fW!^EbNYjw z`|RP_^WWZKJNGGE=-sntzusdH(I@*(Hd+F5d{@L-WI``yZqUoQU;i-7vMEV*1bX#~ zjIhQ``$!%Ma0N!#l1Q$M8s~S#7A=ir_HQSio9xKt&P1=+%%Au6b>+3Wi^j#auX=*Y z6>(*ACd2UVz5f{PoXL&r=O{()U%h!W- zGV8gSQxg_ZiW`Vm#4a1O5{NE<^cQdsYs(b%Yh(&TpVc|_Yn*6Z z6zkOy><^e7(Du4UhA?Jz4W7k!jVy6tyjMxKDYl?5Q+ZyjnnyWw zlb;w~bS!S>E^`8ydCnXOt=w*YI5MNqoFKD>w%30dE3x&qb8Dx5>&~4Rm})Y*b1Uk7Q((;kR?I1f!RhW zA`f0~?KEz644K1luqyKHRSVv{q<9l6mM{X-*jIUeC=C;NcsG&0DoI?W*X-Tf;w);* z3FzS8P#zs9@8M>$aQ@Kv^nz~U9f0x2nDfqLk~_|N>T~`$c8Q@>d~JFt#E`s0zGC@f z-jbj)8BJb}x4v@n%4^e;TkU<%avf_QxY_ag{$T}gC0&C799FO$WqKlVl~?)T#2ugF zFiL!k{K-~b*C$71Ja3pkuC8w~7%@>Cc#Lin-CXKc`26ki=j!Z1(xQClrfn_k+~jk< zb5n@3dskd8pLXoaao~QXz4}e*KS9aq?%R_e3VTm}&39e`Zo2QrrsGC_mz2e^9|y0P z{eEDF;m8hb?8ukHnC{m3Mv3wl&GBRt_pEO1jBIP4>g%P$IsSeo)84)Ytq_Pyo)iX7Cm; z;6E=_dUyDx1}~2t&)JHC*naUV9uu4b-!ke&81>pYRr1TUYJW&y9(Xf!d-6HYswu>j zQP4*AE51@Fb6=3SOwK;YUD9zQf1QlX=lF3r@7_LTRCz;R^M*KL4txh@?s1XOZz{tK z2H42gdXPCCUQrFkLnl?#Scg*fDum=FzT!)&_&uuBGTA|NtUBAJpks{GPa;zm9&*~u ztakBruIGPUaFR8B$v)Xf!h%e+v=F)@rh73h zpmSvU>8>()Ywrf{77UfqI%Cb}!p`wVnm4H#ZNtzL^NDIObz*ONM7PCvNK=qdCM1vI zsA$h8+mK`xi-w&s1#jP_NTprept<`NN6XIN|D1#w21q;RM*c#J6;9_WP*>c#l%Bya z?#!VPt=={?rd#8ZaVrxv5FaK#b)WvbkrV;#Hu2F&%$Cq(I=?KZF7i%Xd40@u{`A}S z9>y4AT;oq2pb`=U86#)oQibu#c2~;+p(`~78(p7*yqUB-jE+$X_MLFzn#Wzw_do}1 z-^VS+;?@z~g6gO)Zd;pqn;Kc0g5)SD(WOyJE@varsdf~eNd+SrP$cFKQeJ2JeN!v_73bn zi=Dvk^V{0AG0YA5H5aI)fcN`0kOR$}(l$jrMuEJAf$zKN@%aA)IqsXo09qKAaWSSs z*x$)s0fR2kY3k55dEy0#L@E?7vPyE4w(nB7og33pP!~Z@K!HXm8F6f>y(+J{9^`}iF>+2+Z#Jq#|qOsn{%eb^)c zQnX0E@eA{?n#xUmco)i6sjg=lN4LLA>~tFntzHy1iO*v*EfPtbqpzk#Vz$g1B&W{Q z9`Q22L540b_~Y}zp55;qX9wW2?S%;xPnn!hM2t?kuGD*UXv(a1^Tx}e2Xjw?jyp?1(2(}msUBBRY8o$C>9?- zcy(34SgjfLRYWzNp$e5>0v?PVFUo-sX#$1LVd3!N7b6PIN*A$8%|Lgr-dM?N<@{fG z!2AC&W#9t?1VkqOSV}34ugV2~bO(=3dL+FMlfU-ysxVG#p7OZaXtbI&z0;gBrh7vs zGHLLLcNenWP@}*2fDR8FBZTip@{`(tE8;D4A1Q|?@9oLnoF#8&!|DyqiB>c8hF-7N zbt7pjCfoe}T1c|ZVBj20Y1tkq&HYVrg;N&HZnFuW)~P@dkQ|sg!C~wvz{11*2zg?Pt>o`vgvlY9 zLjIv<==GM-Y8cHr_NPJ@koQ`>Rj)VNdb_6RcUP>pX-17-cZU!B?#2edoxU3i0rC5t z#8Alj@4m#dhu^z zVXdy~NAN>H>K6rKH1#9+At3PgFw-z-HBe&>XISXmqcpsfx7AH7}b&bE{ev+rb^ z!4?-qbB;d#hV|^S{h7I3j*nw;&9HhSqAFAK5`YAvKv8SnS}acs0VE*m`YkC+r@^$B z22<zVqF8@2Hnc z2s=Y58XswRb2{G2Ywh#j2X94C~NBAEu7HHHGkKicOB5^kQ~- z7kfd@$B&czv+nGa3MzGbWC4&{REbET>$0^mPp*Q}#q&t15Rq2JhO7)C?aTLp%G1C&Fn*{FAlD%ZG_oqv1OkoTfRcmp!LCKsk9 z6TsMY?MO2NoSUTX_nW2dJ$?$A=?f>I*uS6IK6}Sw@6yr&cXZOdX)|FHO9(AG0Go#F z&MxbK($8UbXdmpSR_4;?D+2yUxNkTRC-|mf>N-%-381*ojLyWQGiY(8;5tz4p=1S- z$`4t*77VF$=UdF9_?Tbjm&ZjH=Pf-p>zzik)@ju?uAcu>OeC<3PP^WK*JkRk2+2;x-Be2Ifi@`U_dMpJKr!Z+&I&hE8NW203k ztuuq&|K~?n%hz{$ehjmT@H)ErZ96z{Ec;qu-*x?K5t%#i(X_6}>r= z9T_*rOxGEDU4|h7=VsB=nL9tj9A9SL05RUK)i(-EoMyYx-sl*uMuz8etZvjUYIZ66 z5#-;gS$paV!F>>$f`B!cfcIcdJPiEU>*LJW54ypyw^nO5%S`@S-;^61R&pdtJ22Bs zw#_O@y{Rw9&_oA%M?-HhdY;p#!p@pabCwGfNV}lbZtA+R(JJZzqup%kZNq3auR`o7 zVK&)LnQZ^hPZ_$WxM65VVvos^rhwjVgKXTWwXeYxp0zcFM-#{w80ef$GP_@xI;y7v zw~F@wED-^wMtn_N)A5pkdl~1Igm=A0MP^6d7kocY=zT$}mZ-nl@CRNPnZv*w7d4AH z^6Q+2DG-WVmS)H|%}I+c)i$-_NhthdMj`aOzZfHpzXlOckJo9EmZmWIaJF4HE(oUokF8>BK56m zl5i=yiIF|zia6%yb4~d9t{H!VJbg@DRiIqkg8uH?y?|A>$({JcPu_UrRi+zyv)b7GpX{-{NhS3rV%**@CgL>XTBoYFsx{p(IJ8}PjG2gda9UBcl-y~y zTb)kpGUiuSA%3e`zg4Z@s@6Xg)tX!ItZmedW~ZU}1+H?zGl7221y7tiaFM)1Gl+No zgzb%>N+FLq`&J+4=ja*IPepo7Q(p!u$;6%y)g7nlQxjo!6Z*2%*uX9;Kv0Q~@T7o= zoh%z89u^)933sC1ngV{hybRf7TmsF;mxj-)ybOvQ`1wHz#l*{zuO)Cy6R38r z6V%3HpA1v}WuZ@w$ubrdRkH5LPkgffB4*u8Os3adGYb8&&Bt$IEeQ;qc@>m0A=#TC z!y`FbHDXeVF^rd_CB;O7js2eE+F)n(?VgFUSqrTIgeJa>2NR6%wM)~-U5NZVNFq~+ zhggbH7`w_&724L4AcE%u8#hy!F1^GUpJ|z)E!09}_O?ofSnpJPipg?qx^SyuP%0ES z@;!fitfc$2cUrT|$R7I8dsZA^G%D>7&~OJt82LexO67RGYBr}xOW|VJpEYvaKBOzj zozA>{II*s5OYsR?I1KRTN z^oQ@@@!Q{jkgjQ7M+Ix=t6;Ka1@|=_#GvpE+NYAEKEL1lUAzeSKkwqj#&pB+^|nO6 zU`uL+4X9mPov&)x7`k!67S{_~T%T$&Um%!Thq#&!n>FeiOEpSttAjQWr@aL&_{rB| z$k!Un4SCrBxj!)Jle9erJ#roOJs-hkeH#V!ZG0v5ZC_v&&f1N zwXIQ%yThjlzH|Sb-PhU9m!Dm4wKpzUZQNT;m*(c{{q7e(+y#1{{?#>$o#v8aa+=`g zz$RuHnbWo3x%1k+sbN|x3=fCdotXTV zc!t~fGZV?-L^JziJb5PuGidC5VDsbCzT$&-;>aKPP=#B~yJEV0tNH2{QtC0{$Aqx7 zeJ2c^p~p-jA#*%Fvt-|;!*oKn&EACcFd@w!`~D8@+Y2lkCUp^e4V@a~O%ZVy_*{``o?vvmvS~6|imroW91eGJsKdHQ=V=bY)WJIA%GjMoC+XeU}od&7LUz~zs=8>v#&Qv+_*NCl;N^SWnnOs5uh7Cj88`^>J z04h*9s#(;zVj6v5x;~OAjX|IGfX|~4mcKIU?0|HT_sA+&K;eB({|De%f>bl8Mh&Ze# z9&EJx=0&eHrAPb3lrCj zX0zNjAhALFC~vLLM4hK_id!Y)Z2W6Rtp<4XveDKP^m@6bx64LdUx>YcC9noF*lQjc zYRwwdp;^{bGME$_Y3L&HTvg#HQ)ZgV&L|r-?E20+ ztEm*gjsX%hWExbo(ctXSl4)2NsMmq|x05tL&}f%87LpIh1XSYmTRdc_t7>`+TF_Ez z54CJU?Hdc3mSgMrLEkpxqXn3t3D7K~)l8WJ(i%B?i6pkM&hYvD2TDYTOhL93kRm{ zB0oA7CWYaA?0Stj#;7U7z^GGa8?}XOGx)C}f(vs;kOu#gg@=w=gwJ};nyR8YmF;9sXeB++&n54-3xqdqyB zor$lzcR{w!%S9n_T~=?+%XB2OHE>(O(+YZ>$ui~k%ZUi8I52~?*;ed2d%+n`{2(&D zNWjP|ttG+bixog7BX>z~l(zszVgxS|z|;(z*}| zDq4ggZ%Hl*Jy&cdtK z9bR>LNpKk?OUsALAXzLmE(3izS#lW+=a(>-!FDORbA^bPmPVJtc>x)9`K~;VQk0CpDq^awRhF0>GD-br%4>gp9iY)Foxx1t4EQrdz(;(kDlLOx+3`5bdwjVHo(I#?vPyL>UuE?Qz!&k@VxRNn_-rx!A{|=fioR4m z3LzHS19>O%rO-};n~77plCJ=t1T~Kb(Rq9|?1qqL$$9b>UkXhMrT|CQD|{(DSx^PI zq)YNrSR{}F_dQCioF5=BSj0QD@AmuvsayfPqYFbkDuS7A zWx`Ev{E%36QT~Z}VDeOcQu;vb`q7?*_&;O`%+>9c>UY@f7v9@>_0Ha%_tPpI$mAht)u) zQI-B^n450RD3^i=3&BGeIoAI1W4>Jsk~VZm1h%xJ@bO&8BKqP{l`0rMs>+%JHY)z8 z`UHLe8p))de}s*&TtBoQkIi5|o&fCIVqYNN>iMX2iym%05{KhI68i=p$-uBjCETz? zKpx>~LkB~~PrrVYRx>>S`w^Xh{RmICekAYueN?KoA0hG+eVEp7@TZe38u?*e1{u*nt1l zjr#rppke@DHc@HuN3uuU_Om zc03H+E_LZ1FJQemv;*o<(|ZiV7_R{s+F|tdSi)cFkiyjs$!q9T@9zNFw#IeSlYj6z1sJBlE!V1CiD4 z7iWtncql_3X&yK3z zWL%|7_~fkweh>Qe0JlQ=?lE%zD|*GK=+(XxM%4#O&hLth0Pkh^vqjmssGAQEq~Gdx z+8&U8w%2zC@8fL{SJ$xNsOrT>e&6w`j%^q_6vg{i;7@Qfq8+}{s6d4aKUF|X%0^Kx zanl88d=Spza_tbQ;vPLb6aJxZ_C-MM)`{3m9tu{3X&c@O@LuKs`S;6}z_<48h*I!q z^RhDt%(0!zRx0EBV|eVAWMY~I{FWvo=ZY_Q1iJiy&!sYnpT~&D@rL}9cu~LE{qz%z zpmH<<-W~aFpZFO=_|Q0!SqHI4T(Bk@ynf;g{9d>3%8pYWulF%`b`ZEaoVSX+Ne|273^v){jm@(3%0 z$0Mw*J`|kL?LP3F$T3}@eSfu_(rNt!Eda?dbnt{{*;{s{Z%26iuOm`6p@ss>n{i~S zBa(xV<8I5d4_Q9TT7qyazJ$CKKRDh3jTCL^o0LL4mr3HCf^|%i6EKy5AKWvo(KLp2 zu(yIW2QoXiWg1e*?(h1274hz@vIN%E z^%G + + + + + + + + + +Thiết kế nhà 5 tầng 60m2 hiện đại tối ưu công năng ở Hà Nội NP520070 – Nội thất – kiến trúc An Việt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+ +
+
+ + + + +
+
+
+
+ + +

Thiết kế nhà 5 tầng 60m2 hiện đại tối ưu công năng ở Hà Nội NP520070

+
+ + +
+
+ + +
+
+
+ + +

Nếu như bạn đã quá quen thuộc với thương hiệu kiến trúc Angcovat gắn liền với các sản phẩm mẫu biệt thự đẹp 1,2,3 tầng thì các mẫu nhà phố chúng tôi cũng tư vấn thiết kế rất nhiều cho các khách hàng ở khắp tỉnh thành trong cả nước. Một trong số sản phẩm thiết kế nhà phố gần đây nhất của Angcovat chính là mẫu thiết kế nhà 5 tầng 60m2 phong cách hiện đại của gia đình anh Tùng ở Gia Lâm – Hà Nội. Ngôi nhà là sự kết tinh của kiến trúc hiện đại và cách bố trí công năng hài hòa, hợp lý, tiết kiệm diện tích thỏa mãn những yêu cầu mà chủ nhà đặt ra cho chúng tôi. Công trình được thiết kế gồm 2 nhà 5 tầng 60m2 giống nhau cho 2 gia đình (là hai cha con anh Tùng) nằm liền kề nhau – điều này không chỉ tăng vẻ đẹp thẩm mỹ, đồng bộ ngoại thất mà đó còn thể hiện được yếu tố tình cảm gia đình, gắn kết các thành viên trong nhà với nhau! Cùng chúng tôi tìm hiểu về kiến trúc cũng như mặt bằng công năng của mẫu thiết kế nhà phố 5 tầng đẹp hiện đại này nhé!

+

BẢNG THÔNG TIN BAN ĐẦU VỀ MẪU THIẾT KẾ NHÀ 5 TẦNG 60M2 CỦA GIA ĐÌNH ANH TRUNG

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
    +
  • Mã biệt thự
  • +
+
+

 NP520070

+
+
    +
  • Số tầng
  • +
+
+

 05

+
+
    +
  • Chủ đầu tư
  • +
+
+

 Ông Nguyễn Thanh Tùng

+
+
    +
  • Địa Chỉ
  • +
+
 Gia Lâm – Hà Nội
+
    +
  • Mặt tiền
  • +
+
+

 5m

+
+
    +
  • Chiều sâu
  • +
+
+

 12m

+
+
    +
  • Kích thước ô đất
  • +
+
 60m2
+
    +
  • Kiến trúc sư thiết kế
  • +
+
+

 Kiến trúc sư Angcovat

+
+
    +
  • Năm thi công
  • +
+
+

2020

+
+
    +
  • Kinh phí đầu tư dự kiến
  • +
+

Khoảng 1.9 tỷ/căn
+
    +
  • Thông số diện tích, Công năng
  • +
+
+

– Diện tích: 60m2/sàn

+

– Thông số diện tích, công năng của nhà 1:

+

+) Tầng 1: sân trước 7,8m2; khách bếp 31,1m2; sảnh thang 7,4m2

+

+) Tầng 2: ban công 6,2m2; phòng ngủ 1 32,1m2; wc 4,9m2; sảnh thang 3,3m2

+

+) Tầng 3: ban công 3m2; phòng ngủ 2 32,1m2; wc 4,9m2; sảnh thang 3,3m2

+

+) Tầng 4: ban công 3m2; phòng ngủ 32,1m2; sảnh thang 3,3m2; wc 4,9m2

+

+) Tầng 5: sân chơi và phơi 23,7m2; phòng thờ 11,5m2; sảnh thang 6,7m2

+

– Thông số diện tích, công năng của nhà 2:

+

+) Tầng 1: sân trước 8,4m2; khách bếp 27,6m2; sảnh thang 11m2, thông tầng 3,4m2

+

+) Tầng 2: phòng ngủ 29,3m2; sảnh thang 4,9m2; wc 5,9m2

+

+) Tầng 3: ban công 2m2; phòng ngủ 29,3m2; sảnh thang 4,9m2; wc 5,9m2

+

+) Tầng 4: ban công 4,1m2; phòng ngủ 1 29,3m2; wc 5,9m2; sảnh thang 4,9m2

+

+) Tầng 5: sân chơi phơi 23,7m2; phòng thờ 13m2; sảnh thang 9,7m2

+
+

BẢNG THỐNG KÊ VẬT TƯ CHI PHÍ XÂY NHÀ 5 TẦNG 60M2 Ở PHỐ

+

– Diện tích sàn 1 sàn: 60m2

– Diện tích tổng ( Bao gồm sảnh, mái): 324m2

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TTVật tư Tổng  Đơn vị  Đơn giá  Thành tiền 
1Cát mịn          155.58 m3              120,000.00          18,669,553.92
2Cát Vàng            64.92 m2              150,000.00            9,737,301.60
3Dây thép          267.72 kg                25,000.00            6,692,923.08
4Đá 1×2            96.50 m3              190,000.00          18,335,252.02
5Đá 4×6              6.64 m3              160,000.00            1,061,973.50
6Đinh          139.78 kg                20,000.00            2,795,554.94
7Gạch chỉ 6,5×10,5×22     73,929.74 Viên                  1,500.00        110,894,616.48
8Thép tròn D<10       6,421.75 Tấn                11,800.00          75,776,619.23
9Thép tròn 10<D<18       3,527.54 Tấn                11,800.00          41,625,013.54
10Thép tròn D>18       5,453.18 Tấn                11,800.00          64,347,575.73
11Xi măng      40,512.21 kg                  1,800.00          72,921,981.04
12Đá trang trí            51.71 m2              550,000.00          28,440,720.00
13Gạch lát nền, ốp vs          300.34 m2              250,000.00          75,085,347.60
14Cầu thang             68.00 m           3,500,000.00        238,000,000.00
15Sơn lót          256.61 m2              100,000.00          25,660,800.00
16sơn phủ          484.70 m2                80,000.00          38,776,320.00
17Ventolít       2,106.00 kg                50,000.00        105,300,000.00
18Xi măng trắng            64.80 kg                  3,000.00               194,400.00
19Cửa             90.72 m2           2,000,000.00        181,440,000.00
20Hệ vì kèo  Trọn gói         64,800,000.00          64,800,000.00
21Điện  Trọn gói         77,760,000.00          77,760,000.00
22Nước  Trọn gói         51,840,000.00          51,840,000.00
23Nhân công324 m2           1,300,000.00        421,200,000.00
 Cộng        1,731,355,952.67
 Chi phí khác           173,135,595.27
 Tổng        1,904,000,000.00
+

 Bằng chữ: Một tỷ chín trăm linh tư triệu đồng

+

Giá trị tạm tính:

+

* Đơn giá trung bình xây dựng cho công trình này: 5.876.543 ( Triệu/m2)
* Trường hợp chỉ làm vì kèo lợp ngói, đóng trần chi phí là: 1.713.600.000,00
* Trường hợp đổ bê tông mái bằng và mái dốc, chi phí là: 2.094.400.000,00

+

Ghi chú: 
* Thông số khối lượng tính toán trên chỉ mang tính tham khảo
* Đơn giá vật tư ở mức hoàn thiện cơ bản trung bình
* Đơn giá trên là đơn giá chủ đầu tư trực tiếp thi công
* Chi phí khác: Đào móng, lấp cọc, ép cọc, phát sinh công,….= 10- 15% chi phí tổng

+

Chú ý:

+

+) Bạn để lại diện tích nhà dự tính xây dựng và địa chỉ email phía bình luận ( Comment) bên dưới mỗi bài viết. 
+) Chúng tôi sẽ tính toán và gửi đến bạn bảng chi phí xây dựng dự kiến cho gia đình mình.

+

 – Cơ sở để tính toán chính xác mẫu thiết kế nhà 5 tầng 60m2: Phụ thuộc vào địa phương xây dựng, thời gian xây dựng, quãng đường vận chuyển vật liệu, chất lượng của vật liệu, tính chất của nền móng để tính toán chi phí làm móng. Khi thuê thiết kế nhà đẹp, chúng tôi cũng có gói dự toán chi tiết giới thiệu đến chủ đầu tư với chi phí là 2 triệu đồng, trong gói dự toán sẽ đầy đủ chi phí và khối lượng vật liệu được tính toán tỉ mỉ theo địa điểm xây dựng cũng như thông tin cụ thể mà khách hàng cung cấp, như thế chi phí phát sinh sẽ không cao. Bên cạnh đó chúng tôi cũng đã thực hiện cả thi công trọn gói nếu chủ đầu tư có yêu cầu khi thuê thiết kế. Rất hân hạnh được hợp tác với quý khách hàng trên cả nước.

+

Xem thêm: chi phí xây nhà 5 tầng 60m2 

+

 YÊU CẦU TƯ VẤN MẪU THIẾT KẾ NHÀ 5 TẦNG 60M2 PHONG CÁCH HIỆN ĐẠI Ở HÀ NỘI 

+

thiết kế nhà 5 tầng 60m2 hiện đại đẹp

+

 Phối cảnh view 1: Mẫu thiết kế nhà 5 tầng 60m2 độc đáo sáng tạo ở Gia Lâm – Hà Nội

+

Anh Tùng là khách hàng thiết kế và biết tới công ty qua các phương tiện truyền thông trên internet. Không cần quảng cáo quá nhiều, anh Tùng tự tìm kiếm các mẫu thiết kế nhà phố đẹp trên google và rất thích các sản phẩm của Angcovat. Chúng tôi với thế mạnh thiết kế biệt thự đẹp, nhà phố và thi công trọn gói, với kinh nghiệm hơn 10 năm trong nghề, mỗi năm cho ra đời hàng trăm sản phẩm thiết kế đẹp nên anh Tùng vô cùng thích thú với các mẫu nhà theo nhiều trường phái khác nhau, đa dạng về mẫu mã, kiểu dáng, công năng, diện tích. Vì thế sau khi khá ưng ý các mẫu thiết kế nhà của chúng tôi, anh Tùng chủ động liên lạc qua số Hotline và  đã thống nhất với chúng tôi phương án thiết kế cho mẫu thiết kế nhà 5 tầng 60m2 như sau:

+

– Về diện tích: 60m2/sàn với 5 tầng và thiết kế 2 ngôi nhà có diện tích và kiểu dáng tương tự nhau, liền kề nhau. Đây là 2 công trình của 2 bố con anh Tùng, anh xây dựng ở gần nhau để tiện cho việc chăm sóc và phụng dưỡng cha mẹ, con cháu được ở cạnh ông bà. Mặt khác vẫn đảm bảo được yếu tố riêng tư, phù hợp với cuộc sống văn minh hiện đại như ngày nay.

+

– Kiến trúc hiện đại tối giản nhưng vẫn đạt giá trị thẩm mĩ, tính sáng tạo, không gian rộng mở có tính kết nối với thiên nhiên.

+

– Thiết kế nhà 5 tầng 60m2 hiện đại sử dụng mái bằng để tận dụng không gian làm sân phơi, sân thượng, có không gian tạo cảnh quan thiên nhiên như dàn dây leo, chỗ trồng cây cảnh…

+

– Về công năng sử dụng: Gồm 1 phòng khách, 1 phòng bếp ăn, 3 phòng ngủ, 1 phòng thờ, sân phơi và  WC được bố trí hợp lý ở 5 tầng.

+

– Chi phí xây dựng: thỏa mãn các yếu tố về thẩm mỹ cũng như lựa chọn các vật liệu bền đẹp, đầu tư ở mức khá.

+

– Về phong thủy: Xem đúng tuổi xây nhà, hướng nhà, hướng bếp, hướng phòng thờ và số bậc cầu thang…

+

 NGẮM NHÌN VẺ ĐẸP ĐỘC ĐÁO MỚI LẠ CỦA MẪU THIẾT KẾ NHÀ 5 TẦNG 60M2 KIẾN TRÚC HIỆN ĐẠI

+

thiết kế nhà 5 tầng 60m2 mặt tiền đơn giản

+

 View phối cảnh 2: Hình ảnh mặt tiền mẫu thiết kế nhà 5 tầng 60m2 mái bằng hiện đại

+

 – Mẫu thiết kế nhà có 3 mặt giáp các công trình khác

+

Những ngôi nhà phố, đặc biệt là những mẫu nhà hiện đại được xây dựng ở đô thị hầu hết đều tiếp giáp với các công trình khác và thường bị che khuất 3 mặt nên chỉ tập trung thể hiện ngoại thất ở mặt tiền ngôi nhà.

+

Với những nhà phố có 3 mặt bị che khuất và diện tích nhỏ hẹp như mẫu thiết kế nhà 5 tầng 60m2 thì biện pháp cho ngoại thất là sử dụng kiến trúc hiện đại tối giản để tạo độ thoáng cho ngôi nhà, tập trung vào công năng sử dụng. Có một điều cần lưu ý đó là khi công trình nhà giáp các công trình bên cạnh thì việc xử lý nền móng phải đúng kỹ thuật, phù hợp để đảm bảo sau này không bị lún nghiêng, đặc biệt đối với nhà cao tầng thì việc xử lý móng cần có đội kỹ sư của đơn vị thiết kế tính toán.

+

– Đặc điểm kiến trúc ngoại thất hiện đại của mẫu thiết kế nhà 5 tầng 60m2 có gì đặc biệt ?

+

Việc thể hiện kiến trúc ấn tượng, hình khối nhà độc đáo cho những công trình nhỏ hẹp ở khu đô thị đông đúc là điều hết sức khó khăn, tuy nhiên với yêu cầu tối giản về kiến trúc để tiết kiệm chi phí của khách hàng, chúng tôi chỉ tập trung tạo điểm nhấn và sử dụng vật liệu hiện đại để tạo nên sự khác biệt cho mẫu nhà với các công trình trong khu vực kề cận, vì mỗi bản thiết kế sẽ có những đặc điểm riêng về kiến trúc.

+

Mặc dù không thể tạo hình khối phá cách có đặc thù về hình học như các biệt thự hiện đại phóng khoáng và tự do vì điều kiện không gian không cho phép kts sáng tạo, tuy nhiên về mặt thẩm mĩ, không thể phủ nhận mẫu thiết kế nhà 5 tầng 60m2 hiện đại có sự ấn tượng riêng và sang trọng, khác biệt so với các công trình khác.

+

thiết kế nhà 5 tầng 60m2 giá rẻ

+

 Phối cảnh view 3: mẫu thiết kế nhà 5 tầng 60m2 đơn giản đẹp 

+

Mặt tiền mẫu nhà phố 5 tầng hiện đại có thể thấy sự giống nhau và cân xứng các mảng khối giữa các tầng, kể cả cách thể hiện màu sắc và các chi tiết như hệ thống cửa sổ kính khung gỗ thoáng rộng hay mảng tường sơn màu nâu giả gỗ kéo dài ở các tầng. Tuy nhiên điểm nhấn của mẫu nhà chính là ốp đá mặt tiền tầng 1 bằng đá granit màu nâu có vân loang lổ tạo nên sự sang trọng và đẳng cấp cho mẫu nhà. Bên cạnh đó là cách tạo khối ở mặt tiền bằng mảng tường trắng vuông ở tầng 3 làm nên sự khác biệt trong sự cân bằng, đối xứng.

+

Về màu sắc: Không gian ngoại thất kiến trúc hiện đại tối giản được tạo nên tính thẩm mĩ nhờ màu sắc là yếu tố hỗ trợ đắc lực. Gam màu được thể hiện ở mẫu thiết kế nhà 5 tầng 60m2 vô cùng hài hòa và phù hợp với xu hướng hiện nay. Màu nâu của sơn giả gỗ kết hợp với màu trắng nhã nhặn vô cùng nổi bật và tạo điểu kiện để tạo điểm nhấn một cách dễ dàng vì màu trắng rất dễ dàng kết hợp với các màu sắc trầm khác, đồng thời là màu sắc tươi sáng nổi trên nền của gam màu trầm như màu nâu, tạo nên vẻ đẹp tự nhiên, sang trọng.

+

Không có các chi tiết trang trí rườm rà hay đường nét uốn cong mềm mại như kiến trúc tân cổ hay cổ điển nhưng có sự mạch lạc, trực quan trong hình khối, các ô cửa sổ kích thước lớn tạo nên sự thoáng rộng cần thiết cho ngôi nhà diện tích nhỏ để dễ dàng hơn trong việc lấy ánh sáng và gió tự nhiên cho không gian nội thất, đây là vấn đề rất quan trọng.

+

Ngoại thất tối giản không thể hiện các chi tiết trang trí rườm rà không chỉ tạo sự thông thoáng cho mặt tiền mẫu thiết kế nhà 5 tầng 60m2 mà còn giúp gia chủ tiết kiệm chi phí thiết kế, chi phí nhân công, chi phí xây dựng. Hơn nữa trang trí mặt tiền bằng các họa tiết tỉ mỉ cần có không gian thoáng chứ những công trình nhỏ ở đô thị khó có điều kiện thể hiện các đặc trưng của kiến trúc tân cổ điển hoặc cổ điển.

+

 Mặc dù không chú trọng vào các chi tiết ngoại thất nhưng về vật liệu thì luôn thể hiện vẻ đẹp sang trọng như kính cường lực, đá ốp mặt tiền granit hay gạch lát sàn…Các chất liệu hiện đại vừa làm tăng tuổi thọ của mẫu thiết kế nhà 5 tầng 60m2 tránh khỏi các tác động của thời tiết hay vững chắc hơn khi giáp các công trình khác.

+

 Trên đây là một số điểm nổi bật của ngoại thất mẫu thiết kế nhà 5 tầng 60m2 hiện đại của gia đình anh Tùng. Không gian sống đẳng cấp không thể thiếu cách bố trí mặt bằng công năng sử dụng khoa học, hợp lý. Vì thế hãy cùng chúng tôi tìm hiểu cách bố trí mặt bằng ngôi nhà này nhé! 

+

Tìm hiểu thêm: Biệt thự 2 tầng 4 phòng ngủ đẹp

+

BỐ CỤC MẶT BẰNG CÔNG NĂNG SỬ DỤNG MẪU THIẾT KẾ NHÀ 5 TẦNG 60M2 HIỆN ĐẠI

+

mặt bằng tầng 1 thiết kế nhà 5 tầng 60m2

+

 Mặt bằng tầng 1: Mẫu thiết kế nhà 5 tầng 60m2 hiện đại

+

Không gian sử dụng của toàn bộ tầng 1 được tận dụng làm không gian sử dụng chung cho toàn bộ gia đình bao gồm phòng khách, phòng bếp ăn, và sảnh thang, wc. Bên ngoài là không gian sân trước để cac phương tiện đi lại như xe máy, xe đạp.Đây là một trong những cách bố trí không gian sử dụng thường thấy trong các mẫu thiết kế nhà 5 tầng 60m2 phong cách hiện đại. Mặc dù 2 ngôi nhà riêng biệt nhưng không gian sử dụng khá tương đồng nhau. 

+

Tìm hiểu: biệt thự 2 tầng 3 phòng ngủ 1 phòng khách hiện đại

+

mặt bằng tầng 2 thiết kế nhà 5 tầng 60m2

+

 Bản vẽ mặt bằng tầng 2 mẫu thiết kế nhà 5 tầng 60m2

+

Mặt bằng công năng sử dụng tầng 2 của mẫu thiết kế nhà 5 tầng 60m2 có cách bố trí công năng sử dụng tương tự nhau. Mỗi tầng đặt được 1 phòng ngủ diện tích khá rộng rãi và 1 phòng WC cho việc sử dụng. Các phòng ngủ ở đều có ban công nhỏ đi ra bên ngoài nên vô cùng thoáng đãng, tự nhiên, phù hợp với thói quen sử dụng và nhu cầu sống của gia đình. Không gian các phòng sử dụng trong nhà ống đều cần đề cao tính thoải mái, thoáng đãng, chính vì thế mà bố cục phòng như vậy là khá hợp lý cho việc sử dụng trong ngôi nhà. 

+

Tham khảo: Mẫu thiết kế nhà 5 tầng 30m2 đẹp

+

mặt bằng tầng 3 thiết kế nhà 5 tầng 60m2

+

  Mặt bằng tầng 3: Mẫu thiết kế nhà 5 tầng 60m2 hiện đại

+

Tầng 3 của mẫu thiết kế nhà phố 5 tầng diện tích 60m2 bao gồm 1 phòng ngủ. Phòng ngủ ở tầng 3 được dành cho diện tích sử dụng rộng hơn. Chính vì thề mà không gian sử dụng trong phòng ngủ được dành diện tích rộng hơn. Phòng ngủ tầng 3 cũng có cửa sổ rông hơn, không gian nội thất bên trong cũng sẽ được bố trí khác so với phòng ngủ tầng 2. 

+

mặt bằng tầng 4 thiết kế nhà 5 tầng 60m2

+

 Mặt bằng tầng 4: Mẫu thiết kế nhà 5 tầng 60m2 hiện đại

+

 Lên tới tầng 4 không gian được thiết kế tương tự như tầng 2 và 3. Mỗi tầng gồm có 1 phòng ngủ rộng rãi có ban công, cửa sổ ra bên ngoài vô cùng thoáng mát. Tổng thể quy hoạch nội thất ngôi nhà hoàn toàn phù hợp với sinh hoạt và số lượng thành viên trong gia đình. Kiến trúc hiện đại yêu cầu công năng sử dụng gọn gàng, tiết kiệm diện tích, đáp ứng được yêu cầu của các chủ đầu tư khi sở hữu nhà phố diện tích khiêm tốn.

+

mặt bằng nội thất mẫu thiết kế nhà 5 tầng 60m2

+

 Mặt bằng tầng 5: Mẫu thiết kế nhà 5 tầng 60m2

+

Toàn bộ không gian của tầng 5 được dành cho phòng thờ. Diện tích sử dụng của phòng thờ tương đối rộng rãi. Vị trí đặt phòng thờ cũng trang trọng ở phía cao nhất trong ngôi nhà. Phù hợp với mong muốn và nhu cầu sử dụng của chủ đầu tư.

+

Như vậy, mẫu thiết kế nhà 5 tầng 60m2 hiện đại được hoàn thiện, mọi thắc mắc liên quan đến hồ sơ thiết kế, kĩ thuật thi công công trình này bạn có thể liên hệ trực tiếp với kiến trúc sư của chúng tôi để được tư vấn, hướng dẫn và giải đáp mọi thắc mắc! Các câu hỏi cần giải đáp liên quan tới chi phí xây nhà 5 tầng 60m2 đều được chúng tôi tư vấn tỷ mỉ chi tiết. 

+ + +
+ + + + + +
+
+ + + + +
+ + + + +
+

Trả lời

Email của bạn sẽ không được hiển thị công khai.

+ +

+

+ +

+ +
+
+ +
+ +
+ + +
+ + + +
+ + + + + +
+
+
+ + + + + +
+
+
+ + +
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/cache/wp-rocket/localhost/2022/02/13/thiet-ke-nha-5-tang-60m2-hien-dai-toi-uu-cong-nang-o-ha-noi-np520070/index-mobile.html_gzip b/wp-content/cache/wp-rocket/localhost/2022/02/13/thiet-ke-nha-5-tang-60m2-hien-dai-toi-uu-cong-nang-o-ha-noi-np520070/index-mobile.html_gzip new file mode 100644 index 0000000000000000000000000000000000000000..29c9a6457cf2ac0955bef195847e56b1acbf6147 GIT binary patch literal 21130 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 literal 0 HcmV?d00001 diff --git a/wp-content/cache/wp-rocket/localhost/2022/02/13/thiet-ke-nha-5-tang-60m2-hien-dai-toi-uu-cong-nang-o-ha-noi-np520070/index.html b/wp-content/cache/wp-rocket/localhost/2022/02/13/thiet-ke-nha-5-tang-60m2-hien-dai-toi-uu-cong-nang-o-ha-noi-np520070/index.html new file mode 100644 index 0000000..99b8e77 --- /dev/null +++ b/wp-content/cache/wp-rocket/localhost/2022/02/13/thiet-ke-nha-5-tang-60m2-hien-dai-toi-uu-cong-nang-o-ha-noi-np520070/index.html @@ -0,0 +1,1258 @@ + + + + + + + + + + +Thiết kế nhà 5 tầng 60m2 hiện đại tối ưu công năng ở Hà Nội NP520070 – Nội thất – kiến trúc An Việt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+ +
+
+ + + + +
+
+
+
+ + +

Thiết kế nhà 5 tầng 60m2 hiện đại tối ưu công năng ở Hà Nội NP520070

+
+ + +
+
+ + +
+
+
+ + +

Nếu như bạn đã quá quen thuộc với thương hiệu kiến trúc Angcovat gắn liền với các sản phẩm mẫu biệt thự đẹp 1,2,3 tầng thì các mẫu nhà phố chúng tôi cũng tư vấn thiết kế rất nhiều cho các khách hàng ở khắp tỉnh thành trong cả nước. Một trong số sản phẩm thiết kế nhà phố gần đây nhất của Angcovat chính là mẫu thiết kế nhà 5 tầng 60m2 phong cách hiện đại của gia đình anh Tùng ở Gia Lâm – Hà Nội. Ngôi nhà là sự kết tinh của kiến trúc hiện đại và cách bố trí công năng hài hòa, hợp lý, tiết kiệm diện tích thỏa mãn những yêu cầu mà chủ nhà đặt ra cho chúng tôi. Công trình được thiết kế gồm 2 nhà 5 tầng 60m2 giống nhau cho 2 gia đình (là hai cha con anh Tùng) nằm liền kề nhau – điều này không chỉ tăng vẻ đẹp thẩm mỹ, đồng bộ ngoại thất mà đó còn thể hiện được yếu tố tình cảm gia đình, gắn kết các thành viên trong nhà với nhau! Cùng chúng tôi tìm hiểu về kiến trúc cũng như mặt bằng công năng của mẫu thiết kế nhà phố 5 tầng đẹp hiện đại này nhé!

+

BẢNG THÔNG TIN BAN ĐẦU VỀ MẪU THIẾT KẾ NHÀ 5 TẦNG 60M2 CỦA GIA ĐÌNH ANH TRUNG

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
    +
  • Mã biệt thự
  • +
+
+

 NP520070

+
+
    +
  • Số tầng
  • +
+
+

 05

+
+
    +
  • Chủ đầu tư
  • +
+
+

 Ông Nguyễn Thanh Tùng

+
+
    +
  • Địa Chỉ
  • +
+
 Gia Lâm – Hà Nội
+
    +
  • Mặt tiền
  • +
+
+

 5m

+
+
    +
  • Chiều sâu
  • +
+
+

 12m

+
+
    +
  • Kích thước ô đất
  • +
+
 60m2
+
    +
  • Kiến trúc sư thiết kế
  • +
+
+

 Kiến trúc sư Angcovat

+
+
    +
  • Năm thi công
  • +
+
+

2020

+
+
    +
  • Kinh phí đầu tư dự kiến
  • +
+

Khoảng 1.9 tỷ/căn
+
    +
  • Thông số diện tích, Công năng
  • +
+
+

– Diện tích: 60m2/sàn

+

– Thông số diện tích, công năng của nhà 1:

+

+) Tầng 1: sân trước 7,8m2; khách bếp 31,1m2; sảnh thang 7,4m2

+

+) Tầng 2: ban công 6,2m2; phòng ngủ 1 32,1m2; wc 4,9m2; sảnh thang 3,3m2

+

+) Tầng 3: ban công 3m2; phòng ngủ 2 32,1m2; wc 4,9m2; sảnh thang 3,3m2

+

+) Tầng 4: ban công 3m2; phòng ngủ 32,1m2; sảnh thang 3,3m2; wc 4,9m2

+

+) Tầng 5: sân chơi và phơi 23,7m2; phòng thờ 11,5m2; sảnh thang 6,7m2

+

– Thông số diện tích, công năng của nhà 2:

+

+) Tầng 1: sân trước 8,4m2; khách bếp 27,6m2; sảnh thang 11m2, thông tầng 3,4m2

+

+) Tầng 2: phòng ngủ 29,3m2; sảnh thang 4,9m2; wc 5,9m2

+

+) Tầng 3: ban công 2m2; phòng ngủ 29,3m2; sảnh thang 4,9m2; wc 5,9m2

+

+) Tầng 4: ban công 4,1m2; phòng ngủ 1 29,3m2; wc 5,9m2; sảnh thang 4,9m2

+

+) Tầng 5: sân chơi phơi 23,7m2; phòng thờ 13m2; sảnh thang 9,7m2

+
+

BẢNG THỐNG KÊ VẬT TƯ CHI PHÍ XÂY NHÀ 5 TẦNG 60M2 Ở PHỐ

+

– Diện tích sàn 1 sàn: 60m2

– Diện tích tổng ( Bao gồm sảnh, mái): 324m2

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TTVật tư Tổng  Đơn vị  Đơn giá  Thành tiền 
1Cát mịn          155.58 m3              120,000.00          18,669,553.92
2Cát Vàng            64.92 m2              150,000.00            9,737,301.60
3Dây thép          267.72 kg                25,000.00            6,692,923.08
4Đá 1×2            96.50 m3              190,000.00          18,335,252.02
5Đá 4×6              6.64 m3              160,000.00            1,061,973.50
6Đinh          139.78 kg                20,000.00            2,795,554.94
7Gạch chỉ 6,5×10,5×22     73,929.74 Viên                  1,500.00        110,894,616.48
8Thép tròn D<10       6,421.75 Tấn                11,800.00          75,776,619.23
9Thép tròn 10<D<18       3,527.54 Tấn                11,800.00          41,625,013.54
10Thép tròn D>18       5,453.18 Tấn                11,800.00          64,347,575.73
11Xi măng      40,512.21 kg                  1,800.00          72,921,981.04
12Đá trang trí            51.71 m2              550,000.00          28,440,720.00
13Gạch lát nền, ốp vs          300.34 m2              250,000.00          75,085,347.60
14Cầu thang             68.00 m           3,500,000.00        238,000,000.00
15Sơn lót          256.61 m2              100,000.00          25,660,800.00
16sơn phủ          484.70 m2                80,000.00          38,776,320.00
17Ventolít       2,106.00 kg                50,000.00        105,300,000.00
18Xi măng trắng            64.80 kg                  3,000.00               194,400.00
19Cửa             90.72 m2           2,000,000.00        181,440,000.00
20Hệ vì kèo  Trọn gói         64,800,000.00          64,800,000.00
21Điện  Trọn gói         77,760,000.00          77,760,000.00
22Nước  Trọn gói         51,840,000.00          51,840,000.00
23Nhân công324 m2           1,300,000.00        421,200,000.00
 Cộng        1,731,355,952.67
 Chi phí khác           173,135,595.27
 Tổng        1,904,000,000.00
+

 Bằng chữ: Một tỷ chín trăm linh tư triệu đồng

+

Giá trị tạm tính:

+

* Đơn giá trung bình xây dựng cho công trình này: 5.876.543 ( Triệu/m2)
* Trường hợp chỉ làm vì kèo lợp ngói, đóng trần chi phí là: 1.713.600.000,00
* Trường hợp đổ bê tông mái bằng và mái dốc, chi phí là: 2.094.400.000,00

+

Ghi chú: 
* Thông số khối lượng tính toán trên chỉ mang tính tham khảo
* Đơn giá vật tư ở mức hoàn thiện cơ bản trung bình
* Đơn giá trên là đơn giá chủ đầu tư trực tiếp thi công
* Chi phí khác: Đào móng, lấp cọc, ép cọc, phát sinh công,….= 10- 15% chi phí tổng

+

Chú ý:

+

+) Bạn để lại diện tích nhà dự tính xây dựng và địa chỉ email phía bình luận ( Comment) bên dưới mỗi bài viết. 
+) Chúng tôi sẽ tính toán và gửi đến bạn bảng chi phí xây dựng dự kiến cho gia đình mình.

+

 – Cơ sở để tính toán chính xác mẫu thiết kế nhà 5 tầng 60m2: Phụ thuộc vào địa phương xây dựng, thời gian xây dựng, quãng đường vận chuyển vật liệu, chất lượng của vật liệu, tính chất của nền móng để tính toán chi phí làm móng. Khi thuê thiết kế nhà đẹp, chúng tôi cũng có gói dự toán chi tiết giới thiệu đến chủ đầu tư với chi phí là 2 triệu đồng, trong gói dự toán sẽ đầy đủ chi phí và khối lượng vật liệu được tính toán tỉ mỉ theo địa điểm xây dựng cũng như thông tin cụ thể mà khách hàng cung cấp, như thế chi phí phát sinh sẽ không cao. Bên cạnh đó chúng tôi cũng đã thực hiện cả thi công trọn gói nếu chủ đầu tư có yêu cầu khi thuê thiết kế. Rất hân hạnh được hợp tác với quý khách hàng trên cả nước.

+

Xem thêm: chi phí xây nhà 5 tầng 60m2 

+

 YÊU CẦU TƯ VẤN MẪU THIẾT KẾ NHÀ 5 TẦNG 60M2 PHONG CÁCH HIỆN ĐẠI Ở HÀ NỘI 

+

thiết kế nhà 5 tầng 60m2 hiện đại đẹp

+

 Phối cảnh view 1: Mẫu thiết kế nhà 5 tầng 60m2 độc đáo sáng tạo ở Gia Lâm – Hà Nội

+

Anh Tùng là khách hàng thiết kế và biết tới công ty qua các phương tiện truyền thông trên internet. Không cần quảng cáo quá nhiều, anh Tùng tự tìm kiếm các mẫu thiết kế nhà phố đẹp trên google và rất thích các sản phẩm của Angcovat. Chúng tôi với thế mạnh thiết kế biệt thự đẹp, nhà phố và thi công trọn gói, với kinh nghiệm hơn 10 năm trong nghề, mỗi năm cho ra đời hàng trăm sản phẩm thiết kế đẹp nên anh Tùng vô cùng thích thú với các mẫu nhà theo nhiều trường phái khác nhau, đa dạng về mẫu mã, kiểu dáng, công năng, diện tích. Vì thế sau khi khá ưng ý các mẫu thiết kế nhà của chúng tôi, anh Tùng chủ động liên lạc qua số Hotline và  đã thống nhất với chúng tôi phương án thiết kế cho mẫu thiết kế nhà 5 tầng 60m2 như sau:

+

– Về diện tích: 60m2/sàn với 5 tầng và thiết kế 2 ngôi nhà có diện tích và kiểu dáng tương tự nhau, liền kề nhau. Đây là 2 công trình của 2 bố con anh Tùng, anh xây dựng ở gần nhau để tiện cho việc chăm sóc và phụng dưỡng cha mẹ, con cháu được ở cạnh ông bà. Mặt khác vẫn đảm bảo được yếu tố riêng tư, phù hợp với cuộc sống văn minh hiện đại như ngày nay.

+

– Kiến trúc hiện đại tối giản nhưng vẫn đạt giá trị thẩm mĩ, tính sáng tạo, không gian rộng mở có tính kết nối với thiên nhiên.

+

– Thiết kế nhà 5 tầng 60m2 hiện đại sử dụng mái bằng để tận dụng không gian làm sân phơi, sân thượng, có không gian tạo cảnh quan thiên nhiên như dàn dây leo, chỗ trồng cây cảnh…

+

– Về công năng sử dụng: Gồm 1 phòng khách, 1 phòng bếp ăn, 3 phòng ngủ, 1 phòng thờ, sân phơi và  WC được bố trí hợp lý ở 5 tầng.

+

– Chi phí xây dựng: thỏa mãn các yếu tố về thẩm mỹ cũng như lựa chọn các vật liệu bền đẹp, đầu tư ở mức khá.

+

– Về phong thủy: Xem đúng tuổi xây nhà, hướng nhà, hướng bếp, hướng phòng thờ và số bậc cầu thang…

+

 NGẮM NHÌN VẺ ĐẸP ĐỘC ĐÁO MỚI LẠ CỦA MẪU THIẾT KẾ NHÀ 5 TẦNG 60M2 KIẾN TRÚC HIỆN ĐẠI

+

thiết kế nhà 5 tầng 60m2 mặt tiền đơn giản

+

 View phối cảnh 2: Hình ảnh mặt tiền mẫu thiết kế nhà 5 tầng 60m2 mái bằng hiện đại

+

 – Mẫu thiết kế nhà có 3 mặt giáp các công trình khác

+

Những ngôi nhà phố, đặc biệt là những mẫu nhà hiện đại được xây dựng ở đô thị hầu hết đều tiếp giáp với các công trình khác và thường bị che khuất 3 mặt nên chỉ tập trung thể hiện ngoại thất ở mặt tiền ngôi nhà.

+

Với những nhà phố có 3 mặt bị che khuất và diện tích nhỏ hẹp như mẫu thiết kế nhà 5 tầng 60m2 thì biện pháp cho ngoại thất là sử dụng kiến trúc hiện đại tối giản để tạo độ thoáng cho ngôi nhà, tập trung vào công năng sử dụng. Có một điều cần lưu ý đó là khi công trình nhà giáp các công trình bên cạnh thì việc xử lý nền móng phải đúng kỹ thuật, phù hợp để đảm bảo sau này không bị lún nghiêng, đặc biệt đối với nhà cao tầng thì việc xử lý móng cần có đội kỹ sư của đơn vị thiết kế tính toán.

+

– Đặc điểm kiến trúc ngoại thất hiện đại của mẫu thiết kế nhà 5 tầng 60m2 có gì đặc biệt ?

+

Việc thể hiện kiến trúc ấn tượng, hình khối nhà độc đáo cho những công trình nhỏ hẹp ở khu đô thị đông đúc là điều hết sức khó khăn, tuy nhiên với yêu cầu tối giản về kiến trúc để tiết kiệm chi phí của khách hàng, chúng tôi chỉ tập trung tạo điểm nhấn và sử dụng vật liệu hiện đại để tạo nên sự khác biệt cho mẫu nhà với các công trình trong khu vực kề cận, vì mỗi bản thiết kế sẽ có những đặc điểm riêng về kiến trúc.

+

Mặc dù không thể tạo hình khối phá cách có đặc thù về hình học như các biệt thự hiện đại phóng khoáng và tự do vì điều kiện không gian không cho phép kts sáng tạo, tuy nhiên về mặt thẩm mĩ, không thể phủ nhận mẫu thiết kế nhà 5 tầng 60m2 hiện đại có sự ấn tượng riêng và sang trọng, khác biệt so với các công trình khác.

+

thiết kế nhà 5 tầng 60m2 giá rẻ

+

 Phối cảnh view 3: mẫu thiết kế nhà 5 tầng 60m2 đơn giản đẹp 

+

Mặt tiền mẫu nhà phố 5 tầng hiện đại có thể thấy sự giống nhau và cân xứng các mảng khối giữa các tầng, kể cả cách thể hiện màu sắc và các chi tiết như hệ thống cửa sổ kính khung gỗ thoáng rộng hay mảng tường sơn màu nâu giả gỗ kéo dài ở các tầng. Tuy nhiên điểm nhấn của mẫu nhà chính là ốp đá mặt tiền tầng 1 bằng đá granit màu nâu có vân loang lổ tạo nên sự sang trọng và đẳng cấp cho mẫu nhà. Bên cạnh đó là cách tạo khối ở mặt tiền bằng mảng tường trắng vuông ở tầng 3 làm nên sự khác biệt trong sự cân bằng, đối xứng.

+

Về màu sắc: Không gian ngoại thất kiến trúc hiện đại tối giản được tạo nên tính thẩm mĩ nhờ màu sắc là yếu tố hỗ trợ đắc lực. Gam màu được thể hiện ở mẫu thiết kế nhà 5 tầng 60m2 vô cùng hài hòa và phù hợp với xu hướng hiện nay. Màu nâu của sơn giả gỗ kết hợp với màu trắng nhã nhặn vô cùng nổi bật và tạo điểu kiện để tạo điểm nhấn một cách dễ dàng vì màu trắng rất dễ dàng kết hợp với các màu sắc trầm khác, đồng thời là màu sắc tươi sáng nổi trên nền của gam màu trầm như màu nâu, tạo nên vẻ đẹp tự nhiên, sang trọng.

+

Không có các chi tiết trang trí rườm rà hay đường nét uốn cong mềm mại như kiến trúc tân cổ hay cổ điển nhưng có sự mạch lạc, trực quan trong hình khối, các ô cửa sổ kích thước lớn tạo nên sự thoáng rộng cần thiết cho ngôi nhà diện tích nhỏ để dễ dàng hơn trong việc lấy ánh sáng và gió tự nhiên cho không gian nội thất, đây là vấn đề rất quan trọng.

+

Ngoại thất tối giản không thể hiện các chi tiết trang trí rườm rà không chỉ tạo sự thông thoáng cho mặt tiền mẫu thiết kế nhà 5 tầng 60m2 mà còn giúp gia chủ tiết kiệm chi phí thiết kế, chi phí nhân công, chi phí xây dựng. Hơn nữa trang trí mặt tiền bằng các họa tiết tỉ mỉ cần có không gian thoáng chứ những công trình nhỏ ở đô thị khó có điều kiện thể hiện các đặc trưng của kiến trúc tân cổ điển hoặc cổ điển.

+

 Mặc dù không chú trọng vào các chi tiết ngoại thất nhưng về vật liệu thì luôn thể hiện vẻ đẹp sang trọng như kính cường lực, đá ốp mặt tiền granit hay gạch lát sàn…Các chất liệu hiện đại vừa làm tăng tuổi thọ của mẫu thiết kế nhà 5 tầng 60m2 tránh khỏi các tác động của thời tiết hay vững chắc hơn khi giáp các công trình khác.

+

 Trên đây là một số điểm nổi bật của ngoại thất mẫu thiết kế nhà 5 tầng 60m2 hiện đại của gia đình anh Tùng. Không gian sống đẳng cấp không thể thiếu cách bố trí mặt bằng công năng sử dụng khoa học, hợp lý. Vì thế hãy cùng chúng tôi tìm hiểu cách bố trí mặt bằng ngôi nhà này nhé! 

+

Tìm hiểu thêm: Biệt thự 2 tầng 4 phòng ngủ đẹp

+

BỐ CỤC MẶT BẰNG CÔNG NĂNG SỬ DỤNG MẪU THIẾT KẾ NHÀ 5 TẦNG 60M2 HIỆN ĐẠI

+

mặt bằng tầng 1 thiết kế nhà 5 tầng 60m2

+

 Mặt bằng tầng 1: Mẫu thiết kế nhà 5 tầng 60m2 hiện đại

+

Không gian sử dụng của toàn bộ tầng 1 được tận dụng làm không gian sử dụng chung cho toàn bộ gia đình bao gồm phòng khách, phòng bếp ăn, và sảnh thang, wc. Bên ngoài là không gian sân trước để cac phương tiện đi lại như xe máy, xe đạp.Đây là một trong những cách bố trí không gian sử dụng thường thấy trong các mẫu thiết kế nhà 5 tầng 60m2 phong cách hiện đại. Mặc dù 2 ngôi nhà riêng biệt nhưng không gian sử dụng khá tương đồng nhau. 

+

Tìm hiểu: biệt thự 2 tầng 3 phòng ngủ 1 phòng khách hiện đại

+

mặt bằng tầng 2 thiết kế nhà 5 tầng 60m2

+

 Bản vẽ mặt bằng tầng 2 mẫu thiết kế nhà 5 tầng 60m2

+

Mặt bằng công năng sử dụng tầng 2 của mẫu thiết kế nhà 5 tầng 60m2 có cách bố trí công năng sử dụng tương tự nhau. Mỗi tầng đặt được 1 phòng ngủ diện tích khá rộng rãi và 1 phòng WC cho việc sử dụng. Các phòng ngủ ở đều có ban công nhỏ đi ra bên ngoài nên vô cùng thoáng đãng, tự nhiên, phù hợp với thói quen sử dụng và nhu cầu sống của gia đình. Không gian các phòng sử dụng trong nhà ống đều cần đề cao tính thoải mái, thoáng đãng, chính vì thế mà bố cục phòng như vậy là khá hợp lý cho việc sử dụng trong ngôi nhà. 

+

Tham khảo: Mẫu thiết kế nhà 5 tầng 30m2 đẹp

+

mặt bằng tầng 3 thiết kế nhà 5 tầng 60m2

+

  Mặt bằng tầng 3: Mẫu thiết kế nhà 5 tầng 60m2 hiện đại

+

Tầng 3 của mẫu thiết kế nhà phố 5 tầng diện tích 60m2 bao gồm 1 phòng ngủ. Phòng ngủ ở tầng 3 được dành cho diện tích sử dụng rộng hơn. Chính vì thề mà không gian sử dụng trong phòng ngủ được dành diện tích rộng hơn. Phòng ngủ tầng 3 cũng có cửa sổ rông hơn, không gian nội thất bên trong cũng sẽ được bố trí khác so với phòng ngủ tầng 2. 

+

mặt bằng tầng 4 thiết kế nhà 5 tầng 60m2

+

 Mặt bằng tầng 4: Mẫu thiết kế nhà 5 tầng 60m2 hiện đại

+

 Lên tới tầng 4 không gian được thiết kế tương tự như tầng 2 và 3. Mỗi tầng gồm có 1 phòng ngủ rộng rãi có ban công, cửa sổ ra bên ngoài vô cùng thoáng mát. Tổng thể quy hoạch nội thất ngôi nhà hoàn toàn phù hợp với sinh hoạt và số lượng thành viên trong gia đình. Kiến trúc hiện đại yêu cầu công năng sử dụng gọn gàng, tiết kiệm diện tích, đáp ứng được yêu cầu của các chủ đầu tư khi sở hữu nhà phố diện tích khiêm tốn.

+

mặt bằng nội thất mẫu thiết kế nhà 5 tầng 60m2

+

 Mặt bằng tầng 5: Mẫu thiết kế nhà 5 tầng 60m2

+

Toàn bộ không gian của tầng 5 được dành cho phòng thờ. Diện tích sử dụng của phòng thờ tương đối rộng rãi. Vị trí đặt phòng thờ cũng trang trọng ở phía cao nhất trong ngôi nhà. Phù hợp với mong muốn và nhu cầu sử dụng của chủ đầu tư.

+

Như vậy, mẫu thiết kế nhà 5 tầng 60m2 hiện đại được hoàn thiện, mọi thắc mắc liên quan đến hồ sơ thiết kế, kĩ thuật thi công công trình này bạn có thể liên hệ trực tiếp với kiến trúc sư của chúng tôi để được tư vấn, hướng dẫn và giải đáp mọi thắc mắc! Các câu hỏi cần giải đáp liên quan tới chi phí xây nhà 5 tầng 60m2 đều được chúng tôi tư vấn tỷ mỉ chi tiết. 

+ + +
+ + + + + +
+
+ + + + +
+ + + + +
+

Trả lời

Email của bạn sẽ không được hiển thị công khai.

+ +

+

+ +

+ +
+
+ +
+ +
+ + +
+ + + +
+ + + + + + + + + +
+
+
+
+ + Facebook Messenger +
+
+
+ Chat với chúng tôi qua Zalo +
+ +
+
+ Gọi ngay +
+ + + + + +
+ + +
+
+ +
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/cache/wp-rocket/localhost/2022/02/13/thiet-ke-nha-5-tang-60m2-hien-dai-toi-uu-cong-nang-o-ha-noi-np520070/index.html_gzip b/wp-content/cache/wp-rocket/localhost/2022/02/13/thiet-ke-nha-5-tang-60m2-hien-dai-toi-uu-cong-nang-o-ha-noi-np520070/index.html_gzip new file mode 100644 index 0000000000000000000000000000000000000000..b1f3ed913aed0f756323ec40162360e61a71ffe5 GIT binary patch literal 21286 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 + + + + + + + + + +Thực tế mẫu nhà cấp 4 đẹp ở Hải Phòng diện tích 150m2 đã thi công và hoàn thiện TC510098 – Nội thất – kiến trúc An Việt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+ +
+
+ + + + +
+
+
+
+ + +

Thực tế mẫu nhà cấp 4 đẹp ở Hải Phòng diện tích 150m2 đã thi công và hoàn thiện TC510098

+
+ + +
+
+ + +
+
+
+ + +

Hải Phòng là một trong những địa phương mà công ty kiến trúc Angcovat có nhiều cơ hội thiết kế nhất. Khi nhắc tới mẫu nhà cấp 4 đẹp ở Hải Phòng không thể không nhắc tới mẫu thiết kế nhà 1 tầng 10x15m của gia đình chị Hà do kiến trúc sư Angcovat thiết kế năm 2015.

+

Ngay sau khi nhận được hồ sơ bản vẽ thiết kế nhà, chủ đầu tư đã bắt tay vào tiến hành thi công nhà ở dân dụng và hoàn thiện công trình trong năm 2015. Trong suốt quá trình thi công xây dựng, chủ nhà và kiến trúc sư, kỹ sư chúng tôi vẫn thường xuyên trao đổi, tư vấn các vấn đề chuyên môn và cập nhật tin tức, các hình ảnh thực tế thi công của ngôi nhà. Có thể nói không chỉ riêng chị Hà mà rất nhiều khách hàng luôn băn khoăn rằng thợ thi công không thể xây dựng chuẩn theo bản vẽ, hiểu được tâm lý đó, chúng tôi thường xuyên chủ động gọi điện trực tiếp cho chủ nhà để giải đáp các vướng mắc nếu có trong quá trình xây dựng. Chúng tôi luôn luôn đồng hành cùng với gia chủ để tạo ra những ngôi nhà đẹp, những công trình bến vững theo thời gian. Có thể vì thế mà kiến trúc Angcovat ngày càng lớn mạnh và phát triển mở rộng như hiện nay.

+

Còn nhớ chị Hà đến công ty chúng tôi trong một buổi sáng sớm cuối tháng 6 để gặp gỡ và trao đổi với chúng tôi về nhu cầu thiết kế nhà cấp 4 đẹp ở Hải Phòng. Sau khoảng gần 2 tiếng đồng hồ, anh em kiến trúc sư đã lên phương án thiết kế mặt bằng phù hợp với nhu cầu và mục đích sử dụng của gia đình chị. Chị Hà rất ưng ý và mong muốn hồ sơ thiết kế sớm hoàn thành để có thể triển khai thi công vào đầu tháng 8 âm lịch năm đó. Gần đây nhất, chúng tôi có gọi điện hỏi thăm chị Hà cũng như mong muốn xin một số hình ảnh thực tế ngôi nhà 1 tầng mái thái sau khi thi công xây dựng để làm tư liệu cung cấp tới khách hàng. Liệu rằng hình ảnh ngôi nhà sau khi hoàn thiện có đúng như bản vẽ kiến trúc thiết kế nhà hay không, mời quý vị cùng chúng tôi chiêm ngưỡng và phân tích nhé!

+

THÔNG SỐ TỔNG QUAN CỦA MẪU NHÀ CẤP 4 ĐẸP Ở HẢI PHÒNG KÍCH THƯỚC 10X15M

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
    +
  • Mẫu biệt thự
  • +
+
+

BT11885

+
+
    +
  • Số tầng
  • +
+
+

01

+
+
    +
  • Chủ đầu tư
  • +
+
+

Chị Hà

+
+
    +
  • Địa chỉ
  • +
+
+

Hải Phòng

+
+
    +
  • Mặt tiền
  • +
+
+

10m

+
+
    +
  • Chiều sâu
  • +
+
+

15m

+
+
    +
  • Kích thước ô đất
  • +
+
+

500m2

+
+
    +
  • Diện tích mái
  • +
+
+

60m2

+
+
    +
  • Phương án móng
  • +
+
+

Ép cọc

+
+
    +
  • Kiến trúc sư thiết kế
  • +
+
+

Kiến trúc sư Angcovat

+
+
    +
  • Thời gian khởi công
  • +
+
+

8/2015

+
+
    +
  • Thời gian hoàn thành
  • +
+
+

12/2015

+
+
    +
  • Chi phí thi công và hoàn thiện ngoại thất
  • +
+
+

975 triệu đồng

+
+
    +
  • Thông số công năng, diện tích
  • +
+
+

Tổng diện tích: 150m2/sàn. 

+

1 Phòng khách + phòng thờ , 3 Phòng ngủ, Phòng bếp + Phòng ăn

+
+

HÌNH ẢNH PHỐI CẢNH MẪU NHÀ CẤP 4 ĐẸP Ở HẢI PHÒNG DO KIẾN TRÚC SƯ ANGCOVAT THIẾT KẾ

+

 mẫu nhà cấp 4 đẹp ở hải phòng diện tích 150m2 mặt tiền 10m

+

Hình ảnh phối cảnh mẫu nhà cấp 4 đẹp ở Hải Phòng mặt tiền 10m

+

Mẫu nhà cấp 4 đẹp ở Hải Phòng được kiến trúc sư chúng tôi định hướng theo phong cách kiến trúc đồng quê kết hợp với hiện đại. Nét hiện đại thể hiện ở các đường nét hình khối tinh gọn, phẳng, sắp xếp phi đối xứng, đặc biệt chú trọng tới không gian mặt bằng công năng và tạo lối kiến trúc mở, gần gũi với thiên nhiên. Trong khi đó nét đồng quê truyền thống thể hiện ở lớp mái ngói màu đỏ hòa quyện với không gian xanh mướt của cây cối, làng xóm xung quanh. Nếu như đặc trưng của các công trình biệt thự cổ điển, tân cổ điển là các hình khối uyển chuyển thể hiện qua thức cột tròn, các mảng miếng phào chỉ họa tiết tỉ mỉ thì các công trình đơn giản hiện đại lại sở hữu hệ cột trụ hai bên có kết cấu vuông vắn thể hiện sự khỏe khoắn, sang trọng. Phần tường chữ A mặt tiền được kẻ chỉ đơn giản nhưng cũng tạo điểm nhấn thu hút sự chú ý của người nhìn. Phần đầu hồi được đổ bê tông tạo khối như những cánh quạt đan vào nhau nổi bật ở mặt tiền công trình.

+

Xem thêm: Các mẫu biệt thự nhà vườn 1 tầng 

+

Toàn bộ phần tường của mẫu nhà cấp 4 đẹp ở Hải Phòng được sơn bằng màu vàng be và một số các phào nổi được sơn màu trắng nổi bật. Màu vàng thường được sử dụng trong các công trình kiến trúc Châu Âu, thuộc vào gam màu nóng, tuy nhiên trong công trình nhà ở hiện đại kết hợp truyền thống này chúng tôi muốn nhấn mạnh vào nghệ thuật sử dụng màu sắc. Các gam màu thuộc tone màu nóng sẽ mang tới không gian sống ấm cúng, rực rỡ và phần nào thể hiện sự tươi vui, giàu năng lượng. Nổi bật nhất phải kể tới gam màu đỏ của lớp mái thái. Màu đỏ tượng trưng cho sự may mắn, khởi đầu tốt lành, vì thế với mong muốn mang tới cho gia chủ cuộc sống an lành, thuận lợi chúng tôi đã lựa chọn mẫu mái thái màu đỏ tươi này. Riêng khối chân đế cao của mẫu nhà trệt 3 phòng ngủ 150m2 được ốp bằng loại gạch ốp chân tường giả đá thể hiện sự sang trọng, bề thế bền vững. Ngoài ra đá ốp còn có tác dụng bảo vệ cho lớp tường phía trong không bị tác động bởi các yếu tố thời tiết như mưa gió, ẩm mốc nên không bị ảnh hưởng tới thẩm mỹ và chất lượng công trình. Ngoài ra những ngày trời mưa sẽ dễ dàng lau rửa sạch sẽ mà không lo ngấm nước vào tường phía trong.

+

mẫu nhà cấp 4 đẹp ở Hải Phòng theo phong cách hiện đại kết hợp truyền thống

+

Phối cảnh tổng thể công trình mẫu nhà cấp 4 đẹp ở Hải Phòng 150m2 3 phòng ngủ

+

Việc quy hoạch mẫu nhà cấp 4 đẹp ở Hải Phòng kích thước 10x15m trên khuôn viên đất rộng 500m2 vuông vắn là điều tương đối thuận lợi cho quá trình triển khai của kiến trúc sư chúng tôi. Với đặc điểm cây cối và chất đất tương đối tốt thì phương án mọc được lựa chọn đó chính là ép cọc. Mẫu nhà 1 tầng mái ngói đỏ tươi phù hợp với điều kiện thời tiết và khung cảnh làng quê nơi đây. Biệt thự trệt 1 tầng được nằm gọn gàng trên lô đất, phần còn lại được thiết kế sân vườn, cảnh quan và đất trồng cây xanh xung quanh tốt cho việc điều hòa không khí cũng như mang lại không gian sống tuyệt vời cho gia chủ. Sân nhà được phủ toàn bộ bằng lớp gạch đỏ cùng tone màu với màu mái ngói, tạo nên sự đồng bộ, thống nhất trong tổng thể ngoại thất ngôi nhà.

+

HÌNH ẢNH MẪU NHÀ CẤP 4 ĐẸP Ở HẢI PHÒNG SAU KHI HOÀN THIỆN SO VỚI BẢN VẼ THIẾT KẾ

+

Quá trình biến một công trình nhà ở, biệt thự từ phương án thiết kế cho tới thực tế đòi hỏi công sức, tâm huyết của chủ đầu tư, thợ thi công và của những người kiến trúc sư. Phương án thiết kế mẫu nhà cấp 4 đẹp ở Hải Phòng ngoài tính thẩm mỹ cần phải mang tính thực tế, khả năng ứng dụng cao. Để đảm bảo cho quá trình triển khai thi công xây dựng diễn ra tốt đẹp suôn sẻ thì hồ sơ thiết kế phải đầy đủ, chính xác. Mỗi bộ hồ sơ thiết kế nhà của công ty kiến trúc Angcovat đều gồm 4 phần: kiến trúc, kết cấu, điện và nước. Các phần được trình bày tuần tự theo thứ tự, khoa học và dễ hiểu giúp cho chủ nhà và thợ thi công có thể dễ dàng triển khai bản vẽ một cách chính xác nhất. Sở dĩ vì thế mà công ty kiến trúc Angcovat chúng tôi có rất nhiều khách hàng lựa chọn dịch vụ thiết kế nhà ở từ xa. Có nghĩa là cả khách hàng và kiến trúc sư không gặp gỡ trực tiếp, mà toàn bộ quá trình trao đổi, tư vấn đều thông qua các phương tiện truyền thông như điện thoại, email, zalo,… Hồ sơ sau khi hoàn thành sẽ được chuyển về theo đúng địa chỉ mong muốn của khách hàng bằng phương tiện chuyển phát nhanh. Với tiêu chí lấy chất lượng làm trọng tâm, mong muốn mang tới cho gia chủ không gian sống đạp mắt, ấn tượng nên trong quá trình thiết kế luôn đảm bảo chất lượng về mặt thẩm mỹ lẫn kết cấu công trình. Sau khi bàn giao hồ sơ chúng tôi chưa hết trách nhiệm, mà luôn hỗ trợ giải đáp mọi thắc mắc của khách hàng, các khó khăn về mặt chuyên môn mà cả chủ nhà và thợ thi công không giải quyết được thì đều được đội ngũ kiến trúc sư, kỹ sư chúng tôi giải quyết, tư vấn phương án tốt nhất cho khách hàng. Chính sự tâm huyết và tinh thần sát sao trong từng giai đoạn đã giúp cho kiến trúc Angcovat càng ngày càng nhiều khách hàng tin tưởng và lựa chọn. Chị Hà cũng là một trong những khách hàng đó của công ty chúng tôi, chị Hà rất tin tưởng về năng lực chuyên môn cũng như tinh thần trách nhiệm của anh em kiến trúc sư Angcovat. Sau khi hoàn thiện công trình, chị Hà rất vui mừng chia sẻ một số hình ảnh mẫu nhà cấp 4 đẹp ở Hải Phòng, dưới đây là một số hình ảnh công trình.  

+

Có thể bạn quan tâm: Bộ sưu tập các mẫu nhà cấp 4 1 tầng đơn giản

+

ngôi nhà cấp 4 đẹp ở hải phòng kích thước 10x15m đã thi công hoàn thiện

+

Cận cảnh công trình nhà cấp 4 đẹp ở Hải Phòng với hệ mái thái màu xanh lam hiện đại

+

 Có thể dễ dàng so sánh được hình ảnh phối cảnh 3D thiết kế của kiến trúc sư được chủ đầu tư và đơn vị thi công tuân thủ khá chính xác từ tỷ lệ công trình, hình dáng đúng như tỷ lệ kiến trúc sư đã chia trong hồ sơ. Tuy nhiên không quá bất ngờ với sự khác biệt lớn nhất giữa bản vẽ phối cảnh và thực tế công trình sau khi hoàn thiện đó chính là màu mái thái. Mẫu nhà cấp 4 đẹp ở Hải Phòng theo như thiết kế là sở hữu hệ mái thái màu đỏ truyền thống, phù hợp với quang cảnh đồng quê xung quanh, thì thực tế gia chủ đã thay đổi bằng lớp mái thái màu xanh lam. Thực ra trước khi thay đổi phương án màu sắc mái, chị Hà có gọi điện thoại xin ý kiến của kiến trúc sư Angcovat, chị muốn sở hữu một công trình nhà ở mang hơi hướng hiện đại hoàn toàn, thay vì giống như các ngôi nhà cấp 4 mái đỏ vẫn thường thấy ở các vùng quê thì chị muốn đổi màu mái đỏ thành mái màu xanh. Hơn nữa màu sắc không chỉ mang lại giá trị thẩm mỹ cho công trình mà nó còn liên quan tới yếu tố phong thủy, được biết màu xanh lam rất hợp với mệnh và tuổi của chủ nhà. Nên khi chị Hà muốn đổi màu mái thái, chúng tôi đã phân tích các yếu tố trên và thấy rằng biệt thự trệt mái thái màu xanh lam cũng là một phương án lý tưởng phù hợp với gia đình chị Hà.   

+

Phương án triển khai hệ mái đó chính là đổ bê tông mái vát sau đó sử dụng hệ vì kèo rồi lợp ngói. Chính điều này sẽ tạo ra khoảng hở giữa ngói và sàn bê tông làm thoát nhiệt nhanh không gây nên tình trạng nứt vỡ ngói. Hơn nữa, trong trường hợp cần sửa chữa một vài chỗ cũng chỉ phải dỡ ngói cục bộ ở từng vị trí mà không cần lật cả hàng ngói lớn. Ngói được sử dụng cho công trình đó chính là ngói thái – đây là một loại ngói có nguồn gốc ở Thái Lan, đang được thình hành ở nước ta bởi những đặc tính ưu việt mà nó mang lại. Nhờ có độ dốc lớn nên dễ dàng thoát nước mưa nhanh không gây úng đọng nước như những công trình nhà mái bằng, vì thế mà không ảnh hưởng tới thẩm mỹ và chất lượng công trình. Mái thái lại rất đa dạng về màu sắc, kích thước sóng lớn sóng nhỏ nên gia chủ có thể dễ dàng lựa chọn được mẫu mái thái ưng ý, phù hợp với sở thích, cá tính và phong thủy. Đối với những bề mặt cần lợp ngói có diện tích nhỏ như mái hiên, mái ngói trên đầu cửa sổ, mái cổng thì thực hiện bằng cách dán ngói lên hệ khung xương đỡ phía dưới. Để đảm bảo kết cấu và bố cục thẩm mỹ của toàn bộ căn nhà thì phần mái đua ra khỏi tường từ 60 đến 150cm, như đối với mẫu nhà cấp 4 đẹp ở Hải Phòng thì phần mái hiên đua ra phía ngoài là 80cm.

+

Tìm hiểu thêm: Mẫu biệt thự hiện đại

+

mặt tiền ngôi nhà cấp 4 đẹp ở hải phòng đã thi công và đi vào sử dụng

+

Mặt tiền ngôi nhà cấp 4 đẹp ở Hải Phòng kích thước 10x15m của gia đình chị Hà

+

Thoạt nhìn đã nhận ra điểm khác biệt giữa hình ảnh phối cảnh mặt tiền mẫu nhà cấp 4 đẹp ở Hải Phòng và thực tế đó chính là trang trí phần đầu hồi chữ A. Thay vì tạo hình khối các thanh nan đổ bê tông nổi sơn màu vàng trên nền màu nâu thì thợ thi công đã thực hiện toàn bộ 3 thanh nan chìm đan vào nhau. Sau khi nghe kiến trúc sư nhận xét về một số điểm khác so với bản thiết kế, chị Hà có chia sẻ rằng phần trang trí phần tường chữ A ở mặt tiền được kẻ chỉ chìm, không tạo hình khối nổi bởi chị muốn tạo ra một tổng thể công trình đơn giản nhưng vẫn giữ được vẻ lịch lãm, trang trọng.

+

đầu hồi ngôi nhà cấp 4 đẹp ở hải phòng đã thi công

+

Sử dụng vật liệu hiện đại cho công trình nhà cấp 4 đẹp ở Hải Phòng

+

Toàn bộ hệ thống cửa chính, cửa phụ và cửa sổ của ngôi nhà cấp 4 đẹp ở Hải Phòng 150m2 đều được sử dụng vật liệu bằng kính khung gỗ. Khi sử dụng vật liệu kính sẽ thu hút ánh sáng vào trong không gian các phòng, giúp cho ngôi nhà luôn sáng sủa, thoáng đãng. Ngoài ra khi sử dụng vật liệu kính người nhìn có cảm giác công trình rộng lớn hơn so với thực tế, đặc biệt rất dễ vệ sinh lau chùi cho lớp kính sáng bóng và công trình luôn mới mẻ, khỏe khoắn. Gia chủ có thể ngồi trong nhà và ngắm cảnh quan sắt phía bên ngoài ngôi nhà. Để điều chỉnh ánh sáng tốt hơn, chị Hà đã sử dụng lớp rèm vải vừa là vật trang trí thêm phần sang trọng cho không gian nội thất.

+

Phía dưới chân tường chị Hà lựa chọn lớp đá ốp giống như vật liệu chỉ định trong hồ sơ thiết kế nhà. Đá ốp kẻ rối màu ghi xám nổi bật so với tone màu vàng ở lớp tường phía trên. Đá ốp chân tường nhà và hàng rào thông thường được lựa chọn loại sẫm màu với mục đích màu tối là gam màu tương đối sạch, hơn nữa sẽ làm tăng mức độ bề thế của toàn bộ công trình. Sử dụng lớp đá ốp phía chân tường sẽ khiến cho ngoại thất công trình trở nên sang trọng, hiện đại đồng thời cũng rất dễ lau chùi vệ sinh nhất là những ngày thời tiết mưa gió hay những ngày nồm ẩm. Sân nhà có diện tích tương đối rộng, được lát bằng lớp gạch chống trơn màu đỏ. Đa số các sản phẩm gạch lát nền sử dụng cho sân vườn đều được thiết kế sần sùi hay có đường viền giúp chống trơn cực kỳ hiệu quả, giúp bảo vệ các thành viên trong gia đình nhất là trẻ nhỏ và người lớn tuổi. Trẻ nhỏ cực kỳ yên tâm vui đùa bên những bồn hoa tươi đẹp mà không lo bị ngã do trơn trượt. Gạch có thiết kế tạo vân rất hiện đại và tươi mới, sinh động và gần gũi thiên nhiên.

+

Tham khảo: Hàng nghìn mẫu thiết kế nhà cấp 4 đẹp vạn người mê

+

 sân vườn của ngôi nhà cấp 4 đẹp ở hải phòng

+

Một góc sân vườn tiểu cảnh của ngôi nhà cấp 4 đẹp ở Hải Phòng

+

Trong mỗi bộ hồ sơ thiết kế nhà, riêng phần thiết kế cổng hàng rào, sân vườn đều được chúng tôi thiết kế miễn phí. Đó là phần cảnh quan xung quanh tạo điểm nhấn cho công trình, phải được thiết kế đồng bộ theo đúng phong cách kiến trúc mà chủ đầu tư và gia chủ đã thống nhất. Phần sân rộng là diện tích dành cho trẻ nhỏ vui chơi, sân để xe và là nơi để đặt các chậu cây cảnh, tạo nên vẻ đẹp thẩm mỹ mẫu nhà cấp 4 đẹp ở Hải Phòng cũng như thỏa mãn thú vui chơi cây cảnh của gia chủ. Gia đình chị Hà trồng một số loại hoa hồng ở trước cửa và xung quanh nhà, trong sân rộng thì đặt thêm một số chậu cây cảnh bonsai phù hợp phong thủy cũng như đam mê cây cảnh của chủ nhà. Không gian thực sự gần gũi với đồng quê, cây cối và thiên nhiên nơi đây. Đây là một số hình ảnh ngoại thất mẫu nhà cấp 4 đẹp ở Hải Phòng, riêng phần nội thất gia đình chị Hà tự lên ý tưởng và mua đồ về trang trí phù hợp với nhu cầu sinh hoạt và điều kiện kinh tế của chủ đầu tư. Một số hình ảnh bên trong căn nhà được chị Hà chia sẻ cho chúng tôi như sau:

+

phòng khách ngôi nhà cấp 4 đẹp ở hải phòng phong cách hiện đại

+

Một góc phòng khách của mẫu nhà cấp 4 đẹp ở Hải Phòng

+

Theo thiết kế mặt bằng công năng của mẫu nhà cấp 4 đẹp ở Hải Phòng diện tích 150m2 gồm có 1 phòng khách kết hợp phòng thờ, 1 phòng bếp + phòng ăn, 3 phòng ngủ và 2WC. Với bố trí không gian chức năng các phòng hợp lý phù hợp với số lượng 4 thành viên gồm bố mẹ và 2 con.

+

Cách trang trí phòng khách ngôi nhà cấp 4 đẹp ở hải phòng

+

Bố trí phòng khách kết hợp phòng thờ trong mẫu nhà cấp 4 đẹp ở Hải Phòng

+

hình ảnh Phòng thờ kết hợp phòng khách ngôi nhà cấp 4 đẹp ở hải phòng

+

Thiết kế không gian phòng thờ trong mẫu nhà cấp 4 đẹp ở Hải Phòng

+

Thiết kế nhà 1 tầng 3 phòng ngủ được bố trí từ bậc tam cấp, bước qua sảnh chính là đến không gian phòng khách kết hợp phòng thờ. Đây là lối sắp xếp không gian nội thất ở hầu hết các mẫu nhà cấp 4 của người dân nước ta. Phòng khách là nơi trang trọng, thiết kế lịch sự để tiếp đón các vị khách quý. Vì vậy khi đặt phòng thờ kết hợp phòng khách cũng là điều hết sức hợp lý. Không gian vừa sang trọng và có phần uy nghiêm. Kiến trúc sư Angcovat đã nghiên cứu hướng ban thờ và hướng cửa chính trùng nhau, hợp với tuổi và mệnh của gia chủ với mong muốn gia đình chủ đầu tư gặp nhiều điều tốt lành trong cuộc sống. Như vậy, với mẫu nhà cấp 4 đẹp ở Hải Phòng chi phí vừa phải, công năng sử dụng hợp lý và tiện nghi chắc chắn sẽ làm hài lòng nhiều quý khách hàng. Hãy cùng chúng tôi lắng nghe một số phản hồi của chính chị Hà sau khi công trình đã được hoàn thiện và đi vào sử dụng 2 năm vừa qua.

+

PHẢN HỒI CỦA CHỦ ĐẦU TƯ SAU KHI NGÔI NHÀ CẤP 4 ĐẸP Ở HẢI PHÒNG 150M2 HOÀN THIỆN VÀ ĐI VÀO SỬ DỤNG

+

Còn nhớ ngay khi nhận được yêu cầu thiết kế nhà của gia đình chị Hà, anh em kiến trúc sư chúng tôi có dịp về tận nơi để khảo sát hiện trạng khu đất và lấy yêu cầu đề bài. Về tận nơi chúng tôi tiến hành đo đạc và lên ý tưởng thiết kế mặt bằng và tư vấn phương án làm móng cho gia chủ. Đó là một bài toán không phải khó nhưng cũng không hề đơn giản nếu như kiến trúc sư tư vấn là người còn ít kinh nghiệm trong nghề. Móng hiện trạng nhà chị Hà nằm trên taluy dốc nên phải làm móng giật cấp. Thực tế trong quá trình thi công xây dựng, nếu gặp bất cứ vấn đề kỹ thuật nào mà cả chủ nhà và thợ thi công không giải quyết được đều có thể liên hệ với đội ngũ kỹ sư, kiến trúc sư chúng tôi để được tư vấn, hỗ trợ. Ban đầu khi gặp tình huống đó cả gia chủ và đội thợ hết sức lo lắng chưa tìm ra phương án xử lý, chị Hà ngay lập tức để kết nối với đơn vị tư vấn thiết kế. Sau khi anh em kỹ sư Angcovat thảo luận bàn bạc đưa ra phương án xử lý móng vừa chắc chắn vừa tiết kiệm đó là làm móng giật cấp. Móng giật cấp có nghĩa là móng sẽ được chia ra 2 phần ở 2 cos khác nhau, phía sau thấp và phía trước cao, có giằng ngang ở từng cos. Dưới sự chỉ đạo của đội trưởng cũng như sự tư vấn chi tiết của an hem kết cấu sau hơn một tháng thi công đã xử lý xong được phần móng phức tạp lên được mặt bằng cos 0.

+

 tư vấn xử lý móng cho công trình nhà cấp 4 đẹp ở hải phòng

+

Tư vấn phương án xử lý móng trong thiết kế mẫu nhà cấp 4 đẹp ở Hải Phòng

+

Ngay sau khi xử lý được những vướng mắc về mặt kỹ thuật, chị Hà rất vui mừng và gọi điện cảm ơn anh em chúng tôi. Chị tâm sự với chúng tôi rằng: “Chị gọi điện cảm ơn đội ngũ kiến trúc sư, kỹ sư Angcovat luôn nhiệt tình giúp đỡ khách hàng, xử lý các vấn đề chuyên môn giúp gia đình chị, mặc dù hồ sơ thiết kế đã hoàn thành nhưng bất cứ khi nào gặp phải vướng mắc trong quá trình chuyên môn thì anh em các chú đều giúp đỡ chị. Thực ra một hợp đồng thiết kế chưa tới 20 triệu mà được tư vấn xử lý nhiều tình huống kỹ thuật nên chị đánh giá trước hết về mặt chuyên môn là rất tốt, sau nữa là chị rất hài lòng về cách chăm sóc khách hàng. Nhất định chị sẽ giới thiệu bà con, anh em họ hàng và bạn bè hàng xóm về dịch vụ thiết kế nhà ở, biệt thự của công ty kiến trúc Angcovat. Chúc công ty làm ăn ngày càng phát đạt, mở rộng quy mô và thiết kế nhiều công trình kiến trúc đẹp!”.

+

phản hồi tích cực của chủ nhà về ngôi nhà cấp 4 đẹp ở hải phòng sau khi thi công hoàn thiện

+

Ghi nhận những phản hồi của chị Hà về thiết kế mẫu nhà cấp 4 đẹp ở Hải Phòng

+

Thực tế công trình nhà cấp 4 đẹp ở Hải Phòng diện tích 150m2 đã được hoàn thiện và đi vào sử dụng được gần 3 năm, nhưng tới nay chất lượng công trình cũng như tính thẩm mỹ của phần ngoại thất vẫn được đảm bảo. Chia sẻ với chúng tôi chị Hà cho biết việc thi công ngôi nhà cũng rất suôn sẻ từ kết cấu cho tới kiến trúc công trình. Toàn bộ hình dáng, tỷ lệ kiến trúc cho tới vật liệu cơ bản đều được chủ nhà tuân thủ theo đúng chỉ định của kiến trúc sư trong bộ hồ sơ thiết kế nhà. Sau khi nhận được sản phẩm thiết kế, chị Hà đã có những phản hồi tích cực và nhanh chóng bắt tay vào thuê đội thợ thi công, tiến hành triển khai xây dựng. Những lời khen, lời cảm ơn của gia đình chị Hà dành cho anh em kiến trúc sư chúng tôi thực sự là nguồn động viên tình thần vô cùng to lớn, giúp chúng tôi không ngừng nỗ lực, tư duy sáng tạo và yêu nghề hơn!

+

Vẫn biết rằng để tạo ra một công trình kiến trúc đẹp, tuân thủ đúng từng chi tiết bản vẽ, ý tưởng của kiến trúc sư thì phụ thuộc rất nhiều vào công sức cũng như tâm huyết của cả chủ đầu tư và thợ thi công. Thông thường gia chủ thường thuê những đội thợ thi công ở địa phương mình triển khai một phần vì thuận tiện trong di chuyển, sinh hoạt cũng như chi phí xây dựng. Tuy nhiên để đảm bảo công trình được đảm bảo cả yếu tố thẩm mỹ, chất lượng thì đòi hỏi phải là đội ngũ thợ tay nghề cao, làm việc hiệu quả và trung thực trong công việc.

+ + +
+ + + + + +
+
+ + + + +
+ + + + +
+

Trả lời

Email của bạn sẽ không được hiển thị công khai.

+ +

+

+ +

+ +
+
+ +
+ +
+ + +
+ + + +
+ + + + + +
+
+
+ + + + + +
+
+
+ + +
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/cache/wp-rocket/localhost/2022/02/13/thuc-te-mau-nha-cap-4-dep-o-hai-phong-dien-tich-150m2-da-thi-cong-va-hoan-thien-tc510098/index-mobile.html_gzip b/wp-content/cache/wp-rocket/localhost/2022/02/13/thuc-te-mau-nha-cap-4-dep-o-hai-phong-dien-tich-150m2-da-thi-cong-va-hoan-thien-tc510098/index-mobile.html_gzip new file mode 100644 index 0000000000000000000000000000000000000000..bb247648fbca8f5c102bc6da3794c6346ecbe48e GIT binary patch literal 22719 zcmV(H+XEpZ(m3*Qb#o0UDUA{^h2pdiC0STli*cPTOumM&eNxQQ*Cu^q*3 zvRQe1=QV4!BI@|Y_kvv!x&CHl8ihm8cPnBXxx>xMI7z1K_4;Ts9o52UR6iI7^=7kJ z3$W@c(@x_NvAOCtPo<8|s;^x!GA9>==_~;*lkr;SSpL{0}$Z8e)4;`Y-gf8)VxfR&^V zcRfG_Dn&<+9dRQN?_lNRdY#eL`Wz>Rz8jBSH<{b({i)@ILE;8U-LajqTc3D9zItnQ zFtCTM{$QosS#dkgV70mG*zIG+O%bVCE*P2G|p6Bkb`*t*Pmva>>_-YzP&;wPqvhNL& z@#X+(Ij%)FRRMq#&-SetI_7RRs{-2hCbNlpfCy!jSsny2!X3JaGhSxeEZ6JKAgJAs z2d?k!MYX_97@3o54FRvXHVVU$@7hx@t~udkv6^vhA6Yh680eX}QD7&);>qC@XkbsL zzUSD97Y6kxj$Z^;g;zM*o0V6H*^)7FRN@6D%UE-mMSLx?|7aF&%;k%r>kjIb^CLC| zJU$8pOralm7lay+cLID6UjUA$LP$IhK~SXPT)MOxtyaC!syEy9WIS`M#I+{&%nHV~ z<=9iJV-4J?6$^Wb(js11s^Iu|-%}1KR@lC=W)~o^6doJHQ86$YFHKNv;@s z5h0U|-H8iB=i5mfPTV>u2^WU)eq49PvtSqI&MZh~)7sE&In7412lMe+f{UU1yN95i z25#SuYIb+k?sdB>&lqYFhJNBr<63L2+37e<=NZG>15F!7Ac4Z^44|%oNO$b+R|Pfp zfx1y`*ch~&zO$yFE?p<}Bxh;j9>B~7rLwi;O-3~U6Hh?NA6DtsorL#2@nGrFz>BB8 zeYg(t9*}m$3*H2kgB>IrOPBg#1c27T%qYG&u;Q^j2=~k0j$LmwPS!=!otQ63x0F1e zfTr?-bucF&D~t3VgozBhtWR-;yE0WFbH1iU^dLuhIb&}c#c`tyfN*Xu+x zv}~Ao-e7YXXw`=S+O>SIAKB5N#k8@2n#)YxWkucPt)=xS43h_z1-0w}=xd9H5eC%{ zqxH*;#){LoH_BgIRy69bH>%B6r`lZY%_}vqqg^+$nhk8O*SDJ|7EBv%tW=x5lghWK z;jX>9a$-T%@EWw;?&`&vSJ-;6hM_Zy*IUzrhhHa?MqIV_-TtnZph06vLu2Y4xV{yk zB3W-;t6s%dksF8p3{}f|bFDR)de+pz^4cnI78Ol^%K`_Rg`jS2K1|6u*H>$-&&kc)W7lLOLEos@?^9E4T1=ZvnqLvEfGrH^hGZ))I{g!CBYgn)246&oM)Ky@Q zfjg=KV+|Us9r)W@YrE}hI@IYbn)<+E(JUUHwfT0(ZMo2VXQkB~_C>dGrFz-!HwQ!4 z05!JXM{?{3XN5DgZO2}%ULM$khU*w@$Fu%m<_@e7tlTq`X=o2^w^_a1Td{j9O{0A~ z2`8QdWOD7vnVTOBR@Q7BjgH-2Gnx;Op-`5e8TWR(vDO3Hw42Vr85)gGyg{HC_DtN< zYP45@EUnd*&Jf5>jYjTh2EI);YagUn>!2985IH~PWm>gftE*0&B?zP@k}RvmEHZ8$HOLtn-sXLEjxFdNI5&6pE1gdMSGF@G_VZC~Up=?LJIF zkkJW<`Pg+(^gd8V0V>jmHL54Ea=;^t*1_`}KdgC)JBh9PGcfsv9`HZm!?%aZrdc2Q zE?5eQ9VNvIvdw%I)!lq??n)^D=uNSFJhef~^xb41#9E=A@%CXYc1ZZa97ElL^m-tz zpT>scd(-s@XmhnWJ*a9w*EW<|!y?wy2IIyHV3@Ch9J;nq`cT?NP=uF*9z;dbCc;vP9Jk1_SP- zJxfB(Kq~eQIbtJ!%Z+q8oejk}WIk;evr=^&L2Mwatb@wlAiGMw;Vz^-Z^C=gYQwK) z2TBqP4_qfCgCSthNjRlum?G5l`(UjN+=F#+ui&3%;idL5ns~~_28RwTiev4&uTwXM zz%6Jm!#{Zs)-;&Sm7#BWz*BK$BYT+|)l3I^5l7Ctm_`28Gk5@iNS%Px6||ZgCNJ%6 zwrkC9t$i(nKo^%T6wGDM9eM{DFfqh&O0HJiN#6xt1;saoMuBXVYt@T}zaI{VtrFPu z{29PYl3@w7B$~O;u!D2@_Y9!Ld!rQCW%V?J3a=~7O!~ahqHbCIbJ?6m9IT_j9Z#cU zgL#PBOFV-%-vsmKO8bV?=~r6YD~$&H?$B?%UfF)d4jhmOFWz+`Z<-i|q1e|hgNdLd z&t|-DPx%Q5ROsniVMfa!>$2_p94E}ALIkrFbhHn~B8J(ImkYJX_pQTlmdyI#%K&Up zWvQ$NYJr&AbCom$rzHV1ZoS*9wc1ydENm3SJ_d26c!#cUJS+hsykTTd+y_OyfYPwR zvbC|HwW3rGUTflUL$klY@h*oo89k7wH*(Tl!jVdhWN!|8?Xrk$Bq_j1OI=GsT~`#& zEQ&$7OhXTCf>a?TksZheYn@oYP;OY0@cpvq#Ygixx<1Cyc%WbmJq&!V_X*L!jpM5; z-7D8hE7$Pv1Bv%aD^*Bz$+`|`K*|dKGR4STTDRK0)DW<+06!>_OB<_`#KF{`L2EHS zVun@%0s2^%nAfJk=o&5`MefwKlN_B*t(gV05NZryVIFg!y?$I+>wX*tb#s~E_+TeQ%CeM=atHX}E1!SV?sZQ14zVA9+HBR&@0+FBk-$A-y- zQM2b7-p*mQ9FM`Y#9OsyQ^4w_=_U;8sa9~1FJ27E966DFxLCbeYt-rLC74Z{SQ^yI zmDX$Ue_98wkwoyPfxnt<`1Py^1x=s0?n1f;nBzZwS6M-`)v+nrUFzYjT7UE)1mDa{ zz~lW9>FI|%mtsp z_fd}1TJP5Nn9LagX8UG^mP+q~apZ@y0aTA%vXkul_CekE`f(kT0lM+n+pD*0y;?K7 z$LRkSbcz~Njc)DPk-!uHu_*@N^x^VeZR94e`Yx^Xy?nT1k8Xotxw?#{mal!Q@m`hf zAguyMoDx^oxyr`h^0f{6TSMYN;mjhE&*}GFBp`Nk2i{_-^*$Jfky~B2hZIJTPIxX- zzr2Ci)L?FdL%%)t{J~Xf4q&>;jyG{Zd0idO0*X>xz4m}gNA3jlwo&?FRWz<`Y)706B$0tE)vjoa3nH@2;I>!962 zgGa;MX4taiYF zA9MT#;|$6|6lfPdyzGagkPK`zn~Sd=unoD|276EzwjX2`_G$y4tLE88e}Ky)>Eas{ zNZ*5LX}oOFOOl;a5H6S{KlJ@7NV}P{ zTS~hXsAq)ZsN|eM&zE)W$icO(X!1a)HBbZT#UN_K#(<+1 zJ$={@2Zs;zXki6|9hItxfkmy@jl7{&W?$mjX*3=hbP*@C0bDT&K`pr|>jGTMJ=c$| zmO_}Qx6MQMJ*f-!R`$9U|#d8 z05zXxm*BNZ4#?QZjL(*I?j*Riz8!$KC7@h-*(##}nCMg^2U5nX1jnoLlr<}9qpq_~ z{rAK+sU5L>_pbQ8dQAlaplXP8NY`j6+hHS<8J_D8M2@k|w1;_F9S>{1-FJN}aQACq z@y#q;P(h03jJC>ccfXRB9*4>CrEi8wRywx9L_D_mT_};2#{?U&hL5juhYM9QEY6n37+pT!v^sNLV%j0#X~?$z(2i-w%LS-%*y1Eg;Ru=mpABv zl%g^LPIRiwrMqZH=?XBWaq`6P>HkV&zNq#Eln)zH-qOAw3pl+IJmX=BJ zEaM3+J-FB1I2B8H0kWp^&m{0)YRd~FGB?3{g`D{N$|NU zzD1ehSlR*)_dR3v-jMHU=%b!Nt@B2KrR!*js67T4T?OGYnc{r12JXRTDSOY%L!l16n77;>x_gE@nQQ!t1=cC-sEpuEyS5NiQHQCFew z1V)I`VlZK|rqPa`O_()Nh^E!3Di~_ACR%R@AIk`?gnocBzsUNU*uF35l73C2a57C| z3*`s!9X(4YtpSH%ft996fE!#`71L&&dq4~z(LKfwCPWm16(tMnE#9~--hBG_N87>@ zJ7Y{SPsA?fkOzA9xig*}9{ns3!H818r^x--An?5JZD|PAXMReYPN= z3!~x1B2Q9Jhmk{FcLxzKmXa6G335inp@aKQXlYtZe5-*IN$-tOU7KE@lPtee|-br|YENgPnaZ!RdFlAruK$Kc<5zfb#CC*ZIyR zs#>vYptt-aTnAMiecizEhb<`H)TaOT6Q zjyTDdg(c@PB8Vbrc@YFA=KiUrr;I@0``>0|#5YUY6ZJ=#78CFgQF!KU3ktE7+6S@# zoB2hXLSO*RFahX+)N)|YB98%Oy%ELYE5^9v!kTy!BXGD8HOCEzF1A%E@C7|J$A@;v zikobe`Kradc*vst<-5?1-{c9SW|U6!A}ZD`2f``?QOWc(rUm>5T{Gv`}_N~{WfJ)w7|2&;>%D7w`;x}9&9c*;0AxX z>i6=M_N&kq7KE$Z;NK&9$#G_i+kSE?(xf7Z9gEW~ukf-8EvMACG%x35ik%V4#dp7M zI7*24Z|GR_>?DujH)oK)icvmS$IanImr)nPd2L3b=q=JX;!PBcYAL-;$}Obx3SO9@ z^)%&XxMatvFf2s20s5=7Ad7`TOeu+ZS&lXuNYZ(xNQZn3-aJTWM2qkHBQjLDjMAv` z9YupSE169avsN}Ojklim@3p%qQ{KpsfTf{Gi?k>xj|zLuH;@E*zA(kwK3Ryg<(T%&$MOAtR0|E33rf* zkjA*y*3vP{LUGw^447MqeGmrW6~=ETsrzz7z(s?7(rsaEj8W zR8KC#8YShktX*VP2Xi;zxzMo`wu1?@+OvThW6)HEqp+rmB2@}bgSNX}qFnELZek_l zS-ql981!y2%2e5U`PS1X|8+;~+)SIB$6md%_2$u^zAe7^{?WH@vHReAb2{F-kdB)zo(gAm zK}l|VGZ^hAKnzB8lOx3Kn@8Uk?|k{$(VU&x-*aX3$U5qsVNa(w?QmR+sR z#mFwR#nVtk{>_*pqeTg8ly>2w83J28OBXsNUFa;J?#X&=+4ZW zpxuj{prHpc%1-9a(5FxS$1RjtkNtDd9X3!kIi1?Q+Din_2eGt8ifFwC!GS-so4 z@Xqwk*qKx)n|;xQ@$o&m@JZWUaMBiff=A4ZET=Fm+c)37{kqux^0O0qvU1@)Svg}* z_UwQ+C*-^G&KG}r8%E{mzn>&ayBDqwx(lj<;;`65m$+x^wfE*gpD8y@zM;`@c!+m*;l;3(Kab_VIZk_0&%Oaf=vo z2{p?f7Wy@9%z^DvvtPq|$a|2j{u$s8Z zI2_;>x1>^RxI&I-7?j5Qc_o4i7m!QWH53wBMn-;w^`Olqpeg=b_k!sxktu`{hKZld zww&}WaP)YSLR=Ahwm)+*G={Sc?x()(xZ}_VqHb1pj(#!Wh$IXRok533(S0(h)oOgg zCPuZ0ZReoMow#(pKTDD@P}t4-6ECA)HU|7c@E=RoiCq}=felkvKA@l>_rh2wv7p2+ihI3}bH1{bE_WdxsAaE9>C>}C z{bUUH^g^IChYol5UGFF1Pd~fVs&PS~8&i7!9WZp5lg!{Ao60B~9kg z(hKyI0&{NBP9v2UF!V?=l$N4}PgQ~;%xMkxEg9vQTIon|QmPxtgiW%UIM2ZgQpTz1 zDV}oWFn!tg!%;fT=|(26(k?GeL>N8B383EccJDyGY0jBtj0VRy^OIta0qq8S6 z_@2jF;wO_mSoFwDS6PBumfPd1+#SNbc;6f zSOeKmVvll5HlUNL;!LX*WliT7FvdM(xN+0$7bTojp2vyifKk(&u#AzK@IYvFsT8^t zEG6ShyKFPB!x*GX*W;-j=nRcVK7lH}LzkEUH=pQV%^4Fke3&XZp{(iai8pa`RDrP- za<<{o33!jCHYajfywUDXv$@__Tkp2gM!RzxB|bx9Zy6--AEI|y*%JLjVZ6Xmv+Nm|B$3#2KyHwe zt+0x~Q~*y<6~tE0ewG@-0ieNNjmfm!;S=F2hj`zzrKsmt}0qn?(G z(rG=z#GM}g1_*N!ckCpwoiX|zd{8Crw3nCrQ7F=Zz}v$4pWu$^&B)?2z{WPh5*cWN+|O-(rt>Bb!-4}Xqhs`6U5 z47KEg(wRJc@;6|xP||Av+U+y=3u^4icWv+jzWn8vD8MGD;`lQOhxsh4krVEL2jv`n z4%I<({RtQZYWv99(F) zi8}kIP`cSTXm%$6=*drQG4gCw#J>o}!ht5gD{ey3L1^|d{_>YuKh2iE_+SEpz1gj4 zX};4fo!+-c_MwRF86eBO{xkrHU;gsxlaCzwDgiYANc73;+I#x=Uy7(#3ALXRNq!1l z18m54fI6Q6KF~ba4xvaGWvBq1$?OX1Jd$y6^y5Gbo<8}w)Yy=t8xbiaGo+mpJM?FBK~N0^e8Qv!Z|ql@gX+3Nr_z+m&rBA0!^Mt#CT>zjUDhM!kYI$UVOMHm8+e>KFF5+#Q|yPG{c{m{0DGiy5zd*2(i7FRfbx$p z&I5FZsW(G3`(Jzz!1ECQK;d6W*47O}gX1+SV}HR(M}oPb#z0kp;69jTT$UXDcmh-X zUyyA+uNovT5IbeHCw~JEM^B%8&x1Q@y+%wX9L*_|4E1rwDj&dnqR9$?9!=#4A%MR{ z8A6jZfVwjh7R+QiGijXzT5DJ`t@t;>`2oCOK6j3OjqFS_ALnw0{s%amk3tdIsZ`5` zQi_*q`pRJcK5^?Fzai=(@qb7V0-X!?j($NYsQ*fXT`m^^=#Rje<1t4{AR!(B6y(q; za0JR;958$V(==kr2QV-~&dtC+oG)LtK`c@?{#N5X?B2fynaDPVoaoL{zdyrSC1SEt zV`u~9B2IE-40_g67j(0QgfCU|R@xQWV%EB7J1(REt56Ok`jr{yD+n{uO;F=IGbh=0{W6rK|^g ztR_EpuvPTnfK;C9VJ0cyiSybYnXSeoK5L~uuKsEfd2x4VH+8{Isf*F zVp+Xs2VNlg40`k7T#2hq%T!5Ejvg@&da3R#RW*_*V8={IHTZ}o4BLzb2Dyx_0$udh z#G7173S1p84HpGBuO~l8f<0FK)fBhEf<>kugQ8|xUPY>aI04!BFUV`(m14{w{TTGg z1n@!e`ADj4V9_6|AOf`c$qPBDFm9z{Vdo~Uo{GDele6>m310vH+c$2D?Wa$EazniJ z^zqN$=5^%lr;q>s4$j5zKYjea@4#IAe{nAU_?BEg7jGPWZ~La$xrynJ|8pCxr$20V z-_qa$%%$rIo-HpAegMy*qI?KER{~6W*Z1)db`L*rhnqaFC%6Y4|3>(0po+JfS1ObY zLu=SuZ;>h2=iNKRG3Hu#GB9fQR;l)M>t%4oS691C6E0O}NXLS^i%iP=w-}s8^Rytg zbB5eva8gNfT5vF?XvUL)vKS~`44)R-TO>^rv~_~Tpfwwl(^HUbsrcx}vju^4PYvV^ znqh1k{jDR8{)vX{<76>_-9}^5IxWao^Z+4Bzr|qn&H(C;t`8?ipD)VpM}Iy=W%oVj z)a1SeGTj{dt@tv76#ZFHU!iTH^>7{}L1bR^qlP`u1=(fMg#n;z4z+R7` zr?syI{dl^ejOL~mMnHSuMI_NbO7H52qAJ>|Kmc~nPpj&#Pae;U>K2eKcDb&UTAj4v zmZ6Ss9{so5H^IjEG5n@%!CRSj83jbx&!6fiv|Im4nPQc8!G zOW9D{3+mL<7z@_bddgYClKB|vvxfH-P|pmP^8C1|nZnaCIf4$~ogze+2b=d;-&(k- zl#h89rvZ(Ev!`3m6uShB$13nZ9z2njA`)Y>y7DH$82=e5q{MInrJzIvA9*!#`{i8ckg>1~hx?GxqMC+LY_ zhynkoP~a|Mh#_C>ok7DSnjO;6BVj&FBUc)MFbpzf7Z3cc&pnKuurB!vAk;tF(9R(h z-YfL%0Nwowjcg)4ZwI|W2fI^6Kal*x&nMzwMhHQ97&Qtyk-sMCm_+1`s}^9u%m|R? zb6}yrVh8vG7_bCgF#Qn)(Y27G9Axam2LS~o>B67_;6)EUaj+>0zXQL^$mE2>9upbv zfcgESPzD*{*Y|7=gd{lbe~yFp=V(s+qNEqVgJ9uNNG`}RtxvyWmLg9+o8j;8q_{kN z^0C06LZ2dnFv>hHaJJ6G-i(b2;MZKQVx$&!|1VsQ-h39&iI^kBsx_F`#9oP-9M~;T zVy4W<=K0gdPh`)HzTik=WePhmKl5NrIE;aKL6?pmCyWzK7x1-JM3wOEy^bkg(=K2LxOIP!7CL$ro0|I^y^T5cSFcQHL$@*k=DCKF|uGVC_ zVq;EOT{jhEY(PO~O$*8poSY6>$T`F#PH?Uxg2;|~CkaPXL{5#kE<;>(C&7~jv#wy_ ze-RVAR13w78Xz!%4nD??^8!Mo!pM?~0$RQ*NRkBIRM0{*5bPt5V3HE^X?ReY+}5TQ z$1nMF-$*Q40H9?7)dyBEECVzZL{Ub`3S1>_9cf!xSLGA9*=D2Ls%I7B}&|K-y?p=yYQA35kh( zQWM|gwJIsa9EvK^l7VpSP*O;nz9_vxRwQQrKCq-URao)>0d^hY3%JY3+Rb{Gt?I?1-2hmw8!7;j71jN|2)zKj&WqeC(#5(*ZwV=whF$G^Y)B`yZwIvZxtqLlj3 z0kZ!rFdAp0nnce3N;x7Kt17?d^-E@H#qXw~(7La!Z-Ep*!U0l*2u)9*!k>u&FF@HC z^?vdxy?I0n890A&@rsf2Q9jU&4P@|(*Op6&m8z=eb$JSWS!9`VOo5}bf*f=`1e&hco71GFm=R-{ zV*(h`yr+fhJ<|6aNLH)76e>0?YM+*GImn&JK&|uz^SU53Q!(`AK$hXh`N=i$4hbFU z5GngP^QLqWB(cupLt2lV4`YpWf$me-|UR9ci5X zbe*88EE`fs>}zG&7{)R$YDH;zR~2^XwGz&X>=C=yG&bY`XU?r01Z0Li=3qq$@}#9$ z-^D<%zDkQ4mhmdF*b;KT6Qt}9b9PEi+(nFK4u$N|lq{Ge^A405K#Epc0n+-Sh0e^1 zlok?RWc`C;#=fxcd#9RsZvrco`dn>&O4!34z()*Jf~^rz<-)r7l6$^xL4%KR+hD z0Y@&iEYjt6;Prp>0alh4|>|i zWMce$X8Mnd$X(^5sw!*}B_v&RYs#V7D18IA!BrVW7c%L=CS@OkqHbx1haJ|C5rDA} zkB=tOqC8dtm!~UWl=ja8G}?IH%6`S9Az}=7kT@;R36c2Ia2(Q{_-R$i(gV=HC_YOInO>Qqu%anYRaLX9zl+hVE^%Ip#nA(FfO_hSPN_&&|uJWP9 zRq?*1D2Xd^(k3b4-A{`>0LQOeHX-xC5fPr| z#djvme2gGe{cEDwM`niUgp$(|&j02F)8ZJ)usS^Y9DaSFID)%mBn?m0%sD}%qys^y z{E<|dnuQ0#LCymsko-4j;QZSsi{?X{?dy}w)cK@I0(Ja!m`irsW--PgHC@G1&pfFq zK?KLh$uSI6YEb>0xecj}6EfhKQzm)m?F9Hy8jO(FWs;5(vQ+>CanVJeo<7NT>%6TB zMw{$inCeZVXjRKuWEpHCL3yhjVr^wDRsx@wl&WZyO^^9m_(f#*X1Kk9 zM#UL>Hroqx5-b<@U8`b1%369s8lek~nls!?t;n*X`@|~b#2~+|gE0)M1GIBQ_#jK zPNBs@OEM1uqu2S+KE(ojdt%1j6kMKS+hyi&98%8zI8#sKxtSmBS8`rud1y(qyKKCRF;jMl`r29Kw^{ihq6X$ zVkcXT+f`QU5pBt$&;cff@fgVUZNyHx;k=ACZ^9&`vLuuvZm>dmws}5U zmIX@Gs?{ljwM-?$0>o7JTpqxjC8S&kw_1$Cq0mo*Y(`c{7O|?beWX)D-?>9G%|2AS zON>y`JpP9<7+(=U0dArAl(t#&v2CH`OldLO2w-trBSbu z_?Y+(+x}w=Nv7#bW=vi32mY>d_s|nX*85OR0v$AI5#N3 zN^_SD4q`)XiH=t%NX8siGa=RI8DL6Lwz717o*?Pv%;l|8dR&Y*1>R=C;ptod<`9Zl z*W6-546pC&D6BD3Y+1?<93;7GrC$=Oo~s}7CbTgZaA#m@0~e-r*$!EmRhzQ_&FG#U zV9A6^UZCaEYpBp3J0deKttTi@L&)&ENB1aX9qH_+J|OL#B2QaJMbP@CG?Py#g8oRMmQ94J z@~|Q`|Crz$rHpBPmJ*|EIb3@f)pW=S=8@!iBjbUC6bN$X#}0>TRCI_fi0>jFeX6hY zGBBTVC&=d=E4S@)kM$ZZG4sMpNj^+rM&?JB8)9bs_iz88;9STY0f{$7uV$z(Q1*W4 z5c)e*`As{hQa+Wo1e34t@XbP~}tLDOtvgr#*9(XI06fAfn zxz1-pCy9YMMv_YGYTh)CDgTFw!`IlQzhFXXc`aq;XKqDM4r(ENMedj^u`@`ULLtD2 zqC0YYIj1NS_#CzWP-U_zn)kKvkDLXm2qA=xTx!`ZS~f$h$WpB8E0ZjurN!&W^ol2c zCCfN!VJb6vq)JZ{bTNQ{#;lrs*c^#EUbH;WmR%po6b$LJm##|~*_uF-KIO=fXfPK= zP?c%XT?b=hobkhJxPu>8U8V+cs_ZmWOIBs?u&ZL@V+GeCbRZ>9?_E;{Q zGX~s!xzdB;WEDWBxhQm!om?T{^vMMR4VWL11{zZTks}JlJ&1W{>-k3#jBL_VIJ+e$ zP<_Gc{-G}GFD91I!CaL59*7Y*@5h`3q@VV4{&2#DVDKC$UKUe$YjFe?$Wxhr7D_s= z$OTF`WtzJo&oZI(JI)<3Tw`fj&5tV>G(3fT$h*;b!vjAkK4NnxU3b(nyJf~Xx{T6! zV$;w_-X|kGA$1+L) z!Jj%>O;0;1j)_X#rbJBLA5BerxjZm8Q><(c0eiy4tQlH+h?YDq!9V(FQcZiw+Zdj= zz&9BB?BeHQ1bY``Cmrf)4Q6yiTVna1JG02gIYGdlU#OoO`ZJ_xnc%*w`A~c0e90p# z%rH;Ey;^J^MPZ+YO!epJkRv@y6qQwZhcfwNmBk|sSN-Ip)92*mc5|pSadR~^o<|00 z6Yr8ZXY&^v!oTK2!{*l7l}ns-e3sn#L-B1s*@knN^$c%XLs#2IXb~)1)zpTcSD(}4 zaej)fJ34-HkKT!t!lWJ~rS53TL;^$$+{0Hiop>zoyv&ui4 z7#WT+onOZGe4jtQOQh6K+*00+JXa1i1yt9DmKVQ~Ji5Z7X{nC|_c=QHhY1eLN930L zoKt0Zm^3v;euGkG`d$RJxSleQ{^93Z76#M&v;4k?3`N5SX7sXc3`RWH;3Ksgj`z5l zOBux+Ataz`bC-2Ds#3B}M!>EIM~^1P=Cq8(vJ_1+ZnAxwg}nf@Ei{9Z>v75f9AAof zua7*^tgz+Eq)I4vDL(%B#7Gy_k7DBONz^SI&1}b#nXAnE9jZK$I2=vlf&+ZC=0BnR zm>l}iHk}mRWHZmDz-8GmGKF#kA+Wn+xrjjW#z zkbK^K`s8ySs2S}G{YYsUeM1s^8WhOf({==E&X_h(7+roMBT_6?r9NRT!D|$_M>{K~ zp~9yrVhRvul0fUfR)RMRjQs$QD6v(Vy;Sk$1|izO1Pt&I9+b)b@fVJcC8Yr_9*!!9hb?`&z`rlV6uDuP|Fi7+>3D%de$g(ED&M5 zA=#PP&)hRO8^~usv-0>2x~ik2&m9v~!l6r*EV2OLQU^dC@py7FcvT%-s+{*+st3B# zndYt@FFVbXMfLQ4PJ2gvNT$N)B+b+&8O(Bc|)hsE#On&S8MvN5TxyOM_ zcTXGi0jyt#^i!Gq$P01Uf!XGiOnradS=T z$meB*?)H?QpiR3uXc*JE+tGX9yyK6$@MCgq4NVtcm!ytTZ_U*v4)Q|PL>+jlQU@vq30 z6pGS)6>9%10KXa%o?r)<;0uQ^EUNl>3)Q?sj`hQ!P79*!h%w$ChSq*F*8zR=w|>Z8 zH7lu3)l;!lJYFex$OO*z)*o!Etu=j_5%sAV#~YL9E_;;)^(1u6Zz{_m_%KV3=$I}T z_lkf4c{rbVk0i z%4uH4(>uD-(Z%zHF!D|z0+Vj+$*GJi$2Xm1l%<3LZcGrIFvzOtOXmXjsK(NkH!@Sv zD=g{A33FAq&wUkpPLFn+w|t-oPK%I~z9o+W%+o1%h8=y?CCh%SP>=PMQ*83r zb)qy61P5NKhDn*r)t1H=Z#0z$PIIC>?bIF9fj8MQ%$QU9Xe!H2(`nm=a2;_=7 zZls+aH*)7DoeXmG>68C{OMZ-D8*Y9=2aWvXZL#y^XX)7@w_iW{%Ug>bM*`OPTdmw- zB=11IFTQ^Z|9%6PseU0|dHUqQ+DKSf$|xCzP^S;dufh7O*o!{GnIBU%Y}SAHS$j|aUAi_jREsOI-mG} zBudA*#f1m}m)reKKqY!H1Wjjr7#3{@D z=Y1&SnK~ds=9uVONN&7g;{*DtD_=iUqLhzjNHG5}vQ1V#K$+)bYQ8q=C^>xE;GLu^ z=^scVAkcEb^}V1eC+agQ%WqV&L!FLrBl`*;2?U=HMC7O*O>N zH>NTpkq=#x?PZOh=K&AAVHtHW5; zclX9=Zh$)MK#XaSvRwy=Gi6%HluZ5%RWAQE9h8GG&{9Cs)c?;}@F6QDbjpd(`v9`- zB3fJvNY{Ao(HV_OIgVR6pYP)R+-3tj#TojPc7R_U9m(9t;$rtR`0~N|V1ETvE%ju} z^>+@q+{0Hm#q3mWt?_lx6hL;=piIojeMC_^zeZPU$DSC%DHQs)X3jjsSt`Y>aXKWQ zze3p}Bmjz^`QtorwZX=nZ2kMU|Bh?TgR|fnIH{E91Vpv(k`)_g(C}6$^OT>Ie8+zo zlpDy~s#T(=1OD`{=d6~K%refKl9rfeaFF3lCw`MEmbOlA^omxEfgdejsuAIZ-lNCL z%Fuf+zcZL^eP?0Iepi+eW*i7e8l6V6)e!0{J`;V_t7Nh%XUw!Lat4+BcIbC0{f)=z zQKqKY!kBmNlAkgxIk#1s5uBvwrGaFYys&r0$cd@sUwH>=p(NWg)xs#sHaLO&u%Tt~fkLDM@Kluz!+G#c|GzzWQrI@dyzTV)Tv_lQBvjDpb-6(g_ z$oxi)P?^GiJ&SiJjawQwQp#1HD0nW-ulu?BG&^^gu4I+=OtGxAJg2R+DYR8pN{^LD zU>8p}G-QUJLR4}pE0R?um6$mzye~_4veW&|DD_l6M$szKvo=C?&WAi2S^Fxw#$8&n zw0;gNt{E7|8>Xk}8iLTw2G_UVWM>pr=N(LxwP_~#r(c9GX4s{(L_a-APi-@I2+TR9 zhHa1&as#z}hPhy%k#Ie4*C3y`L=mf!Ii*VgN@b=kk1&#-vq@!q+J1~D(HJ3%bSSI2 z58vzOju;;lzb&!w`EcT~3(B6aGXr&g98*i)TO^>Vr+smdjSsg-6Pi8k$Pk_Yd!UHb z@z|Wtoo!0W8kWH*TWrtBo<7aQ!0=hI0IlobngaBkyUB$tfat zb$(%fI=$qqq7pNpYA~bZ!z4YaP=yQhZ`AA2)OkEA4+5aWZ+VHsJUEwlLp#FSls3h~ ztg~2OF1ItsQfO1>HmGF5GyTvcIzN7#9yC(Iog}Qk;PYlvXL3?JEm|GRBRSz0LY?)W z9+!*rb>Ing@NCsciqkrtuF@FHubpw0Ws+t`zUFqx7G*9I&;0a>lH=8a3XmC?**W7` z(AV$*C9&*7#hw(+A|qBxY<>5H{PO%vt}p&dc~WvOJyqZk(9)%)OVhB3V=u*Q9P(u#%jr!k%TicEn*4s~ z*#0<-6R`MOt$L$XZ?@~e^Ny9cCw#ADfaf+Oo-^hzm*5!<0MByhFi8Ep1}kx-K`YI2 z+ey4IfKkN3s;fb%(`_Z?187L}XGsEo94~TwR{(2-v&8oTV4pDb6K^V1Wf=Hy-x`LI zC7A{$Y~s6{mAk}k(8eEN$s5xtSizBpu0h}R%U*+>uA^Wn2*`%s79BH^cP!Cw8rqKA z55wJ>6Hd4%QEfV&zBJo>o|Klod`%)(fu1_P=j_5%@Pa|OUkj&ha24vtHSAKAu84Bg zWj5BkjYf6sdZTedmq|F?Y&ROygR1Wi6TV!&wjp4;C9^0HL)(wtjS9}b%}Nkr^DvQv z5E^%*h%Ser?}z&^Kz1~8!5_KT_w8W!l;b{3dz2sNtgofxoW9PFbJpVgfll_l1O!$# z#xKnx|9K7YZ_7|hq83MTN4+Q=NcA>9j%jnnVZ=l1lW?7s&S5xyk!QYC!No=i9J!`YkLW7pZ`k}>>&;abNwo)42t=2MJzD#oIZ7Nl(TD&C<< zZ;RI=fHE-os`xt3SZ=WA`r-6A`7rg6wcI!%2?2L?Cvxq?tuwCm=O->`cu_UlMfm$u zteU{IsL!T;Xb<8HrBi<~n*a@54(yMcD>=juOyJ>voT)HpN;ZHqQ&Ryk1FYgH zZbxE-$KJpt&oG|YzF!zLXxw+XziQa9_LjJ5Y~(y{5#$ao4DZlNC3PZ;{WPm99CB96 zz9SGGno*p{gIkAMTg;T|4FG3pOYFKt zP?0M^7*D`Xh*PFi4=k7)c7-E8_}`_p3JCjYh}M=_!&1+wSL3!UJM|AOnvNyqvv*r~ zu*OF+YJ8o>6*)0yEE2+Y;JChJHiGlCBKh_!(HECfBE-od&h~*9PksAvJqQDkbz3)a zgEJ4f>=HZPCWk?Cb>sf$Cb2}SW$HmB{?)Lb(rY~=pY%!}NC zHS}D6U`@b7vq!EJ#xR=)E|3EafXWtq)h;`}o0lv49HZ9ar<4dWpw**NNTqH6oO2T5Q$WUfQM;`%GS&B3@-{Jp9MTM3N*qwjnhmYRTw;b;%c`b51{2v7vy2M z4_BbEC-#Bw1|wW~?RC2?d?f)xe&v4vd_~iFPP2}>XK|y_DJ0& zhf}yiG%EtwbOtvtjlB2aZ@Xc1uGP`HChBTcxwK2{8yY>5kC>w`rbp5PrY zj_(i%4+)YTs=hnuADRUK ziAP=mf#KHWLkU3LAqwhRMg8Ti1b;_c#zcS$d1_~wM`@X1EK6eCL$P@8)+@`hjpf$L z$})l~7N`UA3$zDwCrENl$Y&BngWJOCRYxLhNhN#z1{~vo=!19wuBlsc1e$)gr zkcBL`9D2Sl`Xh_};sr(yaE=hXOX*K$y)4N)eH}-(C*u#~=b7U-7Z)yGVC<*X_n=6ejm{>fZ zm-0}dMTROFkxEgbluQ-sqAZc#Bi}ruoVKp|ozH5MnA%BVJ7W^4L`D*Qd@1v)aye%) zI;N+IwcWUFy?JB1HVx==^!wG~65WZFE%2rf;D;J%pS2M%YY*Uu8iBw2M#rGnK#i*) z?&Sj|n`k$#C`npuW_96aT5DI16UaIJv({=gTkX|G_nGLQwDqF? zX-WljlF}F^*4VXi?Lwv^zVr0Sx5bUyuWx_jof|vahEr)~XjNwi;AsUjz}$U3r1c<#54itl{!L3Rd3>3+j?+#UU) zXtr0x?GdI|{aGOXkRu1yZyhNynB<<8hK+W+)m>|MyS@Lg{Wh0T7w&oBjXmFsCp9OG z+^>(&1;(YJW65BU#L!f!M^dn*+s)OL-db~IbunXl^)$wG&b-G6jSNa_hJK^72G;!A zN|~kKTU}f2t@JvrGUPhvGW4&HJ6kH-(hIKF;dbfz%!gloI=uav@4Ja*N9dbmq5sR3 ztsOof+zw?BP#zqf+bkpAp^Y^h==8ng+9sZmYIF!j4H=&6Vhyx@4zd^UHfI?=m7$o6 zY5ezRhuVhsR8Bn$P;VG}{V8V@mm8i1s2$E+mHP{x34~0%N1Px^3BW-SRvlSv;mO%+ zv|Fv!UbA=c{GUN0iPdg*R$8szT04c5$|9aCb3e1b(9~I&k~imWB77F(WpaSv4kY1)Xj5~CCEJ205v0bf=&dkE?d&b7meE5JcE5fZtr!P ztDTk3>N61bIc9IJ^}w#^t#w!Dar^)I(Z#a$jea--XCi(UqkPwm_B_XZCT+j$htEV{ zZo^C4DVb&Ete6d0ffs9y?p$^hY>nBzHwxATE_t7tMYB-u@df5bGFvOHPOl4QY*{3; zwX(9-=mF;&JfCCrX6vj*m$tV+{Vh1{StJCvDQ-vtw!r`HgG)S$!dWmt$2g4Eqf!5A ztJ|##_3PS(+N`jYBT+VhWnaxgb ztp)vCEgOVpySuvD?)I7&A$YWO5_4FlTmR=1f$=Fe4BbTT7+KI1Xf=DQ4fuHmmhilN zCY)EGZeXS}pBP(Ngg&hc`AOwD`3odE>4{BK-}Ztu0bZpurCCg`QI+|b@Fnk0lL}wb zs|E1aJANyO6MGcdld^6JPrW^+V_FO4JU(Yxw-c3q z&aCWqR@%*#X0uglRZf+{)ol`%q8pglBTv%6PoJp$m_|539-gMQk7~OtG2VT>ABp-F zg%iK{{u^(+A{xy`x4pX3Xt(ieNp~@A?~R*Ze1AvmOlw&*QD*n?sU5AgdZSlwHJVLs z?Y26gPkt+jH~6m$6>CppmN&qo*_omLt3}+WC3aj&p}ZN_sI8V+am`wLj>VQ&{pohN zyy{&sM!zf-KgQ>?#Jtp8CIYks-2(`oeD-EQmIEO)Bb zPr2NQjspwiC2}9${zI`d29#n>IQyM4&b#Oa=?iIIMe3_8CH1f$0=kpzdBG1Bms>0C zUS|b|tOP)9c7U7yr*67vjBrG}HzL@na_h?Wv&Cg7rm_;q8DF@4MtKnsx#o{gNhl{? zj(j}{qe#Hsob)f*Y+jGs{W$bz3A*r<>W3*(%6Qe6)mT9r2P!O?dp0mF1muby?vM%p zOZn{`GI?+sc@sN26jRj3ax;j~{+X>$56LW+h-yW*)hqV&zlKFOQiJI=-%jFi;`01W zZ6yhTnO6g;9;AB|RBj}L)zc-F7{g>qT2M?S*d*+Gz6)m7!0p>8o2}T1KxpF4WH`m- zUbj*_xk8rb6bYje=U2*EIPogH8#_J>|D7*Cd-~+>Zi}YadHVP#c%c2W>`CK{J!zG8p!JpD+&m-B?NXfE1)O<( zps);aG3d{m^__(}g$y(uhtLP&l{?Ub??1;WpS@{y7MrxH1M+V+CRu+`>^zYza2i4Ymx$LezCnQ%nSp`-XHgb;^ zJ6$LKy}|B1+@Y6kKA~r{Yfs2)uB`4TUH}vv+A}{<4>`2Jt5RvTfx2>lqXXB+l`R>g zd*AYcfqSqnT20I?qNt6;F6Y(DCgdRlDt-V@;gKVe8HbVgKECtwcp1o6L<-@||4!3@ zR`&R6Wp7hj&E%c+5r&%9o>Tmeu!dXLns(ZqUDt(lX8=%$UAE^Ww2JitIxu zZuk4EPP@D~g&?8Kkp7jInc6UtQ!hZ!!qxdSNY3|nr?EidQKK$?WJ zSXKye4>IG>TbtLdTpfGTcQNcZbo%qFP(*4Jxgb1{Do}i-KXCfpM9UF&z7ZoZE&v?w~0Lfcjn<{Cg&0|Qgl zxY}%Y2kxjEjr#W0UKON3wbfdwHm`}s6?}NL+3i+WoA9thd%&(-n+rNm;S9D;#`*BC zHd`%#)2KFA8!7lkwbfXyHrtI8p_i}(Vlaojjw3^>+X5WA)ka1Jn-aU44f*g?s4&Qk z8Z;%2hp&N>bZ9kJs+}JEe-dzzIfv;`*oO$VCMIP`1RL`$at4h)c>qn-hxoer}{Pd&rR zK)p4Hsu06MGHl@rMaWCAKN{Z5`TG*qod4|>qkum>!=fPLpgre$dTFdDe_?BE1Q z&;{sLv)9d-0-klc@c%W@RltEtjcTv8Fpmyq@$Ld$Y*(AjR@TL}H53ZXwN?hX2XbN+ zXX{CzNmhoAdxA6|xE+F>!Ch^Ucxp8@z&PGL5Lv4yPE6NFe)JrC6vxLyZ?uSGnk{V_ zG}|=T&DM!*H1P%juQ445qY6}Qt)=aEV8S!|} z?D;(~3!F#^QgrhPL9b7sgHllCq~N!OCelN4iec$UTH1ZT)tXK%Vgv( z*c_EDX(Kg)7i=djU(!};6)f0RTE3*Ma?@k6c1!D?41+DLGl8J0Wf1a~V^ zoGdlY)B0kvb#B%?jXXPl*A|v?=LdC? z>_azBX+r(xLS)_<8ed%2ouTmsWZW5AT~M~2q2)8kv@<|CpDa5+z{O?QSzw(-cAa^s zP9?L>%4(;QRcG$X;xg*YAm+-Z69U3n%pwzqnq(}4yKu015k4%55uXdCMF1>1ALm7n z&xhb?AT2Db^x*PEqF2&<8IPSDb3PxRo!owz4lN5sp9_!D7EA4cd=U9uV2jPog{eZx z7XVK+bsP_3@c3fb4O^Ng=P6cvE-+a$B{0mW@VVfaO_jh>A<1(=QH_+e&$<6;c0`apt~I;0cI9EUV&At9@Nn&QPQiJ%{%)37^KP1j^KPB~SXi14{I6D`1S`Qs zoOsUe;XU5$0*_W2@DSM2P2zjUwk%H#eYZ{s#_!e@<^YYVzgxc#KhPSXm>V+wy(=wO}tU<-O3fZxbm(%*ZW<$>*-yU@bYd2w_8vn@8VG@dn3Uo_r9B< znH}EyE}h={E}qK!uKJGnyOq}JyXi5o@=hJ>`);Kn8lu&K|KTZ~R|t>ra|`ccE=&~e zB1$s5e;W;}^tqL`o;|`v9mk%+Lz=GUi~FG$Xm3>ahOQ0t1UBHm)&X{tzCd%(gx5{P z_7JanaB6O`8L^a@qDm0}&D6#ikVZ^78{c=eOuo)=)+X=R;0wF9g- zi`|Gu)DG^!G{zImM{bbYW%Yq9XAsox#{<{*_M%$gCiP%CsneIW)Pd?@ zAI5YKH*$skA#(rM8?|PwQ6G45Qop5@{Dv$D?Y#tlHmMkky5k!J>9@R<^#`P%8w|YR zdw7uj#dT~nt_QP&aNq@X&uuohDF^XR6i#s~l^cJ(Qv-xcU)4ZNs!mZUc}PEKd=Sp@ zV*QX$<)^OjJnJ_@dmwWNHy_BYu(4!CaNF=i^KTi4U%ywaMWM6nCiDc4Wv+U|$ey^l zVwEc1--FBbih7tm1AfaMBj?IDczm;Zf!CEPiJyB2#|uXMO5W)2+(GsVW>7U51MiMQ ze?a^U%E3qDL=_#*0^)+JvcuONctdqvOYG5Y{3gQYX64pv-@NhGtCg>PO}#@T0b5Cd zHzhzQIrI{6FJdR0Ozp($`)S26UNB0^PMurN9LJrRT-=Bfk@WN&V zq_8^#AvoYB`FU*^)Bxr?0Q1@dew22m#{0UiUQ;EmUVBLYHe}QGVDKu+BSZ){cVAt8 zQ*y%k`mMlAJlhA_50+hh96Nk&?~E20bC3Gam7vAdczdw3*s4j9#^!aS_5bu(zVC z9u)Sjt7k|dcW^r#z_jD9fNXd#zNimUNy%?{@6|?b@~WIeFCXqOBfYQ*R+faieC+`; zfEUc%hfAkxZ5vtW`1X)U@#ZN|ySfb1d->Xi7vH1G^XjHkqH^o4*DD)L`_n?AN)i}d zF940_-v*EDJsjGFfTpy%x}1|$2tVVc7dM$^=^$%N1@E|<>Sdn2Ufk5s%38RphzabX zLu%51r=3S;(t$N$eqN*MS*5MUAOEpl3h(n+Y&EVu$WO}}+X^`CuhGotZw^9dMv|y> za4MLjTev)A*8zyt7n;{n z^`mqpsfHl5@LQL|L);fE?D#NnPX5fn)Srz&xZor1x-{Xzg0HJVtv7q1G}WC{loeeG zN;FP{=75NB>$p3hS#Q~Ew(Zz%r`74Un@)GoUvoQsx3Sj4XHFAgaL2Mtd1)8I{PhlYX zhvE&;%L+g$B6R(kk(p8pHZ KQbu&=Y5@Rh5-w%{ literal 0 HcmV?d00001 diff --git a/wp-content/cache/wp-rocket/localhost/2022/02/13/thuc-te-mau-nha-cap-4-dep-o-hai-phong-dien-tich-150m2-da-thi-cong-va-hoan-thien-tc510098/index.html b/wp-content/cache/wp-rocket/localhost/2022/02/13/thuc-te-mau-nha-cap-4-dep-o-hai-phong-dien-tich-150m2-da-thi-cong-va-hoan-thien-tc510098/index.html new file mode 100644 index 0000000..55c7feb --- /dev/null +++ b/wp-content/cache/wp-rocket/localhost/2022/02/13/thuc-te-mau-nha-cap-4-dep-o-hai-phong-dien-tich-150m2-da-thi-cong-va-hoan-thien-tc510098/index.html @@ -0,0 +1,1053 @@ + + + + + + + + + + +Thực tế mẫu nhà cấp 4 đẹp ở Hải Phòng diện tích 150m2 đã thi công và hoàn thiện TC510098 – Nội thất – kiến trúc An Việt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+ +
+
+ + + + +
+
+
+
+ + +

Thực tế mẫu nhà cấp 4 đẹp ở Hải Phòng diện tích 150m2 đã thi công và hoàn thiện TC510098

+
+ + +
+
+ + +
+
+
+ + +

Hải Phòng là một trong những địa phương mà công ty kiến trúc Angcovat có nhiều cơ hội thiết kế nhất. Khi nhắc tới mẫu nhà cấp 4 đẹp ở Hải Phòng không thể không nhắc tới mẫu thiết kế nhà 1 tầng 10x15m của gia đình chị Hà do kiến trúc sư Angcovat thiết kế năm 2015.

+

Ngay sau khi nhận được hồ sơ bản vẽ thiết kế nhà, chủ đầu tư đã bắt tay vào tiến hành thi công nhà ở dân dụng và hoàn thiện công trình trong năm 2015. Trong suốt quá trình thi công xây dựng, chủ nhà và kiến trúc sư, kỹ sư chúng tôi vẫn thường xuyên trao đổi, tư vấn các vấn đề chuyên môn và cập nhật tin tức, các hình ảnh thực tế thi công của ngôi nhà. Có thể nói không chỉ riêng chị Hà mà rất nhiều khách hàng luôn băn khoăn rằng thợ thi công không thể xây dựng chuẩn theo bản vẽ, hiểu được tâm lý đó, chúng tôi thường xuyên chủ động gọi điện trực tiếp cho chủ nhà để giải đáp các vướng mắc nếu có trong quá trình xây dựng. Chúng tôi luôn luôn đồng hành cùng với gia chủ để tạo ra những ngôi nhà đẹp, những công trình bến vững theo thời gian. Có thể vì thế mà kiến trúc Angcovat ngày càng lớn mạnh và phát triển mở rộng như hiện nay.

+

Còn nhớ chị Hà đến công ty chúng tôi trong một buổi sáng sớm cuối tháng 6 để gặp gỡ và trao đổi với chúng tôi về nhu cầu thiết kế nhà cấp 4 đẹp ở Hải Phòng. Sau khoảng gần 2 tiếng đồng hồ, anh em kiến trúc sư đã lên phương án thiết kế mặt bằng phù hợp với nhu cầu và mục đích sử dụng của gia đình chị. Chị Hà rất ưng ý và mong muốn hồ sơ thiết kế sớm hoàn thành để có thể triển khai thi công vào đầu tháng 8 âm lịch năm đó. Gần đây nhất, chúng tôi có gọi điện hỏi thăm chị Hà cũng như mong muốn xin một số hình ảnh thực tế ngôi nhà 1 tầng mái thái sau khi thi công xây dựng để làm tư liệu cung cấp tới khách hàng. Liệu rằng hình ảnh ngôi nhà sau khi hoàn thiện có đúng như bản vẽ kiến trúc thiết kế nhà hay không, mời quý vị cùng chúng tôi chiêm ngưỡng và phân tích nhé!

+

THÔNG SỐ TỔNG QUAN CỦA MẪU NHÀ CẤP 4 ĐẸP Ở HẢI PHÒNG KÍCH THƯỚC 10X15M

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
    +
  • Mẫu biệt thự
  • +
+
+

BT11885

+
+
    +
  • Số tầng
  • +
+
+

01

+
+
    +
  • Chủ đầu tư
  • +
+
+

Chị Hà

+
+
    +
  • Địa chỉ
  • +
+
+

Hải Phòng

+
+
    +
  • Mặt tiền
  • +
+
+

10m

+
+
    +
  • Chiều sâu
  • +
+
+

15m

+
+
    +
  • Kích thước ô đất
  • +
+
+

500m2

+
+
    +
  • Diện tích mái
  • +
+
+

60m2

+
+
    +
  • Phương án móng
  • +
+
+

Ép cọc

+
+
    +
  • Kiến trúc sư thiết kế
  • +
+
+

Kiến trúc sư Angcovat

+
+
    +
  • Thời gian khởi công
  • +
+
+

8/2015

+
+
    +
  • Thời gian hoàn thành
  • +
+
+

12/2015

+
+
    +
  • Chi phí thi công và hoàn thiện ngoại thất
  • +
+
+

975 triệu đồng

+
+
    +
  • Thông số công năng, diện tích
  • +
+
+

Tổng diện tích: 150m2/sàn. 

+

1 Phòng khách + phòng thờ , 3 Phòng ngủ, Phòng bếp + Phòng ăn

+
+

HÌNH ẢNH PHỐI CẢNH MẪU NHÀ CẤP 4 ĐẸP Ở HẢI PHÒNG DO KIẾN TRÚC SƯ ANGCOVAT THIẾT KẾ

+

 mẫu nhà cấp 4 đẹp ở hải phòng diện tích 150m2 mặt tiền 10m

+

Hình ảnh phối cảnh mẫu nhà cấp 4 đẹp ở Hải Phòng mặt tiền 10m

+

Mẫu nhà cấp 4 đẹp ở Hải Phòng được kiến trúc sư chúng tôi định hướng theo phong cách kiến trúc đồng quê kết hợp với hiện đại. Nét hiện đại thể hiện ở các đường nét hình khối tinh gọn, phẳng, sắp xếp phi đối xứng, đặc biệt chú trọng tới không gian mặt bằng công năng và tạo lối kiến trúc mở, gần gũi với thiên nhiên. Trong khi đó nét đồng quê truyền thống thể hiện ở lớp mái ngói màu đỏ hòa quyện với không gian xanh mướt của cây cối, làng xóm xung quanh. Nếu như đặc trưng của các công trình biệt thự cổ điển, tân cổ điển là các hình khối uyển chuyển thể hiện qua thức cột tròn, các mảng miếng phào chỉ họa tiết tỉ mỉ thì các công trình đơn giản hiện đại lại sở hữu hệ cột trụ hai bên có kết cấu vuông vắn thể hiện sự khỏe khoắn, sang trọng. Phần tường chữ A mặt tiền được kẻ chỉ đơn giản nhưng cũng tạo điểm nhấn thu hút sự chú ý của người nhìn. Phần đầu hồi được đổ bê tông tạo khối như những cánh quạt đan vào nhau nổi bật ở mặt tiền công trình.

+

Xem thêm: Các mẫu biệt thự nhà vườn 1 tầng 

+

Toàn bộ phần tường của mẫu nhà cấp 4 đẹp ở Hải Phòng được sơn bằng màu vàng be và một số các phào nổi được sơn màu trắng nổi bật. Màu vàng thường được sử dụng trong các công trình kiến trúc Châu Âu, thuộc vào gam màu nóng, tuy nhiên trong công trình nhà ở hiện đại kết hợp truyền thống này chúng tôi muốn nhấn mạnh vào nghệ thuật sử dụng màu sắc. Các gam màu thuộc tone màu nóng sẽ mang tới không gian sống ấm cúng, rực rỡ và phần nào thể hiện sự tươi vui, giàu năng lượng. Nổi bật nhất phải kể tới gam màu đỏ của lớp mái thái. Màu đỏ tượng trưng cho sự may mắn, khởi đầu tốt lành, vì thế với mong muốn mang tới cho gia chủ cuộc sống an lành, thuận lợi chúng tôi đã lựa chọn mẫu mái thái màu đỏ tươi này. Riêng khối chân đế cao của mẫu nhà trệt 3 phòng ngủ 150m2 được ốp bằng loại gạch ốp chân tường giả đá thể hiện sự sang trọng, bề thế bền vững. Ngoài ra đá ốp còn có tác dụng bảo vệ cho lớp tường phía trong không bị tác động bởi các yếu tố thời tiết như mưa gió, ẩm mốc nên không bị ảnh hưởng tới thẩm mỹ và chất lượng công trình. Ngoài ra những ngày trời mưa sẽ dễ dàng lau rửa sạch sẽ mà không lo ngấm nước vào tường phía trong.

+

mẫu nhà cấp 4 đẹp ở Hải Phòng theo phong cách hiện đại kết hợp truyền thống

+

Phối cảnh tổng thể công trình mẫu nhà cấp 4 đẹp ở Hải Phòng 150m2 3 phòng ngủ

+

Việc quy hoạch mẫu nhà cấp 4 đẹp ở Hải Phòng kích thước 10x15m trên khuôn viên đất rộng 500m2 vuông vắn là điều tương đối thuận lợi cho quá trình triển khai của kiến trúc sư chúng tôi. Với đặc điểm cây cối và chất đất tương đối tốt thì phương án mọc được lựa chọn đó chính là ép cọc. Mẫu nhà 1 tầng mái ngói đỏ tươi phù hợp với điều kiện thời tiết và khung cảnh làng quê nơi đây. Biệt thự trệt 1 tầng được nằm gọn gàng trên lô đất, phần còn lại được thiết kế sân vườn, cảnh quan và đất trồng cây xanh xung quanh tốt cho việc điều hòa không khí cũng như mang lại không gian sống tuyệt vời cho gia chủ. Sân nhà được phủ toàn bộ bằng lớp gạch đỏ cùng tone màu với màu mái ngói, tạo nên sự đồng bộ, thống nhất trong tổng thể ngoại thất ngôi nhà.

+

HÌNH ẢNH MẪU NHÀ CẤP 4 ĐẸP Ở HẢI PHÒNG SAU KHI HOÀN THIỆN SO VỚI BẢN VẼ THIẾT KẾ

+

Quá trình biến một công trình nhà ở, biệt thự từ phương án thiết kế cho tới thực tế đòi hỏi công sức, tâm huyết của chủ đầu tư, thợ thi công và của những người kiến trúc sư. Phương án thiết kế mẫu nhà cấp 4 đẹp ở Hải Phòng ngoài tính thẩm mỹ cần phải mang tính thực tế, khả năng ứng dụng cao. Để đảm bảo cho quá trình triển khai thi công xây dựng diễn ra tốt đẹp suôn sẻ thì hồ sơ thiết kế phải đầy đủ, chính xác. Mỗi bộ hồ sơ thiết kế nhà của công ty kiến trúc Angcovat đều gồm 4 phần: kiến trúc, kết cấu, điện và nước. Các phần được trình bày tuần tự theo thứ tự, khoa học và dễ hiểu giúp cho chủ nhà và thợ thi công có thể dễ dàng triển khai bản vẽ một cách chính xác nhất. Sở dĩ vì thế mà công ty kiến trúc Angcovat chúng tôi có rất nhiều khách hàng lựa chọn dịch vụ thiết kế nhà ở từ xa. Có nghĩa là cả khách hàng và kiến trúc sư không gặp gỡ trực tiếp, mà toàn bộ quá trình trao đổi, tư vấn đều thông qua các phương tiện truyền thông như điện thoại, email, zalo,… Hồ sơ sau khi hoàn thành sẽ được chuyển về theo đúng địa chỉ mong muốn của khách hàng bằng phương tiện chuyển phát nhanh. Với tiêu chí lấy chất lượng làm trọng tâm, mong muốn mang tới cho gia chủ không gian sống đạp mắt, ấn tượng nên trong quá trình thiết kế luôn đảm bảo chất lượng về mặt thẩm mỹ lẫn kết cấu công trình. Sau khi bàn giao hồ sơ chúng tôi chưa hết trách nhiệm, mà luôn hỗ trợ giải đáp mọi thắc mắc của khách hàng, các khó khăn về mặt chuyên môn mà cả chủ nhà và thợ thi công không giải quyết được thì đều được đội ngũ kiến trúc sư, kỹ sư chúng tôi giải quyết, tư vấn phương án tốt nhất cho khách hàng. Chính sự tâm huyết và tinh thần sát sao trong từng giai đoạn đã giúp cho kiến trúc Angcovat càng ngày càng nhiều khách hàng tin tưởng và lựa chọn. Chị Hà cũng là một trong những khách hàng đó của công ty chúng tôi, chị Hà rất tin tưởng về năng lực chuyên môn cũng như tinh thần trách nhiệm của anh em kiến trúc sư Angcovat. Sau khi hoàn thiện công trình, chị Hà rất vui mừng chia sẻ một số hình ảnh mẫu nhà cấp 4 đẹp ở Hải Phòng, dưới đây là một số hình ảnh công trình.  

+

Có thể bạn quan tâm: Bộ sưu tập các mẫu nhà cấp 4 1 tầng đơn giản

+

ngôi nhà cấp 4 đẹp ở hải phòng kích thước 10x15m đã thi công hoàn thiện

+

Cận cảnh công trình nhà cấp 4 đẹp ở Hải Phòng với hệ mái thái màu xanh lam hiện đại

+

 Có thể dễ dàng so sánh được hình ảnh phối cảnh 3D thiết kế của kiến trúc sư được chủ đầu tư và đơn vị thi công tuân thủ khá chính xác từ tỷ lệ công trình, hình dáng đúng như tỷ lệ kiến trúc sư đã chia trong hồ sơ. Tuy nhiên không quá bất ngờ với sự khác biệt lớn nhất giữa bản vẽ phối cảnh và thực tế công trình sau khi hoàn thiện đó chính là màu mái thái. Mẫu nhà cấp 4 đẹp ở Hải Phòng theo như thiết kế là sở hữu hệ mái thái màu đỏ truyền thống, phù hợp với quang cảnh đồng quê xung quanh, thì thực tế gia chủ đã thay đổi bằng lớp mái thái màu xanh lam. Thực ra trước khi thay đổi phương án màu sắc mái, chị Hà có gọi điện thoại xin ý kiến của kiến trúc sư Angcovat, chị muốn sở hữu một công trình nhà ở mang hơi hướng hiện đại hoàn toàn, thay vì giống như các ngôi nhà cấp 4 mái đỏ vẫn thường thấy ở các vùng quê thì chị muốn đổi màu mái đỏ thành mái màu xanh. Hơn nữa màu sắc không chỉ mang lại giá trị thẩm mỹ cho công trình mà nó còn liên quan tới yếu tố phong thủy, được biết màu xanh lam rất hợp với mệnh và tuổi của chủ nhà. Nên khi chị Hà muốn đổi màu mái thái, chúng tôi đã phân tích các yếu tố trên và thấy rằng biệt thự trệt mái thái màu xanh lam cũng là một phương án lý tưởng phù hợp với gia đình chị Hà.   

+

Phương án triển khai hệ mái đó chính là đổ bê tông mái vát sau đó sử dụng hệ vì kèo rồi lợp ngói. Chính điều này sẽ tạo ra khoảng hở giữa ngói và sàn bê tông làm thoát nhiệt nhanh không gây nên tình trạng nứt vỡ ngói. Hơn nữa, trong trường hợp cần sửa chữa một vài chỗ cũng chỉ phải dỡ ngói cục bộ ở từng vị trí mà không cần lật cả hàng ngói lớn. Ngói được sử dụng cho công trình đó chính là ngói thái – đây là một loại ngói có nguồn gốc ở Thái Lan, đang được thình hành ở nước ta bởi những đặc tính ưu việt mà nó mang lại. Nhờ có độ dốc lớn nên dễ dàng thoát nước mưa nhanh không gây úng đọng nước như những công trình nhà mái bằng, vì thế mà không ảnh hưởng tới thẩm mỹ và chất lượng công trình. Mái thái lại rất đa dạng về màu sắc, kích thước sóng lớn sóng nhỏ nên gia chủ có thể dễ dàng lựa chọn được mẫu mái thái ưng ý, phù hợp với sở thích, cá tính và phong thủy. Đối với những bề mặt cần lợp ngói có diện tích nhỏ như mái hiên, mái ngói trên đầu cửa sổ, mái cổng thì thực hiện bằng cách dán ngói lên hệ khung xương đỡ phía dưới. Để đảm bảo kết cấu và bố cục thẩm mỹ của toàn bộ căn nhà thì phần mái đua ra khỏi tường từ 60 đến 150cm, như đối với mẫu nhà cấp 4 đẹp ở Hải Phòng thì phần mái hiên đua ra phía ngoài là 80cm.

+

Tìm hiểu thêm: Mẫu biệt thự hiện đại

+

mặt tiền ngôi nhà cấp 4 đẹp ở hải phòng đã thi công và đi vào sử dụng

+

Mặt tiền ngôi nhà cấp 4 đẹp ở Hải Phòng kích thước 10x15m của gia đình chị Hà

+

Thoạt nhìn đã nhận ra điểm khác biệt giữa hình ảnh phối cảnh mặt tiền mẫu nhà cấp 4 đẹp ở Hải Phòng và thực tế đó chính là trang trí phần đầu hồi chữ A. Thay vì tạo hình khối các thanh nan đổ bê tông nổi sơn màu vàng trên nền màu nâu thì thợ thi công đã thực hiện toàn bộ 3 thanh nan chìm đan vào nhau. Sau khi nghe kiến trúc sư nhận xét về một số điểm khác so với bản thiết kế, chị Hà có chia sẻ rằng phần trang trí phần tường chữ A ở mặt tiền được kẻ chỉ chìm, không tạo hình khối nổi bởi chị muốn tạo ra một tổng thể công trình đơn giản nhưng vẫn giữ được vẻ lịch lãm, trang trọng.

+

đầu hồi ngôi nhà cấp 4 đẹp ở hải phòng đã thi công

+

Sử dụng vật liệu hiện đại cho công trình nhà cấp 4 đẹp ở Hải Phòng

+

Toàn bộ hệ thống cửa chính, cửa phụ và cửa sổ của ngôi nhà cấp 4 đẹp ở Hải Phòng 150m2 đều được sử dụng vật liệu bằng kính khung gỗ. Khi sử dụng vật liệu kính sẽ thu hút ánh sáng vào trong không gian các phòng, giúp cho ngôi nhà luôn sáng sủa, thoáng đãng. Ngoài ra khi sử dụng vật liệu kính người nhìn có cảm giác công trình rộng lớn hơn so với thực tế, đặc biệt rất dễ vệ sinh lau chùi cho lớp kính sáng bóng và công trình luôn mới mẻ, khỏe khoắn. Gia chủ có thể ngồi trong nhà và ngắm cảnh quan sắt phía bên ngoài ngôi nhà. Để điều chỉnh ánh sáng tốt hơn, chị Hà đã sử dụng lớp rèm vải vừa là vật trang trí thêm phần sang trọng cho không gian nội thất.

+

Phía dưới chân tường chị Hà lựa chọn lớp đá ốp giống như vật liệu chỉ định trong hồ sơ thiết kế nhà. Đá ốp kẻ rối màu ghi xám nổi bật so với tone màu vàng ở lớp tường phía trên. Đá ốp chân tường nhà và hàng rào thông thường được lựa chọn loại sẫm màu với mục đích màu tối là gam màu tương đối sạch, hơn nữa sẽ làm tăng mức độ bề thế của toàn bộ công trình. Sử dụng lớp đá ốp phía chân tường sẽ khiến cho ngoại thất công trình trở nên sang trọng, hiện đại đồng thời cũng rất dễ lau chùi vệ sinh nhất là những ngày thời tiết mưa gió hay những ngày nồm ẩm. Sân nhà có diện tích tương đối rộng, được lát bằng lớp gạch chống trơn màu đỏ. Đa số các sản phẩm gạch lát nền sử dụng cho sân vườn đều được thiết kế sần sùi hay có đường viền giúp chống trơn cực kỳ hiệu quả, giúp bảo vệ các thành viên trong gia đình nhất là trẻ nhỏ và người lớn tuổi. Trẻ nhỏ cực kỳ yên tâm vui đùa bên những bồn hoa tươi đẹp mà không lo bị ngã do trơn trượt. Gạch có thiết kế tạo vân rất hiện đại và tươi mới, sinh động và gần gũi thiên nhiên.

+

Tham khảo: Hàng nghìn mẫu thiết kế nhà cấp 4 đẹp vạn người mê

+

 sân vườn của ngôi nhà cấp 4 đẹp ở hải phòng

+

Một góc sân vườn tiểu cảnh của ngôi nhà cấp 4 đẹp ở Hải Phòng

+

Trong mỗi bộ hồ sơ thiết kế nhà, riêng phần thiết kế cổng hàng rào, sân vườn đều được chúng tôi thiết kế miễn phí. Đó là phần cảnh quan xung quanh tạo điểm nhấn cho công trình, phải được thiết kế đồng bộ theo đúng phong cách kiến trúc mà chủ đầu tư và gia chủ đã thống nhất. Phần sân rộng là diện tích dành cho trẻ nhỏ vui chơi, sân để xe và là nơi để đặt các chậu cây cảnh, tạo nên vẻ đẹp thẩm mỹ mẫu nhà cấp 4 đẹp ở Hải Phòng cũng như thỏa mãn thú vui chơi cây cảnh của gia chủ. Gia đình chị Hà trồng một số loại hoa hồng ở trước cửa và xung quanh nhà, trong sân rộng thì đặt thêm một số chậu cây cảnh bonsai phù hợp phong thủy cũng như đam mê cây cảnh của chủ nhà. Không gian thực sự gần gũi với đồng quê, cây cối và thiên nhiên nơi đây. Đây là một số hình ảnh ngoại thất mẫu nhà cấp 4 đẹp ở Hải Phòng, riêng phần nội thất gia đình chị Hà tự lên ý tưởng và mua đồ về trang trí phù hợp với nhu cầu sinh hoạt và điều kiện kinh tế của chủ đầu tư. Một số hình ảnh bên trong căn nhà được chị Hà chia sẻ cho chúng tôi như sau:

+

phòng khách ngôi nhà cấp 4 đẹp ở hải phòng phong cách hiện đại

+

Một góc phòng khách của mẫu nhà cấp 4 đẹp ở Hải Phòng

+

Theo thiết kế mặt bằng công năng của mẫu nhà cấp 4 đẹp ở Hải Phòng diện tích 150m2 gồm có 1 phòng khách kết hợp phòng thờ, 1 phòng bếp + phòng ăn, 3 phòng ngủ và 2WC. Với bố trí không gian chức năng các phòng hợp lý phù hợp với số lượng 4 thành viên gồm bố mẹ và 2 con.

+

Cách trang trí phòng khách ngôi nhà cấp 4 đẹp ở hải phòng

+

Bố trí phòng khách kết hợp phòng thờ trong mẫu nhà cấp 4 đẹp ở Hải Phòng

+

hình ảnh Phòng thờ kết hợp phòng khách ngôi nhà cấp 4 đẹp ở hải phòng

+

Thiết kế không gian phòng thờ trong mẫu nhà cấp 4 đẹp ở Hải Phòng

+

Thiết kế nhà 1 tầng 3 phòng ngủ được bố trí từ bậc tam cấp, bước qua sảnh chính là đến không gian phòng khách kết hợp phòng thờ. Đây là lối sắp xếp không gian nội thất ở hầu hết các mẫu nhà cấp 4 của người dân nước ta. Phòng khách là nơi trang trọng, thiết kế lịch sự để tiếp đón các vị khách quý. Vì vậy khi đặt phòng thờ kết hợp phòng khách cũng là điều hết sức hợp lý. Không gian vừa sang trọng và có phần uy nghiêm. Kiến trúc sư Angcovat đã nghiên cứu hướng ban thờ và hướng cửa chính trùng nhau, hợp với tuổi và mệnh của gia chủ với mong muốn gia đình chủ đầu tư gặp nhiều điều tốt lành trong cuộc sống. Như vậy, với mẫu nhà cấp 4 đẹp ở Hải Phòng chi phí vừa phải, công năng sử dụng hợp lý và tiện nghi chắc chắn sẽ làm hài lòng nhiều quý khách hàng. Hãy cùng chúng tôi lắng nghe một số phản hồi của chính chị Hà sau khi công trình đã được hoàn thiện và đi vào sử dụng 2 năm vừa qua.

+

PHẢN HỒI CỦA CHỦ ĐẦU TƯ SAU KHI NGÔI NHÀ CẤP 4 ĐẸP Ở HẢI PHÒNG 150M2 HOÀN THIỆN VÀ ĐI VÀO SỬ DỤNG

+

Còn nhớ ngay khi nhận được yêu cầu thiết kế nhà của gia đình chị Hà, anh em kiến trúc sư chúng tôi có dịp về tận nơi để khảo sát hiện trạng khu đất và lấy yêu cầu đề bài. Về tận nơi chúng tôi tiến hành đo đạc và lên ý tưởng thiết kế mặt bằng và tư vấn phương án làm móng cho gia chủ. Đó là một bài toán không phải khó nhưng cũng không hề đơn giản nếu như kiến trúc sư tư vấn là người còn ít kinh nghiệm trong nghề. Móng hiện trạng nhà chị Hà nằm trên taluy dốc nên phải làm móng giật cấp. Thực tế trong quá trình thi công xây dựng, nếu gặp bất cứ vấn đề kỹ thuật nào mà cả chủ nhà và thợ thi công không giải quyết được đều có thể liên hệ với đội ngũ kỹ sư, kiến trúc sư chúng tôi để được tư vấn, hỗ trợ. Ban đầu khi gặp tình huống đó cả gia chủ và đội thợ hết sức lo lắng chưa tìm ra phương án xử lý, chị Hà ngay lập tức để kết nối với đơn vị tư vấn thiết kế. Sau khi anh em kỹ sư Angcovat thảo luận bàn bạc đưa ra phương án xử lý móng vừa chắc chắn vừa tiết kiệm đó là làm móng giật cấp. Móng giật cấp có nghĩa là móng sẽ được chia ra 2 phần ở 2 cos khác nhau, phía sau thấp và phía trước cao, có giằng ngang ở từng cos. Dưới sự chỉ đạo của đội trưởng cũng như sự tư vấn chi tiết của an hem kết cấu sau hơn một tháng thi công đã xử lý xong được phần móng phức tạp lên được mặt bằng cos 0.

+

 tư vấn xử lý móng cho công trình nhà cấp 4 đẹp ở hải phòng

+

Tư vấn phương án xử lý móng trong thiết kế mẫu nhà cấp 4 đẹp ở Hải Phòng

+

Ngay sau khi xử lý được những vướng mắc về mặt kỹ thuật, chị Hà rất vui mừng và gọi điện cảm ơn anh em chúng tôi. Chị tâm sự với chúng tôi rằng: “Chị gọi điện cảm ơn đội ngũ kiến trúc sư, kỹ sư Angcovat luôn nhiệt tình giúp đỡ khách hàng, xử lý các vấn đề chuyên môn giúp gia đình chị, mặc dù hồ sơ thiết kế đã hoàn thành nhưng bất cứ khi nào gặp phải vướng mắc trong quá trình chuyên môn thì anh em các chú đều giúp đỡ chị. Thực ra một hợp đồng thiết kế chưa tới 20 triệu mà được tư vấn xử lý nhiều tình huống kỹ thuật nên chị đánh giá trước hết về mặt chuyên môn là rất tốt, sau nữa là chị rất hài lòng về cách chăm sóc khách hàng. Nhất định chị sẽ giới thiệu bà con, anh em họ hàng và bạn bè hàng xóm về dịch vụ thiết kế nhà ở, biệt thự của công ty kiến trúc Angcovat. Chúc công ty làm ăn ngày càng phát đạt, mở rộng quy mô và thiết kế nhiều công trình kiến trúc đẹp!”.

+

phản hồi tích cực của chủ nhà về ngôi nhà cấp 4 đẹp ở hải phòng sau khi thi công hoàn thiện

+

Ghi nhận những phản hồi của chị Hà về thiết kế mẫu nhà cấp 4 đẹp ở Hải Phòng

+

Thực tế công trình nhà cấp 4 đẹp ở Hải Phòng diện tích 150m2 đã được hoàn thiện và đi vào sử dụng được gần 3 năm, nhưng tới nay chất lượng công trình cũng như tính thẩm mỹ của phần ngoại thất vẫn được đảm bảo. Chia sẻ với chúng tôi chị Hà cho biết việc thi công ngôi nhà cũng rất suôn sẻ từ kết cấu cho tới kiến trúc công trình. Toàn bộ hình dáng, tỷ lệ kiến trúc cho tới vật liệu cơ bản đều được chủ nhà tuân thủ theo đúng chỉ định của kiến trúc sư trong bộ hồ sơ thiết kế nhà. Sau khi nhận được sản phẩm thiết kế, chị Hà đã có những phản hồi tích cực và nhanh chóng bắt tay vào thuê đội thợ thi công, tiến hành triển khai xây dựng. Những lời khen, lời cảm ơn của gia đình chị Hà dành cho anh em kiến trúc sư chúng tôi thực sự là nguồn động viên tình thần vô cùng to lớn, giúp chúng tôi không ngừng nỗ lực, tư duy sáng tạo và yêu nghề hơn!

+

Vẫn biết rằng để tạo ra một công trình kiến trúc đẹp, tuân thủ đúng từng chi tiết bản vẽ, ý tưởng của kiến trúc sư thì phụ thuộc rất nhiều vào công sức cũng như tâm huyết của cả chủ đầu tư và thợ thi công. Thông thường gia chủ thường thuê những đội thợ thi công ở địa phương mình triển khai một phần vì thuận tiện trong di chuyển, sinh hoạt cũng như chi phí xây dựng. Tuy nhiên để đảm bảo công trình được đảm bảo cả yếu tố thẩm mỹ, chất lượng thì đòi hỏi phải là đội ngũ thợ tay nghề cao, làm việc hiệu quả và trung thực trong công việc.

+ + +
+ + + + + +
+
+ + + + +
+ + + + +
+

Trả lời

Email của bạn sẽ không được hiển thị công khai.

+ +

+

+ +

+ +
+
+ +
+ +
+ + +
+ + + +
+ + + + + + + + + +
+
+
+
+ + Facebook Messenger +
+
+
+ Chat với chúng tôi qua Zalo +
+ +
+
+ Gọi ngay +
+ + + + + +
+ + +
+
+ +
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/cache/wp-rocket/localhost/2022/02/13/thuc-te-mau-nha-cap-4-dep-o-hai-phong-dien-tich-150m2-da-thi-cong-va-hoan-thien-tc510098/index.html_gzip b/wp-content/cache/wp-rocket/localhost/2022/02/13/thuc-te-mau-nha-cap-4-dep-o-hai-phong-dien-tich-150m2-da-thi-cong-va-hoan-thien-tc510098/index.html_gzip new file mode 100644 index 0000000000000000000000000000000000000000..0cb797289590af94fbeb00249de729eac96d52e2 GIT binary patch literal 22874 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 + + + + + + + + + +Tư vấn chi phí xây nhà phố 5 tầng 60m2 tuyệt đẹp miễn chê NP621070 – Nội thất – kiến trúc An Việt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+ +
+
+ + + + +
+
+
+
+ + +

Tư vấn chi phí xây nhà phố 5 tầng 60m2 tuyệt đẹp miễn chê NP621070

+
+ + +
+
+ + +
+
+
+ + +

Thời gian gần đây chúng tôi nhận được nhiều câu hỏi liên quan tới chi phí xây nhà 5 tầng 60m2 ở các thành phố lớn, khu đô thị ngoại thành Hà Nội. Cùng với sự quan tâm đó, anh Tùng ở Gia Lâm có gọi điện cho kiến trúc sư Angcovat để nhờ chúng tôi tư vấn về chi phí làm nhà 5 tầng diện tích 60m2. Sau khi nghe chúng tôi tư vấn sơ bộ về kinh phí thực hiện phù hợp với phong cách kiến trúc và công năng sử dụng của gia đình mình. Anh Tùng quyết định lựa chọn Angcovat là đơn vị tư vấn thiết kế nhà phố 5 tầng cho gia đình mình. Được biết đây là 2 công trình đặt cạnh nhau có diện tích tương đồng nhau (60m2) và là của 2 bố con anh Tùng. Cùng chúng tôi tìm hiểu kỹ hơn về kiến trúc cũng như chi phí xây nhà phố 5 tầng diện tích 60m2 mái bằng ở Gia Lâm nhé!

+

BẢNG THÔNG TIN ĐẦU VÀO ĐỂ TÍNH CHI PHÍ XÂY NHÀ 5 TẦNG 60M2 Ở GIA LÂM – HÀ NỘI

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
    +
  • Mã biệt thự
  • +
+
+

 NP621070

+
+
    +
  • Số tầng
  • +
+
+

 05

+
+
    +
  • Chủ đầu tư
  • +
+
+

 Ông Nguyễn Thanh Tùng

+
+
    +
  • Địa Chỉ
  • +
+
 Gia Lâm – Hà Nội
+
    +
  • Mặt tiền
  • +
+
+

 5m

+
+
    +
  • Chiều sâu
  • +
+
+

 12m

+
+
    +
  • Kích thước ô đất
  • +
+
 60m2
+
    +
  • Kiến trúc sư thiết kế
  • +
+
+

 Kiến trúc sư Angcovat

+
+
    +
  • Năm thi công
  • +
+
+

2020

+
+
    +
  • Kinh phí đầu tư dự kiến
  • +
+

Khoảng 1.9 tỷ/căn
+
    +
  • Thông số diện tích, Công năng
  • +
+
+

– Diện tích: 60m2/sàn

+

– Thông số diện tích, công năng của nhà 1:

+

+) Tầng 1: sân trước 7,8m2; khách bếp 31,1m2; sảnh thang 7,4m2

+

+) Tầng 2: ban công 6,2m2; phòng ngủ 1 32,1m2; wc 4,9m2; sảnh thang 3,3m2

+

+) Tầng 3: ban công 3m2; phòng ngủ 2 32,1m2; wc 4,9m2; sảnh thang 3,3m2

+

+) Tầng 4: ban công 3m2; phòng ngủ 32,1m2; sảnh thang 3,3m2; wc 4,9m2

+

+) Tầng 5: sân chơi và phơi 23,7m2; phòng thờ 11,5m2; sảnh thang 6,7m2

+

– Thông số diện tích, công năng của nhà 2:

+

+) Tầng 1: sân trước 8,4m2; khách bếp 27,6m2; sảnh thang 11m2, thông tầng 3,4m2

+

+) Tầng 2: phòng ngủ 29,3m2; sảnh thang 4,9m2; wc 5,9m2

+

+) Tầng 3: ban công 2m2; phòng ngủ 29,3m2; sảnh thang 4,9m2; wc 5,9m2

+

+) Tầng 4: ban công 4,1m2; phòng ngủ 1 29,3m2; wc 5,9m2; sảnh thang 4,9m2

+

+) Tầng 5: sân chơi phơi 23,7m2; phòng thờ 13m2; sảnh thang 9,7m2

+
+

BẢNG THỐNG KÊ VẬT TƯ CHI PHÍ XÂY NHÀ 5 TẦNG 60M2 Ở PHỐ

+

– Diện tích sàn 1 sàn: 60m2

– Diện tích tổng ( Bao gồm sảnh, mái): 324m2

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TTVật tư Tổng  Đơn vị  Đơn giá  Thành tiền 
1Cát mịn          155.58 m3              120,000.00          18,669,553.92
2Cát Vàng            64.92 m2              150,000.00            9,737,301.60
3Dây thép          267.72 kg                25,000.00            6,692,923.08
4Đá 1×2            96.50 m3              190,000.00          18,335,252.02
5Đá 4×6              6.64 m3              160,000.00            1,061,973.50
6Đinh          139.78 kg                20,000.00            2,795,554.94
7Gạch chỉ 6,5×10,5×22     73,929.74 Viên                  1,500.00        110,894,616.48
8Thép tròn D<10       6,421.75 Tấn                11,800.00          75,776,619.23
9Thép tròn 10<D<18       3,527.54 Tấn                11,800.00          41,625,013.54
10Thép tròn D>18       5,453.18 Tấn                11,800.00          64,347,575.73
11Xi măng      40,512.21 kg                  1,800.00          72,921,981.04
12Đá trang trí            51.71 m2              550,000.00          28,440,720.00
13Gạch lát nền, ốp vs          300.34 m2              250,000.00          75,085,347.60
14Cầu thang             68.00 m           3,500,000.00        238,000,000.00
15Sơn lót          256.61 m2              100,000.00          25,660,800.00
16sơn phủ          484.70 m2                80,000.00          38,776,320.00
17Ventolít       2,106.00 kg                50,000.00        105,300,000.00
18Xi măng trắng            64.80 kg                  3,000.00               194,400.00
19Cửa             90.72 m2           2,000,000.00        181,440,000.00
20Hệ vì kèo  Trọn gói         64,800,000.00          64,800,000.00
21Điện  Trọn gói         77,760,000.00          77,760,000.00
22Nước  Trọn gói         51,840,000.00          51,840,000.00
23Nhân công324 m2           1,300,000.00        421,200,000.00
 Cộng        1,731,355,952.67
 Chi phí khác           173,135,595.27
 Tổng        1,904,000,000.00
+

 Bằng chữ: Một tỷ chín trăm linh tư triệu đồng

+

Giá trị tạm tính:

+

* Đơn giá trung bình xây dựng cho công trình này: 5.876.543 ( Triệu/m2)
* Trường hợp chỉ làm vì kèo lợp ngói, đóng trần chi phí là: 1.713.600.000,00
* Trường hợp đổ bê tông mái bằng và mái dốc, chi phí là: 2.094.400.000,00

+

Ghi chú: 
* Thông số khối lượng tính toán trên chỉ mang tính tham khảo
* Đơn giá vật tư ở mức hoàn thiện cơ bản trung bình
* Đơn giá trên là đơn giá chủ đầu tư trực tiếp thi công
* Chi phí khác: Đào móng, lấp cọc, ép cọc, phát sinh công,….= 10- 15% chi phí tổng

+

Chú ý:

+

+) Bạn để lại diện tích nhà dự tính xây dựng và địa chỉ email phía bình luận ( Comment) bên dưới mỗi bài viết. 
+) Chúng tôi sẽ tính toán và gửi đến bạn bảng chi phí xây dựng dự kiến cho gia đình mình.

+

 VỊ TRÍ LÔ ĐẤT ẢNH HƯỞNG TỚI CHI PHÍ XÂY NHÀ 5 TẦNG 60M HIỆN ĐẠI ĐẸP

+

chi phí xây nhà 5 tầng 60m2 giá rẻ

+

 Chi phí xây nhà 5 tầng 60m2 ảnh hưởng bởi vị trí lô đất

+

Sau khi nhận được yêu cầu tư vấn thiết kế và tư vấn chi phí xây nhà 5 tầng 60m2 hiện đại của gia đình anh Tùng, chúng tôi có dịp tư vấn thiết kế cho gia đình anh bằng cách mời anh trực tiếp đến văn phòng thiết kế của công ty tại Hà Nội. Do vị trí cũng khá gần, thuận lợi cho việc đi lại và di chuyển nên anh Tùng và gia đình đã trực tiếp đến văn phòng làm việc của chúng tôi, gặp gỡ và trao đổi với kiến trúc sư về những mong muốn, nhu cầu thực hiện ngôi nhà của gia đình mình. Anh chị sở hữu mảnh đất kích thước 11x13m, có 1 mặt tiền ở Gia Lâm – Hà Nội. Được biết đây là mảnh đất của 2 bố con anh Tùng, nên anh mong muốn xây dựng 2 ngôi nhà phố liền kề nhau sở hữu hình khối kiến trúc tương đồng nhau, vừa để tạo sự đặc biệt, lôi cuốn ánh mắt người nhìn vừa là để thể hiện quyền sở hữu, sự gắn bó của 2 cha con trong gia đình. Vị trí đất có 1 mặt tiền, tiếo giáp với đường giao thông. Gia Lâm là một quận huyện thuộc ngoại thành Hà Nội, hiện nay còn quỹ đất tương đối rộng rãi, tuy vậy giá thành đất ngày càng tăng cao do nhu cầu chuyển dịch kinh tế, tư tưởng sống ở ngoại thành không bị ngột ngạt khói bụi và chật chội như ở trong nội thành. Vì thế không ít chủ đầu tư lựa chọn xây dựng nhà cho gia đình mình là nơi để ở hoặc làm nơi nghỉ dưỡng ở các quận huyện ven đô, có khoảng cách không quá xa so với trung tâm thành phố. Cũng vì xu hướng đó mà giá đất tại các địa bàn xung quanh ngoại thành thủ đô ngày càng tăng cao. 

+

 Đối với việc xây dựng nhà cửa, vị trí xây dựng nhà ở vô cùng quan trọng, đặc biệt là vần đề vi trí xây dựng nhà: Phải sao cho hợp lý với kiến trúc, công năng, phải phù hợp với phong thủy xây dựng cho ngôi nhà. Phong thủy trong việc lựa chọn vị trí xây dựng thiết kế nhà 5 tầng 60m2 được áp dụng với nguyên tắc: Phù hợp với nhu cầu sử dụng, và điều kiện kinh tế của từng gia đình. Angcovat là đơn vị chuyên thiết kế nhà phố, biệt thự cho khách hàng trên khắp các tỉnh thành cả nước. Các công trình nhà ở lớn, cao tầng đồ sộ hoặc các mẫu nhà biệt thự vườn 1 tầng ở nông thôn. Từ kiến trúc hiện đại đơn giản cho tới kiến trúc cổ điển hay tân cổ sang trọng, đẳng cấp. Bạn có thể tham khảo rất nhiều mẫu biệt thự đẹp cũng như mẫu nhà phố của chúng tôi trên website angcovat.vn. Với kinh nghiệm hơn 10 năm trong nghề, làm việc trong lĩnh vực tư vấn thiết kế, thi công trọn gói chúng tôi nhận được nhiều tình cảm yêu mến của quý khách hàng trên khắp mọi miền đất nước. Vì vậy chúng tôi có điều kiện tiếp xúc gặp gỡ với nhiều khách hàng có nhu cầu tư vấn thiết kế khác nhau trên các lô đất đặt ở khắp mọi nơi, từ nhà phố tới nhà ở quê, nhà trong ngõ hay nhà ở mặt phố. Và cũng rất đa dạng kích thước, từ nhà ở diện tích nhỏ 30,40,50,60m2 kiểu nhà phố cho tới các mẫu nhà biệt thự 1,2,3 tầng sở hữu diện tích khủng từ 100-300,400m2. Với kinh nghiệm lâu năm như vậy, với mẫu thiết kế nhà phố 5 tầng 60m2 của gia đình anh Tùng không thể làm khó được KTS Angcovat. Chúng tôi không chỉ tư vấn về kiến trúc mà cả về công năng sử dụng, điện nước, kết cấu và miễn phí về phong thủy, bảng khái toán xây dựng. 

+

Thực tế, gia đình anh Tùng sở hữu mảnh đất vô cùng đẹp, bằng phẳng, ở vị trí đắc địa, mặt tiền rộng rãi và đây là một mẫu nhà phố khá đắt đỏ theo như đánh giá của thị trường địa ốc hiện nay. Chính vì có vị trí thuận lợi gần đường lớn nên quá trình thiết kế hoặc thi công xây dựng nhà ở sẽ dễ dàng hơn so với các mẫu nhà phố ở trong ngõ nhỏ ở nội đô. Điều này ảnh hưởng không nhỏ tới chi phí xây nhà 5 tầng 60m2 mà chúng tôi đang khái toán và tư vấn cho anh Tùng. Hiện nay với giá nhân công và vận chuyển nguyên vật liệu được đánh giá dựa vào vị trí thi công. Với những mẫu nhà phố trong ngõ nhỏ quá trình vận chuyển nguyên vật liệu, biện pháp thi công khó khăn hơn so với những ngôi nhà phố nằm gần đường lớn, thời gian thi công vì thế cũng kéo dài hơn so với việc triển khai thưc hiện nhà có ngõ rộng rãi. Anh Tùng may mắn sở hữu lô đất mặt tiền rộng rãi, hơp phong thủy và rất dễ dàng triển khai xây dựng. Bảng khái toán bên trên cho chi phí xây nhà 5 tầng 60m2 của anh Tùng đã tính tới vị trí thực hiện. Ngoài ra vị trí xây dựng cũng ảnh hưởng tới giá vật tư và nhân công từng vùng miền. Đương nhiên các loại vật tư và giá nhân công thực hiện ở các thành phố lớn như Hà Nội, Sài Gòn sẽ đắt đỏ hơn so với các công trình thực hiện ở nông thôn và các tỉnh thành khác. Dự toán xây dựng 1 mẫu nhà 5 tầng 60m2 hết khoảng 1,9 tỷ đồng. Lưu ý đây là chi phí hoàn thiện ngoại thất chưa bao gồm chi phí mua sắm nội thất và vật dụng tiện nghi sử dụng trong nhà.

+

 CHI PHÍ XÂY NHÀ 5 TẦNG 60M2 PHỤ THUỘC VÀO HÌNH KHỐI KIẾN TRÚC THIẾT KẾ 

+

chi phí xây nhà 5 tầng 60m2 hợp lý

+

 Chi phí xây nhà 5 tầng 60m2 phụ thuộc vào phong cách kiến trúc lựa chọn

+

 Đối với những mẫu biệt thự đẹp sở hữu 2,3 mặt tiền thì mẫu nhà phố 5 tầng chỉ sở hữu một mặt tiền duy nhất. Vì vậy kiến trúc của ngôi nhà tập trung phần lớn vào mặt tiền. Mỗi một ngôi nhà sở hữu một trường phái kiến trúc khác nhau có thể là hiện đại, cổ điển hoặc tân cổ. Thông thường với các mẫu nhà phố diện tích nhỏ thường được lựa chọn theo phong cách hiện đại đơn giản hoặc tân cổ sang trọng. Tùy từng phong cách kiến trúc mà chi phí xây nhà dao động thay đổi theo. Như các bạn đã biết, mẫu nhà kiểu cổ điển hoặc tân cổ điển được thiết kế theo kiểu sang trọng, đồ sộ với các chi tiết tiểu tiết nhỏ hoa văn họa tiết rất chi ly và cầu kỳ. Vì vậy chi phí nguyên vật liệu cũng như chi phí vật tư, nhân công cũng tăng theo. Riêng đối với kiến trúc hiện đại, đa phần sở hữu các mảng miếng hình khối phẳng, chi tiết phào chỉ đơn giản, đề cao giá trị công năng sử dụng và tạo không gian mở thông thoáng nên chi phí xây nhà vì vậy cũng giảm hơn nhiều so với thi công các mẫu biệt thự cổ điển hoặc tân cổ điển.

+

Đối với những ngôi nhà có 2, 3 mặt tiền,… thì có lẽ việc thiết kế, xây dựng cũng tốn kém, phức tạp hơn. Tuy nhiên, lại dễ dàng tạo nên sức hút, sự cuốn hút cho mẫu thiết kế nhà 5 tầng 60m2 đẹp này nhờ mặt tiền. Thế nhưng, đối với thiết kế nhà phố 1 mặt tiền, thì việc thiết kế mặt tiền tuy có tiết kiệm chi phí, công sức thực hiện hơn, nhưng lại khó khăn trong việc tạo nên sức hút kiến trúc cho ngoại thất của ngôi nhà. Đối với mẫu thiết kế nhà 5 tầng 60m2, vì chỉ có 1 mặt tiền, nên không gian kiến trúc của ngôi nhà được ưu tiên hàng đầu về tính thẩm mỹ, cách sử dụng màu sắc, vật tư hoàn thiện để mang lại cho mặt tiền ngoại thất ngôi nhà vẻ đẹp ấn tượng và độc đáo nhất. Yêu cầu về sự sáng tạo, tư duy thẩm mỹ đối với các mẫu nhà phố 5 tầng 60m2 một mặt tiền càng đòi hỏi cao hơn. Bởi vẻ đẹp thu hút người nhìn tập trung vào mặt tiền chính. Hơn thế đây là công trình đặc biệt, bởi nó là do 2 ngôi nhà liền kề với nhau, sở hữu kiến trúc mặt tiền giống nhau. Vì vậy đòi hỏi KTS phải vận dụng sự linh hoạt, tư duy thẩm mỹ về hình khối, màu sắc và xử lý không gian thật tốt mới đáp ứng được yêu cầu của chủ đầu tư.

+

Mẫu nhà phố 5 tầng diện tích 60m2 được chúng tôi thiết kế theo trường phái hiện đại, và gam màu chủ đạo là gam màu trắng. Màu trắng được biết tới là gam màu kinh điển không chỉ trong kiến trúc mà cả trong hội họa, nó được ứng dụng ở hầu hết các công trình nhà hiện đại cho tới cổ điển và tân cổ điển. Màu trắng đại diện cho sự tinh khôi, thuần khiết nhất, nó là gam màu trung tính, dễ dàng kết hợp với các gam màu khác để tạo sự nổi bật cho tone màu kia lên. Chính vì thế nó thường được sử dụng làm tone màu nền hoặc chiếm chủ đạo trong một ngôi nhà. Để cho người nhìn có chiều sâu hơn về ngôi nhà, không gian rộng lớn hơn so với thực tế thì việc sử dụng màu trắng làm gam màu chủ đạo là hoàn toàn phù hợp. Màu trắng được bao phủ toàn bộ ngoại thất mẫu nhà 5 tầng 60m2 và cả các chất liệu cửa chính, cửa sổ cũng đều được sơn bằng màu trắng. Câu hỏi đặt ra rằng vậy có quá đơn điệu hay không? Hoàn toàn không bạn nhé! Màu trắng là gam màu dễ sử dụng trong mọi phối cảnh và nhờ có sự khéo léo tạo khối, vận dụng ánh sáng linh hoạt cũng như tô điểm thêm một số gam màu đối nghịch vào bức tranh tổng thể, thì ngôi nhà hoàn toàn sáng sủa và bắt mắt. Màu đen sẽ đươc lựa chọn trong trường hợp này. Trắng và đen là 2 gam màu đối nghịch nhưng khi cùng thể hiện trong một tác phẩm kiến trúc thì nó lại giữ vai trò tô điểm nhau lên, và tạo thành tổng thể thống nhất không thể tách rời. Màu đen được sử dụng làm lan can ban công, làm lam trang trí chống nóng cho sân thượng. Màu đen tuyền là gam màu gợi lên sự tò mò, bí hiểm nên vô hình chung sẽ rất lôi cuốn người nhìn. 

+

tư vấn chi phí xây nhà 5 tầng 60m2

+

 Chi phí xây nhà 5 tầng 60m2 phụ thuộc vào vật liệu lựa chọn

+

CHI PHÍ XÂY NHÀ 5 TẦNG 60M2 HIỆN ĐẠI PHỤ THUỘC VÀO VẬT LIỆU HOÀN THIỆN NGOẠI THẤT 

+

Không phải ngẫu nhiên mà các mẫu nhà xây cùng diện tích, cùng vùng miền, thời điểm, cùng phong cách kiến trúc lại có chi phí hoàn toàn khác nhau. Điều này phụ thuộc vào vật liệu hoàn thiện ngoại thất ngôi nhà. Vật liệu hoàn thiện ở đây gồm có những gì? Đó là cửa, cổng, lan can ban công, gạch ốp, đá trang trí,… Trao đổi với chúng tôi anh Tùng mong muốn sở hữu mẫu nhà 5 tầng 60m2 có chi phí khoảng 2-2,5 tỷ đồng để hoàn thiện ngoại thất, anh cần chúng tôi tư vấn những vật liệu ở mức khá, chi phí ban đầu bỏ ra có thể lớn nhưng về sau này ngôi nhà sẽ có tuổi thọ cao, bền đẹp theo thời gian và hạn chế ở mức tối đa chi phí sang sửa hay bảo hành ngôi nhà. Chính vì thế nhìn vào mẫu nhà 5 tầng 60m2 mang phong cách kiến trúc hiện đại nhưng vẫn thể hiện được nét sang trọng, bề thế và lịch lãm. Điều này không chỉ nhờ vào cách tạo hình, cách phối màu mà còn phụ thuộc vào vật liệu hoàn thiện.

+

Lan can ban công được sử dụng toàn bộ bằng lan can sắt sơn tĩnh điện màu đen. Như đã phân tích, màu đen giúp tô điểm thêm cho bức tranh tổng thể về mẫu nhà 5 tầng 60m2 hiện đại ở Gia Lâm. Loại lan can bằng sắt cũng được sử dụng phổ biến ở các mẫu nhà phố hay biệt thự, hiện đại hay tân cổ. Nó mang vẻ đẹp lịch lãm, tinh tế và có phần độc đáo. Khác hẳn so với trước kia, khi xây nhà sử dụng lan can ban công xây kín bằng gạch đá hay các vật liệu truyền thống thông thường khác. Nhìn vào tổng thể mặt tiền mẫu nhà phố 5 tầng 60m2 không có cảm giác bị chật chội mà ngược lại rất thoáng đãng, rộng mở và có tính kết nối với thiên nhiên.

+

Toàn bộ hệ cửa chính, cửa sổ của mẫu nhà 5 tầng hiện đại của anh Tùng được sử dụng là cửa kính pano gỗ. Đây là cửa mang phong cách hiện đại, được sử dụng ở hầu hết các gia đình hiện nay. Cửa kính giúp người trong nhà dễ dàng quan sát bên ngoài và thu hút ánh sáng mặt trời rất tốt. Nhất là những công trình nhà phố cần ánh sáng cho không gian bên trong không bị chật hẹp và thoáng đãng hơn. Cửa kính cũng rất dễ vệ sinh, ít bị ảnh hưởng bởi các điều kiện thời tiết cực đoan hay vị sinh vật phát triển như nấm mốc. Do vậy ngày nay các công trình nhà ở sử dụng vật liệu cửa kính khung gỗ là chủ yếu. 

+

Cửa cổng ngôi nhà là điểm đáng chú ý trong mẫu thiết kế nhà phố 5 tầng hiện đại. Được thiết kế đặc biệt với những hoa văn đẹp mắt, tinh xảo và sơn màu vàng bắt mắt. Bộ cửa bằng sắt này có giá thành tương đối lớn, tôn lên vẻ đẹp sang trọng và bề thế của ngôi nhà. Tóm lại chi phí xây nhà 5 tầng 60m2 của gia đình anh Tùng ở Gia Lâm được chúng tôi khái toán khoảng 1,9 tỷ đồng/ căn. Và để được báo giá chi tiết cụ thể khối lượng thi công, đơn giá vật tư, nhân công,… bạn có thể lựa chọn gói hồ sơ dự toán công trình của chúng tôi. Hoặc nếu bạn muốn nhận bảng khái toán chi phí công trình nhà ở của gia đình mình, vui lòng liên hệ với chúng tôi qua số Hotline, hoặc để lại bình luận phía dưới mỗi bài viết, chúng tôi sẽ tính toán và gửi lại bạn.

+

BỐ CỤC MẶT BẰNG CÔNG NĂNG SỬ DỤNG MẪU THIẾT KẾ NHÀ 5 TẦNG 60M2 HIỆN ĐẠI

+

Mặt bằng công năng sử dụng của mẫu thiết kế nhà 5 tầng 60m2 phong cách hiện đại được bố cục khá hợp lý. Với không gian kiến trúc mới mẻ, ấn tượng thì công năng sử dụng của ngôi nhà mới là điều được chủ đầu tư quan tâm đầu tiên khi chuẩn bị thiết kế cũng như xây dựng công trình này.

+

chi phí xây nhà 5 tầng 60m2 3 phòng ngủ

+

 Mặt bằng tầng 1: Mẫu thiết kế nhà 5 tầng 60m2 hiện đại

+

Không gian sử dụng của toàn bộ tầng 1 được tận dụng làm không gian sử dụng chung cho toàn bộ gia đình bao gồm phòng khách, phòng bếp ăn, và sảnh thang, wc. Bên ngoài là không gian sân trước để cac phương tiện đi lại như xe máy, xe đạp.Đây là một trong những cách bố trí không gian sử dụng thường thấy trong các mẫu thiết kế nhà 5 tầng 60m2 phong cách hiện đại. Mặc dù 2 ngôi nhà riêng biệt nhưng không gian sử dụng khá tương đồng nhau.

+

chi phí xây nhà 5 tầng 60m2 có công năng hợp lý

+

 Bản vẽ mặt bằng tầng 2 mẫu thiết kế nhà 5 tầng 60m2

+

Mặt bằng công năng sử dụng tầng 2 của mẫu thiết kế nhà 5 tầng 60m2 có cách bố trí công năng sử dụng tương tự nhau. Mỗi tầng đặt được 1 phòng ngủ diện tích khá rộng rãi và 1 phòng WC cho việc sử dụng. Các phòng ngủ ở đều có ban công nhỏ đi ra bên ngoài nên vô cùng thoáng đãng, tự nhiên, phù hợp với thói quen sử dụng và nhu cầu sống của gia đình. Không gian các phòng sử dụng trong nhà ống đều cần đề cao tính thoải mái, thoáng đãng, chính vì thế mà bố cục phòng như vậy là khá hợp lý cho việc sử dụng trong ngôi nhà. 

+

chi phí xây nhà 5 tầng 60m2 gồm 1 khách, 3 phòng ngủ

+

 Mặt bằng tầng 3: Mẫu thiết kế nhà 5 tầng 60m2 hiện đại

+

Tầng 3 của mẫu thiết kế nhà phố 5 tầng diện tích 60m2 bao gồm 1 phòng ngủ. Phòng ngủ ở tầng 3 được dành cho diện tích sử dụng rộng hơn. Chính vì thề mà không gian sử dụng trong phòng ngủ được dành diện tích rộng hơn. Phòng ngủ tầng 3 cũng có cửa sổ rông hơn, không gian nội thất bên trong cũng sẽ được bố trí khác so với phòng ngủ tầng 2. 

+

chi phí xây nhà 5 tầng 60m2 có công năng tiết kiệm diện tích

+

  Mặt bằng tầng 4: Mẫu thiết kế nhà 5 tầng 60m2 hiện đại

+

 Lên tới tầng 4 không gian được thiết kế tương tự như tầng 2 và 3. Mỗi tầng gồm có 1 phòng ngủ rộng rãi có ban công, cửa sổ ra bên ngoài vô cùng thoáng mát. Tổng thể quy hoạch nội thất ngôi nhà hoàn toàn phù hợp với sinh hoạt và số lượng thành viên trong gia đình. Kiến trúc hiện đại yêu cầu công năng sử dụng gọn gàng, tiết kiệm diện tích, đáp ứng được yêu cầu của các chủ đầu tư khi sở hữu nhà phố diện tích khiêm tốn.

+

chi phí xây nhà 5 tầng 60m2 giá rẻ ở hà nội

+

 Mặt bằng tầng 5: Mẫu thiết kế nhà 5 tầng 60m2

+

Toàn bộ không gian của tầng 5 được dành cho phòng thờ. Diện tích sử dụng của phòng thờ tương đối rộng rãi. Vị trí đặt phòng thờ cũng trang trọng ở phía cao nhất trong ngôi nhà. Phù hợp với mong muốn và nhu cầu sử dụng của chủ đầu tư.

+

Như vậy, mẫu thiết kế nhà 5 tầng 60m2 hiện đại được hoàn thiện, mọi thắc mắc liên quan đến hồ sơ thiết kế, kĩ thuật thi công công trình này bạn có thể liên hệ trực tiếp với kiến trúc sư của chúng tôi để được tư vấn, hướng dẫn và giải đáp mọi thắc mắc! Các câu hỏi cần giải đáp liên quan tới chi phí xây nhà 5 tầng 60m2 đều được chúng tôi tư vấn tỷ mỉ chi tiết. 

+ + +
+ + + + + +
+
+ + + + +
+ + + + +
+

Trả lời

Email của bạn sẽ không được hiển thị công khai.

+ +

+

+ +

+ +
+
+ +
+ +
+ + +
+ + + +
+ + + + + +
+
+
+ + + + + +
+
+
+ + +
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/cache/wp-rocket/localhost/2022/02/13/tu-van-chi-phi-xay-nha-5-tang-60m2-dep-mien-che-np621070/index-mobile.html_gzip b/wp-content/cache/wp-rocket/localhost/2022/02/13/tu-van-chi-phi-xay-nha-5-tang-60m2-dep-mien-che-np621070/index-mobile.html_gzip new file mode 100644 index 0000000000000000000000000000000000000000..19766c648c088e18624252ce3551957c97ec997c GIT binary patch literal 22457 zcmV)2K+L}%iwFP!000006YafgljO#AAo_VGV*f+3CWhTD7OD!UXLnCGHPd{|1j!LC zHfe8&j0qG9RfTC3Py$f>;CLcrDSS6}eH|9pcC58t?Q%@(YAK6BN%XzGnhsq@Z1eJe z^gp@hoXi9=0aSJMiiOYh}cpO)t{0rZ4gMl~v zz%Vpmy@kMf=K!`kf)d!hwLg7f^}(xaA8g~B?K!aLz%>jV_Sm%t+c$6AnYf9~oUt9n zZn9N*clR};S7CL0<9op#i(G%JGL6Ea=erd)j@;o^Wt=3_je31FnT~2eQy=Db>As9Py?Coywm6Z8n7ffdG4^g0ejCwcz5c&Kgyuu z1`Ntw$?iDc|fT)@3=CviA&>mbHmn2X18-5Jk;K|-ahEUFai-0PG`{S zI>=K7KR)B!E!YBe-ACz@yY7fw? z!3NalPjB9-6VA}~;K=g^TPuL8K1|S_;d}kaj*bkD8w0Sp!m+y|vAeQ;b0Z4FRLz?3`8JBEW6C*FCeK1iTKgn{Bl?rxmXLjbZ4_;tgwh`1G4(ldx6e!0qpO30fqE zuoR}=q3atFYJv@Gt-6Y@A~z2G8R~`&bKM$Dy|pI={Fbz2*4oh4Q>7?sciK1YtC>{SC7-J=~mIXgnLa8!hZQL1VSC9UDM_M?eig)W#?R*`84wN6?e}gN<9R z>lPp&8kYvpH1WShz2G&MYELU#0@>U522j#P^>hS^ED6Oky6gKh7vT&*eI-iYm0oWk zhuBeCY8A+1;Et+5Sc68d1%Es1O}DwGwmO|fQy)kyn#JRbf^W85%LVYQu4NAUtlhX> zy=C{!!O+#38rvTtIu3%1wllPC$L>{c4eUX~bu`%VtUs8!10w`8^}=Wx+C$qltG7B` zyVEr__;wObJO|L^+LH@|9}K$dHqJ)NZm(DE)+`3?c34n z8Nx*L2!+P^L0~Nb0QCu1Z-xWoccUlSlMVi)P|$aWiCPTr3xy)YzFLYNJiP^`1PWX4 zL%RM`&- z1c5#D!JHa*GF{UKOu1NU&lY~Vk|!b|OAH1VX3ZA@&iC>Gjx z-=tv-fm+aBhJWH7tZ6WtD?{J#fTrTgX7(~QsyQC$MI1RBY!>;e7w`a}BXw$|E?cX) zVe<0+Rl& z1tx-&JX`UBJ>^e8pu$Mk3mh$?q${@X^FUuF6(ZnP(9u2^ix>!BEEj5#?;A(qESdGe zmw~oHm8G&8umxgj-<8q~oR$R4xQ%wFW;Jh1S=cCueT>2i@eV`Zd|J{7^M;W@pbdLt*@MLR-?k?hU&Ub!rGHWC=%off*5 zgu1FIoLLlua+!u6+61XWN+LTD0Bfz7!BlPLWyY1U+rIl;=_lf9t*Gd%uj;T-q?2ozxI8umFEhM3*vGXNiNU zKLcnnKH>x|1psm7lW?`!_Gz)ypBjxo)VXen;7}WJR z|KeycRyY&j!L+__)d4{;AgkHP!G9GD*>}JFpgh(*&|=Nse&>}X7MEUzYWbMnfqyWu z18?ZYNm)b6Yu@1e5qW{*&juj7l{z)5Q{QIVvdhQ~T(Eq?NLhFJV_=%M!HADpySAS1 zq+iee*02!!d-9ZM=+!$owq#RlM%;rdx^N8FP80$L2FBfo#+!F{jHY$i zv{0c|7&^Q0R)wDA<-rxTX0BU@@T0XSo)sj}6vL}YICI9vRkhx09KsK8J(n3Ui4~!3 z?0UZY0P_hHg>{LBt#0EGezJyBtG(jPVz5sQ5&`+OFCL0~g5fuBf=f9(Six?!TAfC( z1qSw*$44*@AT2nCcH7fiemDxr07kR6`05F_@p?_L*F<6aNoE1}8u(m-=Qi{cT)s#b z$Dly^9!x*&rA04Ec1}Uq1Q<>&>1eZ1ti0E}9EApzvM+(*iU}WN5N!;-C{B!UXdn)& zC53Nc(`;LXwmhGfNk7wWw0NftBR)UPkw< z-CCa>uCXWOoYk1mS@`NHwrC81_XpuYAVRPPt_sZJjV2PY_CAX+_PVzuY?Sqvm<#BSsbl`;pSpRGpYsfHJJ1`MEzNeF7mm01zs`t7@Z zY*-q8Xa0F0mUQ4CMP%c`O=>X4W_4^;$Ia@vRUNmh<4%<@jI4)+tE?6dhXyzr`@q*c zYER(P><_$_i}x8B>G9K&!JXA^t#1e54KXN}URq^1027>QtGM!hB-b*LI59?~@w%0}4CWQOPZ1C}FfJuP8g*2UABZ}(l_2;74j zSbQ@B7d#N7Iis!e&^@T6rN?2ixb*!n$x6pIn1~CDzXK(*@|XYv*6`vgZ}UQx%(%aC zqdZrI^f?*@nM&WraAXb57n~tX9MIBM(B|8`c_Y8N!#Fv@8@>!iYeULYS~VJY5nu3v z7chB~Ak9SKs>Q;kg_}=r-qf4tcbEZ#{RTvUnxe%$=oo{4Du|{I!b4)^=n;j}4zH|i z(gPtyfn%Ii)G44OTMb-lqPJ35s;@iQ>!Q+7)U7C@QyvDSl;@xfK&%gJ@URB#)}W97 z@%L#+ils3rdQQVkp-@mOyQS7qO^S|y;qI;)xJYl%Vi*;YAxZH5L{GBZB1{M}tv2`& zaKZnA`dn?`3sz@6gfVA=2-ip}0;8QCPDPrVByMy0PllkUa;lk6WhL5r&;xa2rdd=v z#R9c81oPW5+HBA=Z#V?o814I0z7qX0f#!k|)x(_}VV3%?^3{=)*jEgug+_ z%q>OMAc8NZGO)M}CR+R*Y ztL!_JijAcW@NhrSR@XK8o`yc^S*vxPYJc+%8X_`FAETcjd?r)mCu86a?U@hmGhi5c z$p08v2AMYT28Pva$j3aWgSZI>b~Iqa8T6Pqgi&S@FdtJ*EQ2y!h#M;u4Yp+`;yrIl z6UB-v&C=5(^S-kE4ip7JA%)$Yx{V`32Z7{0H~1@*#DC)sH{$3Gzf3nLh&RH@Q+iH) zq{LGu@=qVnCR0)!)QVQ$$lALh-eX(BsLnNp6wAh7&LHAs8-yP_+5-qEuhb@pw1A#y zs4#YFhOyFOz_1x;w4-MePMRo0(`r-|3^h>`tv75R%P?LE{Qzlxk@YpPeV@@K{hCJM zWSYbV$`7DBdX_S+)(*7=R+>ZsZV}FUpGRE0sotOYyrvUZE_x9@mr3&t?52qf!mqf}dJcuNdK z#lV9Ag!L%0CuQRUvqijJFhT`F`4F=L`7wG~)$$45?QS{G|*dq5^jJhkG|>RjXt7R4gO3FXhG+xa-r+*xWRzUVrBj90^k2WD~*6yRol(WYP+K+{YBdLXnM*t1AufLU)uvG|HM@3^qW-oywTZsp8T19lf-RSI-L zPxbksJ*MnFx5|78F)tpnXn*-Ouf@A4Vb-+Li8_V(SrZJ2t_L^%(Bd?GxlogeB<@(8Z+V3;tI%>veOvKz&c@gU zTeAZp$rfEGzxoIxhA{B;($TmQKl@?^NFo-EBF>i_4MgvJW&lKqpkHMP<>5Sdt_x%wW zD!h!;sNx+(gSIM}O%ijhtXmpy5pa5flM9L?RzQk3?%~u91}yqfM@$UYywMlB;WNviTK;4H2Gh%amC= zfSnTRAQK^tajmbXbC!kTvey_eHxm0W48qBg@;vN6cAdmhi`MFW&rOVEJgZk!T1Uqe14NbWdk;>J|F>PXd;j$K z7dfi2DJ(@TW#;TnWisMfpGZp!OX)GH*qcm!BFrK_%|`Qz5sDDcg%sbOfe`fSmF+iA zzW*-!@`oqid%%r$-<#8C>&p9Vov+XGf^x?8XE0GFC63kg$z%`jpL~zK_tod8$N%ji zGuiIx^Z(=F>t_tEapi++TySt!>6onLhGAa$Fw6@MqggtPW?>jy@QUlA}r7u?gdAJ zyAohdxC~N<^4^!fGWIY|Fq$Vpcke%7J12jmj_?A0|F>!V^3slfVcGQDK0aSaJ-3s; zXc0p!p=SBROueQx4!LzyjS`imF(?(alm=}nmddC_*z8ci*8F)D)_E0`zG!~l|@ zUQOI&91d^`T2d(ju8=Jf2BqtPgBpUGac|hI|y- zIw6P38@!P-StLTpT%q@M4ox3}vWTUQhK{lkeT>`~1Vqdz@r&YKA0p3Jw$tSCn5CSDpT+Z}MGcnV-F*W@p^J-@59D|p0h7ttU7lSpzPUE=w zHDPVOdEoVizDj$hUCM6!K~()gRQ>-{RNYW*vE}8KnglR6xk5<>R3D?^G{95VaFIXF zW~`*i97=kDno^+i7VR{Wc>zO@BtvN_TKJSDcnfo&;l3rU9LH8V6Fe!^jYPsG*-Sjo z!3$Etsi-NQV&yP>+4sXy%I0(V$mm(sx5hDYtXJqB24ITMqm<=Xq8~($DRos6f zGIuGULZ=3(nY5T5OX;#?QPWkN*vSk}sO$S)JZAZJh(#+`U-2PzHYDNLY!-=<5qt2y?8CIYh`CzJ?%C-Ek3 zZqzVKOfV3hc7XR-YO8`hFdCL&Hh0a|M!U1oXuZ^EY~U)6*<`!plV^bR`?gnQSQ5`s zpSXGpvnfI=2io3kbT`Z`{L1b=gDD5Ai!&lj6{UfHmz*#Zu8CV$++jl?| zkl!qO6@m5#>uT;kYhJNV$C%bD+w@oM0{^4PS*g8q3Y;UD3v}HgS-`AUGVenDDp^83 zHGiaYjkz{G`rVnEYhx#g?Tpb~;AcP5=6G>=Fy-Rf;~UZ`7v)l!HRf5!t3965M)mU4 zsyRrzh8|oPImPswJQeos0o0be!7vS-v?ynMdTE5Sgfr63Vok2<%EcMMfL})_5hQo? zqXlIrfTl6ayrbQ*CF{lrfkpi?7M z7oZ?ekAPx$jvoLx`DYJw%IWjZ@WofZI6eNvfqPIMe>P*z$v@2Si21+rnD1d8<9BBO zB{@C*d#_9@>H6sO_4UACyU+( zV3dhfV>>6m27vq2WPE!3OVNdsf0$tXFRILj^1DyDh=Lk> z$DYAZJcdp!hW5cdUG4mn`04RaZ6pQ6-Or(=3I47D79wh% z!5zqy8BMf?dFahos7i4Ne~oCsQmZ&0YlIvG%MoEA;y=Qy<&26X#c7j;ek@MJ4`4P= zk6|Lj(Em(Fz4QNmO6>tU&bHYK)B?x=4(Ojg|7D(*q57vUC<)(F{J@R1eed-7KRkS$ z?cT?LHrsvh5by}r<-6>?lka^CuaCbEWBSX7_u0<<2e@qUm+VhYzW?ueoL^d^(DYl# ztN)$7{@^Y&_x-oh^#CkJs|6s0ENC*plX%58+^tHxf{$?1AO4N-*ML?WX`x{It&>l1 zHqjs@O4gSXs3`rKZoe4xRC=(CP*|dv~0Y&@wIJ?EHnzu;Kq$-WrFW(m*yTLNuPyz+1#93Ci){tl_jL z%OQy?g&35=SrAQYDUfe)h8-jK|GmRN9pD`NBw2(JWR@8ZK*(8e2R1QDgjF%WlfaLJX0op(S#R!y`D|C zDtqeEa;TG4kuzvckADb%-#GbC?7h?HKi_4$UwzJLZz)4YMDoaHDHlo%#Sx$b|8N0? zA`^c~ON03QTNuhJyJv^!RQ$DA&H(a6n{91F`dYk`O^YZ;GuM`|opyIKX$r&sEa8@j zuKjkYEBreD4y&k{C4S0NAVyuX>*Zr9qq zJeWzdyswx4%}lFNZ8RFSM&t5*?^QdU^=iA_tgV+DCsqz;?*XbuS2-xwX=QC^=(Da5 zeeJ74p9U7>MYCINHq2V5QHsfC*4!)TTY=R6bb9F-v^w2dw}8IAIh=O2znRs(4or5c zopr0aZZ&I-UMVJ9S#w|h@Z=dYU%X|R?acxfE;pZ@TDvf=>*VV7tK{lt6AwVNYK?NP zZs#!A;u!2)7rn4ft<(BCk=eNx9yhCvj#*vrHZ#)D@!C=G3NFy)r?RlT#D*Tvq~ zf<&v@U2lWR0kPjIMPfH=?)B5>XaQpw?>~ZEXmc_(8}iCpg6CPc3Bm->SRlanFf{yi zU@}KU?F%Cn4E{#7x8ACD%ucOUE*%wW*+mtD5rJO??3EY&1Tc5LRsrWN%dB*c638;CoOzydFx(P*>Uwz{=;f%bkE5!f=T z9aQ;dGaFFO!fwnXzR?A6*RHm}FfCU5UBq3dRc*Gq)poaC>y{IrskkS9;;{)v4wfAx zYk^2Kt(s-#%YHqoA}8Rkieb?T1by2xYmGVdrpSLXWbpJvT6FpBN_AEnWMBcc*XX0P zugphbRgZYuv>Xx@&qOF(A6>lw-RUYjJ^pCQ_Tx);qzU6`7LCB`L!xzcNCef< z=(Ul9=XrOgGO`^W@y0OH)enw!dL<*8Tuno$t{RuY8nc=`tgeH|p-QnP-oeO@fAU3g zc{*={kMVW#sCg+w<@#RjfXC8XfHTFjh!JPFDErgPYxG{L)-4j#wINMwymw{z1DZq2 zuDL+QDNeDQO1O3gYVwzElh?X@Gz#J$?T9)kpk# z|3+BU$>ti|+cMOHzt&oScE#)1IX(W&zIr^c^+rjM@T%Ax7^5KZ&q31!p0m6rj<`7v9B(i{^Xp>g0VHwA^qNP4?vvX-((r8ECg# z?Os{%tQ1;qpbA+&9Y8H6 zFkl*ykGVgX?~_C*xMnh;k#C>uZ_9Q1*FAFBDG?Lg&IvAB2jet9;u|bm_l06J=trM& zDJe4%bBRP+rj}?KoP2yFdny*P+qGV|Q){=H+0u4D#aw@TmF@C=)+g2)E~S4%iWw9~ zKL*e|eU%5HDScMz9?UX@Hvx*GDy8)bi|MC1;!fv@DlB%m($CPl>OT zX!;pWcX;xQa?gGi2t-Zn?B&>=V7=#`gdCnSvHLP%fHFrXr^lZog=yE&$J0L$#;H%dNG%5%>Gk=E@~ za=DgqOIbveNym|^a>G6ipAt0rB=9q`v2j~4k3XY~`BkoRve&?&Ik@ zJO%mV2lVIvemhOVp{*s?wC%>E--S&#v`gg7O$tQcAZd;(a_0+zE8TfR-<1}*ptb#= zPJ@WCU|l9JFS+L>zvt!}nz-EX^_?|SMU(BEx$A>+zbK>kf1s3sKc3hn5RoX&a(p@5 zbc;l856aQW&t{nDFGNns{sLr_^p&ow&Kh_suX!~gBC%s2CkneH(#-Cvwk?2m9>B<^ z^E#MgMFb;M4d1shp`AJSSQn^*@Atp_L6GIwsc@--LSG+|*7wvsGp~dS#`&fMl*N4e z59T>?;e}e)qfYMQ_#NCSBSa;lcHq(R$4~8p$ z-liB!hSn-}^IxVY0-y0Ij_i=@ZBOidDeU5*tr)m>=W|r)xG`oj1N91H4aO-EY5Qrw z)}Vb)>0XfXO)(DbPKr^dBJ>$d8PPW#f6)#Y zy~X((SE}hGsTk1IgryE!Y{%l=+v5lXR#e71CTs{pMZS{XkSa<5AS~Xw6WqlE1N=OJo{^zOo%?wpVEIB3|A1!i2XgXolM?ni>uZ%aHNqep zsNFA8JUL^V(8NE!kWF%py_a%`L~UW#s+@*H5|eV{6&FxH=FmcsG%VD6I>UV8(6;|B z=QUy^G(Ld$j(_CL-SAdT3DiD<9{maji#v`)A63M|q(tN!vgqU!sF=)-$P7FZmK=vH zD#FBni~v7IF5}76(D^~AFi6VmDAQwi@C_P6|Se zs=Ab*x!D(+RZ%qUd*vWE*xTq2ffWtZjI+$WJpbf3C8|Q(Oi-n>Xg=}g?W`m`9TlA9 zOn}y)X{8`1U4a{o8cPwv@mkz2saYuk`O+dn86-Ax@}34G{&f+k^0^~C&A0Qz$rxPO z30f6C4&TwW$3;%c@IrcmpY=~Up*e2{sQk{!oc*6wZ7U$(iOV--j5+m@*NLv}=Tos~ z7}$=em53Jl{|PW8X<6K$2?g|Mg`_UAyBKAgz$2+B9QuzWcN2UN^ZzvC^|Y?-bKwq( zK-4EO$J;_SuAw*dPr5eLtw-rMldFv*O^P;)gFy(w{txi{ts@iy0e>3v#0!NhzM!2i z;5OG7_i0hYaDAvm1kj2{IWIQp@$qRx6X${`n^YAfaBHAojER{!aQm^BxJ>a)NP*J0 zNX8HjCVXS8*+3SXNNJ8D^v|lA(Z}ETUw#U8_qnlHYC%`C*n+?bg{zm^yPgnbAmvQB zFEQcnF%1!9@oyH8;Dk1gPq=L)HK-&%R7hOU=AD5YKM4c)5NBMqX$4z~vT7#~h+?sp zdlgiJ8*3s^g!h?aB{xYU9_ek!aio8S@;KrEVRoEhCg%H0Jd9uUNBD#RRNIl|0EkzTsLW&y<@M@~~O8s!hqi ziao2fh-U3iX}1@23Y=a8Bm1oe?bKqExOBs{KEba&UH)5)hHl9QKf zGc^aeCA2rTJ<=B$OORuMS`jg!u&8=w$pofwLY}`OC=`7-kIk#to2hQ^^VLc$9;~|l8n}~ zH6t9gO8LU_-{tdrE@|Sn zL^5e!L9tcEkQe9V6kH9mu4?QRS{ce~E*>9}oT|^`mX+T28pf8(S zA3AfJHEyx~N49(a-P7a0+u`TU+&}r>AKqtg;NI&8?2QMf&;Or?xWx2dcc2*F?XoxE zw^aSV?dw8m9N}u#g{*~(HlYCzg3!DC;?OzTxf~)cu|kCG{*yEiN*Z$RVODA&WkEb6ELo&9d>OdGv z!s{ozmbl~SABQ$yj6-bO@?9iUjmLa$1o05W-s$lddc;HEsnifIJO3=T462$%z>D&z zGsoz+(WppQHcA%ya#V_e2EjH88%Qergc~kUd!(;prJkXJCg|wLq2P0sys9GljN!yl zmSr{XbiIAf)Xzfc&X83+A?HZ)Oh~7^2HZL<(A<88Xu=P5LqyeNz$jZjNX>19_4GLF zGE`TSaVs_Ud6Gps7pg{REZ;X)LP_-Lm|!(NN!6>ZamRsq2~m{2$#la>&HQyMX_ zFG*FTi>gfFQH*lJG+{F4=}srl6R{2`mKX5}8R7E+G`eCEs)GDeeh{QCgm=fh;#a?r z%$K5TUhJo^o`_f~K~7E~&5pQ)76o_&O45s5#^9sYjab}~x^d1I3n?p)<5$pEHhVdYDLn<4$CAo;TvulQ$&9lf@gPE& z8WaCM%YvbC5P8QWL}&u}+ANwM%Gh+;ELY6ASW3~PaRd%ee&vZHU{MTm#=Ix8da~hw zImZbow~ntGIR(3hQM&86#_pql;{gN3J1QLfnI#eMw4wmT4XWx;Pi;_>8l*V0d5(b8 z6S@VU_6cMzt#4x$RrRTuz(}lEKIE|&K|nM+l(&o0_E}OsJ2a81QmQJHN2G9wMCtP- zij)fyzGjXxlg?bCTm%g60QaiKl#)0l*K_p6@>Jr#HJ2!ghm)q@wbh}5osu^|b)~K3 z4A~Pt=&W-<^}hN>Y?%V%SGmjjArfVHJVUEUfqSX;^w2m7!19PVf5#IN$TX@FeWmSj zEQ^WegoOCyZhtZOKv>P?m1WBps$wRyp`exXqgFFm5fG7D;)$#aPh@rd6bGDIdmuro zDU&F8;rV5XLgg`jb?KN!m7#SkvkbKKo`9_4zR2f*5r%;)=K(W#eimp!ZO-KZ z`5y&8Ko!Qc0FnWtUDW9k?wEg6Mk5|Rfq5T^E2tj`U8cz<)IE-JsHt+SZ&tsm@t}wv zaz9OvKPA~RhNk8V3P#Q;4RAgm2(?4MvmAxF++c@%FRQ3QCralu(cIA0zT^SnKTv6D z(_>bL5Y$z17bBr^3yutAB?L~JYQ-Xq&c!>~S>j@WGP2R_poD8~^TK>kn48<+d=Y9! zYma;mUS{_dq@>wK&&fJI`Sb-HHyY6sofm^&d|`CTT?2=QN_jAp&H;xG5sgDrpW>{1 z8m0z5m)n~3r{F)=&590Cy`qGI(#YVH^7FHaAXnNEkoHw*Z(2CVL@d&qeQxbVc95P& zNDjQPDHZLf5)SW8Olknf)u-?&W!wo$`tl<;jjdvQH}8xSnv&cu3N(?y9u|n^#)}(> z1H0#rLzty|?lm%iE^d}A(z^uoh~HK>EP0_ zum{z~5|Qkvk@JWa0exY-;~s`z!HZvkVT93SfdTT*0VUkjpwF}NndZ*Enuw`O#@qt! zzg3V{UAkKwQ@olWZF6DpbYgo3OzY_KLE3Y)b2&s@ZID(A^%MiMV{7}&WdnVWNXa4s zKkoHSEcPzD|E-hnJ*3qGtn~2pZ&5A&<=Wgj!W*1xg-wo0r=;n~8Jx(49!3Aru(=S* zA2DwI!mkxh3(lP`+@HNHuugn_mm={EQns*M>Ijsiy{|VWHhZ^1kXnWUHQP%DSHJ zQEswm=uH>hEW@g{wPiP9uP(wJ|AdGmb{m#`qC;Xxn~rRs9nPq-TM$tsoUJ|vTq9cz zx2LO|Ja7&ky)EWni|d1wrb;sra|S*`|C>Btk&{MVH@aNP5iQuhc;H9(g?YRRLQAmyz>lw;mw!N4+Ti(vWV^%rPz4>Pl0X|WJ!G|pC-BB zcb~#KW4RH?=Qf6a^2sE}SDFXN4Lj;P?-w@=NJYw!kT3^H(Q@JOtKfXxnR?i7=Gms) zc2I0~VLMBHi^*Ukt2&`{Ntv28kp_ZTi=YLFDMi?YC`(IV?E3k%#P~$RW1d~fiF5vH zw>E?7?v@&RlXF)pGWdx2NTk`u>6sl$%7U+P=?cr{3fgd4G zNsx|d^9MAikr+7cM`FQ}n~zC;B~BzSJj@tWn^G;#bw)%`at-aJ!9@sM0CD)<4t@6q zvIw^yKat9h8<=vn14$D(RyfZSz72q*n#W~%=poPp>ZrT93QyT-H{+8r9$qrvIVF#$ zjC#wq`l-n`<(9pGy+^&B+5zQa{1+57X|$3G6vSR((W(S~X)sAigw)alm40xxPEGeL zokNZ4&@PJ@H&;_)QowVD$R&~?Tg7h`6ha=4oJEW`B25XW;p0>t7UNwqiyXN}fhzL- z(@q-CZR^;Eg!mK3eelL~DtWmYHc~PsV z@95E&71Kp%`LR+|4nhr76zZ{?O7`yP9J-H_NQf@GCz&E1z4w zS%eUmmBeulDv|$0D2Kv<6mogFny!hfIfL4AeroRba~o8&SQ2gB7*oo^SI@-R3p5;! zB?@~`YV1Cb`UXhpq6y(Dh|M1*`R3_ll=EBprr#>tpJ7;qHYxL!L^>m@;JAF3QtyBz z?uYdK$f}G?tLIHh)oBcuq@TKaYboZ^7)ru@L*bSp)ho`ZY)#2bQx`ns9;I?%WUTNN z!4#k(aI=JFffT+It}1W&=emG1c>rJis8p35fPr;Sv1gGnwT@`t0pmj1v2jg77y^mJ zinJ1?$)jrN%N%; z?Q}u&?>E9p)CH2Y92qN_CubWGDd_W96MUdLSI%uf3IobxpolzAw9fX9V>eUbXX>BR z%k3wnla%y5glUC8-cirlQTiZuvukj9kY0R%`wJyz#1nW?W<|E<&ZkR#a$QvqyomAf zM9RW>2ML|c@!grLO9Z|QuACk4QK})-69H6R;wVEY-)O=(7&$uSga_KPFOu{^TE)Sm z_^O4mIQeMwgnMYxK9rbDH|a{nNg+7Dm<(tCt+m2Gx0XyXKes)Xn<7?5duy` z;xtyo)q=bgR^Tm7&gB}`8r2%o`kwZidrUk)od$j*YMrM+t6kA{$SLth4kXQg$-GTz z&VfWrqy5v8eptUNLLzSg=*i_O@~=ikX4?$)juYx9N2d=b(*TZHh+^W}&< z&yx-XBIPbXYs@fbpOJ12VY-?$z|ao)*lNo499wfFLZBa$ zK{l6)s>|kdi%d;D^0dcy_{!{wdHeA8&=j2T-8aAe{#|-TDPJf^_Usl^(<#57MJ6BC#_vh}!c&MByM8=!vjqX7M!Vo>m#FL_Y-TAbRNuGZ)~`S!m2l7;5ByI#ut(5U%1Ma+m8?lKy z@MaU_d3d4~ibKb8XJZQrrkIC6(um4mUJ#P$@We(VN= zm$4IDySH~bx9_2B-@pB;dHdeo+jrXm+`*9G_jG)Fr+NGCE2uW;$~uC}fIn^U0$A(b z?R69G+VGP|Fx>#P4dN4@&W=REUN?dJ+dD0+!i(NppTeVwCrgM9P$PHYQVL&YFrl^l z(6Rk-7$=~#EUVtI>SnW^%#3|IIO}X}W8%43$Tfngkm*A8*iPbw0iYMLSeMwU(`_Z4 zAUuk;KT8t$<9LzdyA0+moY5L07%icncvB`T!;FLn#xRTwF`GapiSKSz-XSso7=Mf< z?@p(nCn68kU*Gl1UW2MqyI{x`kUsEZ5_UGvQk9`H-SoPgu!Y^0WHW|=)GK&H>wEfuKtRUHMRe}(~0|x~m0C%H^E{CD-hX*hLb~JK9 zBR}f>+06o@cQ$Mr^an|HA zU!EY?1DE?5s1bjc==S$VfThHhlJwhNfFkPc?1f6vg|~TvRsb$G8lW3{Kw3ejaPCHl z2i<&m;sxGT63yHfuaC0%VE;gKWi)r~L?@@ds5alEHxGh2dNX~Ur@9PcMs(bxQGVZq ze@y(l6WIGK3bApx@+_04jax5)w)6bRI18yUO0;@I#bPKkUgY)U?s#xi@Rnd(mL1@s`EV&sN*ZVc`u`5^Jc z_Wi;H0bt+dW0O;awYT+XY0SSLAvZCSd(AiA=qIOS@yf1rsYO(0eL?}6d*r=8#4zr| zw|U<)n!p)JFV3DCoK-$G5wgD-L(T4+YY{{`%2OMs5 z4wY}964wdDyEh5p$f6Gam|C22sC;06ps*`EDuVyrNUMNKnuchf=`{@boQPrE6lJIW zkwLPlqn8+QSQ7kTKme}c)&KlT7ih!C9qoOwwdwgboY4IKyyt%@L)E75AV(m}?_ z5sJ2f7f*frXd?&%5bXFN-=7}wi4dKwkDJ?fU^XXA#wE%PJ%L@6e(2d(*u+i7Aq-M%x;7YV||jipRMcw}hH$J~(SVLl!#q@`F9LC!*#e3Jz~ zLtCC>Y9%&-Dk!1e_^*NqG13ofi4=KJp-DG^x?^8yBJ-) z%&5FzI!kCs0;Cv`yi1OzaEINjFd)+z+yEPSAHv^eLmQmcQijIra*d>PNZec0MkF3_ zioTi=37?b?NIIxA9&xjHKxU&Mn&kdi-yQUibOu~@ykM~FqooJCw19Hp_RBhtB}CWh zl6Rag&zJ}7cA-1ejd<3dc;uToG=*adklBj4gyG*4d+;!7MJHYht!a8~#% zt?)Kh1Tr3>SbX&0l@$SF#cDQIu&H8!I&^*sc)&YBk^>>0i6$Bx7P40zk+3b4=$#h~ zgGtT63=V>5&wb;&xz1 zdji+|$s^P3HM;HfUb|o+_eV?=GT?IP`9AB94El=~7;8Wtq4sX1KbcW?Q{1U*83LY& zSY!(q+oEo2CXDQ!6N1RytOE?D{U^9Ui%MH1rM&TDA{Lb8nMzk81-2OSnl5 z+`K~tw{PCkp|dAo>`d(e_$?!__of>R9J0-uPj7ycVlHeI9ASezxs7%kUae7uG9WoH zO@hPNQ-FnQe$;qsbqPC43LP|2xYZLL7-o09+i9=2nmC;bT0q3m=_BqXlpYzuHtFBrgb%j`&-32Bal98L_b)8{=>vNbitM2F4-tNAT+i zuaEHhh?5hoo>%DHnw0ahw(Hr?z0U~czP$HG0b$PM!-9}*|d}V%fO(_m-`8%KF zAbM&iiS3L@q7oWO_VG)x%Ad<&h|vu{Pk8R`L*vc6JGCh;v^N?D)#7s3nU(P)IEU~< zK$;f?VzwKH@Iyf0?}0Wj7&TyH7395O0qiXD0BEayXpinn(>czM2T~(?y2fI%xM(xy znB(8GnO$~1>uUB1=VQ*$smCrJrZP1z0Z1TyP9?{JQ2=BD7@h)wpuHj@AP7UX^K~%fa&W@l zjc}VaCg#!iDvv*6Z^(UUyL1?*!QQSFpZyUYIgMMy|73>S*^DfPLwrMS1DQv53C;cf zVevinbJ(Sy#@oP6&L1(e*<}w$cvi}v2kcLH=)m~BLnUqqbkB>!MiXqk^=7->`JElN zzOuUX$OCWe`CdG!Ibq~}bA&!Hu23yRgN71KQ>89R!I(CC>+8LBtF@#t-8+vlowM&T zL?gnriluKg%%;`suA3#MJ{qX&4YR#&mG!Q5DNFy(xV0@m4dMlN>TrAW&di5jemcMX zneV%aVMpklWD)gS72E*xjDN+qFOM(7d}%Es@NU4~qs^>5)aiSRU=vXYJvs!dhAhtw zwhn4P*Rn^+c%M2VfGUD9R|EWy@aXU2r}(a;sW-IGRi?>_*U{8&_Mz~f1fy$dA(QVS zPjrUo+yuq8>PTWsb0?T^>z3JWHLjlivzAC?wX9ytYPDNdCv7T~Mx0r8(zIAk^69Y= zOYzRqsJu_P%5qEhbyK0*O*7{|LfzcrR%%>a0dQF zd>zyLjvMWJj(aVz@A=`ih|C>$X*(rsR!)oAgcWG9)@aWqN5%~@+xJGn2E%p#bCYNm z&Rtw!el)XVt#^86r@3Ah&Foq0X1fWmHJZ@Fq8Uj8lk?O8AcH{NUt1X|#N z_rWV3Md2(Mpl=*T8_}r0YPH){CV#DM%B209ITU3RsE?Cvvs&75n#>7|(SzwRFkp-2Dju0Zf8`7`>oOt=5nrwl_>+%$9(v2$WM z;n-`ecRNZb=ISirdAlum=778bKIc@TZRlVsQy0>)$`j<5$m>$`xTe1C1!*?A%-%|q zwqBzu^V8Bx-k&Egy<}8N^j{tLgCI`qQDjfbhQ&PjcEP|D2<0Qo3gn08WmT6No7(X- zdHg~XCX><^jH@&|z4-bZ>FJlBtt|DgWJof7px2Xg_dRY+UuRB zd3AD3!_JgHrC1(}y@WC>DTV@nrS#pV*fSXg+q-TwiDmEt^Q>%I;k^*7w`r8(+G+Q0>GUk`A5&xiD|Dap{pj&@ebgRDP zY4sXrx6|ofOUg|O{G1D(=r?eIe3QI~cmIU#j-f{}&pG>pHqLwK8s-a`UPbK7L?!vK zA3}F0+4F)M%x+oTW~bG~DJyB9Hao<HnGpGd)5x3H(Gi=XE*6_#nDS4DK0PA4Saeh=x+7n4NB>1E zx|teGulaTohZC3cZ)z)v7C7-LP09!9HUya-$(vO(CZ!O=d`VhTOa<5^?0dcoR@T7n z+bEfh*oi=7;>~0@#r$5kQar#xl;=qjS|y%hDY$UvD_c)!pGw*gT<^QMZ^HKJW`_Bh zjvc!~DI|7(t73}vP9>t4F4txYw+1GqLWRRH2q#C%^N=|AIu3GUj;J7YND*Zs2RtFm2Jg>XDg^ z=K03p+cVtD17msf!7@#{U!S|P}nAIGRa||ANu~@SD&9A z|F?(C6o&!Nhwak zD1A!xc%HdlQan4G>sw2qMC?EW3=pN^2mgNfTfy>HYdMye1CU!O(;3aiQ!<~|(ckkS zT=utB(%;s#_4lfX4tL^QWVG#)(YC)1ZabS_mK;#%f#9$c9Kz}G-^q_%{&uiTdr6j& zV~`hyqWjfRvAiL0ZOqf|T(IYg{8Brv3$yF%_Bn|r?KXXS!Eg!)-?{%TeiY`b&#$-J z-3xXbH^pR|NmW0C)TD#r8Cp_cZ?N_!CDUYxzd=OW*@5Zq=3YbmUVqU@9d6r&##oFxJ2c)o_g-O0-K zzq=`&V%p3)@gEKL9^oduYOJ+gy23jykOuSZZOMibz41(%81_OymkRX9Iqhb1Mn0cIifS;F!DaccYeNKT4yUP zZQ;WI&I3RxySQ4}+Y}cx!+hSvrTm+p^Vy++$6*<`@y)l7(sLOJ3AFojpg{Ksje9-g4UMt>c z3>v-G0;EV}WAA(Jz#KY@V5_AYo%N{0!7#RZPU$<5vF$Fp^2S`Z6sk1 z0FoLQkg~?A*=!HoQ8gO%?bS{dq(IfOx>a+HHE!d>RkPi$_Dp!#qFr9M*XA~z$8grR zipKfvubP$x?KG-puaP$2s9KF))oeD-Y`ugeum^L5-o47A4UV$ zo*kai5)1)`Wp>&bQNXiS8~$HoZP_?rsZs4%OVj9J7Vj-F#Aekrt!#+v>nIe=bt`MR z19GB=+5*`btV~2yg|U%kQTL31*}@@Df|{Nya}|_o-=!cS(t=iC>Xf1L!2CgB@F}$ z#`WsTEhs8W=ml2h0$K!PiRzp|j3XD9kV`;l@8^RdMMYAv071T*Upd2cp|X6npt3!J zIkD%DKre76CP>lEM+Ch-0}oO`m7{{cEr3WffegMVyur-o^l*M5zA6Y-e`8T8O5fRF z&Ca4ihq71;Q=XsJFeXNpDYsvqh$Y{BJ6fG@#jddzz)uPzaP|@bBd@fU1edQ?0-225 zCBaeI5*Vowyd<2odFJ)RVkKQ1o`F4M@;^5HU# zoGmpj1ARGJa+wy+FJUgz+NI>q6*j!IG`duq7m!hxpUU${u1k~VdF0vUhqknoyL?k; z$v$-Bq$X5vu0-Zt0QmBM_M9do`Mot+K8Oox_*qA%5tQi!GYKt70ksb-7d=C&zA z$yd;x1ht3;F?f76o4CvaDITiVj1nwp1|`1qudEq-duiV|e`yKX;`c3EvlSSXNqnK^6CzS*3b5~pT}yl$+WVE;baDHAadh|lVpr4qGU4U@3T~$$An)TzDElME&*ptU z>t=R5@B4H<@B4V}?)&n?x9?Z1-uvl6ui{P~-TQu}!5YkJ!T<0SPb7p#_(g^HF&8EZ z_pnPMQFR9mtMs{%LeC!IqK;!v;UTfB{^D`y1@3!y2G(l;#PNz_XLn+oFOyM7n^=+6tK41MLc;p3`R$AGhPX__% z&0;sA8MT8)z{Yq;`N)m4_nz4c@ICI9!K^8m?YD3fB3;A#kmpnp2-=SJCpfPg|kG!SDpi5J&H-BK63Z*g9W7}`tI1?_rgdNbqD3eW>frT1rmOo zZy#Ticqp$)uO0zs&+P&)k$A|>%|-*>x_0D@@%hY8V0=*3If7;zm8VZPQ8;|?!8VEo z5H|dfT>fR07YyS&-jF?b^@HuRWDlNTyduBEZ7-)AK z`U9e8P!2vCC$i{p77!JziUF@Z@rLrcme`|*_}PQ4t;&PfzJ2$tS1T{RDBocxp|=79 zZ;A$?4NH;f1XV zNMUyfLU6!A^5?Z-P=hw#gErTm@JH!jYJ7{r>Y6OEy7rX*Z3@u#VDKu+BkT}v-CkXJ zQ&7Uj#)H61JlhA{4_2xfp4OhA1t1BAHpK^yyXDpfZi0uCdg93@^iZ_&)-17Aj^rRD z-)#l%0m~OzO&gquH!-ipkF|C{BPCmnO?pB!r#<46f_+RMr(kNsFnZN?#>E!az}|{h zJt*wmk6};oalrQt-_0pEotqj7dL?)1n z+LB2Vo(>*~No~vo{#>K#S*7j9pZ=*@3h(p1*lw&n$+KmR+X~3`Ys4A-twHF_ND`G! zP6d;6D{J3rd_cv4q=w#T>j~}9K_Rj6LZceb`bp%vaQSpoGI32@toEzC4zyT(!CXt# zkJOc<8iLTkk7^E&aNjSpMW)f{*yng$WN9d|ggz-RywUly^c=R#YV@ zx^ZS}4u}Z1j@kca-Llth+p%3d1hZ*6?LmLtZS~#8dIz65Cbq!`mW?WF^G+RciW?=y z$pjC5r7z&@j=dN^K@{_o5SZ`nxy)wYrjb?QNwAVIFL{~0?MC?d9Gp#t<|yt%7_j~k z`{TDo=^A?zjI@AF!U!D2^qZyZ3jhEB literal 0 HcmV?d00001 diff --git a/wp-content/cache/wp-rocket/localhost/2022/02/13/tu-van-chi-phi-xay-nha-5-tang-60m2-dep-mien-che-np621070/index.html b/wp-content/cache/wp-rocket/localhost/2022/02/13/tu-van-chi-phi-xay-nha-5-tang-60m2-dep-mien-che-np621070/index.html new file mode 100644 index 0000000..fea2d41 --- /dev/null +++ b/wp-content/cache/wp-rocket/localhost/2022/02/13/tu-van-chi-phi-xay-nha-5-tang-60m2-dep-mien-che-np621070/index.html @@ -0,0 +1,1246 @@ + + + + + + + + + + +Tư vấn chi phí xây nhà phố 5 tầng 60m2 tuyệt đẹp miễn chê NP621070 – Nội thất – kiến trúc An Việt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+ +
+
+ + + + +
+
+
+
+ + +

Tư vấn chi phí xây nhà phố 5 tầng 60m2 tuyệt đẹp miễn chê NP621070

+
+ + +
+
+ + +
+
+
+ + +

Thời gian gần đây chúng tôi nhận được nhiều câu hỏi liên quan tới chi phí xây nhà 5 tầng 60m2 ở các thành phố lớn, khu đô thị ngoại thành Hà Nội. Cùng với sự quan tâm đó, anh Tùng ở Gia Lâm có gọi điện cho kiến trúc sư Angcovat để nhờ chúng tôi tư vấn về chi phí làm nhà 5 tầng diện tích 60m2. Sau khi nghe chúng tôi tư vấn sơ bộ về kinh phí thực hiện phù hợp với phong cách kiến trúc và công năng sử dụng của gia đình mình. Anh Tùng quyết định lựa chọn Angcovat là đơn vị tư vấn thiết kế nhà phố 5 tầng cho gia đình mình. Được biết đây là 2 công trình đặt cạnh nhau có diện tích tương đồng nhau (60m2) và là của 2 bố con anh Tùng. Cùng chúng tôi tìm hiểu kỹ hơn về kiến trúc cũng như chi phí xây nhà phố 5 tầng diện tích 60m2 mái bằng ở Gia Lâm nhé!

+

BẢNG THÔNG TIN ĐẦU VÀO ĐỂ TÍNH CHI PHÍ XÂY NHÀ 5 TẦNG 60M2 Ở GIA LÂM – HÀ NỘI

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
    +
  • Mã biệt thự
  • +
+
+

 NP621070

+
+
    +
  • Số tầng
  • +
+
+

 05

+
+
    +
  • Chủ đầu tư
  • +
+
+

 Ông Nguyễn Thanh Tùng

+
+
    +
  • Địa Chỉ
  • +
+
 Gia Lâm – Hà Nội
+
    +
  • Mặt tiền
  • +
+
+

 5m

+
+
    +
  • Chiều sâu
  • +
+
+

 12m

+
+
    +
  • Kích thước ô đất
  • +
+
 60m2
+
    +
  • Kiến trúc sư thiết kế
  • +
+
+

 Kiến trúc sư Angcovat

+
+
    +
  • Năm thi công
  • +
+
+

2020

+
+
    +
  • Kinh phí đầu tư dự kiến
  • +
+

Khoảng 1.9 tỷ/căn
+
    +
  • Thông số diện tích, Công năng
  • +
+
+

– Diện tích: 60m2/sàn

+

– Thông số diện tích, công năng của nhà 1:

+

+) Tầng 1: sân trước 7,8m2; khách bếp 31,1m2; sảnh thang 7,4m2

+

+) Tầng 2: ban công 6,2m2; phòng ngủ 1 32,1m2; wc 4,9m2; sảnh thang 3,3m2

+

+) Tầng 3: ban công 3m2; phòng ngủ 2 32,1m2; wc 4,9m2; sảnh thang 3,3m2

+

+) Tầng 4: ban công 3m2; phòng ngủ 32,1m2; sảnh thang 3,3m2; wc 4,9m2

+

+) Tầng 5: sân chơi và phơi 23,7m2; phòng thờ 11,5m2; sảnh thang 6,7m2

+

– Thông số diện tích, công năng của nhà 2:

+

+) Tầng 1: sân trước 8,4m2; khách bếp 27,6m2; sảnh thang 11m2, thông tầng 3,4m2

+

+) Tầng 2: phòng ngủ 29,3m2; sảnh thang 4,9m2; wc 5,9m2

+

+) Tầng 3: ban công 2m2; phòng ngủ 29,3m2; sảnh thang 4,9m2; wc 5,9m2

+

+) Tầng 4: ban công 4,1m2; phòng ngủ 1 29,3m2; wc 5,9m2; sảnh thang 4,9m2

+

+) Tầng 5: sân chơi phơi 23,7m2; phòng thờ 13m2; sảnh thang 9,7m2

+
+

BẢNG THỐNG KÊ VẬT TƯ CHI PHÍ XÂY NHÀ 5 TẦNG 60M2 Ở PHỐ

+

– Diện tích sàn 1 sàn: 60m2

– Diện tích tổng ( Bao gồm sảnh, mái): 324m2

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TTVật tư Tổng  Đơn vị  Đơn giá  Thành tiền 
1Cát mịn          155.58 m3              120,000.00          18,669,553.92
2Cát Vàng            64.92 m2              150,000.00            9,737,301.60
3Dây thép          267.72 kg                25,000.00            6,692,923.08
4Đá 1×2            96.50 m3              190,000.00          18,335,252.02
5Đá 4×6              6.64 m3              160,000.00            1,061,973.50
6Đinh          139.78 kg                20,000.00            2,795,554.94
7Gạch chỉ 6,5×10,5×22     73,929.74 Viên                  1,500.00        110,894,616.48
8Thép tròn D<10       6,421.75 Tấn                11,800.00          75,776,619.23
9Thép tròn 10<D<18       3,527.54 Tấn                11,800.00          41,625,013.54
10Thép tròn D>18       5,453.18 Tấn                11,800.00          64,347,575.73
11Xi măng      40,512.21 kg                  1,800.00          72,921,981.04
12Đá trang trí            51.71 m2              550,000.00          28,440,720.00
13Gạch lát nền, ốp vs          300.34 m2              250,000.00          75,085,347.60
14Cầu thang             68.00 m           3,500,000.00        238,000,000.00
15Sơn lót          256.61 m2              100,000.00          25,660,800.00
16sơn phủ          484.70 m2                80,000.00          38,776,320.00
17Ventolít       2,106.00 kg                50,000.00        105,300,000.00
18Xi măng trắng            64.80 kg                  3,000.00               194,400.00
19Cửa             90.72 m2           2,000,000.00        181,440,000.00
20Hệ vì kèo  Trọn gói         64,800,000.00          64,800,000.00
21Điện  Trọn gói         77,760,000.00          77,760,000.00
22Nước  Trọn gói         51,840,000.00          51,840,000.00
23Nhân công324 m2           1,300,000.00        421,200,000.00
 Cộng        1,731,355,952.67
 Chi phí khác           173,135,595.27
 Tổng        1,904,000,000.00
+

 Bằng chữ: Một tỷ chín trăm linh tư triệu đồng

+

Giá trị tạm tính:

+

* Đơn giá trung bình xây dựng cho công trình này: 5.876.543 ( Triệu/m2)
* Trường hợp chỉ làm vì kèo lợp ngói, đóng trần chi phí là: 1.713.600.000,00
* Trường hợp đổ bê tông mái bằng và mái dốc, chi phí là: 2.094.400.000,00

+

Ghi chú: 
* Thông số khối lượng tính toán trên chỉ mang tính tham khảo
* Đơn giá vật tư ở mức hoàn thiện cơ bản trung bình
* Đơn giá trên là đơn giá chủ đầu tư trực tiếp thi công
* Chi phí khác: Đào móng, lấp cọc, ép cọc, phát sinh công,….= 10- 15% chi phí tổng

+

Chú ý:

+

+) Bạn để lại diện tích nhà dự tính xây dựng và địa chỉ email phía bình luận ( Comment) bên dưới mỗi bài viết. 
+) Chúng tôi sẽ tính toán và gửi đến bạn bảng chi phí xây dựng dự kiến cho gia đình mình.

+

 VỊ TRÍ LÔ ĐẤT ẢNH HƯỞNG TỚI CHI PHÍ XÂY NHÀ 5 TẦNG 60M HIỆN ĐẠI ĐẸP

+

chi phí xây nhà 5 tầng 60m2 giá rẻ

+

 Chi phí xây nhà 5 tầng 60m2 ảnh hưởng bởi vị trí lô đất

+

Sau khi nhận được yêu cầu tư vấn thiết kế và tư vấn chi phí xây nhà 5 tầng 60m2 hiện đại của gia đình anh Tùng, chúng tôi có dịp tư vấn thiết kế cho gia đình anh bằng cách mời anh trực tiếp đến văn phòng thiết kế của công ty tại Hà Nội. Do vị trí cũng khá gần, thuận lợi cho việc đi lại và di chuyển nên anh Tùng và gia đình đã trực tiếp đến văn phòng làm việc của chúng tôi, gặp gỡ và trao đổi với kiến trúc sư về những mong muốn, nhu cầu thực hiện ngôi nhà của gia đình mình. Anh chị sở hữu mảnh đất kích thước 11x13m, có 1 mặt tiền ở Gia Lâm – Hà Nội. Được biết đây là mảnh đất của 2 bố con anh Tùng, nên anh mong muốn xây dựng 2 ngôi nhà phố liền kề nhau sở hữu hình khối kiến trúc tương đồng nhau, vừa để tạo sự đặc biệt, lôi cuốn ánh mắt người nhìn vừa là để thể hiện quyền sở hữu, sự gắn bó của 2 cha con trong gia đình. Vị trí đất có 1 mặt tiền, tiếo giáp với đường giao thông. Gia Lâm là một quận huyện thuộc ngoại thành Hà Nội, hiện nay còn quỹ đất tương đối rộng rãi, tuy vậy giá thành đất ngày càng tăng cao do nhu cầu chuyển dịch kinh tế, tư tưởng sống ở ngoại thành không bị ngột ngạt khói bụi và chật chội như ở trong nội thành. Vì thế không ít chủ đầu tư lựa chọn xây dựng nhà cho gia đình mình là nơi để ở hoặc làm nơi nghỉ dưỡng ở các quận huyện ven đô, có khoảng cách không quá xa so với trung tâm thành phố. Cũng vì xu hướng đó mà giá đất tại các địa bàn xung quanh ngoại thành thủ đô ngày càng tăng cao. 

+

 Đối với việc xây dựng nhà cửa, vị trí xây dựng nhà ở vô cùng quan trọng, đặc biệt là vần đề vi trí xây dựng nhà: Phải sao cho hợp lý với kiến trúc, công năng, phải phù hợp với phong thủy xây dựng cho ngôi nhà. Phong thủy trong việc lựa chọn vị trí xây dựng thiết kế nhà 5 tầng 60m2 được áp dụng với nguyên tắc: Phù hợp với nhu cầu sử dụng, và điều kiện kinh tế của từng gia đình. Angcovat là đơn vị chuyên thiết kế nhà phố, biệt thự cho khách hàng trên khắp các tỉnh thành cả nước. Các công trình nhà ở lớn, cao tầng đồ sộ hoặc các mẫu nhà biệt thự vườn 1 tầng ở nông thôn. Từ kiến trúc hiện đại đơn giản cho tới kiến trúc cổ điển hay tân cổ sang trọng, đẳng cấp. Bạn có thể tham khảo rất nhiều mẫu biệt thự đẹp cũng như mẫu nhà phố của chúng tôi trên website angcovat.vn. Với kinh nghiệm hơn 10 năm trong nghề, làm việc trong lĩnh vực tư vấn thiết kế, thi công trọn gói chúng tôi nhận được nhiều tình cảm yêu mến của quý khách hàng trên khắp mọi miền đất nước. Vì vậy chúng tôi có điều kiện tiếp xúc gặp gỡ với nhiều khách hàng có nhu cầu tư vấn thiết kế khác nhau trên các lô đất đặt ở khắp mọi nơi, từ nhà phố tới nhà ở quê, nhà trong ngõ hay nhà ở mặt phố. Và cũng rất đa dạng kích thước, từ nhà ở diện tích nhỏ 30,40,50,60m2 kiểu nhà phố cho tới các mẫu nhà biệt thự 1,2,3 tầng sở hữu diện tích khủng từ 100-300,400m2. Với kinh nghiệm lâu năm như vậy, với mẫu thiết kế nhà phố 5 tầng 60m2 của gia đình anh Tùng không thể làm khó được KTS Angcovat. Chúng tôi không chỉ tư vấn về kiến trúc mà cả về công năng sử dụng, điện nước, kết cấu và miễn phí về phong thủy, bảng khái toán xây dựng. 

+

Thực tế, gia đình anh Tùng sở hữu mảnh đất vô cùng đẹp, bằng phẳng, ở vị trí đắc địa, mặt tiền rộng rãi và đây là một mẫu nhà phố khá đắt đỏ theo như đánh giá của thị trường địa ốc hiện nay. Chính vì có vị trí thuận lợi gần đường lớn nên quá trình thiết kế hoặc thi công xây dựng nhà ở sẽ dễ dàng hơn so với các mẫu nhà phố ở trong ngõ nhỏ ở nội đô. Điều này ảnh hưởng không nhỏ tới chi phí xây nhà 5 tầng 60m2 mà chúng tôi đang khái toán và tư vấn cho anh Tùng. Hiện nay với giá nhân công và vận chuyển nguyên vật liệu được đánh giá dựa vào vị trí thi công. Với những mẫu nhà phố trong ngõ nhỏ quá trình vận chuyển nguyên vật liệu, biện pháp thi công khó khăn hơn so với những ngôi nhà phố nằm gần đường lớn, thời gian thi công vì thế cũng kéo dài hơn so với việc triển khai thưc hiện nhà có ngõ rộng rãi. Anh Tùng may mắn sở hữu lô đất mặt tiền rộng rãi, hơp phong thủy và rất dễ dàng triển khai xây dựng. Bảng khái toán bên trên cho chi phí xây nhà 5 tầng 60m2 của anh Tùng đã tính tới vị trí thực hiện. Ngoài ra vị trí xây dựng cũng ảnh hưởng tới giá vật tư và nhân công từng vùng miền. Đương nhiên các loại vật tư và giá nhân công thực hiện ở các thành phố lớn như Hà Nội, Sài Gòn sẽ đắt đỏ hơn so với các công trình thực hiện ở nông thôn và các tỉnh thành khác. Dự toán xây dựng 1 mẫu nhà 5 tầng 60m2 hết khoảng 1,9 tỷ đồng. Lưu ý đây là chi phí hoàn thiện ngoại thất chưa bao gồm chi phí mua sắm nội thất và vật dụng tiện nghi sử dụng trong nhà.

+

 CHI PHÍ XÂY NHÀ 5 TẦNG 60M2 PHỤ THUỘC VÀO HÌNH KHỐI KIẾN TRÚC THIẾT KẾ 

+

chi phí xây nhà 5 tầng 60m2 hợp lý

+

 Chi phí xây nhà 5 tầng 60m2 phụ thuộc vào phong cách kiến trúc lựa chọn

+

 Đối với những mẫu biệt thự đẹp sở hữu 2,3 mặt tiền thì mẫu nhà phố 5 tầng chỉ sở hữu một mặt tiền duy nhất. Vì vậy kiến trúc của ngôi nhà tập trung phần lớn vào mặt tiền. Mỗi một ngôi nhà sở hữu một trường phái kiến trúc khác nhau có thể là hiện đại, cổ điển hoặc tân cổ. Thông thường với các mẫu nhà phố diện tích nhỏ thường được lựa chọn theo phong cách hiện đại đơn giản hoặc tân cổ sang trọng. Tùy từng phong cách kiến trúc mà chi phí xây nhà dao động thay đổi theo. Như các bạn đã biết, mẫu nhà kiểu cổ điển hoặc tân cổ điển được thiết kế theo kiểu sang trọng, đồ sộ với các chi tiết tiểu tiết nhỏ hoa văn họa tiết rất chi ly và cầu kỳ. Vì vậy chi phí nguyên vật liệu cũng như chi phí vật tư, nhân công cũng tăng theo. Riêng đối với kiến trúc hiện đại, đa phần sở hữu các mảng miếng hình khối phẳng, chi tiết phào chỉ đơn giản, đề cao giá trị công năng sử dụng và tạo không gian mở thông thoáng nên chi phí xây nhà vì vậy cũng giảm hơn nhiều so với thi công các mẫu biệt thự cổ điển hoặc tân cổ điển.

+

Đối với những ngôi nhà có 2, 3 mặt tiền,… thì có lẽ việc thiết kế, xây dựng cũng tốn kém, phức tạp hơn. Tuy nhiên, lại dễ dàng tạo nên sức hút, sự cuốn hút cho mẫu thiết kế nhà 5 tầng 60m2 đẹp này nhờ mặt tiền. Thế nhưng, đối với thiết kế nhà phố 1 mặt tiền, thì việc thiết kế mặt tiền tuy có tiết kiệm chi phí, công sức thực hiện hơn, nhưng lại khó khăn trong việc tạo nên sức hút kiến trúc cho ngoại thất của ngôi nhà. Đối với mẫu thiết kế nhà 5 tầng 60m2, vì chỉ có 1 mặt tiền, nên không gian kiến trúc của ngôi nhà được ưu tiên hàng đầu về tính thẩm mỹ, cách sử dụng màu sắc, vật tư hoàn thiện để mang lại cho mặt tiền ngoại thất ngôi nhà vẻ đẹp ấn tượng và độc đáo nhất. Yêu cầu về sự sáng tạo, tư duy thẩm mỹ đối với các mẫu nhà phố 5 tầng 60m2 một mặt tiền càng đòi hỏi cao hơn. Bởi vẻ đẹp thu hút người nhìn tập trung vào mặt tiền chính. Hơn thế đây là công trình đặc biệt, bởi nó là do 2 ngôi nhà liền kề với nhau, sở hữu kiến trúc mặt tiền giống nhau. Vì vậy đòi hỏi KTS phải vận dụng sự linh hoạt, tư duy thẩm mỹ về hình khối, màu sắc và xử lý không gian thật tốt mới đáp ứng được yêu cầu của chủ đầu tư.

+

Mẫu nhà phố 5 tầng diện tích 60m2 được chúng tôi thiết kế theo trường phái hiện đại, và gam màu chủ đạo là gam màu trắng. Màu trắng được biết tới là gam màu kinh điển không chỉ trong kiến trúc mà cả trong hội họa, nó được ứng dụng ở hầu hết các công trình nhà hiện đại cho tới cổ điển và tân cổ điển. Màu trắng đại diện cho sự tinh khôi, thuần khiết nhất, nó là gam màu trung tính, dễ dàng kết hợp với các gam màu khác để tạo sự nổi bật cho tone màu kia lên. Chính vì thế nó thường được sử dụng làm tone màu nền hoặc chiếm chủ đạo trong một ngôi nhà. Để cho người nhìn có chiều sâu hơn về ngôi nhà, không gian rộng lớn hơn so với thực tế thì việc sử dụng màu trắng làm gam màu chủ đạo là hoàn toàn phù hợp. Màu trắng được bao phủ toàn bộ ngoại thất mẫu nhà 5 tầng 60m2 và cả các chất liệu cửa chính, cửa sổ cũng đều được sơn bằng màu trắng. Câu hỏi đặt ra rằng vậy có quá đơn điệu hay không? Hoàn toàn không bạn nhé! Màu trắng là gam màu dễ sử dụng trong mọi phối cảnh và nhờ có sự khéo léo tạo khối, vận dụng ánh sáng linh hoạt cũng như tô điểm thêm một số gam màu đối nghịch vào bức tranh tổng thể, thì ngôi nhà hoàn toàn sáng sủa và bắt mắt. Màu đen sẽ đươc lựa chọn trong trường hợp này. Trắng và đen là 2 gam màu đối nghịch nhưng khi cùng thể hiện trong một tác phẩm kiến trúc thì nó lại giữ vai trò tô điểm nhau lên, và tạo thành tổng thể thống nhất không thể tách rời. Màu đen được sử dụng làm lan can ban công, làm lam trang trí chống nóng cho sân thượng. Màu đen tuyền là gam màu gợi lên sự tò mò, bí hiểm nên vô hình chung sẽ rất lôi cuốn người nhìn. 

+

tư vấn chi phí xây nhà 5 tầng 60m2

+

 Chi phí xây nhà 5 tầng 60m2 phụ thuộc vào vật liệu lựa chọn

+

CHI PHÍ XÂY NHÀ 5 TẦNG 60M2 HIỆN ĐẠI PHỤ THUỘC VÀO VẬT LIỆU HOÀN THIỆN NGOẠI THẤT 

+

Không phải ngẫu nhiên mà các mẫu nhà xây cùng diện tích, cùng vùng miền, thời điểm, cùng phong cách kiến trúc lại có chi phí hoàn toàn khác nhau. Điều này phụ thuộc vào vật liệu hoàn thiện ngoại thất ngôi nhà. Vật liệu hoàn thiện ở đây gồm có những gì? Đó là cửa, cổng, lan can ban công, gạch ốp, đá trang trí,… Trao đổi với chúng tôi anh Tùng mong muốn sở hữu mẫu nhà 5 tầng 60m2 có chi phí khoảng 2-2,5 tỷ đồng để hoàn thiện ngoại thất, anh cần chúng tôi tư vấn những vật liệu ở mức khá, chi phí ban đầu bỏ ra có thể lớn nhưng về sau này ngôi nhà sẽ có tuổi thọ cao, bền đẹp theo thời gian và hạn chế ở mức tối đa chi phí sang sửa hay bảo hành ngôi nhà. Chính vì thế nhìn vào mẫu nhà 5 tầng 60m2 mang phong cách kiến trúc hiện đại nhưng vẫn thể hiện được nét sang trọng, bề thế và lịch lãm. Điều này không chỉ nhờ vào cách tạo hình, cách phối màu mà còn phụ thuộc vào vật liệu hoàn thiện.

+

Lan can ban công được sử dụng toàn bộ bằng lan can sắt sơn tĩnh điện màu đen. Như đã phân tích, màu đen giúp tô điểm thêm cho bức tranh tổng thể về mẫu nhà 5 tầng 60m2 hiện đại ở Gia Lâm. Loại lan can bằng sắt cũng được sử dụng phổ biến ở các mẫu nhà phố hay biệt thự, hiện đại hay tân cổ. Nó mang vẻ đẹp lịch lãm, tinh tế và có phần độc đáo. Khác hẳn so với trước kia, khi xây nhà sử dụng lan can ban công xây kín bằng gạch đá hay các vật liệu truyền thống thông thường khác. Nhìn vào tổng thể mặt tiền mẫu nhà phố 5 tầng 60m2 không có cảm giác bị chật chội mà ngược lại rất thoáng đãng, rộng mở và có tính kết nối với thiên nhiên.

+

Toàn bộ hệ cửa chính, cửa sổ của mẫu nhà 5 tầng hiện đại của anh Tùng được sử dụng là cửa kính pano gỗ. Đây là cửa mang phong cách hiện đại, được sử dụng ở hầu hết các gia đình hiện nay. Cửa kính giúp người trong nhà dễ dàng quan sát bên ngoài và thu hút ánh sáng mặt trời rất tốt. Nhất là những công trình nhà phố cần ánh sáng cho không gian bên trong không bị chật hẹp và thoáng đãng hơn. Cửa kính cũng rất dễ vệ sinh, ít bị ảnh hưởng bởi các điều kiện thời tiết cực đoan hay vị sinh vật phát triển như nấm mốc. Do vậy ngày nay các công trình nhà ở sử dụng vật liệu cửa kính khung gỗ là chủ yếu. 

+

Cửa cổng ngôi nhà là điểm đáng chú ý trong mẫu thiết kế nhà phố 5 tầng hiện đại. Được thiết kế đặc biệt với những hoa văn đẹp mắt, tinh xảo và sơn màu vàng bắt mắt. Bộ cửa bằng sắt này có giá thành tương đối lớn, tôn lên vẻ đẹp sang trọng và bề thế của ngôi nhà. Tóm lại chi phí xây nhà 5 tầng 60m2 của gia đình anh Tùng ở Gia Lâm được chúng tôi khái toán khoảng 1,9 tỷ đồng/ căn. Và để được báo giá chi tiết cụ thể khối lượng thi công, đơn giá vật tư, nhân công,… bạn có thể lựa chọn gói hồ sơ dự toán công trình của chúng tôi. Hoặc nếu bạn muốn nhận bảng khái toán chi phí công trình nhà ở của gia đình mình, vui lòng liên hệ với chúng tôi qua số Hotline, hoặc để lại bình luận phía dưới mỗi bài viết, chúng tôi sẽ tính toán và gửi lại bạn.

+

BỐ CỤC MẶT BẰNG CÔNG NĂNG SỬ DỤNG MẪU THIẾT KẾ NHÀ 5 TẦNG 60M2 HIỆN ĐẠI

+

Mặt bằng công năng sử dụng của mẫu thiết kế nhà 5 tầng 60m2 phong cách hiện đại được bố cục khá hợp lý. Với không gian kiến trúc mới mẻ, ấn tượng thì công năng sử dụng của ngôi nhà mới là điều được chủ đầu tư quan tâm đầu tiên khi chuẩn bị thiết kế cũng như xây dựng công trình này.

+

chi phí xây nhà 5 tầng 60m2 3 phòng ngủ

+

 Mặt bằng tầng 1: Mẫu thiết kế nhà 5 tầng 60m2 hiện đại

+

Không gian sử dụng của toàn bộ tầng 1 được tận dụng làm không gian sử dụng chung cho toàn bộ gia đình bao gồm phòng khách, phòng bếp ăn, và sảnh thang, wc. Bên ngoài là không gian sân trước để cac phương tiện đi lại như xe máy, xe đạp.Đây là một trong những cách bố trí không gian sử dụng thường thấy trong các mẫu thiết kế nhà 5 tầng 60m2 phong cách hiện đại. Mặc dù 2 ngôi nhà riêng biệt nhưng không gian sử dụng khá tương đồng nhau.

+

chi phí xây nhà 5 tầng 60m2 có công năng hợp lý

+

 Bản vẽ mặt bằng tầng 2 mẫu thiết kế nhà 5 tầng 60m2

+

Mặt bằng công năng sử dụng tầng 2 của mẫu thiết kế nhà 5 tầng 60m2 có cách bố trí công năng sử dụng tương tự nhau. Mỗi tầng đặt được 1 phòng ngủ diện tích khá rộng rãi và 1 phòng WC cho việc sử dụng. Các phòng ngủ ở đều có ban công nhỏ đi ra bên ngoài nên vô cùng thoáng đãng, tự nhiên, phù hợp với thói quen sử dụng và nhu cầu sống của gia đình. Không gian các phòng sử dụng trong nhà ống đều cần đề cao tính thoải mái, thoáng đãng, chính vì thế mà bố cục phòng như vậy là khá hợp lý cho việc sử dụng trong ngôi nhà. 

+

chi phí xây nhà 5 tầng 60m2 gồm 1 khách, 3 phòng ngủ

+

 Mặt bằng tầng 3: Mẫu thiết kế nhà 5 tầng 60m2 hiện đại

+

Tầng 3 của mẫu thiết kế nhà phố 5 tầng diện tích 60m2 bao gồm 1 phòng ngủ. Phòng ngủ ở tầng 3 được dành cho diện tích sử dụng rộng hơn. Chính vì thề mà không gian sử dụng trong phòng ngủ được dành diện tích rộng hơn. Phòng ngủ tầng 3 cũng có cửa sổ rông hơn, không gian nội thất bên trong cũng sẽ được bố trí khác so với phòng ngủ tầng 2. 

+

chi phí xây nhà 5 tầng 60m2 có công năng tiết kiệm diện tích

+

  Mặt bằng tầng 4: Mẫu thiết kế nhà 5 tầng 60m2 hiện đại

+

 Lên tới tầng 4 không gian được thiết kế tương tự như tầng 2 và 3. Mỗi tầng gồm có 1 phòng ngủ rộng rãi có ban công, cửa sổ ra bên ngoài vô cùng thoáng mát. Tổng thể quy hoạch nội thất ngôi nhà hoàn toàn phù hợp với sinh hoạt và số lượng thành viên trong gia đình. Kiến trúc hiện đại yêu cầu công năng sử dụng gọn gàng, tiết kiệm diện tích, đáp ứng được yêu cầu của các chủ đầu tư khi sở hữu nhà phố diện tích khiêm tốn.

+

chi phí xây nhà 5 tầng 60m2 giá rẻ ở hà nội

+

 Mặt bằng tầng 5: Mẫu thiết kế nhà 5 tầng 60m2

+

Toàn bộ không gian của tầng 5 được dành cho phòng thờ. Diện tích sử dụng của phòng thờ tương đối rộng rãi. Vị trí đặt phòng thờ cũng trang trọng ở phía cao nhất trong ngôi nhà. Phù hợp với mong muốn và nhu cầu sử dụng của chủ đầu tư.

+

Như vậy, mẫu thiết kế nhà 5 tầng 60m2 hiện đại được hoàn thiện, mọi thắc mắc liên quan đến hồ sơ thiết kế, kĩ thuật thi công công trình này bạn có thể liên hệ trực tiếp với kiến trúc sư của chúng tôi để được tư vấn, hướng dẫn và giải đáp mọi thắc mắc! Các câu hỏi cần giải đáp liên quan tới chi phí xây nhà 5 tầng 60m2 đều được chúng tôi tư vấn tỷ mỉ chi tiết. 

+ + +
+ + + + + +
+
+ + + + +
+ + + + +
+

Trả lời

Email của bạn sẽ không được hiển thị công khai.

+ +

+

+ +

+ +
+
+ +
+ +
+ + +
+ + + +
+ + + + + + + + + +
+
+
+
+ + Facebook Messenger +
+
+
+ Chat với chúng tôi qua Zalo +
+ +
+
+ Gọi ngay +
+ + + + + +
+ + +
+
+ +
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/cache/wp-rocket/localhost/2022/02/13/tu-van-chi-phi-xay-nha-5-tang-60m2-dep-mien-che-np621070/index.html_gzip b/wp-content/cache/wp-rocket/localhost/2022/02/13/tu-van-chi-phi-xay-nha-5-tang-60m2-dep-mien-che-np621070/index.html_gzip new file mode 100644 index 0000000000000000000000000000000000000000..d6636bc831c2fa5ce67727b4e1e72ed330bf7dbe GIT binary patch literal 22609 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 E0F-8Ae*gdg literal 0 HcmV?d00001 diff --git a/wp-content/cache/wp-rocket/localhost/2022/02/13/tu-van-thiet-ke-noi-that-dep-cho-nha-ong-hien-dai-nt115109/index-mobile.html b/wp-content/cache/wp-rocket/localhost/2022/02/13/tu-van-thiet-ke-noi-that-dep-cho-nha-ong-hien-dai-nt115109/index-mobile.html new file mode 100644 index 0000000..ec45a0f --- /dev/null +++ b/wp-content/cache/wp-rocket/localhost/2022/02/13/tu-van-thiet-ke-noi-that-dep-cho-nha-ong-hien-dai-nt115109/index-mobile.html @@ -0,0 +1,976 @@ + + + + + + + + + + +Tư vấn thiết kế nội thất đẹp cho nhà ống hiện đại NT115109 – Nội thất – kiến trúc An Việt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+ +
+
+ + + + +
+
+
+
+ + +

Tư vấn thiết kế nội thất đẹp cho nhà ống hiện đại NT115109

+
+ + +
+
+ + +
+
+
+ + +

Thiết kế nội thất luôn là nhân tố song hành với thiết kế ngoại thất để tạo nên vẻ đẹp toàn diện cho mọi ngôi nhà. Khi thiết kế nội thất thì tính khoa học và sự kết nối với ngoại thất là điều vô cùng quan trọng. Mẫu thiết kế nội thất đẹp cho nhà ống này của chúng tôi cũng vậy. Sự kết nối hoàn chỉnh với thiết kế ngoại thất được thể hiện khá trọn vẹn trong công trình thiết kế nội thất đẹp cho nhà ống của anh Trung tại Khương Thượng – Đống Đa – Hà Nội. Ngôi nhà của anh Trung nằm nổi bật trên con phố bởi phong cách ngoại thất hiện đại kết hợp với một vài nét truyền thống tinh tế khác biệt so với xung quanh. Chính vì lẽ đó mà thiết kế nội thất đẹp cho nhà ống cũng rất cần có sự kết hợp giữa những nét hiện đại và truyền thống một cách khoa học nhất. Dưới đây là toàn bộ thông tin và bản vẽ 3D chi tiết mẫu thiết kế nội thất đẹp cho nhà ống mà chúng tôi muốn giới thiệu đến bạn hôm nay.

+

TÓM TẮT THÔNG TIN BẢN THIẾT KẾ NỘI THẤT ĐẸP CHO NHÀ ỐNG

+

Trước tiên là một số thông tin cơ bản về mẫu thiết kế nội thất đẹp cho nhà ống mà chúng tôi đã hoàn thành.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
    +
  • CÔNG TRÌNH
  • +
+
+

 Thiết kế nội thất đẹp cho nhà ống

+
+
    +
  • CHỦ ĐẦU TƯ
  • +
+
+

 Anh Trung

+
+
    +
  • ĐỊA ĐIỂM XÂY DỰNG
  • +
+
+

 Khương Thượng – Đống Đa – Hà Nội

+
+
    +
  • YÊU CẦU:
  • +
+
+

 – Nội thất phòng khách

+

 – Nội thất 2 phòng ngủ

+
+
    +
  • PHONG CÁCH
  • +
+
+

 Hiện đại kết hợp truyền thống

+
+
    +
  • KIẾN TRÚC SƯ THIẾT KẾ
  • +
+
+

 Kiến trúc sư Angcovat

+
+
    +
  • CHI PHÍ TẠM TÍNH
  • +
+
+

 

+
+
    +
  • ĐỒ NỘI THẤT
  • +
+
+

 Bao gồm đầy đủ các đồ nội thất phòng khách và 2 phòng ngủ.

+
+

 

+

Là ngôi nhà ống của chủ đầu tư là anh Trung ở Khương Thượng – Đống Đa – Hà Nội chưa có một ý tưởng thiết kế nội thất nào cũng như chưa có những đồ nội thất quan trọng. Vì thế chủ đầu tư muốn tìm cho mình một đơn vị thiết kế nội thất đẹp cho nhà ống và phải đáng tin cậy. Với đơn giá 200.000đ/m2 được áp dụng cho gói thiệt kế nội thất nhà ở và đội ngũ kiến trúc sư giàu kinh nghiệm từ nhiều năm trong nghề, Công ty Angcovat là đơn vị phù hợp nhất cho anh lựa chọn để thiết kế nội thất đẹp cho nhà ống của mình.

+

Là công ty am hiểu về cả kiến trúc ngoại thất và thiết kế nội thất nên chúng tôi hiểu rất rõ sự quan trọng của mối quan hệ, sự liên kết thống nhất giữa ngoại thất với nội thất sẽ tạo nên nét đẹp hoàn hảo cho tổng thể ngội nhà. Chính vì thế, để thiết kế nội thất đẹp cho nhà ống thì không gian nội thất phải ấn tượng và kết hợp khoa học với tổng thể kiến trúc.  Tuy nhiên chúng tôi chỉ được yêu cầu thiết kế nội thất cho những phòng chức năng quan trọng chứ không phải toàn bộ ngôi nhà. Cụ thể đó là phòng khách + thờ, 1 phòng ngủ của vợ chồng anh Trung, một phòng ngủ của con anh.

+

PHONG CÁCH TỔNG THỂ MẪU THIẾT KẾ NỘI THẤT ĐẸP CHO NHÀ ỐNG 1 PHÒNG KHÁCH 2 PHÒNG NGỦ

+

Bước đầu nhìn nhận, đối tượng lần này là mẫu nhà có diện tích không lớn, phong cách ngoại thất là sự pha trộn và kết hợp tinh tế giữa hiện đại và truyền thống. Với kiến trúc ngoại thất như thế cũng phần nào nói lên được phong cách sống cũng như thói quen sinh hoạt của gia đình anh Trung. Chắc hẳn gia đình anh rất yêu thích phong cách sống hiện đại năng động nhưng cũng không quên những nét văn hóa truyền thống cần được duy trì và truyền bá cho con cháu. Chưa từng làm việc với chủ đầu tư trong thiết kế ngoại thất cũng như chưa hiểu rõ đươc cách thức làm việc của anh Trung, bước đầu khi thiết kế nội thất đẹp cho nhà ống của gia chủ, chúng tôi cũng đã có rất nhiều khó khăn. Để thiết kế nội thất đẹp cho nhà ống thì các chi tiết giữa 2 phong cách hiện đại và truyền thống phải kết hợp sao cho thật tinh tế mà vẫn giữ được sự khoa học, tiện nghi cho ngôi nhà.

+

Về tổng thể, công ty được yêu cầu thiết kế nội thất đẹp cho nhà ống chỉ đối với phòng khách + thờ và 2 phòng ngủ. Với phòng khách + thờ là không gian chung của cả nhà và là nơi tiếp khách nên gia chủ dành một sự quan tâm đặc biệt đến phong cách thiết kế. Phong cách hiện đại và truyền thống chính là sẽ kết hợp với nhau tại đây để tôn nên tất cả những nét tinh tế nhất của ngôi nhà. Còn lại 2 phòng ngủ là không gian riêng và mọi người đều yêu thích sự hiện đại trẻ trung nên anh yêu cầu thiết kế nội thất của 2 phòng ngủ theo phong cách hiện đại.

+

Thêm một vài yếu tố liên quan đến phong thủy mà chủ đầu tư yêu cầu. Anh đưa ra yêu cầu về màu sắc trong phòng khách và phòng ngủ của vợ chồng anh phải có màu chủ đạo là màu nâu, màu tương hợp với người thuộc hành thổ. Điều này cũng mang lại lợi thế khi thiết kế nội thất đẹp cho nhà ống vì tone màu này là màu tự nhiên của gỗ và nó cũng là tone màu dễ dàng làm nổi bật nét truyền thống và sự sang trọng, lịch lãm.

+

Với tất cả những yêu cầu trên về phong cách thiết kế, những lưu ý về sự tiện nghi, về yếu tố phong thủy,… Chúng tôi đã tư vấn và hoàn thành phương án thiết kế nội thất đẹp cho nhà ống trong phòng khách + thờ và 2 phòng ngủ của anh Trung như sau:

+

Tham khảo thêm: Tư vấn thiết kế biệt thự 2 tầng kiểu pháp đẹp

+

PHÒNG KHÁCH + THỜ TINH TẾ TRONG THIẾT KẾ NỘI THẤT ĐẸP CHO NHÀ ỐNG

+

Đối với những mẫu nhà ống thì phòng khách luôn là phòng được đặt ngay đầu tiên khi từ sảnh chính đi vào. Vì đặc điểm về kiến trúc nên bố cục nhà ống được sắp xếp như thế để giúp ngôi nhà tiện nghi và là sắp xếp hợp lý để thấy được nét đẹp từ phong cách nội thất ngay khi bước vào. Để thiết kế nội thất đẹp cho nhà ống thì chúng ta cũng cần lưu ý đặc điểm về bố cục này của mẫu nhà.

+

thiết kế nội thất đẹp cho nhà ống

+

Không gian dành cho việc thờ cúng tổ tiên được thiết kế ngay tại phòng khách

+

Ấn tượng đầu tiên khi của thiết kế nội thất đẹp cho nhà ống chính là phòng khách ngập tràn không gian truyền thống trang trọng được pha trộn thêm chút hiện đại năng động. Không xa hoa lộng lẫy, không rực rỡ sắc màu, thiết kế nội thất đep cho nhà ống đề cao sự gọn gàng, giản dị ở phòng khách. Phải kể đến trước tiên là không gian bàn thờ tổ tiên được thiết kế ngay tại phòng khách, một không gian trang trọng lịch sự thể hiện sự tri ơn nguồn cội.

+

thiết kế nội thất phòng thờ đẹp cho nhà ống

+

Bàn thờ bằng gỗ được thiết kế đơn giản mà trang trọng

+

Không gian thờ trong thiết kế nội thất đẹp cho nhà ống dường như chứa đựng phong cách của người dân Nam bộ. Phía trước là 1 bàn cơm nhỏ được kê thấp sử dụng để dọn cỗ cúng những ngày lễ tết. Cao hơn hẳn và lùi về phía sau là tủ thờ hay bàn thờ được kê sát tường để bày đỉnh, dĩa, chò, chân đèn, bình hoa, chung trà,… Cách bài trí này vô cùng đơn giản, tone màu gỗ tự nhiên thể hiện sự bình dị, trầm ấm. Hệ thống cửa và rèm cửa hiện đại cũng được lựa chọn với tone màu nhã nhặn tăng thêm phần sang trọng cho không gian chung.

+

Chất liệu gỗ được đưa vào trong thiết kế nội thất đẹp cho nhà ống có thể được lựa chọn tùy thuộc nhu cầu và mong muốn của mỗi gia đình. Thường thì loại gỗ được lựa chọn sử dụng đều là những loại tốt nhất vì những đồ nội thất này có thể sẽ gắn liền với ngôi nhà của chúng ta rất lâu. Khi nhu cầu sử dụng cũng có những điều khác nhau thì việc mỗi gia đình lựa chọn loại gỗ cao cấp hay tầm trung đều phụ thuộc vào điều kiện sử dụng riêng biệt. Điều hiển nhiên là các loại gỗ khác nhau thì có chất lượng khác nhau, giá cả khác nhau cũng như điều kiện sử dụng khác nhau. Việc lựa chọn chất liệu cho bàn thờ được xem xét vô cùng kỹ lưỡng vì bàn thờ là nơi ling thiêng, gỗ làm bàn thờ phải bền, chắc, dễ chạm khắc và có hương thơm. Theo chúng tôi thì chất liệu gỗ Dổi là vô cùng phù hợp trong thiết kế nội thất đẹp cho nhà ống – loại gỗ được sử dụng phổ biến có khả năng chống mối tự nhiên, độ bền cao, có hương thơm, nhẹ, dễ dàng chạm khắc và vận chuyển. Giá cho nội thất dùng chất liệu gỗ Dổi cũng giao động chỉ từ vài triệu đến vài trăm triệu nên được nhiều người ưa chuộng. Hoặc nếu gia đình có điều kiện hơn thì khi làm bàn thờ  bạn cũng có thể lựa chọn chất liệu gỗ quý khác như gỗ Hương, gỗ Gụ, gỗ Vàng tâm,…

+

Không gian phòng khách + thờ còn có sự kết hợp độc đáo tại khu vực bàn tiếp khách, chúng tôi đánh giá đây là sự táo bạo trong thiết kế nội thất đẹp cho nhà ống.

+

thiết ké nội thất đẹp cho nhà ống

+

Phối cảnh 3D khu vực bàn tiếp khách

+

Màu sắc chủ đạo tươi sáng, nhã nhặn mang lại cho tổng thể không gian tiếp khách sự sang trọng và giá trị thẩm mỹ cao. Sự trẻ trung, năng động trong phong cách sống của gia đình được thể hiện xuất sắc qua nhiều chi tiết như: khu vực để ti vi, chậu hoa, bức họa treo tường, đèn trần tinh tế, thảm trải sàn… Tất cả sử dụng tone màu sáng để tạo hiệu ứng mang lại không gian thư giãn rộng rãi, thoải mái cho khu vực đón khách.

+

Với một không gian hiện đại thì điều mà chúng ta thường hay bắt gặp đó là một bộ bàn ghế sofa lớn mềm mại, êm ái. Tuy nhiên trong thiết kế nội thất đẹp cho nhà ống này chúng tôi chọn sự mạo hiểm đó là kết hợp vào đây một bộ bàn ghế gỗ giản dị, vuông vắn. Cân nhắc khá nhiều về mẫu mã và bộ bàn ghế chúng tôi lựa chọn đã được tối giản về thiết kế đặt lên trên ghế là những tấm đệm êm ái. Một sự kết hợp tưởng chừng như không thể nghĩ đến lại mang lại một nét đẹp tinh tế và sự kết nối thống nhất đến vậy. Không gian bàn tiếp khách vừa hiện đại lại vừa trở nên rộng rãi hơn, bình dị hơn và có tính liên kết hơn với khu vực bàn thờ truyền thống.

+


tư vấn thiết kế nội thất đẹp cho nhà ống

+

Không gian bàn tiếp khách hiện đại pha lẫn nét truyền thống

+

Phòng khách là không gian con người ta sẽ bắt gặp ngay khi bước tới 1 ngôi nhà ống, vì vậy mà thiết kế nội thất đẹp cho nhà ống mấu chốt chính ở điểm dừng đầu tiên này. Với nét hiện đại kết hợp với truyền thống 1 cách tinh tế khoa học, nội thất đã liên kết một cách thống nhất với ngoại thất tạo ra một ấn tượng vô cùng khác biệt và táo bạo.

+

Tham khảo thêm: Giới thiệu các mẫu thiết kế biệt thự 3 tầng đẹp vô cùng ấn tượng

+

THIẾT KẾ PHÒNG NGỦ ĐẸP HIỆN ĐẠI CHO NHÀ ỐNG

+

Gia đình chủ đầu tư ít người, công năng sử dụng không nhiều nên bố trí mặt bằng ngôi nhà ống chỉ bao gồm 2 phòng ngủ bao gồm 1 phòng cho vợ chồng gia chủ và 1 phòng cho con. Như trong bản vẽ thiết kế nội thất đẹp cho nhà ống ta có thể thấy diện tích phòng ngủ khá rộng giúp mang lại hiệu quả sử dụng cao cho gia chủ.

+

tư vấn thiết ké nội thất đẹp cho nhà ống

+

Phối cảnh 3D phòng ngủ 1 trong thiết kế nội thất đẹp cho nhà ống

+

Phòng ngủ 1 trong bản thiết kế nội thất đẹp cho nhà ống được bố trí như trong bản vẽ phối cảnh 3D với những đồ nội thất hiện đại như sau: Khu giường ngủ êm ái được đặt ngay thẳng cửa vào phòng, bên trên là những tiểu tiết trang trí cho tường được nhấn nhá sang trọng. 2 bên giường đặt một bàn trang điểm, 1 bàn đặt đèn ngủ và 1 tủ quần áo. Đối diện giường là kệ để ti vi, khu vực treo ảnh và 1 kệ trống để gia chủ có thể để sách hoặc vài món đồ lưu niệm. Tất cả các chi tiết nội thất tinh tế, vuông vắn đều được bố trí khoa học khiến cho không gian phòng ngủ tiện nghi, rộng rãi mang lại hiệu quả sử dụng cao.

+

tư vấn thiết ké nội thất đẹp cho nhà ống

+

Màu sắc nhã nhặn, hiện đại trong thiết kế phòng ngủ 1

+

Phòng ngủ hiện đại trong thiết kế nội thất đẹp cho nhà ống thực sự mang lại một không gian trẻ trung và tinh tế. Màu sắc chủ đạo của nội thất phòng ngủ 1 trong thiết kế là màu trắng tinh khiết, màu sắc của sự chân thành. thêm 1 khung cửa sổ đón ánh sáng tự nhiên khiến căn phòng như sáng hẳn lên. Gam màu cam nhạt cũng được pha trộn, kết hợp nhịp nhàng trong tổng thể. Tô điểm thêm gam màu ấm cho phòng ngủ là sàn gỗ màu nâu đỏ, tấm thảm trải sàn bằng long màu ghi sang trọng. Không gian phòng ngủ nhờ có sự kết hợp tinh tế giữ những tone màu mà vừa giữ được sự tươi mới, thoáng đãng lại vừa giữ được sự ấm cúng cho những cặp vợ chồng yêu thích sự nhẹ nhàng, đơn giản.

+

Nối tiếp phong cách hiện đại cho không gian riêng của những thành viên trong gia đình là phòng ngủ 2 trong bản vẽ thiết kế nội thất đẹp cho nhà ống. Hai phòng ngủ tuy tách biệt nhưng xét về tổng thể nội thất lại có sự liên kết thống nhất với nhau một cách hợp lý và khoa học. Dưới đây chính là bản vẽ 3D chi tiết các góc nhìn của phòng ngủ 2.

+

tư vấn thiết ké nội thất đẹp cho nhà ống

+

Phối cảnh 3D phòng ngủ 2 trong thiết kế nội thất đẹp cho nhà ống

+

Phòng ngủ 2 chỉ dành cho 1 người nên diện tích mặt sàn được bố trí hẹp hơn so với phòng ngủ 1. Tuy vậy nhưng phong cách và đồ nội thất cũng được bố trí và thiết kế tương tự như phòng ngủ lớn tạo sự đồng nhất trong mẫu thiết kế nội thất đẹp cho nhà ống. Sự liên kết thống nhất ấy cũng giúp thuận tiện hơn trong việc lựa chọn đồ nội thất cũng như cơ sở cung cấp đồ nội thất.

+

tư vấn thiết ké nội thất đẹp cho nhà ống

+

Không gian hiện đại, trẻ trung của phòng ngủ 2 trong thiết kế nội thất đẹp cho nhà ống

+

Từ cửa phòng đi vào, một không gian phòng ngủ trẻ trung hiện đại mở ra. Những đồ nội thất đơn giản hơn do diện tích phòng khá nhỏ, bao gồm: Giường, 1 bàn nhỏ, kệ để ti vi, tủ quần áo và một vài tiểu tiết trang trí trên tường. Cách bố trí và màu sắc ở phòng này cũng tương tự như phòng ngủ lớn và có phần trẻ trung nữ tính hơn. Nổi bật nhất có lẽ là cách lựa chọn màu ga trải giường, màu cam ấm vừa tạo điểm nhấn vừa khiến cho cả căn phòng trở nên có sắc màu hơn.

+

Tất cả những gì một thiết kế nội thất đẹp cho nhà ống cần có biểu hiện bởi phòng khách và 2 phòng ngủ đều được thể hiện hết trong bản thiết kế này. Nét đẹp bình dị truyền thống trong thiết kế nội thất được duy trì. Cùng với đó lại kết hợp sự hiện đại năng động giúp cho ngôi nhà vừa hài hòa với các xu hướng thiết kế hiện đại lại vừa đủ để tạo một điểm nhấn khác biệt độc đáo.

+

Tham khảo thêm: Tư vấn thiết kế biệt thự 2 tầng đẹp

+

LƯU Ý KHI CHỌN PHƯƠNG ÁN THUÊ THIẾT KẾ NỘI THẤT

+

Hiện nay việc thuê thiết kế nội thất đang ngày phổ biến. Tuy nhiên tôi cũng muốn nói thêm với bạn về một số điều lưu ý trong thiết kế nội thất đẹp cho nhà ống mà chúng tôi rút ra từ những khách hàng thực tế. Một số chủ đầu tư sau khi lựa chọn phương án thiết kế nội thất từ những kiến trúc sư có kinh nghiệm nhưng khi thi công lại tự ý sửa đổi, sắp xếp khác với phương án được đưa ra. Điều này đôi khi sẽ dẫn đến sự bất tiện trong công năng sử dụng cũng như gây ra những rủi ro về hiệu quả sử dụng nội thất. Khi đưa ra phương án thiết kế nội thất đẹp cho nhà ống cũng như bất kì một bản thiết kế nội thất nào, những kiến trúc sư của chúng tôi đều đã xem xét thật kĩ yêu cầu của chủ đầu tư cũng như tính toán những yếu tố kỹ thuật từ chi tiết nhỏ nhất. Vì vậy mà những phương án đưa ra cho khách hàng đều là những phương án tối ưu nhất, mang lại hiệu quả sử dụng cao nhất. Bất kì một sự thay đổi nào không được tính toán kỹ lưỡng cũng có thể dẫn đến rủi ro không đáng có. Chúng tôi mong rằng, mỗi khách hàng đến với Angcovat hãy tin tưởng kiến thức và kinh nghiệm của chúng tôi. Bạn có thể hiểu, khi thảo luận để phác thảo phương án thiết kế thì bạn hãy đưa ra tất cả những yêu cầu mà mình mong muốn, nhưng sau khi phương án hoàn thành và được bàn giao thì bạn nên hoàn toàn làm theo kế hoạch đã được vạch sẵn. Hoặc nếu có mong muốn thay đổi nào thì hãy trao đổi lại với chúng tôi, chúng tôi nhất định sẽ tính toán và giúp bạn đưa ra sự điều chỉnh hợp lý nhất để tránh sự bất tiện không đáng có.

+

Trên đây là tất cả những gì mà chúng tôi muốn chia sẻ với bạn về mẫu thiết kế nội thất nói chung và mẫu thiết kế nội thất đẹp cho nhà ống nói riêng. Nếu bạn có bất kì sự quan tâm hay nhu cầu thiết kế nội thất nào hãy liên lạc ngay với chúng tôi hoặc để lại bình luận phía dưới bải viết này. Chúng tôi rất mong chờ được hợp tác với bạn.

+ + +
+ + + + + +
+
+ + + + +
+ + + + +
+

Trả lời

Email của bạn sẽ không được hiển thị công khai.

+ +

+

+ +

+ +
+
+ +
+ +
+ + +
+ + + +
+ + + + + +
+
+
+ + + + + +
+
+
+ + +
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/cache/wp-rocket/localhost/2022/02/13/tu-van-thiet-ke-noi-that-dep-cho-nha-ong-hien-dai-nt115109/index-mobile.html_gzip b/wp-content/cache/wp-rocket/localhost/2022/02/13/tu-van-thiet-ke-noi-that-dep-cho-nha-ong-hien-dai-nt115109/index-mobile.html_gzip new file mode 100644 index 0000000000000000000000000000000000000000..0232fc69a6e31efe87e2470b30e1b599a5b07c31 GIT binary patch literal 20179 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 + + + + + + + + + +Tư vấn thiết kế nội thất đẹp cho nhà ống hiện đại NT115109 – Nội thất – kiến trúc An Việt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+ +
+
+ + + + +
+
+
+
+ + +

Tư vấn thiết kế nội thất đẹp cho nhà ống hiện đại NT115109

+
+ + +
+
+ + +
+
+
+ + +

Thiết kế nội thất luôn là nhân tố song hành với thiết kế ngoại thất để tạo nên vẻ đẹp toàn diện cho mọi ngôi nhà. Khi thiết kế nội thất thì tính khoa học và sự kết nối với ngoại thất là điều vô cùng quan trọng. Mẫu thiết kế nội thất đẹp cho nhà ống này của chúng tôi cũng vậy. Sự kết nối hoàn chỉnh với thiết kế ngoại thất được thể hiện khá trọn vẹn trong công trình thiết kế nội thất đẹp cho nhà ống của anh Trung tại Khương Thượng – Đống Đa – Hà Nội. Ngôi nhà của anh Trung nằm nổi bật trên con phố bởi phong cách ngoại thất hiện đại kết hợp với một vài nét truyền thống tinh tế khác biệt so với xung quanh. Chính vì lẽ đó mà thiết kế nội thất đẹp cho nhà ống cũng rất cần có sự kết hợp giữa những nét hiện đại và truyền thống một cách khoa học nhất. Dưới đây là toàn bộ thông tin và bản vẽ 3D chi tiết mẫu thiết kế nội thất đẹp cho nhà ống mà chúng tôi muốn giới thiệu đến bạn hôm nay.

+

TÓM TẮT THÔNG TIN BẢN THIẾT KẾ NỘI THẤT ĐẸP CHO NHÀ ỐNG

+

Trước tiên là một số thông tin cơ bản về mẫu thiết kế nội thất đẹp cho nhà ống mà chúng tôi đã hoàn thành.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
    +
  • CÔNG TRÌNH
  • +
+
+

 Thiết kế nội thất đẹp cho nhà ống

+
+
    +
  • CHỦ ĐẦU TƯ
  • +
+
+

 Anh Trung

+
+
    +
  • ĐỊA ĐIỂM XÂY DỰNG
  • +
+
+

 Khương Thượng – Đống Đa – Hà Nội

+
+
    +
  • YÊU CẦU:
  • +
+
+

 – Nội thất phòng khách

+

 – Nội thất 2 phòng ngủ

+
+
    +
  • PHONG CÁCH
  • +
+
+

 Hiện đại kết hợp truyền thống

+
+
    +
  • KIẾN TRÚC SƯ THIẾT KẾ
  • +
+
+

 Kiến trúc sư Angcovat

+
+
    +
  • CHI PHÍ TẠM TÍNH
  • +
+
+

 

+
+
    +
  • ĐỒ NỘI THẤT
  • +
+
+

 Bao gồm đầy đủ các đồ nội thất phòng khách và 2 phòng ngủ.

+
+

 

+

Là ngôi nhà ống của chủ đầu tư là anh Trung ở Khương Thượng – Đống Đa – Hà Nội chưa có một ý tưởng thiết kế nội thất nào cũng như chưa có những đồ nội thất quan trọng. Vì thế chủ đầu tư muốn tìm cho mình một đơn vị thiết kế nội thất đẹp cho nhà ống và phải đáng tin cậy. Với đơn giá 200.000đ/m2 được áp dụng cho gói thiệt kế nội thất nhà ở và đội ngũ kiến trúc sư giàu kinh nghiệm từ nhiều năm trong nghề, Công ty Angcovat là đơn vị phù hợp nhất cho anh lựa chọn để thiết kế nội thất đẹp cho nhà ống của mình.

+

Là công ty am hiểu về cả kiến trúc ngoại thất và thiết kế nội thất nên chúng tôi hiểu rất rõ sự quan trọng của mối quan hệ, sự liên kết thống nhất giữa ngoại thất với nội thất sẽ tạo nên nét đẹp hoàn hảo cho tổng thể ngội nhà. Chính vì thế, để thiết kế nội thất đẹp cho nhà ống thì không gian nội thất phải ấn tượng và kết hợp khoa học với tổng thể kiến trúc.  Tuy nhiên chúng tôi chỉ được yêu cầu thiết kế nội thất cho những phòng chức năng quan trọng chứ không phải toàn bộ ngôi nhà. Cụ thể đó là phòng khách + thờ, 1 phòng ngủ của vợ chồng anh Trung, một phòng ngủ của con anh.

+

PHONG CÁCH TỔNG THỂ MẪU THIẾT KẾ NỘI THẤT ĐẸP CHO NHÀ ỐNG 1 PHÒNG KHÁCH 2 PHÒNG NGỦ

+

Bước đầu nhìn nhận, đối tượng lần này là mẫu nhà có diện tích không lớn, phong cách ngoại thất là sự pha trộn và kết hợp tinh tế giữa hiện đại và truyền thống. Với kiến trúc ngoại thất như thế cũng phần nào nói lên được phong cách sống cũng như thói quen sinh hoạt của gia đình anh Trung. Chắc hẳn gia đình anh rất yêu thích phong cách sống hiện đại năng động nhưng cũng không quên những nét văn hóa truyền thống cần được duy trì và truyền bá cho con cháu. Chưa từng làm việc với chủ đầu tư trong thiết kế ngoại thất cũng như chưa hiểu rõ đươc cách thức làm việc của anh Trung, bước đầu khi thiết kế nội thất đẹp cho nhà ống của gia chủ, chúng tôi cũng đã có rất nhiều khó khăn. Để thiết kế nội thất đẹp cho nhà ống thì các chi tiết giữa 2 phong cách hiện đại và truyền thống phải kết hợp sao cho thật tinh tế mà vẫn giữ được sự khoa học, tiện nghi cho ngôi nhà.

+

Về tổng thể, công ty được yêu cầu thiết kế nội thất đẹp cho nhà ống chỉ đối với phòng khách + thờ và 2 phòng ngủ. Với phòng khách + thờ là không gian chung của cả nhà và là nơi tiếp khách nên gia chủ dành một sự quan tâm đặc biệt đến phong cách thiết kế. Phong cách hiện đại và truyền thống chính là sẽ kết hợp với nhau tại đây để tôn nên tất cả những nét tinh tế nhất của ngôi nhà. Còn lại 2 phòng ngủ là không gian riêng và mọi người đều yêu thích sự hiện đại trẻ trung nên anh yêu cầu thiết kế nội thất của 2 phòng ngủ theo phong cách hiện đại.

+

Thêm một vài yếu tố liên quan đến phong thủy mà chủ đầu tư yêu cầu. Anh đưa ra yêu cầu về màu sắc trong phòng khách và phòng ngủ của vợ chồng anh phải có màu chủ đạo là màu nâu, màu tương hợp với người thuộc hành thổ. Điều này cũng mang lại lợi thế khi thiết kế nội thất đẹp cho nhà ống vì tone màu này là màu tự nhiên của gỗ và nó cũng là tone màu dễ dàng làm nổi bật nét truyền thống và sự sang trọng, lịch lãm.

+

Với tất cả những yêu cầu trên về phong cách thiết kế, những lưu ý về sự tiện nghi, về yếu tố phong thủy,… Chúng tôi đã tư vấn và hoàn thành phương án thiết kế nội thất đẹp cho nhà ống trong phòng khách + thờ và 2 phòng ngủ của anh Trung như sau:

+

Tham khảo thêm: Tư vấn thiết kế biệt thự 2 tầng kiểu pháp đẹp

+

PHÒNG KHÁCH + THỜ TINH TẾ TRONG THIẾT KẾ NỘI THẤT ĐẸP CHO NHÀ ỐNG

+

Đối với những mẫu nhà ống thì phòng khách luôn là phòng được đặt ngay đầu tiên khi từ sảnh chính đi vào. Vì đặc điểm về kiến trúc nên bố cục nhà ống được sắp xếp như thế để giúp ngôi nhà tiện nghi và là sắp xếp hợp lý để thấy được nét đẹp từ phong cách nội thất ngay khi bước vào. Để thiết kế nội thất đẹp cho nhà ống thì chúng ta cũng cần lưu ý đặc điểm về bố cục này của mẫu nhà.

+

thiết kế nội thất đẹp cho nhà ống

+

Không gian dành cho việc thờ cúng tổ tiên được thiết kế ngay tại phòng khách

+

Ấn tượng đầu tiên khi của thiết kế nội thất đẹp cho nhà ống chính là phòng khách ngập tràn không gian truyền thống trang trọng được pha trộn thêm chút hiện đại năng động. Không xa hoa lộng lẫy, không rực rỡ sắc màu, thiết kế nội thất đep cho nhà ống đề cao sự gọn gàng, giản dị ở phòng khách. Phải kể đến trước tiên là không gian bàn thờ tổ tiên được thiết kế ngay tại phòng khách, một không gian trang trọng lịch sự thể hiện sự tri ơn nguồn cội.

+

thiết kế nội thất phòng thờ đẹp cho nhà ống

+

Bàn thờ bằng gỗ được thiết kế đơn giản mà trang trọng

+

Không gian thờ trong thiết kế nội thất đẹp cho nhà ống dường như chứa đựng phong cách của người dân Nam bộ. Phía trước là 1 bàn cơm nhỏ được kê thấp sử dụng để dọn cỗ cúng những ngày lễ tết. Cao hơn hẳn và lùi về phía sau là tủ thờ hay bàn thờ được kê sát tường để bày đỉnh, dĩa, chò, chân đèn, bình hoa, chung trà,… Cách bài trí này vô cùng đơn giản, tone màu gỗ tự nhiên thể hiện sự bình dị, trầm ấm. Hệ thống cửa và rèm cửa hiện đại cũng được lựa chọn với tone màu nhã nhặn tăng thêm phần sang trọng cho không gian chung.

+

Chất liệu gỗ được đưa vào trong thiết kế nội thất đẹp cho nhà ống có thể được lựa chọn tùy thuộc nhu cầu và mong muốn của mỗi gia đình. Thường thì loại gỗ được lựa chọn sử dụng đều là những loại tốt nhất vì những đồ nội thất này có thể sẽ gắn liền với ngôi nhà của chúng ta rất lâu. Khi nhu cầu sử dụng cũng có những điều khác nhau thì việc mỗi gia đình lựa chọn loại gỗ cao cấp hay tầm trung đều phụ thuộc vào điều kiện sử dụng riêng biệt. Điều hiển nhiên là các loại gỗ khác nhau thì có chất lượng khác nhau, giá cả khác nhau cũng như điều kiện sử dụng khác nhau. Việc lựa chọn chất liệu cho bàn thờ được xem xét vô cùng kỹ lưỡng vì bàn thờ là nơi ling thiêng, gỗ làm bàn thờ phải bền, chắc, dễ chạm khắc và có hương thơm. Theo chúng tôi thì chất liệu gỗ Dổi là vô cùng phù hợp trong thiết kế nội thất đẹp cho nhà ống – loại gỗ được sử dụng phổ biến có khả năng chống mối tự nhiên, độ bền cao, có hương thơm, nhẹ, dễ dàng chạm khắc và vận chuyển. Giá cho nội thất dùng chất liệu gỗ Dổi cũng giao động chỉ từ vài triệu đến vài trăm triệu nên được nhiều người ưa chuộng. Hoặc nếu gia đình có điều kiện hơn thì khi làm bàn thờ  bạn cũng có thể lựa chọn chất liệu gỗ quý khác như gỗ Hương, gỗ Gụ, gỗ Vàng tâm,…

+

Không gian phòng khách + thờ còn có sự kết hợp độc đáo tại khu vực bàn tiếp khách, chúng tôi đánh giá đây là sự táo bạo trong thiết kế nội thất đẹp cho nhà ống.

+

thiết ké nội thất đẹp cho nhà ống

+

Phối cảnh 3D khu vực bàn tiếp khách

+

Màu sắc chủ đạo tươi sáng, nhã nhặn mang lại cho tổng thể không gian tiếp khách sự sang trọng và giá trị thẩm mỹ cao. Sự trẻ trung, năng động trong phong cách sống của gia đình được thể hiện xuất sắc qua nhiều chi tiết như: khu vực để ti vi, chậu hoa, bức họa treo tường, đèn trần tinh tế, thảm trải sàn… Tất cả sử dụng tone màu sáng để tạo hiệu ứng mang lại không gian thư giãn rộng rãi, thoải mái cho khu vực đón khách.

+

Với một không gian hiện đại thì điều mà chúng ta thường hay bắt gặp đó là một bộ bàn ghế sofa lớn mềm mại, êm ái. Tuy nhiên trong thiết kế nội thất đẹp cho nhà ống này chúng tôi chọn sự mạo hiểm đó là kết hợp vào đây một bộ bàn ghế gỗ giản dị, vuông vắn. Cân nhắc khá nhiều về mẫu mã và bộ bàn ghế chúng tôi lựa chọn đã được tối giản về thiết kế đặt lên trên ghế là những tấm đệm êm ái. Một sự kết hợp tưởng chừng như không thể nghĩ đến lại mang lại một nét đẹp tinh tế và sự kết nối thống nhất đến vậy. Không gian bàn tiếp khách vừa hiện đại lại vừa trở nên rộng rãi hơn, bình dị hơn và có tính liên kết hơn với khu vực bàn thờ truyền thống.

+


tư vấn thiết kế nội thất đẹp cho nhà ống

+

Không gian bàn tiếp khách hiện đại pha lẫn nét truyền thống

+

Phòng khách là không gian con người ta sẽ bắt gặp ngay khi bước tới 1 ngôi nhà ống, vì vậy mà thiết kế nội thất đẹp cho nhà ống mấu chốt chính ở điểm dừng đầu tiên này. Với nét hiện đại kết hợp với truyền thống 1 cách tinh tế khoa học, nội thất đã liên kết một cách thống nhất với ngoại thất tạo ra một ấn tượng vô cùng khác biệt và táo bạo.

+

Tham khảo thêm: Giới thiệu các mẫu thiết kế biệt thự 3 tầng đẹp vô cùng ấn tượng

+

THIẾT KẾ PHÒNG NGỦ ĐẸP HIỆN ĐẠI CHO NHÀ ỐNG

+

Gia đình chủ đầu tư ít người, công năng sử dụng không nhiều nên bố trí mặt bằng ngôi nhà ống chỉ bao gồm 2 phòng ngủ bao gồm 1 phòng cho vợ chồng gia chủ và 1 phòng cho con. Như trong bản vẽ thiết kế nội thất đẹp cho nhà ống ta có thể thấy diện tích phòng ngủ khá rộng giúp mang lại hiệu quả sử dụng cao cho gia chủ.

+

tư vấn thiết ké nội thất đẹp cho nhà ống

+

Phối cảnh 3D phòng ngủ 1 trong thiết kế nội thất đẹp cho nhà ống

+

Phòng ngủ 1 trong bản thiết kế nội thất đẹp cho nhà ống được bố trí như trong bản vẽ phối cảnh 3D với những đồ nội thất hiện đại như sau: Khu giường ngủ êm ái được đặt ngay thẳng cửa vào phòng, bên trên là những tiểu tiết trang trí cho tường được nhấn nhá sang trọng. 2 bên giường đặt một bàn trang điểm, 1 bàn đặt đèn ngủ và 1 tủ quần áo. Đối diện giường là kệ để ti vi, khu vực treo ảnh và 1 kệ trống để gia chủ có thể để sách hoặc vài món đồ lưu niệm. Tất cả các chi tiết nội thất tinh tế, vuông vắn đều được bố trí khoa học khiến cho không gian phòng ngủ tiện nghi, rộng rãi mang lại hiệu quả sử dụng cao.

+

tư vấn thiết ké nội thất đẹp cho nhà ống

+

Màu sắc nhã nhặn, hiện đại trong thiết kế phòng ngủ 1

+

Phòng ngủ hiện đại trong thiết kế nội thất đẹp cho nhà ống thực sự mang lại một không gian trẻ trung và tinh tế. Màu sắc chủ đạo của nội thất phòng ngủ 1 trong thiết kế là màu trắng tinh khiết, màu sắc của sự chân thành. thêm 1 khung cửa sổ đón ánh sáng tự nhiên khiến căn phòng như sáng hẳn lên. Gam màu cam nhạt cũng được pha trộn, kết hợp nhịp nhàng trong tổng thể. Tô điểm thêm gam màu ấm cho phòng ngủ là sàn gỗ màu nâu đỏ, tấm thảm trải sàn bằng long màu ghi sang trọng. Không gian phòng ngủ nhờ có sự kết hợp tinh tế giữ những tone màu mà vừa giữ được sự tươi mới, thoáng đãng lại vừa giữ được sự ấm cúng cho những cặp vợ chồng yêu thích sự nhẹ nhàng, đơn giản.

+

Nối tiếp phong cách hiện đại cho không gian riêng của những thành viên trong gia đình là phòng ngủ 2 trong bản vẽ thiết kế nội thất đẹp cho nhà ống. Hai phòng ngủ tuy tách biệt nhưng xét về tổng thể nội thất lại có sự liên kết thống nhất với nhau một cách hợp lý và khoa học. Dưới đây chính là bản vẽ 3D chi tiết các góc nhìn của phòng ngủ 2.

+

tư vấn thiết ké nội thất đẹp cho nhà ống

+

Phối cảnh 3D phòng ngủ 2 trong thiết kế nội thất đẹp cho nhà ống

+

Phòng ngủ 2 chỉ dành cho 1 người nên diện tích mặt sàn được bố trí hẹp hơn so với phòng ngủ 1. Tuy vậy nhưng phong cách và đồ nội thất cũng được bố trí và thiết kế tương tự như phòng ngủ lớn tạo sự đồng nhất trong mẫu thiết kế nội thất đẹp cho nhà ống. Sự liên kết thống nhất ấy cũng giúp thuận tiện hơn trong việc lựa chọn đồ nội thất cũng như cơ sở cung cấp đồ nội thất.

+

tư vấn thiết ké nội thất đẹp cho nhà ống

+

Không gian hiện đại, trẻ trung của phòng ngủ 2 trong thiết kế nội thất đẹp cho nhà ống

+

Từ cửa phòng đi vào, một không gian phòng ngủ trẻ trung hiện đại mở ra. Những đồ nội thất đơn giản hơn do diện tích phòng khá nhỏ, bao gồm: Giường, 1 bàn nhỏ, kệ để ti vi, tủ quần áo và một vài tiểu tiết trang trí trên tường. Cách bố trí và màu sắc ở phòng này cũng tương tự như phòng ngủ lớn và có phần trẻ trung nữ tính hơn. Nổi bật nhất có lẽ là cách lựa chọn màu ga trải giường, màu cam ấm vừa tạo điểm nhấn vừa khiến cho cả căn phòng trở nên có sắc màu hơn.

+

Tất cả những gì một thiết kế nội thất đẹp cho nhà ống cần có biểu hiện bởi phòng khách và 2 phòng ngủ đều được thể hiện hết trong bản thiết kế này. Nét đẹp bình dị truyền thống trong thiết kế nội thất được duy trì. Cùng với đó lại kết hợp sự hiện đại năng động giúp cho ngôi nhà vừa hài hòa với các xu hướng thiết kế hiện đại lại vừa đủ để tạo một điểm nhấn khác biệt độc đáo.

+

Tham khảo thêm: Tư vấn thiết kế biệt thự 2 tầng đẹp

+

LƯU Ý KHI CHỌN PHƯƠNG ÁN THUÊ THIẾT KẾ NỘI THẤT

+

Hiện nay việc thuê thiết kế nội thất đang ngày phổ biến. Tuy nhiên tôi cũng muốn nói thêm với bạn về một số điều lưu ý trong thiết kế nội thất đẹp cho nhà ống mà chúng tôi rút ra từ những khách hàng thực tế. Một số chủ đầu tư sau khi lựa chọn phương án thiết kế nội thất từ những kiến trúc sư có kinh nghiệm nhưng khi thi công lại tự ý sửa đổi, sắp xếp khác với phương án được đưa ra. Điều này đôi khi sẽ dẫn đến sự bất tiện trong công năng sử dụng cũng như gây ra những rủi ro về hiệu quả sử dụng nội thất. Khi đưa ra phương án thiết kế nội thất đẹp cho nhà ống cũng như bất kì một bản thiết kế nội thất nào, những kiến trúc sư của chúng tôi đều đã xem xét thật kĩ yêu cầu của chủ đầu tư cũng như tính toán những yếu tố kỹ thuật từ chi tiết nhỏ nhất. Vì vậy mà những phương án đưa ra cho khách hàng đều là những phương án tối ưu nhất, mang lại hiệu quả sử dụng cao nhất. Bất kì một sự thay đổi nào không được tính toán kỹ lưỡng cũng có thể dẫn đến rủi ro không đáng có. Chúng tôi mong rằng, mỗi khách hàng đến với Angcovat hãy tin tưởng kiến thức và kinh nghiệm của chúng tôi. Bạn có thể hiểu, khi thảo luận để phác thảo phương án thiết kế thì bạn hãy đưa ra tất cả những yêu cầu mà mình mong muốn, nhưng sau khi phương án hoàn thành và được bàn giao thì bạn nên hoàn toàn làm theo kế hoạch đã được vạch sẵn. Hoặc nếu có mong muốn thay đổi nào thì hãy trao đổi lại với chúng tôi, chúng tôi nhất định sẽ tính toán và giúp bạn đưa ra sự điều chỉnh hợp lý nhất để tránh sự bất tiện không đáng có.

+

Trên đây là tất cả những gì mà chúng tôi muốn chia sẻ với bạn về mẫu thiết kế nội thất nói chung và mẫu thiết kế nội thất đẹp cho nhà ống nói riêng. Nếu bạn có bất kì sự quan tâm hay nhu cầu thiết kế nội thất nào hãy liên lạc ngay với chúng tôi hoặc để lại bình luận phía dưới bải viết này. Chúng tôi rất mong chờ được hợp tác với bạn.

+ + +
+ + + + + +
+
+ + + + +
+ + + + +
+

Trả lời

Email của bạn sẽ không được hiển thị công khai.

+ +

+

+ +

+ +
+
+ +
+ +
+ + +
+ + + +
+ + + + + + + + + +
+
+
+
+ + Facebook Messenger +
+
+
+ Chat với chúng tôi qua Zalo +
+ +
+
+ Gọi ngay +
+ + + + + +
+ + +
+
+ +
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/cache/wp-rocket/localhost/2022/02/13/tu-van-thiet-ke-noi-that-dep-cho-nha-ong-hien-dai-nt115109/index.html_gzip b/wp-content/cache/wp-rocket/localhost/2022/02/13/tu-van-thiet-ke-noi-that-dep-cho-nha-ong-hien-dai-nt115109/index.html_gzip new file mode 100644 index 0000000000000000000000000000000000000000..d724bfe07cb251a3ebab9f5b7e27f4b3885baec3 GIT binary patch literal 20334 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 XU6bfynU#WFelL8Si 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 + + + + + + + + + +Tư vấn thiết kế nội thất phòng khách 25m2 kết hợp phòng thờ đẹp ở Long Biên Hà Nội NT526060 – Nội thất – kiến trúc An Việt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+ +
+
+ + + + +
+
+
+
+ + +

Tư vấn thiết kế nội thất phòng khách 25m2 kết hợp phòng thờ đẹp ở Long Biên Hà Nội NT526060

+
+ + +
+
+ + +
+
+
+ + +

 Nếu như vẻ đẹp ngoại thất mang lại sức hút ban đầu khi ngắm nhìn một ngôi nhà thì thiết kế nội thất không chỉ mang tới vẻ đẹp thẩm mỹ mà còn cả giá trị tiện nghi, cách bài trí thông minh khoa học, đảm bảo giá trị của một không gian sống đẳng cấp. Vì thế một ngôi nhà đẹp không chỉ cần thỏa mãn yếu tố ngoại thất mà còn phải đảm bảo cả giá trị công năng, tiện nghi cho người sử dụng. Đó cũng là lý do mà anh Dũng ở Long Biên cần chúng tôi tư vấn thiết kế nội thất phòng khách 25m2 kết hợp phòng thờ. Cùng chúng tôi tham khảo những hình ảnh tuyệt vời về nội thất phòng khách sang trọng, đẳng cấp dưới đây nhé!

+

BẢNG TÓM TẮT THÔNG TIN MẪU THIẾT KẾ NỘI THẤT PHÒNG KHÁCH 25M2 Ở LONG BIÊN

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
    +
  • CÔNG TRÌNH
  • +
+
 Thiết kế nội thất phòng khách kết hợp phòng thờ 
+
    +
  • CHỦ ĐẦU TƯ
  • +
+
 Anh Đặng Văn Dũng
+
    +
  • ĐỊA ĐIỂM XÂY DỰNG
  • +
+
 Long Biên – Hà Nội
+
    +
  • YÊU CẦU
  • +
+
+

 Thiết kế nội thất phòng khách 25m2 kết hợp phòng thờ

+
+
    +
  • PHONG CÁCH
  • +
+
 Phong cách bằng gỗ truyền thống, sử dụng đồ nội thất sang trọng và bề thế
+
    +
  • KIẾN TRÚC SƯ THIẾT KẾ
  • +
+
 Kiến trúc sư Angcovat
+
    +
  • CHI PHÍ TẠM TÍNH
  • +
+
 Khoảng 5.5 triệu đồng/m2
+
    +
  • ĐỒ NỘI THẤT
  • +
+
+

 Bàn thờ, vách trang trí bằng gỗ, bàn ghế phòng khách, tủ kệ tivi, đèn trang trí, tranh treo tường, trần thạch cao có ốp gỗ trang trí, sàn gỗ.

+
+

 CÁCH BÀI TRÍ KHÔNG GIAN MẪU THIẾT KẾ NỘI THẤT PHÒNG KHÁCH 25M2 

+

 Mặt bằng công năng sử dụng là một trong những phần quan trọng được thực hiện đầu tiên khi ký kết hợp đồng tư vấn thiết kế nội thất hay ngoại thất của công ty kiến trúc ANG. Sở dĩ mặt bằng công năng rất quan trọng bởi nó quyết định giá trị sử dụng sau này của các thành viên trong gia đình có thoải mái hay không, có đáp ứng được các tiêu chuẩn sống hay không. Vì vậy khi thỏa mãn được cách sắp xếp định vị không gian chức năng đảm bảo phù hợp với thói quen sinh hoạt của gia đình chúng tôi mới triển khai bước tiếp theo. Từ một bản vẽ mặt bằng có thể triển khai được rất nhiều phương án phối cảnh khác nhau. Vì thế việc lên ý tưởng mặt bằng thiết kế nội thất phòng khách 25m2 được tư vấn thực hiện đầu tiên.

+

Tìm hiểu: mẫu thiết kế phòng khách và phòng thờ đẹp

+

mặt bằng thiết kế nội thất phòng khách 25m2

+

 Bản vẽ mặt bằng nội thất mẫu thiết kế nội thất phòng khách 25m2 ở Long Biên Hà Nội

+

Nếu như mặt tiền được coi là bộ mặt của một ngôi nhà khi thiết kế ngoại thất biệt thự đẹp thì phòng khách lại là không gian chính của ngôi nhà, nơi tiếp đón các vị khách quý, anh chị em bạn bè, người thân tới thăm nhà. Nơi đây còn là sum họp các thành viên trong gia đình cùng thưởng thức bộ phim hay, cùng tâm sự sẻ chia những niềm vui, nỗi buồn trong cuộc sống thường nhật. Vì thế thiết kế nội thất phòng khách vô cùng quan trọng. Không gian phòng khách kết hợp phòng thờ của gia đình anh Dũng có diện tích 25m2. So với các mẫu nhà phố thì diện tích 25m2 dành cho phòng khách không phải là nhỏ. Nó chiếm phần chính yếu trong tầng trệt của ngôi nhà. Phòng khách được chúng tôi lên ý tưởng phân chia thành 2 phần chức năng quan trọng và chính yếu đó là ban thờ cúng tổ tiên và bàn ghế tiếp khách. Các không gian phân chia dựa vào đồ vật đặt vào chứ không cần ngăn cách bởi tường hay vách ngăn với mục đích tiết kiệm diện tích. Để thuận tiện cho sinh hoạt và hướng tới không gian rộng mở kết nối với thiên nhiên chúng tôi thiết kế 2 cửa ra vào trong đó một cửa ra vào hướng vào ban thờ và 1 cửa ra vào phòng khách. Một chi tiết nhỏ thôi nhưng giúp cho sinh hoạt của gia đình thêm phần thuận tiện đặc biệt khi gia đình có khách, nhà có giỗ chạp hay những ngày tề tựu sum họp của cả gia đình, anh em họ hàng. Không gian rộng mở, đi lại ra vào thuận tiện đó chính là giá trị của thiết kế mặt bằng công năng sử dụng.

+

Thiết kế nội thất phòng khách 25m2 kết hợp phòng thờ bằng gỗ tự nhiên 

+

thiết kế nội thất phòng khách 25m2 đẹp

+

 Phối cảnh view 1: Mẫu thiết kế nội thất phòng khách 25m2 bằng gỗ tự nhiên sang trọng

+

Khi thiết kế nội thất phòng khách 25m2 chúng tôi đã có buổi làm việc, khảo sát hiện trạng, đo đạc kích thước một cách tỷ mỉ chi tiết, tránh trường hợp thiết kế bị sai lệch, mất cân bằng thẩm mỹ. Kiến trúc sư Angcovat gặp gỡ và ký hợp đồng thiết kế cũng như trao đổi về nhu cầu công năng với gia đình anh Dũng. Qua buổi làm việc, tiếp xúc trao đổi cũng là cách để chúng tôi định hướng phong cách kiến trúc sao cho phù hợp với sở thích, cá tính gia chủ. Anh Dũng là người khá cầu toàn, nghiêm túc và chỉn chu vì vậy các đồ vật trong gia đình đòi hỏi phải có sự khéo léo trong cách sắp xếp, tinh túy và vô cùng thẩm mỹ. Với những yêu cầu đó chúng tôi nhận định rằng mẫu thiết kế phòng khách kết hợp phòng thờ bằng gỗ tự nhiên là phù hợp hơn cả. 

+

Gỗ tự nhiên rất đa dạng và phong phú về chủng loại, trong đó phải kể tới một số loại gỗ quý bán chạy trên thị trường như gỗ óc chó, gỗ gõ đỏ, gỗ gụ,… Chúng tôi lựa chọn loại gỗ có màu gụ tự nhiên, sang trọng và ấn tượng vô cùng. Toàn bộ không gian phòng khách kết hợp phòng thờ đều được trang trí bằng loại gỗ này từ gỗ ốp trần, gỗ ban thờ, bàn ghế tiếp khách, kệ tủ tivi, tranh treo tường,… Đồng bộ hóa trong thiết kế cả về màu sắc lẫn chất liệu giúp ngôi nhà thêm phần sang trọng, bề thế. Chắc hẳn ai bước tới không gian phòng khách cũng cảm nhận được sự chuẩn bị chu đáo của gia chủ, sự nồng nhiệt thịnh tình của chính chủ nhân sở hữu ngôi nhà. Không gian phòng khách và phòng thờ nối tiếp nhau tạo sự liền mạch, tiết kiệm diện tích nhất là trong bối cảnh tấc đất tấc vàng như hiện nay. 

+

 Thiết kế nội thất phòng khách 25m2 bằng gỗ tự nhiên toát lên vẻ đẹp bề ngoài cùng với những đặc tính tốt như độ bền chắc chắn, ít bị cong vênh hay mối mọt, bền màu, trường tồn theo thời gian. Vì lẽ đó mà giá thành của gỗ tự nhiên cũng không phải rẻ, kén người sử dụng, đòi hỏi phải là những gia đình có điều kiện mới quyết định đầu tư.  

+

Tham khảo: thiết kế nội thất phòng khách có bàn thờ

+

thiết kế nội thất phòng khách 25m2 bằng gỗ

+

 Phối cảnh view 3: mẫu thiết kế nội thất phòng khách 25m2 sang trọng với những họa tiết trạm trổ cầu kỳ

+

Điểm nhấn của bản vẽ thiết kế nội thất phòng khách 25m2 này chính là bộ bàn ghế tiếp khách được làm hoàn toàn bằng gỗ tự nhiên có trạm khắc các hoa văn tinh vi và tinh xảo. Điều này đòi hỏi cả kiến trúc sư thiết kế và thợ thi công phải có tay nghề cao, kinh nghiệm lâu năm để phác họa được những hoa văn tinh tế như vậy. Các hoa văn được trạm trổ cầu kỳ, cân đối và còn giữ được vẻ đẹp hoàn hảo nhờ những đường vân gỗ tự nhiên. Gỗ tự nhiên được chú trọng còn là bởi sự thân thiện với môi trường trong khi các vật liệu khác thường được sản xuất công nghiệp, hóa chất ảnh hưởng ít nhiều tới môi trường và sức khỏe con người. Chắc chắn khi thiết kế phòng khách bằng gỗ tự nhiên sẽ tạo được sự sang trọng, thanh lịch và ấm áp gần gũi vô cùng. Để trang trí thêm cho không gian nội thất phòng khách, gia chủ có thể để thêm lọ hoa, ấm chén tiếp khách trên bàn ngăn nắp gọn gàng.

+

Tủ kệ tivi cũng được thiết kế bằng gỗ tự nhiên có trạm khắc hoa văn đẹp mắt hoàn hảo. Ngay cả trần, sàn cũng đều được thi công bằng gỗ tự nhiên khiến không gian càng trở nên sang trọng hơn bao giờ hết. Kết hợp với ánh sáng của đèn điện khiến mẫu thiết kế phòng khách 25m2 càng trở nên lung linh và tuyệt vời hơn bao giờ hết.

+

MỘT VÀI LƯU Ý KHI THIẾT KẾ NỘI THẤT PHÒNG KHÁCH 25M2 KẾT HỢP PHÒNG THỜ PHÙ HỢP PHONG THỦY 

+

thiết kế nội thất phòng khách 25m2 có phòng thờ sang trọng

+

 Phối cảnh view 4: thiết kế nội thất phòng khách 25m2 kết hợp phòng thờ hợp phong thủy

+

Với văn hóa tín ngưỡng thờ cúng tổ tiên của người dân Việt Nam, trong gia đình đều có thiết kế ban thờ có thể kết hợp phòng khách hoặc làm thành phòng riêng. Với những căn nhà phố có diện tích khiêm tốn hay nhà chung cư thì phòng thờ thường được bố trí cùng với phòng khách. Mẫu thiết kế nội thất phòng khách 25m2 kết hợp phòng thờ của gia đình anh Dũng được chúng tôi nghiên cứu kỹ đảm bảo các yếu tố về mặt diện tích, công năng kích thước và thẩm mỹ cũng như phù hợp về phong thủy. Để có thể mang tới tài vận cho gia chủ và các thành viên trong gia đình, việc đặt ban thờ như thế nào trong phòng khách là điều hết sức quan trọng. Một trong số những nguyên tắc chúng tôi áp dụng trong cách sắp đặt thiết kế phòng thờ như:

+

+ KHông đặt ban thờ ở cạnh bếp, nhà vệ sinh vì như thế được coi là không tỏ lòng thành kính, trang nghiêm.

+

+ Không bài trí ban thờ gia tiên dưới chân cầu thang, dưới sàn nhà hoặc những vị trí khuất, tối tăm. Chính vì vậy chúng tôi thiết kế ban thờ được đặt ở vị trí trang nghiêm, đối diện cửa ra vào, ở cạnh phòng khách nơi trang trọng và lịch sự trong nhà.

+

+ Tránh đặt ban thờ ở nơi có ánh sáng mặt trời trực tiếp chiếu vào.

+

+ Tránh thiết kế ban thờ đối diện với bể cá.

+

…..

+

Các nguyên tắc đặt vị trí ban thờ hợp phong thủy được kiến trúc sư Angcovat tuân thủ và đảm bảo sự hài hòa với không gian kết hợp với phòng khách trong diện tích tổng thể 25m2. Ngay cả hướng ban thờ hướng ra cửa chính là hướng sinh khí của chủ nhà, điều này rất quan trọng bởi theo quan niệm phong thủy từ xa xưa, ban thờ cần đặt ở các cung tốt như âm quý nhân, dương quý nhân, thiên lộc, thiên mã, diên thọ, tài lộc, tử tức thì sẽ thu nạp được sinh khí, con cháu được hưởng phúc, mọi điều như ý. 

+

Xem thêm: Tư vấn thiết kế văn phòng làm việc bằng gỗ tự nhiên 

+

thiết kế nội thất phòng khách 25m2 kết hợp phòng thờ

+

 Phối cảnh view 5: mẫu thiết kế nội thất phòng khách 25m2 kết hợp phòng thờ truyền thống

+

Cách bài trí không gian ban thờ từ vị trí đặt, kích thước ban thờ, chiều cao ban thờ,… đều được chúng tôi tư vấn miễn phí cho gia chủ, đảm bảo phù hợp với các nguyên tắc của khoa học phong thủy. Mẫu thiết kế nội thất phòng khách 25m2 kết hợp phòng thờ của gia đình anh Dũng được sử dụng bằng gỗ tự nhiên truyền thống và mang đậm giá trị bảo tồn văn hóa dân tộc, tín ngưỡng dân gian. Đây là những điều mà đang bị mai một trong cuộc sống hiện đại, cởi mở như hiện nay. Vì thế những không gian phòng khách kết hợp phòng thờ bằng gỗ tự nhiên sang trọng như này càng ngày càng hiếm và rất trân quý. Giúp con cháu hiểu được giá trị về truyền thống nhân văn của ông bà ta, tục lệ thờ cúng tổ tiên, giữ gìn nét đẹp văn hóa uống nước nhớ nguồn của dân ta. Nơi thờ cúng tổ tiên còn là nơi con cháu bày tỏ lòng biết ơn của thế hệ sau với tổ tiên ông bà những người đã khuất. Và đây cũng là nơi để con cháu quy tụ, trở về sum họp vào mỗi dịp lễ tết, giỗ chạp.

+

 Với cách thiết kế nội thất phòng khách 25m2 kết hợp phòng thờ bằng gỗ tự nhiên mang lại sự sang trọng lịch lãm chắc chắn sẽ là gợi ý tuyệt vời cho những gia chủ muốn giữ gìn vẻ đẹp của văn hóa truyền thống của nước ta. Bộ hồ sơ thiết kế nội thất của gia đình anh Dũng được chúng tôi hoàn thiện trong vòng 20 ngày và bàn giao cho chủ đầu tư thi công thực hiện. Được biết công trình đã đi vào thi công và chúng tôi sẽ tiếp tục cập nhật hình ảnh thực tế của phòng khách 25m2 đã hoàn thiện. Mời quý vị chú ý theo dõi trên website.

+

Mọi yêu cầu tư vấn thiết kế nhà ở, biệt thự đẹp, thiết kế nội thất, thi công trọn gói vui lòng liên hệ với chúng tôi theo số hotline.

+ + +
+ + + + + +
+
+ + + + +
+ + + + +
+

Trả lời

Email của bạn sẽ không được hiển thị công khai.

+ +

+

+ +

+ +
+
+ +
+ +
+ + +
+ + + +
+ + + + + +
+
+
+ + + + + +
+
+
+ + +
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/cache/wp-rocket/localhost/2022/02/13/tu-van-thiet-ke-noi-that-phong-khach-25m2-ket-hop-phong-tho-dep-o-long-bien-ha-noi-nt526060/index-mobile.html_gzip b/wp-content/cache/wp-rocket/localhost/2022/02/13/tu-van-thiet-ke-noi-that-phong-khach-25m2-ket-hop-phong-tho-dep-o-long-bien-ha-noi-nt526060/index-mobile.html_gzip new file mode 100644 index 0000000000000000000000000000000000000000..99abae25b08fd0b32d74453e41a912cccd48ea1c GIT binary patch literal 18723 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 + + + + + + + + + +Tư vấn thiết kế nội thất phòng khách 25m2 kết hợp phòng thờ đẹp ở Long Biên Hà Nội NT526060 – Nội thất – kiến trúc An Việt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+ +
+
+ + + + +
+
+
+
+ + +

Tư vấn thiết kế nội thất phòng khách 25m2 kết hợp phòng thờ đẹp ở Long Biên Hà Nội NT526060

+
+ + +
+
+ + +
+
+
+ + +

 Nếu như vẻ đẹp ngoại thất mang lại sức hút ban đầu khi ngắm nhìn một ngôi nhà thì thiết kế nội thất không chỉ mang tới vẻ đẹp thẩm mỹ mà còn cả giá trị tiện nghi, cách bài trí thông minh khoa học, đảm bảo giá trị của một không gian sống đẳng cấp. Vì thế một ngôi nhà đẹp không chỉ cần thỏa mãn yếu tố ngoại thất mà còn phải đảm bảo cả giá trị công năng, tiện nghi cho người sử dụng. Đó cũng là lý do mà anh Dũng ở Long Biên cần chúng tôi tư vấn thiết kế nội thất phòng khách 25m2 kết hợp phòng thờ. Cùng chúng tôi tham khảo những hình ảnh tuyệt vời về nội thất phòng khách sang trọng, đẳng cấp dưới đây nhé!

+

BẢNG TÓM TẮT THÔNG TIN MẪU THIẾT KẾ NỘI THẤT PHÒNG KHÁCH 25M2 Ở LONG BIÊN

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
    +
  • CÔNG TRÌNH
  • +
+
 Thiết kế nội thất phòng khách kết hợp phòng thờ 
+
    +
  • CHỦ ĐẦU TƯ
  • +
+
 Anh Đặng Văn Dũng
+
    +
  • ĐỊA ĐIỂM XÂY DỰNG
  • +
+
 Long Biên – Hà Nội
+
    +
  • YÊU CẦU
  • +
+
+

 Thiết kế nội thất phòng khách 25m2 kết hợp phòng thờ

+
+
    +
  • PHONG CÁCH
  • +
+
 Phong cách bằng gỗ truyền thống, sử dụng đồ nội thất sang trọng và bề thế
+
    +
  • KIẾN TRÚC SƯ THIẾT KẾ
  • +
+
 Kiến trúc sư Angcovat
+
    +
  • CHI PHÍ TẠM TÍNH
  • +
+
 Khoảng 5.5 triệu đồng/m2
+
    +
  • ĐỒ NỘI THẤT
  • +
+
+

 Bàn thờ, vách trang trí bằng gỗ, bàn ghế phòng khách, tủ kệ tivi, đèn trang trí, tranh treo tường, trần thạch cao có ốp gỗ trang trí, sàn gỗ.

+
+

 CÁCH BÀI TRÍ KHÔNG GIAN MẪU THIẾT KẾ NỘI THẤT PHÒNG KHÁCH 25M2 

+

 Mặt bằng công năng sử dụng là một trong những phần quan trọng được thực hiện đầu tiên khi ký kết hợp đồng tư vấn thiết kế nội thất hay ngoại thất của công ty kiến trúc ANG. Sở dĩ mặt bằng công năng rất quan trọng bởi nó quyết định giá trị sử dụng sau này của các thành viên trong gia đình có thoải mái hay không, có đáp ứng được các tiêu chuẩn sống hay không. Vì vậy khi thỏa mãn được cách sắp xếp định vị không gian chức năng đảm bảo phù hợp với thói quen sinh hoạt của gia đình chúng tôi mới triển khai bước tiếp theo. Từ một bản vẽ mặt bằng có thể triển khai được rất nhiều phương án phối cảnh khác nhau. Vì thế việc lên ý tưởng mặt bằng thiết kế nội thất phòng khách 25m2 được tư vấn thực hiện đầu tiên.

+

Tìm hiểu: mẫu thiết kế phòng khách và phòng thờ đẹp

+

mặt bằng thiết kế nội thất phòng khách 25m2

+

 Bản vẽ mặt bằng nội thất mẫu thiết kế nội thất phòng khách 25m2 ở Long Biên Hà Nội

+

Nếu như mặt tiền được coi là bộ mặt của một ngôi nhà khi thiết kế ngoại thất biệt thự đẹp thì phòng khách lại là không gian chính của ngôi nhà, nơi tiếp đón các vị khách quý, anh chị em bạn bè, người thân tới thăm nhà. Nơi đây còn là sum họp các thành viên trong gia đình cùng thưởng thức bộ phim hay, cùng tâm sự sẻ chia những niềm vui, nỗi buồn trong cuộc sống thường nhật. Vì thế thiết kế nội thất phòng khách vô cùng quan trọng. Không gian phòng khách kết hợp phòng thờ của gia đình anh Dũng có diện tích 25m2. So với các mẫu nhà phố thì diện tích 25m2 dành cho phòng khách không phải là nhỏ. Nó chiếm phần chính yếu trong tầng trệt của ngôi nhà. Phòng khách được chúng tôi lên ý tưởng phân chia thành 2 phần chức năng quan trọng và chính yếu đó là ban thờ cúng tổ tiên và bàn ghế tiếp khách. Các không gian phân chia dựa vào đồ vật đặt vào chứ không cần ngăn cách bởi tường hay vách ngăn với mục đích tiết kiệm diện tích. Để thuận tiện cho sinh hoạt và hướng tới không gian rộng mở kết nối với thiên nhiên chúng tôi thiết kế 2 cửa ra vào trong đó một cửa ra vào hướng vào ban thờ và 1 cửa ra vào phòng khách. Một chi tiết nhỏ thôi nhưng giúp cho sinh hoạt của gia đình thêm phần thuận tiện đặc biệt khi gia đình có khách, nhà có giỗ chạp hay những ngày tề tựu sum họp của cả gia đình, anh em họ hàng. Không gian rộng mở, đi lại ra vào thuận tiện đó chính là giá trị của thiết kế mặt bằng công năng sử dụng.

+

Thiết kế nội thất phòng khách 25m2 kết hợp phòng thờ bằng gỗ tự nhiên 

+

thiết kế nội thất phòng khách 25m2 đẹp

+

 Phối cảnh view 1: Mẫu thiết kế nội thất phòng khách 25m2 bằng gỗ tự nhiên sang trọng

+

Khi thiết kế nội thất phòng khách 25m2 chúng tôi đã có buổi làm việc, khảo sát hiện trạng, đo đạc kích thước một cách tỷ mỉ chi tiết, tránh trường hợp thiết kế bị sai lệch, mất cân bằng thẩm mỹ. Kiến trúc sư Angcovat gặp gỡ và ký hợp đồng thiết kế cũng như trao đổi về nhu cầu công năng với gia đình anh Dũng. Qua buổi làm việc, tiếp xúc trao đổi cũng là cách để chúng tôi định hướng phong cách kiến trúc sao cho phù hợp với sở thích, cá tính gia chủ. Anh Dũng là người khá cầu toàn, nghiêm túc và chỉn chu vì vậy các đồ vật trong gia đình đòi hỏi phải có sự khéo léo trong cách sắp xếp, tinh túy và vô cùng thẩm mỹ. Với những yêu cầu đó chúng tôi nhận định rằng mẫu thiết kế phòng khách kết hợp phòng thờ bằng gỗ tự nhiên là phù hợp hơn cả. 

+

Gỗ tự nhiên rất đa dạng và phong phú về chủng loại, trong đó phải kể tới một số loại gỗ quý bán chạy trên thị trường như gỗ óc chó, gỗ gõ đỏ, gỗ gụ,… Chúng tôi lựa chọn loại gỗ có màu gụ tự nhiên, sang trọng và ấn tượng vô cùng. Toàn bộ không gian phòng khách kết hợp phòng thờ đều được trang trí bằng loại gỗ này từ gỗ ốp trần, gỗ ban thờ, bàn ghế tiếp khách, kệ tủ tivi, tranh treo tường,… Đồng bộ hóa trong thiết kế cả về màu sắc lẫn chất liệu giúp ngôi nhà thêm phần sang trọng, bề thế. Chắc hẳn ai bước tới không gian phòng khách cũng cảm nhận được sự chuẩn bị chu đáo của gia chủ, sự nồng nhiệt thịnh tình của chính chủ nhân sở hữu ngôi nhà. Không gian phòng khách và phòng thờ nối tiếp nhau tạo sự liền mạch, tiết kiệm diện tích nhất là trong bối cảnh tấc đất tấc vàng như hiện nay. 

+

 Thiết kế nội thất phòng khách 25m2 bằng gỗ tự nhiên toát lên vẻ đẹp bề ngoài cùng với những đặc tính tốt như độ bền chắc chắn, ít bị cong vênh hay mối mọt, bền màu, trường tồn theo thời gian. Vì lẽ đó mà giá thành của gỗ tự nhiên cũng không phải rẻ, kén người sử dụng, đòi hỏi phải là những gia đình có điều kiện mới quyết định đầu tư.  

+

Tham khảo: thiết kế nội thất phòng khách có bàn thờ

+

thiết kế nội thất phòng khách 25m2 bằng gỗ

+

 Phối cảnh view 3: mẫu thiết kế nội thất phòng khách 25m2 sang trọng với những họa tiết trạm trổ cầu kỳ

+

Điểm nhấn của bản vẽ thiết kế nội thất phòng khách 25m2 này chính là bộ bàn ghế tiếp khách được làm hoàn toàn bằng gỗ tự nhiên có trạm khắc các hoa văn tinh vi và tinh xảo. Điều này đòi hỏi cả kiến trúc sư thiết kế và thợ thi công phải có tay nghề cao, kinh nghiệm lâu năm để phác họa được những hoa văn tinh tế như vậy. Các hoa văn được trạm trổ cầu kỳ, cân đối và còn giữ được vẻ đẹp hoàn hảo nhờ những đường vân gỗ tự nhiên. Gỗ tự nhiên được chú trọng còn là bởi sự thân thiện với môi trường trong khi các vật liệu khác thường được sản xuất công nghiệp, hóa chất ảnh hưởng ít nhiều tới môi trường và sức khỏe con người. Chắc chắn khi thiết kế phòng khách bằng gỗ tự nhiên sẽ tạo được sự sang trọng, thanh lịch và ấm áp gần gũi vô cùng. Để trang trí thêm cho không gian nội thất phòng khách, gia chủ có thể để thêm lọ hoa, ấm chén tiếp khách trên bàn ngăn nắp gọn gàng.

+

Tủ kệ tivi cũng được thiết kế bằng gỗ tự nhiên có trạm khắc hoa văn đẹp mắt hoàn hảo. Ngay cả trần, sàn cũng đều được thi công bằng gỗ tự nhiên khiến không gian càng trở nên sang trọng hơn bao giờ hết. Kết hợp với ánh sáng của đèn điện khiến mẫu thiết kế phòng khách 25m2 càng trở nên lung linh và tuyệt vời hơn bao giờ hết.

+

MỘT VÀI LƯU Ý KHI THIẾT KẾ NỘI THẤT PHÒNG KHÁCH 25M2 KẾT HỢP PHÒNG THỜ PHÙ HỢP PHONG THỦY 

+

thiết kế nội thất phòng khách 25m2 có phòng thờ sang trọng

+

 Phối cảnh view 4: thiết kế nội thất phòng khách 25m2 kết hợp phòng thờ hợp phong thủy

+

Với văn hóa tín ngưỡng thờ cúng tổ tiên của người dân Việt Nam, trong gia đình đều có thiết kế ban thờ có thể kết hợp phòng khách hoặc làm thành phòng riêng. Với những căn nhà phố có diện tích khiêm tốn hay nhà chung cư thì phòng thờ thường được bố trí cùng với phòng khách. Mẫu thiết kế nội thất phòng khách 25m2 kết hợp phòng thờ của gia đình anh Dũng được chúng tôi nghiên cứu kỹ đảm bảo các yếu tố về mặt diện tích, công năng kích thước và thẩm mỹ cũng như phù hợp về phong thủy. Để có thể mang tới tài vận cho gia chủ và các thành viên trong gia đình, việc đặt ban thờ như thế nào trong phòng khách là điều hết sức quan trọng. Một trong số những nguyên tắc chúng tôi áp dụng trong cách sắp đặt thiết kế phòng thờ như:

+

+ KHông đặt ban thờ ở cạnh bếp, nhà vệ sinh vì như thế được coi là không tỏ lòng thành kính, trang nghiêm.

+

+ Không bài trí ban thờ gia tiên dưới chân cầu thang, dưới sàn nhà hoặc những vị trí khuất, tối tăm. Chính vì vậy chúng tôi thiết kế ban thờ được đặt ở vị trí trang nghiêm, đối diện cửa ra vào, ở cạnh phòng khách nơi trang trọng và lịch sự trong nhà.

+

+ Tránh đặt ban thờ ở nơi có ánh sáng mặt trời trực tiếp chiếu vào.

+

+ Tránh thiết kế ban thờ đối diện với bể cá.

+

…..

+

Các nguyên tắc đặt vị trí ban thờ hợp phong thủy được kiến trúc sư Angcovat tuân thủ và đảm bảo sự hài hòa với không gian kết hợp với phòng khách trong diện tích tổng thể 25m2. Ngay cả hướng ban thờ hướng ra cửa chính là hướng sinh khí của chủ nhà, điều này rất quan trọng bởi theo quan niệm phong thủy từ xa xưa, ban thờ cần đặt ở các cung tốt như âm quý nhân, dương quý nhân, thiên lộc, thiên mã, diên thọ, tài lộc, tử tức thì sẽ thu nạp được sinh khí, con cháu được hưởng phúc, mọi điều như ý. 

+

Xem thêm: Tư vấn thiết kế văn phòng làm việc bằng gỗ tự nhiên 

+

thiết kế nội thất phòng khách 25m2 kết hợp phòng thờ

+

 Phối cảnh view 5: mẫu thiết kế nội thất phòng khách 25m2 kết hợp phòng thờ truyền thống

+

Cách bài trí không gian ban thờ từ vị trí đặt, kích thước ban thờ, chiều cao ban thờ,… đều được chúng tôi tư vấn miễn phí cho gia chủ, đảm bảo phù hợp với các nguyên tắc của khoa học phong thủy. Mẫu thiết kế nội thất phòng khách 25m2 kết hợp phòng thờ của gia đình anh Dũng được sử dụng bằng gỗ tự nhiên truyền thống và mang đậm giá trị bảo tồn văn hóa dân tộc, tín ngưỡng dân gian. Đây là những điều mà đang bị mai một trong cuộc sống hiện đại, cởi mở như hiện nay. Vì thế những không gian phòng khách kết hợp phòng thờ bằng gỗ tự nhiên sang trọng như này càng ngày càng hiếm và rất trân quý. Giúp con cháu hiểu được giá trị về truyền thống nhân văn của ông bà ta, tục lệ thờ cúng tổ tiên, giữ gìn nét đẹp văn hóa uống nước nhớ nguồn của dân ta. Nơi thờ cúng tổ tiên còn là nơi con cháu bày tỏ lòng biết ơn của thế hệ sau với tổ tiên ông bà những người đã khuất. Và đây cũng là nơi để con cháu quy tụ, trở về sum họp vào mỗi dịp lễ tết, giỗ chạp.

+

 Với cách thiết kế nội thất phòng khách 25m2 kết hợp phòng thờ bằng gỗ tự nhiên mang lại sự sang trọng lịch lãm chắc chắn sẽ là gợi ý tuyệt vời cho những gia chủ muốn giữ gìn vẻ đẹp của văn hóa truyền thống của nước ta. Bộ hồ sơ thiết kế nội thất của gia đình anh Dũng được chúng tôi hoàn thiện trong vòng 20 ngày và bàn giao cho chủ đầu tư thi công thực hiện. Được biết công trình đã đi vào thi công và chúng tôi sẽ tiếp tục cập nhật hình ảnh thực tế của phòng khách 25m2 đã hoàn thiện. Mời quý vị chú ý theo dõi trên website.

+

Mọi yêu cầu tư vấn thiết kế nhà ở, biệt thự đẹp, thiết kế nội thất, thi công trọn gói vui lòng liên hệ với chúng tôi theo số hotline.

+ + +
+ + + + + +
+
+ + + + +
+ + + + +
+

Trả lời

Email của bạn sẽ không được hiển thị công khai.

+ +

+

+ +

+ +
+
+ +
+ +
+ + +
+ + + +
+ + + + + + + + + +
+
+
+
+ + Facebook Messenger +
+
+
+ Chat với chúng tôi qua Zalo +
+ +
+
+ Gọi ngay +
+ + + + + +
+ + +
+
+ +
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/cache/wp-rocket/localhost/2022/02/13/tu-van-thiet-ke-noi-that-phong-khach-25m2-ket-hop-phong-tho-dep-o-long-bien-ha-noi-nt526060/index.html_gzip b/wp-content/cache/wp-rocket/localhost/2022/02/13/tu-van-thiet-ke-noi-that-phong-khach-25m2-ket-hop-phong-tho-dep-o-long-bien-ha-noi-nt526060/index.html_gzip new file mode 100644 index 0000000000000000000000000000000000000000..8e6991c16ec79223836a9465fc4bb721b41771e2 GIT binary patch literal 18875 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 + + + + + + + + + +Tư vấn thiết kế văn phòng làm việc bằng gỗ tự nhiên phong cách tân cổ điển NT628070 – Nội thất – kiến trúc An Việt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+ + + + + +
+ +
+ +
+
+ + + + +
+
+
+
+ + +

Tư vấn thiết kế văn phòng làm việc bằng gỗ tự nhiên phong cách tân cổ điển NT628070

+
+ + +
+
+ + +
+
+
+ + +

Ngoài nhà ở thân thiết gắn bó với chúng ta thì văn phòng làm việc được coi là ngôi nhà thứ hai với các mối quan hệ với đồng nghiệp và khách hàng nơi công sở. Đây là không gian làm việc có tác động không nhỏ tới năng suất, hiệu quả làm việc cũng như thể hiện bộ mặt của doanh nghiệp, công ty với các đối tác và khách hàng. Bởi vậy nhu cầu thiết kế văn phòng làm việc càng trở nên phổ biến hơn bao giờ hết. Đặc biệt là các phòng ban của giám đốc, thể hiện được phần nào uy tín của công ty, môi trường làm việc chuyên nghiệp, đẳng cấp, là nơi giao dịch đáng tin cậy. Angcovat vừa triển khai thiết kế văn phòng làm việc cho giám đốc doanh nghiệp của một công ty xuất nhập khẩu tại Hà Nội. Dưới đây là toàn bộ hồ sơ thiết kế nội thất văn phòng đẹp sang trọng bằng gỗ tự nhiên mà chúng tôi đã triển khai lên ý tưởng.

+

MỘT SỐ THÔNG TIN VỀ MẪU THIẾT KẾ VĂN PHÒNG LÀM VIỆC DIỆN TÍCH 45M2

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
    +
  • CÔNG TRÌNH
  • +
+
Thiết kế nội thất phòng làm việc của tổng giám đốc
+
    +
  • YÊU CẦU:
  • +
+
Thiết kế nội thất phòng làm việc tổng giám đốc theo phong cách tân cổ điển ( sử dụng hoàn toàn vật liệu gỗ tự nhiên)
+
    +
  • PHONG CÁCH
  • +
+
Tân cổ điển
+
    +
  • KIẾN TRÚC SƯ THIẾT KẾ
  • +
+
Kiến trúc sư Angcovat
+
    +
  • CHI PHÍ TẠM TÍNH
  • +
+
Khoảng 150 triệu
+
    +
  • ĐỒ NỘI THẤT
  • +
+
Bàn ghế làm việc, bàn ghế tiếp khách, tủ đựng tài liệu, phòng nghỉ trưa, rèm cửa sổ, cây xanh phong thủy. 
+

 YÊU CẦU TƯ VẤN THIẾT KẾ VĂN PHÒNG LÀM VIỆC CỦA GIÁM ĐỐC CÔNG TY

+

 Angcovat được khách hàng biết tới với vai trò tư vấn thiết kế ngoại thất nhà ở, biệt thự và thi công trọn gói ngoại thất. Tuy vậy mảng thiết kế nội thất của chúng tôi cũng được nhiều khách hàng quan tâm và có nhu cầu tư vấn thiết kế. Không chỉ thiết kế nội thất nhà ở, biệt thự như phòng khách, phòng thờ, phòng ngủ,… mà ngay cả thiết kế nội thất văn phòng làm việc cũng được nhiều khách hàng quan tâm. Không ít sản phẩm thiết kế nội thất của Angcovat được đăng tải lên website của công ty. Khách hàng của chúng tôi chủ yếu là những chủ đầu tư tìm kiếm các sản phẩm thiết kế đẹp và yêu mến các sản phẩm đó và gọi điện thoại liên lạc với chúng tôi để được tư vấn về các mẫu biệt thự đẹp, mẫu thiết kế nội thất đẹp. Giám đốc công ty xuất nhập khẩu – bà Lê cũng là một trong số chủ đầu tư đó. Tâm sự với chúng tôi, chị đã xây rất nhiều nhà, tìm rất nhiều đơn vị thiết kế nội ngoại thất cho gia đình mình, nhưng đây là lần đầu tiên chị cảm thấy hài lòng với các sản phẩm thiết kế. Vì vậy chị đã gọi điện số Hotline cho KTS Angcovat để được tư vấn thiết kế nội thất văn phòng làm việc của mình. Các sản phẩm của Angcovat có kiến trúc phân loại rõ ràng, đa dạng về sản phẩm, đáp ứng nhu cầu thị hiếu của khách hàng, đáp ứng về sở thích của các cá nhân và tài chính của từng gia đình. Ngoài ra các sản phẩm thiết kế của Angcovat mang tới không gian sống đầm ấm, gần gũi và mỗi công trình đều mang vẻ đẹp hài hòa giữa yếu tố công năng sử dụng và kiến trúc công trình. 

+

Nội thất văn phòng làm việc đẹp

+

 Yêu cầu tư vấn thiết kế văn phòng làm việc của Giám đốc công ty xuất nhập khẩu

+

Nội dung yêu cầu tư vấn thiết kế văn phòng làm việc của chị Lê gồm có:

+

– Phòng làm việc với diện tích rộng 45m2 cần sắp đặt gọn gàng ngăn nắp, đáp ứng không gian làm việc, tiếp khách, nơi lưu trữ hồ sơ sổ sách, phòng nghỉ trưa,.. Diện tích các khu vực đảm bảo yếu tố gặn gàng, bài trí khoa học và tiện nghi cho người sử dụng,

+

– Phong cách kiến trúc: Là một người trung niên, đã nhiều năm lao động trong môi trường nước ngoài cũng như trong nước, chị yêu thích vẻ đẹp hoài cổ, sâu lắng vì vậy phong cách kiến trúc tân cổ điển khá phù hợp và là lựa chọn cho nội thất văn phòng làm việc của mình

+

– Chất liệu sử dụng cho nội thất phòng làm việc để đảm bảo đúng nguyên tắc thiết kế của kiến trúc tân cổ điển đó chính là tôn vinh vẻ đẹp sang trọng, không quá riêm dúa cầu kỳ nhưng cũng rất bài bản, tỉ mỉ. Vì vậy vật liệu gỗ tự nhiên mang tới vẻ đẹp lịch lãm, đáp ứng tiêu chí của bản vẽ thiết kế nội thất tân cổ điển.

+

 Đây là một số nội dung yêu cầu tư vấn thiết kế văn phòng làm việc 45m2 của chị Lê khi đặt ra cho kiến trúc sư Angcovat. Angcovat là đơn vị tư vấn thiết kế có trên mười năm kinh nghiệm trong lĩnh vực xây dựng, vì thế các công trình tư vấn thiết kế nội ngoại thất nhà ở, văn phòng. Việc nắm rõ yêu cầu của khách hàng rất quan trọng, từ đó chúng tôi hình thành ý tưởng thiết kế cũng như tư vấn những phương án tối ưu, phù hợp nhất cho khách hàng cả về mặt thẩm mỹ, công năng sử dụng lẫn chi phí hoàn thiện. 

+

Tìm hiểu: Thiết kế phòng làm việc của tổng giám đốc

+

THIẾT KẾ VĂN PHÒNG LÀM VIỆC DIỆN TÍCH 45M2 THEO KIẾN TRÚC TÂN CỔ ĐIỂN ĐẸP 

+

nội thất văn phòng làm việc đẹp nhất

+

 Phối cảnh bản vẽ thiết kế văn phòng làm việc theo trường phái kiến trúc tân cổ điển

+

 Thứ nhất, với mẫu thiết kế văn phòng làm việc theo kiến trúc tân cổ điển theo quy tắc đăng đối ấn tượng. Đúng vậy không chỉ kiến trúc nói riêng mà cả hội họa cũng đề cao tính đối xứng theo trường phải cổ điển hoặc tân cổ điển. Tính cân đối mang tới sự hài hòa trong không gian sử dụng. Nhiều người cho rằng đó là sự trùng lặp, nguyên tắc bảo thủ nhưng không hề, đó là sự hài hòa, cân đối, tuân thủ quy tắc quy luật trong kiến trúc trường tồn, vĩnh cửu theo thời gian. Sự thống nhất về form mẫu kiến trúc đảm bảo từ chi tiết thiết kế cho tới cách bài trí không gian và vật liệu sử dụng. Có như thế mới thể hiện được vẻ đẹp hoàn hảo, sự kết hợp nhuần nhuyễn từ yếu tố kết cấu, màu sắc cho tới vật liệu hoàn thiện.

+

Thứ hai, cách sử dụng vật liệu gỗ tự nhiên để hoàn thiện bản vẽ thiết kế văn phòng làm việc theo kiểu bán cổ điển mang lại dấu ấn cho người nhìn. Không chỉ vậy, vật liệu gỗ tự nhiên luôn được đánh giá cao trong các bản vẽ thiết kế cổ điển hay bán cổ điển. Trước mắt, đây là vật liệu có giá thành cao, độ bền đẹp theo thời gian và được nhiều gia chủ đầu tư sử dụng cho xứng tầm với không gian nhà ở hay văn phòng.  

+

Xem thêm: mẫu nội thất phòng làm việc tại nhà đẹp

+

nội thất văn phòng làm việc sang trọng

+

 Thiết kế văn phòng làm việc bằng chất liệu gỗ tự nhiên

+

Toàn bộ bàn làm việc và bàn tiếp khách đều được làm bằng chất liệu gỗ tần bì cao cấp mang tới cảm giác sang trọng, lịch lãm khi bước tới không gian phòng làm việc. Đây là nơi ký kết hợp đồng với các đối tác, khách hàng thương mại,.. vì thế không gian phòng làm việc có vai trò quan trọng mang tới ấn tượng ban đầu, thể hiện được lòng hiểu khách, trang trọng và lịch thiệp. Bàn sử dụng tone màu nâu trầm vẹn nguyên của chất liệu gỗ tự nhiên giúp tôn lên vẻ đẹp sang trọng, uy nghiêm . Đồng thời, tại vị trí ghế ngồi được thiết kế chất liệu da cao cấp tạo nên sự thoải mái, thuận tiện khi làm việc và cũng phù hợp cho không gian làm việc của vị trí cấp cao. 

+

nội thất văn phòng bằng gỗ tự nhiên đẹp

+

 Thiết kế phòng làm việc bằng gỗ tự nhiên mang tới sự sang trọng, lịch thiệp

+

Thứ ba, màu sắc là yếu tố quan trọng quyết định vẻ đẹp của bản vẽ thiết kế nội thất phòng làm việc. Cách phối màu cần sự hài hòa, cách chuyển màu tự nhiên không tạo cho người nhìn cảm giác rối mắt là điều quan trọng. Trong phòng làm việc của chị Lê chúng tôi đặt yếu tố sang trọng đẳng cấp lên hàng đầu. Vì thế màu gỗ tự nhiên là sự lựa chọn hàng đầu. Bàn làm việc trong mẫu thiết kế phòng làm việc được làm bằng chất liệu gỗ tự nhiên màu nâu gụ. Màu sắc của bàn làm việc tạo nên cho căn phòng sự chắc chắn. Đồng thời, với không gian của bàn làm việc trong căn phòng như thế này cũng sẽ thuận tiện và thoải mái hơn trong việc sắp xếp không gian sống. Chất liệu bàn làm việc bằng gỗ tự nhiên. 

+

Tham khảo: thiết kế nội thất phòng khách 25m2 kết hợp phòng thờ đẹp

+

nội thất văn phòng làm việc đẹp nhất hiện nay

+

 Thiết kế tủ tài liệu bằng gỗ tự nhiên trong phòng làm việc

+

Thứ tư là cách thiết kế tủ tài liệu ngăn nắp gọn gàng giúp cho không gian phòng làm việc trở nên bài bản, thuận tiện cho người sử dụng. Trong công việc có rất nhiều các tài liệu, giấy tờ sổ sách, hợp đồng, chứng từ,… cần lưu giữ. Một trong những điều không thể thiếu trong phòng làm việc đó chính là thiết kế tủ đựng hồ sơ. Với không gian tân cổ điển trong phòng làm việc như này, chúng tôi thiết kế đồng bộ từ chất liệu tới màu sắc kiến trúc cho cả bàn ghế làm việc, tiếp khách cho tới tủ đựng hồ sơ. Tủ đựng hồ sơ được thiết kế kịch trần, vừa tăng diện tích lưu trữ vừa tạo sự đồ sộ, vững chãi và không gian trở nên đẹp mắt, ấn tượng hơn. Không gian phòng làm việc là nơi các hoạt động ký kết, giao dịch cũng như trao đổi công việc với các đồng nghiệp, gặp gỡ với đối tác, khách hàng trong và ngoài nước. Ý thức được việc đó nên chị Lê muốn thiết kế không gian làm việc thật ấn tượng và cũng đầy đủ tiện nghi giúp cho bản thân có môi trường làm việc thoải mái, tăng hiệu quả năng suất trong công việc.  

+

Tìm hiểu: mẫu nhà từ đường kết hợp nhà ở diện tích 200m2

+

nội thất văn phòng làm việc tiện nghi với phòng nghỉ trưa

+

 Thiết kế phòng nghỉ trưa tại văn phòng làm việc

+

 Phòng nghỉ trưa được thiết kế phía bên trong vô cùng kín đáo tạo sự riêng tư. không gian phòng nghỉ trưa có giường để chị Lê nghỉ ngơi vào buổi trưa, giảm căng thẳng khi làm việc. Đây cũng là cách làm việc hiệu quả, giúp tái tạo năng lượng, phục hồi sức khỏe và tiếp tục công việc vào buổi chiều. 

+

Tất cả không gian đều được thiết kế hợp lý bài bản nhờ có bản vẽ mặt bằng công năng sử dụng đã được lên ý tưởng từ ban đầu. Dưới đây là bản vẽ bài trí các vật dụng trong phòng làm việc diện tích 45m2 của chị Lê mà kiến trúc sư Angcovat đã thực hiện.

+

 thiết kế văn phòng làm việc tiện nghi

+

 Bản vẽ mặt bằng nội thất phòng làm việc diện tích 45m2

+

Trong phòng làm việc có bàn làm việc. bàn ghế tiếp khách, bàn trà, tủ đựng tài liệu, phòng ngủ trưa. Các không gian được bài trí thông minh, logic tạo sự thuận tiện trong làm việc cũng như sự thoáng đãng, tạo sự thoải mái khi làm việc và gặp gỡ khách hàng. 

+

Trên đây là bản vẽ thiết kế văn phòng làm việc diện tích 45m2 bằng gỗ tự nhiên diện tích 45m2. Không gian được thiết kế theo trường phái kiến trúc tân cổ điển tạo môi trường làm việc chuyên nghiệp, đẳng cấp và cũng rất sang trọng lịch lãm. Mọi yêu cầu tư vấn thiết kế nội ngoại thất, thi công trọn gói vui lòng liên hệ với kiến trúc sư theo số Hotline để được hỗ trợ giải đáp 24/7.

+ + +
+ + + + + +
+
+ + + + +
+ + + + +
+

Trả lời

Email của bạn sẽ không được hiển thị công khai.

+ +

+

+ +

+ +
+
+ +
+ +
+ + +
+ + + +
+ + + + + +
+
+
+ + + + + +
+
+
+ + +
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/cache/wp-rocket/localhost/2022/02/13/tu-van-thiet-ke-van-phong-lam-viec-bang-go-tu-nhien-phong-cach-tan-co-dien-nt628070/index-mobile.html_gzip b/wp-content/cache/wp-rocket/localhost/2022/02/13/tu-van-thiet-ke-van-phong-lam-viec-bang-go-tu-nhien-phong-cach-tan-co-dien-nt628070/index-mobile.html_gzip new file mode 100644 index 0000000000000000000000000000000000000000..101e283e199bd75eb95e6dc6706890c51519a206 GIT binary patch literal 18166 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 htbR1?F>03ib* + + + + + + + + + +Tư vấn thiết kế văn phòng làm việc bằng gỗ tự nhiên phong cách tân cổ điển NT628070 – Nội thất – kiến trúc An Việt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+ +
+
+ + + + +
+
+
+
+ + +

Tư vấn thiết kế văn phòng làm việc bằng gỗ tự nhiên phong cách tân cổ điển NT628070

+
+ + +
+
+ + +
+
+
+ + +

Ngoài nhà ở thân thiết gắn bó với chúng ta thì văn phòng làm việc được coi là ngôi nhà thứ hai với các mối quan hệ với đồng nghiệp và khách hàng nơi công sở. Đây là không gian làm việc có tác động không nhỏ tới năng suất, hiệu quả làm việc cũng như thể hiện bộ mặt của doanh nghiệp, công ty với các đối tác và khách hàng. Bởi vậy nhu cầu thiết kế văn phòng làm việc càng trở nên phổ biến hơn bao giờ hết. Đặc biệt là các phòng ban của giám đốc, thể hiện được phần nào uy tín của công ty, môi trường làm việc chuyên nghiệp, đẳng cấp, là nơi giao dịch đáng tin cậy. Angcovat vừa triển khai thiết kế văn phòng làm việc cho giám đốc doanh nghiệp của một công ty xuất nhập khẩu tại Hà Nội. Dưới đây là toàn bộ hồ sơ thiết kế nội thất văn phòng đẹp sang trọng bằng gỗ tự nhiên mà chúng tôi đã triển khai lên ý tưởng.

+

MỘT SỐ THÔNG TIN VỀ MẪU THIẾT KẾ VĂN PHÒNG LÀM VIỆC DIỆN TÍCH 45M2

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
    +
  • CÔNG TRÌNH
  • +
+
Thiết kế nội thất phòng làm việc của tổng giám đốc
+
    +
  • YÊU CẦU:
  • +
+
Thiết kế nội thất phòng làm việc tổng giám đốc theo phong cách tân cổ điển ( sử dụng hoàn toàn vật liệu gỗ tự nhiên)
+
    +
  • PHONG CÁCH
  • +
+
Tân cổ điển
+
    +
  • KIẾN TRÚC SƯ THIẾT KẾ
  • +
+
Kiến trúc sư Angcovat
+
    +
  • CHI PHÍ TẠM TÍNH
  • +
+
Khoảng 150 triệu
+
    +
  • ĐỒ NỘI THẤT
  • +
+
Bàn ghế làm việc, bàn ghế tiếp khách, tủ đựng tài liệu, phòng nghỉ trưa, rèm cửa sổ, cây xanh phong thủy. 
+

 YÊU CẦU TƯ VẤN THIẾT KẾ VĂN PHÒNG LÀM VIỆC CỦA GIÁM ĐỐC CÔNG TY

+

 Angcovat được khách hàng biết tới với vai trò tư vấn thiết kế ngoại thất nhà ở, biệt thự và thi công trọn gói ngoại thất. Tuy vậy mảng thiết kế nội thất của chúng tôi cũng được nhiều khách hàng quan tâm và có nhu cầu tư vấn thiết kế. Không chỉ thiết kế nội thất nhà ở, biệt thự như phòng khách, phòng thờ, phòng ngủ,… mà ngay cả thiết kế nội thất văn phòng làm việc cũng được nhiều khách hàng quan tâm. Không ít sản phẩm thiết kế nội thất của Angcovat được đăng tải lên website của công ty. Khách hàng của chúng tôi chủ yếu là những chủ đầu tư tìm kiếm các sản phẩm thiết kế đẹp và yêu mến các sản phẩm đó và gọi điện thoại liên lạc với chúng tôi để được tư vấn về các mẫu biệt thự đẹp, mẫu thiết kế nội thất đẹp. Giám đốc công ty xuất nhập khẩu – bà Lê cũng là một trong số chủ đầu tư đó. Tâm sự với chúng tôi, chị đã xây rất nhiều nhà, tìm rất nhiều đơn vị thiết kế nội ngoại thất cho gia đình mình, nhưng đây là lần đầu tiên chị cảm thấy hài lòng với các sản phẩm thiết kế. Vì vậy chị đã gọi điện số Hotline cho KTS Angcovat để được tư vấn thiết kế nội thất văn phòng làm việc của mình. Các sản phẩm của Angcovat có kiến trúc phân loại rõ ràng, đa dạng về sản phẩm, đáp ứng nhu cầu thị hiếu của khách hàng, đáp ứng về sở thích của các cá nhân và tài chính của từng gia đình. Ngoài ra các sản phẩm thiết kế của Angcovat mang tới không gian sống đầm ấm, gần gũi và mỗi công trình đều mang vẻ đẹp hài hòa giữa yếu tố công năng sử dụng và kiến trúc công trình. 

+

Nội thất văn phòng làm việc đẹp

+

 Yêu cầu tư vấn thiết kế văn phòng làm việc của Giám đốc công ty xuất nhập khẩu

+

Nội dung yêu cầu tư vấn thiết kế văn phòng làm việc của chị Lê gồm có:

+

– Phòng làm việc với diện tích rộng 45m2 cần sắp đặt gọn gàng ngăn nắp, đáp ứng không gian làm việc, tiếp khách, nơi lưu trữ hồ sơ sổ sách, phòng nghỉ trưa,.. Diện tích các khu vực đảm bảo yếu tố gặn gàng, bài trí khoa học và tiện nghi cho người sử dụng,

+

– Phong cách kiến trúc: Là một người trung niên, đã nhiều năm lao động trong môi trường nước ngoài cũng như trong nước, chị yêu thích vẻ đẹp hoài cổ, sâu lắng vì vậy phong cách kiến trúc tân cổ điển khá phù hợp và là lựa chọn cho nội thất văn phòng làm việc của mình

+

– Chất liệu sử dụng cho nội thất phòng làm việc để đảm bảo đúng nguyên tắc thiết kế của kiến trúc tân cổ điển đó chính là tôn vinh vẻ đẹp sang trọng, không quá riêm dúa cầu kỳ nhưng cũng rất bài bản, tỉ mỉ. Vì vậy vật liệu gỗ tự nhiên mang tới vẻ đẹp lịch lãm, đáp ứng tiêu chí của bản vẽ thiết kế nội thất tân cổ điển.

+

 Đây là một số nội dung yêu cầu tư vấn thiết kế văn phòng làm việc 45m2 của chị Lê khi đặt ra cho kiến trúc sư Angcovat. Angcovat là đơn vị tư vấn thiết kế có trên mười năm kinh nghiệm trong lĩnh vực xây dựng, vì thế các công trình tư vấn thiết kế nội ngoại thất nhà ở, văn phòng. Việc nắm rõ yêu cầu của khách hàng rất quan trọng, từ đó chúng tôi hình thành ý tưởng thiết kế cũng như tư vấn những phương án tối ưu, phù hợp nhất cho khách hàng cả về mặt thẩm mỹ, công năng sử dụng lẫn chi phí hoàn thiện. 

+

Tìm hiểu: Thiết kế phòng làm việc của tổng giám đốc

+

THIẾT KẾ VĂN PHÒNG LÀM VIỆC DIỆN TÍCH 45M2 THEO KIẾN TRÚC TÂN CỔ ĐIỂN ĐẸP 

+

nội thất văn phòng làm việc đẹp nhất

+

 Phối cảnh bản vẽ thiết kế văn phòng làm việc theo trường phái kiến trúc tân cổ điển

+

 Thứ nhất, với mẫu thiết kế văn phòng làm việc theo kiến trúc tân cổ điển theo quy tắc đăng đối ấn tượng. Đúng vậy không chỉ kiến trúc nói riêng mà cả hội họa cũng đề cao tính đối xứng theo trường phải cổ điển hoặc tân cổ điển. Tính cân đối mang tới sự hài hòa trong không gian sử dụng. Nhiều người cho rằng đó là sự trùng lặp, nguyên tắc bảo thủ nhưng không hề, đó là sự hài hòa, cân đối, tuân thủ quy tắc quy luật trong kiến trúc trường tồn, vĩnh cửu theo thời gian. Sự thống nhất về form mẫu kiến trúc đảm bảo từ chi tiết thiết kế cho tới cách bài trí không gian và vật liệu sử dụng. Có như thế mới thể hiện được vẻ đẹp hoàn hảo, sự kết hợp nhuần nhuyễn từ yếu tố kết cấu, màu sắc cho tới vật liệu hoàn thiện.

+

Thứ hai, cách sử dụng vật liệu gỗ tự nhiên để hoàn thiện bản vẽ thiết kế văn phòng làm việc theo kiểu bán cổ điển mang lại dấu ấn cho người nhìn. Không chỉ vậy, vật liệu gỗ tự nhiên luôn được đánh giá cao trong các bản vẽ thiết kế cổ điển hay bán cổ điển. Trước mắt, đây là vật liệu có giá thành cao, độ bền đẹp theo thời gian và được nhiều gia chủ đầu tư sử dụng cho xứng tầm với không gian nhà ở hay văn phòng.  

+

Xem thêm: mẫu nội thất phòng làm việc tại nhà đẹp

+

nội thất văn phòng làm việc sang trọng

+

 Thiết kế văn phòng làm việc bằng chất liệu gỗ tự nhiên

+

Toàn bộ bàn làm việc và bàn tiếp khách đều được làm bằng chất liệu gỗ tần bì cao cấp mang tới cảm giác sang trọng, lịch lãm khi bước tới không gian phòng làm việc. Đây là nơi ký kết hợp đồng với các đối tác, khách hàng thương mại,.. vì thế không gian phòng làm việc có vai trò quan trọng mang tới ấn tượng ban đầu, thể hiện được lòng hiểu khách, trang trọng và lịch thiệp. Bàn sử dụng tone màu nâu trầm vẹn nguyên của chất liệu gỗ tự nhiên giúp tôn lên vẻ đẹp sang trọng, uy nghiêm . Đồng thời, tại vị trí ghế ngồi được thiết kế chất liệu da cao cấp tạo nên sự thoải mái, thuận tiện khi làm việc và cũng phù hợp cho không gian làm việc của vị trí cấp cao. 

+

nội thất văn phòng bằng gỗ tự nhiên đẹp

+

 Thiết kế phòng làm việc bằng gỗ tự nhiên mang tới sự sang trọng, lịch thiệp

+

Thứ ba, màu sắc là yếu tố quan trọng quyết định vẻ đẹp của bản vẽ thiết kế nội thất phòng làm việc. Cách phối màu cần sự hài hòa, cách chuyển màu tự nhiên không tạo cho người nhìn cảm giác rối mắt là điều quan trọng. Trong phòng làm việc của chị Lê chúng tôi đặt yếu tố sang trọng đẳng cấp lên hàng đầu. Vì thế màu gỗ tự nhiên là sự lựa chọn hàng đầu. Bàn làm việc trong mẫu thiết kế phòng làm việc được làm bằng chất liệu gỗ tự nhiên màu nâu gụ. Màu sắc của bàn làm việc tạo nên cho căn phòng sự chắc chắn. Đồng thời, với không gian của bàn làm việc trong căn phòng như thế này cũng sẽ thuận tiện và thoải mái hơn trong việc sắp xếp không gian sống. Chất liệu bàn làm việc bằng gỗ tự nhiên. 

+

Tham khảo: thiết kế nội thất phòng khách 25m2 kết hợp phòng thờ đẹp

+

nội thất văn phòng làm việc đẹp nhất hiện nay

+

 Thiết kế tủ tài liệu bằng gỗ tự nhiên trong phòng làm việc

+

Thứ tư là cách thiết kế tủ tài liệu ngăn nắp gọn gàng giúp cho không gian phòng làm việc trở nên bài bản, thuận tiện cho người sử dụng. Trong công việc có rất nhiều các tài liệu, giấy tờ sổ sách, hợp đồng, chứng từ,… cần lưu giữ. Một trong những điều không thể thiếu trong phòng làm việc đó chính là thiết kế tủ đựng hồ sơ. Với không gian tân cổ điển trong phòng làm việc như này, chúng tôi thiết kế đồng bộ từ chất liệu tới màu sắc kiến trúc cho cả bàn ghế làm việc, tiếp khách cho tới tủ đựng hồ sơ. Tủ đựng hồ sơ được thiết kế kịch trần, vừa tăng diện tích lưu trữ vừa tạo sự đồ sộ, vững chãi và không gian trở nên đẹp mắt, ấn tượng hơn. Không gian phòng làm việc là nơi các hoạt động ký kết, giao dịch cũng như trao đổi công việc với các đồng nghiệp, gặp gỡ với đối tác, khách hàng trong và ngoài nước. Ý thức được việc đó nên chị Lê muốn thiết kế không gian làm việc thật ấn tượng và cũng đầy đủ tiện nghi giúp cho bản thân có môi trường làm việc thoải mái, tăng hiệu quả năng suất trong công việc.  

+

Tìm hiểu: mẫu nhà từ đường kết hợp nhà ở diện tích 200m2

+

nội thất văn phòng làm việc tiện nghi với phòng nghỉ trưa

+

 Thiết kế phòng nghỉ trưa tại văn phòng làm việc

+

 Phòng nghỉ trưa được thiết kế phía bên trong vô cùng kín đáo tạo sự riêng tư. không gian phòng nghỉ trưa có giường để chị Lê nghỉ ngơi vào buổi trưa, giảm căng thẳng khi làm việc. Đây cũng là cách làm việc hiệu quả, giúp tái tạo năng lượng, phục hồi sức khỏe và tiếp tục công việc vào buổi chiều. 

+

Tất cả không gian đều được thiết kế hợp lý bài bản nhờ có bản vẽ mặt bằng công năng sử dụng đã được lên ý tưởng từ ban đầu. Dưới đây là bản vẽ bài trí các vật dụng trong phòng làm việc diện tích 45m2 của chị Lê mà kiến trúc sư Angcovat đã thực hiện.

+

 thiết kế văn phòng làm việc tiện nghi

+

 Bản vẽ mặt bằng nội thất phòng làm việc diện tích 45m2

+

Trong phòng làm việc có bàn làm việc. bàn ghế tiếp khách, bàn trà, tủ đựng tài liệu, phòng ngủ trưa. Các không gian được bài trí thông minh, logic tạo sự thuận tiện trong làm việc cũng như sự thoáng đãng, tạo sự thoải mái khi làm việc và gặp gỡ khách hàng. 

+

Trên đây là bản vẽ thiết kế văn phòng làm việc diện tích 45m2 bằng gỗ tự nhiên diện tích 45m2. Không gian được thiết kế theo trường phái kiến trúc tân cổ điển tạo môi trường làm việc chuyên nghiệp, đẳng cấp và cũng rất sang trọng lịch lãm. Mọi yêu cầu tư vấn thiết kế nội ngoại thất, thi công trọn gói vui lòng liên hệ với kiến trúc sư theo số Hotline để được hỗ trợ giải đáp 24/7.

+ + +
+ + + + + +
+
+ + + + +
+ + + + +
+

Trả lời

Email của bạn sẽ không được hiển thị công khai.

+ +

+

+ +

+ +
+
+ +
+ +
+ + +
+ + + +
+ + + + + + + + + +
+
+
+
+ + Facebook Messenger +
+
+
+ Chat với chúng tôi qua Zalo +
+ +
+
+ Gọi ngay +
+ + + + + +
+ + +
+
+ +
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/cache/wp-rocket/localhost/2022/02/13/tu-van-thiet-ke-van-phong-lam-viec-bang-go-tu-nhien-phong-cach-tan-co-dien-nt628070/index.html_gzip b/wp-content/cache/wp-rocket/localhost/2022/02/13/tu-van-thiet-ke-van-phong-lam-viec-bang-go-tu-nhien-phong-cach-tan-co-dien-nt628070/index.html_gzip new file mode 100644 index 0000000000000000000000000000000000000000..bcbac555a279bbeca6a50efafe904e92a86eb892 GIT binary patch literal 18317 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 literal 0 HcmV?d00001 diff --git a/wp-content/cache/wp-rocket/localhost/category/biet-thu/biet-thu-2-tang/index-mobile.html b/wp-content/cache/wp-rocket/localhost/category/biet-thu/biet-thu-2-tang/index-mobile.html new file mode 100644 index 0000000..87da3f2 --- /dev/null +++ b/wp-content/cache/wp-rocket/localhost/category/biet-thu/biet-thu-2-tang/index-mobile.html @@ -0,0 +1,830 @@ + + + + + + + + + + +BIỆT THỰ 2 TẦNG – Nội thất – kiến trúc An Việt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+

+ Category Archives: BIỆT THỰ 2 TẦNG

+
+
+
+ +
+
+ +
+ + + + + + +
+ +
+ +
+ +
+ + +
+ + + +
+ + + + + +
+
+
+ + + + + +
+
+
+ + +
+ + + + + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/cache/wp-rocket/localhost/category/biet-thu/biet-thu-2-tang/index-mobile.html_gzip b/wp-content/cache/wp-rocket/localhost/category/biet-thu/biet-thu-2-tang/index-mobile.html_gzip new file mode 100644 index 0000000000000000000000000000000000000000..4b23fffad7c047056fc5c158171e3a406a574f62 GIT binary patch literal 12038 zcmV+hFZs|PiwFP!000006YYI#k0i&D*ykDG{zI}B%b5|ox~r<+-7`Zjhf8sx<%$wV zlnm}-kX@DCUAxs)byd|fJsb@noM8Kt0m)|rHf-Z0on=Ai6HaIQ6ZeCGTY~>%{)r

#Uy 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 z¥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 literal 0 HcmV?d00001 diff --git a/wp-content/cache/wp-rocket/localhost/category/biet-thu/biet-thu-2-tang/index.html b/wp-content/cache/wp-rocket/localhost/category/biet-thu/biet-thu-2-tang/index.html new file mode 100644 index 0000000..17ba9fd --- /dev/null +++ b/wp-content/cache/wp-rocket/localhost/category/biet-thu/biet-thu-2-tang/index.html @@ -0,0 +1,848 @@ + + + + + + + + + + +BIỆT THỰ 2 TẦNG – Nội thất – kiến trúc An Việt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+ + + + + +
+ +
+
+
+
+

+ Category Archives: BIỆT THỰ 2 TẦNG

+
+
+
+ +
+
+ +
+ + + + + + +
+ +
+ +
+ +
+ + +
+ + + +
+ + + + + + + + + +
+
+
+
+ + Facebook Messenger +
+
+
+ Chat với chúng tôi qua Zalo +
+ +
+
+ Gọi ngay +
+ + + + + +
+ + +
+
+ +
+ + + + + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/cache/wp-rocket/localhost/category/biet-thu/biet-thu-2-tang/index.html_gzip b/wp-content/cache/wp-rocket/localhost/category/biet-thu/biet-thu-2-tang/index.html_gzip new file mode 100644 index 0000000000000000000000000000000000000000..38e21cb9922ef9e98f59594667cb20f0d4da6672 GIT binary patch literal 12209 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 literal 0 HcmV?d00001 diff --git a/wp-content/cache/wp-rocket/localhost/category/biet-thu/biet-thu-3-tang/index-mobile.html b/wp-content/cache/wp-rocket/localhost/category/biet-thu/biet-thu-3-tang/index-mobile.html new file mode 100644 index 0000000..02eaa48 --- /dev/null +++ b/wp-content/cache/wp-rocket/localhost/category/biet-thu/biet-thu-3-tang/index-mobile.html @@ -0,0 +1,876 @@ + + + + + + + + + + +BIỆT THỰ 3 TẦNG – Nội thất – kiến trúc An Việt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+

+ Category Archives: BIỆT THỰ 3 TẦNG

+
+
+
+ +
+
+ +
+ + + + + + + + + +
+ +
+ +
+ +
+ + +
+ + + +
+ + + + + +
+
+
+ + + + + +
+
+
+ + +
+ + + + + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/cache/wp-rocket/localhost/category/biet-thu/biet-thu-3-tang/index-mobile.html_gzip b/wp-content/cache/wp-rocket/localhost/category/biet-thu/biet-thu-3-tang/index-mobile.html_gzip new file mode 100644 index 0000000000000000000000000000000000000000..c413cea84bc3adeb6ae0494297aa6fba1df27c6f GIT binary patch literal 12140 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 literal 0 HcmV?d00001 diff --git a/wp-content/cache/wp-rocket/localhost/category/biet-thu/biet-thu-3-tang/index.html b/wp-content/cache/wp-rocket/localhost/category/biet-thu/biet-thu-3-tang/index.html new file mode 100644 index 0000000..f7cf37c --- /dev/null +++ b/wp-content/cache/wp-rocket/localhost/category/biet-thu/biet-thu-3-tang/index.html @@ -0,0 +1,894 @@ + + + + + + + + + + +BIỆT THỰ 3 TẦNG – Nội thất – kiến trúc An Việt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+

+ Category Archives: BIỆT THỰ 3 TẦNG

+
+
+
+ +
+
+ +
+ + + + + + + + + +
+ +
+ +
+ +
+ + +
+ + + +
+ + + + + + + + + +
+
+
+
+ + Facebook Messenger +
+
+
+ Chat với chúng tôi qua Zalo +
+ +
+
+ Gọi ngay +
+ + + + + +
+ + +
+
+ +
+ + + + + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/cache/wp-rocket/localhost/category/biet-thu/biet-thu-3-tang/index.html_gzip b/wp-content/cache/wp-rocket/localhost/category/biet-thu/biet-thu-3-tang/index.html_gzip new file mode 100644 index 0000000000000000000000000000000000000000..f46ced6987ed4835bc62b0d195483efcf138c59c GIT binary patch literal 12309 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 literal 0 HcmV?d00001 diff --git a/wp-content/cache/wp-rocket/localhost/category/biet-thu/biet-thu-nha-vuon-1-tang/index-mobile.html b/wp-content/cache/wp-rocket/localhost/category/biet-thu/biet-thu-nha-vuon-1-tang/index-mobile.html new file mode 100644 index 0000000..acd223c --- /dev/null +++ b/wp-content/cache/wp-rocket/localhost/category/biet-thu/biet-thu-nha-vuon-1-tang/index-mobile.html @@ -0,0 +1,804 @@ + + + + + + + + + + +BIỆT THỰ NHÀ VƯỜN 1 TẦNG – Nội thất – kiến trúc An Việt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+

+ Category Archives: BIỆT THỰ NHÀ VƯỜN 1 TẦNG

+
+
+
+ +
+
+ + + +
+
+

Nothing Found

+
+ +
+ +

It seems we can’t find what you’re looking for. Perhaps searching can help.

+ + +
+
+ +
+ +
+ +
+ + +
+ + + +
+ + + + + +
+
+
+ + + + + +
+
+
+ + +
+ + + + + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/cache/wp-rocket/localhost/category/biet-thu/biet-thu-nha-vuon-1-tang/index-mobile.html_gzip b/wp-content/cache/wp-rocket/localhost/category/biet-thu/biet-thu-nha-vuon-1-tang/index-mobile.html_gzip new file mode 100644 index 0000000000000000000000000000000000000000..7b0bc0a22d9170eee833c03491698cd03b5a4370 GIT binary patch literal 11203 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 + + + + + + + + + +BIỆT THỰ NHÀ VƯỜN 1 TẦNG – Nội thất – kiến trúc An Việt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+

+ Category Archives: BIỆT THỰ NHÀ VƯỜN 1 TẦNG

+
+
+
+ +
+
+ + + +
+
+

Nothing Found

+
+ +
+ +

It seems we can’t find what you’re looking for. Perhaps searching can help.

+ + +
+
+ +
+ +
+ +
+ + +
+ + + +
+ + + + + + + + + +
+
+
+
+ + Facebook Messenger +
+
+
+ Chat với chúng tôi qua Zalo +
+ +
+
+ Gọi ngay +
+ + + + + +
+ + +
+
+ +
+ + + + + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/cache/wp-rocket/localhost/category/biet-thu/biet-thu-nha-vuon-1-tang/index.html_gzip b/wp-content/cache/wp-rocket/localhost/category/biet-thu/biet-thu-nha-vuon-1-tang/index.html_gzip new file mode 100644 index 0000000000000000000000000000000000000000..07946df74e0be6491f9af03ae07f153396a0de5b GIT binary patch literal 11381 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 DqoE_t literal 0 HcmV?d00001 diff --git a/wp-content/cache/wp-rocket/localhost/category/biet-thu/index-mobile.html b/wp-content/cache/wp-rocket/localhost/category/biet-thu/index-mobile.html new file mode 100644 index 0000000..1771cca --- /dev/null +++ b/wp-content/cache/wp-rocket/localhost/category/biet-thu/index-mobile.html @@ -0,0 +1,968 @@ + + + + + + + + + + +BIỆT THỰ – Nội thất – kiến trúc An Việt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+

+ Category Archives: BIỆT THỰ

+
+
+
+ +
+
+ +
+ + + + + + + + + + + + + + + +
+ +
+ +
+ +
+ + +
+ + + +
+ + + + + +
+
+
+ + + + + +
+
+
+ + +
+ + + + + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/cache/wp-rocket/localhost/category/biet-thu/index-mobile.html_gzip b/wp-content/cache/wp-rocket/localhost/category/biet-thu/index-mobile.html_gzip new file mode 100644 index 0000000000000000000000000000000000000000..095ac3bf8153dde03d562f457727269a94b0fc7a GIT binary patch literal 12692 zcmV;FF>B5riwFP!000006YYI#kL1R+*ykDG{)gILtY*e)c9ZO8zvdyWMk{OK)p~7> zWe3{Dpqi}i<}RD$CE4@PcmU%XNj?Rza}yvz5?He17{0j|*Y_r0qWuuyuAu)h|0L&B z6`#$1&Gf7u*_CF7tj9T3r%s($6|45{y#M3Fqkr|}0U1SO=U{X1j-q^O56Hs@q)VP1 zkUdN$4t0n7l@q%{OoxWye#K^8;&{}u-JufN5hJdrJP#{S{?4b&wd}z&Maco{%mvn2 z0oe8sN?`MLetBp6;e(xL2bgm(1NIEKijs#tV$?d=+}Inlh!S%|gOEl0m7g7bpmZvv zjyaC)z90c}_A7qi4Qz*1$S7cg{mLkc{9e629Q(tX7YyrX1Glbe)3u-#eQLfaRC7F& zIwLQP>Stpo@XeY(@_F6Ojm^EtjvRLI-ovYx|K^AseR%cqFXXMe9bMCQ$>Xb+|Jf$d z=<3TqMoHoe`|8X8>yjvV^`%MfyW|u5>gB(U_UZyorZHi3?yzvgSTwUar@mr(Zp7TE zZc=l^>SG)FRo6R~MF)D{Y8%ZqYnoO^>zK6BXzFUGL)(p-8HN=yW|mF&E7Wl+#G(;Z zpt3zU->(R|2r|2L%=WheukS_S7LmyIx5o5LvBz}C6hB}mHaqP(G#Ik2Ld6PZ`Cb4$ zh^tmkZ7Uk>TTshn3V*2*KpffBQ9|e#+t;cD;M?QLI8ML@rIgvS+z{~&SY(d21Z}qJ zb<=Wd&qIqj_DN84StJ^>sMY}571oBHH*^^F?XYHgX{@@7N}dY|pI+VfZ%i5M<$K?^oV`_0R4QIONs;#y_^3XBlM%vyis}`qvY0cP3v9 z7_;h?n>WmdcKpF5qpO#HYp^-;1#pZ@(hrUD4dmuug(Tv=&$0%>98|`jx^t}KO^+2Ug=bS0wh+5uhS?-A0!%@^D z8XM;`xVSD!AA|6>-5ybiT2tG_+!Gc6SAlq^jy;4@idvh3fLeDL0IyqR4f3gl1_C0; zreALE)j7>jiwok}*8UdIst*J7LUHVVK!bBd&_)4jZVBpc#njz8*z5(K7hNa{)S?!s zK!pz@465S=y}PQ~Hv4q9JX=wMVZWzVHN9EYI;~lyEE>FEfugAhuGOd7!h#84wO!R( zi^}U9ut7WRg#}~4U4Y#%vc(0j2!*T+JaZEEbpPz~U2Y|iZRM2pU)T}a2#VC*zJ10V zB|zES(|4-dm=&BLeyLeU#@5gWc$Rnpd@3iVxChNd{3tFx4tuB2*|{02n~`_+rSP7cP(nE%*??KCw*(eEX4!E@!Dh>&;eyy^=_+8TWu`|pGMx;Hi1lx zj;{^gvf5pWqtT>BHwWHDhC*3>?Y1`>YPSWnX=tWp4syW9w&lhQdoAwK)kX)%qIcTO z0g#;o4cKr3?m{|iFOsJoC5Aoa7Qc*5mfFeOmf+Mm%rOhJ&*5s3ManJ9WM zVxs^R>1B=AldUqr$q9Pk%#AK<;B1dW<@p3mzJU$=&)Xwj&tsdWH*gqO3K0#W=?W5N zu}a+CVsX)xQUuVO>GGjZLCf@6bP8f^s$MSlvKE?L_`w`Q-GcPGkk*g7YdW^y3xGD; zntxW!{Os(;Y7L7hJ_X~(c43&eK@RQgmL^Ku2x{+2t4G0S4+QqW0ds0(TNZP7V~a)I z^}W#M3X%4?Ze+W{io#l_&_v}lpngxVV`|)#^{B^{Wr?b>EK78fP9iU3AWioUIbyf? zDu6Vb&E1%BxcRi3o0W0L5ydXDN)J@_F1M>>j_5+ta}Dx|-hf|P6H0OxwwUR0gTWQ3 zBhTkx1VuRL&%j!<*jZ0g@n6QmOYCDb@nRcW8B?$*=Gu4f@@@=(ThLyHfASryX)v2B z14prer^3o^nwc2Yf(|?*49p&x1kUy~JOF4&og=Bo*lNs+-Z|NC)HI{k*hw+)hmEzO zxofk5eU>64101JlyTZnO2D}Q2&j+ADw#rU*-S|(v!9Xv;&C_oIUla{WutmXy-C_r4 z^zRn1g(t%V+1)rb#R}OK!A#kClL=&{A;qoyG!pSI9t#uGXl{HAoA!>FLHm!uyt&u7 zFLnAo{jja7@Vm)><8%A)ed?MZ5#IjT3~WEj6^3GO-31dNmOT66DfLAP2vq24cWOq< zxaAgg91(g;r9uF+6?C)%#v+E4=gWm!;5f>;H;E>F@MQousIo*>1GPX*ov>J%fzuL! z8P_vfHN9~!mWAq+*vGi26z|aW-OCar#2y56%r2(&0!l+w$X0bX10_~D_?!`syBYfn z9Pe^m}I#5|313T=o`PpLv{aY#=Eh8ZC7#7wTC>VNQY&l#B1#XcHs~DGI17 z0oIx!fuY=0#@=UT>C;KGI@%lIXk5fN1~$eLdwt$emxbYW+qkz=TDgXQFJ!yhdZLi{ zqtJCg1Fo##ub>z=mwHO0l^6mF77z*3-xN~*7MMF>-ot0{P-+ZSP1acub=2~Ak_x3ryB(v z55SoH*-syqM}Vzd1o)>PzrVy%%{x%77}q;>PRG=>2P}-r5M{Cj!r8sDUDKIZ(2-1? z8n077Ai2emA#)j6KVFbo4f#1toF`z&hs3CLE2%s?sP%^z9@w~c1a^qJOEU9-$aJEG zyQE}FW%Dly08&sIGAo6r?Ow(lk}m%}o3;2<2uNN(63R6iI9f1?aX#>6sDr(bs|5n) z&whok;yec><9HJbst1hg8~U7{)g8MZ)^P#R2uJowy-{n`wDcXLs0Yv~4lD+G0R9`n zWka%0EHIvN<)JoY(F2F^MTqy#kLd6*49@lzmfG6+RDD(z`Xo~UJ@<&oI@>~tZtd*y zzcnNd6izjZOy|EpMgn3tk02LI_4=S>16J+P0e8owGgF9oZtY@gYQT`-7#)sm$J*xL z04Ix%>@fo&usxW#+}qpUx!|P(HU{~ZD}7ld>dtPFD1y@07(PA#IDX)=*?rpqRw__E zvs|0uCA3nO;hKq$d=zX zHm$3l!A}mKOq*J?@-Yk+c@uM_tP6WbJ%b;Cy|AV_4l|NUIkFx05LaR|LgfaC^|pEj zKPlqGx~hQh33i0SML=AACbD28Ng0!2MFG^|GhI+ZM1}`~d(2Hdm z4NP1k2*wvAUV9RDbv)if!D(bVDnf!`pKj}hQH_7pT6d?wDP{HU4mA7^#@q9iJ`EI? zB843re$k6;#Dm~c1j+F>sVyu$O{;m83>7QI%P=Y56QkMn&vwW~`OH#h&n(QkM2w0B zbKmk#T^TAa_3WCew5e zgeOUZdTA_d0IFCWiZ9lxwOw9g#HWv4Z;_$CSlrjeorqpk9oomP_4BQKg? z`a>^DONSIp#JR;kh7xIc+^7K7@cb%IM4?J*+;41@?lGOHkuESxlWYipM$NGS?4#@t4o0!p%};*tQ*jfG`4 zyOm~7D~*i0l|}NLhk=7kIw%7W>lOtM%OZEJKK>{2lh6T4Vh22(cQb*)gAeH|$Bt@J zHUtcJwyoe|s=^m7c%e9S1m2%)NxBCFH*RRU0X_sgh`*pdw^hs_b<#l?GX{v$8hJ%h zwAI0(NcND(*TOy(MeA`!}O|CV<>0XH_Qn7C( zcmZjvp_h;a6fRbg@h6fAKxwKZWB)THoyk}>D+2qTV_{2i!6Y-V6SUS$8ZrSwuJwW3 z8KduU>LQ$+#b&7SoJeqqH8@h6oC*Bs!yF&uZ%{HbOL1!u!B34#x;nT!B`XLiPW}LF z#sKtV!21BQDcQWUvFCb;lbSdj#c;0cJr9MfDhc9M$)|i1E0$Kk!+n-p1|rYMB;tPs7dS-M&fOM$%7K_|4UPJgA69nDn1Jc-{k=ljAYFyh3_`tGp@oT zb2LU2zOa2h7-V|YFZL$6312z*7>a^0hy~hSonoue3E(na81)stHF;xC7-~F6JSJPN zWsbDuGA-wAq1!V;A7EeniW)2U>1(sM$0^Im6)Ggn{e+^70n-N_SW2>R z7UKQK*2yL4w8qP zT!Vl=3MA=gAApR27zHPFAgdF(TQ`Zqf558{D41fPft})=&Og|*vlx^?QW03zK0v9q zRQHzXNR|Q*T~JoTfR4-h2d0V4ozue%gz_$?1&V#N)2gd=GTVcrQ#-=xcfBDbk*GeW zg9(E2?#0=~&P8#x>8^p^aw4w>>N9yz*4jKW45)CLy6NkHV9wjS^ATT3OSC*bK%7FRbXJsT_HZv*lpV+h*gBOUx zvuIoJFj}d7APWdne%huW7$nP?06alzIj~ug$AGf-kjL9AxpBwEGx7+dZ1{m%fg7;7 z2&*#17d$mTKK#o$@}aQGoETzJJfso*g#B0e#tcR+S31fLVR6*tghcm37=P&2h;O$l zhN@Pii!5LGk`m799{(z=9-a(w-L!hIaR`t1bQNCQaDPkoxKe zAmhm_rr0&HtiSv9oHK+C|CWxmn4R2X`1TC)>lo!5bv!@3=rU%-a8a9aQS=elIOGuu z#(25BOv){#^QOG8oYu=Ix138hPlaJ2ZX2M#$`@U+Fo>yGV&0XbjRul*o_RDwCi@RD*%&OL=o{o!XkLlV8O@c4ai%k!8Gu>woI9|1Jo(u4sIeOajb4P8M8FpmS$s6T#4wJ=X&GwOuE;9&df+jqdt=WBK-U z7Nbd(+-K{XE2#2<6ZT zNKCt4Ie7HyZ+=F;`pv6fJrowcW6x-_zV z75U`rf4qA6Ump{V99@0+KOX;ZLFd%9cTT-#=k(G(>C1IPTYEROYj&ei+Kt9kH-way z&(mV6x#kYd5=zZAN+V=Xf8^C?2p-O!Pke(QpXf$(%UcLNJ4^d)$ z`QMLT_Z&6WK1You=V(ln_(4gnsvJdf=Yh;;b)&WR&a|%CnM5e(`;rmH^Lw)PNoy=Q zX{UOECuR)6#4UE^@WY=y{vkR1`X3kcq`mf@w6EEd6YAoa2pN>^$|qm_&0`pqSO0#I zEH&1y4vZz$!St}u0pnaYqSGBZy#K+2^z19-Irv#Y%C37Jbz3vV=~CT~MmD0KQ~cSpU4IhEoqQ5UzI}4jDGh>-C8S3ETJ8P562L9!x+d=RfpZ6vAJ3(Uzd>*_+FG|sv} z2$Td`#iU<)5|jLFOiaIc^5)Fc83wPI8JRe3e!Vuw*h#3hxNMsnZxI{a$SriLD5>n=no#y9-k;?j@Oh z#~UWooWI07OZnGUIT;~0X6ARGDwz+rib6+Dy&R9=1|mh%1!Ks~BytAqjkLH}`l%O+ z7G8;DcYADX9L7fVebJ7vNA^OWy7_g5I!{76X&J^%*)1Voq1hyRVA6~}sBybD)9s}` zh%hiw!$|I;#SdTPmSLWyw^Q#gPQZQjLLw>rDU4_|!6VH20B9sn(7>(CIK3?{;d#|) zG#U3@+;=pBX3pONESDRKJ(2B`J5c!6+~P2E(3$ZCF`9*t&E|W8(-|*h49eZTQ7d0Q z@rYn>&!iUJ+*oa)iSGeP07Z0ISW*JTTP4?8k|_gST%{SckZDGGzF(YU=Q(ikTDsN% z7j9w##lX=K3o0h{l_ofWzT$yRVhhJy!86MMEJ#$%P{%qnP>Fp%aNm`YhbQWdcp=l! zRJGfQ+mCw|$9zpb<~N7$(monpz5FMWM7XnNeD&r3oDg^P>T_aVefdY9G|5-Lz54S1 z_~h#4?+Ccgf3V4u5kJe;!sU8UO|Sj|OfB9PDEjITxKoFi{FvJlfHLx4eeUwzJ6QPW zP&7%BOwWr=L9$rv0w=_eu~{X>dkMesPmWXHFULh2TnuC<8J;5q9e=_fai`$7YkUs& zB74jVQ~~BAQUWlGFZMGmwO_#&Dypt%jU%nqGdex3^R}w?aJfrskfYJ7FJLG>q;{2H zNj$rI%<>o}K0+%8Y8+`=Pwn;$JppRW1ja14|_}^?35>cNRTB*4bi}{U${UwMkP75D69*u^wAq{Q(ymX|X4vdgYGf7>0?(>5IW^8jSr{HZj=h|eO-WOHi-9ELTa{MJ8ejdOL z2_ZUors7Q^F%>tbYYLrTE-*O^_;rplC7xgXU{2XFkZeR!m-uL;%X%4Oi`%Xw@gB-2 zV{D)n9Y2v9PR4kKgUIy{-p?qd9;j!EdxNjO{0AR&8vKcB&}wwRKE8VSTky%aB6EjV zFaI>J@F8e4DEklPW$J#hWd(yL6=`EHVB*s$>5|D4D3DHaXcCg)hTd;f+}Ngf1;Ht2Z_iKPBsW;rX5e`z%rHkS)KIp4RPYVdBX^nzY1eVNeaEc0hW!^YPtL!UUgrcyYa5)X#Pi4ZCMsH?ZZy3rOnNgvy<{%#_pc%&~rQHaoS zA{-}l4*aJ-ft1t;UchW1m-BGx{ zE7a^Y8oj2rR#!;v^qSyewcofxubC^R{hvL^))}_uH7w8){6K~ZkS}(WUmMf&T3a*ga zdgBVcafR}%><&G}9U_~acs6(QOEj{P;cejRk*D;baLUt>4(#7u>w4emI3UC- z{Yb-qi#?&kk;m;_)DC~}bG}f{{SnweD9~s2)+(v|Jnupj;l(D6#O2E^gHPH z+zzp?>Fwx8YO~j9^_tDZG11rK?Wo;e*0lIA4gO5tXeCgKwYFKE>0VJDSnN(_5Nntxf|x3N|G8c3LGj2MYss24oRX;bkpA+pW%- zq3HrBysQPNW;9x7*l$SzcwGxzU2S&Gv_{JiaPjptH-zHCrR;qt$U%7FiKeP2&<62( zBjya`Zz!|vNH1}N6U zBWnpuY^FY!d?@~f2mJ67QzUy}1VcQgCoS_=C3_nN&`aDy5|@cz#gVG~i(`>;thLmZ z-q!VYb4sH0ha|pu1s?IMQPLkO{4YuFS;eC%qf;m;RcFSmV^iHe8zxzz-VtNiB zZFE}QMyH$Za>lRI<&oatt#XNp58}hpCIFuH(GZf*aWXeM1hNd;fEel$_XM4hv89|5 zX9&N}@%bE|&jmwqd+fN=(7R2rLAtTDDj)@bGQK5PQD}s3<8j+_Y|!#AkybW1)8mhc zv9bji-xCXVB>Zq7tDBMW1+0d820t7K{9WXnKw~rZ7=K&WY16Ymwz`$mrk5Gx@7c&M zJDxf7TFhfyalTbc%j7 z`uZASYVPn>Fr?x=5U0QZO5lWPT>Pl5WhZA#Qw^9HYJ2_cpSigc1(x1zwOh@muBS1E zL>7s;a)_T|0+;_Gfu(gD2;Y14g-3?=t1lK1k~3x2I4|%7x6d<}w1AD#gWzYz#3~hKVofz>aw8Ge7(a8a$1hM{nM2bc?)(CCVwhU9)zw-pT`Mtgnrf@r>9iW1 z9M2b6UDK~?bY(U;#eb(<_A~^7m)`G60_xy@Pu+ly_rvRkQ6=%Oo!xZHRGviX0Oq<$ z4oEF&Hy_I}bkT;(Z*DpMx&*7I%PwkwK|QC)@nAI>ySH{ zt%mtg@elsx&wP86unSqlmk5^?jm@ssHM(8BG}L`VLpZxIG3)N(>_z7p4<~yi@!jv` zO~fU=`rceXykNw>gZB>Ke6${cAI_|YZfTbso{0|F%s!>{%R80i7kd@Mp1PH|C|PF< ziEcyFT85!_)+flsigI3F&{X;J?Fy$OI}*pqVgMz*DN)|mCr*z&V!=3!BNuquFBMzT zuLJ8zV4qO)d`-{}VdmRxx@`+pe$j=}nyR6-JDqYD%8&JJ)+7;96qM+p2t=HVea(12 z&Yud=1Uv;4zwP|fga;G3!we4XKS8zokAEokr0{6sSHJnukKQLLxQ>lZTWvIm)p`QYjt>EQ0Du z$nrioG)EJ3e=`Ahzs#dZNK`cA)LN&^iqmS185Ubn_a|rLPsf*3y@jj$YKiV|qgvIw zdiN&gS6(5$QLS%O>l@YjT~V!twa%_#fR~xsP_oX&&KUTLtDWdL$SsH5efZfg$k7N| z6ml8+MjKCg=sC(yZ}6HXf4n~_PV9To-f@~f&a+?Um*1>q&E#FF6c71scx_{1X zW7*J5(Ze`Pc>8Z*(cQ#o`oN)4=#80}!->5#ebq)jA-6etb2HsinI^@8EOY;OvcZ_& z0TjaM_bEzeB{TyNoA@#w_zK2ND)Op}ti>YA%Ud6_mBj8!ITLd?@bHUw5=8KP!f>Z2 zb@I20NyQM+{(eP^FKJ1miZ{6n?pil@ui-N8shz?zFVBqWirJa_k=E4z>>bDJzdL)) z4g3Z#%3gC%Udyf6Yi{%Fz5;u#&7XPU^=emHALK7e{l+KlYq)uO&F#JQYo^!S-q(4j z^lRbx74O?ETm${BVEWg2mGhcg{<`jMUURcw*CowsZuV=uk$KH6|8`uzyw*;2m*f5P zPUW)elcz7_lzwVO6xhR`nMh83MV#1RPD1cE?ax@vANlW00%!lWKYn`)13d!|5Z^Q2 zlkV(2>|Oa@L@ zL_WZ{1CMyfoe}td8vc+^f5rdHdvAE@skk{2hEMo_m4m<9j6GTO73tVHwq6|LM|0`d zAUutKNJr$es2sm>CqBMaJ5Ch-zPwvDu4ctgCNQtd99(mfv9r$<+qKwPkLX&n-R$sa zifmoM)s`USm7cLv52=u3%EpYm!2S&LoMO9jjjfOb!?pjd0w7a%ezmgPgcf{+#kk4G z_-}E{CucAY)_HnQx4hkw69ET&Yv_1=AQDdqVF>tYiy4Mn;%?L}jHuM{{a_OzT__67 zFvSm82$MrZzZ9kKQ1eBP+*SF%-O@7VIZU6vGqJ;wG7RWB6sP@u$83}r=dnR3GvNQq z%lH&V(zjhiJ!p3<+Ac45g7QNNm<8p`fzEVRUe1|-;P57)tl$MOzeO8b-C5l#)S=@( z!*Jlh?9Z;k!$iY?fgC}qK=F3pGW*87*5`_=s-wrhCY8^E}uU2)nQ`H*kLhL0h zfi0N9Uh~MH8#=VXsH!O$DBp0UsWNe;rU;ZNHTaa6k3WM-(m_|-)n*I+UxXZF&UrEv z^c>Mn3xPR(8s}KJQrcR3Ama#@EM-d zs+x{N-`yd4mI631K!RqR1`TaC1$(sOG^`BN>q7fGNg5z%cB<`#T` zy4r#sv@)%SRvOUy=0c_w*!o^zF*-S0fC;()-O^e{$`p{+G~oXoV#LUSN@}&GFU_OY zBz&<%7aLWuw$d(kyC@X2uAX9Uft={zY+Zz!%Sz8=3#0+Z+vK=Yyd9m3Ctb@R#_?`} z$m%Sdn9M>b(<)jd~Qy`KpJc?M& z?GdfvpUo~Lmh!;rSLc=D`)+!q(VAE2EH2i>y~>w043BZkRM;;Ua;f%&2HUf(*d1~Q z{3I^`XD^a4ib`uqaK&mRkhzh&BsgBS1V&;6F9|0pUji$!3YLVGlrMo*Zh9;Sx3unJ z9KzDN77AXq3`5b9ToQVr+Duxn47pfs7DuFZ_X=#0RGQh|Rlyc&&4eq((kehjl@f?z z&KLJ+Tug7;xVa>_36iDd!%dJZmKryKzML$%35L}r%uTS}Nbal=@zT=hMmVn_qi#Nw zt4OXJv*s%D?B-otTFTuV)gsx4Zd|MhvoC9rdDj5GysWzh@Fis2HJ~mj+pYom8Zzw~ zSZ*fEZjNwy8Fn39*O6V<9;%gO)^%BJC0TXtt}HL3u8m@*Y+4WyPGc6SILt`KGQ3L% zo0s9kk{I!gnzRgpW#{9p=<&@OxC*AFWmPt~yw2v8fG^{*#WClb@!4YdWjeGh6n&$1 zltL`E2Z}-D8=;*BHxp+ZN?rrL7}Pu-#NhFI*bO1glJh)Pd?Pd|m=YZMsPK*O*s_Ox=3Kiqp-5!8GtKSz2RZ+LlH z!EYcqkf(Tr$;pt2qjaC9%}h_zeaes1eTv8A0t9g^>(h$fd77NdD&OLhcAr*Mq7uCc z|3fOCBM3>Z=K?ZD@ z4a8sN473uFJfGJs2h^ovqWFsv@9F*Wr}HKZ5E9Fm__R z`jLBVyST%&(i>1GWWaipkOh21se265I6B5JE5bD2);ccc<0me-YYImDBm8=hKSRDJ z_Ed2Y{5!H^*8^T;$0?s{$e*V)GDj>tcIde`i6s0?IxyC8$VKWgJHcB9N=x+Fh@RM9 zAd51qyqLHT2^l{u;>T<*9?EO-tYetjGn*hv;B`rrUPDzOm(jo+Vfw_0pnp)+JO{LD z4$sfyt0Ph|6v(JkONjD!L z2*0g^v^yaDm}}XCXNq#L#*Pg~b$4>+S+-lZnWi1`-G)yB&&SW3Som(U1`RIFs)3Y@ zJH<K-FjjtUK}?i?cK61_y1ExaeTwaxU1G9p1UH2k~<)qQl3~o&Ej&%EJ$SdjF#b zmABrC^RSW7T1kON5+Rfv*b#Uaq3Ml%8rgk^RdO(SLmvUJ*5uB^a68-F9bOn2${P?l zIM07F0jJ^4eg%Xu8-NV71W1uy8@M&V`3d0Mxe!T7XKFr0C9u5{m)PF96y0vp*%G*#bH&=sph%7W89ug_sU!iH+TQI%1c6ROXm{*=vH<=QZhadg0vMXr6 zDkfe@BID0XU=#CiSB&g24((D%6IyL=6=W6SPkHI>eL=HikTXmLd7_(fW|6(#-p@2E zg|HnH6WAq-N#g^abRL;0i%f(0xx=fcl@8Qj{xVw%-;1p{P4ea6m1^-qDg+%X;S`8=tC}0d8FL&cfT$2ym{i>(~ z7^`=*okab_x{|8~*8|7TwFl?;tuCSAxoa-IcEEQgLl7>QB)Tpwcrf7W@u1eV7AVd5 zO)APtRtd^xEW~Dlh+uX64nV7Gdbi)!`dwq7QZ{HCW~1Mwoi^3m25akD196CsrM*gV z?$wc|_{qd58skx|XhV>rksXp#)(^!A2E?&n;B7ZQvaVFAA*7e10J;J+Xy{omFhSq7RErWnH O@c#f|!7bn#_y7Q=;kVNO literal 0 HcmV?d00001 diff --git a/wp-content/cache/wp-rocket/localhost/category/biet-thu/index.html b/wp-content/cache/wp-rocket/localhost/category/biet-thu/index.html new file mode 100644 index 0000000..3686ed6 --- /dev/null +++ b/wp-content/cache/wp-rocket/localhost/category/biet-thu/index.html @@ -0,0 +1,986 @@ + + + + + + + + + + +BIỆT THỰ – Nội thất – kiến trúc An Việt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+

+ Category Archives: BIỆT THỰ

+
+
+
+ +
+
+ +
+ + + + + + + + + + + + + + + +
+ +
+ +
+ +
+ + +
+ + + +
+ + + + + + + + + +
+
+
+
+ + Facebook Messenger +
+
+
+ Chat với chúng tôi qua Zalo +
+ +
+
+ Gọi ngay +
+ + + + + +
+ + +
+
+ +
+ + + + + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/cache/wp-rocket/localhost/category/biet-thu/index.html_gzip b/wp-content/cache/wp-rocket/localhost/category/biet-thu/index.html_gzip new file mode 100644 index 0000000000000000000000000000000000000000..8fddb6009411d35b6cb6c328f29d6acea97bb6d5 GIT binary patch literal 12861 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 bEbASu)iktDOEsDVtbzXrq=p5GZTkQK^WPwV literal 0 HcmV?d00001 diff --git a/wp-content/cache/wp-rocket/localhost/category/biet-thu/lau-dai/index-mobile.html b/wp-content/cache/wp-rocket/localhost/category/biet-thu/lau-dai/index-mobile.html new file mode 100644 index 0000000..c678ffb --- /dev/null +++ b/wp-content/cache/wp-rocket/localhost/category/biet-thu/lau-dai/index-mobile.html @@ -0,0 +1,830 @@ + + + + + + + + + + +LÂU ĐÀI – Nội thất – kiến trúc An Việt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+

+ Category Archives: LÂU ĐÀI

+
+
+
+ +
+
+ +
+ + + + + + +
+ +
+ +
+ +
+ + +
+ + + +
+ + + + + +
+
+
+ + + + + +
+
+
+ + +
+ + + + + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/cache/wp-rocket/localhost/category/biet-thu/lau-dai/index-mobile.html_gzip b/wp-content/cache/wp-rocket/localhost/category/biet-thu/lau-dai/index-mobile.html_gzip new file mode 100644 index 0000000000000000000000000000000000000000..e2062bec3a3d342f33c73ccd4ae900e7b04908ca GIT binary patch literal 11950 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 AlK=n! literal 0 HcmV?d00001 diff --git a/wp-content/cache/wp-rocket/localhost/category/biet-thu/lau-dai/index.html b/wp-content/cache/wp-rocket/localhost/category/biet-thu/lau-dai/index.html new file mode 100644 index 0000000..8f3152e --- /dev/null +++ b/wp-content/cache/wp-rocket/localhost/category/biet-thu/lau-dai/index.html @@ -0,0 +1,848 @@ + + + + + + + + + + +LÂU ĐÀI – Nội thất – kiến trúc An Việt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+

+ Category Archives: LÂU ĐÀI

+
+
+
+ +
+
+ +
+ + + + + + +
+ +
+ +
+ +
+ + +
+ + + +
+ + + + + + + + + +
+
+
+
+ + Facebook Messenger +
+
+
+ Chat với chúng tôi qua Zalo +
+ +
+
+ Gọi ngay +
+ + + + + +
+ + +
+
+ +
+ + + + + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/cache/wp-rocket/localhost/category/biet-thu/lau-dai/index.html_gzip b/wp-content/cache/wp-rocket/localhost/category/biet-thu/lau-dai/index.html_gzip new file mode 100644 index 0000000000000000000000000000000000000000..3b073e38fb048b4b3525747c384513e16bbe07b7 GIT binary patch literal 12135 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 literal 0 HcmV?d00001 diff --git a/wp-content/cache/wp-rocket/localhost/category/nha-pho/index-mobile.html b/wp-content/cache/wp-rocket/localhost/category/nha-pho/index-mobile.html new file mode 100644 index 0000000..7f7dc30 --- /dev/null +++ b/wp-content/cache/wp-rocket/localhost/category/nha-pho/index-mobile.html @@ -0,0 +1,922 @@ + + + + + + + + + + +NHÀ PHỐ – Nội thất – kiến trúc An Việt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+

+ Category Archives: NHÀ PHỐ

+
+
+
+ +
+
+ +
+ + + + + + + + + + + + +
+ +
+ +
+ +
+ + +
+ + + +
+ + + + + +
+
+
+ + + + + +
+
+
+ + +
+ + + + + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/cache/wp-rocket/localhost/category/nha-pho/index-mobile.html_gzip b/wp-content/cache/wp-rocket/localhost/category/nha-pho/index-mobile.html_gzip new file mode 100644 index 0000000000000000000000000000000000000000..645987d8d911544c7d6217bbb30206a78348f6bc GIT binary patch literal 12298 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 + + + + + + + + + +NHÀ PHỐ – Nội thất – kiến trúc An Việt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+

+ Category Archives: NHÀ PHỐ

+
+
+
+ +
+
+ +
+ + + + + + + + + + + + +
+ +
+ +
+ +
+ + +
+ + + +
+ + + + + + + + + +
+
+
+
+ + Facebook Messenger +
+
+
+ Chat với chúng tôi qua Zalo +
+ +
+
+ Gọi ngay +
+ + + + + +
+ + +
+
+ +
+ + + + + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/cache/wp-rocket/localhost/category/nha-pho/index.html_gzip b/wp-content/cache/wp-rocket/localhost/category/nha-pho/index.html_gzip new file mode 100644 index 0000000000000000000000000000000000000000..93e38e8c799a5893c73c0515b9d7ef11a51c911c GIT binary patch literal 12465 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 literal 0 HcmV?d00001 diff --git a/wp-content/cache/wp-rocket/localhost/category/nha-pho/nha-pho-3-tang/index-mobile.html b/wp-content/cache/wp-rocket/localhost/category/nha-pho/nha-pho-3-tang/index-mobile.html new file mode 100644 index 0000000..86bbdb0 --- /dev/null +++ b/wp-content/cache/wp-rocket/localhost/category/nha-pho/nha-pho-3-tang/index-mobile.html @@ -0,0 +1,804 @@ + + + + + + + + + + +NHÀ PHỐ 3 TẦNG – Nội thất – kiến trúc An Việt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+

+ Category Archives: NHÀ PHỐ 3 TẦNG

+
+
+
+ +
+
+ + + +
+
+

Nothing Found

+
+ +
+ +

It seems we can’t find what you’re looking for. Perhaps searching can help.

+ + +
+
+ +
+ +
+ +
+ + +
+ + + +
+ + + + + +
+
+
+ + + + + +
+
+
+ + +
+ + + + + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/cache/wp-rocket/localhost/category/nha-pho/nha-pho-3-tang/index-mobile.html_gzip b/wp-content/cache/wp-rocket/localhost/category/nha-pho/nha-pho-3-tang/index-mobile.html_gzip new file mode 100644 index 0000000000000000000000000000000000000000..63d2ee061cffc0cc1c6a281224f99685b0a76b0d GIT binary patch literal 11206 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 + + + + + + + + + +NHÀ PHỐ 3 TẦNG – Nội thất – kiến trúc An Việt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+

+ Category Archives: NHÀ PHỐ 3 TẦNG

+
+
+
+ +
+
+ + + +
+
+

Nothing Found

+
+ +
+ +

It seems we can’t find what you’re looking for. Perhaps searching can help.

+ + +
+
+ +
+ +
+ +
+ + +
+ + + +
+ + + + + + + + + +
+
+
+
+ + Facebook Messenger +
+
+
+ Chat với chúng tôi qua Zalo +
+ +
+
+ Gọi ngay +
+ + + + + +
+ + +
+
+ +
+ + + + + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/cache/wp-rocket/localhost/category/nha-pho/nha-pho-3-tang/index.html_gzip b/wp-content/cache/wp-rocket/localhost/category/nha-pho/nha-pho-3-tang/index.html_gzip new file mode 100644 index 0000000000000000000000000000000000000000..0464bb3152459247b452632835996184fa535073 GIT binary patch literal 11392 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 OO#dH0H!)pF#{dAQcxt!+ literal 0 HcmV?d00001 diff --git a/wp-content/cache/wp-rocket/localhost/category/nha-pho/nha-pho-4-tang/index-mobile.html b/wp-content/cache/wp-rocket/localhost/category/nha-pho/nha-pho-4-tang/index-mobile.html new file mode 100644 index 0000000..d9c10dc --- /dev/null +++ b/wp-content/cache/wp-rocket/localhost/category/nha-pho/nha-pho-4-tang/index-mobile.html @@ -0,0 +1,804 @@ + + + + + + + + + + +NHÀ PHỐ 4 TẦNG – Nội thất – kiến trúc An Việt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+

+ Category Archives: NHÀ PHỐ 4 TẦNG

+
+
+
+ +
+
+ + + +
+
+

Nothing Found

+
+ +
+ +

It seems we can’t find what you’re looking for. Perhaps searching can help.

+ + +
+
+ +
+ +
+ +
+ + +
+ + + +
+ + + + + +
+
+
+ + + + + +
+
+
+ + +
+ + + + + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/cache/wp-rocket/localhost/category/nha-pho/nha-pho-4-tang/index-mobile.html_gzip b/wp-content/cache/wp-rocket/localhost/category/nha-pho/nha-pho-4-tang/index-mobile.html_gzip new file mode 100644 index 0000000000000000000000000000000000000000..41fd73dbe9333274c7462a086710265789a3ae14 GIT binary patch literal 11215 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 + + + + + + + + + +NHÀ PHỐ 4 TẦNG – Nội thất – kiến trúc An Việt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+

+ Category Archives: NHÀ PHỐ 4 TẦNG

+
+
+
+ +
+
+ + + +
+
+

Nothing Found

+
+ +
+ +

It seems we can’t find what you’re looking for. Perhaps searching can help.

+ + +
+
+ +
+ +
+ +
+ + +
+ + + +
+ + + + + + + + + +
+
+
+
+ + Facebook Messenger +
+
+
+ Chat với chúng tôi qua Zalo +
+ +
+
+ Gọi ngay +
+ + + + + +
+ + +
+
+ +
+ + + + + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/cache/wp-rocket/localhost/category/nha-pho/nha-pho-4-tang/index.html_gzip b/wp-content/cache/wp-rocket/localhost/category/nha-pho/nha-pho-4-tang/index.html_gzip new file mode 100644 index 0000000000000000000000000000000000000000..47509124b46d1935bf4bd4ac47a5a6dffca95948 GIT binary patch literal 11389 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 + + + + + + + + + +NHÀ PHỐ 5 TẦNG – Nội thất – kiến trúc An Việt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+

+ Category Archives: NHÀ PHỐ 5 TẦNG

+
+
+
+ +
+
+ +
+ + + + + + + + + + + + +
+ +
+ +
+ +
+ + +
+ + + +
+ + + + + +
+
+
+ + + + + +
+
+
+ + +
+ + + + + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/cache/wp-rocket/localhost/category/nha-pho/nha-pho-5-tang/index-mobile.html_gzip b/wp-content/cache/wp-rocket/localhost/category/nha-pho/nha-pho-5-tang/index-mobile.html_gzip new file mode 100644 index 0000000000000000000000000000000000000000..b54b8f1476b9f884c75338cb5952fb2708e885b7 GIT binary patch literal 12340 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 a-q%}=rrv33tquWe;Qs;sA)NAc=Kugh_Wj2I literal 0 HcmV?d00001 diff --git a/wp-content/cache/wp-rocket/localhost/category/nha-pho/nha-pho-5-tang/index.html b/wp-content/cache/wp-rocket/localhost/category/nha-pho/nha-pho-5-tang/index.html new file mode 100644 index 0000000..f84d1a7 --- /dev/null +++ b/wp-content/cache/wp-rocket/localhost/category/nha-pho/nha-pho-5-tang/index.html @@ -0,0 +1,940 @@ + + + + + + + + + + +NHÀ PHỐ 5 TẦNG – Nội thất – kiến trúc An Việt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+

+ Category Archives: NHÀ PHỐ 5 TẦNG

+
+
+
+ +
+
+ +
+ + + + + + + + + + + + +
+ +
+ +
+ +
+ + +
+ + + +
+ + + + + + + + + +
+
+
+
+ + Facebook Messenger +
+
+
+ Chat với chúng tôi qua Zalo +
+ +
+
+ Gọi ngay +
+ + + + + +
+ + +
+
+ +
+ + + + + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/cache/wp-rocket/localhost/category/nha-pho/nha-pho-5-tang/index.html_gzip b/wp-content/cache/wp-rocket/localhost/category/nha-pho/nha-pho-5-tang/index.html_gzip new file mode 100644 index 0000000000000000000000000000000000000000..4e3293c5d890444c3e4712045768b81cad38ae17 GIT binary patch literal 12506 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 literal 0 HcmV?d00001 diff --git a/wp-content/cache/wp-rocket/localhost/category/noi-that/index-mobile.html b/wp-content/cache/wp-rocket/localhost/category/noi-that/index-mobile.html new file mode 100644 index 0000000..ed4cc17 --- /dev/null +++ b/wp-content/cache/wp-rocket/localhost/category/noi-that/index-mobile.html @@ -0,0 +1,922 @@ + + + + + + + + + + +NỘI THẤT – Nội thất – kiến trúc An Việt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+

+ Category Archives: NỘI THẤT

+
+
+
+ +
+
+ +
+ + + + + + + + + + + + +
+ +
+ +
+ +
+ + +
+ + + +
+ + + + + +
+
+
+ + + + + +
+
+
+ + +
+ + + + + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/cache/wp-rocket/localhost/category/noi-that/index-mobile.html_gzip b/wp-content/cache/wp-rocket/localhost/category/noi-that/index-mobile.html_gzip new file mode 100644 index 0000000000000000000000000000000000000000..608c8ebad81f4f93568477ed68769b56f3c25cd4 GIT binary patch literal 12296 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 literal 0 HcmV?d00001 diff --git a/wp-content/cache/wp-rocket/localhost/category/noi-that/index.html b/wp-content/cache/wp-rocket/localhost/category/noi-that/index.html new file mode 100644 index 0000000..0db92b7 --- /dev/null +++ b/wp-content/cache/wp-rocket/localhost/category/noi-that/index.html @@ -0,0 +1,940 @@ + + + + + + + + + + +NỘI THẤT – Nội thất – kiến trúc An Việt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+

+ Category Archives: NỘI THẤT

+
+
+
+ +
+
+ +
+ + + + + + + + + + + + +
+ +
+ +
+ +
+ + +
+ + + +
+ + + + + + + + + +
+
+
+
+ + Facebook Messenger +
+
+
+ Chat với chúng tôi qua Zalo +
+ +
+
+ Gọi ngay +
+ + + + + +
+ + +
+
+ +
+ + + + + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/cache/wp-rocket/localhost/category/noi-that/index.html_gzip b/wp-content/cache/wp-rocket/localhost/category/noi-that/index.html_gzip new file mode 100644 index 0000000000000000000000000000000000000000..ceeae11fc1a451a31f168b8dfd6ffcfd2b37cbf3 GIT binary patch literal 12462 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 literal 0 HcmV?d00001 diff --git a/wp-content/cache/wp-rocket/localhost/category/noi-that/noi-that-biet-thu/index-mobile.html b/wp-content/cache/wp-rocket/localhost/category/noi-that/noi-that-biet-thu/index-mobile.html new file mode 100644 index 0000000..b1818e8 --- /dev/null +++ b/wp-content/cache/wp-rocket/localhost/category/noi-that/noi-that-biet-thu/index-mobile.html @@ -0,0 +1,830 @@ + + + + + + + + + + +NỘI THẤT BIỆT THỰ – Nội thất – kiến trúc An Việt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+

+ Category Archives: NỘI THẤT BIỆT THỰ

+
+
+
+ +
+
+ +
+ + + + + + +
+ +
+ +
+ +
+ + +
+ + + +
+ + + + + +
+
+
+ + + + + +
+
+
+ + +
+ + + + + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/cache/wp-rocket/localhost/category/noi-that/noi-that-biet-thu/index-mobile.html_gzip b/wp-content/cache/wp-rocket/localhost/category/noi-that/noi-that-biet-thu/index-mobile.html_gzip new file mode 100644 index 0000000000000000000000000000000000000000..4c014a5030370151bf949d103af8cffe1390bd1b GIT binary patch literal 11929 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 literal 0 HcmV?d00001 diff --git a/wp-content/cache/wp-rocket/localhost/category/noi-that/noi-that-biet-thu/index.html b/wp-content/cache/wp-rocket/localhost/category/noi-that/noi-that-biet-thu/index.html new file mode 100644 index 0000000..445de0e --- /dev/null +++ b/wp-content/cache/wp-rocket/localhost/category/noi-that/noi-that-biet-thu/index.html @@ -0,0 +1,848 @@ + + + + + + + + + + +NỘI THẤT BIỆT THỰ – Nội thất – kiến trúc An Việt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+

+ Category Archives: NỘI THẤT BIỆT THỰ

+
+
+
+ +
+
+ +
+ + + + + + +
+ +
+ +
+ +
+ + +
+ + + +
+ + + + + + + + + +
+
+
+
+ + Facebook Messenger +
+
+
+ Chat với chúng tôi qua Zalo +
+ +
+
+ Gọi ngay +
+ + + + + +
+ + +
+
+ +
+ + + + + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/cache/wp-rocket/localhost/category/noi-that/noi-that-biet-thu/index.html_gzip b/wp-content/cache/wp-rocket/localhost/category/noi-that/noi-that-biet-thu/index.html_gzip new file mode 100644 index 0000000000000000000000000000000000000000..4fbabd05159ec5ed823abe3cd023900749fce091 GIT binary patch literal 12103 zcmV-NFSyVjiwFP!000006YYI#kK{&@*ynEG{zDE2qwZc6t4P+n`XP;4BWbXsS?#J< zyS8S~$Re|>DmdU3`rZtr|wJoCZ8jiCS0|HKiQ z$!D=%-PI$ltdY8#%tu6KWMo8SWMp#h-upi|Jo-1EJR+lL>>O0Fo2J9JdRW%QL#He+!xv@895hdn`1|f^~l^-8{pmr2e z!yLzUPe{O=eZ>#Ff$cDbi~=^;S4L6f_iDA_*dJECU|2gJxHVm$t_7{=Q}d)y&GAg? zjJz>{0=XEzXHuoYsa@fJs>sSBfF**9^`sM#PBJVxEe)aE<@a@%~$XoY2 zhOX}tDDhuy5{<53{ys_)PweZL|JNl^@cN}m9=hZ+`});?i1um%Xr^Uhbm6dY#8@=5 zZD+n}dTzwrsAf`g#A;(3I$1M1mPH3f-)c7-ZPqZYj@~h8z1}diPKUPZRWl3~GG>-d z_Z8|m3bANJRj6zaF7_2cBtdhRj@kZJ;Pt&I+#(X${??eDtM-@n!?$%ERrSp-j$@=nIAw9K@QMr_Q0SPqRsZ_H{SJQ)!0 zMOcH*x+lP`6E~Xp)d4e1UDI1I1MU)C7}@5@1xRg+^=VM0%?@ofo9#Qs8hM@**?w3x zx_YBw>gFBeI|U8o1u*A5e*##$AVf{td{bCM2dEoV2byJ=eX|>5-Q42}LC%YaodXAg z7(dvw$HOY13CE!PE-L($jlCB(x!l~a?9g}UMGqt_G@6ln_87%6b)((QjlLHEq8_N< z>6~*l98t?VE6W`*dpL@EL}%lC2AAd~>0{6hw%a2b(W+Xzn0v|s;3|;*)Uk(9O4X`U z5Ku!81K@S5tU*4t(3n63+4QT;y&9((YJ5RF+uGj(TJ>RoPE^P42Q;`)1#MKI=9ZxD zR!rTkgUw#xdC{e+LM>{6hE(}5!k{`{(7Uf`ZL?2z%d=HA81{QwMK>B1z0;ai%A&yu z3shZ0aIHSo7ZywaYwe2OT2$WPfSa__URW>&+y&V6X12KC6``-yfoD#_p5dQgy~~XV zvaO!6{)ru-386~W?%U_gQ3Dj+J!7Y`jadN;J!gW#yr*{!%eQwfr|4UPNv}2m*Hxw{ zs$-Zvs*36x#L*W_Rb4L_Q>Ul5{PW$Jg+`Mh>ou_H92%*PXs7}QUH~@$Q>(*(UZ^Rz z2?AXf6MFX-gWiR*0HQ;mZ{*foz}J7L;VnRm}?ugYU^S{?>OU4B=Qd zh^b85Gp+97452|%Y8%+YV#5kBmZfzX@VC{iv-(aJt3L^R2Uskagrl2+uQ!;%0DPlu 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�+Yc)FCrhHuY-G8WH<)?pSoP+(_ira zaGClS@;SeH#Cx#BWjZj#77I`C>Y$?Yj0o?Ua=;-ai#j;)hpJkOV&RpDv;j31HD z5^DU)VXH&@8YrrW_#WI`ZXr?lDdaU}GHqhXsak-LsN*4-(#Z5_&-gqFVg0pH=MZlMI=z1N-$2ZbUcbaW#Ml2~V{j(AWIDEaavXWbCe2=&bxT@(c>U_HZQ>5;#qu1KO)2Cqk(GxkWo4Wg z|IG`{$+?Q(qD}8Um7Pz%kGnN=ygqe=@Ca4;VP!K6x5RyOTk+?Ssz&zofGsb_rrDe2yE-!bAN?Hw=1?9|v!3a5tuL^~B>!|W*lKvsigU0h>ZuQx3=tOUb8-ELL%M!RAd?TWrbv!r3a7ZUWSotETQ>~AqgC{dmY~-vhSsU*b!{Q`5|+Rg%wVs1 zWH6crw4qtiQZi5;GpTDbaiyjRlqog%l$eh{gG$oD(At$o3;th(9AwT#G8FUz(M}72 zIfG!-I~Dnp@<6K#1Zh_TEMz6Y{(UMU_r*CX}Tyh7)3u?8MDxT>P3np>vAez}yf7N<1Wo^8eMkbCyn_kxJJ zk%UoHT1$c}Rx5$bjoc-{@v!5`br<6hme!3> z@Tz4Pik9S(&RZ#oh-XO z!sTVyO>o^rcHMZWR+3paWwn)L)s4Hdyo|arikY%$fkQa;S)}4HBN@x^F70eyh7U`8 z#J6hFG6!HoNvcxi{Y2)&@xx_t=drvvD6+Y zI+1UMb{gDFoUto;4ftYE^LP-Q$LnD?gfvUeb6@eT(4=5WaOAzhx5ASLRe~#aN!|)e z45S3UI8l?h=PonHbEhE|y@qA&6^C|K2Pi6*@eV(ayE;H#uLR!tjUk?w!Ay@g;o&!N zZ)|o`{sldyB6W-JxTz@Difa zArTj1KTDgL-iiH;UyA(kECB-e8R z8Nt(AC)gwzFMNoGRg$hI(9$F_^X-b!yk zosa?RO+ps%5vA@iOylSn!>7YE-_|=W=HnSP3_*m^{umDc^JmESM1Ud(!4HBSyB_c& zJ5KprNB%sckvU@Fu|qGsNhINC(t)v#LoQN}*(rWrq_jkzjp(WE1+pl!%8QBbB_ZR7 zMf{k}#Y1^bo^=c}du9_v3H+Rr(yMD)MSi~WSbTXA`Uh3b3qY$WS690z9G*WvK(PSA zM%+xzrOiE6{oEdq$B&*LED}9IN+Q}PG0Ai#SE{_OK&Lek9#2*PjcAngtaKjvEY;5mMy zc6}Wij%x1Y+_P-AW;0zsosnXZ z?F8Xi=7ge_xJ=#zg%s^;yF7*STrNor3brvxPQX+LUhs&TqiGB~U~UE5HWaq^;xwcX zvz~euOgo3U!)UZ?zx{T0kV;B^Za=RMSrmWV`n`)I!ASS^!N`(Ww{|W~`MIO3&DEeC zA`8ujheQhZS7_Sy7EJH0on1RT=9OpFO{RqM_~Q?iT|xU*G4V zivvpy?BV_;KQ@O#qIXZLgp+<0Fb0oTyYVEh%7^WKMbrU|m3#V5qJCms$yI~v!NSkA z2N!tQp3v~ZH5Y$8#CIk`5H6S`x-KnvFyL$Ppw{#jD9!jyDoQ1*1Z6W8VlzQRuo@n= z(QCTV?YH%Qw>i)#8?>8dz2BvsHZ|H!);9Dy;t(B6dzIqct07JKmw=-&-nNW31UVYn zAvt6HP+UPm9Qy=6SoI^`vkIiRTM@CNcgQC!;GgG((IjY%;;|nKzhwE7Ph{yTc>*?? xOYn1VJrWxn37M*6MpW`X>raL~!n + + + + + + + + + +NỘI THẤT CAFE – NHÀ HÀNG – Nội thất – kiến trúc An Việt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+

+ Category Archives: NỘI THẤT CAFE – NHÀ HÀNG

+
+
+
+ +
+
+ + + +
+
+

Nothing Found

+
+ +
+ +

It seems we can’t find what you’re looking for. Perhaps searching can help.

+ + +
+
+ +
+ +
+ +
+ + +
+ + + +
+ + + + + +
+
+
+ + + + + +
+
+
+ + +
+ + + + + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/cache/wp-rocket/localhost/category/noi-that/noi-that-cafe-nha-hang/index-mobile.html_gzip b/wp-content/cache/wp-rocket/localhost/category/noi-that/noi-that-cafe-nha-hang/index-mobile.html_gzip new file mode 100644 index 0000000000000000000000000000000000000000..b3f5cfc35aaabe65e2b178ba11264e2760f89d6c GIT binary patch literal 11221 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 literal 0 HcmV?d00001 diff --git a/wp-content/cache/wp-rocket/localhost/category/noi-that/noi-that-cafe-nha-hang/index.html b/wp-content/cache/wp-rocket/localhost/category/noi-that/noi-that-cafe-nha-hang/index.html new file mode 100644 index 0000000..5b5c750 --- /dev/null +++ b/wp-content/cache/wp-rocket/localhost/category/noi-that/noi-that-cafe-nha-hang/index.html @@ -0,0 +1,822 @@ + + + + + + + + + + +NỘI THẤT CAFE – NHÀ HÀNG – Nội thất – kiến trúc An Việt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+

+ Category Archives: NỘI THẤT CAFE – NHÀ HÀNG

+
+
+
+ +
+
+ + + +
+
+

Nothing Found

+
+ +
+ +

It seems we can’t find what you’re looking for. Perhaps searching can help.

+ + +
+
+ +
+ +
+ +
+ + +
+ + + +
+ + + + + + + + + +
+
+
+
+ + Facebook Messenger +
+
+
+ Chat với chúng tôi qua Zalo +
+ +
+
+ Gọi ngay +
+ + + + + +
+ + +
+
+ +
+ + + + + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/cache/wp-rocket/localhost/category/noi-that/noi-that-cafe-nha-hang/index.html_gzip b/wp-content/cache/wp-rocket/localhost/category/noi-that/noi-that-cafe-nha-hang/index.html_gzip new file mode 100644 index 0000000000000000000000000000000000000000..a314290ae0963543c60695b65978c2e74898b74a GIT binary patch literal 11399 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 V+G#1xHooBW{{cDAmNAFN003r2OlJT9 literal 0 HcmV?d00001 diff --git a/wp-content/cache/wp-rocket/localhost/category/noi-that/noi-that-chung-cu/index-mobile.html b/wp-content/cache/wp-rocket/localhost/category/noi-that/noi-that-chung-cu/index-mobile.html new file mode 100644 index 0000000..fcd4974 --- /dev/null +++ b/wp-content/cache/wp-rocket/localhost/category/noi-that/noi-that-chung-cu/index-mobile.html @@ -0,0 +1,804 @@ + + + + + + + + + + +NỘI THẤT CHUNG CƯ – Nội thất – kiến trúc An Việt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+

+ Category Archives: NỘI THẤT CHUNG CƯ

+
+
+
+ +
+
+ + + +
+
+

Nothing Found

+
+ +
+ +

It seems we can’t find what you’re looking for. Perhaps searching can help.

+ + +
+
+ +
+ +
+ +
+ + +
+ + + +
+ + + + + +
+
+
+ + + + + +
+
+
+ + +
+ + + + + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/cache/wp-rocket/localhost/category/noi-that/noi-that-chung-cu/index-mobile.html_gzip b/wp-content/cache/wp-rocket/localhost/category/noi-that/noi-that-chung-cu/index-mobile.html_gzip new file mode 100644 index 0000000000000000000000000000000000000000..b911a83d85ec8f10d04a7398370650e82b8bcfa2 GIT binary patch literal 11211 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 + + + + + + + + + +NỘI THẤT CHUNG CƯ – Nội thất – kiến trúc An Việt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+

+ Category Archives: NỘI THẤT CHUNG CƯ

+
+
+
+ +
+
+ + + +
+
+

Nothing Found

+
+ +
+ +

It seems we can’t find what you’re looking for. Perhaps searching can help.

+ + +
+
+ +
+ +
+ +
+ + +
+ + + +
+ + + + + + + + + +
+
+
+
+ + Facebook Messenger +
+
+
+ Chat với chúng tôi qua Zalo +
+ +
+
+ Gọi ngay +
+ + + + + +
+ + +
+
+ +
+ + + + + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/cache/wp-rocket/localhost/category/noi-that/noi-that-chung-cu/index.html_gzip b/wp-content/cache/wp-rocket/localhost/category/noi-that/noi-that-chung-cu/index.html_gzip new file mode 100644 index 0000000000000000000000000000000000000000..c061df356ae12e3755f5af87598ee13a0de8a24c GIT binary patch literal 11380 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 + + + + + + + + + +NỘI THẤT NHÀ PHỐ – Nội thất – kiến trúc An Việt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+

+ Category Archives: NỘI THẤT NHÀ PHỐ

+
+
+
+ +
+
+ +
+ + + + + + +
+ +
+ +
+ +
+ + +
+ + + +
+ + + + + +
+
+
+ + + + + +
+
+
+ + +
+ + + + + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/cache/wp-rocket/localhost/category/noi-that/noi-that-nha-pho/index-mobile.html_gzip b/wp-content/cache/wp-rocket/localhost/category/noi-that/noi-that-nha-pho/index-mobile.html_gzip new file mode 100644 index 0000000000000000000000000000000000000000..4496a0250dddec673a6cc1963b9ebb996dc092a7 GIT binary patch literal 11884 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 literal 0 HcmV?d00001 diff --git a/wp-content/cache/wp-rocket/localhost/category/noi-that/noi-that-nha-pho/index.html b/wp-content/cache/wp-rocket/localhost/category/noi-that/noi-that-nha-pho/index.html new file mode 100644 index 0000000..92491e6 --- /dev/null +++ b/wp-content/cache/wp-rocket/localhost/category/noi-that/noi-that-nha-pho/index.html @@ -0,0 +1,848 @@ + + + + + + + + + + +NỘI THẤT NHÀ PHỐ – Nội thất – kiến trúc An Việt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+

+ Category Archives: NỘI THẤT NHÀ PHỐ

+
+
+
+ +
+
+ +
+ + + + + + +
+ +
+ +
+ +
+ + +
+ + + +
+ + + + + + + + + +
+
+
+
+ + Facebook Messenger +
+
+
+ Chat với chúng tôi qua Zalo +
+ +
+
+ Gọi ngay +
+ + + + + +
+ + +
+
+ +
+ + + + + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/cache/wp-rocket/localhost/category/noi-that/noi-that-nha-pho/index.html_gzip b/wp-content/cache/wp-rocket/localhost/category/noi-that/noi-that-nha-pho/index.html_gzip new file mode 100644 index 0000000000000000000000000000000000000000..c7626b394e36b2859786f3a2cbfce55aa6c3f069 GIT binary patch literal 12069 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 PH_`t;v#5D~5YYet0%(yD literal 0 HcmV?d00001 diff --git a/wp-content/cache/wp-rocket/localhost/category/noi-that/noi-that-van-phong/index-mobile.html b/wp-content/cache/wp-rocket/localhost/category/noi-that/noi-that-van-phong/index-mobile.html new file mode 100644 index 0000000..a3cf202 --- /dev/null +++ b/wp-content/cache/wp-rocket/localhost/category/noi-that/noi-that-van-phong/index-mobile.html @@ -0,0 +1,830 @@ + + + + + + + + + + +NỘI THẤT VĂN PHÒNG – Nội thất – kiến trúc An Việt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+

+ Category Archives: NỘI THẤT VĂN PHÒNG

+
+
+
+ +
+
+ +
+ + + + + + +
+ +
+ +
+ +
+ + +
+ + + +
+ + + + + +
+
+
+ + + + + +
+
+
+ + +
+ + + + + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/cache/wp-rocket/localhost/category/noi-that/noi-that-van-phong/index-mobile.html_gzip b/wp-content/cache/wp-rocket/localhost/category/noi-that/noi-that-van-phong/index-mobile.html_gzip new file mode 100644 index 0000000000000000000000000000000000000000..07c18c9cb5a84b3b96113aaf656a9c6a7b8984cb GIT binary patch literal 11946 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 literal 0 HcmV?d00001 diff --git a/wp-content/cache/wp-rocket/localhost/category/noi-that/noi-that-van-phong/index.html b/wp-content/cache/wp-rocket/localhost/category/noi-that/noi-that-van-phong/index.html new file mode 100644 index 0000000..46a386c --- /dev/null +++ b/wp-content/cache/wp-rocket/localhost/category/noi-that/noi-that-van-phong/index.html @@ -0,0 +1,848 @@ + + + + + + + + + + +NỘI THẤT VĂN PHÒNG – Nội thất – kiến trúc An Việt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+

+ Category Archives: NỘI THẤT VĂN PHÒNG

+
+
+
+ +
+
+ +
+ + + + + + +
+ +
+ +
+ +
+ + +
+ + + +
+ + + + + + + + + +
+
+
+
+ + Facebook Messenger +
+
+
+ Chat với chúng tôi qua Zalo +
+ +
+
+ Gọi ngay +
+ + + + + +
+ + +
+
+ +
+ + + + + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/cache/wp-rocket/localhost/category/noi-that/noi-that-van-phong/index.html_gzip b/wp-content/cache/wp-rocket/localhost/category/noi-that/noi-that-van-phong/index.html_gzip new file mode 100644 index 0000000000000000000000000000000000000000..20c79619a592a1b305b58dd48a5cd5749474862f GIT binary patch literal 12120 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 O!2btFS0AX>(EtDrnb=1F literal 0 HcmV?d00001 diff --git a/wp-content/cache/wp-rocket/localhost/category/thi-cong/index-mobile.html b/wp-content/cache/wp-rocket/localhost/category/thi-cong/index-mobile.html new file mode 100644 index 0000000..9b3f557 --- /dev/null +++ b/wp-content/cache/wp-rocket/localhost/category/thi-cong/index-mobile.html @@ -0,0 +1,876 @@ + + + + + + + + + + +THI CÔNG – Nội thất – kiến trúc An Việt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+

+ Category Archives: THI CÔNG

+
+
+
+ +
+
+ +
+ + + + + + + + + +
+ +
+ +
+ +
+ + +
+ + + +
+ + + + + +
+
+
+ + + + + +
+
+
+ + +
+ + + + + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/cache/wp-rocket/localhost/category/thi-cong/index-mobile.html_gzip b/wp-content/cache/wp-rocket/localhost/category/thi-cong/index-mobile.html_gzip new file mode 100644 index 0000000000000000000000000000000000000000..d1dd8b8d8a37617f11cd11a0cb539e6c5e8e50e0 GIT binary patch literal 12139 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 literal 0 HcmV?d00001 diff --git a/wp-content/cache/wp-rocket/localhost/category/thi-cong/index.html b/wp-content/cache/wp-rocket/localhost/category/thi-cong/index.html new file mode 100644 index 0000000..edd25e7 --- /dev/null +++ b/wp-content/cache/wp-rocket/localhost/category/thi-cong/index.html @@ -0,0 +1,894 @@ + + + + + + + + + + +THI CÔNG – Nội thất – kiến trúc An Việt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+

+ Category Archives: THI CÔNG

+
+
+
+ +
+
+ +
+ + + + + + + + + +
+ +
+ +
+ +
+ + +
+ + + +
+ + + + + + + + + +
+
+
+
+ + Facebook Messenger +
+
+
+ Chat với chúng tôi qua Zalo +
+ +
+
+ Gọi ngay +
+ + + + + +
+ + +
+
+ +
+ + + + + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/cache/wp-rocket/localhost/category/thi-cong/index.html_gzip b/wp-content/cache/wp-rocket/localhost/category/thi-cong/index.html_gzip new file mode 100644 index 0000000000000000000000000000000000000000..8ae8755d46937e2361890632ba97a594ce739182 GIT binary patch literal 12302 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 + + + + + + + + + +Cùng đón xem mẫu nhà 2 tầng 3 phòng ngủ 5×18 khiến các gia chủ trầm trồ – Nội thất – kiến trúc An Việt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+ +
+
+ +
+ +
+
+
+

Những mẫu nhà ống 2 tầng 3 phòng ngủ 5x18m đang dành được sự quan tâm hàng đầu của những cặp vợ chồng trẻ. Bởi ngoài tiết kiệm chi phí xây dựng, công năng sử dụng tiện nghi thì mẫu nhà phố này còn đa dạng về thiết kế, kiến trúc. Vẻ đẹp đầy tinh tế, ấn tượng […] + +

+
+
+
+ +
+

Những mẫu nhà ống 2 tầng 3 phòng ngủ 5x18m đang dành được sự quan tâm hàng đầu của những cặp vợ chồng trẻ. Bởi ngoài tiết kiệm chi phí xây dựng, công năng sử dụng tiện nghi thì mẫu nhà phố này còn đa dạng về thiết kế, kiến trúc. Vẻ đẹp đầy tinh tế, ấn tượng cùng sự tiện nghi và sang trọng, mẫu nhà ống 2 tầng 3 phòng ngủ 5×18 đang tạo nên một sức lôi cuốn đặc biệt với các gia chủ.

+

Cùng Angcovat tham khảo những mẫu phối cảnh nhà ống 2 tầng 3 phòng ngủ 5x18m đẹp dưới đây. Mỗi công trình là một sản phẩm ấn tượng mà Angcovat tạo nên bằng chính kinh nghiệm, sự sáng tạo của mình và đặc biệt là đáp ứng và làm hài lòng tất cả các yêu cầu khó tính của chủ đầu tư – thước đo đánh giá sự hoàn hảo và thành công của một công trình kiến trúc.

+

+

BÁO GIÁ CHI TIẾT THIẾT KẾ MẪU NHÀ 2 TẦNG 3 PHÒNG NGỦ 5X18M HỢP LÝ

+

 

+
+ +
+ +
+
+ + +
+ + +
+ + + +
+ + + + + +
+
+
+ + + + + +
+
+
+ + +
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/cache/wp-rocket/localhost/featured_item/cung-don-xem-mau-nha-2-tang-3-phong-ngu-5x18-khien-cac-gia-chu-tram-tro/index-mobile.html_gzip b/wp-content/cache/wp-rocket/localhost/featured_item/cung-don-xem-mau-nha-2-tang-3-phong-ngu-5x18-khien-cac-gia-chu-tram-tro/index-mobile.html_gzip new file mode 100644 index 0000000000000000000000000000000000000000..1c7b64ee851679d29cda1c8f5ad6e38b70b8447a GIT binary patch literal 13475 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 R)gqt`{6A26yFViA0081x_2d8m literal 0 HcmV?d00001 diff --git a/wp-content/cache/wp-rocket/localhost/featured_item/cung-don-xem-mau-nha-2-tang-3-phong-ngu-5x18-khien-cac-gia-chu-tram-tro/index.html b/wp-content/cache/wp-rocket/localhost/featured_item/cung-don-xem-mau-nha-2-tang-3-phong-ngu-5x18-khien-cac-gia-chu-tram-tro/index.html new file mode 100644 index 0000000..f9ad001 --- /dev/null +++ b/wp-content/cache/wp-rocket/localhost/featured_item/cung-don-xem-mau-nha-2-tang-3-phong-ngu-5x18-khien-cac-gia-chu-tram-tro/index.html @@ -0,0 +1,864 @@ + + + + + + + + + + +Cùng đón xem mẫu nhà 2 tầng 3 phòng ngủ 5×18 khiến các gia chủ trầm trồ – Nội thất – kiến trúc An Việt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+ +
+
+ +
+ +
+
+
+

Những mẫu nhà ống 2 tầng 3 phòng ngủ 5x18m đang dành được sự quan tâm hàng đầu của những cặp vợ chồng trẻ. Bởi ngoài tiết kiệm chi phí xây dựng, công năng sử dụng tiện nghi thì mẫu nhà phố này còn đa dạng về thiết kế, kiến trúc. Vẻ đẹp đầy tinh tế, ấn tượng […] + +

+
+
+
+ +
+

Những mẫu nhà ống 2 tầng 3 phòng ngủ 5x18m đang dành được sự quan tâm hàng đầu của những cặp vợ chồng trẻ. Bởi ngoài tiết kiệm chi phí xây dựng, công năng sử dụng tiện nghi thì mẫu nhà phố này còn đa dạng về thiết kế, kiến trúc. Vẻ đẹp đầy tinh tế, ấn tượng cùng sự tiện nghi và sang trọng, mẫu nhà ống 2 tầng 3 phòng ngủ 5×18 đang tạo nên một sức lôi cuốn đặc biệt với các gia chủ.

+

Cùng Angcovat tham khảo những mẫu phối cảnh nhà ống 2 tầng 3 phòng ngủ 5x18m đẹp dưới đây. Mỗi công trình là một sản phẩm ấn tượng mà Angcovat tạo nên bằng chính kinh nghiệm, sự sáng tạo của mình và đặc biệt là đáp ứng và làm hài lòng tất cả các yêu cầu khó tính của chủ đầu tư – thước đo đánh giá sự hoàn hảo và thành công của một công trình kiến trúc.

+

+

BÁO GIÁ CHI TIẾT THIẾT KẾ MẪU NHÀ 2 TẦNG 3 PHÒNG NGỦ 5X18M HỢP LÝ

+

 

+
+ +
+ +
+
+ + +
+ + +
+ + + +
+ + + + + + + + + +
+
+
+
+ + Facebook Messenger +
+
+
+ Chat với chúng tôi qua Zalo +
+ +
+
+ Gọi ngay +
+ + + + + +
+ + +
+
+ +
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/cache/wp-rocket/localhost/featured_item/cung-don-xem-mau-nha-2-tang-3-phong-ngu-5x18-khien-cac-gia-chu-tram-tro/index.html_gzip b/wp-content/cache/wp-rocket/localhost/featured_item/cung-don-xem-mau-nha-2-tang-3-phong-ngu-5x18-khien-cac-gia-chu-tram-tro/index.html_gzip new file mode 100644 index 0000000000000000000000000000000000000000..7a37f4c68272cfdc46f58400cddbe26bd49b1bdc GIT binary patch literal 13645 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 + + + + + + + + + +Mẫu nhà vuông mái Nhật 2 tầng HOT nhất 2022 – Nội thất – kiến trúc An Việt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+ +
+
+ +
+ +
+
+
+

Nếu như hỏi về những mẫu nhà được lựa chọn xây dựng nhiều nhất ở Việt Nam hiện nay thì chắc chắn không thể nào bỏ qua mẫu nhà vuông mái Nhật 2 tầng. 1. NHÀ VUÔNG MÁI NHẬT 2 TẦNG 100M2 Mẫu nhà vuông mái Nhật có mặt tiền 9m, chiều sâu 11m, được xây […] + +

+
+
+
+ +
+

Nếu như hỏi về những mẫu nhà được lựa chọn xây dựng nhiều nhất ở Việt Nam hiện nay thì chắc chắn không thể nào bỏ qua mẫu nhà vuông mái Nhật 2 tầng.

+

1. NHÀ VUÔNG MÁI NHẬT 2 TẦNG 100M2

+

Mẫu nhà vuông mái Nhật có mặt tiền 9m, chiều sâu 11m, được xây dựng trên lô đất có kích thước 250m2, với kinh phí đầu tư dự kiến khoảng 1,3 -1,4 tỷ đồng.

+

 

+

Phối cảnh 1 nhà vuông mái Nhật 2 tầng 100m2

+
+ +
+ +
+
+ + +
+ + +
+ + + +
+ + + + + +
+
+
+ + + + + +
+
+
+ + +
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/cache/wp-rocket/localhost/featured_item/mau-nha-vuong-mai-nhat-2-tang-hot-nhat-2022/index-mobile.html_gzip b/wp-content/cache/wp-rocket/localhost/featured_item/mau-nha-vuong-mai-nhat-2-tang-hot-nhat-2022/index-mobile.html_gzip new file mode 100644 index 0000000000000000000000000000000000000000..bcb63f098a0ec408956617aab80ac9e52c867be6 GIT binary patch literal 13026 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 literal 0 HcmV?d00001 diff --git a/wp-content/cache/wp-rocket/localhost/featured_item/mau-nha-vuong-mai-nhat-2-tang-hot-nhat-2022/index.html b/wp-content/cache/wp-rocket/localhost/featured_item/mau-nha-vuong-mai-nhat-2-tang-hot-nhat-2022/index.html new file mode 100644 index 0000000..b4f42d5 --- /dev/null +++ b/wp-content/cache/wp-rocket/localhost/featured_item/mau-nha-vuong-mai-nhat-2-tang-hot-nhat-2022/index.html @@ -0,0 +1,864 @@ + + + + + + + + + + +Mẫu nhà vuông mái Nhật 2 tầng HOT nhất 2022 – Nội thất – kiến trúc An Việt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+ +
+
+ +
+ +
+
+
+

Nếu như hỏi về những mẫu nhà được lựa chọn xây dựng nhiều nhất ở Việt Nam hiện nay thì chắc chắn không thể nào bỏ qua mẫu nhà vuông mái Nhật 2 tầng. 1. NHÀ VUÔNG MÁI NHẬT 2 TẦNG 100M2 Mẫu nhà vuông mái Nhật có mặt tiền 9m, chiều sâu 11m, được xây […] + +

+
+
+
+ +
+

Nếu như hỏi về những mẫu nhà được lựa chọn xây dựng nhiều nhất ở Việt Nam hiện nay thì chắc chắn không thể nào bỏ qua mẫu nhà vuông mái Nhật 2 tầng.

+

1. NHÀ VUÔNG MÁI NHẬT 2 TẦNG 100M2

+

Mẫu nhà vuông mái Nhật có mặt tiền 9m, chiều sâu 11m, được xây dựng trên lô đất có kích thước 250m2, với kinh phí đầu tư dự kiến khoảng 1,3 -1,4 tỷ đồng.

+

 

+

Phối cảnh 1 nhà vuông mái Nhật 2 tầng 100m2

+
+ +
+ +
+
+ + +
+ + +
+ + + +
+ + + + + + + + + +
+
+
+
+ + Facebook Messenger +
+
+
+ Chat với chúng tôi qua Zalo +
+ +
+
+ Gọi ngay +
+ + + + + +
+ + +
+
+ +
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/cache/wp-rocket/localhost/featured_item/mau-nha-vuong-mai-nhat-2-tang-hot-nhat-2022/index.html_gzip b/wp-content/cache/wp-rocket/localhost/featured_item/mau-nha-vuong-mai-nhat-2-tang-hot-nhat-2022/index.html_gzip new file mode 100644 index 0000000000000000000000000000000000000000..e3233c1c26ca5f7fb47e7c8cf1d6b2efc433d62f GIT binary patch literal 13203 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 F004S7kT?JU literal 0 HcmV?d00001 diff --git a/wp-content/cache/wp-rocket/localhost/index-mobile.html b/wp-content/cache/wp-rocket/localhost/index-mobile.html new file mode 100644 index 0000000..8231809 --- /dev/null +++ b/wp-content/cache/wp-rocket/localhost/index-mobile.html @@ -0,0 +1,2447 @@ + + + + + + + + + + +Nội thất – kiến trúc An Việt – Nội thất thiết kế chuyên nghiệp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ + +
+ + + +
+
+ + +
+ + +
+ +
+ + + + + +
+ +
+ + + + + + + +
+ +
+ + +
+ + +
+ + +
+ + +
+
+ + + +
+ + +

Kiến trúc không gian

+
Xây dựng tổ ấm
+

+

Kiến trúc Angcovat – Luôn luôn nỗ lực, đam mê, cố gắng không ngừng nghỉ để mang lại những điều trọn vẹn nhất với khách hàng, đối tác cũng như giá trị làm đẹp cuộc đời.

+ + +
+ + + Tìm hiểu thêm + + + + +
+
+ + + +
+
+ + +
+ + + +
+ + + +
+ +
+ +
+ + +
+
+ + + + + + + + +
+
+ + + +
+
+ + + + + + + + +
+
+ + + +
+
+ + + + + + + + +
+
+ + + +
+
+ + + + + + + + +
+
+ + + +
+ + + +
+
+ + + + + +
+ + + +
+ + +
+ + +
+
+ + + +
+ + +

THI CÔNG

+ + +
+ + +
+
+ + + +
+
+ + +
+ + + +
+ + + +
+ + +
+
+ + +
+ + +
+ + + +
+ + +
+ + +
+
+ + + +
+ +
+ + +

NHỮNG CON SỐ ẤN TƯỢNG

+ + +
+ + +
+ + +
+ + + +
+
+ + +
+
+ + + +

50

+

DỰ ÁN
Khách sạn, công trình
công cộng

+ +
+
+ + + +
+
+ + + +

3000

+

CÔNG TRÌNH
Nhà ở dân dụng
khắp mọi miền tổ quốc

+ +
+
+ + + +
+
+ + + +

30

+

NHÂN SỰ
Kinh nghiệm là chủ
chốt. Sức trẻ là tiền đồ

+ +
+
+ + + +
+
+ + + +

15

+
NĂM KINH NGHIỆM
+
Xử lý thiết kế và thi
công nhà ở dân dụng
+ +
+
+ + + +
+ +
+ + + +
+ +
+ + +
+ + +
+ + +
+
+ + + +
+
+ + +
+ + +
+ + + +
+ + +
+ + +
+ + +
+ + +
+
+ + + +
+ + +

Với nhiều năm trong nghề, chúng tôi sẽ mảng đến dịch vụ tốt nhất cho bạn!

+ + +
+ +
+ + + + Tìm hiểu thêm + + + + + Để lại email + + + + + + +
+ + +
+
+ + + +
+ +
+ + + +
+ +
+ + +
+ + +
+
+ + + + + +
+ + + +
+ + +
+ + +
+
+ + + + +
+
+ + + +
+
+ + + + + NỘI THẤT + + + + +
+ + +
+ + + +
+
+ + + + +
+
+ + + +
+ +
+ + + +
+ + +
+
+ + + +
+
+ + + +
+
+ + + + + +
+ + + +
+ + +
+ + +
+
+ + + + + THIẾT KẾ + + + + +
+ + +
+ + + +
+ +
+ + + +
+ +
+ + +
+ + +
+
+ + +
+ + +
+ + + +
+ + +
+ + +
+
+ + + +
+ + +
+ + +
+ + +

AN VIỆT

+ + +
+ + +
+
+ + + +
+ +
+ + + +
+ + +
+
+ + + +
+
+ + +
+ + +
+ + +

Tin tức

+ + +
+ + + + + + +
+ + + +
+ + + +
+ + + + + +
+
+
+ + + + + +
+
+
+ + +
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/cache/wp-rocket/localhost/index-mobile.html_gzip b/wp-content/cache/wp-rocket/localhost/index-mobile.html_gzip new file mode 100644 index 0000000000000000000000000000000000000000..2f13c74f38ed0dbcc18edb66d9f3360eec8dda6a GIT binary patch literal 18608 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 HCz$~Ne#T#w literal 0 HcmV?d00001 diff --git a/wp-content/cache/wp-rocket/localhost/index.html b/wp-content/cache/wp-rocket/localhost/index.html new file mode 100644 index 0000000..e922f2c --- /dev/null +++ b/wp-content/cache/wp-rocket/localhost/index.html @@ -0,0 +1,2465 @@ + + + + + + + + + + +Nội thất – kiến trúc An Việt – Nội thất thiết kế chuyên nghiệp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ + +
+ + + +
+
+ + +
+ + +
+ +
+ + + + + +
+ +
+ + + + + + + +
+ +
+ + +
+ + +
+ + +
+ + +
+
+ + + +
+ + +

Kiến trúc không gian

+
Xây dựng tổ ấm
+

+

Kiến trúc Angcovat – Luôn luôn nỗ lực, đam mê, cố gắng không ngừng nghỉ để mang lại những điều trọn vẹn nhất với khách hàng, đối tác cũng như giá trị làm đẹp cuộc đời.

+ + +
+ + + Tìm hiểu thêm + + + + +
+
+ + + +
+
+ + +
+ + + +
+ + + +
+ +
+ +
+ + +
+
+ + + + + + + + +
+
+ + + +
+
+ + + + + + + + +
+
+ + + +
+
+ + + + + + + + +
+
+ + + +
+
+ + + + + + + + +
+
+ + + +
+ + + +
+
+ + + + + +
+ + + +
+ + +
+ + +
+
+ + + +
+ + +

THI CÔNG

+ + +
+ + +
+
+ + + +
+
+ + +
+ + + +
+ + + +
+ + +
+
+ + +
+ + +
+ + + +
+ + +
+ + +
+
+ + + +
+ +
+ + +

NHỮNG CON SỐ ẤN TƯỢNG

+ + +
+ + +
+ + +
+ + + +
+
+ + +
+
+ + + +

50

+

DỰ ÁN
Khách sạn, công trình
công cộng

+ +
+
+ + + +
+
+ + + +

3000

+

CÔNG TRÌNH
Nhà ở dân dụng
khắp mọi miền tổ quốc

+ +
+
+ + + +
+
+ + + +

30

+

NHÂN SỰ
Kinh nghiệm là chủ
chốt. Sức trẻ là tiền đồ

+ +
+
+ + + +
+
+ + + +

15

+
NĂM KINH NGHIỆM
+
Xử lý thiết kế và thi
công nhà ở dân dụng
+ +
+
+ + + +
+ +
+ + + +
+ +
+ + +
+ + +
+ + +
+
+ + + +
+
+ + +
+ + +
+ + + +
+ + +
+ + +
+ + +
+ + +
+
+ + + +
+ + +

Với nhiều năm trong nghề, chúng tôi sẽ mảng đến dịch vụ tốt nhất cho bạn!

+ + +
+ +
+ + + + Tìm hiểu thêm + + + + + Để lại email + + + + + + +
+ + +
+
+ + + +
+ +
+ + + +
+ +
+ + +
+ + +
+
+ + + + + +
+ + + +
+ + +
+ + +
+
+ + + + +
+
+ + + +
+
+ + + + + NỘI THẤT + + + + +
+ + +
+ + + +
+
+ + + + +
+
+ + + +
+ +
+ + + +
+ + +
+
+ + + +
+
+ + + +
+
+ + + + + +
+ + + +
+ + +
+ + +
+
+ + + + + THIẾT KẾ + + + + +
+ + +
+ + + +
+ +
+ + + +
+ +
+ + +
+ + +
+
+ + +
+ + +
+ + + +
+ + +
+ + +
+
+ + + +
+ + +
+ + +
+ + +

AN VIỆT

+ + +
+ + +
+
+ + + +
+ +
+ + + +
+ + +
+
+ + + +
+
+ + +
+ + +
+ + +

Tin tức

+ + +
+ + + + + + +
+ + + +
+ + + +
+ + + + + + + + + +
+
+
+
+ + Facebook Messenger +
+
+
+ Chat với chúng tôi qua Zalo +
+ +
+
+ Gọi ngay +
+ + + + + +
+ + +
+
+ +
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/cache/wp-rocket/localhost/index.html_gzip b/wp-content/cache/wp-rocket/localhost/index.html_gzip new file mode 100644 index 0000000000000000000000000000000000000000..e358712493340debe7e2f7bfc1e21e44f8b2edf0 GIT binary patch literal 19245 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, #wp-admin-bar-wp-rocket #wp-admin-bar-preload-cache .ab-item>img{max-width: 16px; max-height: 11px} +.rocket-promo-bubble { + display: inline-block; + vertical-align: top; + box-sizing: border-box; + margin: 1px 0 -1px 2px; + padding: 0 5px; + min-width: 18px; + height: 18px; + border-radius: 9px; + background-color: #00A66B; + color: #fff; + font-size: 11px; + line-height: 1.6; + text-align: center; + z-index: 26; +} diff --git a/wp-content/plugins/wp-rocket/assets/css/wpr-admin-rtl.css b/wp-content/plugins/wp-rocket/assets/css/wpr-admin-rtl.css new file mode 100644 index 0000000..e2acc45 --- /dev/null +++ b/wp-content/plugins/wp-rocket/assets/css/wpr-admin-rtl.css @@ -0,0 +1 @@ +.wpr-wrap{margin:0 -20px 0 0}#hs-beacon iframe:nth-child(1){right:inherit !important;left:18px !important}#hs-beacon iframe:nth-child(2){right:inherit !important;left:6px !important}.wpr-Page-col--fixed{margin-left:0;margin-right:24px}@media (max-width: 1239px){.wpr-Page-col--fixed{margin-right:0}}.wpr-Content{border:1px solid #E0E4E9;border-right:none}.wpr-Content-tips{right:unset;left:24px}.wpr-Sidebar-notice{border:1px solid #E8EBEE;border-right:2px solid #1EADBF}.wpr-Sidebar .wpr-Sidebar-info h4{padding-left:inherit;padding-right:56px}.wpr-menuItem{padding:16px 20px 18px 44px}.wpr-menuItem:before{right:inherit !important;left:18px !important}.wpr-menuItem:after{border-width:12px 0 12px 10px;border-color:transparent transparent transparent #fff;left:0;right:inherit;transform:translateX(-12px)}.wpr-menuItem:hover{transform:translateX(0)}.wpr-menuItem.wpr-subMenuItem{padding:10px 25px 8px 20px}.wpr-sectionHeader:before{left:inherit;right:0}.wpr-sectionHeader .wpr-title1:before{margin-left:24px;margin-right:0}.wpr-optionHeader .wpr-title2{padding-right:0;padding-left:40px}.wpr-infoAction:before{right:-26px}.wpr-fieldWarning{padding:16px 56px 24px 16px}.wpr-fieldWarning:after{left:inherit;right:20px}.wpr-fieldWarning:before{left:inherit;right:-16px}.wpr-fieldWarning-title:before{left:inherit;right:-40px}.wpr-checkbox{padding-left:0;padding-right:32px}.wpr-checkbox [type="checkbox"]:not(:checked),.wpr-checkbox [type="checkbox"]:checked{right:-9999px}.wpr-checkbox [type="checkbox"]:not(:checked)+label:before,.wpr-checkbox [type="checkbox"]:checked+label:before{left:inherit;right:0}.wpr-checkbox [type="checkbox"]:not(:checked)+label:after,.wpr-checkbox [type="checkbox"]:checked+label:after{left:inherit;right:2px}.wpr-radio{padding-left:0;padding-right:88px}.wpr-radio [type="checkbox"]:not(:checked),.wpr-radio [type="checkbox"]:checked{right:-9999px}.wpr-radio [type="checkbox"]:not(:checked)+label:before,.wpr-radio [type="checkbox"]:checked+label:before{left:inherit;right:0}.wpr-radio [type="checkbox"]:not(:checked)+label:after,.wpr-radio [type="checkbox"]:checked+label:after{left:inherit;right:3px}.wpr-radio [type="checkbox"]:checked+label:after{right:33px}.wpr-radio [type="checkbox"]:checked+label .wpr-radio-ui,.wpr-radio [type="checkbox"]:not(:checked)+label .wpr-radio-ui:before,.wpr-radio [type="checkbox"]:checked+label .wpr-radio-ui:after{right:4px}.wpr-radio [type="checkbox"]:not(:checked)+label .wpr-radio-ui:before{right:27px}.wpr-radio--reverse{padding-left:0;padding-right:72px}.wpr-radio--reverse [type="checkbox"]:not(:checked)+label:before,.wpr-radio--reverse [type="checkbox"]:checked+label:before{right:0;left:inherit}.wpr-radio--reverse [type="checkbox"]:not(:checked)+label:after,.wpr-radio--reverse [type="checkbox"]:checked+label:after{right:33px;left:inherit}.wpr-radio--reverse [type="checkbox"]:checked+label:after{right:3px;left:inherit}.wpr-radio--reverse [type="checkbox"]:checked+label .wpr-radio-ui,.wpr-radio--reverse [type="checkbox"]:not(:checked)+label .wpr-radio-ui:before,.wpr-radio--reverse [type="checkbox"]:checked+label .wpr-radio-ui:after{right:15px;left:inherit}.wpr-radio--reverse [type="checkbox"]:not(:checked)+label .wpr-radio-ui:before{right:6px;left:inherit}.wpr-multiple .wpr-button{margin-right:16px;margin-left:0}.wpr-multiple-close{margin-right:0;margin-left:16px}.wpr-addon .wpr-flex>div{text-align:right}.wpr-addon .wpr-addon-text{margin-left:inherit;margin-right:32px}@media (max-width: 1239px){.wpr-addon .wpr-addon-text{margin-right:16px}}@media (max-width: 1083px){.wpr-addon .wpr-addon-text{margin-right:32px}}@media (max-width: 783px){.wpr-addon .wpr-addon-text{margin-right:0}}.wpr-tools-col:first-child{padding-right:72px;padding-left:24px}.wpr-tools-col:last-child{text-align:left}@media (max-width: 783px){.wpr-tools-col:last-child{text-align:right}}.wpr-tools-label:before{left:inherit;right:0}.wpr-field .wpr-flex--egal>div:last-child{text-align:left}.wpr-field-list li:before{display:inline-block;margin-right:0;margin-left:8px}.wpr-field--split{padding-right:0}.wpr-field--split+.wpr-field--split{padding-left:0;padding-right:16px}.wpr-field--children{padding-left:0;padding-right:32px}.wpr-field--children.wpr-field--textarea{padding-left:80px;padding-right:32px}@media (max-width: 1239px){.wpr-field--children.wpr-field--textarea{padding-left:32px;padding-right:0}}@media (max-width: 783px){.wpr-field--children.wpr-field--textarea{padding-left:0}}.wpr-field--checkbox .wpr-field-description{margin-left:0;margin-right:32px}.wpr-field--radio .wpr-field-description{margin-left:0;margin-right:88px}.wpr-adblock img{margin-right:0;margin-left:16px}.wpr-adblock-close{right:inherit;left:24px}.wpr-notice{background-position:10% bottom}.wpr-notice-container{padding:24px 40px 24px 25%}.wpr-notice-close{right:inherit;left:24px} diff --git a/wp-content/plugins/wp-rocket/assets/css/wpr-admin.css b/wp-content/plugins/wp-rocket/assets/css/wpr-admin.css new file mode 100644 index 0000000..77053a1 --- /dev/null +++ b/wp-content/plugins/wp-rocket/assets/css/wpr-admin.css @@ -0,0 +1 @@ +h1,h2,h3,h4{color:currentColor;margin:0;font-weight:normal}button{padding:0;border:none;background:none;cursor:pointer}a{color:currentColor;transition:color 200ms ease-out;-webkit-transition:color 200ms ease-out}a:hover{color:currentColor}input[type=submit]{cursor:pointer;border:none}a:active,button:active{outline:none}a:focus,button:focus{color:currentColor;box-shadow:none}.wpr-wrap{padding:16px;margin:0 0 0 -20px}@media (max-width: 783px){.wpr-wrap{padding:0;margin:0 0 0 -10px}}.wpr-body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-interpolation-mode:nearest-neighbor;image-rendering:optimizeQuality;text-rendering:optimizeLegibility;display:flex;color:#121116;font-size:.875rem;line-height:1.5}.wpr-body *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}@media (max-width: 783px){#hs-beacon{display:none !important}}.wpr-u-flex{display:flex;align-items:center;justify-content:center}@font-face{font-family:'wpr-icomoon';src:url("../fonts/icomoon.eot");src:url("../fonts/icomoon.eot?#iefix") format("embedded-opentype"),url("../fonts/icomoon.woff") format("woff"),url("../fonts/icomoon.ttf") format("truetype"),url("../fonts/icomoon.svg#icomoon") format("svg");font-weight:normal;font-style:normal}[class^="wpr-icon-"]:before,[class*=" wpr-icon-"]:after,[class^="wpr-icon-"]:after,[class*=" wpr-icon-"]:before,[id^="wpr-nav-"]:before,[id*=" wpr-nav-"]:after,[id^="wpr-nav-"]:after,[id*=" wpr-nav-"]:before{font-family:'wpr-icomoon';speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}[class^="wpr-icon-"] span.hidden,[class*=" wpr-icon-"] span.hidden{display:inline-block;height:0;width:0;overflow:hidden}.wpr-icon-chevron-right:before{content:"\e900"}.wpr-icon-chevron-left:before{content:"\e900";transform:rotate(180deg)}.wpr-icon-chevron-down:before{content:"\e901";transform:scale(0.6)}.wpr-icon-chevron-up:before{content:"\e902";top:50%;transform:translateY(-50%) scale(0.6)}.wpr-icon-rollback:before{content:"\e903"}.wpr-icon-addon:before,.wpr-addonSubMenuItem:before{content:"\e904"}.wpr-icon-addons:before,#wpr-nav-addons:before{content:"\e905"}.wpr-icon-book:before{content:"\e906"}.wpr-icon-cdn:before,#wpr-nav-page_cdn:before{content:"\e907"}.wpr-icon-database:before,#wpr-nav-database:before{content:"\e908"}.wpr-icon-export:before{content:"\e909"}.wpr-icon-files:before,#wpr-nav-cache:before{content:"\e90a"}.wpr-icon-help:before{content:"\e90b"}.wpr-icon-home:before,#wpr-nav-dashboard:before{content:"\e90c"}.wpr-icon-import:before{content:"\e90d"}.wpr-icon-important:before{content:"\e90e"}.wpr-icon-information:before{content:"\e90f"}.wpr-icon-information2:before{content:"\e910"}.wpr-icon-interrogation:before{content:"\e911"}.wpr-icon-media:before,#wpr-nav-media:before{content:"\e912"}.wpr-icon-plus:before{content:"\e913"}.wpr-icon-refresh:before,#wpr-nav-preload:before{content:"\e914"}.wpr-icon-rules:before,#wpr-nav-advanced_cache:before{content:"\e915"}.wpr-icon-stack:before,#wpr-nav-file_optimization:before{content:"\e916"}.wpr-icon-tools:before,#wpr-nav-tools:before{content:"\e917"}.wpr-icon-trash:before{content:"\e918"}.wpr-icon-user:before{content:"\e919"}.wpr-icon-check:before{content:"\e920"}.wpr-icon-check2:before{content:"\e921"}.wpr-icon-close:before{content:"\e922"}.wpr-icon-heartbeat:before,#wpr-nav-heartbeat:before{content:url("../img/heartbeat.svg")}.wpr-icon-heartbeat-hover:before,#wpr-nav-heartbeat:hover:before,#wpr-nav-heartbeat.isActive:before{content:url("../img/heartbeat-hover.svg")}.wpr-icon-imagify:before,#wpr-nav-imagify:before{content:url("../img/imagify.svg")}.wpr-icon-imagify-hover:before,#wpr-nav-imagify:hover:before,#wpr-nav-imagify.isActive:before{content:url("../img/imagify-hover.svg")}.wpr-icon-tutorial:before,#wpr-nav-tutorials:before{content:url("../img/play.svg")}.wpr-icon-tutorial-hover:before,#wpr-nav-tutorials:hover:before,#wpr-nav-tutorials.isActive:before{content:url("../img/play-hover.svg")}.wpr-icon-tutorial-alt:before{content:url("../img/play-alt.svg")}.wpr-title1{font-size:1.625rem;line-height:1;font-weight:600;letter-spacing:0.01em}.wpr-title2{font-size:1rem;line-height:1.5;font-weight:bold;letter-spacing:-0.02em}.wpr-title3,.wpr-field--radio label,.wpr-select select,.wpr-select label{font-size:.875rem;line-height:1.71429;font-weight:bold;letter-spacing:-0.011em}.wpr-Header{display:flex;flex-direction:column;flex:0 0 225px}@media (max-width: 783px){.wpr-Header{flex:0 0 50px}}.wpr-Header-logo{padding:32px 0 24px;text-align:center}@media (max-width: 783px){.wpr-Header-logo{padding:16px 0 8px}}@media (max-width: 783px){.wpr-Header-logo-desktop{display:none}}.wpr-Header-logo-mobile{display:none}@media (max-width: 783px){.wpr-Header-logo-mobile{display:inline-block}}.wpr-Header-footer{margin-top:auto;padding:48px 20px 0;font-size:.6875rem;line-height:4.36364;color:#666;opacity:0.6;font-weight:bold}@media (max-width: 783px){.wpr-Header-footer{display:none}}.wpr-Sidebar{position:relative;display:none;flex:0 0 290px;padding:24px 16px}@media (max-width: 1239px){.wpr-Sidebar{flex:0 0 260px}}@media (max-width: 1083px){.wpr-Sidebar{display:none !important}}.wpr-Sidebar-title{margin-bottom:32px}.wpr-Sidebar-notice{padding:8px 16px;margin-bottom:16px;background:#fff;border:1px solid #E8EBEE;border-left:2px solid #1EADBF;border-radius:0 3px 3px 0;color:#666}.wpr-Sidebar-notice p{margin:0}.wpr-Sidebar-notice-link{display:inline-block;margin-top:8px;font-size:.6875rem;line-height:1.81818;color:#02707F;letter-spacing:-0.05em;text-transform:uppercase;text-decoration:none;font-weight:bold}.wpr-Sidebar-notice-link:hover,.wpr-Sidebar-notice-link:focus{color:#40BACB}.wpr-Sidebar-info{padding:16px;background:#EBFAF5;margin-bottom:16px;border-radius:3px}.wpr-Sidebar-info h4{padding-left:48px;font-weight:500}.wpr-Sidebar-info p{margin:8px 0 0;font-size:.6875rem;line-height:1.45455;color:#666}.wpr-Sidebar-info i{position:absolute;display:block;margin-top:-1px;width:40px;height:40px;color:#00A66B;font-size:1.0625rem;line-height:2.35294;background:#C6F0DE;border-radius:3px;text-align:center}.wpr-Content{position:relative;background:#fff;padding:32px 24px;flex:1 1 auto;max-width:calc(960px + 270px)}@media (max-width: 783px){.wpr-Content{padding:24px 16px}}.wpr-Content form>input:last-child{margin-top:24px;color:#fff !important}.wpr-Content.isNotFull{max-width:960px}.wpr-Content-tips{position:absolute;top:48px;right:24px;font-weight:bold;color:#666}@media (max-width: 1083px){.wpr-Content-tips{display:none !important}}.wpr-Page{margin-bottom:32px}.wpr-Page-row{display:flex;flex-direction:row}@media (max-width: 1239px){.wpr-Page-row{flex-direction:column}}.wpr-Page-col{flex:1 1 auto}.wpr-Page-col--fixed{margin-left:24px;flex:0 0 325px}@media (max-width: 1239px){.wpr-Page-col--fixed{margin-left:0}}.wpr-Page#dashboard #wpr-action-refresh_account:before{transition:all 200ms ease-out;opacity:1;transform:translateY(0)}.wpr-Page#dashboard #wpr-action-refresh_account.wpr-isLoading:before{animation:loading 1.2s infinite}.wpr-Page#dashboard #wpr-action-refresh_account.wpr-isHidden:before{opacity:0}.wpr-Page#dashboard #wpr-action-refresh_account.wpr-isShown:before{opacity:1}@keyframes loading{from{transform:rotate(0)}to{transform:rotate(360deg)}}.wpr-Page#dashboard .wpr-documentation{margin-top:98px;padding:43px 16px}@media (max-width: 1239px){.wpr-Page#dashboard .wpr-documentation{margin-top:40px}}.wpr-Page#dashboard .wpr-documentation .wpr-button{margin-top:8px}.wpr-Page#dashboard .wpr-documentation i{font-size:3.375rem;line-height:1}.wpr-Page#dashboard .wpr-radio{padding-left:72px}.wpr-Page#dashboard .wpr-field--radio{padding:16px 8px}.wpr-Page#dashboard .wpr-field--radio:first-child{padding-top:0}.wpr-Page#dashboard .wpr-field--radio:last-child{padding-bottom:0}.wpr-Page#dashboard .wpr-field--radio .wpr-field-description{font-style:normal;color:#666;margin-left:72px}.wpr-Page#dashboard .wpr-field-account{padding-bottom:0}.wpr-Page#dashboard .wpr-infoAccount{font-weight:bold;margin-left:8px;color:#444}.wpr-Page#dashboard .wpr-infoAccount:before{content:"";position:relative;display:inline-block;width:13px;height:13px;background:#E0E4E9;border-radius:50%;color:#fff;margin-right:6px;text-align:center;top:2px;font-size:.5rem;line-height:1.625}.wpr-Page#dashboard .wpr-infoAccount.wpr-isValid{color:#00A66B}.wpr-Page#dashboard .wpr-infoAccount.wpr-isValid:before{content:"\e920";font-family:'wpr-icomoon';speak:none;background:#3ECE9D;top:-1px}.wpr-Page#dashboard .wpr-infoAccount.wpr-isInvalid{color:#D60E5B}.wpr-Page#dashboard .wpr-infoAccount.wpr-isInvalid:before{content:"!";font-weight:bold;font-size:.625rem;line-height:1.3;speak:none;background:#D33F49;top:-1px}.wpr-Page#dashboard #wpr-account-data:before{content:none}.wpr-Page#tools #wpr-action-rocket_enable_mobile_cpcss:before{transition:all 200ms ease-out;opacity:1;transform:translateY(0)}.wpr-Page#tools #wpr-action-rocket_enable_mobile_cpcss.wpr-isLoading:before{animation:loading 1.2s infinite}.wpr-Popin{display:none;position:fixed;width:772px;height:auto;top:50%;left:50%;background:#fff;border-radius:3px;transform:translateX(-50%) translateY(-50%);z-index:100000}.wpr-Popin-overlay{display:none;position:fixed;opacity:0;width:100%;height:100%;top:0;left:0;background:rgba(0,0,0,0.8);z-index:99999}.wpr-Popin-header{display:flex;align-items:center;justify-content:space-between;height:64px;padding:0 32px;background:#2D1656;color:#fff;font-weight:600}.wpr-Popin-close{color:#665090;font-size:1.5rem;line-height:1;transition:color 200ms ease-out;-webkit-transition:color 200ms ease-out}.wpr-Popin-close:hover,.wpr-Popin-close:focus{color:#fff;outline:none}.wpr-Popin-content{padding:8px 32px;color:#666}.wpr-Popin-flex{display:flex;flex-direction:row;align-items:center}.wpr-Popin-flex div{margin-left:32px}.wpr-Popin p{margin:16px 0}.wpr-Popin .wp-rocket-data-table{padding:12px 24px;background:#F2F3F6 !important;border:none}.wpr-Popin .wp-rocket-data-table td{width:50%;color:#121116;padding:8px 0;padding-left:4px;border-bottom:1px solid #c2cad4}.wpr-Popin .wp-rocket-data-table td:not(.column-primary){font-family:"Monaco";font-size:.75rem;line-height:1.66667;color:#666;letter-spacing:-0.01em}.wpr-Popin .wp-rocket-data-table tr{background:#F2F3F6;border-bottom:1px solid #E0E4E9}.wpr-Popin .wp-rocket-data-table tr:last-child td{border-bottom:none}.wpr-Popin .wp-rocket-data-table strong{font-weight:500}.wpr-Popin .wp-rocket-data-table em{font-style:normal}.wpr-Popin .wp-rocket-data-table code{padding:0;margin:0;background:transparent}.wpr-rocketcdn-cta-small{border-radius:5px;margin:24px 0;padding:16px}.wpr-rocketcdn-cta-small.wpr-isHidden{display:none}.wpr-rocketcdn-cta-small .notice-title{font-weight:700}.wpr-rocketcdn-cta-small .wpr-flex{display:flex;justify-content:space-between;align-items:center}@media (max-width: 783px){.wpr-rocketcdn-cta-small .wpr-flex{text-align:start;flex-direction:column}}.wpr-rocketcdn-cta{margin:10px 0;position:relative}.wpr-rocketcdn-cta.wpr-isHidden{display:none}.wpr-rocketcdn-cta-close{position:absolute;top:16px;right:16px;background:transparent;border:0;color:rgba(255,255,255,0.5)}.wpr-rocketcdn-cta-close--no-promo{position:absolute;top:16px;right:16px;background:transparent;border:0;color:rgba(0,0,0,0.5)}.wpr-rocketcdn-cta-close--no-promo:before{content:"\2715";font-size:2rem;line-height:0.5}.wpr-rocketcdn-cta-close:before{content:"\2715";font-size:2rem;line-height:0.5}.wpr-rocketcdn-cta .wpr-rocketcdn-promo{background:#F56640;border-top-left-radius:2px;border-top-right-radius:2px;color:#fff;padding:16px 48px 16px 16px}.wpr-rocketcdn-cta .wpr-rocketcdn-promo-date{margin:0}.wpr-rocketcdn-cta-subtitle{color:#444;margin-top:0;font-size:1rem;line-height:1.5}.wpr-rocketcdn-cta-content{background:#F9FAFB;border-top:1px solid #E8EBEE;border-left:1px solid #E8EBEE;border-right:1px solid #E8EBEE;padding:16px}.wpr-rocketcdn-cta-content--no-promo{border-top-left-radius:2px;border-top-right-radius:2px;background:#F9FAFB;border-top:1px solid #E8EBEE;border-left:1px solid #E8EBEE;border-right:1px solid #E8EBEE;padding:16px}.wpr-rocketcdn-cta .wpr-flex{display:flex;justify-content:space-between;align-items:center}@media (max-width: 783px){.wpr-rocketcdn-cta .wpr-flex{text-align:start;flex-direction:column}}.wpr-rocketcdn-cta .wpr-rocketcdn-features{border-right:2px solid #cdd1d5;margin:0;padding-right:16px}@media (max-width: 783px){.wpr-rocketcdn-cta .wpr-rocketcdn-features{border-right:none}}.wpr-rocketcdn-cta .wpr-rocketcdn-pricing{align-items:center;display:flex;flex-direction:column;padding:8px 16px;width:calc( 100% / 3)}@media (max-width: 783px){.wpr-rocketcdn-cta .wpr-rocketcdn-pricing{width:auto}}.wpr-rocketcdn-cta .wpr-rocketcdn-pricing-regular{color:#72777C;margin-bottom:8px}.wpr-rocketcdn-cta .wpr-rocketcdn-pricing-current{margin-bottom:16px}.wpr-rocketcdn-cta .wpr-rocketcdn-feature{margin:16px 0;min-height:30px;padding-left:62px;position:relative}.wpr-rocketcdn-cta .wpr-rocketcdn-feature:before{position:absolute;top:50%;left:16px;transform:translateY(-50%)}.wpr-rocketcdn-cta .wpr-rocketcdn-bandwidth:before{content:url(../img/bandwidth.svg)}.wpr-rocketcdn-cta .wpr-rocketcdn-configuration:before{content:url(../img/configuration.svg)}.wpr-rocketcdn-cta .wpr-rocketcdn-automatic:before{content:url(../img/automatic.svg)}.wpr-rocketcdn-cta-footer{background:#72777C;border-bottom-left-radius:2px;border-bottom-right-radius:2px;color:#fff;font-weight:700;padding:8px;text-align:center;text-transform:uppercase;font-size:.6875rem;line-height:1.81818}.wpr-rocketcdn-cta-footer a{text-decoration:none}.wpr-rocketcdn-cta-footer a:before{content:"\00a1";border:1px solid #fff;color:#fff;margin-right:8px;width:18px;height:18px;display:inline-block;border-radius:18px;font-size:.875rem;line-height:1.14286;font-style:italic}.wpr-rocketcdn-subscription{text-align:end}.wpr-rocketcdn-subscription .wpr-rocketcdn-open{color:#666;text-decoration:underline}.wpr-license-upgrade-button{font-weight:bold;text-decoration:underline}.wpr-license-upgrade-button:hover{text-decoration:none}.wpr-field.wpr-field-account .wpr-flex{align-items:flex-start}.wpr-infoAccount-License{flex:1 0 60%;margin-right:16px}@media (max-width: 783px){.wpr-field.wpr-field-account .wpr-flex>div{width:100%}}.wpr-field.wpr-field-account .wpr-flex>div:last-child{text-align:right}@media (max-width: 783px){.wpr-field.wpr-field-account .wpr-flex>div:last-child{text-align:left}}.wpr-Popin-Upgrade .wpr-Popin-content{padding-bottom:32px}.wpr-Popin-Upgrade .wpr-Popin-flex{justify-content:space-between}.wpr-Popin-Upgrade .wpr-Popin-flex>div{align-items:center;border:1px solid #DADADA;border-radius:24px;display:flex;flex-direction:column;margin:0 16px 0 0;padding:24px;text-align:center;width:50%}.wpr-Popin-Upgrade .wpr-Popin-flex>div:last-child{margin-right:0}@media (max-width: 783px){.wpr-Popin-Upgrade .wpr-Popin-flex>div{margin:0;width:100%}}.wpr-Upgrade-Plus .wpr-upgrade-title::before{content:url(../img/plus.svg);display:block;width:117px;height:31px;top:0;position:absolute;left:50%;transform:translateX(-50%)}.wpr-Upgrade-Infinite .wpr-upgrade-title::before{content:url(../img/infinite.svg);display:block;width:48px;height:31px;top:0;position:absolute;left:50%;transform:translateX(-50%)}div.wpr-upgrade-saving{background:#FFD147;border-radius:44px;color:#121116;font-weight:bold;margin:0 0 24px 0;padding:8px 16px;text-align:center}.wpr-upgrade-title{color:#F56F46;font-size:1.875rem;line-height:1.2;margin-bottom:16px;padding-top:55px;position:relative}div.wpr-upgrade-prices{color:#121116;font-size:3rem;line-height:1;font-weight:bold;margin:0 0 16px 0}.wpr-upgrade-price-symbol{font-size:1.875rem;line-height:1;vertical-align:super}.wpr-upgrade-price-regular{color:#72777C;font-size:1rem;line-height:1;vertical-align:top}div.wpr-upgrade-websites{color:#121116;font-size:.875rem;line-height:1;font-weight:bold;margin:0 0 24px 0}.wpr-upgrade-link{background:#fff;border:1px solid #F56F46;border-radius:800px;color:#F56F46;display:block;font-size:1rem;line-height:1.125;font-weight:bold;padding:16px 24px;text-decoration:none}.wpr-upgrade-link:hover{background:#F56F46;color:#fff}.wpr-upgrade-link::after{content:"\2192";font-weight:normal;margin-left:8px}.rocket-promo-banner{background:#FFD147;display:flex;justify-content:space-around;margin-top:16px;padding:24px;position:relative}@media (max-width: 783px){.rocket-promo-banner{flex-flow:column}}.rocket-promo-banner>div{display:flex;flex-flow:column;width:50%}@media (max-width: 783px){.rocket-promo-banner>div{width:100%}}.rocket-promo-title{font-weight:bold;margin-bottom:24px}.rocket-promo-discount{background:#fff;border-radius:44px;display:inline-block;margin-right:8px;padding:8px 16px;text-transform:uppercase}.rocket-promo-message,.rocket-promo-deal{font-size:1rem;line-height:1.5;margin-bottom:0}.rocket-promo-deal{margin-top:8px}.rocket-promo-cta-block{align-items:center;margin-right:24px}.rocket-promo-countdown{display:flex;flex-flow:row wrap;width:66%}.rocket-promo-countdown>.rocket-countdown-item{background:#fff;border-radius:8px;flex:1;margin-right:8px;padding:8px;text-align:center}.rocket-promo-countdown>.rocket-countdown-item>.rocket-countdown-value{display:block;font-size:1.5rem;line-height:1;font-weight:bold}.rocket-promo-cta{background:#172153;border-radius:44px;color:#fff;font-weight:bold;padding:16px 32px}.rocket-renewal-banner{background:#FFD147;display:flex;flex-flow:row wrap;align-items:center;justify-content:space-evenly;margin-top:16px;padding:8px}.rocket-renew-message{margin:0 16px}.rocket-renew-message>p{font-size:.875rem;line-height:1.5}.rocket-expired-message>p{font-size:.875rem;line-height:1.5;padding-left:80px}.rocket-expired-title{font-size:1.375rem;line-height:1.5;font-weight:bold}.rocket-expired-title::before{content:url(../img/warning.svg);display:inline-block;height:48px;width:63px;margin-right:17px;vertical-align:middle}.rocket-expired-cta-container{justify-content:center;align-items:center}.rocket-renew-cta{display:block;background:#172153;border-radius:44px;color:#fff;font-size:1rem;line-height:1.125;font-weight:bold;padding:16px 24px;text-decoration:none}.rocket-renew-cta:hover,.rocket-renew-cta:active,.rocket-renew-cta:focus{color:#fff}.rocket-renew-cta::after{content:"\2192";font-weight:normal;margin-left:8px}.wpr-menuItem{position:relative;display:block;padding:16px 44px 18px 20px;text-decoration:none;color:#121116;border-top:1px solid #E0E4E9;border-left:2px solid transparent;overflow:hidden;transition:all 100ms ease-out;-webkit-transition:all 100ms ease-out}@media (max-width: 783px){.wpr-menuItem{width:57px;height:50px;padding:0}}.wpr-menuItem:before{position:absolute;top:calc(50% - 12px);right:18px;text-align:center;font-size:1.4375rem;line-height:1;color:#121116;opacity:0.4;transition:all 150ms ease-out;-webkit-transition:all 150ms ease-out}.wpr-menuItem:hover,.wpr-menuItem.isActive{color:#121116;background:#fff;border-left:2px solid #F56640}.wpr-menuItem:hover .wpr-menuItem-title,.wpr-menuItem.isActive .wpr-menuItem-title{color:#F56640}.wpr-menuItem:hover:before,.wpr-menuItem.isActive:before{color:#F56640;opacity:1}.wpr-menuItem:focus{color:#121116}.wpr-menuItem:focus:before{color:#121116}.wpr-menuItem-title{font-size:.8125rem;line-height:1.46154;font-weight:bold;letter-spacing:-0.08px;text-transform:uppercase;color:#121116}@media (max-width: 783px){.wpr-menuItem-title{display:none !important}}.wpr-menuItem-description{margin-top:2px;color:#72777C;font-size:.8125rem;line-height:1.23077;transition:all 150ms ease-out;-webkit-transition:all 150ms ease-out}@media (max-width: 783px){.wpr-menuItem-description{display:none}}.wpr-menuItem.wpr-subMenuItem{display:none;padding:10px 20px 8px 25px}@media (max-width: 783px){.wpr-menuItem.wpr-subMenuItem{padding:8px 20px 8px 23px;height:35px}}.wpr-menuItem.wpr-subMenuItem .wpr-menuItem-title{display:inline-block;font-size:.8125rem;line-height:1.84615;text-transform:inherit;font-weight:600}.wpr-menuItem.wpr-subMenuItem:before{position:relative;display:inline-block;top:2px;right:2px;margin-right:8px;font-size:1rem;line-height:1}#wpr-nav-cache:before{right:20px}#wpr-nav-tools:before{right:20px}.wpr-sectionHeader{position:relative;border-bottom:1px solid #E0E4E9;padding-bottom:24px}.wpr-sectionHeader:before{content:'';position:absolute;display:block;width:48px;height:2px;bottom:-1px;left:0;background:#F56640}.wpr-sectionHeader .wpr-title1{line-height:48px}.wpr-sectionHeader .wpr-title1:before{display:inline-block;width:48px;height:48px;margin-right:24px;background:#FDE0D9;color:#F56640;text-align:center;border-radius:3px}.wpr-sectionHeader-title{margin-top:8px;padding-left:72px}.wpr-sectionHeader-description{color:#666;margin-top:8px;padding-left:72px}.wpr-sectionHeader-logo{vertical-align:top;margin-right:24px}.wpr-optionHeader{position:relative;display:flex;justify-content:space-between;margin-top:48px;padding-bottom:9px;border-bottom:1px solid #E0E4E9}.wpr-optionHeader .wpr-title2{line-height:24px;color:#F56640;padding-right:40px}.wpr-optionHeader .wpr-infoAction{margin-right:8px}.wpr-optionHeader.wpr-isHidden{display:none}.wpr-fieldsContainer{margin-top:8px}.wpr-fieldsContainer-description{color:#666}.wpr-fieldsContainer-description a:hover,.wpr-fieldsContainer-description a:focus{color:#1EADBF}.wpr-fieldsContainer-fieldset{margin-top:16px;background:#F9FAFB;padding:16px;border:1px solid #E8EBEE;border-radius:2px}.wpr-fieldsContainer-fieldset--split{display:flex}.wpr-fieldsContainer-fieldset--split .wpr-field+.wpr-field{border:none}.wpr-fieldsContainer-fieldset--split .wpr-field{flex:0 0 50%;padding:0}.wpr-fieldsContainer-fieldset--split .wpr-field:first-child{padding-right:15px}.wpr-fieldsContainer-fieldset--split .wpr-field:last-child{padding-left:15px}.wpr-fieldsContainer-helper{margin-top:16px;color:#D60E5B;font-weight:500}.wpr-fieldsContainer-helper:before{position:relative;top:3px;font-size:1.125rem;line-height:1;margin-right:4px}.wpr-fieldsContainer.wpr-isHidden{display:none}.wpr-infoAction{position:relative;height:24px;font-size:.8125rem;line-height:1.84615;vertical-align:middle;letter-spacing:-0.03em;font-weight:500;color:#666;white-space:nowrap;text-decoration:none;transition:all 200ms ease-out;-webkit-transition:all 200ms ease-out}.wpr-infoAction:before{position:absolute;margin-left:-26px;font-size:1.125rem;line-height:1.33333;transition:color 200ms ease-out;-webkit-transition:color 200ms ease-out}.wpr-infoAction--help{text-transform:uppercase;color:#02707F;font-weight:bold;font-size:.75rem;line-height:2;letter-spacing:0}@media (max-width: 783px){.wpr-infoAction--help{display:none}}.wpr-infoAction--help:before{color:#1EADBF}.wpr-infoAction:hover,.wpr-infoAction:focus{color:#F56640;outline:none}.wpr-infoAction:hover:before,.wpr-infoAction:focus:before{color:#FFA58B}.wpr-button{position:relative;display:inline-block;width:auto;padding:8px 24px;text-align:center;background:#F56640;box-shadow:0 4px 6px rgba(50,50,93,0.11),0 1px 3px rgba(0,0,0,0.08);text-transform:uppercase;text-decoration:none;letter-spacing:-0.08px;font-weight:bold;border-radius:4px;color:#fff !important;white-space:nowrap;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:all 200ms ease-out;-webkit-transition:all 200ms ease-out;font-size:.8125rem;line-height:1.53846}.wpr-button:hover,.wpr-button:focus{color:#fff !important;transform:translateY(-2px);box-shadow:0 7px 14px rgba(50,50,93,0.25),0 3px 6px rgba(0,0,0,0.2)}.wpr-button--small{padding:5px 0;letter-spacing:-0.08px;font-size:.6875rem;line-height:1.81818}.wpr-button--icon{min-width:160px;padding-left:8px;padding-right:40px;text-align:left}.wpr-button--icon:before{position:absolute;right:8px;font-size:.9375rem;line-height:1.33333}.wpr-button--fixed{position:fixed;display:flex;padding:8px 16px;right:24px;bottom:32px;border-radius:16px}.wpr-button--fixed:before{font-size:1.125rem;line-height:1;margin-right:8px}.wpr-button--purple{background:#2D1656}.wpr-button--blue{min-width:inherit;background:#1EADBF}.wpr-button--lightBlue{min-width:inherit;background:#40BACB}.wpr-button--red{background:#D33F49}.wpr-button--blueDark{background:#02707F}.wpr-button:focus{outline:none;color:#fff !important}.wpr-field{padding:16px 0;transition:opacity 150ms ease-out;-webkit-transition:opacity 150ms ease-out}.wpr-field+.wpr-field,.wpr-field+.wpr-warningContainer{border-top:1px solid #E0E4E9}.wpr-field:first-child{padding-top:0}.wpr-field:last-child{padding-bottom:0}.wpr-field-description{margin-top:4px;color:#666;font-size:.8125rem;line-height:1.53846}.wpr-field-description .wpr-js-popin{color:#444;text-decoration:underline}.wpr-field-description .wpr-js-popin:hover,.wpr-field-description .wpr-js-popin:focus{color:#1EADBF}.wpr-field-description a:hover,.wpr-field-description a:focus{color:#1EADBF}.wpr-field-description-helper{color:#00A66B}.wpr-field-description-label{font-size:.875rem;line-height:1.42857;font-weight:500;color:#666}.wpr-field-list{margin:0;color:#666;font-weight:500}.wpr-field-list li+li{margin-top:16px}.wpr-field-list li:before{position:relative;top:3px;margin-right:8px;color:#02707F;font-size:1.125rem;line-height:1.11111}.wpr-field-list a{text-decoration:none}.wpr-field-list a:hover,.wpr-field-list a:focus{color:#1EADBF}.wpr-field-betweenText{margin:0 16px;font-weight:bold}.wpr-field .wpr-button{margin:8px 0}.wpr-field .wpr-flex{display:flex;justify-content:space-between;align-items:center}@media (max-width: 783px){.wpr-field .wpr-flex{text-align:left;flex-direction:column}}.wpr-field .wpr-flex--egal>div{flex:0 0 50%}@media (max-width: 783px){.wpr-field .wpr-flex--egal>div{width:100%}}.wpr-field .wpr-flex--egal>div:last-child{text-align:right}@media (max-width: 783px){.wpr-field .wpr-flex--egal>div:last-child{text-align:left}}.wpr-field .wpr-flex--egal>div .wpr-field-description{font-style:normal;color:#666}.wpr-field p{margin-bottom:0}.wpr-field label{font-weight:500}.wpr-field h4{font-size:.875rem;line-height:1.71429}.wpr-field.wpr-isDisabled{opacity:0.55}.wpr-field.wpr-isParent{padding-bottom:0}.wpr-field.wpr-Delayjs{margin-top:16px}.wpr-field.wpr-isLastElem{margin-top:16px}.wpr-field.wpr-isHidden{display:none}.wpr-field .wpr-isHidden{display:none}.wpr-field--children{display:none;padding-left:32px}.wpr-field--children.wpr-isOpen{display:block;margin-top:16px}.wpr-field--children.wpr-field--textarea{padding-right:80px}@media (max-width: 1239px){.wpr-field--children.wpr-field--textarea{padding-right:32px}}@media (max-width: 783px){.wpr-field--children.wpr-field--textarea{padding-right:0}}.wpr-field--checkbox .wpr-field-description{margin-left:32px}.wpr-field--radio{padding:24px 16px}.wpr-field--radio:first-child{padding-top:8px}.wpr-field--radio:last-child{padding-bottom:8px}.wpr-field--radio .wpr-field-description{margin-left:88px}.wpr-field--radio .wpr-field-description button{color:#666}.wpr-field--split{display:inline-block;width:50%;padding-right:16px;padding-bottom:0}.wpr-field--split+.wpr-field--split{padding-left:16px;padding-right:0}.wpr-field--split+.wpr-field--split:nth-child(2){padding-top:0;border-top:none}.wpr-field--cache .wpr-field--number,.wpr-field--cache .wpr-field--select{display:inline-block;padding-top:0;width:auto;padding-bottom:0;font-weight:bold}.wpr-field--cache .wpr-field--select{position:relative;padding-left:8px;top:-2px;border-top:none}.wpr-field--cache .wpr-field--number .wpr-text input[type=number]{background:#F2F3F6;height:35px;border:1px solid #E0E4E9;font-family:inherit;font-size:1em}.wpr-field--cache .wpr-field-description{margin:8px 0;color:#00A66B}.wpr-field--cache .wpr-field-description-label{color:#121116}.wpr-fieldWarning{display:none;position:relative;padding:16px 16px 24px 56px;background:#19073B;margin:8px 0 0;color:#fff}.wpr-fieldWarning.wpr-isOpen{display:block}.wpr-fieldWarning:after{content:'';position:absolute;display:block;top:-8px;left:20px;width:0;height:0;border-style:solid;border-width:0 12px 8px 12px;border-color:transparent transparent #19073B transparent}.wpr-fieldWarning:before{content:'';position:absolute;display:block;width:calc(100% + 32px);height:100%;top:0;left:-16px;background:#19073B}.wpr-fieldWarning-title{position:relative;color:#F56640;font-size:.875rem;line-height:1.42857;font-weight:bold}.wpr-fieldWarning-title:before{position:absolute;left:-36px;font-size:1.5rem;line-height:.83333}.wpr-fieldWarning-description{position:relative;margin-top:8px}.wpr-fieldWarning .wpr-button{margin-top:16px}.wpr-warningContainer+.wpr-warningContainer,.wpr-warningContainer+.wpr-field,.wpr-field+.wpr-warningContainer{border-top:1px solid #E0E4E9;padding-top:16px}.wpr-documentation{padding:24px 16px;border-radius:4px;color:#fff;text-align:center;background:#40BACB}.wpr-documentation p{margin:8px 0 16px;font-weight:500}.wpr-documentation i{display:block;font-size:2.25rem;line-height:1;margin-bottom:8px}.wpr-documentation .wpr-button{padding-left:16px;padding-right:16px}.wpr-addon{padding:24px 0}.wpr-addon .wpr-flex{align-items:flex-start}@media (max-width: 783px){.wpr-addon .wpr-flex{align-items:center}}.wpr-addon .wpr-flex>div{text-align:left}.wpr-addon .wpr-addon-title{margin-bottom:16px;font-weight:500}.wpr-addon .wpr-field-description{font-style:normal}.wpr-addon .wpr-addon-logo{text-align:center;flex:0 0 160px}@media (max-width: 1239px){.wpr-addon .wpr-addon-logo{max-width:100px}.wpr-addon .wpr-addon-logo img{width:100%;height:auto}}@media (max-width: 1083px){.wpr-addon .wpr-addon-logo{max-width:160px}}@media (max-width: 783px){.wpr-addon .wpr-addon-logo{flex:0 0 auto;margin-bottom:16px}}.wpr-addon .wpr-addon-text{margin-left:32px;flex:1 1 auto}@media (max-width: 1239px){.wpr-addon .wpr-addon-text{margin-left:16px}}@media (max-width: 1083px){.wpr-addon .wpr-addon-text{margin-left:32px}}@media (max-width: 783px){.wpr-addon .wpr-addon-text{margin-left:0}}.wpr-addon .wpr-addon-text a{display:inline-block;margin-top:24px}.wpr-addon .wpr-addon-text .button{margin-top:24px}.wpr-notice{position:relative;color:#444;background:#EBFAF5 url("../img/bg-activated.svg") no-repeat 90% bottom;background-size:350px;margin-top:24px;border-radius:4px;overflow:hidden}.wpr-notice-container{padding:24px 25% 24px 40px}.wpr-notice-supTitle{font-size:1rem;line-height:1.375;font-weight:bold}.wpr-notice-title{font-size:1.5rem;line-height:1.33333;color:#3ECE9D;margin-top:16px;font-weight:bold}.wpr-notice-description{font-size:.875rem;line-height:1.57143;margin:16px 0 24px}.wpr-notice-continue{color:#666}.wpr-notice-close{position:absolute;top:24px;right:24px;color:#666;text-decoration:none;font-size:1.5rem;line-height:1;transition:color 200ms ease-out;-webkit-transition:color 200ms ease-out}.wpr-notice-close:hover{color:#444}.wpr-notice-close:focus{outline:none}.wpr-tools{position:relative;display:flex;flex-direction:row;padding:32px 0}@media (max-width: 1239px){.wpr-tools{flex-direction:column}}@media (max-width: 1083px){.wpr-tools{flex-direction:row}}@media (max-width: 783px){.wpr-tools{flex-direction:column}}.wpr-tools:nth-child(2){margin-top:16px}.wpr-tools+.wpr-tools{border-top:1px solid #E0E4E9}.wpr-tools-label{display:block}.wpr-tools-label:before{position:absolute;left:0;margin-top:5px;font-size:2.25rem;line-height:1;color:#F56640}.wpr-tools-col{flex:1 1 auto}.wpr-tools-col:first-child{padding-left:72px;padding-right:24px;min-width:340px}.wpr-tools-col:last-child{text-align:right}@media (max-width: 783px){.wpr-tools-col:last-child{text-align:left}}.wpr-tools .wpr-button{margin-top:24px;white-space:normal}.wpr-tools .wpr-field-description{font-style:normal;color:#666}.wpr-imagify{display:flex;justify-content:space-between;flex-wrap:wrap;margin-top:30px}.wpr-imagify-description{width:calc(100% / 3 * 1);padding-right:60px}@media (max-width: 1239px){.wpr-imagify-description{width:auto;padding-right:0}}.wpr-imagify-screenshot{width:calc(100% / 3 * 2)}@media (max-width: 1239px){.wpr-imagify-screenshot{margin-top:60px;width:auto}}.wpr-imagify-screenshot img{max-width:100%;height:auto}.wpr-imagify-more,.wpr-imagify-name{color:#00a8dc;font-weight:700;margin-bottom:0}.wpr-imagify-more::before{content:'\2713';color:#000;font-size:2rem;margin-right:5px}.wpr-imagify p{font-size:1rem}.wpr-imagify p:first-child{margin-top:0}.wpr-imagify ul{margin-top:0;margin-left:40px;list-style-type:'>'}.wpr-imagify li{padding-left:7px}.wpr-imagify a{text-decoration:none}.wpr-imagify a:hover{color:#00a8dc}.wpr-imagify .button-primary{background:#2abb9b;border:1px solid #bebebe;box-shadow:none;font-size:1rem;font-weight:700;height:auto;line-height:1;margin-top:60px;padding:20px 45px;text-shadow:none;text-transform:uppercase}.wpr-tutorials-section{display:flex;flex-flow:row wrap;justify-content:space-between}div.wpr-tutorial-item{width:calc( 96% / 3);margin-bottom:10px}.wpr-tutorial-link{cursor:pointer;transition:color 200ms ease-out}.wpr-tutorial-link:hover{color:#1EADBF}@media (max-width: 1083px){div.wpr-tutorial-item{width:calc( 96% / 2)}}@media (max-width: 783px){div.wpr-tutorial-item{width:100%}}.wpr-rocketcdn-modal{display:none}.wpr-rocketcdn-modal.is-open{display:block}.wpr-rocketcdn-modal__overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,0.6);display:flex;justify-content:center;align-items:center}.wpr-rocketcdn-modal__container{max-width:674px;max-height:100vh;overflow-y:auto;box-sizing:border-box}.wpr-rocketcdn-modal iframe{max-width:100%}.wpr-checkbox{position:relative;padding-left:32px}.wpr-checkbox label{user-select:none}.wpr-checkbox [type="checkbox"]:not(:checked),.wpr-checkbox [type="checkbox"]:checked{position:absolute;left:-9999px}.wpr-checkbox [type="checkbox"]:not(:checked)+label:before,.wpr-checkbox [type="checkbox"]:checked+label:before{content:'';position:absolute;left:0;top:4px;width:14px;height:14px;border:2px solid #444;border-radius:3px;transition:all 150ms ease-out;-webkit-transition:all 150ms ease-out}.wpr-checkbox [type="checkbox"]:not(:checked)+label:after,.wpr-checkbox [type="checkbox"]:checked+label:after{content:"\e921";position:absolute;top:5px;left:2px;color:#fff;font-family:'wpr-icomoon';speak:none;font-size:.875rem;line-height:1.28571;transition:all 150ms ease-out;-webkit-transition:all 150ms ease-out}.wpr-checkbox [type="checkbox"]:not(:checked)+label:after{opacity:0;transform:scale(2)}.wpr-checkbox [type="checkbox"]:checked+label:after{opacity:1;transform:scale(1)}.wpr-checkbox [type="checkbox"]:checked+label:before{background:#19073B;border-color:#19073B}.wpr-checkbox [type="checkbox"]:checked:focus+label:before{background:#665090;border:2px dotted #665090}.wpr-checkbox [type="checkbox"]:focus+label:before{border:2px dotted #444}.wpr-radio{position:relative;padding-left:88px}.wpr-radio label{user-select:none;font-weight:bold}.wpr-radio [type="checkbox"]:not(:checked),.wpr-radio [type="checkbox"]:checked{position:absolute;left:-9999px}.wpr-radio [type="checkbox"]:not(:checked)+label:before,.wpr-radio [type="checkbox"]:checked+label:before,.wpr-radio [type="checkbox"]:not(:checked)+label:after,.wpr-radio [type="checkbox"]:checked+label:after{content:'';position:absolute}.wpr-radio [type="checkbox"]:not(:checked)+label:before,.wpr-radio [type="checkbox"]:checked+label:before{left:0;width:52px;height:22px;background:#fff;border-radius:12px;border:1px solid #444;transition:all 150ms ease-out;-webkit-transition:all 150ms ease-out}.wpr-radio [type="checkbox"]:not(:checked)+label:after,.wpr-radio [type="checkbox"]:checked+label:after{width:18px;height:18px;border-radius:100%;background:#444;top:3px;left:3px;transition:all 150ms ease-out;-webkit-transition:all 150ms ease-out}.wpr-radio [type="checkbox"]:checked+label:before{border-color:#1EADBF}.wpr-radio [type="checkbox"]:checked+label:after{background:#1EADBF;left:33px}.wpr-radio [type="checkbox"]:checked+label .wpr-radio-ui,.wpr-radio [type="checkbox"]:not(:checked)+label .wpr-radio-ui:before,.wpr-radio [type="checkbox"]:checked+label .wpr-radio-ui:after{position:absolute;left:4px;width:52px;text-transform:uppercase;letter-spacing:-0.01em;font-weight:bold;font-size:.6875rem;line-height:2.18182;transition:all 150ms ease-out;-webkit-transition:all 150ms ease-out}.wpr-radio [type="checkbox"]:not(:checked)+label .wpr-radio-ui:before{content:attr(data-l10n-inactive);left:27px;color:#666}.wpr-radio [type="checkbox"]:checked+label .wpr-radio-ui:after{content:attr(data-l10n-active);color:#02707F}.wpr-radio--reverse{padding-right:72px;padding-left:0}.wpr-radio--reverse [type="checkbox"]:not(:checked)+label:before,.wpr-radio--reverse [type="checkbox"]:checked+label:before{right:0;left:inherit}.wpr-radio--reverse [type="checkbox"]:not(:checked)+label:after,.wpr-radio--reverse [type="checkbox"]:checked+label:after{right:33px;left:inherit}.wpr-radio--reverse [type="checkbox"]:checked+label:after{right:3px;left:inherit}.wpr-radio--reverse [type="checkbox"]:checked+label .wpr-radio-ui,.wpr-radio--reverse [type="checkbox"]:not(:checked)+label .wpr-radio-ui:before,.wpr-radio--reverse [type="checkbox"]:checked+label .wpr-radio-ui:after{right:-2px;left:inherit}.wpr-radio--reverse [type="checkbox"]:not(:checked)+label .wpr-radio-ui:before{right:-25px;left:inherit}.wpr-radio [type="checkbox"]:not(:checked):focus+label:before{border:1px dashed #444}.wpr-radio [type="checkbox"]:checked:focus+label:before{border:1px dashed #1EADBF}.wpr-radio--tips [type="checkbox"]:checked+label:before{border-color:#3ECE9D}.wpr-radio--tips [type="checkbox"]:checked+label:after{background:#3ECE9D}.wpr-radio--tips [type="checkbox"]:checked+label .wpr-radio-ui:after{color:#00A66B}.wpr-radio--tips [type="checkbox"]:checked:focus+label:before{border:1px dashed #3ECE9D}.wpr-select{position:relative}.wpr-select select{margin:0;padding:0 8px;height:36px;border:1px solid #E0E4E9;background:#F2F3F6;color:#121116;box-shadow:none;border-radius:0;letter-spacing:0.011em}.wpr-select select:focus{outline:none;border-color:#444;box-shadow:none}.wpr-select label{font-weight:bold;margin-left:8px}.wpr-textarea{margin-top:8px}.wpr-textarea textarea{padding:8px;width:100%;height:100px;font-family:Monaco;color:#121116;background:#fff;border:2px solid #c2cad4;border-radius:3px;font-size:.8125rem;line-height:1.23077;transition:border 200ms ease-out;-webkit-transition:border 200ms ease-out}.wpr-textarea textarea:focus{outline:none;border-color:#444;box-shadow:none}.wpr-textarea #delay_js_scripts{height:200px}.wpr-textarea+.wpr-field-description{color:#00A66B}.wpr-text label{color:#666}.wpr-text input[type=text],.wpr-text input[type=number]{margin-top:8px;padding:0 8px;width:100%;height:32px;color:#121116;background:#fff;border:2px solid #c2cad4;border-radius:3px;font-family:Monaco;font-size:.75rem;line-height:1.33333;transition:border 200ms ease-out;-webkit-transition:border 200ms ease-out}.wpr-text input[type=text]:focus,.wpr-text input[type=number]:focus{outline:none;border-color:#444;box-shadow:none}.wpr-text input[type=text].wpr-isError,.wpr-text input[type=number].wpr-isError{border-color:#D33F49}.wpr-text input[type=number]{width:80px}.wpr-text--number label{margin-right:8px}.wpr-upload input[type=file]{display:block;width:252px;margin:8px 8px 8px 0;padding:8px;border:1px solid #E0E4E9;background:#F2F3F6;color:#121116;font-size:.6875rem;line-height:1.45455}.wpr-upload input[type=file]:focus{outline:none;border-color:#444;box-shadow:none}.wpr-multiple{display:flex;align-items:center;flex-wrap:wrap}@media (max-width: 783px){.wpr-multiple{align-items:center;flex-direction:column}}.wpr-multiple .wpr-text{flex:1 1 auto;position:relative;top:-2px}@media (max-width: 783px){.wpr-multiple .wpr-text{width:100%}}.wpr-multiple .wpr-button{margin-left:16px;width:auto;min-width:inherit;padding-right:30px}@media (max-width: 783px){.wpr-multiple .wpr-button{margin-left:0}}.wpr-multiple input[type=text]{flex-grow:2}.wpr-multiple select{height:30px}.wpr-multiple-default{margin-right:20px}.wpr-multiple-list{display:none;padding:8px 0;margin:16px 0 0;background:#F2F3F6;border-radius:2px}.wpr-multiple-list li{margin-bottom:0;padding:4px 16px;font-size:.8125rem;line-height:1.23077;font-family:Monaco}.wpr-multiple-list li span{display:inline-block;transition:all 150ms ease-out;-webkit-transition:all 150ms ease-out}.wpr-multiple-close{position:relative;top:3px;font-size:1rem;line-height:1;transition:color 200ms ease-out;-webkit-transition:color 200ms ease-out}.wpr-multiple-close:focus{outline:none}.wpr-multiple-close:hover,.wpr-multiple-close:focus{color:#D33F49}.wpr-multiple-close:hover+span,.wpr-multiple-close:focus+span{color:#D33F49} diff --git a/wp-content/plugins/wp-rocket/assets/css/wpr-modal.css b/wp-content/plugins/wp-rocket/assets/css/wpr-modal.css new file mode 100644 index 0000000..d7ce1fe --- /dev/null +++ b/wp-content/plugins/wp-rocket/assets/css/wpr-modal.css @@ -0,0 +1 @@ +@font-face{font-family:'wpr-icomoon';src:url("../fonts/icomoon.eot?-4yq2oj");src:url("../fonts/icomoon.eot?#iefix-4yq2oj") format("embedded-opentype"),url("../fonts/icomoon.woff?-4yq2oj") format("woff"),url("../fonts/icomoon.ttf?-4yq2oj") format("truetype"),url("../fonts/icomoon.svg?-4yq2oj#icomoon") format("svg");font-weight:normal;font-style:normal}[class^="wpr-icon-"]:before,[class*=" wpr-icon-"]:after,[class^="wpr-icon-"]:after,[class*=" wpr-icon-"]:before,[id^="wpr-nav-"]:before,[id*=" wpr-nav-"]:after,[id^="wpr-nav-"]:after,[id*=" wpr-nav-"]:before{font-family:'wpr-icomoon';speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}[class^="wpr-icon-"] span.hidden,[class*=" wpr-icon-"] span.hidden{display:inline-block;height:0;width:0;overflow:hidden}.wpr-icon-chevron-right:before{content:"\e900"}.wpr-icon-chevron-left:before{content:"\e900";transform:rotate(180deg)}.wpr-icon-chevron-down:before{content:"\e901";transform:scale(0.6)}.wpr-icon-chevron-up:before{content:"\e902";top:50%;transform:translateY(-50%) scale(0.6)}.wpr-icon-rollback:before{content:"\e903"}.wpr-icon-addon:before{content:"\e904"}.wpr-icon-addons:before{content:"\e905"}.wpr-icon-book:before{content:"\e906"}.wpr-icon-cdn:before{content:"\e907"}.wpr-icon-database:before{content:"\e908"}.wpr-icon-export:before{content:"\e909"}.wpr-icon-files:before{content:"\e90a"}.wpr-icon-help:before{content:"\e90b"}.wpr-icon-home:before{content:"\e90c"}.wpr-icon-import:before{content:"\e90d"}.wpr-icon-important:before{content:"\e90e"}.wpr-icon-information:before{content:"\e90f"}.wpr-icon-information2:before{content:"\e910"}.wpr-icon-interrogation:before{content:"\e911"}.wpr-icon-media:before{content:"\e912"}.wpr-icon-plus:before{content:"\e913"}.wpr-icon-refresh:before{content:"\e914"}.wpr-icon-rules:before{content:"\e915"}.wpr-icon-stack:before{content:"\e916"}.wpr-icon-tools:before{content:"\e917"}.wpr-icon-trash:before{content:"\e918"}.wpr-icon-user:before{content:"\e919"}.wpr-icon-check:before{content:"\e920"}.wpr-icon-check2:before{content:"\e921"}.wpr-icon-close:before{content:"\e922"}.wpr-Modal{display:none;position:fixed;width:550px;height:auto;top:50%;left:50%;background:#fff;color:#444;transform:translateX(-50%) translateY(-50%);z-index:100000;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-interpolation-mode:nearest-neighbor;image-rendering:optimizeQuality;text-rendering:optimizeLegibility}.wpr-Modal-overlay{display:none;position:fixed;width:100%;height:100%;top:0;left:0;background:rgba(0,0,0,0.7);z-index:99999}.wpr-Modal-header{display:flex;align-items:center;justify-content:space-between;padding:0 16px 0 32px;border-bottom:1px solid #EEE}.wpr-Modal-header>div{display:flex}.wpr-Modal-footer{display:flex;align-items:center;justify-content:space-between;height:64px;padding:0 32px;background:#F5F5F5}.wpr-Modal-close{font-size:0;color:#AAA;border:none;background:none;cursor:pointer}.wpr-Modal-close:hover{color:#008ec2}.wpr-Modal-close:before{font-size:1.25rem;line-height:1}.wpr-Modal-return{display:none;border:none;background:none;cursor:pointer;font-size:0;color:#777;position:relative;width:28px;left:-12px}.wpr-Modal-return.wpr-isOpen{display:inline-block}.wpr-Modal-return:before{font-size:14px;display:inline-block}.wpr-Modal-return:hover,.wpr-Modal-return:focus{outline:none;color:#008ec2}.wpr-Modal-cancel{color:#0073aa;text-decoration:underline;margin-left:8px;line-height:28px;border:none;background:none;cursor:pointer;font-weight:500}.wpr-Modal-cancel:hover{color:#008ec2}.wpr-Modal-question{display:none}.wpr-Modal-question.wpr-isOpen{display:block}.wpr-Modal-content{padding:8px 32px}.wpr-Modal-fieldHidden{display:none;padding-left:26px;margin-top:8px}.wpr-Modal-fieldHidden.wpr-isOpen{display:block}.wpr-Modal-fieldHidden input[type=text],.wpr-Modal-fieldHidden textarea{border:2px solid #A9ADB0;font-size:12px;border-radius:3px;transition:border 150ms ease-out;-webkit-transition:border 150ms ease-out}.wpr-Modal-fieldHidden input[type=text]:focus,.wpr-Modal-fieldHidden textarea:focus{outline:none;box-shadow:none;border-color:#777}.wpr-Modal-fieldHidden input[type=text]::-webkit-input-placeholder,.wpr-Modal-fieldHidden textarea::-webkit-input-placeholder{color:#ccc}.wpr-Modal-fieldHidden input[type=text] :-moz-placeholder,.wpr-Modal-fieldHidden textarea :-moz-placeholder{color:#ccc;opacity:1}.wpr-Modal-fieldHidden input[type=text]::-moz-placeholder,.wpr-Modal-fieldHidden textarea::-moz-placeholder{color:#ccc;opacity:1}.wpr-Modal-fieldHidden input[type=text] :-ms-input-placeholder,.wpr-Modal-fieldHidden textarea :-ms-input-placeholder{color:#ccc}.wpr-Modal-fieldHidden input[type=text]::-ms-input-placeholder,.wpr-Modal-fieldHidden textarea::-ms-input-placeholder{color:#ccc}.wpr-Modal-fieldHidden input[type=text]::placeholder,.wpr-Modal-fieldHidden textarea::placeholder{color:#ccc}.wpr-Modal-fieldHidden input[type=text]{width:300px;height:30px}.wpr-Modal-fieldHidden textarea{width:100%;height:60px;padding:5px}.wpr-Modal-hidden{display:none}.wpr-Modal-hidden.wpr-isOpen{display:block}.wpr-Modal-hidden button{cursor:pointer;border:none;margin-bottom:24px}.wpr-Modal-hidden .text-center{text-align:center}.wpr-Modal-hidden h3{display:none !important}.wpr-Modal-hidden a{color:#1B9AAA !important}.wpr-Modal-hidden a:hover{color:#0073aa !important}.wpr-Modal-safeMode{position:relative;padding:10px 12px 10px 52px;background:#EBFAF5;color:#00A66B;border-radius:2px;font-size:.8125rem;line-height:1.38462}.wpr-Modal-safeMode:before{position:absolute;display:block;width:24px;height:24px;left:12px;top:50%;margin-top:-14px;border-radius:50%;text-align:center;border:2px solid #00A66B;font-size:.875rem;line-height:1.71429}.wpr-Modal-safeMode-title{font-weight:bold;letter-spacing:0.011em;text-transform:uppercase}.wpr-Modal .button{font-weight:500;box-shadow:none;height:30px;border-bottom-width:3px}.wpr-Modal .button-primary.wpr-isDisabled{opacity:0.2;color:#fff !important;cursor:not-allowed;pointer-events:none}.wpr-Modal ul li{padding:4px 0}.wpr-Modal h2,.wpr-Modal h3{display:inline-block;font-size:1rem;line-height:1.1875}.wpr-Modal h2{max-width:430px;font-weight:600;color:#23282D;margin:12px 0}.wpr-Modal h3{font-weight:bold;color:#3D474E;margin:8px 0}.wpr-Modal input[type=radio]{margin-top:1px;margin-right:8px}.wpr-Modal .show-if-safe-mode{display:none}.wpr-button{position:relative;display:inline-block;width:auto;padding:8px 24px;text-align:center;background:#F56640;box-shadow:0 4px 6px rgba(50,50,93,0.11),0 1px 3px rgba(0,0,0,0.08);text-transform:uppercase;text-decoration:none;letter-spacing:-0.08px;font-weight:bold;border-radius:4px;color:#fff !important;white-space:nowrap;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:all 200ms ease-out;-webkit-transition:all 200ms ease-out;font-size:.8125rem;line-height:1.53846}.wpr-button:hover,.wpr-button:focus{color:#fff !important;transform:translateY(-2px);box-shadow:0 7px 14px rgba(50,50,93,0.25),0 3px 6px rgba(0,0,0,0.2)}.wpr-button--small{padding:5px 0;letter-spacing:-0.08px;font-size:.6875rem;line-height:1.81818}.wpr-button--icon{min-width:160px;padding-left:8px;padding-right:40px;text-align:left}.wpr-button--icon:before{position:absolute;right:8px;font-size:.9375rem;line-height:1.33333}.wpr-button--fixed{position:fixed;display:flex;padding:8px 16px;right:24px;bottom:32px;border-radius:16px}.wpr-button--fixed:before{font-size:1.125rem;line-height:1;margin-right:8px}.wpr-button--purple{background:#2D1656}.wpr-button--blue{min-width:inherit;background:#1EADBF}.wpr-button--lightBlue{min-width:inherit;background:#40BACB}.wpr-button--red{background:#D33F49}.wpr-button--blueDark{background:#02707F}.wpr-button:focus{outline:none;color:#fff !important}html[dir=rtl] .wpr-Modal-header{padding:0 32px 0 16px}html[dir=rtl] .wpr-Modal-return{left:12px;transform:rotate(180deg)}html[dir=rtl] .wpr-Modal-safeMode{padding:10px 52px 10px 12px}html[dir=rtl] .wpr-Modal-safeMode:before{left:inherit;right:12px} diff --git a/wp-content/plugins/wp-rocket/assets/fonts/icomoon.eot b/wp-content/plugins/wp-rocket/assets/fonts/icomoon.eot new file mode 100644 index 0000000000000000000000000000000000000000..ca87b377d1913dc29c7adfb0fd7b42706b07ccbe GIT binary patch literal 10952 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 + + +Generated by IcoMoon + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/plugins/wp-rocket/assets/fonts/icomoon.ttf b/wp-content/plugins/wp-rocket/assets/fonts/icomoon.ttf new file mode 100644 index 0000000000000000000000000000000000000000..6a0202c5513b2081a5b569807792ef28a1d79a78 GIT binary patch literal 10788 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 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-rocket/assets/fonts/icomoon.woff b/wp-content/plugins/wp-rocket/assets/fonts/icomoon.woff new file mode 100644 index 0000000000000000000000000000000000000000..5da2c2cbdc3fc6565831d5d1e0a0453b5595ecd5 GIT binary patch literal 10864 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

4^v|?2)hp>Qvv+TKYG;GnC zR0NoX7K0HZ)D&c|Yv#0$VdaA0F)%>%&ud0sVG3s;;?JRfWTzX}zcXD{5N3SIM;~_9 zJL~8p^kbLFxSZ)|#}$S~sJ~RR;U#P9=-22Y>ku80ZS~J<;oxaP?2p7(O>L;ao%x+Uy1!+#n%=K5k+~H4orF(VrN4|xqCJ{HOeG5IrhI> z?|Non5(Js1Sd1m?*H$>BSX0H>rzewyx|FH6vl4_vQ6cnWCj=s1;@AK$j5Psb0wBPPV|5HRIrIb~oshjaY6p^& zASM91;N8I{hxX&tMC5=LJ~1c)Nnp;m?~?Zj9n2+ z8wW1D(D|EMQ7FY??K6l6Aife!X>b9PuyvBKCGBhg$M=3jaViK|>z0gzv>r-(1e5s@ ziBu}GsaW9jU?!wkyv^-qs-m0BtmEB;Ea;g5NU~oOofIEBDM~OMg5%m{LOj3*l1!x! z;ZST_A$etGIxL`G#gtTAmjO(*)CBjbX2PfXcmmde3Ddx^aSEXJV!LGtC@ZjgQH*iPZ|B93?)Vo)TV&@~QjW%E3F*K94%^Yg_@1={J@1kPQ4qVQE zH(zJ%&DUoRq57ug9@q5T5eH_be%zZMn*g4{@9s*}ZY&zC!UBDHir^+_<~e z*SjQwYe{ckZAzM6)6ucz)FtbNhu1ARbxTLb@JTINtpz?5cNM;S6%-+1d|VW#WD6y1 zU`ulgJ+Nh*uqslb-NWRgd<8F(BIx9qQY|-DI53qs7+WN8(jhc}3Qb+1e{XjhPpVqb zq~1DEDg}@iCP9xsLd9DL~o9&+7Uqdb{!Lvqqb7impE^@<<-f z(}T|%?P%iFykAR?E+EafZ(8u}a|82!Pkc~_xL*4H^p_^zt>}=5h+|#d3-olqITOw# z8UGW$un`oVdSyLGUXkd=o+R^8HgU`R8aJdOAXvC5?nSs6pK-k0M&2F4d(%KG&+vW_ zw|K|+&w$G{ZvXaHz3B5W?&san4HAKFUrsI~575);jcgOYTYg^omAYN)(O2ugGA=TH z?c3{n3BkD=t#A5o4V)eH+dm3vq0>VbgdPa}(w$ir-|)Es>Eje|LAM@$d@AU+GCYO8ltt(hTXXtu#k^u$7jO zzPgo`NsMG#X$9r0TWJI5J73;*{;siIyLQ6(JRhGYjp5!!cCH`2=;Cd=c4jKQWwM@( zl8ea2Xn+d9sgPb$e&1g2Tey03>!mw3UxYzNf#{_$s5X;}-nZqFT{|zyY#rS>deP=f zMlZ;mw + + + streamline-icon-fitness-biceps@24x24 + Created with Sketch. + + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/plugins/wp-rocket/assets/img/bandwidth.svg b/wp-content/plugins/wp-rocket/assets/img/bandwidth.svg new file mode 100644 index 0000000..fcb2754 --- /dev/null +++ b/wp-content/plugins/wp-rocket/assets/img/bandwidth.svg @@ -0,0 +1,17 @@ + + + + streamline-icon-space-rocket-earth@24x24 + Created with Sketch. + + + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/plugins/wp-rocket/assets/img/bg-activated.svg b/wp-content/plugins/wp-rocket/assets/img/bg-activated.svg new file mode 100644 index 0000000..0d1abe2 --- /dev/null +++ b/wp-content/plugins/wp-rocket/assets/img/bg-activated.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/wp-content/plugins/wp-rocket/assets/img/configuration.svg b/wp-content/plugins/wp-rocket/assets/img/configuration.svg new file mode 100644 index 0000000..57095a8 --- /dev/null +++ b/wp-content/plugins/wp-rocket/assets/img/configuration.svg @@ -0,0 +1,20 @@ + + + + streamline-icon-show-hat-magician@24x24 + Created with Sketch. + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/plugins/wp-rocket/assets/img/heartbeat-hover.svg b/wp-content/plugins/wp-rocket/assets/img/heartbeat-hover.svg new file mode 100644 index 0000000..bbb49d5 --- /dev/null +++ b/wp-content/plugins/wp-rocket/assets/img/heartbeat-hover.svg @@ -0,0 +1,5 @@ + + \ No newline at end of file diff --git a/wp-content/plugins/wp-rocket/assets/img/heartbeat.svg b/wp-content/plugins/wp-rocket/assets/img/heartbeat.svg new file mode 100644 index 0000000..6b580a5 --- /dev/null +++ b/wp-content/plugins/wp-rocket/assets/img/heartbeat.svg @@ -0,0 +1,5 @@ + + \ No newline at end of file diff --git a/wp-content/plugins/wp-rocket/assets/img/icon-128x128.png b/wp-content/plugins/wp-rocket/assets/img/icon-128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..0a863b92e0287cacc7b25809113e406dec3616c4 GIT binary patch literal 11341 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 NRhHL~tCg{g`dTMjHRN8RJMw- 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/wp-content/plugins/wp-rocket/assets/img/imagify.svg b/wp-content/plugins/wp-rocket/assets/img/imagify.svg new file mode 100644 index 0000000..eab8de0 --- /dev/null +++ b/wp-content/plugins/wp-rocket/assets/img/imagify.svg @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/wp-content/plugins/wp-rocket/assets/img/infinite.svg b/wp-content/plugins/wp-rocket/assets/img/infinite.svg new file mode 100644 index 0000000..eb78bc0 --- /dev/null +++ b/wp-content/plugins/wp-rocket/assets/img/infinite.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/wp-content/plugins/wp-rocket/assets/img/logo-adblock.svg b/wp-content/plugins/wp-rocket/assets/img/logo-adblock.svg new file mode 100644 index 0000000..6bf79a0 --- /dev/null +++ b/wp-content/plugins/wp-rocket/assets/img/logo-adblock.svg @@ -0,0 +1,31 @@ + + + + Group 15 + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/plugins/wp-rocket/assets/img/logo-cloudflare.svg b/wp-content/plugins/wp-rocket/assets/img/logo-cloudflare.svg new file mode 100644 index 0000000..cbf0bd1 --- /dev/null +++ b/wp-content/plugins/wp-rocket/assets/img/logo-cloudflare.svg @@ -0,0 +1,24 @@ + + +Logo cloudflare + + + + + + + + + + + + + + + + + + + + + diff --git a/wp-content/plugins/wp-rocket/assets/img/logo-cloudflare2.svg b/wp-content/plugins/wp-rocket/assets/img/logo-cloudflare2.svg new file mode 100644 index 0000000..6c82865 --- /dev/null +++ b/wp-content/plugins/wp-rocket/assets/img/logo-cloudflare2.svg @@ -0,0 +1,24 @@ + + +Logo cloudflare + + + + + + + + + + + + + + + + + + + + + diff --git a/wp-content/plugins/wp-rocket/assets/img/logo-facebook.svg b/wp-content/plugins/wp-rocket/assets/img/logo-facebook.svg new file mode 100644 index 0000000..c42dc76 --- /dev/null +++ b/wp-content/plugins/wp-rocket/assets/img/logo-facebook.svg @@ -0,0 +1 @@ +flogo_RGB_HEX-114 \ No newline at end of file diff --git a/wp-content/plugins/wp-rocket/assets/img/logo-google-analytics.svg b/wp-content/plugins/wp-rocket/assets/img/logo-google-analytics.svg new file mode 100644 index 0000000..95a4a15 --- /dev/null +++ b/wp-content/plugins/wp-rocket/assets/img/logo-google-analytics.svg @@ -0,0 +1,166 @@ + + + +image/svg+xml \ No newline at end of file diff --git a/wp-content/plugins/wp-rocket/assets/img/logo-sucuri.png b/wp-content/plugins/wp-rocket/assets/img/logo-sucuri.png new file mode 100644 index 0000000000000000000000000000000000000000..ed3a19912a7067ce289d2132591440a358109a84 GIT binary patch literal 21221 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 UptG{|H2?qr07*qoM6N<$g0U6$B>(^b literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-rocket/assets/img/logo-varnish.svg b/wp-content/plugins/wp-rocket/assets/img/logo-varnish.svg new file mode 100644 index 0000000..a68c4d7 --- /dev/null +++ b/wp-content/plugins/wp-rocket/assets/img/logo-varnish.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/wp-content/plugins/wp-rocket/assets/img/logo-wprocket-dark.svg b/wp-content/plugins/wp-rocket/assets/img/logo-wprocket-dark.svg new file mode 100644 index 0000000..0e5612c --- /dev/null +++ b/wp-content/plugins/wp-rocket/assets/img/logo-wprocket-dark.svg @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/wp-content/plugins/wp-rocket/assets/img/logo-wprocket-light.svg b/wp-content/plugins/wp-rocket/assets/img/logo-wprocket-light.svg new file mode 100644 index 0000000..a96a01a --- /dev/null +++ b/wp-content/plugins/wp-rocket/assets/img/logo-wprocket-light.svg @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/wp-content/plugins/wp-rocket/assets/img/picto-wprocket-dark.svg b/wp-content/plugins/wp-rocket/assets/img/picto-wprocket-dark.svg new file mode 100644 index 0000000..5e0ac45 --- /dev/null +++ b/wp-content/plugins/wp-rocket/assets/img/picto-wprocket-dark.svg @@ -0,0 +1,39 @@ + + + + Icons / WP Rocket / Light + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/plugins/wp-rocket/assets/img/picto-wprocket-light.svg b/wp-content/plugins/wp-rocket/assets/img/picto-wprocket-light.svg new file mode 100644 index 0000000..f50d9e2 --- /dev/null +++ b/wp-content/plugins/wp-rocket/assets/img/picto-wprocket-light.svg @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/wp-content/plugins/wp-rocket/assets/img/play-alt.svg b/wp-content/plugins/wp-rocket/assets/img/play-alt.svg new file mode 100644 index 0000000..b7d7b8b --- /dev/null +++ b/wp-content/plugins/wp-rocket/assets/img/play-alt.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/wp-content/plugins/wp-rocket/assets/img/play-hover.svg b/wp-content/plugins/wp-rocket/assets/img/play-hover.svg new file mode 100644 index 0000000..7e8b00c --- /dev/null +++ b/wp-content/plugins/wp-rocket/assets/img/play-hover.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/wp-content/plugins/wp-rocket/assets/img/play.svg b/wp-content/plugins/wp-rocket/assets/img/play.svg new file mode 100644 index 0000000..c276529 --- /dev/null +++ b/wp-content/plugins/wp-rocket/assets/img/play.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/wp-content/plugins/wp-rocket/assets/img/plus.svg b/wp-content/plugins/wp-rocket/assets/img/plus.svg new file mode 100644 index 0000000..2b78eaa --- /dev/null +++ b/wp-content/plugins/wp-rocket/assets/img/plus.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/wp-content/plugins/wp-rocket/assets/img/warning.svg b/wp-content/plugins/wp-rocket/assets/img/warning.svg new file mode 100644 index 0000000..33f5e44 --- /dev/null +++ b/wp-content/plugins/wp-rocket/assets/img/warning.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/wp-content/plugins/wp-rocket/assets/img/youtube.png b/wp-content/plugins/wp-rocket/assets/img/youtube.png new file mode 100644 index 0000000000000000000000000000000000000000..f5d4db11af8485ecde0a391fd3e6c5e297686701 GIT binary patch literal 662 zcmV;H0%`q;P)Lj!d2YHV>rPReh5J%Vv&I4_tKI1UixQ0Pe3dp5duGW!3j@r z2Ul?ld$A77Fa-n99!*gT#ea2tKRW1&7>Z+fjYwob3W!WZ!5Jqp3RQkDfMIk;5TuZa zz`&meFpTMtLT<_T0~kgZh(!$iGJs)}h6}_Z{89Py0No)LGxYNSTOby5Y5?prs1XN&Ucz2+&Uj7;E!|iWW6%fSD@5GMg_n ze!R%Sg(4+Onk~R86=1W?7h1AJ)QFRlNXL$53b0QFIA-&O7B7}B=E@b3CQZx`;JgZO z&F%rzWMzqL+9Xn|mLmh)RsrrgB*2G>i4mDTU8GbgM+A7L0=#r+fDhyDF4C==y#u(Z z0Pdy;@L_J=6lu}IUIBbn0AEuDP?M7*vSWux-MY385TpVGnJ&PGiH{eVH&3KuMOy_3 zQvrfa8{os7JSkGFm@NW?>q~&X4bb-j`f-5c9|_KwAyT@uLmmn0=K}iKpng3-zanJm z*97&e!uovy{mzhnZ_u*u4(t5^dWVSKBcykU>3xE~*eQA(PKZJlq=3jm3|w#uqkpzj z^ykW!EruFsgx2Vd@mPQr*oMP6ha0$!CwL7vcq0HI2uIX=v50>!_OqXdBLo5Ph8tev w3GUzq&fy5QV { + const start = Date.now(); + return setTimeout( () => { + cb( { + didTimeout: false, + timeRemaining: function timeRemaining() { + return Math.max( 0, 50 - ( Date.now() - start ) ); + } + } ); + }, 1 ); + }; + } + + if ( ! 'cancelIdleCallback' in window ) { + window.cancelIdleCallback = ( id ) => clearTimeout( id ); + } + } + + /** + * Detects if data saver mode is on. + * + * @link https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/save-data/#detecting_the_save-data_setting + * + * @returns {boolean|boolean} + */ + isDataSaverModeOn() { + return ( + 'connection' in navigator + && + true === navigator.connection.saveData + ); + } + + /** + * Checks if the browser supports link prefetch. + * + * @returns {boolean|boolean} + */ + supportsLinkPrefetch() { + const elem = document.createElement( 'link' ); + return ( + elem.relList + && + elem.relList.supports + && + elem.relList.supports( 'prefetch' ) + && + window.IntersectionObserver + && + 'isIntersecting' in IntersectionObserverEntry.prototype + ); + } + + isSlowConnection() { + return ( + 'connection' in navigator + && + 'effectiveType' in navigator.connection + && + ( + '2g' === navigator.connection.effectiveType + || + 'slow-2g' === navigator.connection.effectiveType + ) + ) + } +} diff --git a/wp-content/plugins/wp-rocket/assets/js/browser-checker.min.js b/wp-content/plugins/wp-rocket/assets/js/browser-checker.min.js new file mode 100644 index 0000000..cee63e9 --- /dev/null +++ b/wp-content/plugins/wp-rocket/assets/js/browser-checker.min.js @@ -0,0 +1 @@ +"use strict";var _createClass=function(){function defineProperties(target,props){for(var i=0;i { + if ( document.querySelector( 'link[data-rocket-async="style"][rel="preload"]' ) ) { + setTimeout( wprRemoveCPCSS, 200 ); + } else { + const elem = document.getElementById( 'rocket-critical-css' ); + if ( elem && 'remove' in elem ) { + elem.remove(); + } + } +}; + +if ( window.addEventListener ) { + window.addEventListener( 'load', wprRemoveCPCSS ); +} else if ( window.attachEvent ) { + window.attachEvent( 'onload', wprRemoveCPCSS ); +} diff --git a/wp-content/plugins/wp-rocket/assets/js/cpcss-removal.min.js b/wp-content/plugins/wp-rocket/assets/js/cpcss-removal.min.js new file mode 100644 index 0000000..599a4d7 --- /dev/null +++ b/wp-content/plugins/wp-rocket/assets/js/cpcss-removal.min.js @@ -0,0 +1 @@ +"use strict";var wprRemoveCPCSS=function wprRemoveCPCSS(){var elem;document.querySelector('link[data-rocket-async="style"][rel="preload"]')?setTimeout(wprRemoveCPCSS,200):(elem=document.getElementById("rocket-critical-css"))&&"remove"in elem&&elem.remove()};window.addEventListener?window.addEventListener("load",wprRemoveCPCSS):window.attachEvent&&window.attachEvent("onload",wprRemoveCPCSS); \ No newline at end of file diff --git a/wp-content/plugins/wp-rocket/assets/js/editor/editor.js b/wp-content/plugins/wp-rocket/assets/js/editor/editor.js new file mode 100644 index 0000000..a7eede3 --- /dev/null +++ b/wp-content/plugins/wp-rocket/assets/js/editor/editor.js @@ -0,0 +1 @@ +this.DisableEmbeds=function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=2)}([function(e,t){!function(){e.exports=this.wp.blocks}()},function(e,t){!function(){e.exports=this.wp.domReady}()},function(e,t,n){"use strict";n.r(t);var r=n(0),o=n(1);n.n(o)()(function(){Object(r.unregisterBlockType)("core-embed/wordpress")})}]); \ No newline at end of file diff --git a/wp-content/plugins/wp-rocket/assets/js/lazyload-scripts.js b/wp-content/plugins/wp-rocket/assets/js/lazyload-scripts.js new file mode 100644 index 0000000..1145806 --- /dev/null +++ b/wp-content/plugins/wp-rocket/assets/js/lazyload-scripts.js @@ -0,0 +1,108 @@ +class RocketLazyLoadScripts { + + constructor( triggerEvents, browser ) { + this.attrName = 'data-rocketlazyloadscript'; + this.browser = browser; + this.options = this.browser.options; + this.triggerEvents = triggerEvents; + this.userEventListener = this.triggerListener.bind( this ); + } + + /** + * Initializes the LazyLoad Scripts handler. + */ + init() { + this._addEventListener( this ); + } + + /** + * Resets the handler. + */ + reset() { + this._removeEventListener( this ); + } + + /** + * Adds a listener for each of the configured user interactivity event type. When an even is triggered, it invokes + * the triggerListener() method. + * + * @private + * + * @param self Instance of this object. + */ + _addEventListener( self ) { + this.triggerEvents.forEach( + eventName => window.addEventListener( eventName, self.userEventListener, self.options ) + ); + } + + /** + * Removes the listener for each of the configured user interactivity event type. + * + * @private + * + * @param self Instance of this object. + */ + _removeEventListener( self ) { + this.triggerEvents.forEach( + eventName => window.removeEventListener( eventName, self.userEventListener, self.options ) + ); + } + + /** + * Loads the script's src from the data attribute, which will then trigger the browser to request and + * load the script. + */ + _loadScriptSrc() { + const scripts = document.querySelectorAll( `script[${ this.attrName }]` ); + + if ( 0 === scripts.length ) { + this.reset(); + return; + } + + Array.prototype.slice.call( scripts ).forEach( elem => { + const scriptSrc = elem.getAttribute( this.attrName ); + + elem.setAttribute( 'src', scriptSrc ); + elem.removeAttribute( this.attrName ); + } ); + + this.reset(); + } + + /** + * Window event listener - when triggered, invokes the load script src handler and then resets. + */ + triggerListener() { + this._loadScriptSrc(); + this._removeEventListener( this ); + } + + /** + * Named static constructor to encapsulate how to create the object. + */ + static run() { + // Bail out if the browser checker does not exist. + if ( ! RocketBrowserCompatibilityChecker ) { + return; + } + + const options = { + passive: true + }; + const browser = new RocketBrowserCompatibilityChecker( options ); + const instance = new RocketLazyLoadScripts( + [ + 'keydown', + 'mouseover', + 'touchmove', + 'touchstart' + ], + browser + ); + instance.init(); + } +} + +RocketLazyLoadScripts.run(); diff --git a/wp-content/plugins/wp-rocket/assets/js/lazyload-scripts.min.js b/wp-content/plugins/wp-rocket/assets/js/lazyload-scripts.min.js new file mode 100644 index 0000000..4612e75 --- /dev/null +++ b/wp-content/plugins/wp-rocket/assets/js/lazyload-scripts.min.js @@ -0,0 +1,3 @@ +(function() { +"use strict";var e=function(){function n(e,t){for(var r=0;r -1) { + addOneShotEventListeners(element, instance); + addClass(element, settings.class_loading); + } + + setSources(element, instance); + setWasProcessedData(element); + callbackIfSet(settings.callback_reveal, element); + callbackIfSet(settings.callback_set, element); + }; + + var isIntersecting = function isIntersecting(entry) { + return entry.isIntersecting || entry.intersectionRatio > 0; + }; + + var getObserverSettings = function getObserverSettings(settings) { + return { + root: settings.container === document ? null : settings.container, + rootMargin: settings.thresholds || settings.threshold + "px" + }; + }; + + var setObserver = function setObserver(instance) { + if (!supportsIntersectionObserver) { + return false; + } + + instance._observer = new IntersectionObserver(function (entries) { + entries.forEach(function (entry) { + return isIntersecting(entry) ? onEnter(entry.target, instance) : onExit(entry.target, instance); + }); + }, getObserverSettings(instance._settings)); + return true; + }; + + var LazyLoad = function LazyLoad(customSettings, elements) { + this._settings = getInstanceSettings(customSettings); + this._loadingCount = 0; + setObserver(this); + this.update(elements); + }; + + LazyLoad.prototype = { + update: function update(elements) { + var _this = this; + + var settings = this._settings; + + var _elements = elements || settings.container.querySelectorAll(settings.elements_selector); + + this._elements = purgeProcessedElements(Array.prototype.slice.call(_elements) // NOTE: nodeset to array for IE compatibility + ); + + if (isBot || !this._observer) { + this.loadAll(); + return; + } + + this._elements.forEach(function (element) { + _this._observer.observe(element); + }); + }, + destroy: function destroy() { + var _this2 = this; + + if (this._observer) { + this._elements.forEach(function (element) { + _this2._observer.unobserve(element); + }); + + this._observer = null; + } + + this._elements = null; + this._settings = null; + }, + load: function load(element, force) { + revealElement(element, this, force); + }, + loadAll: function loadAll() { + var _this3 = this; + + var elements = this._elements; + elements.forEach(function (element) { + revealAndUnobserve(element, _this3); + }); + } + }; + /* Automatic instances creation if required (useful for async script loading) */ + + if (runningOnBrowser) { + autoInitialize(LazyLoad, window.lazyLoadOptions); + } + + return LazyLoad; +}); \ No newline at end of file diff --git a/wp-content/plugins/wp-rocket/assets/js/lazyload/11.0.6/lazyload.min.js b/wp-content/plugins/wp-rocket/assets/js/lazyload/11.0.6/lazyload.min.js new file mode 100644 index 0000000..c9ad522 --- /dev/null +++ b/wp-content/plugins/wp-rocket/assets/js/lazyload/11.0.6/lazyload.min.js @@ -0,0 +1,2 @@ +function _extends(){return(_extends=Object.assign||function(t){for(var e=1;e-1&&(k(t,e),h(t,o.class_loading)),m(t,e),function(t){s(t,"was-processed","true")}(t),d(o.callback_reveal,t),d(o.callback_set,t))},O=function(t){return!!n&&(t._observer=new IntersectionObserver(function(e){e.forEach(function(e){return function(t){return t.isIntersecting||t.intersectionRatio>0}(e)?function(t,e){var n=e._settings;d(n.callback_enter,t),n.load_delay?A(t,e):L(t,e)}(e.target,t):function(t,e){var n=e._settings;d(n.callback_exit,t),n.load_delay&&x(t)}(e.target,t)})},{root:(e=t._settings).container===document?null:e.container,rootMargin:e.thresholds||e.threshold+"px"}),!0);var e},N=function(t,e){this._settings=function(t){return _extends({},r,t)}(t),this._loadingCount=0,O(this),this.update(e)};return N.prototype={update:function(t){var n=this,o=this._settings,r=t||o.container.querySelectorAll(o.elements_selector);this._elements=function(t){return t.filter(function(t){return!i(t)})}(Array.prototype.slice.call(r)),!e&&this._observer?this._elements.forEach(function(t){n._observer.observe(t)}):this.loadAll()},destroy:function(){var t=this;this._observer&&(this._elements.forEach(function(e){t._observer.unobserve(e)}),this._observer=null),this._elements=null,this._settings=null},load:function(t,e){z(t,this,e)},loadAll:function(){var t=this;this._elements.forEach(function(e){L(e,t)})}},t&&function(t,e){if(e)if(e.length)for(var n,o=0;n=e[o];o+=1)u(t,n);else u(t,e)}(N,window.lazyLoadOptions),N}); +//# sourceMappingURL=lazyload.min.js.map diff --git a/wp-content/plugins/wp-rocket/assets/js/lazyload/11.0.6/lazyload.min.js.map b/wp-content/plugins/wp-rocket/assets/js/lazyload/11.0.6/lazyload.min.js.map new file mode 100644 index 0000000..327d95e --- /dev/null +++ b/wp-content/plugins/wp-rocket/assets/js/lazyload/11.0.6/lazyload.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["lazyload.js"],"names":["global","factory","exports","_typeof","module","define","amd","LazyLoad","this","runningOnBrowser","window","isBot","test","defaultSettings","elements_selector","threshold","thresholds","document","createElement","data_srcset","data_sizes","data_bg","class_loading","class_loaded","class_error","load_delay","auto_unobserve","callback_enter","callback_exit","callback_reveal","callback_loaded","callback_error","callback_finish","getInstanceSettings","getData","element","attribute","value","getAttribute","setData","attrName","setAttribute","processedDataName","removeAttribute","getWasProcessedData","setTimeoutData","getTimeoutData","timeoutDataName","createInstance","elementToPurge","options","event","instance","classObj","createEvent","initCustomEvent","dispatchEvent","callbackIfSet","autoInitialize","callback","argument","updateLoadingCount","plusMinus","_elements","length","_loadingCount","_settings","getSourceTags","parentTag","childTag","sourceTags","i","children","setAttributeIfValue","tagName","settings","data_src","backgroundImage","IMG","parent","parentNode","forEach","sourceTag","setImageAttributes","IFRAME","VIDEO","load","setSources","elements","setSourcesFunctions","setSourcesFunction","setSourcesVideo","filter","srcDataValue","bgDataValue","setSourcesBgImage","addClass","className","addEventListener","eventName","handler","removeEventListener","genericLoadEventName","errorHandler","removeClass","loadHandler","addEventListeners","errorEventName","success","removeEventListeners","target","supportsClassList","remove","replace","RegExp","eventHandler","addOneShotEventListeners","revealAndUnobserve","observer","unobserve","cancelDelayLoad","timeoutId","clearTimeout","loadDelay","revealElement","force","managedTags","indexOf","setTimeout","callback_set","setObserver","_observer","IntersectionObserver","entries","entry","setWasProcessedData","delayLoad","onEnter","root","container","rootMargin","isIntersecting","customSettings","getObserverSettings","trueString","prototype","update","_this","supportsIntersectionObserver","querySelectorAll","purgeProcessedElements","Array","observe","loadAll","_this2","_this3","optionsItem"],"mappings":"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","file":"lazyload.min.js","sourcesContent":["(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.LazyLoad = factory());\n}(this, (function () { 'use strict';\n\nconst runningOnBrowser = typeof window !== \"undefined\";\n\nconst isBot =\n\t(runningOnBrowser && !(\"onscroll\" in window)) ||\n\t(typeof navigator !== \"undefined\" &&\n\t\t/(gle|ing|ro)bot|crawl|spider/i.test(navigator.userAgent));\n\nconst supportsIntersectionObserver =\n\trunningOnBrowser && \"IntersectionObserver\" in window;\n\nconst supportsClassList =\n\trunningOnBrowser && \"classList\" in document.createElement(\"p\");\n\nconst defaultSettings = {\n\telements_selector: \"img\",\n\tcontainer: isBot || runningOnBrowser ? document : null,\n\tthreshold: 300,\n\tthresholds: null,\n\tdata_src: \"src\",\n\tdata_srcset: \"srcset\",\n\tdata_sizes: \"sizes\",\n\tdata_bg: \"bg\",\n\tclass_loading: \"loading\",\n\tclass_loaded: \"loaded\",\n\tclass_error: \"error\",\n\tload_delay: 0,\n\tauto_unobserve: true,\n\tcallback_enter: null,\n\tcallback_exit: null,\n\tcallback_reveal: null,\n\tcallback_loaded: null,\n\tcallback_error: null,\n\tcallback_finish: null\n};\n\nvar getInstanceSettings = customSettings => {\n\treturn Object.assign({}, defaultSettings, customSettings);\n};\n\nconst dataPrefix = \"data-\";\nconst processedDataName = \"was-processed\";\nconst timeoutDataName = \"ll-timeout\";\nconst trueString = \"true\";\n\nconst getData = (element, attribute) => {\n\treturn element.getAttribute(dataPrefix + attribute);\n};\n\nconst setData = (element, attribute, value) => {\n\tvar attrName = dataPrefix + attribute;\n\tif (value === null) {\n\t\telement.removeAttribute(attrName);\n\t\treturn;\n\t}\n\telement.setAttribute(attrName, value);\n};\n\nconst setWasProcessedData = element =>\n\tsetData(element, processedDataName, trueString);\n\nconst getWasProcessedData = element =>\n\tgetData(element, processedDataName) === trueString;\n\nconst setTimeoutData = (element, value) =>\n\tsetData(element, timeoutDataName, value);\n\nconst getTimeoutData = element => getData(element, timeoutDataName);\n\nconst purgeProcessedElements = elements => {\n\treturn elements.filter(element => !getWasProcessedData(element));\n};\n\nconst purgeOneElement = (elements, elementToPurge) => {\n\treturn elements.filter(element => element !== elementToPurge);\n};\n\n/* Creates instance and notifies it through the window element */\nconst createInstance = function(classObj, options) {\n\tvar event;\n\tlet eventString = \"LazyLoad::Initialized\";\n\tlet instance = new classObj(options);\n\ttry {\n\t\t// Works in modern browsers\n\t\tevent = new CustomEvent(eventString, { detail: { instance } });\n\t} catch (err) {\n\t\t// Works in Internet Explorer (all versions)\n\t\tevent = document.createEvent(\"CustomEvent\");\n\t\tevent.initCustomEvent(eventString, false, false, { instance });\n\t}\n\twindow.dispatchEvent(event);\n};\n\n/* Auto initialization of one or more instances of lazyload, depending on the \n options passed in (plain object or an array) */\nfunction autoInitialize(classObj, options) {\n\tif (!options) {\n\t\treturn;\n\t}\n\tif (!options.length) {\n\t\t// Plain object\n\t\tcreateInstance(classObj, options);\n\t} else {\n\t\t// Array of objects\n\t\tfor (let i = 0, optionsItem; (optionsItem = options[i]); i += 1) {\n\t\t\tcreateInstance(classObj, optionsItem);\n\t\t}\n\t}\n}\n\nconst callbackIfSet = (callback, argument) => {\n\tif (callback) {\n\t\tcallback(argument);\n\t}\n};\n\nconst updateLoadingCount = (instance, plusMinus) => {\n\tinstance._loadingCount += plusMinus;\n\tif (instance._elements.length === 0 && instance._loadingCount === 0) {\n\t\tcallbackIfSet(instance._settings.callback_finish);\n\t}\n};\n\nconst getSourceTags = parentTag => {\n\tlet sourceTags = [];\n\tfor (let i = 0, childTag; (childTag = parentTag.children[i]); i += 1) {\n\t\tif (childTag.tagName === \"SOURCE\") {\n\t\t\tsourceTags.push(childTag);\n\t\t}\n\t}\n\treturn sourceTags;\n};\n\nconst setAttributeIfValue = (element, attrName, value) => {\n\tif (!value) {\n\t\treturn;\n\t}\n\telement.setAttribute(attrName, value);\n};\n\nconst setImageAttributes = (element, settings) => {\n\tsetAttributeIfValue(\n\t\telement,\n\t\t\"sizes\",\n\t\tgetData(element, settings.data_sizes)\n\t);\n\tsetAttributeIfValue(\n\t\telement,\n\t\t\"srcset\",\n\t\tgetData(element, settings.data_srcset)\n\t);\n\tsetAttributeIfValue(element, \"src\", getData(element, settings.data_src));\n};\n\nconst setSourcesImg = (element, settings) => {\n\tconst parent = element.parentNode;\n\n\tif (parent && parent.tagName === \"PICTURE\") {\n\t\tlet sourceTags = getSourceTags(parent);\n\t\tsourceTags.forEach(sourceTag => {\n\t\t\tsetImageAttributes(sourceTag, settings);\n\t\t});\n\t}\n\n\tsetImageAttributes(element, settings);\n};\n\nconst setSourcesIframe = (element, settings) => {\n\tsetAttributeIfValue(element, \"src\", getData(element, settings.data_src));\n};\n\nconst setSourcesVideo = (element, settings) => {\n\tlet sourceTags = getSourceTags(element);\n\tsourceTags.forEach(sourceTag => {\n\t\tsetAttributeIfValue(\n\t\t\tsourceTag,\n\t\t\t\"src\",\n\t\t\tgetData(sourceTag, settings.data_src)\n\t\t);\n\t});\n\tsetAttributeIfValue(element, \"src\", getData(element, settings.data_src));\n\telement.load();\n};\n\nconst setSourcesBgImage = (element, settings) => {\n\tconst srcDataValue = getData(element, settings.data_src);\n\tconst bgDataValue = getData(element, settings.data_bg);\n\n\tif (srcDataValue) {\n\t\telement.style.backgroundImage = `url(\"${srcDataValue}\")`;\n\t}\n\n\tif (bgDataValue) {\n\t\telement.style.backgroundImage = bgDataValue;\n\t}\n};\n\nconst setSourcesFunctions = {\n\tIMG: setSourcesImg,\n\tIFRAME: setSourcesIframe,\n\tVIDEO: setSourcesVideo\n};\n\nconst setSources = (element, instance) => {\n\tconst settings = instance._settings;\n\tconst tagName = element.tagName;\n\tconst setSourcesFunction = setSourcesFunctions[tagName];\n\tif (setSourcesFunction) {\n\t\tsetSourcesFunction(element, settings);\n\t\tupdateLoadingCount(instance, 1);\n\t\tinstance._elements = purgeOneElement(instance._elements, element);\n\t\treturn;\n\t}\n\tsetSourcesBgImage(element, settings);\n};\n\nconst addClass = (element, className) => {\n\tif (supportsClassList) {\n\t\telement.classList.add(className);\n\t\treturn;\n\t}\n\telement.className += (element.className ? \" \" : \"\") + className;\n};\n\nconst removeClass = (element, className) => {\n\tif (supportsClassList) {\n\t\telement.classList.remove(className);\n\t\treturn;\n\t}\n\telement.className = element.className.\n\t\treplace(new RegExp(\"(^|\\\\s+)\" + className + \"(\\\\s+|$)\"), \" \").\n\t\treplace(/^\\s+/, \"\").\n\t\treplace(/\\s+$/, \"\");\n};\n\nconst genericLoadEventName = \"load\";\nconst mediaLoadEventName = \"loadeddata\";\nconst errorEventName = \"error\";\n\nconst addEventListener = (element, eventName, handler) => {\n\telement.addEventListener(eventName, handler);\n};\n\nconst removeEventListener = (element, eventName, handler) => {\n\telement.removeEventListener(eventName, handler);\n};\n\nconst addEventListeners = (element, loadHandler, errorHandler) => {\n\taddEventListener(element, genericLoadEventName, loadHandler);\n\taddEventListener(element, mediaLoadEventName, loadHandler);\n\taddEventListener(element, errorEventName, errorHandler);\n};\n\nconst removeEventListeners = (element, loadHandler, errorHandler) => {\n\tremoveEventListener(element, genericLoadEventName, loadHandler);\n\tremoveEventListener(element, mediaLoadEventName, loadHandler);\n\tremoveEventListener(element, errorEventName, errorHandler);\n};\n\nconst eventHandler = function(event, success, instance) {\n\tvar settings = instance._settings;\n\tconst className = success ? settings.class_loaded : settings.class_error;\n\tconst callback = success\n\t\t? settings.callback_loaded\n\t\t: settings.callback_error;\n\tconst element = event.target;\n\n\tremoveClass(element, settings.class_loading);\n\taddClass(element, className);\n\tcallbackIfSet(callback, element);\n\n\tupdateLoadingCount(instance, -1);\n};\n\nconst addOneShotEventListeners = (element, instance) => {\n\tconst loadHandler = event => {\n\t\teventHandler(event, true, instance);\n\t\tremoveEventListeners(element, loadHandler, errorHandler);\n\t};\n\tconst errorHandler = event => {\n\t\teventHandler(event, false, instance);\n\t\tremoveEventListeners(element, loadHandler, errorHandler);\n\t};\n\taddEventListeners(element, loadHandler, errorHandler);\n};\n\nconst managedTags = [\"IMG\", \"IFRAME\", \"VIDEO\"];\n\nconst onEnter = (element, instance) => {\n\tconst settings = instance._settings;\n\tcallbackIfSet(settings.callback_enter, element);\n\tif (!settings.load_delay) {\n\t\trevealAndUnobserve(element, instance);\n\t\treturn;\n\t}\n\tdelayLoad(element, instance);\n};\n\nconst revealAndUnobserve = (element, instance) => {\n\tvar observer = instance._observer;\n\trevealElement(element, instance);\n\tif (observer && instance._settings.auto_unobserve) {\n\t\tobserver.unobserve(element);\n\t}\n};\n\nconst onExit = (element, instance) => {\n\tconst settings = instance._settings;\n\tcallbackIfSet(settings.callback_exit, element);\n\tif (!settings.load_delay) {\n\t\treturn;\n\t}\n\tcancelDelayLoad(element);\n};\n\nconst cancelDelayLoad = element => {\n\tvar timeoutId = getTimeoutData(element);\n\tif (!timeoutId) {\n\t\treturn; // do nothing if timeout doesn't exist\n\t}\n\tclearTimeout(timeoutId);\n\tsetTimeoutData(element, null);\n};\n\nconst delayLoad = (element, instance) => {\n\tvar loadDelay = instance._settings.load_delay;\n\tvar timeoutId = getTimeoutData(element);\n\tif (timeoutId) {\n\t\treturn; // do nothing if timeout already set\n\t}\n\ttimeoutId = setTimeout(function() {\n\t\trevealAndUnobserve(element, instance);\n\t\tcancelDelayLoad(element);\n\t}, loadDelay);\n\tsetTimeoutData(element, timeoutId);\n};\n\nconst revealElement = (element, instance, force) => {\n\tvar settings = instance._settings;\n\tif (!force && getWasProcessedData(element)) {\n\t\treturn; // element has already been processed and force wasn't true\n\t}\n\tif (managedTags.indexOf(element.tagName) > -1) {\n\t\taddOneShotEventListeners(element, instance);\n\t\taddClass(element, settings.class_loading);\n\t}\n\tsetSources(element, instance);\n\tsetWasProcessedData(element);\n\tcallbackIfSet(settings.callback_reveal, element);\n\tcallbackIfSet(settings.callback_set, element);\n};\n\nconst isIntersecting = entry =>\n\tentry.isIntersecting || entry.intersectionRatio > 0;\n\nconst getObserverSettings = settings => ({\n\troot: settings.container === document ? null : settings.container,\n\trootMargin: settings.thresholds || settings.threshold + \"px\"\n});\n\nconst setObserver = instance => {\n\tif (!supportsIntersectionObserver) {\n\t\treturn false;\n\t}\n\tinstance._observer = new IntersectionObserver(entries => {\n\t\tentries.forEach(entry =>\n\t\t\tisIntersecting(entry)\n\t\t\t\t? onEnter(entry.target, instance)\n\t\t\t\t: onExit(entry.target, instance)\n\t\t);\n\t}, getObserverSettings(instance._settings));\n\treturn true;\n};\n\nconst LazyLoad = function(customSettings, elements) {\n\tthis._settings = getInstanceSettings(customSettings);\n\tthis._loadingCount = 0;\n\tsetObserver(this);\n\tthis.update(elements);\n};\n\nLazyLoad.prototype = {\n\tupdate: function(elements) {\n\t\tconst settings = this._settings;\n\t\tconst _elements =\n\t\t\telements ||\n\t\t\tsettings.container.querySelectorAll(settings.elements_selector);\n\n\t\tthis._elements = purgeProcessedElements(\n\t\t\tArray.prototype.slice.call(_elements) // NOTE: nodeset to array for IE compatibility\n\t\t);\n\n\t\tif (isBot || !this._observer) {\n\t\t\tthis.loadAll();\n\t\t\treturn;\n\t\t}\n\n\t\tthis._elements.forEach(element => {\n\t\t\tthis._observer.observe(element);\n\t\t});\n\t},\n\n\tdestroy: function() {\n\t\tif (this._observer) {\n\t\t\tthis._elements.forEach(element => {\n\t\t\t\tthis._observer.unobserve(element);\n\t\t\t});\n\t\t\tthis._observer = null;\n\t\t}\n\t\tthis._elements = null;\n\t\tthis._settings = null;\n\t},\n\n\tload: function(element, force) {\n\t\trevealElement(element, this, force);\n\t},\n\n\tloadAll: function() {\n\t\tvar elements = this._elements;\n\t\telements.forEach(element => {\n\t\t\trevealAndUnobserve(element, this);\n\t\t});\n\t}\n};\n\n/* Automatic instances creation if required (useful for async script loading) */\nif (runningOnBrowser) {\n\tautoInitialize(LazyLoad, window.lazyLoadOptions);\n}\n\nreturn LazyLoad;\n\n})));\n"]} \ No newline at end of file diff --git a/wp-content/plugins/wp-rocket/assets/js/lazyload/12.0/lazyload.js b/wp-content/plugins/wp-rocket/assets/js/lazyload/12.0/lazyload.js new file mode 100644 index 0000000..c00114e --- /dev/null +++ b/wp-content/plugins/wp-rocket/assets/js/lazyload/12.0/lazyload.js @@ -0,0 +1,491 @@ +function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } + +function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +(function (global, factory) { + (typeof exports === "undefined" ? "undefined" : _typeof(exports)) === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : global.LazyLoad = factory(); +})(this, function () { + 'use strict'; + + var runningOnBrowser = typeof window !== "undefined"; + var isBot = runningOnBrowser && !("onscroll" in window) || typeof navigator !== "undefined" && /(gle|ing|ro)bot|crawl|spider/i.test(navigator.userAgent); + var supportsIntersectionObserver = runningOnBrowser && "IntersectionObserver" in window; + var supportsClassList = runningOnBrowser && "classList" in document.createElement("p"); + var defaultSettings = { + elements_selector: "img", + container: isBot || runningOnBrowser ? document : null, + threshold: 300, + thresholds: null, + data_src: "src", + data_srcset: "srcset", + data_sizes: "sizes", + data_bg: "bg", + class_loading: "loading", + class_loaded: "loaded", + class_error: "error", + load_delay: 0, + auto_unobserve: true, + callback_enter: null, + callback_exit: null, + callback_reveal: null, + callback_loaded: null, + callback_error: null, + callback_finish: null, + use_native: false + }; + + var getInstanceSettings = function getInstanceSettings(customSettings) { + return _extends({}, defaultSettings, customSettings); + }; + /* Creates instance and notifies it through the window element */ + + + var createInstance = function createInstance(classObj, options) { + var event; + var eventString = "LazyLoad::Initialized"; + var instance = new classObj(options); + + try { + // Works in modern browsers + event = new CustomEvent(eventString, { + detail: { + instance: instance + } + }); + } catch (err) { + // Works in Internet Explorer (all versions) + event = document.createEvent("CustomEvent"); + event.initCustomEvent(eventString, false, false, { + instance: instance + }); + } + + window.dispatchEvent(event); + }; + /* Auto initialization of one or more instances of lazyload, depending on the + options passed in (plain object or an array) */ + + + function autoInitialize(classObj, options) { + if (!options) { + return; + } + + if (!options.length) { + // Plain object + createInstance(classObj, options); + } else { + // Array of objects + for (var i = 0, optionsItem; optionsItem = options[i]; i += 1) { + createInstance(classObj, optionsItem); + } + } + } + + var dataPrefix = "data-"; + var processedDataName = "was-processed"; + var timeoutDataName = "ll-timeout"; + var trueString = "true"; + + var getData = function getData(element, attribute) { + return element.getAttribute(dataPrefix + attribute); + }; + + var setData = function setData(element, attribute, value) { + var attrName = dataPrefix + attribute; + + if (value === null) { + element.removeAttribute(attrName); + return; + } + + element.setAttribute(attrName, value); + }; + + var setWasProcessedData = function setWasProcessedData(element) { + return setData(element, processedDataName, trueString); + }; + + var getWasProcessedData = function getWasProcessedData(element) { + return getData(element, processedDataName) === trueString; + }; + + var setTimeoutData = function setTimeoutData(element, value) { + return setData(element, timeoutDataName, value); + }; + + var getTimeoutData = function getTimeoutData(element) { + return getData(element, timeoutDataName); + }; + + var purgeProcessedElements = function purgeProcessedElements(elements) { + return elements.filter(function (element) { + return !getWasProcessedData(element); + }); + }; + + var purgeOneElement = function purgeOneElement(elements, elementToPurge) { + return elements.filter(function (element) { + return element !== elementToPurge; + }); + }; + + var callbackIfSet = function callbackIfSet(callback, argument) { + if (callback) { + callback(argument); + } + }; + + var updateLoadingCount = function updateLoadingCount(instance, plusMinus) { + instance._loadingCount += plusMinus; + + if (instance._elements.length === 0 && instance._loadingCount === 0) { + callbackIfSet(instance._settings.callback_finish); + } + }; + + var getSourceTags = function getSourceTags(parentTag) { + var sourceTags = []; + + for (var i = 0, childTag; childTag = parentTag.children[i]; i += 1) { + if (childTag.tagName === "SOURCE") { + sourceTags.push(childTag); + } + } + + return sourceTags; + }; + + var setAttributeIfValue = function setAttributeIfValue(element, attrName, value) { + if (!value) { + return; + } + + element.setAttribute(attrName, value); + }; + + var setImageAttributes = function setImageAttributes(element, settings) { + setAttributeIfValue(element, "sizes", getData(element, settings.data_sizes)); + setAttributeIfValue(element, "srcset", getData(element, settings.data_srcset)); + setAttributeIfValue(element, "src", getData(element, settings.data_src)); + }; + + var setSourcesImg = function setSourcesImg(element, settings) { + var parent = element.parentNode; + + if (parent && parent.tagName === "PICTURE") { + var sourceTags = getSourceTags(parent); + sourceTags.forEach(function (sourceTag) { + setImageAttributes(sourceTag, settings); + }); + } + + setImageAttributes(element, settings); + }; + + var setSourcesIframe = function setSourcesIframe(element, settings) { + setAttributeIfValue(element, "src", getData(element, settings.data_src)); + }; + + var setSourcesVideo = function setSourcesVideo(element, settings) { + var sourceTags = getSourceTags(element); + sourceTags.forEach(function (sourceTag) { + setAttributeIfValue(sourceTag, "src", getData(sourceTag, settings.data_src)); + }); + setAttributeIfValue(element, "src", getData(element, settings.data_src)); + element.load(); + }; + + var setSourcesBgImage = function setSourcesBgImage(element, settings) { + var srcDataValue = getData(element, settings.data_src); + var bgDataValue = getData(element, settings.data_bg); + + if (srcDataValue) { + element.style.backgroundImage = "url(\"".concat(srcDataValue, "\")"); + } + + if (bgDataValue) { + element.style.backgroundImage = bgDataValue; + } + }; + + var setSourcesFunctions = { + IMG: setSourcesImg, + IFRAME: setSourcesIframe, + VIDEO: setSourcesVideo + }; + + var setSources = function setSources(element, instance) { + var settings = instance._settings; + var tagName = element.tagName; + var setSourcesFunction = setSourcesFunctions[tagName]; + + if (setSourcesFunction) { + setSourcesFunction(element, settings); + updateLoadingCount(instance, 1); + instance._elements = purgeOneElement(instance._elements, element); + return; + } + + setSourcesBgImage(element, settings); + }; + + var addClass = function addClass(element, className) { + if (supportsClassList) { + element.classList.add(className); + return; + } + + element.className += (element.className ? " " : "") + className; + }; + + var removeClass = function removeClass(element, className) { + if (supportsClassList) { + element.classList.remove(className); + return; + } + + element.className = element.className.replace(new RegExp("(^|\\s+)" + className + "(\\s+|$)"), " ").replace(/^\s+/, "").replace(/\s+$/, ""); + }; + + var genericLoadEventName = "load"; + var mediaLoadEventName = "loadeddata"; + var errorEventName = "error"; + + var addEventListener = function addEventListener(element, eventName, handler) { + element.addEventListener(eventName, handler); + }; + + var removeEventListener = function removeEventListener(element, eventName, handler) { + element.removeEventListener(eventName, handler); + }; + + var addEventListeners = function addEventListeners(element, loadHandler, errorHandler) { + addEventListener(element, genericLoadEventName, loadHandler); + addEventListener(element, mediaLoadEventName, loadHandler); + addEventListener(element, errorEventName, errorHandler); + }; + + var removeEventListeners = function removeEventListeners(element, loadHandler, errorHandler) { + removeEventListener(element, genericLoadEventName, loadHandler); + removeEventListener(element, mediaLoadEventName, loadHandler); + removeEventListener(element, errorEventName, errorHandler); + }; + + var eventHandler = function eventHandler(event, success, instance) { + var settings = instance._settings; + var className = success ? settings.class_loaded : settings.class_error; + var callback = success ? settings.callback_loaded : settings.callback_error; + var element = event.target; + removeClass(element, settings.class_loading); + addClass(element, className); + callbackIfSet(callback, element); + updateLoadingCount(instance, -1); + }; + + var addOneShotEventListeners = function addOneShotEventListeners(element, instance) { + var loadHandler = function loadHandler(event) { + eventHandler(event, true, instance); + removeEventListeners(element, loadHandler, errorHandler); + }; + + var errorHandler = function errorHandler(event) { + eventHandler(event, false, instance); + removeEventListeners(element, loadHandler, errorHandler); + }; + + addEventListeners(element, loadHandler, errorHandler); + }; + + var managedTags = ["IMG", "IFRAME", "VIDEO"]; + + var onEnter = function onEnter(element, instance) { + var settings = instance._settings; + callbackIfSet(settings.callback_enter, element); + + if (!settings.load_delay) { + revealAndUnobserve(element, instance); + return; + } + + delayLoad(element, instance); + }; + + var revealAndUnobserve = function revealAndUnobserve(element, instance) { + var observer = instance._observer; + revealElement(element, instance); + + if (observer && instance._settings.auto_unobserve) { + observer.unobserve(element); + } + }; + + var onExit = function onExit(element, instance) { + var settings = instance._settings; + callbackIfSet(settings.callback_exit, element); + + if (!settings.load_delay) { + return; + } + + cancelDelayLoad(element); + }; + + var cancelDelayLoad = function cancelDelayLoad(element) { + var timeoutId = getTimeoutData(element); + + if (!timeoutId) { + return; // do nothing if timeout doesn't exist + } + + clearTimeout(timeoutId); + setTimeoutData(element, null); + }; + + var delayLoad = function delayLoad(element, instance) { + var loadDelay = instance._settings.load_delay; + var timeoutId = getTimeoutData(element); + + if (timeoutId) { + return; // do nothing if timeout already set + } + + timeoutId = setTimeout(function () { + revealAndUnobserve(element, instance); + cancelDelayLoad(element); + }, loadDelay); + setTimeoutData(element, timeoutId); + }; + + var revealElement = function revealElement(element, instance, force) { + var settings = instance._settings; + + if (!force && getWasProcessedData(element)) { + return; // element has already been processed and force wasn't true + } + + if (managedTags.indexOf(element.tagName) > -1) { + addOneShotEventListeners(element, instance); + addClass(element, settings.class_loading); + } + + setSources(element, instance); + setWasProcessedData(element); + callbackIfSet(settings.callback_reveal, element); + callbackIfSet(settings.callback_set, element); + }; + + var isIntersecting = function isIntersecting(entry) { + return entry.isIntersecting || entry.intersectionRatio > 0; + }; + + var getObserverSettings = function getObserverSettings(settings) { + return { + root: settings.container === document ? null : settings.container, + rootMargin: settings.thresholds || settings.threshold + "px" + }; + }; + + var setObserver = function setObserver(instance) { + if (!supportsIntersectionObserver) { + return false; + } + + instance._observer = new IntersectionObserver(function (entries) { + entries.forEach(function (entry) { + return isIntersecting(entry) ? onEnter(entry.target, instance) : onExit(entry.target, instance); + }); + }, getObserverSettings(instance._settings)); + return true; + }; + + var nativeLazyTags = ["IMG", "IFRAME"]; + + var shouldUseNative = function shouldUseNative(settings) { + return settings.use_native && "loading" in HTMLImageElement.prototype; + }; + + var loadAllNative = function loadAllNative(instance) { + instance._elements.forEach(function (element) { + if (nativeLazyTags.indexOf(element.tagName) === -1) { + return; + } + + element.setAttribute("loading", "lazy"); + revealElement(element, instance); + }); + }; + + var nodeSetToArray = function nodeSetToArray(nodeSet) { + return Array.prototype.slice.call(nodeSet); + }; + + var queryElements = function queryElements(settings) { + return settings.container.querySelectorAll(settings.elements_selector); + }; + + var getElements = function getElements(elements, settings) { + return purgeProcessedElements(nodeSetToArray(elements || queryElements(settings))); + }; + + var LazyLoad = function LazyLoad(customSettings, elements) { + this._settings = getInstanceSettings(customSettings); + this._loadingCount = 0; + setObserver(this); + this.update(elements); + }; + + LazyLoad.prototype = { + update: function update(elements) { + var _this = this; + + var settings = this._settings; + this._elements = getElements(elements, settings); + + if (isBot || !this._observer) { + this.loadAll(); + return; + } + + if (shouldUseNative(settings)) { + loadAllNative(this); + this._elements = getElements(elements, settings); + } + + this._elements.forEach(function (element) { + _this._observer.observe(element); + }); + }, + destroy: function destroy() { + var _this2 = this; + + if (this._observer) { + this._elements.forEach(function (element) { + _this2._observer.unobserve(element); + }); + + this._observer = null; + } + + this._elements = null; + this._settings = null; + }, + load: function load(element, force) { + revealElement(element, this, force); + }, + loadAll: function loadAll() { + var _this3 = this; + + this._elements.forEach(function (element) { + revealAndUnobserve(element, _this3); + }); + } + }; + /* Automatic instances creation if required (useful for async script loading) */ + + if (runningOnBrowser) { + autoInitialize(LazyLoad, window.lazyLoadOptions); + } + + return LazyLoad; +}); \ No newline at end of file diff --git a/wp-content/plugins/wp-rocket/assets/js/lazyload/12.0/lazyload.min.js b/wp-content/plugins/wp-rocket/assets/js/lazyload/12.0/lazyload.min.js new file mode 100644 index 0000000..12facf2 --- /dev/null +++ b/wp-content/plugins/wp-rocket/assets/js/lazyload/12.0/lazyload.min.js @@ -0,0 +1,2 @@ +function _extends(){return(_extends=Object.assign||function(t){for(var e=1;e-1&&(I(t,e),h(t,o.class_loading)),b(t,e),function(t){s(t,"was-processed","true")}(t),d(o.callback_reveal,t),d(o.callback_set,t))},O=function(t){return!!n&&(t._observer=new IntersectionObserver(function(e){e.forEach(function(e){return function(t){return t.isIntersecting||t.intersectionRatio>0}(e)?function(t,e){var n=e._settings;d(n.callback_enter,t),n.load_delay?x(t,e):A(t,e)}(e.target,t):function(t,e){var n=e._settings;d(n.callback_exit,t),n.load_delay&&L(t)}(e.target,t)})},{root:(e=t._settings).container===document?null:e.container,rootMargin:e.thresholds||e.threshold+"px"}),!0);var e},N=["IMG","IFRAME"],C=function(t,e){return function(t){return t.filter(function(t){return!c(t)})}((n=t||function(t){return t.container.querySelectorAll(t.elements_selector)}(e),Array.prototype.slice.call(n)));var n},M=function(t,e){this._settings=function(t){return _extends({},r,t)}(t),this._loadingCount=0,O(this),this.update(e)};return M.prototype={update:function(t){var n,o=this,r=this._settings;(this._elements=C(t,r),!e&&this._observer)?(function(t){return t.use_native&&"loading"in HTMLImageElement.prototype}(r)&&((n=this)._elements.forEach(function(t){-1!==N.indexOf(t.tagName)&&(t.setAttribute("loading","lazy"),z(t,n))}),this._elements=C(t,r)),this._elements.forEach(function(t){o._observer.observe(t)})):this.loadAll()},destroy:function(){var t=this;this._observer&&(this._elements.forEach(function(e){t._observer.unobserve(e)}),this._observer=null),this._elements=null,this._settings=null},load:function(t,e){z(t,this,e)},loadAll:function(){var t=this;this._elements.forEach(function(e){A(e,t)})}},t&&function(t,e){if(e)if(e.length)for(var n,o=0;n=e[o];o+=1)a(t,n);else a(t,e)}(M,window.lazyLoadOptions),M}); +//# sourceMappingURL=lazyload.min.js.map diff --git a/wp-content/plugins/wp-rocket/assets/js/lazyload/12.0/lazyload.min.js.map b/wp-content/plugins/wp-rocket/assets/js/lazyload/12.0/lazyload.min.js.map new file mode 100644 index 0000000..ed990c2 --- /dev/null +++ b/wp-content/plugins/wp-rocket/assets/js/lazyload/12.0/lazyload.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["lazyload.js"],"names":["global","factory","exports","_typeof","module","define","amd","LazyLoad","this","runningOnBrowser","window","isBot","test","defaultSettings","elements_selector","threshold","thresholds","document","createElement","data_srcset","data_sizes","data_bg","class_loading","class_loaded","class_error","load_delay","auto_unobserve","callback_enter","callback_exit","callback_reveal","callback_loaded","callback_error","callback_finish","use_native","getInstanceSettings","createInstance","classObj","options","event","detail","instance","CustomEvent","err","createEvent","eventString","dispatchEvent","dataPrefix","element","attribute","processedDataName","setData","value","attrName","getData","removeAttribute","getWasProcessedData","setTimeoutData","setWasProcessedData","getTimeoutData","callback","argument","updateLoadingCount","_loadingCount","plusMinus","_elements","length","callbackIfSet","_settings","getSourceTags","parentTag","childTag","sourceTags","i","children","setAttribute","setAttributeIfValue","tagName","settings","data_src","backgroundImage","IMG","parent","parentNode","forEach","sourceTag","setImageAttributes","IFRAME","VIDEO","load","setSources","elements","setSourcesFunctions","setSourcesFunction","setSourcesVideo","timeoutDataName","srcDataValue","bgDataValue","setSourcesBgImage","addClass","className","addEventListener","eventName","handler","removeEventListener","genericLoadEventName","errorHandler","removeClass","loadHandler","addEventListeners","errorEventName","success","removeEventListeners","target","supportsClassList","remove","replace","RegExp","eventHandler","addOneShotEventListeners","revealAndUnobserve","observer","unobserve","cancelDelayLoad","timeoutId","clearTimeout","loadDelay","revealElement","force","managedTags","indexOf","setTimeout","callback_set","setObserver","_observer","IntersectionObserver","entries","entry","delayLoad","onEnter","root","container","rootMargin","isIntersecting","nativeLazyTags","getElements","trueString","purgeProcessedElements","getObserverSettings","querySelectorAll","queryElements","shouldUseNative","customSettings","loadAllNative","prototype","update","_this","nodeSetToArray","loadAll","destroy","_this2","_this3","autoInitialize","optionsItem"],"mappings":"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","file":"lazyload.min.js","sourcesContent":["(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.LazyLoad = factory());\n}(this, (function () { 'use strict';\n\nconst runningOnBrowser = typeof window !== \"undefined\";\r\n\r\nconst isBot =\r\n\t(runningOnBrowser && !(\"onscroll\" in window)) ||\r\n\t(typeof navigator !== \"undefined\" &&\r\n\t\t/(gle|ing|ro)bot|crawl|spider/i.test(navigator.userAgent));\r\n\r\nconst supportsIntersectionObserver =\r\n\trunningOnBrowser && \"IntersectionObserver\" in window;\r\n\r\nconst supportsClassList =\r\n\trunningOnBrowser && \"classList\" in document.createElement(\"p\");\n\nconst defaultSettings = {\r\n\telements_selector: \"img\",\r\n\tcontainer: isBot || runningOnBrowser ? document : null,\r\n\tthreshold: 300,\r\n\tthresholds: null,\r\n\tdata_src: \"src\",\r\n\tdata_srcset: \"srcset\",\r\n\tdata_sizes: \"sizes\",\r\n\tdata_bg: \"bg\",\r\n\tclass_loading: \"loading\",\r\n\tclass_loaded: \"loaded\",\r\n\tclass_error: \"error\",\r\n\tload_delay: 0,\r\n\tauto_unobserve: true,\r\n\tcallback_enter: null,\r\n\tcallback_exit: null,\r\n\tcallback_reveal: null,\r\n\tcallback_loaded: null,\r\n\tcallback_error: null,\r\n\tcallback_finish: null,\r\n\tuse_native: false\r\n};\r\n\r\nvar getInstanceSettings = customSettings => {\r\n\treturn Object.assign({}, defaultSettings, customSettings);\r\n};\n\n/* Creates instance and notifies it through the window element */\r\nconst createInstance = function(classObj, options) {\r\n\tvar event;\r\n\tlet eventString = \"LazyLoad::Initialized\";\r\n\tlet instance = new classObj(options);\r\n\ttry {\r\n\t\t// Works in modern browsers\r\n\t\tevent = new CustomEvent(eventString, { detail: { instance } });\r\n\t} catch (err) {\r\n\t\t// Works in Internet Explorer (all versions)\r\n\t\tevent = document.createEvent(\"CustomEvent\");\r\n\t\tevent.initCustomEvent(eventString, false, false, { instance });\r\n\t}\r\n\twindow.dispatchEvent(event);\r\n};\r\n\r\n/* Auto initialization of one or more instances of lazyload, depending on the \r\n options passed in (plain object or an array) */\r\nfunction autoInitialize(classObj, options) {\r\n\tif (!options) {\r\n\t\treturn;\r\n\t}\r\n\tif (!options.length) {\r\n\t\t// Plain object\r\n\t\tcreateInstance(classObj, options);\r\n\t} else {\r\n\t\t// Array of objects\r\n\t\tfor (let i = 0, optionsItem; (optionsItem = options[i]); i += 1) {\r\n\t\t\tcreateInstance(classObj, optionsItem);\r\n\t\t}\r\n\t}\r\n}\n\nconst dataPrefix = \"data-\";\r\nconst processedDataName = \"was-processed\";\r\nconst timeoutDataName = \"ll-timeout\";\r\nconst trueString = \"true\";\r\n\r\nconst getData = (element, attribute) => {\r\n\treturn element.getAttribute(dataPrefix + attribute);\r\n};\r\n\r\nconst setData = (element, attribute, value) => {\r\n\tvar attrName = dataPrefix + attribute;\r\n\tif (value === null) {\r\n\t\telement.removeAttribute(attrName);\r\n\t\treturn;\r\n\t}\r\n\telement.setAttribute(attrName, value);\r\n};\r\n\r\nconst setWasProcessedData = element =>\r\n\tsetData(element, processedDataName, trueString);\r\n\r\nconst getWasProcessedData = element =>\r\n\tgetData(element, processedDataName) === trueString;\r\n\r\nconst setTimeoutData = (element, value) =>\r\n\tsetData(element, timeoutDataName, value);\r\n\r\nconst getTimeoutData = element => getData(element, timeoutDataName);\n\nconst purgeProcessedElements = elements => {\r\n\treturn elements.filter(element => !getWasProcessedData(element));\r\n};\r\n\r\nconst purgeOneElement = (elements, elementToPurge) => {\r\n\treturn elements.filter(element => element !== elementToPurge);\r\n};\n\nconst callbackIfSet = (callback, argument) => {\r\n\tif (callback) {\r\n\t\tcallback(argument);\r\n\t}\r\n};\n\nconst updateLoadingCount = (instance, plusMinus) => {\r\n\tinstance._loadingCount += plusMinus;\r\n\tif (instance._elements.length === 0 && instance._loadingCount === 0) {\r\n\t\tcallbackIfSet(instance._settings.callback_finish);\r\n\t}\r\n};\n\nconst getSourceTags = parentTag => {\r\n\tlet sourceTags = [];\r\n\tfor (let i = 0, childTag; (childTag = parentTag.children[i]); i += 1) {\r\n\t\tif (childTag.tagName === \"SOURCE\") {\r\n\t\t\tsourceTags.push(childTag);\r\n\t\t}\r\n\t}\r\n\treturn sourceTags;\r\n};\r\n\r\nconst setAttributeIfValue = (element, attrName, value) => {\r\n\tif (!value) {\r\n\t\treturn;\r\n\t}\r\n\telement.setAttribute(attrName, value);\r\n};\r\n\r\nconst setImageAttributes = (element, settings) => {\r\n\tsetAttributeIfValue(\r\n\t\telement,\r\n\t\t\"sizes\",\r\n\t\tgetData(element, settings.data_sizes)\r\n\t);\r\n\tsetAttributeIfValue(\r\n\t\telement,\r\n\t\t\"srcset\",\r\n\t\tgetData(element, settings.data_srcset)\r\n\t);\r\n\tsetAttributeIfValue(element, \"src\", getData(element, settings.data_src));\r\n};\r\n\r\nconst setSourcesImg = (element, settings) => {\r\n\tconst parent = element.parentNode;\r\n\r\n\tif (parent && parent.tagName === \"PICTURE\") {\r\n\t\tlet sourceTags = getSourceTags(parent);\r\n\t\tsourceTags.forEach(sourceTag => {\r\n\t\t\tsetImageAttributes(sourceTag, settings);\r\n\t\t});\r\n\t}\r\n\r\n\tsetImageAttributes(element, settings);\r\n};\r\n\r\nconst setSourcesIframe = (element, settings) => {\r\n\tsetAttributeIfValue(element, \"src\", getData(element, settings.data_src));\r\n};\r\n\r\nconst setSourcesVideo = (element, settings) => {\r\n\tlet sourceTags = getSourceTags(element);\r\n\tsourceTags.forEach(sourceTag => {\r\n\t\tsetAttributeIfValue(\r\n\t\t\tsourceTag,\r\n\t\t\t\"src\",\r\n\t\t\tgetData(sourceTag, settings.data_src)\r\n\t\t);\r\n\t});\r\n\tsetAttributeIfValue(element, \"src\", getData(element, settings.data_src));\r\n\telement.load();\r\n};\r\n\r\nconst setSourcesBgImage = (element, settings) => {\r\n\tconst srcDataValue = getData(element, settings.data_src);\r\n\tconst bgDataValue = getData(element, settings.data_bg);\r\n\r\n\tif (srcDataValue) {\r\n\t\telement.style.backgroundImage = `url(\"${srcDataValue}\")`;\r\n\t}\r\n\r\n\tif (bgDataValue) {\r\n\t\telement.style.backgroundImage = bgDataValue;\r\n\t}\r\n};\r\n\r\nconst setSourcesFunctions = {\r\n\tIMG: setSourcesImg,\r\n\tIFRAME: setSourcesIframe,\r\n\tVIDEO: setSourcesVideo\r\n};\r\n\r\nconst setSources = (element, instance) => {\r\n\tconst settings = instance._settings;\r\n\tconst tagName = element.tagName;\r\n\tconst setSourcesFunction = setSourcesFunctions[tagName];\r\n\tif (setSourcesFunction) {\r\n\t\tsetSourcesFunction(element, settings);\r\n\t\tupdateLoadingCount(instance, 1);\r\n\t\tinstance._elements = purgeOneElement(instance._elements, element);\r\n\t\treturn;\r\n\t}\r\n\tsetSourcesBgImage(element, settings);\r\n};\n\nconst addClass = (element, className) => {\r\n\tif (supportsClassList) {\r\n\t\telement.classList.add(className);\r\n\t\treturn;\r\n\t}\r\n\telement.className += (element.className ? \" \" : \"\") + className;\r\n};\r\n\r\nconst removeClass = (element, className) => {\r\n\tif (supportsClassList) {\r\n\t\telement.classList.remove(className);\r\n\t\treturn;\r\n\t}\r\n\telement.className = element.className.\r\n\t\treplace(new RegExp(\"(^|\\\\s+)\" + className + \"(\\\\s+|$)\"), \" \").\r\n\t\treplace(/^\\s+/, \"\").\r\n\t\treplace(/\\s+$/, \"\");\r\n};\n\nconst genericLoadEventName = \"load\";\r\nconst mediaLoadEventName = \"loadeddata\";\r\nconst errorEventName = \"error\";\r\n\r\nconst addEventListener = (element, eventName, handler) => {\r\n\telement.addEventListener(eventName, handler);\r\n};\r\n\r\nconst removeEventListener = (element, eventName, handler) => {\r\n\telement.removeEventListener(eventName, handler);\r\n};\r\n\r\nconst addEventListeners = (element, loadHandler, errorHandler) => {\r\n\taddEventListener(element, genericLoadEventName, loadHandler);\r\n\taddEventListener(element, mediaLoadEventName, loadHandler);\r\n\taddEventListener(element, errorEventName, errorHandler);\r\n};\r\n\r\nconst removeEventListeners = (element, loadHandler, errorHandler) => {\r\n\tremoveEventListener(element, genericLoadEventName, loadHandler);\r\n\tremoveEventListener(element, mediaLoadEventName, loadHandler);\r\n\tremoveEventListener(element, errorEventName, errorHandler);\r\n};\r\n\r\nconst eventHandler = function(event, success, instance) {\r\n\tvar settings = instance._settings;\r\n\tconst className = success ? settings.class_loaded : settings.class_error;\r\n\tconst callback = success\r\n\t\t? settings.callback_loaded\r\n\t\t: settings.callback_error;\r\n\tconst element = event.target;\r\n\r\n\tremoveClass(element, settings.class_loading);\r\n\taddClass(element, className);\r\n\tcallbackIfSet(callback, element);\r\n\r\n\tupdateLoadingCount(instance, -1);\r\n};\r\n\r\nconst addOneShotEventListeners = (element, instance) => {\r\n\tconst loadHandler = event => {\r\n\t\teventHandler(event, true, instance);\r\n\t\tremoveEventListeners(element, loadHandler, errorHandler);\r\n\t};\r\n\tconst errorHandler = event => {\r\n\t\teventHandler(event, false, instance);\r\n\t\tremoveEventListeners(element, loadHandler, errorHandler);\r\n\t};\r\n\taddEventListeners(element, loadHandler, errorHandler);\r\n};\n\nconst managedTags = [\"IMG\", \"IFRAME\", \"VIDEO\"];\r\n\r\nconst onEnter = (element, instance) => {\r\n\tconst settings = instance._settings;\r\n\tcallbackIfSet(settings.callback_enter, element);\r\n\tif (!settings.load_delay) {\r\n\t\trevealAndUnobserve(element, instance);\r\n\t\treturn;\r\n\t}\r\n\tdelayLoad(element, instance);\r\n};\r\n\r\nconst revealAndUnobserve = (element, instance) => {\r\n\tvar observer = instance._observer;\r\n\trevealElement(element, instance);\r\n\tif (observer && instance._settings.auto_unobserve) {\r\n\t\tobserver.unobserve(element);\r\n\t}\r\n};\r\n\r\nconst onExit = (element, instance) => {\r\n\tconst settings = instance._settings;\r\n\tcallbackIfSet(settings.callback_exit, element);\r\n\tif (!settings.load_delay) {\r\n\t\treturn;\r\n\t}\r\n\tcancelDelayLoad(element);\r\n};\r\n\r\nconst cancelDelayLoad = element => {\r\n\tvar timeoutId = getTimeoutData(element);\r\n\tif (!timeoutId) {\r\n\t\treturn; // do nothing if timeout doesn't exist\r\n\t}\r\n\tclearTimeout(timeoutId);\r\n\tsetTimeoutData(element, null);\r\n};\r\n\r\nconst delayLoad = (element, instance) => {\r\n\tvar loadDelay = instance._settings.load_delay;\r\n\tvar timeoutId = getTimeoutData(element);\r\n\tif (timeoutId) {\r\n\t\treturn; // do nothing if timeout already set\r\n\t}\r\n\ttimeoutId = setTimeout(function() {\r\n\t\trevealAndUnobserve(element, instance);\r\n\t\tcancelDelayLoad(element);\r\n\t}, loadDelay);\r\n\tsetTimeoutData(element, timeoutId);\r\n};\r\n\r\nconst revealElement = (element, instance, force) => {\r\n\tvar settings = instance._settings;\r\n\tif (!force && getWasProcessedData(element)) {\r\n\t\treturn; // element has already been processed and force wasn't true\r\n\t}\r\n\tif (managedTags.indexOf(element.tagName) > -1) {\r\n\t\taddOneShotEventListeners(element, instance);\r\n\t\taddClass(element, settings.class_loading);\r\n\t}\r\n\tsetSources(element, instance);\r\n\tsetWasProcessedData(element);\r\n\tcallbackIfSet(settings.callback_reveal, element);\r\n\tcallbackIfSet(settings.callback_set, element);\r\n};\n\nconst isIntersecting = entry =>\r\n\tentry.isIntersecting || entry.intersectionRatio > 0;\r\n\r\nconst getObserverSettings = settings => ({\r\n\troot: settings.container === document ? null : settings.container,\r\n\trootMargin: settings.thresholds || settings.threshold + \"px\"\r\n});\r\n\r\nconst setObserver = instance => {\r\n\tif (!supportsIntersectionObserver) {\r\n\t\treturn false;\r\n\t}\r\n\tinstance._observer = new IntersectionObserver(entries => {\r\n\t\tentries.forEach(entry =>\r\n\t\t\tisIntersecting(entry)\r\n\t\t\t\t? onEnter(entry.target, instance)\r\n\t\t\t\t: onExit(entry.target, instance)\r\n\t\t);\r\n\t}, getObserverSettings(instance._settings));\r\n\treturn true;\r\n};\n\nconst nativeLazyTags = [\"IMG\", \"IFRAME\"];\r\n\r\nconst shouldUseNative = settings =>\r\n\tsettings.use_native && \"loading\" in HTMLImageElement.prototype;\r\n\r\nconst loadAllNative = instance => {\r\n\tinstance._elements.forEach(element => {\r\n\t\tif (nativeLazyTags.indexOf(element.tagName) === -1) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\telement.setAttribute(\"loading\", \"lazy\");\r\n\t\trevealElement(element, instance);\r\n\t});\r\n};\n\nconst nodeSetToArray = nodeSet => Array.prototype.slice.call(nodeSet);\n\nconst queryElements = settings =>\r\n\tsettings.container.querySelectorAll(settings.elements_selector);\r\n\r\nconst getElements = (elements, settings) =>\r\n\tpurgeProcessedElements(nodeSetToArray(elements || queryElements(settings)));\n\nconst LazyLoad = function(customSettings, elements) {\r\n\tthis._settings = getInstanceSettings(customSettings);\r\n\tthis._loadingCount = 0;\r\n\tsetObserver(this);\r\n\tthis.update(elements);\r\n};\r\n\r\nLazyLoad.prototype = {\r\n\tupdate: function(elements) {\r\n\t\tvar settings = this._settings;\r\n\t\tthis._elements = getElements(elements, settings);\r\n\t\tif (isBot || !this._observer) {\r\n\t\t\tthis.loadAll();\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (shouldUseNative(settings)) {\r\n\t\t\tloadAllNative(this);\r\n\t\t\tthis._elements = getElements(elements, settings);\r\n\t\t}\r\n\t\tthis._elements.forEach(element => {\r\n\t\t\tthis._observer.observe(element);\r\n\t\t});\r\n\t},\r\n\r\n\tdestroy: function() {\r\n\t\tif (this._observer) {\r\n\t\t\tthis._elements.forEach(element => {\r\n\t\t\t\tthis._observer.unobserve(element);\r\n\t\t\t});\r\n\t\t\tthis._observer = null;\r\n\t\t}\r\n\t\tthis._elements = null;\r\n\t\tthis._settings = null;\r\n\t},\r\n\r\n\tload: function(element, force) {\r\n\t\trevealElement(element, this, force);\r\n\t},\r\n\r\n\tloadAll: function() {\r\n\t\tthis._elements.forEach(element => {\r\n\t\t\trevealAndUnobserve(element, this);\r\n\t\t});\r\n\t}\r\n};\r\n\r\n/* Automatic instances creation if required (useful for async script loading) */\r\nif (runningOnBrowser) {\r\n\tautoInitialize(LazyLoad, window.lazyLoadOptions);\r\n}\n\nreturn LazyLoad;\n\n})));\n"]} \ No newline at end of file diff --git a/wp-content/plugins/wp-rocket/assets/js/lazyload/16.1/lazyload.js b/wp-content/plugins/wp-rocket/assets/js/lazyload/16.1/lazyload.js new file mode 100644 index 0000000..e0d495a --- /dev/null +++ b/wp-content/plugins/wp-rocket/assets/js/lazyload/16.1/lazyload.js @@ -0,0 +1,733 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global = global || self, global.LazyLoad = factory()); +}(this, (function () { 'use strict'; + + function _extends() { + _extends = Object.assign || function (target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + + return target; + }; + + return _extends.apply(this, arguments); + } + + var runningOnBrowser = typeof window !== "undefined"; + var isBot = runningOnBrowser && !("onscroll" in window) || typeof navigator !== "undefined" && /(gle|ing|ro)bot|crawl|spider/i.test(navigator.userAgent); + var supportsIntersectionObserver = runningOnBrowser && "IntersectionObserver" in window; + var supportsClassList = runningOnBrowser && "classList" in document.createElement("p"); + var isHiDpi = runningOnBrowser && window.devicePixelRatio > 1; + + var defaultSettings = { + elements_selector: "IMG", + container: isBot || runningOnBrowser ? document : null, + threshold: 300, + thresholds: null, + data_src: "src", + data_srcset: "srcset", + data_sizes: "sizes", + data_bg: "bg", + data_bg_hidpi: "bg-hidpi", + data_bg_multi: "bg-multi", + data_bg_multi_hidpi: "bg-multi-hidpi", + data_poster: "poster", + class_applied: "applied", + class_loading: "loading", + class_loaded: "loaded", + class_error: "error", + unobserve_completed: true, + unobserve_entered: false, + cancel_on_exit: false, + callback_enter: null, + callback_exit: null, + callback_applied: null, + callback_loading: null, + callback_loaded: null, + callback_error: null, + callback_finish: null, + callback_cancel: null, + use_native: false + }; + var getExtendedSettings = function getExtendedSettings(customSettings) { + return _extends({}, defaultSettings, customSettings); + }; + + /* Creates instance and notifies it through the window element */ + var createInstance = function createInstance(classObj, options) { + var event; + var eventString = "LazyLoad::Initialized"; + var instance = new classObj(options); + + try { + // Works in modern browsers + event = new CustomEvent(eventString, { + detail: { + instance: instance + } + }); + } catch (err) { + // Works in Internet Explorer (all versions) + event = document.createEvent("CustomEvent"); + event.initCustomEvent(eventString, false, false, { + instance: instance + }); + } + + window.dispatchEvent(event); + }; + /* Auto initialization of one or more instances of lazyload, depending on the + options passed in (plain object or an array) */ + + + var autoInitialize = function autoInitialize(classObj, options) { + if (!options) { + return; + } + + if (!options.length) { + // Plain object + createInstance(classObj, options); + } else { + // Array of objects + for (var i = 0, optionsItem; optionsItem = options[i]; i += 1) { + createInstance(classObj, optionsItem); + } + } + }; + + var statusLoading = "loading"; + var statusLoaded = "loaded"; + var statusApplied = "applied"; + var statusError = "error"; + var statusNative = "native"; + + var dataPrefix = "data-"; + var statusDataName = "ll-status"; + var getData = function getData(element, attribute) { + return element.getAttribute(dataPrefix + attribute); + }; + var setData = function setData(element, attribute, value) { + var attrName = dataPrefix + attribute; + + if (value === null) { + element.removeAttribute(attrName); + return; + } + + element.setAttribute(attrName, value); + }; + var getStatus = function getStatus(element) { + return getData(element, statusDataName); + }; + var setStatus = function setStatus(element, status) { + return setData(element, statusDataName, status); + }; + var resetStatus = function resetStatus(element) { + return setStatus(element, null); + }; + var hasEmptyStatus = function hasEmptyStatus(element) { + return getStatus(element) === null; + }; + var hasStatusLoading = function hasStatusLoading(element) { + return getStatus(element) === statusLoading; + }; + var hasStatusError = function hasStatusError(element) { + return getStatus(element) === statusError; + }; + var hasStatusNative = function hasStatusNative(element) { + return getStatus(element) === statusNative; + }; + var hadStartedLoading = function hadStartedLoading(element) { + return !hasEmptyStatus(element); + }; + + var safeCallback = function safeCallback(callback, arg1, arg2, arg3) { + if (!callback) { + return; + } + + if (arg3 !== undefined) { + callback(arg1, arg2, arg3); + return; + } + + if (arg2 !== undefined) { + callback(arg1, arg2); + return; + } + + callback(arg1); + }; + + var addClass = function addClass(element, className) { + if (supportsClassList) { + element.classList.add(className); + return; + } + + element.className += (element.className ? " " : "") + className; + }; + var removeClass = function removeClass(element, className) { + if (supportsClassList) { + element.classList.remove(className); + return; + } + + element.className = element.className.replace(new RegExp("(^|\\s+)" + className + "(\\s+|$)"), " ").replace(/^\s+/, "").replace(/\s+$/, ""); + }; + + var addTempImage = function addTempImage(element) { + element.llTempImage = document.createElement("IMG"); + }; + var deleteTempImage = function deleteTempImage(element) { + delete element.llTempImage; + }; + var getTempImage = function getTempImage(element) { + return element.llTempImage; + }; + + var unobserve = function unobserve(element, instance) { + if (!instance) return; + var observer = instance._observer; + if (!observer) return; + observer.unobserve(element); + }; + var resetObserver = function resetObserver(observer) { + observer.disconnect(); + }; + var unobserveIfRequired = function unobserveIfRequired(element, settings, instance) { + if (settings.unobserve_entered) unobserve(element, instance); + }; + + var updateLoadingCount = function updateLoadingCount(instance, delta) { + if (!instance) return; + instance.loadingCount += delta; + }; + var decreaseToLoadCount = function decreaseToLoadCount(instance) { + if (!instance) return; + instance.toLoadCount -= 1; + }; + var setToLoadCount = function setToLoadCount(instance, value) { + if (!instance) return; + instance.toLoadCount = value; + }; + var isSomethingLoading = function isSomethingLoading(instance) { + return instance.loadingCount > 0; + }; + var haveElementsToLoad = function haveElementsToLoad(instance) { + return instance.toLoadCount > 0; + }; + + var getSourceTags = function getSourceTags(parentTag) { + var sourceTags = []; + + for (var i = 0, childTag; childTag = parentTag.children[i]; i += 1) { + if (childTag.tagName === "SOURCE") { + sourceTags.push(childTag); + } + } + + return sourceTags; + }; + var setAttributeIfValue = function setAttributeIfValue(element, attrName, value) { + if (!value) { + return; + } + + element.setAttribute(attrName, value); + }; + var resetAttribute = function resetAttribute(element, attrName) { + element.removeAttribute(attrName); + }; + var hasOriginalAttributes = function hasOriginalAttributes(element) { + return !!element.llOriginalAttrs; + }; + var saveOriginalImageAttributes = function saveOriginalImageAttributes(element) { + if (hasOriginalAttributes(element)) { + return; + } + + var originalAttributes = {}; + originalAttributes["src"] = element.getAttribute("src"); + originalAttributes["srcset"] = element.getAttribute("srcset"); + originalAttributes["sizes"] = element.getAttribute("sizes"); + element.llOriginalAttrs = originalAttributes; + }; + var restoreOriginalImageAttributes = function restoreOriginalImageAttributes(element) { + if (!hasOriginalAttributes(element)) { + return; + } + + var originalAttributes = element.llOriginalAttrs; + setAttributeIfValue(element, "src", originalAttributes["src"]); + setAttributeIfValue(element, "srcset", originalAttributes["srcset"]); + setAttributeIfValue(element, "sizes", originalAttributes["sizes"]); + }; + var setImageAttributes = function setImageAttributes(element, settings) { + setAttributeIfValue(element, "sizes", getData(element, settings.data_sizes)); + setAttributeIfValue(element, "srcset", getData(element, settings.data_srcset)); + setAttributeIfValue(element, "src", getData(element, settings.data_src)); + }; + var resetImageAttributes = function resetImageAttributes(element) { + resetAttribute(element, "src"); + resetAttribute(element, "srcset"); + resetAttribute(element, "sizes"); + }; + var forEachPictureSource = function forEachPictureSource(element, fn) { + var parent = element.parentNode; + + if (!parent || parent.tagName !== "PICTURE") { + return; + } + + var sourceTags = getSourceTags(parent); + sourceTags.forEach(fn); + }; + var forEachVideoSource = function forEachVideoSource(element, fn) { + var sourceTags = getSourceTags(element); + sourceTags.forEach(fn); + }; + var restoreOriginalAttributesImg = function restoreOriginalAttributesImg(element) { + forEachPictureSource(element, function (sourceTag) { + restoreOriginalImageAttributes(sourceTag); + }); + restoreOriginalImageAttributes(element); + }; + var setSourcesImg = function setSourcesImg(element, settings) { + forEachPictureSource(element, function (sourceTag) { + saveOriginalImageAttributes(sourceTag); + setImageAttributes(sourceTag, settings); + }); + saveOriginalImageAttributes(element); + setImageAttributes(element, settings); + }; + var resetSourcesImg = function resetSourcesImg(element) { + forEachPictureSource(element, function (sourceTag) { + resetImageAttributes(sourceTag); + }); + resetImageAttributes(element); + }; + var setSourcesIframe = function setSourcesIframe(element, settings) { + setAttributeIfValue(element, "src", getData(element, settings.data_src)); + }; + var setSourcesVideo = function setSourcesVideo(element, settings) { + forEachVideoSource(element, function (sourceTag) { + setAttributeIfValue(sourceTag, "src", getData(sourceTag, settings.data_src)); + }); + setAttributeIfValue(element, "poster", getData(element, settings.data_poster)); + setAttributeIfValue(element, "src", getData(element, settings.data_src)); + element.load(); + }; + var setSourcesFunctions = { + IMG: setSourcesImg, + IFRAME: setSourcesIframe, + VIDEO: setSourcesVideo + }; + var setBackground = function setBackground(element, settings, instance) { + var bg1xValue = getData(element, settings.data_bg); + var bgHiDpiValue = getData(element, settings.data_bg_hidpi); + var bgDataValue = isHiDpi && bgHiDpiValue ? bgHiDpiValue : bg1xValue; + if (!bgDataValue) return; + element.style.backgroundImage = "url(\"".concat(bgDataValue, "\")"); + getTempImage(element).setAttribute("src", bgDataValue); + manageLoading(element, settings, instance); + }; // NOTE: THE TEMP IMAGE TRICK CANNOT BE DONE WITH data-multi-bg + // BECAUSE INSIDE ITS VALUES MUST BE WRAPPED WITH URL() AND ONE OF THEM + // COULD BE A GRADIENT BACKGROUND IMAGE + + var setMultiBackground = function setMultiBackground(element, settings, instance) { + var bg1xValue = getData(element, settings.data_bg_multi); + var bgHiDpiValue = getData(element, settings.data_bg_multi_hidpi); + var bgDataValue = isHiDpi && bgHiDpiValue ? bgHiDpiValue : bg1xValue; + + if (!bgDataValue) { + return; + } + + element.style.backgroundImage = bgDataValue; + manageApplied(element, settings, instance); + }; + var setSources = function setSources(element, settings) { + var setSourcesFunction = setSourcesFunctions[element.tagName]; + + if (!setSourcesFunction) { + return; + } + + setSourcesFunction(element, settings); + }; + var manageApplied = function manageApplied(element, settings, instance) { + addClass(element, settings.class_applied); + setStatus(element, statusApplied); + removeDataMultiBackground(element, settings); + + if (settings.unobserve_completed) { + // Unobserve now because we can't do it on load + unobserve(element, settings); + } + + safeCallback(settings.callback_applied, element, instance); + }; + var manageLoading = function manageLoading(element, settings, instance) { + updateLoadingCount(instance, +1); + addClass(element, settings.class_loading); + setStatus(element, statusLoading); + safeCallback(settings.callback_loading, element, instance); + }; // REMOVE DATA ATTRIBUTES -------------- + + var removeDataImg = function removeDataImg(element, settings) { + setData(element, settings.data_src, null); + setData(element, settings.data_srcset, null); + setData(element, settings.data_sizes, null); + forEachPictureSource(element, function (sourceTag) { + setData(sourceTag, settings.data_srcset, null); + setData(sourceTag, settings.data_sizes, null); + }); + }; + var removeDataIframe = function removeDataIframe(element, settings) { + setData(element, settings.data_src, null); + }; + var removeDataVideo = function removeDataVideo(element, settings) { + setData(element, settings.data_src, null); + setData(element, settings.data_poster, null); + forEachVideoSource(element, function (sourceTag) { + setData(sourceTag, settings.data_src, null); + }); + }; + var removeDataFunctions = { + IMG: removeDataImg, + IFRAME: removeDataIframe, + VIDEO: removeDataVideo + }; + var removeDataBackground = function removeDataBackground(element, settings) { + setData(element, settings.data_bg, null); + setData(element, settings.data_bg_hidpi, null); + }; + var removeDataMultiBackground = function removeDataMultiBackground(element, settings) { + setData(element, settings.data_bg_multi, null); + setData(element, settings.data_bg_multi_hidpi, null); + }; + var removeDataAttributes = function removeDataAttributes(element, settings) { + var removeDataFunction = removeDataFunctions[element.tagName]; + + if (removeDataFunction) { + removeDataFunction(element, settings); + return; + } + + removeDataBackground(element, settings); + }; + + var elementsWithLoadEvent = ["IMG", "IFRAME", "VIDEO"]; + var hasLoadEvent = function hasLoadEvent(element) { + return elementsWithLoadEvent.indexOf(element.tagName) > -1; + }; + var checkFinish = function checkFinish(settings, instance) { + if (instance && !isSomethingLoading(instance) && !haveElementsToLoad(instance)) { + safeCallback(settings.callback_finish, instance); + } + }; + var addEventListener = function addEventListener(element, eventName, handler) { + element.addEventListener(eventName, handler); + element.llEvLisnrs[eventName] = handler; + }; + var removeEventListener = function removeEventListener(element, eventName, handler) { + element.removeEventListener(eventName, handler); + }; + var hasEventListeners = function hasEventListeners(element) { + return !!element.llEvLisnrs; + }; + var addEventListeners = function addEventListeners(element, loadHandler, errorHandler) { + if (!hasEventListeners(element)) element.llEvLisnrs = {}; + var loadEventName = element.tagName === "VIDEO" ? "loadeddata" : "load"; + addEventListener(element, loadEventName, loadHandler); + addEventListener(element, "error", errorHandler); + }; + var removeEventListeners = function removeEventListeners(element) { + if (!hasEventListeners(element)) { + return; + } + + var eventListeners = element.llEvLisnrs; + + for (var eventName in eventListeners) { + var handler = eventListeners[eventName]; + removeEventListener(element, eventName, handler); + } + + delete element.llEvLisnrs; + }; + var doneHandler = function doneHandler(element, settings, instance) { + deleteTempImage(element); + updateLoadingCount(instance, -1); + decreaseToLoadCount(instance); + removeClass(element, settings.class_loading); + + if (settings.unobserve_completed) { + unobserve(element, instance); + } + }; + var loadHandler = function loadHandler(event, element, settings, instance) { + var goingNative = hasStatusNative(element); + doneHandler(element, settings, instance); + addClass(element, settings.class_loaded); + setStatus(element, statusLoaded); + removeDataAttributes(element, settings); + safeCallback(settings.callback_loaded, element, instance); + if (!goingNative) checkFinish(settings, instance); + }; + var errorHandler = function errorHandler(event, element, settings, instance) { + var goingNative = hasStatusNative(element); + doneHandler(element, settings, instance); + addClass(element, settings.class_error); + setStatus(element, statusError); + safeCallback(settings.callback_error, element, instance); + if (!goingNative) checkFinish(settings, instance); + }; + var addOneShotEventListeners = function addOneShotEventListeners(element, settings, instance) { + var elementToListenTo = getTempImage(element) || element; + + if (hasEventListeners(elementToListenTo)) { + // This happens when loading is retried twice + return; + } + + var _loadHandler = function _loadHandler(event) { + loadHandler(event, element, settings, instance); + removeEventListeners(elementToListenTo); + }; + + var _errorHandler = function _errorHandler(event) { + errorHandler(event, element, settings, instance); + removeEventListeners(elementToListenTo); + }; + + addEventListeners(elementToListenTo, _loadHandler, _errorHandler); + }; + + var loadBackground = function loadBackground(element, settings, instance) { + addTempImage(element); + addOneShotEventListeners(element, settings, instance); + setBackground(element, settings, instance); + setMultiBackground(element, settings, instance); + }; + + var loadRegular = function loadRegular(element, settings, instance) { + addOneShotEventListeners(element, settings, instance); + setSources(element, settings); + manageLoading(element, settings, instance); + }; + + var load = function load(element, settings, instance) { + if (hasLoadEvent(element)) { + loadRegular(element, settings, instance); + } else { + loadBackground(element, settings, instance); + } + }; + var loadNative = function loadNative(element, settings, instance) { + addOneShotEventListeners(element, settings, instance); + setSources(element, settings); + removeDataAttributes(element, settings); + setStatus(element, statusNative); + }; + + var cancelLoadingIfRequired = function cancelLoadingIfRequired(element, entry, settings, instance) { + if (!settings.cancel_on_exit) return; + if (!hasStatusLoading(element)) return; + if (element.tagName !== "IMG") return; //Works only on images + + removeEventListeners(element); + resetSourcesImg(element); + restoreOriginalAttributesImg(element); + removeClass(element, settings.class_loading); + updateLoadingCount(instance, -1); + resetStatus(element); + safeCallback(settings.callback_cancel, element, entry, instance); + }; + + var onEnter = function onEnter(element, entry, settings, instance) { + safeCallback(settings.callback_enter, element, entry, instance); + unobserveIfRequired(element, settings, instance); + if (hadStartedLoading(element)) return; //Prevent loading it again + + load(element, settings, instance); + }; + var onExit = function onExit(element, entry, settings, instance) { + if (hasEmptyStatus(element)) return; //Ignore the first pass, at landing + + cancelLoadingIfRequired(element, entry, settings, instance); + safeCallback(settings.callback_exit, element, entry, instance); + }; + + var tagsWithNativeLazy = ["IMG", "IFRAME"]; + var shouldUseNative = function shouldUseNative(settings) { + return settings.use_native && "loading" in HTMLImageElement.prototype; + }; + var loadAllNative = function loadAllNative(elements, settings, instance) { + elements.forEach(function (element) { + if (tagsWithNativeLazy.indexOf(element.tagName) === -1) { + return; + } + + element.setAttribute("loading", "lazy"); //TODO: Move inside the loadNative method + + loadNative(element, settings, instance); + }); + setToLoadCount(instance, 0); + }; + + var isIntersecting = function isIntersecting(entry) { + return entry.isIntersecting || entry.intersectionRatio > 0; + }; + + var getObserverSettings = function getObserverSettings(settings) { + return { + root: settings.container === document ? null : settings.container, + rootMargin: settings.thresholds || settings.threshold + "px" + }; + }; + + var intersectionHandler = function intersectionHandler(entries, settings, instance) { + entries.forEach(function (entry) { + return isIntersecting(entry) ? onEnter(entry.target, entry, settings, instance) : onExit(entry.target, entry, settings, instance); + }); + }; + + var observeElements = function observeElements(observer, elements) { + elements.forEach(function (element) { + observer.observe(element); + }); + }; + var updateObserver = function updateObserver(observer, elementsToObserve) { + resetObserver(observer); + observeElements(observer, elementsToObserve); + }; + var setObserver = function setObserver(settings, instance) { + if (!supportsIntersectionObserver || shouldUseNative(settings)) { + return; + } + + instance._observer = new IntersectionObserver(function (entries) { + intersectionHandler(entries, settings, instance); + }, getObserverSettings(settings)); + }; + + var toArray = function toArray(nodeSet) { + return Array.prototype.slice.call(nodeSet); + }; + var queryElements = function queryElements(settings) { + return settings.container.querySelectorAll(settings.elements_selector); + }; + var excludeManagedElements = function excludeManagedElements(elements) { + return toArray(elements).filter(hasEmptyStatus); + }; + var hasError = function hasError(element) { + return hasStatusError(element); + }; + var filterErrorElements = function filterErrorElements(elements) { + return toArray(elements).filter(hasError); + }; + var getElementsToLoad = function getElementsToLoad(elements, settings) { + return excludeManagedElements(elements || queryElements(settings)); + }; + + var retryLazyLoad = function retryLazyLoad(settings, instance) { + var errorElements = filterErrorElements(queryElements(settings)); + errorElements.forEach(function (element) { + removeClass(element, settings.class_error); + resetStatus(element); + }); + instance.update(); + }; + var setOnlineCheck = function setOnlineCheck(settings, instance) { + if (!runningOnBrowser) { + return; + } + + window.addEventListener("online", function () { + retryLazyLoad(settings, instance); + }); + }; + + var LazyLoad = function LazyLoad(customSettings, elements) { + var settings = getExtendedSettings(customSettings); + this._settings = settings; + this.loadingCount = 0; + setObserver(settings, this); + setOnlineCheck(settings, this); + this.update(elements); + }; + + LazyLoad.prototype = { + update: function update(givenNodeset) { + var settings = this._settings; + var elementsToLoad = getElementsToLoad(givenNodeset, settings); + setToLoadCount(this, elementsToLoad.length); + + if (isBot || !supportsIntersectionObserver) { + this.loadAll(elementsToLoad); + return; + } + + if (shouldUseNative(settings)) { + loadAllNative(elementsToLoad, settings, this); + return; + } + + updateObserver(this._observer, elementsToLoad); + }, + destroy: function destroy() { + // Observer + if (this._observer) { + this._observer.disconnect(); + } // Clean custom attributes on elements + + + queryElements(this._settings).forEach(function (element) { + delete element.llOriginalAttrs; + }); // Delete all internal props + + delete this._observer; + delete this._settings; + delete this.loadingCount; + delete this.toLoadCount; + }, + loadAll: function loadAll(elements) { + var _this = this; + + var settings = this._settings; + var elementsToLoad = getElementsToLoad(elements, settings); + elementsToLoad.forEach(function (element) { + load(element, settings, _this); + }); + } + }; + + LazyLoad.load = function (element, customSettings) { + var settings = getExtendedSettings(customSettings); + load(element, settings); + }; + + LazyLoad.resetStatus = function (element) { + resetStatus(element); + }; // Automatic instances creation if required (useful for async script loading) + + + if (runningOnBrowser) { + autoInitialize(LazyLoad, window.lazyLoadOptions); + } + + return LazyLoad; + +}))); diff --git a/wp-content/plugins/wp-rocket/assets/js/lazyload/16.1/lazyload.min.js b/wp-content/plugins/wp-rocket/assets/js/lazyload/16.1/lazyload.min.js new file mode 100644 index 0000000..d4eee20 --- /dev/null +++ b/wp-content/plugins/wp-rocket/assets/js/lazyload/16.1/lazyload.min.js @@ -0,0 +1 @@ +!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(t=t||self).LazyLoad=n()}(this,(function(){"use strict";function t(){return(t=Object.assign||function(t){for(var n=1;n1,r={elements_selector:"IMG",container:e||n?document:null,threshold:300,thresholds:null,data_src:"src",data_srcset:"srcset",data_sizes:"sizes",data_bg:"bg",data_bg_hidpi:"bg-hidpi",data_bg_multi:"bg-multi",data_bg_multi_hidpi:"bg-multi-hidpi",data_poster:"poster",class_applied:"applied",class_loading:"loading",class_loaded:"loaded",class_error:"error",unobserve_completed:!0,unobserve_entered:!1,cancel_on_exit:!1,callback_enter:null,callback_exit:null,callback_applied:null,callback_loading:null,callback_loaded:null,callback_error:null,callback_finish:null,callback_cancel:null,use_native:!1},c=function(n){return t({},r,n)},l=function(t,n){var e,i=new t(n);try{e=new CustomEvent("LazyLoad::Initialized",{detail:{instance:i}})}catch(t){(e=document.createEvent("CustomEvent")).initCustomEvent("LazyLoad::Initialized",!1,!1,{instance:i})}window.dispatchEvent(e)},s=function(t,n){return t.getAttribute("data-"+n)},u=function(t,n,e){var i="data-"+n;null!==e?t.setAttribute(i,e):t.removeAttribute(i)},d=function(t){return s(t,"ll-status")},f=function(t,n){return u(t,"ll-status",n)},_=function(t){return f(t,null)},g=function(t){return null===d(t)},v=function(t){return"native"===d(t)},b=function(t,n,e,i){t&&(void 0===i?void 0===e?t(n):t(n,e):t(n,e,i))},p=function(t,n){a?t.classList.add(n):t.className+=(t.className?" ":"")+n},h=function(t,n){a?t.classList.remove(n):t.className=t.className.replace(new RegExp("(^|\\s+)"+n+"(\\s+|$)")," ").replace(/^\s+/,"").replace(/\s+$/,"")},m=function(t){return t.llTempImage},E=function(t,n){if(n){var e=n._observer;e&&e.unobserve(t)}},I=function(t,n){t&&(t.loadingCount+=n)},A=function(t,n){t&&(t.toLoadCount=n)},L=function(t){for(var n,e=[],i=0;n=t.children[i];i+=1)"SOURCE"===n.tagName&&e.push(n);return e},y=function(t,n,e){e&&t.setAttribute(n,e)},w=function(t,n){t.removeAttribute(n)},k=function(t){return!!t.llOriginalAttrs},z=function(t){if(!k(t)){var n={};n.src=t.getAttribute("src"),n.srcset=t.getAttribute("srcset"),n.sizes=t.getAttribute("sizes"),t.llOriginalAttrs=n}},O=function(t){if(k(t)){var n=t.llOriginalAttrs;y(t,"src",n.src),y(t,"srcset",n.srcset),y(t,"sizes",n.sizes)}},C=function(t,n){y(t,"sizes",s(t,n.data_sizes)),y(t,"srcset",s(t,n.data_srcset)),y(t,"src",s(t,n.data_src))},M=function(t){w(t,"src"),w(t,"srcset"),w(t,"sizes")},N=function(t,n){var e=t.parentNode;e&&"PICTURE"===e.tagName&&L(e).forEach(n)},x=function(t,n){L(t).forEach(n)},R={IMG:function(t,n){N(t,(function(t){z(t),C(t,n)})),z(t),C(t,n)},IFRAME:function(t,n){y(t,"src",s(t,n.data_src))},VIDEO:function(t,n){x(t,(function(t){y(t,"src",s(t,n.data_src))})),y(t,"poster",s(t,n.data_poster)),y(t,"src",s(t,n.data_src)),t.load()}},G=function(t,n){var e=R[t.tagName];e&&e(t,n)},T=function(t,n,e){I(e,1),p(t,n.class_loading),f(t,"loading"),b(n.callback_loading,t,e)},D={IMG:function(t,n){u(t,n.data_src,null),u(t,n.data_srcset,null),u(t,n.data_sizes,null),N(t,(function(t){u(t,n.data_srcset,null),u(t,n.data_sizes,null)}))},IFRAME:function(t,n){u(t,n.data_src,null)},VIDEO:function(t,n){u(t,n.data_src,null),u(t,n.data_poster,null),x(t,(function(t){u(t,n.data_src,null)}))}},F=function(t,n){u(t,n.data_bg_multi,null),u(t,n.data_bg_multi_hidpi,null)},V=function(t,n){var e=D[t.tagName];e?e(t,n):function(t,n){u(t,n.data_bg,null),u(t,n.data_bg_hidpi,null)}(t,n)},j=["IMG","IFRAME","VIDEO"],P=function(t,n){!n||function(t){return t.loadingCount>0}(n)||function(t){return t.toLoadCount>0}(n)||b(t.callback_finish,n)},S=function(t,n,e){t.addEventListener(n,e),t.llEvLisnrs[n]=e},U=function(t,n,e){t.removeEventListener(n,e)},$=function(t){return!!t.llEvLisnrs},q=function(t){if($(t)){var n=t.llEvLisnrs;for(var e in n){var i=n[e];U(t,e,i)}delete t.llEvLisnrs}},H=function(t,n,e){!function(t){delete t.llTempImage}(t),I(e,-1),function(t){t&&(t.toLoadCount-=1)}(e),h(t,n.class_loading),n.unobserve_completed&&E(t,e)},B=function(t,n,e){var i=m(t)||t;$(i)||function(t,n,e){$(t)||(t.llEvLisnrs={});var i="VIDEO"===t.tagName?"loadeddata":"load";S(t,i,n),S(t,"error",e)}(i,(function(a){!function(t,n,e,i){var a=v(n);H(n,e,i),p(n,e.class_loaded),f(n,"loaded"),V(n,e),b(e.callback_loaded,n,i),a||P(e,i)}(0,t,n,e),q(i)}),(function(a){!function(t,n,e,i){var a=v(n);H(n,e,i),p(n,e.class_error),f(n,"error"),b(e.callback_error,n,i),a||P(e,i)}(0,t,n,e),q(i)}))},J=function(t,n,e){!function(t){t.llTempImage=document.createElement("IMG")}(t),B(t,n,e),function(t,n,e){var i=s(t,n.data_bg),a=s(t,n.data_bg_hidpi),r=o&&a?a:i;r&&(t.style.backgroundImage='url("'.concat(r,'")'),m(t).setAttribute("src",r),T(t,n,e))}(t,n,e),function(t,n,e){var i=s(t,n.data_bg_multi),a=s(t,n.data_bg_multi_hidpi),r=o&&a?a:i;r&&(t.style.backgroundImage=r,function(t,n,e){p(t,n.class_applied),f(t,"applied"),F(t,n),n.unobserve_completed&&E(t,n),b(n.callback_applied,t,e)}(t,n,e))}(t,n,e)},K=function(t,n,e){!function(t){return j.indexOf(t.tagName)>-1}(t)?J(t,n,e):function(t,n,e){B(t,n,e),G(t,n),T(t,n,e)}(t,n,e)},Q=["IMG","IFRAME"],W=function(t){return t.use_native&&"loading"in HTMLImageElement.prototype},X=function(t,n,e){t.forEach((function(t){return function(t){return t.isIntersecting||t.intersectionRatio>0}(t)?function(t,n,e,i){b(e.callback_enter,t,n,i),function(t,n,e){n.unobserve_entered&&E(t,e)}(t,e,i),function(t){return!g(t)}(t)||K(t,e,i)}(t.target,t,n,e):function(t,n,e,i){g(t)||(function(t,n,e,i){e.cancel_on_exit&&function(t){return"loading"===d(t)}(t)&&"IMG"===t.tagName&&(q(t),function(t){N(t,(function(t){M(t)})),M(t)}(t),function(t){N(t,(function(t){O(t)})),O(t)}(t),h(t,e.class_loading),I(i,-1),_(t),b(e.callback_cancel,t,n,i))}(t,n,e,i),b(e.callback_exit,t,n,i))}(t.target,t,n,e)}))},Y=function(t){return Array.prototype.slice.call(t)},Z=function(t){return t.container.querySelectorAll(t.elements_selector)},tt=function(t){return function(t){return"error"===d(t)}(t)},nt=function(t,n){return function(t){return Y(t).filter(g)}(t||Z(n))},et=function(t,e){var a=c(t);this._settings=a,this.loadingCount=0,function(t,n){i&&!W(t)&&(n._observer=new IntersectionObserver((function(e){X(e,t,n)}),function(t){return{root:t.container===document?null:t.container,rootMargin:t.thresholds||t.threshold+"px"}}(t)))}(a,this),function(t,e){n&&window.addEventListener("online",(function(){!function(t,n){var e;(e=Z(t),Y(e).filter(tt)).forEach((function(n){h(n,t.class_error),_(n)})),n.update()}(t,e)}))}(a,this),this.update(e)};return et.prototype={update:function(t){var n,a,o=this._settings,r=nt(t,o);A(this,r.length),!e&&i?W(o)?function(t,n,e){t.forEach((function(t){-1!==Q.indexOf(t.tagName)&&(t.setAttribute("loading","lazy"),function(t,n,e){B(t,n,e),G(t,n),V(t,n),f(t,"native")}(t,n,e))})),A(e,0)}(r,o,this):(a=r,function(t){t.disconnect()}(n=this._observer),function(t,n){n.forEach((function(n){t.observe(n)}))}(n,a)):this.loadAll(r)},destroy:function(){this._observer&&this._observer.disconnect(),Z(this._settings).forEach((function(t){delete t.llOriginalAttrs})),delete this._observer,delete this._settings,delete this.loadingCount,delete this.toLoadCount},loadAll:function(t){var n=this,e=this._settings;nt(t,e).forEach((function(t){K(t,e,n)}))}},et.load=function(t,n){var e=c(n);K(t,e)},et.resetStatus=function(t){_(t)},n&&function(t,n){if(n)if(n.length)for(var e,i=0;e=n[i];i+=1)l(t,e);else l(t,n)}(et,window.lazyLoadOptions),et})); diff --git a/wp-content/plugins/wp-rocket/assets/js/micromodal.min.js b/wp-content/plugins/wp-rocket/assets/js/micromodal.min.js new file mode 100644 index 0000000..02ee010 --- /dev/null +++ b/wp-content/plugins/wp-rocket/assets/js/micromodal.min.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).MicroModal=t()}(this,function(){"use strict";return(()=>{const e=["a[href]","area[href]",'input:not([disabled]):not([type="hidden"]):not([aria-hidden])',"select:not([disabled]):not([aria-hidden])","textarea:not([disabled]):not([aria-hidden])","button:not([disabled]):not([aria-hidden])","iframe","object","embed","[contenteditable]",'[tabindex]:not([tabindex^="-"])'];class t{constructor({targetModal:e,triggers:t=[],onShow:o=(()=>{}),onClose:i=(()=>{}),openTrigger:n="data-micromodal-trigger",closeTrigger:s="data-micromodal-close",disableScroll:a=!1,disableFocus:l=!1,awaitCloseAnimation:d=!1,awaitOpenAnimation:r=!1,debugMode:c=!1}){this.modal=document.getElementById(e),this.config={debugMode:c,disableScroll:a,openTrigger:n,closeTrigger:s,onShow:o,onClose:i,awaitCloseAnimation:d,awaitOpenAnimation:r,disableFocus:l},t.length>0&&this.registerTriggers(...t),this.onClick=this.onClick.bind(this),this.onKeydown=this.onKeydown.bind(this)}registerTriggers(...e){e.filter(Boolean).forEach(e=>{e.addEventListener("click",e=>this.showModal(e))})}showModal(){if(this.activeElement=document.activeElement,this.modal.setAttribute("aria-hidden","false"),this.modal.classList.add("is-open"),this.scrollBehaviour("disable"),this.addEventListeners(),this.config.awaitOpenAnimation){const e=()=>{this.modal.removeEventListener("animationend",e,!1),this.setFocusToFirstNode()};this.modal.addEventListener("animationend",e,!1)}else this.setFocusToFirstNode();this.config.onShow(this.modal,this.activeElement)}closeModal(){const e=this.modal;this.modal.setAttribute("aria-hidden","true"),this.removeEventListeners(),this.scrollBehaviour("enable"),this.activeElement&&this.activeElement.focus(),this.config.onClose(this.modal),this.config.awaitCloseAnimation?this.modal.addEventListener("animationend",function t(){e.classList.remove("is-open"),e.removeEventListener("animationend",t,!1)},!1):e.classList.remove("is-open")}closeModalById(e){this.modal=document.getElementById(e),this.modal&&this.closeModal()}scrollBehaviour(e){if(!this.config.disableScroll)return;const t=document.querySelector("body");switch(e){case"enable":Object.assign(t.style,{overflow:"",height:""});break;case"disable":Object.assign(t.style,{overflow:"hidden",height:"100vh"})}}addEventListeners(){this.modal.addEventListener("touchstart",this.onClick),this.modal.addEventListener("click",this.onClick),document.addEventListener("keydown",this.onKeydown)}removeEventListeners(){this.modal.removeEventListener("touchstart",this.onClick),this.modal.removeEventListener("click",this.onClick),document.removeEventListener("keydown",this.onKeydown)}onClick(e){e.target.hasAttribute(this.config.closeTrigger)&&(this.closeModal(),e.preventDefault())}onKeydown(e){27===e.keyCode&&this.closeModal(e),9===e.keyCode&&this.maintainFocus(e)}getFocusableNodes(){const t=this.modal.querySelectorAll(e);return Array(...t)}setFocusToFirstNode(){if(this.config.disableFocus)return;const e=this.getFocusableNodes();e.length&&e[0].focus()}maintainFocus(e){const t=this.getFocusableNodes();if(this.modal.contains(document.activeElement)){const o=t.indexOf(document.activeElement);e.shiftKey&&0===o&&(t[t.length-1].focus(),e.preventDefault()),e.shiftKey||o!==t.length-1||(t[0].focus(),e.preventDefault())}else t[0].focus()}}let o=null;const i=e=>{if(!document.getElementById(e))return console.warn(`MicroModal: ❗Seems like you have missed %c'${e}'`,"background-color: #f8f9fa;color: #50596c;font-weight: bold;","ID somewhere in your code. Refer example below to resolve it."),console.warn("%cExample:","background-color: #f8f9fa;color: #50596c;font-weight: bold;",`

`),!1},n=(e,t)=>{if((e=>{if(e.length<=0)console.warn("MicroModal: ❗Please specify at least one %c'micromodal-trigger'","background-color: #f8f9fa;color: #50596c;font-weight: bold;","data attribute."),console.warn("%cExample:","background-color: #f8f9fa;color: #50596c;font-weight: bold;",'')})(e),!t)return!0;for(var o in t)i(o);return!0};return{init:e=>{const i=Object.assign({},{openTrigger:"data-micromodal-trigger"},e),s=[...document.querySelectorAll(`[${i.openTrigger}]`)],a=((e,t)=>{const o=[];return e.forEach(e=>{const i=e.attributes[t].value;void 0===o[i]&&(o[i]=[]),o[i].push(e)}),o})(s,i.openTrigger);if(!0!==i.debugMode||!1!==n(s,a))for(var l in a){let e=a[l];i.targetModal=l,i.triggers=[...e],o=new t(i)}},show:(e,n)=>{const s=n||{};s.targetModal=e,!0===s.debugMode&&!1===i(e)||(o=new t(s)).showModal()},close:e=>{e?o.closeModalById(e):o.closeModal()}}})()}); \ No newline at end of file diff --git a/wp-content/plugins/wp-rocket/assets/js/preload-links.js b/wp-content/plugins/wp-rocket/assets/js/preload-links.js new file mode 100644 index 0000000..436d013 --- /dev/null +++ b/wp-content/plugins/wp-rocket/assets/js/preload-links.js @@ -0,0 +1,255 @@ +class RocketPreloadLinks { + + constructor( browser, config ) { + this.browser = browser; + this.config = config; + this.options = this.browser.options; + + this.prefetched = new Set; + this.eventTime = null; + this.threshold = 1111; + this.numOnHover = 0; + } + + /** + * Initializes the handler. + */ + init() { + if ( + ! this.browser.supportsLinkPrefetch() + || + this.browser.isDataSaverModeOn() + || + this.browser.isSlowConnection() + ) { + return; + } + + this.regex = { + excludeUris: RegExp( this.config.excludeUris, 'i' ), + images: RegExp( '.(' + this.config.imageExt + ')$', 'i' ), + fileExt: RegExp( '.(' + this.config.fileExt + ')$', 'i' ) + }; + + this._initListeners( this ); + } + + /** + * Initializes the event listeners. + * + * @private + * + * @param self instance of this object, used for binding "this" to the listeners. + */ + _initListeners( self ) { + // Setting onHoverDelay to -1 disables the "on-hover" feature. + if ( this.config.onHoverDelay > -1 ) { + document.addEventListener( 'mouseover', self.listener.bind( self ), self.listenerOptions ); + } + + document.addEventListener( 'mousedown', self.listener.bind( self ), self.listenerOptions ); + document.addEventListener( 'touchstart', self.listener.bind( self ), self.listenerOptions ); + } + + /** + * Event listener. Processes when near or on a valid hyperlink. + * + * @param Event event Event instance. + */ + listener( event ) { + const linkElem = event.target.closest( 'a' ); + const url = this._prepareUrl( linkElem ); + if ( null === url ) { + return; + } + + switch ( event.type ) { + case 'mousedown': + case 'touchstart': + this._addPrefetchLink( url ); + break; + case 'mouseover': + this._earlyPrefetch( linkElem, url, 'mouseout' ); + } + } + + /** + * + * @private + * + * @param Element|null linkElem + * @param object url + * @param string resetEvent + */ + _earlyPrefetch( linkElem, url, resetEvent ) { + const doPrefetch = () => { + falseTrigger = null; + + // Start the rate throttle: 1 sec timeout. + if ( 0 === this.numOnHover ) { + setTimeout( () => this.numOnHover = 0, 1000 ); + } + // Bail out when exceeding the rate throttle. + else if ( this.numOnHover > this.config.rateThrottle ) { + return; + } + + this.numOnHover++; + this._addPrefetchLink( url ); + }; + + // Delay to avoid false triggers for hover/touch/tap. + let falseTrigger = setTimeout( doPrefetch, this.config.onHoverDelay ); + + // On reset event, reset the false trigger timer. + const reset = () => { + linkElem.removeEventListener( resetEvent, reset, { passive: true } ); + if ( null === falseTrigger ) { + return; + } + + clearTimeout( falseTrigger ); + falseTrigger = null; + }; + linkElem.addEventListener( resetEvent, reset, { passive: true } ); + } + + /** + * Adds a for the given URL. + * + * @param string url The Given URL to prefetch. + */ + _addPrefetchLink( url ) { + this.prefetched.add( url.href ); + + return new Promise( ( resolve, reject ) => { + const elem = document.createElement( 'link' ); + elem.rel = 'prefetch'; + elem.href = url.href; + elem.onload = resolve; + elem.onerror = reject; + + document.head.appendChild( elem ); + } ).catch(() => { + // ignore and continue. + }); + } + + /** + * Prepares the target link's URL. + * + * @private + * + * @param Element|null linkElem Instance of the link element. + * @returns {null|*} + */ + _prepareUrl( linkElem ) { + if ( + null === linkElem + || + typeof linkElem !== 'object' + || + ! 'href' in linkElem + || + // Link prefetching only works on http/https protocol. + [ 'http:', 'https:' ].indexOf( linkElem.protocol ) === -1 + ) { + return null; + } + + const origin = linkElem.href.substring( 0, this.config.siteUrl.length ); + const pathname = this._getPathname( linkElem.href, origin ); + const url = { + original: linkElem.href, + protocol: linkElem.protocol, + origin: origin, + pathname: pathname, + href: origin + pathname + }; + + return this._isLinkOk( url ) ? url : null; + } + + /** + * Gets the URL's pathname. Note: ensures the pathname matches the permalink structure. + * + * @private + * + * @param object url Instance of the URL. + * @param string origin The target link href's origin. + * @returns {string} + */ + _getPathname( url, origin ) { + let pathname = origin + ? url.substring( this.config.siteUrl.length ) + : url; + + if ( ! pathname.startsWith( '/' ) ) { + pathname = '/' + pathname; + } + + if ( this._shouldAddTrailingSlash( pathname ) ) { + return pathname + '/'; + } + + return pathname; + } + + _shouldAddTrailingSlash( pathname ) { + return ( + this.config.usesTrailingSlash + && + ! pathname.endsWith( '/' ) + && + ! this.regex.fileExt.test( pathname ) + ); + } + + /** + * Checks if the given link element is okay to process. + * + * @private + * + * @param object url URL parts object. + * + * @returns {boolean} + */ + _isLinkOk( url ) { + if ( null === url || typeof url !== 'object' ) { + return false; + } + + return ( + ! this.prefetched.has( url.href ) + && + url.origin === this.config.siteUrl // is an internal document. + && + url.href.indexOf( '?' ) === -1 // not a query string. + && + url.href.indexOf( '#' ) === -1 // not an anchor. + && + ! this.regex.excludeUris.test( url.href ) // not excluded. + && + ! this.regex.images.test( url.href ) // not an image. + ); + } + + /** + * Named static constructor to encapsulate how to create the object. + */ + static run() { + // Bail out if the configuration not passed from the server. + if ( typeof RocketPreloadLinksConfig === 'undefined' ) { + return; + } + + const browser = new RocketBrowserCompatibilityChecker( { + capture: true, + passive: true + } ); + const instance = new RocketPreloadLinks( browser, RocketPreloadLinksConfig ); + instance.init(); + } +} + +RocketPreloadLinks.run(); diff --git a/wp-content/plugins/wp-rocket/assets/js/preload-links.min.js b/wp-content/plugins/wp-rocket/assets/js/preload-links.min.js new file mode 100644 index 0000000..49e0a54 --- /dev/null +++ b/wp-content/plugins/wp-rocket/assets/js/preload-links.min.js @@ -0,0 +1,3 @@ +(function() { +"use strict";var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e=function(){function i(e,t){for(var n=0;ni.config.rateThrottle)return;i.numOnHover++,i._addPrefetchLink(e)},this.config.onHoverDelay);t.addEventListener(n,function e(){t.removeEventListener(n,e,{passive:!0}),null!==r&&(clearTimeout(r),r=null)},{passive:!0})}},{key:"_addPrefetchLink",value:function(i){return this.prefetched.add(i.href),new Promise(function(e,t){var n=document.createElement("link");n.rel="prefetch",n.href=i.href,n.onload=e,n.onerror=t,document.head.appendChild(n)}).catch(function(){})}},{key:"_prepareUrl",value:function(e){if(null===e||"object"!==(void 0===e?"undefined":r(e))||!1 in e||-1===["http:","https:"].indexOf(e.protocol))return null;var t=e.href.substring(0,this.config.siteUrl.length),n=this._getPathname(e.href,t),i={original:e.href,protocol:e.protocol,origin:t,pathname:n,href:t+n};return this._isLinkOk(i)?i:null}},{key:"_getPathname",value:function(e,t){var n=t?e.substring(this.config.siteUrl.length):e;return n.startsWith("/")||(n="/"+n),this._shouldAddTrailingSlash(n)?n+"/":n}},{key:"_shouldAddTrailingSlash",value:function(e){return this.config.usesTrailingSlash&&!e.endsWith("/")&&!this.regex.fileExt.test(e)}},{key:"_isLinkOk",value:function(e){return null!==e&&"object"===(void 0===e?"undefined":r(e))&&(!this.prefetched.has(e.href)&&e.origin===this.config.siteUrl&&-1===e.href.indexOf("?")&&-1===e.href.indexOf("#")&&!this.regex.excludeUris.test(e.href)&&!this.regex.images.test(e.href))}}],[{key:"run",value:function(){"undefined"!=typeof RocketPreloadLinksConfig&&new n(new RocketBrowserCompatibilityChecker({capture:!0,passive:!0}),RocketPreloadLinksConfig).init()}}]),n}();t.run(); +}()); diff --git a/wp-content/plugins/wp-rocket/assets/js/wpr-admin-common.js b/wp-content/plugins/wp-rocket/assets/js/wpr-admin-common.js new file mode 100644 index 0000000..23ce05d --- /dev/null +++ b/wp-content/plugins/wp-rocket/assets/js/wpr-admin-common.js @@ -0,0 +1,7 @@ +jQuery( document ).ready( function( $ ){ + $( '.rocket-dismiss' ).on( 'click', function( e ) { + e.preventDefault(); + var url = $( this ).attr( 'href' ).replace( 'admin-post', 'admin-ajax' ); + $.get( url ).done( $( this ).closest( '.notice' ).hide( 'slow' ) ); + }); +} ); diff --git a/wp-content/plugins/wp-rocket/assets/js/wpr-admin.js b/wp-content/plugins/wp-rocket/assets/js/wpr-admin.js new file mode 100644 index 0000000..71bd93a --- /dev/null +++ b/wp-content/plugins/wp-rocket/assets/js/wpr-admin.js @@ -0,0 +1,2 @@ +!function r(a,o,l){function h(e,t){if(!o[e]){if(!a[e]){var i="function"==typeof require&&require;if(!t&&i)return i(e,!0);if(c)return c(e,!0);var s=new Error("Cannot find module '"+e+"'");throw s.code="MODULE_NOT_FOUND",s}var n=o[e]={exports:{}};a[e][0].call(n.exports,function(t){return h(a[e][1][t]||t)},n,n.exports,r,a,o,l)}return o[e].exports}for(var c="function"==typeof require&&require,t=0;t form > #wpr-options-submit"),this.$pages=document.querySelectorAll(".wpr-Page"),this.$sidebar=document.querySelector(".wpr-Sidebar"),this.$content=document.querySelector(".wpr-Content"),this.$tips=document.querySelector(".wpr-Content-tips"),this.$links=document.querySelectorAll(".wpr-body a"),this.$menuItem=null,this.$page=null,this.pageId=null,this.bodyTop=0,this.buttonText=this.$submitButton.value,i.getBodyTop(),window.onhashchange=function(){i.detectID()},window.location.hash?(this.bodyTop=0,this.detectID()):(e=localStorage.getItem("wpr-hash"),this.bodyTop=0,e?(window.location.hash=e,this.detectID()):(this.$menuItems[0].classList.add("isActive"),localStorage.setItem("wpr-hash","dashboard"),window.location.hash="#dashboard"));for(var s=0;sl;l++)i.startAt&&(i.startAt=d(i.startAt)),h.to(t[l],e,d(i),l*s);return this.add(h,n)},t.staggerFrom=function(t,e,i,s,n,r,a,o){return i.immediateRender=0!=i.immediateRender,i.runBackwards=!0,this.staggerTo(t,e,i,s,n,r,a,o)},t.staggerFromTo=function(t,e,i,s,n,r,a,o,l){return s.startAt=i,s.immediateRender=0!=s.immediateRender&&0!=i.immediateRender,this.staggerTo(t,e,s,n,r,a,o,l)},t.call=function(t,e,i,s){return this.add(p.delayedCall(0,t,e,i),s)},t.set=function(t,e,i){return i=this._parseTimeOrLabel(i,0,!0),null==e.immediateRender&&(e.immediateRender=i===this._time&&!this._paused),this.add(new p(t,0,e),i)},f.exportRoot=function(t,e){null==(t=t||{}).smoothChildTiming&&(t.smoothChildTiming=!0);var i,s,n=new f(t),r=n._timeline;for(null==e&&(e=!0),r._remove(n,!0),n._startTime=0,n._rawPrevTime=n._time=n._totalTime=r._time,i=r._first;i;)s=i._next,e&&i instanceof p&&i.target===i.vars.onComplete||n.add(i,i._startTime-i._delay),i=s;return r.add(n,0),n},t.add=function(t,e,i,s){var n,r,a,o,l,h;if("number"!=typeof e&&(e=this._parseTimeOrLabel(e,0,!0,t)),!(t instanceof c)){if(t instanceof Array||t&&t.push&&g(t)){for(i=i||"normal",s=s||0,n=e,r=t.length,a=0;at._startTime;l._timeline;)h&&l._timeline.smoothChildTiming?l.totalTime(l._totalTime,!0):l._gc&&l._enabled(!0,!1),l=l._timeline;return this},t.remove=function(t){if(t instanceof c)return this._remove(t,!1);if(t instanceof Array||t&&t.push&&g(t)){for(var e=t.length;-1<--e;)this.remove(t[e]);return this}return"string"==typeof t?this.removeLabel(t):this.kill(null,t)},t._remove=function(t,e){u.prototype._remove.call(this,t,e);var i=this._last;return i?this._time>i._startTime+i._totalDuration/i._timeScale&&(this._time=this.duration(),this._totalTime=this._totalDuration):this._time=this._totalTime=this._duration=this._totalDuration=0,this},t.append=function(t,e){return this.add(t,this._parseTimeOrLabel(null,e,!0,t))},t.insert=t.insertMultiple=function(t,e,i,s){return this.add(t,e||0,i,s)},t.appendMultiple=function(t,e,i,s){return this.add(t,this._parseTimeOrLabel(null,e,!0,t),i,s)},t.addLabel=function(t,e){return this._labels[t]=this._parseTimeOrLabel(e),this},t.addPause=function(t,e,i,s){return this.call(n,["{self}",e,i,s],this,t)},t.removeLabel=function(t){return delete this._labels[t],this},t.getLabelTime=function(t){return null!=this._labels[t]?this._labels[t]:-1},t._parseTimeOrLabel=function(t,e,i,s){var n;if(s instanceof c&&s.timeline===this)this.remove(s);else if(s&&(s instanceof Array||s.push&&g(s)))for(n=s.length;-1<--n;)s[n]instanceof c&&s[n].timeline===this&&this.remove(s[n]);if("string"==typeof e)return this._parseTimeOrLabel(e,i&&"number"==typeof t&&null==this._labels[e]?t-this.duration():0,i);if(e=e||0,"string"!=typeof t||!isNaN(t)&&null==this._labels[t])null==t&&(t=this.duration());else{if(-1===(n=t.indexOf("=")))return null==this._labels[t]?i?this._labels[t]=this.duration()+e:e:this._labels[t]+e;e=parseInt(t.charAt(n-1)+"1",10)*Number(t.substr(n+1)),t=1_&&(a="onReverseComplete"))),this._rawPrevTime=this._duration||!e||t||this._rawPrevTime===t?t:_,t=l+1e-4):t<1e-7?(((this._totalTime=this._time=0)!==h||0===this._duration&&this._rawPrevTime!==_&&(0=h)for(s=this._first;s&&(r=s._next,!this._paused||p);)(s._active||s._startTime<=this._time&&!s._paused&&!s._gc)&&(s._reversed?s.render((s._dirty?s.totalDuration():s._totalDuration)-(t-s._startTime)*s._timeScale,e,i):s.render((t-s._startTime)*s._timeScale,e,i)),s=r;else for(s=this._last;s&&(r=s._prev,!this._paused||p);)(s._active||h>=s._startTime&&!s._paused&&!s._gc)&&(s._reversed?s.render((s._dirty?s.totalDuration():s._totalDuration)-(t-s._startTime)*s._timeScale,e,i):s.render((t-s._startTime)*s._timeScale,e,i)),s=r;this._onUpdate&&(e||this._onUpdate.apply(this.vars.onUpdateScope||this,this.vars.onUpdateParams||v)),a&&(this._gc||c!==this._startTime&&u===this._timeScale||!(0===this._time||l>=this.totalDuration())||(n&&(this._timeline.autoRemoveChildren&&this._enabled(!1,!1),this._active=!1),!e&&this.vars[a]&&this.vars[a].apply(this.vars[a+"Scope"]||this,this.vars[a+"Params"]||v)))}},t._hasPausedChild=function(){for(var t=this._first;t;){if(t._paused||t instanceof f&&t._hasPausedChild())return!0;t=t._next}return!1},t.getChildren=function(t,e,i,s){s=s||-9999999999;for(var n=[],r=this._first,a=0;r;)s>r._startTime||(r instanceof p?!1!==e&&(n[a++]=r):(!1!==i&&(n[a++]=r),!1!==t&&(a=(n=n.concat(r.getChildren(!0,e,i))).length))),r=r._next;return n},t.getTweensOf=function(t,e){var i,s,n=this._gc,r=[],a=0;for(n&&this._enabled(!0,!0),s=(i=p.getTweensOf(t)).length;-1<--s;)(i[s].timeline===this||e&&this._contains(i[s]))&&(r[a++]=i[s]);return n&&this._enabled(!1,!0),r},t._contains=function(t){for(var e=t.timeline;e;){if(e===this)return!0;e=e.timeline}return!1},t.shiftChildren=function(t,e,i){i=i||0;for(var s,n=this._first,r=this._labels;n;)n._startTime>=i&&(n._startTime+=t),n=n._next;if(e)for(s in r)r[s]>=i&&(r[s]+=t);return this._uncache(!0)},t._kill=function(t,e){if(!t&&!e)return this._enabled(!1,!1);for(var i=e?this.getTweensOf(e):this.getChildren(!0,!0,!1),s=i.length,n=!1;-1<--s;)i[s]._kill(t,e)&&(n=!0);return n},t.clear=function(t){var e=this.getChildren(!1,!0,!0),i=e.length;for(this._time=this._totalTime=0;-1<--i;)e[i]._enabled(!1,!1);return!1!==t&&(this._labels={}),this._uncache(!0)},t.invalidate=function(){for(var t=this._first;t;)t.invalidate(),t=t._next;return this},t._enabled=function(t,e){if(t===this._gc)for(var i=this._first;i;)i._enabled(t,!0),i=i._next;return u.prototype._enabled.call(this,t,e)},t.duration=function(t){return arguments.length?(0!==this.duration()&&0!==t&&this.timeScale(this._duration/t),this):(this._dirty&&this.totalDuration(),this._duration)},t.totalDuration=function(t){if(arguments.length)return 0!==this.totalDuration()&&0!==t&&this.timeScale(this._totalDuration/t),this;if(this._dirty){for(var e,i,s=0,n=this._last,r=999999999999;n;)e=n._prev,n._dirty&&n.totalDuration(),n._startTime>r&&this._sortChildren&&!n._paused?this.add(n,n._startTime-n._delay):r=n._startTime,n._startTime<0&&!n._paused&&(s-=n._startTime,this._timeline.smoothChildTiming&&(this._startTime+=n._startTime/this._timeScale),this.shiftChildren(-n._startTime,!1,-9999999999),r=0),s<(i=n._startTime+n._totalDuration/n._timeScale)&&(s=i),n=e;this._duration=this._totalDuration=s,this._dirty=!1}return this._totalDuration},t.usesFrames=function(){for(var t=this._timeline;t._timeline;)t=t._timeline;return t===c._rootFramesTimeline},t.rawTime=function(){return this._paused?this._totalTime:(this._timeline.rawTime()-this._startTime)*this._timeScale},f},!0)}),window._gsDefine&&window._gsQueue.pop()()},{}],10:[function(t,W,e){"use strict";var Q="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};!function(f){var e,i,d=f.GreenSockGlobals||f;if(!d.TweenLite){var _,m=function(t){for(var e=t.split("."),i=d,s=0;e.length>s;s++)i[e[s]]=i=i[e[s]]||{};return i},u=m("com.greensock"),g=1e-10,l=[].slice,s=function(){},c=(e=Object.prototype.toString,i=e.call([]),function(t){return null!=t&&(t instanceof Array||"object"==(void 0===t?"undefined":Q(t))&&!!t.push&&e.call(t)===i)}),v={},n=function o(l,h,c,u){this.sc=v[l]?v[l].sc:[],(v[l]=this).gsClass=null,this.func=c;var p=[];this.check=function(t){for(var e,i,s,n,r=h.length,a=r;-1<--r;)(e=v[h[r]]||new o(h[r],[])).gsClass?(p[r]=e.gsClass,a--):t&&e.sc.push(this);if(0===a&&c)for(s=(i=("com.greensock."+l).split(".")).pop(),n=m(i.join("."))[s]=this.gsClass=c.apply(c,p),u&&(d[s]=n,"function"==typeof define&&define.amd?define((f.GreenSockAMDPath?f.GreenSockAMDPath+"/":"")+l.split(".").join("/"),[],function(){return n}):void 0!==W&&W.exports&&(W.exports=n)),r=0;this.sc.length>r;r++)this.sc[r].check()},this.check(!0)},r=f._gsDefine=function(t,e,i,s){return new n(t,e,i,s)},p=u._class=function(t,e,i){return e=e||function(){},r(t,[],function(){return e},i),e};r.globals=d;var t,a=[0,0,1,1],w=[],y=p("easing.Ease",function(t,e,i,s){this._func=t,this._type=i||0,this._power=s||0,this._params=e?a.concat(e):a},!0),x=y.map={},o=y.register=function(t,e,i,s){for(var n,r,a,o,l=e.split(","),h=l.length,c=(i||"easeIn,easeOut,easeInOut").split(",");-1<--h;)for(r=l[h],n=s?p("easing."+r,null,!0):u.easing[r]||{},a=c.length;-1<--a;)o=c[a],x[r+"."+o]=x[o+r]=n[o]=t.getRatio?t:t[o]||new t};for((t=y.prototype)._calcEnd=!1,t.getRatio=function(t){if(this._func)return this._params[0]=t,this._func.apply(null,this._params);var e=this._type,i=this._power,s=1===e?1-t:2===e?t:t<.5?2*t:2*(1-t);return 1===i?s*=s:2===i?s*=s*s:3===i?s*=s*s*s:4===i&&(s*=s*s*s*s),1===e?1-s:2===e?s:t<.5?s/2:1-s/2},O=(h=["Linear","Quad","Cubic","Quart","Quint,Strong"]).length;-1<--O;)t=h[O]+",Power"+O,o(new y(null,null,1,O),t,"easeOut",!0),o(new y(null,null,2,O),t,"easeIn"+(0===O?",easeNone":"")),o(new y(null,null,3,O),t,"easeInOut");x.linear=u.easing.Linear.easeIn,x.swing=u.easing.Quad.easeInOut;var b=p("events.EventDispatcher",function(t){this._listeners={},this._eventTarget=t||this});(t=b.prototype).addEventListener=function(t,e,i,s,n){n=n||0;var r,a,o=this._listeners[t],l=0;for(null==o&&(this._listeners[t]=o=[]),a=o.length;-1<--a;)(r=o[a]).c===e&&r.s===i?o.splice(a,1):0===l&&n>r.pr&&(l=a+1);o.splice(l,0,{c:e,s:i,up:s,pr:n}),this!==C||_||C.wake()},t.removeEventListener=function(t,e){var i,s=this._listeners[t];if(s)for(i=s.length;-1<--i;)if(s[i].c===e)return void s.splice(i,1)},t.dispatchEvent=function(t){var e,i,s,n=this._listeners[t];if(n)for(e=n.length,i=this._eventTarget;-1<--e;)(s=n[e]).up?s.c.call(s.s||i,{type:t,target:i}):s.c.call(s.s||i)};for(var h,T=f.requestAnimationFrame,k=f.cancelAnimationFrame,P=Date.now||function(){return(new Date).getTime()},S=P(),O=(h=["ms","moz","webkit","o"]).length;-1<--O&&!T;)T=f[h[O]+"RequestAnimationFrame"],k=f[h[O]+"CancelAnimationFrame"]||f[h[O]+"CancelRequestAnimationFrame"];p("Ticker",function(t,e){function n(t){var e,i,s=P()-S;p=i&&i+this.totalDuration()/this._timeScale>t},t._enabled=function(t,e){return _||C.wake(),this._gc=!t,this._active=this.isActive(),!0!==e&&(t&&!this.timeline?this._timeline.add(this,this._startTime-this._delay):!t&&this.timeline&&this._timeline._remove(this,!0)),!1},t._kill=function(){return this._enabled(!1,!1)},t.kill=function(t,e){return this._kill(t,e),this},t._uncache=function(t){for(var e=t?this:this.timeline;e;)e._dirty=!0,e=e.timeline;return this},t._swapSelfInParams=function(t){for(var e=t.length,i=t.concat();-1<--e;)"{self}"===t[e]&&(i[e]=this);return i},t.eventCallback=function(t,e,i,s){if("on"===(t||"").substr(0,2)){var n=this.vars;if(1===arguments.length)return n[t];null==e?delete n[t]:(n[t]=e,n[t+"Params"]=c(i)&&-1!==i.join("").indexOf("{self}")?this._swapSelfInParams(i):i,n[t+"Scope"]=s),"onUpdate"===t&&(this._onUpdate=e)}return this},t.delay=function(t){return arguments.length?(this._timeline.smoothChildTiming&&this.startTime(this._startTime+t-this._delay),this._delay=t,this):this._delay},t.duration=function(t){return arguments.length?(this._duration=this._totalDuration=t,this._uncache(!0),this._timeline.smoothChildTiming&&0this._duration?this._duration:t,e)):this._time},t.totalTime=function(t,e,i){if(_||C.wake(),!arguments.length)return this._totalTime;if(this._timeline){if(t<0&&!i&&(t+=this.totalDuration()),this._timeline.smoothChildTiming){this._dirty&&this.totalDuration();var s=this._totalDuration,n=this._timeline;if(ss;)i=i._prev;return i?(t._next=i._next,i._next=t):(t._next=this._first,this._first=t),t._next?t._next._prev=t:this._last=t,t._prev=i,this._timeline&&this._uncache(!0),this},t._remove=function(t,e){return t.timeline===this&&(e||t._enabled(!1,!0),t.timeline=null,t._prev?t._prev._next=t._next:this._first===t&&(this._first=t._next),t._next?t._next._prev=t._prev:this._last===t&&(this._last=t._prev),this._timeline&&this._uncache(!0)),this},t.render=function(t,e,i){var s,n=this._first;for(this._totalTime=this._time=this._rawPrevTime=t;n;)s=n._next,(n._active||t>=n._startTime&&!n._paused)&&(n._reversed?n.render((n._dirty?n.totalDuration():n._totalDuration)-(t-n._startTime)*n._timeScale,e,i):n.render((t-n._startTime)*n._timeScale,e,i)),n=s},t.rawTime=function(){return _||C.wake(),this._totalTime};var R=p("TweenLite",function(t,e,i){if(A.call(this,e,i),this.render=R.prototype.render,null==t)throw"Cannot tween a null target.";this.target=t="string"==typeof t&&R.selector(t)||t;var s,n,r,a=t.jquery||t.length&&t!==f&&t[0]&&(t[0]===f||t[0].nodeType&&t[0].style&&!t.nodeType),o=this.vars.overwrite;if(this._overwrite=o=null==o?Y[R.defaultOverwrite]:"number"==typeof o?o>>0:Y[o],(a||t instanceof Array||t.push&&c(t))&&"number"!=typeof t[0])for(this._targets=r=l.call(t,0),this._propLookup=[],this._siblings=[],s=0;r.length>s;s++)(n=r[s])?"string"!=typeof n?n.length&&n!==f&&n[0]&&(n[0]===f||n[0].nodeType&&n[0].style&&!n.nodeType)?(r.splice(s--,1),this._targets=r=r.concat(l.call(n,0))):(this._siblings[s]=q(n,this,!1),1===o&&1=a._startTime&&a._startTime+a.totalDuration()/a._timeScale>h&&((p||!a._initted)&&h-a._startTime<=2e-10||(c[u++]=a)));for(f=u;-1<--f;)a=c[f],2===s&&a._kill(i,t)&&(r=!0),(2!==s||!a._firstPT&&a._initted)&&a._enabled(!1,!1)&&(r=!0);return r},H=function(t,e,i){for(var s=t._timeline,n=s._timeScale,r=t._startTime;s._timeline;){if(r+=s._startTime,n*=s._timeScale,s._paused)return-100;s=s._timeline}return e<(r/=n)?r-e:i&&r===e||!t._initted&&r-e<2*g?g:(r+=t.totalDuration()/t._timeScale/n)>e+g?0:r-e-g};t._init=function(){var t,e,i,s,n,r=this.vars,a=this._overwrittenProps,o=this._duration,l=!!r.immediateRender,h=r.ease;if(r.startAt){for(s in this._startAt&&(this._startAt.render(-1,!0),this._startAt.kill()),n={},r.startAt)n[s]=r.startAt[s];if(n.overwrite=!1,n.immediateRender=!0,n.lazy=l&&!1!==r.lazy,n.startAt=n.delay=null,this._startAt=R.to(this.target,0,n),l)if(0o.pr;)s=s._next;(o._prev=s?s._prev:r)?o._prev._next=o:n=o,(o._next=s)?s._prev=o:r=o,o=a}o=e._firstPT=n}for(;o;)o.pg&&"function"==typeof o.t[t]&&o.t[t]()&&(i=!0),o=o._next;return i},V.activate=function(t){for(var e=t.length;-1<--e;)t[e].API===V.API&&(X[(new t[e])._propName]=t[e]);return!0},r.plugin=function(t){if(!(t&&t.propName&&t.init&&t.API))throw"illegal plugin definition.";var e,i=t.propName,s=t.priority||0,n=t.overwriteProps,r={init:"_onInitTween",set:"setRatio",kill:"_kill",round:"_roundProps",initAll:"_onInitAllProps"},a=p("plugins."+i.charAt(0).toUpperCase()+i.substr(1)+"Plugin",function(){V.call(this,i,s),this._overwriteProps=n||[]},!0===t.global),o=a.prototype=new V(i);for(e in(o.constructor=a).API=t.API,r)"function"==typeof t[e]&&(o[r[e]]=t[e]);return a.version=t.version,V.activate([a]),a},h=f._gsQueue){for(O=0;h.length>O;O++)h[O]();for(t in v)v[t].func||f.console.log("GSAP encountered missing dependency: com.greensock."+t)}_=!1}}(window)},{}],11:[function(t,e,i){"use strict";(window._gsQueue||(window._gsQueue=[])).push(function(){window._gsDefine("easing.Back",["easing.Ease"],function(m){function t(t,e){var i=c("easing."+t,function(){},!0),s=i.prototype=new m;return s.constructor=i,s.getRatio=e,i}function e(t,e,i,s){var n=c("easing."+t,{easeOut:new e,easeIn:new i,easeInOut:new s},!0);return u(n,t),n}function g(t,e,i){this.t=t,this.v=e,i&&(((this.next=i).prev=this).c=i.v-e,this.gap=i.t-t)}function i(t,e){var i=c("easing."+t,function(t){this._p1=t||0===t?t:1.70158,this._p2=1.525*this._p1},!0),s=i.prototype=new m;return s.constructor=i,s.getRatio=e,s.config=function(t){return new i(t)},i}var s,n,r,a=window.GreenSockGlobals||window,o=a.com.greensock,l=2*Math.PI,h=Math.PI/2,c=o._class,u=m.register||function(){},p=e("Back",i("BackOut",function(t){return--t*t*((this._p1+1)*t+this._p1)+1}),i("BackIn",function(t){return t*t*((this._p1+1)*t-this._p1)}),i("BackInOut",function(t){return(t*=2)<1?.5*t*t*((this._p2+1)*t-this._p2):.5*((t-=2)*t*((this._p2+1)*t+this._p2)+2)})),f=c("easing.SlowMo",function(t,e,i){e=e||0===e?e:.7,null==t?t=.7:1t?this._calcEnd?1-(t=1-t/this._p1)*t:e-(t=1-t/this._p1)*t*t*t*e:t>this._p3?this._calcEnd?1-(t=(t-this._p3)/this._p1)*t:e+(t-e)*(t=(t-this._p3)/this._p1)*t*t*t:this._calcEnd?1:e},f.ease=new f(.7,.7),d.config=f.config=function(t,e,i){return new f(t,e,i)},(d=(s=c("easing.SteppedEase",function(t){t=t||1,this._p1=1/t,this._p2=t+1},!0)).prototype=new m).constructor=s,d.getRatio=function(t){return t<0?t=0:1<=t&&(t=.999999999),(this._p2*t>>0)*this._p1},d.config=s.config=function(t){return new s(t)},(d=(n=c("easing.RoughEase",function(t){for(var e,i,s,n,r,a,o=(t=t||{}).taper||"none",l=[],h=0,c=0|(t.points||20),u=c,p=!1!==t.randomize,f=!0===t.clamp,d=t.template instanceof m?t.template:null,_="number"==typeof t.strength?.4*t.strength:.4;-1<--u;)e=p?Math.random():1/c*u,i=d?d.getRatio(e):e,s="none"===o?_:"out"===o?(n=1-e)*n*_:"in"===o?e*e*_:.5*(n=e<.5?2*e:2*(1-e))*n*_,p?i+=Math.random()*s-.5*s:u%2?i+=.5*s:i-=.5*s,f&&(1e.t){for(;e.next&&t>=e.t;)e=e.next;e=e.prev}else for(;e.prev&&e.t>=t;)e=e.prev;return(this._prev=e).v+(t-e.t)/e.gap*e.c},d.config=function(t){return new n(t)},n.ease=new n,e("Bounce",t("BounceOut",function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375}),t("BounceIn",function(t){return 1/2.75>(t=1-t)?1-7.5625*t*t:t<2/2.75?1-(7.5625*(t-=1.5/2.75)*t+.75):t<2.5/2.75?1-(7.5625*(t-=2.25/2.75)*t+.9375):1-(7.5625*(t-=2.625/2.75)*t+.984375)}),t("BounceInOut",function(t){var e=t<.5;return t=(t=e?1-2*t:2*t-1)<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375,e?.5*(1-t):.5*t+.5})),e("Circ",t("CircOut",function(t){return Math.sqrt(1- --t*t)}),t("CircIn",function(t){return-(Math.sqrt(1-t*t)-1)}),t("CircInOut",function(t){return(t*=2)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)})),e("Elastic",(r=function(t,e,i){var s=c("easing."+t,function(t,e){this._p1=t||1,this._p2=e||i,this._p3=this._p2/l*(Math.asin(1/this._p1)||0)},!0),n=s.prototype=new m;return n.constructor=s,n.getRatio=e,n.config=function(t,e){return new s(t,e)},s})("ElasticOut",function(t){return this._p1*Math.pow(2,-10*t)*Math.sin((t-this._p3)*l/this._p2)+1},.3),r("ElasticIn",function(t){return-(this._p1*Math.pow(2,10*--t)*Math.sin((t-this._p3)*l/this._p2))},.3),r("ElasticInOut",function(t){return(t*=2)<1?-.5*this._p1*Math.pow(2,10*--t)*Math.sin((t-this._p3)*l/this._p2):.5*this._p1*Math.pow(2,-10*--t)*Math.sin((t-this._p3)*l/this._p2)+1},.45)),e("Expo",t("ExpoOut",function(t){return 1-Math.pow(2,-10*t)}),t("ExpoIn",function(t){return Math.pow(2,10*(t-1))-.001}),t("ExpoInOut",function(t){return(t*=2)<1?.5*Math.pow(2,10*(t-1)):.5*(2-Math.pow(2,-10*(t-1)))})),e("Sine",t("SineOut",function(t){return Math.sin(t*h)}),t("SineIn",function(t){return 1-Math.cos(t*h)}),t("SineInOut",function(t){return-.5*(Math.cos(Math.PI*t)-1)})),c("easing.EaseLookup",{find:function(t){return m.map[t]}},!0),u(a.SlowMo,"SlowMo","ease,"),u(n,"RoughEase","ease,"),u(s,"SteppedEase","ease,"),p},!0)}),window._gsDefine&&window._gsQueue.pop()()},{}],12:[function(t,e,i){"use strict";var jt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};(window._gsQueue||(window._gsQueue=[])).push(function(){window._gsDefine("plugins.CSSPlugin",["plugins.TweenPlugin","TweenLite"],function(r,p){function J(){r.call(this,"css"),this._overwriteProps.length=0,this.setRatio=J.prototype.setRatio}var d,T,k,f,_={},t=J.prototype=new r("css");(t.constructor=J).version="1.12.1",J.API=2,J.defaultTransformPerspective=0,J.defaultSkewType="compensated",J.suffixMap={top:t="px",right:t,bottom:t,left:t,width:t,height:t,fontSize:t,padding:t,margin:t,perspective:t,lineHeight:""};function a(t,e){return e.toUpperCase()}function o(t){return E.test("string"==typeof t?t:(t.currentStyle?t.currentStyle.filter:t.style.filter)||"")?parseFloat(RegExp.$1)/100:1}function m(t){window.console&&console.log(t)}function P(t,e){var i,s,n=(e=e||V).style;if(void 0!==n[t])return t;for(t=t.charAt(0).toUpperCase()+t.substr(1),i=["O","Moz","ms","Ms","Webkit"],s=5;-1<--s&&void 0===n[i[s]+t];);return 0<=s?(G="-"+(K=3===s?"ms":i[s]).toLowerCase()+"-",K+t):null}function g(t,e){var i,s,n={};if(e=e||st(t,null))if(i=e.length)for(;-1<--i;)n[e[i].replace(Y,a)]=e.getPropertyValue(e[i]);else for(i in e)n[i]=e[i];else if(e=t.currentStyle||t.style)for(i in e)"string"==typeof i&&void 0===n[i]&&(n[i.replace(Y,a)]=e[i]);return Z||(n.opacity=o(t)),s=St(t,e,!1),n.rotation=s.rotation,n.skewX=s.skewX,n.scaleX=s.scaleX,n.scaleY=s.scaleY,n.x=s.x,n.y=s.y,kt&&(n.z=s.z,n.rotationX=s.rotationX,n.rotationY=s.rotationY,n.scaleZ=s.scaleZ),n.filters&&delete n.filters,n}function v(t,e,i,s,n){var r,a,o,l={},h=t.style;for(a in i)"cssText"!==a&&"length"!==a&&isNaN(a)&&(e[a]!==(r=i[a])||n&&n[a])&&-1===a.indexOf("Origin")&&("number"==typeof r||"string"==typeof r)&&(l[a]="auto"!==r||"left"!==a&&"top"!==a?""!==r&&"auto"!==r&&"none"!==r||"string"!=typeof e[a]||""===e[a].replace(c,"")?r:0:at(t,a),void 0!==h[a]&&(o=new ft(h,a,h[a],o)));if(s)for(a in s)"className"!==a&&(l[a]=s[a]);return{difs:l,firstMPT:o}}function w(t,e){null!=t&&""!==t&&"auto"!==t&&"auto auto"!==t||(t="0 0");var i=t.split(" "),s=-1!==t.indexOf("left")?"0%":-1!==t.indexOf("right")?"100%":i[0],n=-1!==t.indexOf("top")?"0%":-1!==t.indexOf("bottom")?"100%":i[1];return null==n?n="0":"center"===n&&(n="50%"),("center"===s||isNaN(parseFloat(s))&&-1===(s+"").indexOf("="))&&(s="50%"),e&&(e.oxp=-1!==s.indexOf("%"),e.oyp=-1!==n.indexOf("%"),e.oxr="="===s.charAt(1),e.oyr="="===n.charAt(1),e.ox=parseFloat(s.replace(c,"")),e.oy=parseFloat(n.replace(c,""))),s+" "+n+(2>16,255&t>>8,255&t]:(","===t.charAt(t.length-1)&&(t=t.substr(0,t.length-1)),ht[t]?ht[t]:"#"===t.charAt(0)?(4===t.length&&(t="#"+(e=t.charAt(1))+e+(i=t.charAt(2))+i+(s=t.charAt(3))+s),[(t=parseInt(t.substr(1),16))>>16,255&t>>8,255&t]):("hsl"===t.substr(0,3)?(t=t.match(I),n=Number(t[0])%360/360,r=Number(t[1])/100,e=2*(a=Number(t[2])/100)-(i=a<=.5?a*(1+r):a+r-a*r),3a",!!(e=s.getElementsByTagName("a")[0])&&/^0.55/.test(e.style.opacity)),G="",K="",st=H.defaultView?H.defaultView.getComputedStyle:function(){},nt=J.getStyle=function(t,e,i,s,n){var r;return Z||"opacity"!==e?(!s&&t.style[e]?r=t.style[e]:(i=i||st(t))?r=i[e]||i.getPropertyValue(e)||i.getPropertyValue(e.replace(u,"-$1").toLowerCase()):t.currentStyle&&(r=t.currentStyle[e]),null==n||r&&"none"!==r&&"auto"!==r&&"auto auto"!==r?r:n):o(t)},rt=n.convertToPixels=function(t,e,i,s,n){if("px"===s||!s)return i;if("auto"===s||!i)return 0;var r,a,o,l=B.test(e),h=t,c=V.style,u=i<0;if(u&&(i=-i),"%"===s&&-1!==e.indexOf("border"))r=i/100*(l?t.clientWidth:t.clientHeight);else{if(c.cssText="border:0 solid red;position:"+nt(t,"position")+";line-height:0;","%"!==s&&h.appendChild)c[l?"borderLeftWidth":"borderTopWidth"]=i+s;else{if(a=(h=t.parentNode||H.body)._gsCache,o=p.ticker.frame,a&&l&&a.time===o)return a.width*i/100;c[l?"width":"height"]=i+s}h.appendChild(V),r=parseFloat(V[l?"offsetWidth":"offsetHeight"]),h.removeChild(V),l&&"%"===s&&!1!==J.cacheWidths&&((a=h._gsCache=h._gsCache||{}).time=o,a.width=r/i*100),0!==r||n||(r=rt(t,e,i,s,!0))}return u?-r:r},at=n.calculateOffset=function(t,e,i){if("absolute"!==nt(t,"position",i))return 0;var s="left"===e?"Left":"Top",n=nt(t,"margin"+s,i);return t["offset"+s]-(rt(t,e,parseFloat(n),n.replace(X,""))||0)},ot={width:["Left","Right"],height:["Top","Bottom"]},lt=["marginLeft","marginRight","marginTop","marginBottom"],ht={aqua:[0,255,255],lime:[0,255,0],silver:[192,192,192],black:[0,0,0],maroon:[128,0,0],teal:[0,128,128],blue:[0,0,255],navy:[0,0,128],white:[255,255,255],fuchsia:[255,0,255],olive:[128,128,0],yellow:[255,255,0],orange:[255,165,0],gray:[128,128,128],purple:[128,0,128],green:[0,128,0],red:[255,0,0],pink:[255,192,203],cyan:[0,255,255],transparent:[255,255,255,0]},ct="(?:\\b(?:(?:rgb|rgba|hsl|hsla)\\(.+?\\))|\\B#.+?\\b";for(t in ht)ct+="|"+t+"\\b";ct=RegExp(ct+")","gi");function ut(t,e,r,a){if(null==t)return function(t){return t};var o,l=e?(t.match(ct)||[""])[0]:"",h=t.split(l).join("").match(j)||[],c=t.substr(0,t.indexOf(h[0])),u=")"===t.charAt(t.length-1)?")":"",p=-1!==t.indexOf(" ")?" ":",",f=h.length,d=0s;s++)n[s]=o(n[s]);return n.join(",")}if(e=(t.match(ct)||[l])[0],s=(i=t.split(e).join("").match(j)||[]).length,f>s--)for(;f>++s;)i[s]=r?i[0|(s-1)/2]:h[s];return c+i.join(p)+p+e+u+(-1!==t.indexOf("inset")?" inset":"")}:function(t){var e,i,s;if("number"==typeof t)t+=d;else if(a&&q.test(t)){for(i=t.replace(q,"|").split("|"),s=0;i.length>s;s++)i[s]=o(i[s]);return i.join(",")}if(s=(e=t.match(j)||[]).length,f>s--)for(;f>++s;)e[s]=r?e[0|(s-1)/2]:h[s];return c+e.join(p)+u}:function(t){return t}}function pt(h){return h=h.split(","),function(t,e,i,s,n,r,a){var o,l=(e+"").split(" ");for(a={},o=0;o<4;o++)a[h[o]]=l[o]=l[o]||l[(o-1)/2>>0];return s.parse(t,a,n,r)}}var ft=(n._setPluginRatio=function(t){this.plugin.setRatio(t);for(var e,i,s,n,r=this.data,a=r.proxy,o=r.firstMPT;o;)e=a[o.v],o.r?e=Math.round(e):e<1e-6&&-1e-6s;s++)n+=i["xn"+s]+i["xs"+(s+1)];i.e=n}}else i.e=i.s+i.xs0;o=o._next}},function(t,e,i,s,n){this.t=t,this.p=e,this.v=i,this.r=n,s&&((s._prev=this)._next=s)}),dt=(n._parseToProxy=function(t,e,i,s,n,r){var a,o,l,h,c,u=s,p={},f={},d=i._transform,_=U;for(i._transform=null,U=e,s=c=i.parse(t,e,s,n),U=_,r&&(i._transform=d,u&&(u._prev=null,u._prev&&(u._prev._next=null)));s&&s!==u;){if(s.type<=1&&(f[o=s.p]=s.s+s.c,p[o]=s.s,r||(h=new ft(s,"s",o,h,s.r),s.c=0),1===s.type))for(a=s.l;0<--a;)l="xn"+a,f[o=s.p+"_"+l]=s.data[l],p[o]=s[l],r||(h=new ft(s,l,o,h,s.rxp[l]));s=s._next}return{proxy:p,end:f,firstMPT:h,pt:c}},n.CSSPropTween=function(t,e,i,s,n,r,a,o,l,h,c){this.t=t,this.p=e,this.s=i,this.c=s,this.n=a||e,t instanceof dt||f.push(this.n),this.r=o,this.type=r||0,l&&(this.pr=l,d=!0),this.b=void 0===h?i:h,this.e=void 0===c?i+s:c,n&&((this._next=n)._prev=this)}),_t=J.parseComplex=function(t,e,i,s,n,r,a,o,l,h){a=new dt(t,e,0,0,a,h?2:1,null,!1,o,i=i||r||"",s),s+="";var c,u,p,f,d,_,m,g,v,w,y,x,b=i.split(", ").join(",").split(" "),T=s.split(", ").join(",").split(" "),k=b.length,P=!1!==A;for(-1===s.indexOf(",")&&-1===i.indexOf(",")||(b=b.join(" ").replace(q,", ").split(" "),T=T.join(" ").replace(q,", ").split(" "),k=b.length),k!==T.length&&(k=(b=(r||"").split(" ")).length),a.plugin=l,a.setRatio=h,c=0;cu;u++)y=_[u],w=f.indexOf(y,p),a.appendXtra(f.substr(p,w-p),Number(y),S(m[u],y),"",P&&"px"===f.substr(w+y.length,2),0===u),p=w+y.length;a["xs"+a.l]+=f.substr(p)}else a["xs"+a.l]+=a.l?" "+f:f;if(-1!==s.indexOf("=")&&a.data){for(x=a.xs0+a.data.s,c=1;a.l>c;c++)x+=a["xs"+c]+a.data["xn"+c];a.e=x+a["xs"+c]}return a.l||(a.type=-1,a.xs0=a.e),a.xfirst||a},mt=9;for((t=dt.prototype).l=t.pr=0;0<--mt;)t["xn"+mt]=0,t["xs"+mt]="";t.xs0="",t._next=t._prev=t.xfirst=t.data=t.plugin=t.setRatio=t.rxp=null,t.appendXtra=function(t,e,i,s,n,r){var a=this,o=a.l;return a["xs"+o]+=r&&o?" "+t:t||"",i||0===o||a.plugin?(a.l++,a.type=a.setRatio?2:1,a["xs"+a.l]=s||"",0s;s++)e.prefix=0===s&&e.prefix,e.defaultValue=i[s]||r,new gt(n[s],e)};(t=gt.prototype).parseComplex=function(t,e,i,s,n,r){var a,o,l,h,c,u=this.keyword;if(this.multi&&(q.test(i)||q.test(e)?(o=e.replace(q,"|").split("|"),l=i.replace(q,"|").split("|")):u&&(o=[e],l=[i])),l){for(h=l.length>o.length?l.length:o.length,a=0;aH[a]&&H[a]>-W&&(H[a]=0);return i&&(t._gsTransform=H),H},Ot=n.set3DTransformRatio=function(t){var e,i,s,n,r,a,o,l,h,c,u,p,f,d,_,m,g,v,w,y,x,b,T,k=this.data,P=this.t.style,S=k.rotation*et,O=k.scaleX,A=k.scaleY,C=k.scaleZ,M=k.perspective;if(1!==t&&0!==t||"auto"!==k.force3D||k.rotationY||k.rotationX||1!==C||M||k.z){if(R&&(O<1e-4&&-1e-4b;b++)this.p.indexOf("border")&&(g[b]=P(g[b])),-1!==(o=a=nt(t,g[b],k,!1,"0px")).indexOf(" ")&&(o=(a=o.split(" "))[0],a=a[1]),l=r=x[b],h=parseFloat(o),p=o.substr((h+"").length),""===(u=(f="="===l.charAt(1))?(c=parseInt(l.charAt(0)+"1",10),l=l.substr(2),c*=parseFloat(l),l.substr((c+"").length-(c<0?1:0))||""):(c=parseFloat(l),l.substr((c+"").length)))&&(u=T[i]||p),u!==p&&(d=rt(t,"borderLeft",h,p),_=rt(t,"borderTop",h,p),a="%"===u?(o=d/w*100+"%",_/y*100+"%"):"em"===u?(o=d/(m=rt(t,"borderLeft",1,"em"))+"em",_/m+"em"):(o=d+"px",_+"px"),f&&(l=parseFloat(o)+c+u,r=parseFloat(a)+c+u)),n=_t(v,g[b],o+" "+a,l+" "+r,!1,"0px",n);return n},prefix:!0,formatter:ut("0px 0px 0px 0px",!1,!0)}),vt("backgroundPosition",{defaultValue:"0 0",parser:function(t,e,i,s,n,r){var a,o,l,h,c,u,p="background-position",f=k||st(t,null),d=this.format((f?D?f.getPropertyValue(p+"-x")+" "+f.getPropertyValue(p+"-y"):f.getPropertyValue(p):t.currentStyle.backgroundPositionX+" "+t.currentStyle.backgroundPositionY)||"0 0"),_=this.format(e);if(-1!==d.indexOf("%")!=(-1!==_.indexOf("%"))&&((u=nt(t,"backgroundImage").replace(F,""))&&"none"!==u)){for(a=d.split(" "),o=_.split(" "),W.setAttribute("src",u),l=2;-1<--l;)(h=-1!==(d=a[l]).indexOf("%"))!=(-1!==o[l].indexOf("%"))&&(c=0===l?t.offsetWidth-W.width:t.offsetHeight-W.height,a[l]=h?parseFloat(d)/100*c+"px":parseFloat(d)/c*100+"%");d=a.join(" ")}return this.parseComplex(t.style,d,_,n,r)},formatter:w}),vt("backgroundSize",{defaultValue:"0 0",formatter:w}),vt("perspective",{defaultValue:"0px",prefix:!0}),vt("perspectiveOrigin",{defaultValue:"50% 50%",prefix:!0}),vt("transformStyle",{prefix:!0}),vt("backfaceVisibility",{prefix:!0}),vt("userSelect",{prefix:!0}),vt("margin",{parser:pt("marginTop,marginRight,marginBottom,marginLeft")}),vt("padding",{parser:pt("paddingTop,paddingRight,paddingBottom,paddingLeft")}),vt("clip",{defaultValue:"rect(0px,0px,0px,0px)",parser:function(t,e,i,s,n,r){var a,o,l;return e=D<9?(o=t.currentStyle,l=D<8?" ":",",a="rect("+o.clipTop+l+o.clipRight+l+o.clipBottom+l+o.clipLeft+")",this.format(e).split(",").join(l)):(a=this.format(nt(t,this.p,k,!1,this.dflt)),this.format(e)),this.parseComplex(t.style,a,e,n,r)}}),vt("textShadow",{defaultValue:"0px 0px 0px #999",color:!0,multi:!0}),vt("autoRound,strictUnits",{parser:function(t,e,i,s,n){return n}}),vt("border",{defaultValue:"0px solid #000",parser:function(t,e,i,s,n,r){return this.parseComplex(t.style,this.format(nt(t,"borderTopWidth",k,!1,"0px")+" "+nt(t,"borderTopStyle",k,!1,"solid")+" "+nt(t,"borderTopColor",k,!1,"#000")),this.format(e),n,r)},color:!0,formatter:function(t){var e=t.split(" ");return e[0]+" "+(e[1]||"solid")+" "+(t.match(ct)||["#000"])[0]}}),vt("borderWidth",{parser:pt("borderTopWidth,borderRightWidth,borderBottomWidth,borderLeftWidth")}),vt("float,cssFloat,styleFloat",{parser:function(t,e,i,s,n){var r=t.style,a="cssFloat"in r?"cssFloat":"styleFloat";return new dt(r,a,0,0,n,-1,i,!1,0,r[a],e)}});function Ct(t){var e,i=this.t,s=i.filter||nt(this.data,"filter"),n=0|this.s+this.c*t;100==n&&(e=-1===s.indexOf("atrix(")&&-1===s.indexOf("radient(")&&-1===s.indexOf("oader(")?(i.removeAttribute("filter"),!nt(this.data,"filter")):(i.filter=s.replace(h,""),!0)),e||(this.xn1&&(i.filter=s=s||"alpha(opacity="+n+")"),-1===s.indexOf("pacity")?0==n&&this.xn1||(i.filter=s+" alpha(opacity="+n+")"):i.filter=s.replace(E,"opacity="+n))}vt("opacity,alpha,autoAlpha",{defaultValue:"1",parser:function(t,e,i,s,n,r){var a=parseFloat(nt(t,"opacity",k,!1,"1")),o=t.style,l="autoAlpha"===i;return"string"==typeof e&&"="===e.charAt(1)&&(e=("-"===e.charAt(0)?-1:1)*parseFloat(e.substr(2))+a),l&&1===a&&"hidden"===nt(t,"visibility",k)&&0!==e&&(a=0),Z?n=new dt(o,"opacity",a,e-a,n):((n=new dt(o,"opacity",100*a,100*(e-a),n)).xn1=l?1:0,o.zoom=1,n.type=2,n.b="alpha(opacity="+n.s+")",n.e="alpha(opacity="+(n.s+n.c)+")",n.data=t,n.plugin=r,n.setRatio=Ct),l&&((n=new dt(o,"visibility",0,0,n,-1,null,!1,0,0!==a?"inherit":"hidden",0===e?"hidden":"inherit")).xs0="inherit",s._overwriteProps.push(n.n),s._overwriteProps.push(i)),n}});function Mt(t,e){e&&(t.removeProperty?("ms"===e.substr(0,2)&&(e="M"+e.substr(1)),t.removeProperty(e.replace(u,"-$1").toLowerCase())):t.removeAttribute(e))}function Rt(t){if(this.t._gsClassPT=this,1===t||0===t){this.t.setAttribute("class",0===t?this.b:this.e);for(var e=this.data,i=this.t.style;e;)e.v?i[e.p]=e.v:Mt(i,e.p),e=e._next;1===t&&this.t._gsClassPT===this&&(this.t._gsClassPT=null)}else this.t.getAttribute("class")!==this.e&&this.t.setAttribute("class",this.e)}vt("className",{parser:function(t,e,i,s,n,r,a){var o,l,h,c,u,p=t.getAttribute("class")||"",f=t.style.cssText;if((n=s._classNamePT=new dt(t,i,0,0,n,2)).setRatio=Rt,n.pr=-11,d=!0,n.b=p,l=g(t,k),h=t._gsClassPT){for(c={},u=h.data;u;)c[u.p]=1,u=u._next;h.setRatio(1)}return(t._gsClassPT=n).e="="!==e.charAt(1)?e:p.replace(RegExp("\\s*\\b"+e.substr(2)+"\\b"),"")+("+"===e.charAt(0)?" "+e.substr(2):""),s._tween._duration&&(t.setAttribute("class",n.e),o=v(t,l,g(t),a,c),t.setAttribute("class",p),n.data=o.firstMPT,t.style.cssText=f,n=n.xfirst=s.parse(t,o.difs,n,r)),n}});function Dt(t){if((1===t||0===t)&&this.data._totalTime===this.data._totalDuration&&"isFromStart"!==this.data.data){var e,i,s,n,r=this.t.style,a=_.transform.parse;if("all"===this.e)n=!(r.cssText="");else for(s=(e=this.e.split(",")).length;-1<--s;)i=e[s],_[i]&&(_[i].parse===a?n=!0:i="transformOrigin"===i?Tt:_[i].p),Mt(r,i);n&&(Mt(r,xt),this.t._gsTransform&&delete this.t._gsTransform)}}for(vt("clearProps",{parser:function(t,e,i,s,n){return(n=new dt(t,i,0,0,n,2)).setRatio=Dt,n.e=e,n.pr=-10,n.data=s._tween,d=!0,n}}),t="bezier,throwProps,physicsProps,physics2D".split(","),mt=t.length;mt--;)!function(t){var l;_[t]||(l=t.charAt(0).toUpperCase()+t.substr(1)+"Plugin",vt(t,{parser:function(t,e,i,s,n,r,a){var o=(window.GreenSockGlobals||window).com.greensock.plugins[l];return o?(o._cssRegister(),_[i].parse(t,e,i,s,n,r,a)):(m("Error: "+l+" js file not loaded."),n)}}))}(t[mt]);(t=J.prototype)._firstPT=null,t._onInitTween=function(t,e,i){if(!t.nodeType)return!1;this._target=t,this._tween=i,this._vars=e,A=e.autoRound,d=!1,T=e.suffixMap||J.suffixMap,k=st(t,""),f=this._overwriteProps;var s,n,r,a,o,l,h,c,u,p=t.style;if(b&&""===p.zIndex&&("auto"!==(s=nt(t,"zIndex",k))&&""!==s||this._addLazySet(p,"zIndex",0)),"string"==typeof e&&(a=p.cssText,s=g(t,k),p.cssText=a+";"+e,s=v(t,s,g(t)).difs,!Z&&z.test(e)&&(s.opacity=parseFloat(RegExp.$1)),e=s,p.cssText=a),this._firstPT=n=this.parse(t,e,null),this._transformType){for(u=3===this._transformType,xt?C&&(b=!0,""===p.zIndex&&("auto"!==(h=nt(t,"zIndex",k))&&""!==h||this._addLazySet(p,"zIndex",0)),M&&this._addLazySet(p,"WebkitBackfaceVisibility",this._vars.WebkitBackfaceVisibility||(u?"visible":"hidden"))):p.zoom=1,r=n;r&&r._next;)r=r._next;c=new dt(t,"transform",0,0,null,2),this._linkCSSP(c,null,r),c.setRatio=u&&kt?Ot:xt?At:wt,c.data=this._transform||St(t,k,!0),f.pop()}if(d){for(;n;){for(l=n._next,r=a;r&&r.pr>n.pr;)r=r._next;(n._prev=r?r._prev:o)?n._prev._next=n:a=n,(n._next=r)?r._prev=n:o=n,n=l}this._firstPT=a}return!0},t.parse=function(t,e,i,s){var n,r,a,o,l,h,c,u,p,f,d=t.style;for(n in e)h=e[n],(r=_[n])?i=r.parse(t,h,n,this,i,s,e):(l=nt(t,n,k)+"",p="string"==typeof h,"color"===n||"fill"===n||"stroke"===n||-1!==n.indexOf("Color")||p&&N.test(h)?(p||(h=(3<(h=O(h)).length?"rgba(":"rgb(")+h.join(",")+")"),i=_t(d,n,l,h,!0,"transparent",i,0,s)):!p||-1===h.indexOf(" ")&&-1===h.indexOf(",")?(c=(a=parseFloat(l))||0===a?l.substr((a+"").length):"",""!==l&&"auto"!==l||(c="width"===n||"height"===n?(a=function(t,e,i){var s=parseFloat("width"===e?t.offsetWidth:t.offsetHeight),n=ot[e],r=n.length;for(i=i||st(t,null);-1<--r;)s-=parseFloat(nt(t,"padding"+n[r],i,!0))||0,s-=parseFloat(nt(t,"border"+n[r]+"Width",i,!0))||0;return s}(t,n,k),"px"):"left"===n||"top"===n?(a=at(t,n,k),"px"):(a="opacity"!==n?0:1,"")),""===(u=(f=p&&"="===h.charAt(1))?(o=parseInt(h.charAt(0)+"1",10),h=h.substr(2),o*=parseFloat(h),h.replace(X,"")):(o=parseFloat(h),p&&h.substr((o+"").length)||""))&&(u=n in T?T[n]:c),h=o||0===o?(f?o+a:o)+u:e[n],c!==u&&""!==u&&(o||0===o)&&a&&(a=rt(t,n,a,c),"%"===u?(a/=rt(t,n,100,"%")/100,!0!==e.strictUnits&&(l=a+"%")):"em"===u?a/=rt(t,n,1,"em"):"px"!==u&&(o=rt(t,n,o,u),u="px"),f&&(o||0===o)&&(h=o+a+u)),f&&(o+=a),!a&&0!==a||!o&&0!==o?void 0!==d[n]&&(h||"NaN"!=h+""&&null!=h)?(i=new dt(d,n,o||a||0,0,i,-1,n,!1,0,l,h)).xs0="none"!==h||"display"!==n&&-1===n.indexOf("Style")?h:l:m("invalid "+n+" tween value: "+e[n]):(i=new dt(d,n,a,o-a,i,0,n,!1!==A&&("px"===u||"zIndex"===n),0,l,h)).xs0=u):i=_t(d,n,l,h,!0,null,i,0,s)),s&&i&&!i.plugin&&(i.plugin=s);return i},t.setRatio=function(t){var e,i,s,n=this._firstPT;if(1!==t||this._tween._time!==this._tween._duration&&0!==this._tween._time)if(t||this._tween._time!==this._tween._duration&&0!==this._tween._time||-1e-6===this._tween._rawPrevTime)for(;n;){if(e=n.c*t+n.s,n.r?e=Math.round(e):e<1e-6&&-1e-6s;s++)i+=n["xn"+s]+n["xs"+(s+1)];n.t[n.p]=i}else-1===n.type?n.t[n.p]=n.xs0:n.setRatio&&n.setRatio(t);else n.t[n.p]=e+n.xs0;n=n._next}else for(;n;)2!==n.type?n.t[n.p]=n.b:n.setRatio(t),n=n._next;else for(;n;)2!==n.type?n.t[n.p]=n.e:n.setRatio(t),n=n._next},t._enableTransforms=function(t){this._transformType=t||3===this._transformType?3:2,this._transform=this._transform||St(this._target,k,!0)};function It(){this.t[this.p]=this.e,this.data._linkCSSP(this,this._next,null,!0)}t._addLazySet=function(t,e,i){var s=this._firstPT=new dt(t,e,0,0,this._firstPT,2);s.e=i,s.setRatio=It,s.data=this},t._linkCSSP=function(t,e,i,s){return t&&(e&&(e._prev=t),t._next&&(t._next._prev=t._prev),t._prev?t._prev._next=t._next:this._firstPT===t&&(this._firstPT=t._next,s=!0),i?i._next=t:s||null!==this._firstPT||(this._firstPT=t),t._next=e,t._prev=i),t},t._kill=function(t){var e,i,s,n=t;if(t.autoAlpha||t.alpha){for(i in n={},t)n[i]=t[i];n.opacity=1,n.autoAlpha&&(n.visibility=1)}return t.className&&(e=this._classNamePT)&&((s=e.xfirst)&&s._prev?this._linkCSSP(s._prev,e._next,s._prev._prev):s===this._firstPT&&(this._firstPT=e._next),e._next&&this._linkCSSP(e._next,e._next._next,s._prev),this._classNamePT=null),r.prototype._kill.call(this,n)};function Lt(t,e,i){var s,n,r,a;if(t.slice)for(n=t.length;-1<--n;)Lt(t[n],e,i);else for(n=(s=t.childNodes).length;-1<--n;)a=(r=s[n]).type,r.style&&(e.push(g(r)),i&&i.push(r)),1!==a&&9!==a&&11!==a||!r.childNodes.length||Lt(r,e,i)}return J.cascadeTo=function(t,e,i){var s,n,r,a=p.to(t,e,i),o=[a],l=[],h=[],c=[],u=p._internals.reservedProps;for(t=a._targets||a.target,Lt(t,l,c),a.render(e,!0),Lt(t,h),a.render(0,!0),a._enabled(!0),s=c.length;-1<--s;)if((n=v(c[s],l[s],h[s])).firstMPT){for(r in n=n.difs,i)u[r]&&(n[r]=i[r]);o.push(p.to(c[s],e,n))}return o},r.activate([J]),J},!0)}),window._gsDefine&&window._gsQueue.pop()()},{}],13:[function(t,e,i){"use strict";var s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};(window._gsQueue||(window._gsQueue=[])).push(function(){function r(t,e){var i="x"===e?"Width":"Height",s="scroll"+i,n="client"+i,r=document.body;return t===o||t===a||t===r?Math.max(a[s],r[s])-(o["inner"+i]||Math.max(a[n],r[n])):t[s]-t["offset"+i]}var a=document.documentElement,o=window,t=window._gsDefine.plugin({propName:"scrollTo",API:2,version:"1.7.3",init:function(t,e,i){return this._wdw=t===o,this._target=t,this._tween=i,"object"!=(void 0===e?"undefined":s(e))&&(e={y:e}),this._autoKill=!1!==e.autoKill,this.x=this.xPrev=this.getX(),this.y=this.yPrev=this.getY(),null!=e.x?(this._addTween(this,"x",this.x,"max"===e.x?r(t,"x"):e.x,"scrollTo_x",!0),this._overwriteProps.push("scrollTo_x")):this.skipX=!0,null!=e.y?(this._addTween(this,"y",this.y,"max"===e.y?r(t,"y"):e.y,"scrollTo_y",!0),this._overwriteProps.push("scrollTo_y")):this.skipY=!0,!0},set:function(t){this._super.setRatio.call(this,t);var e=this._wdw||!this.skipX?this.getX():this.xPrev,i=this._wdw||!this.skipY?this.getY():this.yPrev,s=i-this.yPrev,n=e-this.xPrev;this._autoKill&&(!this.skipX&&(7e&&(this.skipX=!0),!this.skipY&&(7i&&(this.skipY=!0),this.skipX&&this.skipY&&this._tween.kill()),this._wdw?o.scrollTo(this.skipX?e:this.x,this.skipY?i:this.y):(this.skipY||(this._target.scrollTop=this.y),this.skipX||(this._target.scrollLeft=this.x)),this.xPrev=this.x,this.yPrev=this.y}}),e=t.prototype;t.max=r,e.getX=function(){return this._wdw?null!=o.pageXOffset?o.pageXOffset:null!=a.scrollLeft?a.scrollLeft:document.body.scrollLeft:this._target.scrollLeft},e.getY=function(){return this._wdw?null!=o.pageYOffset?o.pageYOffset:null!=a.scrollTop?a.scrollTop:document.body.scrollTop:this._target.scrollTop},e._kill=function(t){return t.scrollTo_x&&(this.skipX=!0),t.scrollTo_y&&(this.skipY=!0),this._super._kill.call(this,t)}}),window._gsDefine&&window._gsQueue.pop()()},{}]},{},[2]); +//# sourceMappingURL=wpr-admin.js.map diff --git a/wp-content/plugins/wp-rocket/assets/js/wpr-admin.js.map b/wp-content/plugins/wp-rocket/assets/js/wpr-admin.js.map new file mode 100644 index 0000000..24e440e --- /dev/null +++ b/wp-content/plugins/wp-rocket/assets/js/wpr-admin.js.map @@ -0,0 +1 @@ +{"version":3,"names":[],"mappings":"","sources":["wpr-admin.js"],"sourcesContent":["!function r(a,o,l){function h(e,t){if(!o[e]){if(!a[e]){var i=\"function\"==typeof require&&require;if(!t&&i)return i(e,!0);if(c)return c(e,!0);var s=new Error(\"Cannot find module '\"+e+\"'\");throw s.code=\"MODULE_NOT_FOUND\",s}var n=o[e]={exports:{}};a[e][0].call(n.exports,function(t){return h(a[e][1][t]||t)},n,n.exports,r,a,o,l)}return o[e].exports}for(var c=\"function\"==typeof require&&require,t=0;t form > #wpr-options-submit\"),this.$pages=document.querySelectorAll(\".wpr-Page\"),this.$sidebar=document.querySelector(\".wpr-Sidebar\"),this.$content=document.querySelector(\".wpr-Content\"),this.$tips=document.querySelector(\".wpr-Content-tips\"),this.$links=document.querySelectorAll(\".wpr-body a\"),this.$menuItem=null,this.$page=null,this.pageId=null,this.bodyTop=0,this.buttonText=this.$submitButton.value,i.getBodyTop(),window.onhashchange=function(){i.detectID()},window.location.hash?(this.bodyTop=0,this.detectID()):(e=localStorage.getItem(\"wpr-hash\"),this.bodyTop=0,e?(window.location.hash=e,this.detectID()):(this.$menuItems[0].classList.add(\"isActive\"),localStorage.setItem(\"wpr-hash\",\"dashboard\"),window.location.hash=\"#dashboard\"));for(var s=0;sl;l++)i.startAt&&(i.startAt=d(i.startAt)),h.to(t[l],e,d(i),l*s);return this.add(h,n)},t.staggerFrom=function(t,e,i,s,n,r,a,o){return i.immediateRender=0!=i.immediateRender,i.runBackwards=!0,this.staggerTo(t,e,i,s,n,r,a,o)},t.staggerFromTo=function(t,e,i,s,n,r,a,o,l){return s.startAt=i,s.immediateRender=0!=s.immediateRender&&0!=i.immediateRender,this.staggerTo(t,e,s,n,r,a,o,l)},t.call=function(t,e,i,s){return this.add(p.delayedCall(0,t,e,i),s)},t.set=function(t,e,i){return i=this._parseTimeOrLabel(i,0,!0),null==e.immediateRender&&(e.immediateRender=i===this._time&&!this._paused),this.add(new p(t,0,e),i)},f.exportRoot=function(t,e){null==(t=t||{}).smoothChildTiming&&(t.smoothChildTiming=!0);var i,s,n=new f(t),r=n._timeline;for(null==e&&(e=!0),r._remove(n,!0),n._startTime=0,n._rawPrevTime=n._time=n._totalTime=r._time,i=r._first;i;)s=i._next,e&&i instanceof p&&i.target===i.vars.onComplete||n.add(i,i._startTime-i._delay),i=s;return r.add(n,0),n},t.add=function(t,e,i,s){var n,r,a,o,l,h;if(\"number\"!=typeof e&&(e=this._parseTimeOrLabel(e,0,!0,t)),!(t instanceof c)){if(t instanceof Array||t&&t.push&&g(t)){for(i=i||\"normal\",s=s||0,n=e,r=t.length,a=0;at._startTime;l._timeline;)h&&l._timeline.smoothChildTiming?l.totalTime(l._totalTime,!0):l._gc&&l._enabled(!0,!1),l=l._timeline;return this},t.remove=function(t){if(t instanceof c)return this._remove(t,!1);if(t instanceof Array||t&&t.push&&g(t)){for(var e=t.length;-1<--e;)this.remove(t[e]);return this}return\"string\"==typeof t?this.removeLabel(t):this.kill(null,t)},t._remove=function(t,e){u.prototype._remove.call(this,t,e);var i=this._last;return i?this._time>i._startTime+i._totalDuration/i._timeScale&&(this._time=this.duration(),this._totalTime=this._totalDuration):this._time=this._totalTime=this._duration=this._totalDuration=0,this},t.append=function(t,e){return this.add(t,this._parseTimeOrLabel(null,e,!0,t))},t.insert=t.insertMultiple=function(t,e,i,s){return this.add(t,e||0,i,s)},t.appendMultiple=function(t,e,i,s){return this.add(t,this._parseTimeOrLabel(null,e,!0,t),i,s)},t.addLabel=function(t,e){return this._labels[t]=this._parseTimeOrLabel(e),this},t.addPause=function(t,e,i,s){return this.call(n,[\"{self}\",e,i,s],this,t)},t.removeLabel=function(t){return delete this._labels[t],this},t.getLabelTime=function(t){return null!=this._labels[t]?this._labels[t]:-1},t._parseTimeOrLabel=function(t,e,i,s){var n;if(s instanceof c&&s.timeline===this)this.remove(s);else if(s&&(s instanceof Array||s.push&&g(s)))for(n=s.length;-1<--n;)s[n]instanceof c&&s[n].timeline===this&&this.remove(s[n]);if(\"string\"==typeof e)return this._parseTimeOrLabel(e,i&&\"number\"==typeof t&&null==this._labels[e]?t-this.duration():0,i);if(e=e||0,\"string\"!=typeof t||!isNaN(t)&&null==this._labels[t])null==t&&(t=this.duration());else{if(-1===(n=t.indexOf(\"=\")))return null==this._labels[t]?i?this._labels[t]=this.duration()+e:e:this._labels[t]+e;e=parseInt(t.charAt(n-1)+\"1\",10)*Number(t.substr(n+1)),t=1_&&(a=\"onReverseComplete\"))),this._rawPrevTime=this._duration||!e||t||this._rawPrevTime===t?t:_,t=l+1e-4):t<1e-7?(((this._totalTime=this._time=0)!==h||0===this._duration&&this._rawPrevTime!==_&&(0=h)for(s=this._first;s&&(r=s._next,!this._paused||p);)(s._active||s._startTime<=this._time&&!s._paused&&!s._gc)&&(s._reversed?s.render((s._dirty?s.totalDuration():s._totalDuration)-(t-s._startTime)*s._timeScale,e,i):s.render((t-s._startTime)*s._timeScale,e,i)),s=r;else for(s=this._last;s&&(r=s._prev,!this._paused||p);)(s._active||h>=s._startTime&&!s._paused&&!s._gc)&&(s._reversed?s.render((s._dirty?s.totalDuration():s._totalDuration)-(t-s._startTime)*s._timeScale,e,i):s.render((t-s._startTime)*s._timeScale,e,i)),s=r;this._onUpdate&&(e||this._onUpdate.apply(this.vars.onUpdateScope||this,this.vars.onUpdateParams||v)),a&&(this._gc||c!==this._startTime&&u===this._timeScale||!(0===this._time||l>=this.totalDuration())||(n&&(this._timeline.autoRemoveChildren&&this._enabled(!1,!1),this._active=!1),!e&&this.vars[a]&&this.vars[a].apply(this.vars[a+\"Scope\"]||this,this.vars[a+\"Params\"]||v)))}},t._hasPausedChild=function(){for(var t=this._first;t;){if(t._paused||t instanceof f&&t._hasPausedChild())return!0;t=t._next}return!1},t.getChildren=function(t,e,i,s){s=s||-9999999999;for(var n=[],r=this._first,a=0;r;)s>r._startTime||(r instanceof p?!1!==e&&(n[a++]=r):(!1!==i&&(n[a++]=r),!1!==t&&(a=(n=n.concat(r.getChildren(!0,e,i))).length))),r=r._next;return n},t.getTweensOf=function(t,e){var i,s,n=this._gc,r=[],a=0;for(n&&this._enabled(!0,!0),s=(i=p.getTweensOf(t)).length;-1<--s;)(i[s].timeline===this||e&&this._contains(i[s]))&&(r[a++]=i[s]);return n&&this._enabled(!1,!0),r},t._contains=function(t){for(var e=t.timeline;e;){if(e===this)return!0;e=e.timeline}return!1},t.shiftChildren=function(t,e,i){i=i||0;for(var s,n=this._first,r=this._labels;n;)n._startTime>=i&&(n._startTime+=t),n=n._next;if(e)for(s in r)r[s]>=i&&(r[s]+=t);return this._uncache(!0)},t._kill=function(t,e){if(!t&&!e)return this._enabled(!1,!1);for(var i=e?this.getTweensOf(e):this.getChildren(!0,!0,!1),s=i.length,n=!1;-1<--s;)i[s]._kill(t,e)&&(n=!0);return n},t.clear=function(t){var e=this.getChildren(!1,!0,!0),i=e.length;for(this._time=this._totalTime=0;-1<--i;)e[i]._enabled(!1,!1);return!1!==t&&(this._labels={}),this._uncache(!0)},t.invalidate=function(){for(var t=this._first;t;)t.invalidate(),t=t._next;return this},t._enabled=function(t,e){if(t===this._gc)for(var i=this._first;i;)i._enabled(t,!0),i=i._next;return u.prototype._enabled.call(this,t,e)},t.duration=function(t){return arguments.length?(0!==this.duration()&&0!==t&&this.timeScale(this._duration/t),this):(this._dirty&&this.totalDuration(),this._duration)},t.totalDuration=function(t){if(arguments.length)return 0!==this.totalDuration()&&0!==t&&this.timeScale(this._totalDuration/t),this;if(this._dirty){for(var e,i,s=0,n=this._last,r=999999999999;n;)e=n._prev,n._dirty&&n.totalDuration(),n._startTime>r&&this._sortChildren&&!n._paused?this.add(n,n._startTime-n._delay):r=n._startTime,n._startTime<0&&!n._paused&&(s-=n._startTime,this._timeline.smoothChildTiming&&(this._startTime+=n._startTime/this._timeScale),this.shiftChildren(-n._startTime,!1,-9999999999),r=0),s<(i=n._startTime+n._totalDuration/n._timeScale)&&(s=i),n=e;this._duration=this._totalDuration=s,this._dirty=!1}return this._totalDuration},t.usesFrames=function(){for(var t=this._timeline;t._timeline;)t=t._timeline;return t===c._rootFramesTimeline},t.rawTime=function(){return this._paused?this._totalTime:(this._timeline.rawTime()-this._startTime)*this._timeScale},f},!0)}),window._gsDefine&&window._gsQueue.pop()()},{}],10:[function(t,W,e){\"use strict\";var Q=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t};!function(f){var e,i,d=f.GreenSockGlobals||f;if(!d.TweenLite){var _,m=function(t){for(var e=t.split(\".\"),i=d,s=0;e.length>s;s++)i[e[s]]=i=i[e[s]]||{};return i},u=m(\"com.greensock\"),g=1e-10,l=[].slice,s=function(){},c=(e=Object.prototype.toString,i=e.call([]),function(t){return null!=t&&(t instanceof Array||\"object\"==(void 0===t?\"undefined\":Q(t))&&!!t.push&&e.call(t)===i)}),v={},n=function o(l,h,c,u){this.sc=v[l]?v[l].sc:[],(v[l]=this).gsClass=null,this.func=c;var p=[];this.check=function(t){for(var e,i,s,n,r=h.length,a=r;-1<--r;)(e=v[h[r]]||new o(h[r],[])).gsClass?(p[r]=e.gsClass,a--):t&&e.sc.push(this);if(0===a&&c)for(s=(i=(\"com.greensock.\"+l).split(\".\")).pop(),n=m(i.join(\".\"))[s]=this.gsClass=c.apply(c,p),u&&(d[s]=n,\"function\"==typeof define&&define.amd?define((f.GreenSockAMDPath?f.GreenSockAMDPath+\"/\":\"\")+l.split(\".\").join(\"/\"),[],function(){return n}):void 0!==W&&W.exports&&(W.exports=n)),r=0;this.sc.length>r;r++)this.sc[r].check()},this.check(!0)},r=f._gsDefine=function(t,e,i,s){return new n(t,e,i,s)},p=u._class=function(t,e,i){return e=e||function(){},r(t,[],function(){return e},i),e};r.globals=d;var t,a=[0,0,1,1],w=[],y=p(\"easing.Ease\",function(t,e,i,s){this._func=t,this._type=i||0,this._power=s||0,this._params=e?a.concat(e):a},!0),x=y.map={},o=y.register=function(t,e,i,s){for(var n,r,a,o,l=e.split(\",\"),h=l.length,c=(i||\"easeIn,easeOut,easeInOut\").split(\",\");-1<--h;)for(r=l[h],n=s?p(\"easing.\"+r,null,!0):u.easing[r]||{},a=c.length;-1<--a;)o=c[a],x[r+\".\"+o]=x[o+r]=n[o]=t.getRatio?t:t[o]||new t};for((t=y.prototype)._calcEnd=!1,t.getRatio=function(t){if(this._func)return this._params[0]=t,this._func.apply(null,this._params);var e=this._type,i=this._power,s=1===e?1-t:2===e?t:t<.5?2*t:2*(1-t);return 1===i?s*=s:2===i?s*=s*s:3===i?s*=s*s*s:4===i&&(s*=s*s*s*s),1===e?1-s:2===e?s:t<.5?s/2:1-s/2},O=(h=[\"Linear\",\"Quad\",\"Cubic\",\"Quart\",\"Quint,Strong\"]).length;-1<--O;)t=h[O]+\",Power\"+O,o(new y(null,null,1,O),t,\"easeOut\",!0),o(new y(null,null,2,O),t,\"easeIn\"+(0===O?\",easeNone\":\"\")),o(new y(null,null,3,O),t,\"easeInOut\");x.linear=u.easing.Linear.easeIn,x.swing=u.easing.Quad.easeInOut;var b=p(\"events.EventDispatcher\",function(t){this._listeners={},this._eventTarget=t||this});(t=b.prototype).addEventListener=function(t,e,i,s,n){n=n||0;var r,a,o=this._listeners[t],l=0;for(null==o&&(this._listeners[t]=o=[]),a=o.length;-1<--a;)(r=o[a]).c===e&&r.s===i?o.splice(a,1):0===l&&n>r.pr&&(l=a+1);o.splice(l,0,{c:e,s:i,up:s,pr:n}),this!==C||_||C.wake()},t.removeEventListener=function(t,e){var i,s=this._listeners[t];if(s)for(i=s.length;-1<--i;)if(s[i].c===e)return void s.splice(i,1)},t.dispatchEvent=function(t){var e,i,s,n=this._listeners[t];if(n)for(e=n.length,i=this._eventTarget;-1<--e;)(s=n[e]).up?s.c.call(s.s||i,{type:t,target:i}):s.c.call(s.s||i)};for(var h,T=f.requestAnimationFrame,k=f.cancelAnimationFrame,P=Date.now||function(){return(new Date).getTime()},S=P(),O=(h=[\"ms\",\"moz\",\"webkit\",\"o\"]).length;-1<--O&&!T;)T=f[h[O]+\"RequestAnimationFrame\"],k=f[h[O]+\"CancelAnimationFrame\"]||f[h[O]+\"CancelRequestAnimationFrame\"];p(\"Ticker\",function(t,e){function n(t){var e,i,s=P()-S;p=i&&i+this.totalDuration()/this._timeScale>t},t._enabled=function(t,e){return _||C.wake(),this._gc=!t,this._active=this.isActive(),!0!==e&&(t&&!this.timeline?this._timeline.add(this,this._startTime-this._delay):!t&&this.timeline&&this._timeline._remove(this,!0)),!1},t._kill=function(){return this._enabled(!1,!1)},t.kill=function(t,e){return this._kill(t,e),this},t._uncache=function(t){for(var e=t?this:this.timeline;e;)e._dirty=!0,e=e.timeline;return this},t._swapSelfInParams=function(t){for(var e=t.length,i=t.concat();-1<--e;)\"{self}\"===t[e]&&(i[e]=this);return i},t.eventCallback=function(t,e,i,s){if(\"on\"===(t||\"\").substr(0,2)){var n=this.vars;if(1===arguments.length)return n[t];null==e?delete n[t]:(n[t]=e,n[t+\"Params\"]=c(i)&&-1!==i.join(\"\").indexOf(\"{self}\")?this._swapSelfInParams(i):i,n[t+\"Scope\"]=s),\"onUpdate\"===t&&(this._onUpdate=e)}return this},t.delay=function(t){return arguments.length?(this._timeline.smoothChildTiming&&this.startTime(this._startTime+t-this._delay),this._delay=t,this):this._delay},t.duration=function(t){return arguments.length?(this._duration=this._totalDuration=t,this._uncache(!0),this._timeline.smoothChildTiming&&0this._duration?this._duration:t,e)):this._time},t.totalTime=function(t,e,i){if(_||C.wake(),!arguments.length)return this._totalTime;if(this._timeline){if(t<0&&!i&&(t+=this.totalDuration()),this._timeline.smoothChildTiming){this._dirty&&this.totalDuration();var s=this._totalDuration,n=this._timeline;if(ss;)i=i._prev;return i?(t._next=i._next,i._next=t):(t._next=this._first,this._first=t),t._next?t._next._prev=t:this._last=t,t._prev=i,this._timeline&&this._uncache(!0),this},t._remove=function(t,e){return t.timeline===this&&(e||t._enabled(!1,!0),t.timeline=null,t._prev?t._prev._next=t._next:this._first===t&&(this._first=t._next),t._next?t._next._prev=t._prev:this._last===t&&(this._last=t._prev),this._timeline&&this._uncache(!0)),this},t.render=function(t,e,i){var s,n=this._first;for(this._totalTime=this._time=this._rawPrevTime=t;n;)s=n._next,(n._active||t>=n._startTime&&!n._paused)&&(n._reversed?n.render((n._dirty?n.totalDuration():n._totalDuration)-(t-n._startTime)*n._timeScale,e,i):n.render((t-n._startTime)*n._timeScale,e,i)),n=s},t.rawTime=function(){return _||C.wake(),this._totalTime};var R=p(\"TweenLite\",function(t,e,i){if(A.call(this,e,i),this.render=R.prototype.render,null==t)throw\"Cannot tween a null target.\";this.target=t=\"string\"==typeof t&&R.selector(t)||t;var s,n,r,a=t.jquery||t.length&&t!==f&&t[0]&&(t[0]===f||t[0].nodeType&&t[0].style&&!t.nodeType),o=this.vars.overwrite;if(this._overwrite=o=null==o?Y[R.defaultOverwrite]:\"number\"==typeof o?o>>0:Y[o],(a||t instanceof Array||t.push&&c(t))&&\"number\"!=typeof t[0])for(this._targets=r=l.call(t,0),this._propLookup=[],this._siblings=[],s=0;r.length>s;s++)(n=r[s])?\"string\"!=typeof n?n.length&&n!==f&&n[0]&&(n[0]===f||n[0].nodeType&&n[0].style&&!n.nodeType)?(r.splice(s--,1),this._targets=r=r.concat(l.call(n,0))):(this._siblings[s]=q(n,this,!1),1===o&&1=a._startTime&&a._startTime+a.totalDuration()/a._timeScale>h&&((p||!a._initted)&&h-a._startTime<=2e-10||(c[u++]=a)));for(f=u;-1<--f;)a=c[f],2===s&&a._kill(i,t)&&(r=!0),(2!==s||!a._firstPT&&a._initted)&&a._enabled(!1,!1)&&(r=!0);return r},H=function(t,e,i){for(var s=t._timeline,n=s._timeScale,r=t._startTime;s._timeline;){if(r+=s._startTime,n*=s._timeScale,s._paused)return-100;s=s._timeline}return e<(r/=n)?r-e:i&&r===e||!t._initted&&r-e<2*g?g:(r+=t.totalDuration()/t._timeScale/n)>e+g?0:r-e-g};t._init=function(){var t,e,i,s,n,r=this.vars,a=this._overwrittenProps,o=this._duration,l=!!r.immediateRender,h=r.ease;if(r.startAt){for(s in this._startAt&&(this._startAt.render(-1,!0),this._startAt.kill()),n={},r.startAt)n[s]=r.startAt[s];if(n.overwrite=!1,n.immediateRender=!0,n.lazy=l&&!1!==r.lazy,n.startAt=n.delay=null,this._startAt=R.to(this.target,0,n),l)if(0o.pr;)s=s._next;(o._prev=s?s._prev:r)?o._prev._next=o:n=o,(o._next=s)?s._prev=o:r=o,o=a}o=e._firstPT=n}for(;o;)o.pg&&\"function\"==typeof o.t[t]&&o.t[t]()&&(i=!0),o=o._next;return i},V.activate=function(t){for(var e=t.length;-1<--e;)t[e].API===V.API&&(X[(new t[e])._propName]=t[e]);return!0},r.plugin=function(t){if(!(t&&t.propName&&t.init&&t.API))throw\"illegal plugin definition.\";var e,i=t.propName,s=t.priority||0,n=t.overwriteProps,r={init:\"_onInitTween\",set:\"setRatio\",kill:\"_kill\",round:\"_roundProps\",initAll:\"_onInitAllProps\"},a=p(\"plugins.\"+i.charAt(0).toUpperCase()+i.substr(1)+\"Plugin\",function(){V.call(this,i,s),this._overwriteProps=n||[]},!0===t.global),o=a.prototype=new V(i);for(e in(o.constructor=a).API=t.API,r)\"function\"==typeof t[e]&&(o[r[e]]=t[e]);return a.version=t.version,V.activate([a]),a},h=f._gsQueue){for(O=0;h.length>O;O++)h[O]();for(t in v)v[t].func||f.console.log(\"GSAP encountered missing dependency: com.greensock.\"+t)}_=!1}}(window)},{}],11:[function(t,e,i){\"use strict\";(window._gsQueue||(window._gsQueue=[])).push(function(){window._gsDefine(\"easing.Back\",[\"easing.Ease\"],function(m){function t(t,e){var i=c(\"easing.\"+t,function(){},!0),s=i.prototype=new m;return s.constructor=i,s.getRatio=e,i}function e(t,e,i,s){var n=c(\"easing.\"+t,{easeOut:new e,easeIn:new i,easeInOut:new s},!0);return u(n,t),n}function g(t,e,i){this.t=t,this.v=e,i&&(((this.next=i).prev=this).c=i.v-e,this.gap=i.t-t)}function i(t,e){var i=c(\"easing.\"+t,function(t){this._p1=t||0===t?t:1.70158,this._p2=1.525*this._p1},!0),s=i.prototype=new m;return s.constructor=i,s.getRatio=e,s.config=function(t){return new i(t)},i}var s,n,r,a=window.GreenSockGlobals||window,o=a.com.greensock,l=2*Math.PI,h=Math.PI/2,c=o._class,u=m.register||function(){},p=e(\"Back\",i(\"BackOut\",function(t){return--t*t*((this._p1+1)*t+this._p1)+1}),i(\"BackIn\",function(t){return t*t*((this._p1+1)*t-this._p1)}),i(\"BackInOut\",function(t){return(t*=2)<1?.5*t*t*((this._p2+1)*t-this._p2):.5*((t-=2)*t*((this._p2+1)*t+this._p2)+2)})),f=c(\"easing.SlowMo\",function(t,e,i){e=e||0===e?e:.7,null==t?t=.7:1t?this._calcEnd?1-(t=1-t/this._p1)*t:e-(t=1-t/this._p1)*t*t*t*e:t>this._p3?this._calcEnd?1-(t=(t-this._p3)/this._p1)*t:e+(t-e)*(t=(t-this._p3)/this._p1)*t*t*t:this._calcEnd?1:e},f.ease=new f(.7,.7),d.config=f.config=function(t,e,i){return new f(t,e,i)},(d=(s=c(\"easing.SteppedEase\",function(t){t=t||1,this._p1=1/t,this._p2=t+1},!0)).prototype=new m).constructor=s,d.getRatio=function(t){return t<0?t=0:1<=t&&(t=.999999999),(this._p2*t>>0)*this._p1},d.config=s.config=function(t){return new s(t)},(d=(n=c(\"easing.RoughEase\",function(t){for(var e,i,s,n,r,a,o=(t=t||{}).taper||\"none\",l=[],h=0,c=0|(t.points||20),u=c,p=!1!==t.randomize,f=!0===t.clamp,d=t.template instanceof m?t.template:null,_=\"number\"==typeof t.strength?.4*t.strength:.4;-1<--u;)e=p?Math.random():1/c*u,i=d?d.getRatio(e):e,s=\"none\"===o?_:\"out\"===o?(n=1-e)*n*_:\"in\"===o?e*e*_:.5*(n=e<.5?2*e:2*(1-e))*n*_,p?i+=Math.random()*s-.5*s:u%2?i+=.5*s:i-=.5*s,f&&(1e.t){for(;e.next&&t>=e.t;)e=e.next;e=e.prev}else for(;e.prev&&e.t>=t;)e=e.prev;return(this._prev=e).v+(t-e.t)/e.gap*e.c},d.config=function(t){return new n(t)},n.ease=new n,e(\"Bounce\",t(\"BounceOut\",function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375}),t(\"BounceIn\",function(t){return 1/2.75>(t=1-t)?1-7.5625*t*t:t<2/2.75?1-(7.5625*(t-=1.5/2.75)*t+.75):t<2.5/2.75?1-(7.5625*(t-=2.25/2.75)*t+.9375):1-(7.5625*(t-=2.625/2.75)*t+.984375)}),t(\"BounceInOut\",function(t){var e=t<.5;return t=(t=e?1-2*t:2*t-1)<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375,e?.5*(1-t):.5*t+.5})),e(\"Circ\",t(\"CircOut\",function(t){return Math.sqrt(1- --t*t)}),t(\"CircIn\",function(t){return-(Math.sqrt(1-t*t)-1)}),t(\"CircInOut\",function(t){return(t*=2)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)})),e(\"Elastic\",(r=function(t,e,i){var s=c(\"easing.\"+t,function(t,e){this._p1=t||1,this._p2=e||i,this._p3=this._p2/l*(Math.asin(1/this._p1)||0)},!0),n=s.prototype=new m;return n.constructor=s,n.getRatio=e,n.config=function(t,e){return new s(t,e)},s})(\"ElasticOut\",function(t){return this._p1*Math.pow(2,-10*t)*Math.sin((t-this._p3)*l/this._p2)+1},.3),r(\"ElasticIn\",function(t){return-(this._p1*Math.pow(2,10*--t)*Math.sin((t-this._p3)*l/this._p2))},.3),r(\"ElasticInOut\",function(t){return(t*=2)<1?-.5*this._p1*Math.pow(2,10*--t)*Math.sin((t-this._p3)*l/this._p2):.5*this._p1*Math.pow(2,-10*--t)*Math.sin((t-this._p3)*l/this._p2)+1},.45)),e(\"Expo\",t(\"ExpoOut\",function(t){return 1-Math.pow(2,-10*t)}),t(\"ExpoIn\",function(t){return Math.pow(2,10*(t-1))-.001}),t(\"ExpoInOut\",function(t){return(t*=2)<1?.5*Math.pow(2,10*(t-1)):.5*(2-Math.pow(2,-10*(t-1)))})),e(\"Sine\",t(\"SineOut\",function(t){return Math.sin(t*h)}),t(\"SineIn\",function(t){return 1-Math.cos(t*h)}),t(\"SineInOut\",function(t){return-.5*(Math.cos(Math.PI*t)-1)})),c(\"easing.EaseLookup\",{find:function(t){return m.map[t]}},!0),u(a.SlowMo,\"SlowMo\",\"ease,\"),u(n,\"RoughEase\",\"ease,\"),u(s,\"SteppedEase\",\"ease,\"),p},!0)}),window._gsDefine&&window._gsQueue.pop()()},{}],12:[function(t,e,i){\"use strict\";var jt=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t};(window._gsQueue||(window._gsQueue=[])).push(function(){window._gsDefine(\"plugins.CSSPlugin\",[\"plugins.TweenPlugin\",\"TweenLite\"],function(r,p){function J(){r.call(this,\"css\"),this._overwriteProps.length=0,this.setRatio=J.prototype.setRatio}var d,T,k,f,_={},t=J.prototype=new r(\"css\");(t.constructor=J).version=\"1.12.1\",J.API=2,J.defaultTransformPerspective=0,J.defaultSkewType=\"compensated\",J.suffixMap={top:t=\"px\",right:t,bottom:t,left:t,width:t,height:t,fontSize:t,padding:t,margin:t,perspective:t,lineHeight:\"\"};function a(t,e){return e.toUpperCase()}function o(t){return E.test(\"string\"==typeof t?t:(t.currentStyle?t.currentStyle.filter:t.style.filter)||\"\")?parseFloat(RegExp.$1)/100:1}function m(t){window.console&&console.log(t)}function P(t,e){var i,s,n=(e=e||V).style;if(void 0!==n[t])return t;for(t=t.charAt(0).toUpperCase()+t.substr(1),i=[\"O\",\"Moz\",\"ms\",\"Ms\",\"Webkit\"],s=5;-1<--s&&void 0===n[i[s]+t];);return 0<=s?(G=\"-\"+(K=3===s?\"ms\":i[s]).toLowerCase()+\"-\",K+t):null}function g(t,e){var i,s,n={};if(e=e||st(t,null))if(i=e.length)for(;-1<--i;)n[e[i].replace(Y,a)]=e.getPropertyValue(e[i]);else for(i in e)n[i]=e[i];else if(e=t.currentStyle||t.style)for(i in e)\"string\"==typeof i&&void 0===n[i]&&(n[i.replace(Y,a)]=e[i]);return Z||(n.opacity=o(t)),s=St(t,e,!1),n.rotation=s.rotation,n.skewX=s.skewX,n.scaleX=s.scaleX,n.scaleY=s.scaleY,n.x=s.x,n.y=s.y,kt&&(n.z=s.z,n.rotationX=s.rotationX,n.rotationY=s.rotationY,n.scaleZ=s.scaleZ),n.filters&&delete n.filters,n}function v(t,e,i,s,n){var r,a,o,l={},h=t.style;for(a in i)\"cssText\"!==a&&\"length\"!==a&&isNaN(a)&&(e[a]!==(r=i[a])||n&&n[a])&&-1===a.indexOf(\"Origin\")&&(\"number\"==typeof r||\"string\"==typeof r)&&(l[a]=\"auto\"!==r||\"left\"!==a&&\"top\"!==a?\"\"!==r&&\"auto\"!==r&&\"none\"!==r||\"string\"!=typeof e[a]||\"\"===e[a].replace(c,\"\")?r:0:at(t,a),void 0!==h[a]&&(o=new ft(h,a,h[a],o)));if(s)for(a in s)\"className\"!==a&&(l[a]=s[a]);return{difs:l,firstMPT:o}}function w(t,e){null!=t&&\"\"!==t&&\"auto\"!==t&&\"auto auto\"!==t||(t=\"0 0\");var i=t.split(\" \"),s=-1!==t.indexOf(\"left\")?\"0%\":-1!==t.indexOf(\"right\")?\"100%\":i[0],n=-1!==t.indexOf(\"top\")?\"0%\":-1!==t.indexOf(\"bottom\")?\"100%\":i[1];return null==n?n=\"0\":\"center\"===n&&(n=\"50%\"),(\"center\"===s||isNaN(parseFloat(s))&&-1===(s+\"\").indexOf(\"=\"))&&(s=\"50%\"),e&&(e.oxp=-1!==s.indexOf(\"%\"),e.oyp=-1!==n.indexOf(\"%\"),e.oxr=\"=\"===s.charAt(1),e.oyr=\"=\"===n.charAt(1),e.ox=parseFloat(s.replace(c,\"\")),e.oy=parseFloat(n.replace(c,\"\"))),s+\" \"+n+(2>16,255&t>>8,255&t]:(\",\"===t.charAt(t.length-1)&&(t=t.substr(0,t.length-1)),ht[t]?ht[t]:\"#\"===t.charAt(0)?(4===t.length&&(t=\"#\"+(e=t.charAt(1))+e+(i=t.charAt(2))+i+(s=t.charAt(3))+s),[(t=parseInt(t.substr(1),16))>>16,255&t>>8,255&t]):(\"hsl\"===t.substr(0,3)?(t=t.match(I),n=Number(t[0])%360/360,r=Number(t[1])/100,e=2*(a=Number(t[2])/100)-(i=a<=.5?a*(1+r):a+r-a*r),3a\",!!(e=s.getElementsByTagName(\"a\")[0])&&/^0.55/.test(e.style.opacity)),G=\"\",K=\"\",st=H.defaultView?H.defaultView.getComputedStyle:function(){},nt=J.getStyle=function(t,e,i,s,n){var r;return Z||\"opacity\"!==e?(!s&&t.style[e]?r=t.style[e]:(i=i||st(t))?r=i[e]||i.getPropertyValue(e)||i.getPropertyValue(e.replace(u,\"-$1\").toLowerCase()):t.currentStyle&&(r=t.currentStyle[e]),null==n||r&&\"none\"!==r&&\"auto\"!==r&&\"auto auto\"!==r?r:n):o(t)},rt=n.convertToPixels=function(t,e,i,s,n){if(\"px\"===s||!s)return i;if(\"auto\"===s||!i)return 0;var r,a,o,l=B.test(e),h=t,c=V.style,u=i<0;if(u&&(i=-i),\"%\"===s&&-1!==e.indexOf(\"border\"))r=i/100*(l?t.clientWidth:t.clientHeight);else{if(c.cssText=\"border:0 solid red;position:\"+nt(t,\"position\")+\";line-height:0;\",\"%\"!==s&&h.appendChild)c[l?\"borderLeftWidth\":\"borderTopWidth\"]=i+s;else{if(a=(h=t.parentNode||H.body)._gsCache,o=p.ticker.frame,a&&l&&a.time===o)return a.width*i/100;c[l?\"width\":\"height\"]=i+s}h.appendChild(V),r=parseFloat(V[l?\"offsetWidth\":\"offsetHeight\"]),h.removeChild(V),l&&\"%\"===s&&!1!==J.cacheWidths&&((a=h._gsCache=h._gsCache||{}).time=o,a.width=r/i*100),0!==r||n||(r=rt(t,e,i,s,!0))}return u?-r:r},at=n.calculateOffset=function(t,e,i){if(\"absolute\"!==nt(t,\"position\",i))return 0;var s=\"left\"===e?\"Left\":\"Top\",n=nt(t,\"margin\"+s,i);return t[\"offset\"+s]-(rt(t,e,parseFloat(n),n.replace(X,\"\"))||0)},ot={width:[\"Left\",\"Right\"],height:[\"Top\",\"Bottom\"]},lt=[\"marginLeft\",\"marginRight\",\"marginTop\",\"marginBottom\"],ht={aqua:[0,255,255],lime:[0,255,0],silver:[192,192,192],black:[0,0,0],maroon:[128,0,0],teal:[0,128,128],blue:[0,0,255],navy:[0,0,128],white:[255,255,255],fuchsia:[255,0,255],olive:[128,128,0],yellow:[255,255,0],orange:[255,165,0],gray:[128,128,128],purple:[128,0,128],green:[0,128,0],red:[255,0,0],pink:[255,192,203],cyan:[0,255,255],transparent:[255,255,255,0]},ct=\"(?:\\\\b(?:(?:rgb|rgba|hsl|hsla)\\\\(.+?\\\\))|\\\\B#.+?\\\\b\";for(t in ht)ct+=\"|\"+t+\"\\\\b\";ct=RegExp(ct+\")\",\"gi\");function ut(t,e,r,a){if(null==t)return function(t){return t};var o,l=e?(t.match(ct)||[\"\"])[0]:\"\",h=t.split(l).join(\"\").match(j)||[],c=t.substr(0,t.indexOf(h[0])),u=\")\"===t.charAt(t.length-1)?\")\":\"\",p=-1!==t.indexOf(\" \")?\" \":\",\",f=h.length,d=0s;s++)n[s]=o(n[s]);return n.join(\",\")}if(e=(t.match(ct)||[l])[0],s=(i=t.split(e).join(\"\").match(j)||[]).length,f>s--)for(;f>++s;)i[s]=r?i[0|(s-1)/2]:h[s];return c+i.join(p)+p+e+u+(-1!==t.indexOf(\"inset\")?\" inset\":\"\")}:function(t){var e,i,s;if(\"number\"==typeof t)t+=d;else if(a&&q.test(t)){for(i=t.replace(q,\"|\").split(\"|\"),s=0;i.length>s;s++)i[s]=o(i[s]);return i.join(\",\")}if(s=(e=t.match(j)||[]).length,f>s--)for(;f>++s;)e[s]=r?e[0|(s-1)/2]:h[s];return c+e.join(p)+u}:function(t){return t}}function pt(h){return h=h.split(\",\"),function(t,e,i,s,n,r,a){var o,l=(e+\"\").split(\" \");for(a={},o=0;o<4;o++)a[h[o]]=l[o]=l[o]||l[(o-1)/2>>0];return s.parse(t,a,n,r)}}var ft=(n._setPluginRatio=function(t){this.plugin.setRatio(t);for(var e,i,s,n,r=this.data,a=r.proxy,o=r.firstMPT;o;)e=a[o.v],o.r?e=Math.round(e):e<1e-6&&-1e-6s;s++)n+=i[\"xn\"+s]+i[\"xs\"+(s+1)];i.e=n}}else i.e=i.s+i.xs0;o=o._next}},function(t,e,i,s,n){this.t=t,this.p=e,this.v=i,this.r=n,s&&((s._prev=this)._next=s)}),dt=(n._parseToProxy=function(t,e,i,s,n,r){var a,o,l,h,c,u=s,p={},f={},d=i._transform,_=U;for(i._transform=null,U=e,s=c=i.parse(t,e,s,n),U=_,r&&(i._transform=d,u&&(u._prev=null,u._prev&&(u._prev._next=null)));s&&s!==u;){if(s.type<=1&&(f[o=s.p]=s.s+s.c,p[o]=s.s,r||(h=new ft(s,\"s\",o,h,s.r),s.c=0),1===s.type))for(a=s.l;0<--a;)l=\"xn\"+a,f[o=s.p+\"_\"+l]=s.data[l],p[o]=s[l],r||(h=new ft(s,l,o,h,s.rxp[l]));s=s._next}return{proxy:p,end:f,firstMPT:h,pt:c}},n.CSSPropTween=function(t,e,i,s,n,r,a,o,l,h,c){this.t=t,this.p=e,this.s=i,this.c=s,this.n=a||e,t instanceof dt||f.push(this.n),this.r=o,this.type=r||0,l&&(this.pr=l,d=!0),this.b=void 0===h?i:h,this.e=void 0===c?i+s:c,n&&((this._next=n)._prev=this)}),_t=J.parseComplex=function(t,e,i,s,n,r,a,o,l,h){a=new dt(t,e,0,0,a,h?2:1,null,!1,o,i=i||r||\"\",s),s+=\"\";var c,u,p,f,d,_,m,g,v,w,y,x,b=i.split(\", \").join(\",\").split(\" \"),T=s.split(\", \").join(\",\").split(\" \"),k=b.length,P=!1!==A;for(-1===s.indexOf(\",\")&&-1===i.indexOf(\",\")||(b=b.join(\" \").replace(q,\", \").split(\" \"),T=T.join(\" \").replace(q,\", \").split(\" \"),k=b.length),k!==T.length&&(k=(b=(r||\"\").split(\" \")).length),a.plugin=l,a.setRatio=h,c=0;cu;u++)y=_[u],w=f.indexOf(y,p),a.appendXtra(f.substr(p,w-p),Number(y),S(m[u],y),\"\",P&&\"px\"===f.substr(w+y.length,2),0===u),p=w+y.length;a[\"xs\"+a.l]+=f.substr(p)}else a[\"xs\"+a.l]+=a.l?\" \"+f:f;if(-1!==s.indexOf(\"=\")&&a.data){for(x=a.xs0+a.data.s,c=1;a.l>c;c++)x+=a[\"xs\"+c]+a.data[\"xn\"+c];a.e=x+a[\"xs\"+c]}return a.l||(a.type=-1,a.xs0=a.e),a.xfirst||a},mt=9;for((t=dt.prototype).l=t.pr=0;0<--mt;)t[\"xn\"+mt]=0,t[\"xs\"+mt]=\"\";t.xs0=\"\",t._next=t._prev=t.xfirst=t.data=t.plugin=t.setRatio=t.rxp=null,t.appendXtra=function(t,e,i,s,n,r){var a=this,o=a.l;return a[\"xs\"+o]+=r&&o?\" \"+t:t||\"\",i||0===o||a.plugin?(a.l++,a.type=a.setRatio?2:1,a[\"xs\"+a.l]=s||\"\",0s;s++)e.prefix=0===s&&e.prefix,e.defaultValue=i[s]||r,new gt(n[s],e)};(t=gt.prototype).parseComplex=function(t,e,i,s,n,r){var a,o,l,h,c,u=this.keyword;if(this.multi&&(q.test(i)||q.test(e)?(o=e.replace(q,\"|\").split(\"|\"),l=i.replace(q,\"|\").split(\"|\")):u&&(o=[e],l=[i])),l){for(h=l.length>o.length?l.length:o.length,a=0;aH[a]&&H[a]>-W&&(H[a]=0);return i&&(t._gsTransform=H),H},Ot=n.set3DTransformRatio=function(t){var e,i,s,n,r,a,o,l,h,c,u,p,f,d,_,m,g,v,w,y,x,b,T,k=this.data,P=this.t.style,S=k.rotation*et,O=k.scaleX,A=k.scaleY,C=k.scaleZ,M=k.perspective;if(1!==t&&0!==t||\"auto\"!==k.force3D||k.rotationY||k.rotationX||1!==C||M||k.z){if(R&&(O<1e-4&&-1e-4b;b++)this.p.indexOf(\"border\")&&(g[b]=P(g[b])),-1!==(o=a=nt(t,g[b],k,!1,\"0px\")).indexOf(\" \")&&(o=(a=o.split(\" \"))[0],a=a[1]),l=r=x[b],h=parseFloat(o),p=o.substr((h+\"\").length),\"\"===(u=(f=\"=\"===l.charAt(1))?(c=parseInt(l.charAt(0)+\"1\",10),l=l.substr(2),c*=parseFloat(l),l.substr((c+\"\").length-(c<0?1:0))||\"\"):(c=parseFloat(l),l.substr((c+\"\").length)))&&(u=T[i]||p),u!==p&&(d=rt(t,\"borderLeft\",h,p),_=rt(t,\"borderTop\",h,p),a=\"%\"===u?(o=d/w*100+\"%\",_/y*100+\"%\"):\"em\"===u?(o=d/(m=rt(t,\"borderLeft\",1,\"em\"))+\"em\",_/m+\"em\"):(o=d+\"px\",_+\"px\"),f&&(l=parseFloat(o)+c+u,r=parseFloat(a)+c+u)),n=_t(v,g[b],o+\" \"+a,l+\" \"+r,!1,\"0px\",n);return n},prefix:!0,formatter:ut(\"0px 0px 0px 0px\",!1,!0)}),vt(\"backgroundPosition\",{defaultValue:\"0 0\",parser:function(t,e,i,s,n,r){var a,o,l,h,c,u,p=\"background-position\",f=k||st(t,null),d=this.format((f?D?f.getPropertyValue(p+\"-x\")+\" \"+f.getPropertyValue(p+\"-y\"):f.getPropertyValue(p):t.currentStyle.backgroundPositionX+\" \"+t.currentStyle.backgroundPositionY)||\"0 0\"),_=this.format(e);if(-1!==d.indexOf(\"%\")!=(-1!==_.indexOf(\"%\"))&&((u=nt(t,\"backgroundImage\").replace(F,\"\"))&&\"none\"!==u)){for(a=d.split(\" \"),o=_.split(\" \"),W.setAttribute(\"src\",u),l=2;-1<--l;)(h=-1!==(d=a[l]).indexOf(\"%\"))!=(-1!==o[l].indexOf(\"%\"))&&(c=0===l?t.offsetWidth-W.width:t.offsetHeight-W.height,a[l]=h?parseFloat(d)/100*c+\"px\":parseFloat(d)/c*100+\"%\");d=a.join(\" \")}return this.parseComplex(t.style,d,_,n,r)},formatter:w}),vt(\"backgroundSize\",{defaultValue:\"0 0\",formatter:w}),vt(\"perspective\",{defaultValue:\"0px\",prefix:!0}),vt(\"perspectiveOrigin\",{defaultValue:\"50% 50%\",prefix:!0}),vt(\"transformStyle\",{prefix:!0}),vt(\"backfaceVisibility\",{prefix:!0}),vt(\"userSelect\",{prefix:!0}),vt(\"margin\",{parser:pt(\"marginTop,marginRight,marginBottom,marginLeft\")}),vt(\"padding\",{parser:pt(\"paddingTop,paddingRight,paddingBottom,paddingLeft\")}),vt(\"clip\",{defaultValue:\"rect(0px,0px,0px,0px)\",parser:function(t,e,i,s,n,r){var a,o,l;return e=D<9?(o=t.currentStyle,l=D<8?\" \":\",\",a=\"rect(\"+o.clipTop+l+o.clipRight+l+o.clipBottom+l+o.clipLeft+\")\",this.format(e).split(\",\").join(l)):(a=this.format(nt(t,this.p,k,!1,this.dflt)),this.format(e)),this.parseComplex(t.style,a,e,n,r)}}),vt(\"textShadow\",{defaultValue:\"0px 0px 0px #999\",color:!0,multi:!0}),vt(\"autoRound,strictUnits\",{parser:function(t,e,i,s,n){return n}}),vt(\"border\",{defaultValue:\"0px solid #000\",parser:function(t,e,i,s,n,r){return this.parseComplex(t.style,this.format(nt(t,\"borderTopWidth\",k,!1,\"0px\")+\" \"+nt(t,\"borderTopStyle\",k,!1,\"solid\")+\" \"+nt(t,\"borderTopColor\",k,!1,\"#000\")),this.format(e),n,r)},color:!0,formatter:function(t){var e=t.split(\" \");return e[0]+\" \"+(e[1]||\"solid\")+\" \"+(t.match(ct)||[\"#000\"])[0]}}),vt(\"borderWidth\",{parser:pt(\"borderTopWidth,borderRightWidth,borderBottomWidth,borderLeftWidth\")}),vt(\"float,cssFloat,styleFloat\",{parser:function(t,e,i,s,n){var r=t.style,a=\"cssFloat\"in r?\"cssFloat\":\"styleFloat\";return new dt(r,a,0,0,n,-1,i,!1,0,r[a],e)}});function Ct(t){var e,i=this.t,s=i.filter||nt(this.data,\"filter\"),n=0|this.s+this.c*t;100==n&&(e=-1===s.indexOf(\"atrix(\")&&-1===s.indexOf(\"radient(\")&&-1===s.indexOf(\"oader(\")?(i.removeAttribute(\"filter\"),!nt(this.data,\"filter\")):(i.filter=s.replace(h,\"\"),!0)),e||(this.xn1&&(i.filter=s=s||\"alpha(opacity=\"+n+\")\"),-1===s.indexOf(\"pacity\")?0==n&&this.xn1||(i.filter=s+\" alpha(opacity=\"+n+\")\"):i.filter=s.replace(E,\"opacity=\"+n))}vt(\"opacity,alpha,autoAlpha\",{defaultValue:\"1\",parser:function(t,e,i,s,n,r){var a=parseFloat(nt(t,\"opacity\",k,!1,\"1\")),o=t.style,l=\"autoAlpha\"===i;return\"string\"==typeof e&&\"=\"===e.charAt(1)&&(e=(\"-\"===e.charAt(0)?-1:1)*parseFloat(e.substr(2))+a),l&&1===a&&\"hidden\"===nt(t,\"visibility\",k)&&0!==e&&(a=0),Z?n=new dt(o,\"opacity\",a,e-a,n):((n=new dt(o,\"opacity\",100*a,100*(e-a),n)).xn1=l?1:0,o.zoom=1,n.type=2,n.b=\"alpha(opacity=\"+n.s+\")\",n.e=\"alpha(opacity=\"+(n.s+n.c)+\")\",n.data=t,n.plugin=r,n.setRatio=Ct),l&&((n=new dt(o,\"visibility\",0,0,n,-1,null,!1,0,0!==a?\"inherit\":\"hidden\",0===e?\"hidden\":\"inherit\")).xs0=\"inherit\",s._overwriteProps.push(n.n),s._overwriteProps.push(i)),n}});function Mt(t,e){e&&(t.removeProperty?(\"ms\"===e.substr(0,2)&&(e=\"M\"+e.substr(1)),t.removeProperty(e.replace(u,\"-$1\").toLowerCase())):t.removeAttribute(e))}function Rt(t){if(this.t._gsClassPT=this,1===t||0===t){this.t.setAttribute(\"class\",0===t?this.b:this.e);for(var e=this.data,i=this.t.style;e;)e.v?i[e.p]=e.v:Mt(i,e.p),e=e._next;1===t&&this.t._gsClassPT===this&&(this.t._gsClassPT=null)}else this.t.getAttribute(\"class\")!==this.e&&this.t.setAttribute(\"class\",this.e)}vt(\"className\",{parser:function(t,e,i,s,n,r,a){var o,l,h,c,u,p=t.getAttribute(\"class\")||\"\",f=t.style.cssText;if((n=s._classNamePT=new dt(t,i,0,0,n,2)).setRatio=Rt,n.pr=-11,d=!0,n.b=p,l=g(t,k),h=t._gsClassPT){for(c={},u=h.data;u;)c[u.p]=1,u=u._next;h.setRatio(1)}return(t._gsClassPT=n).e=\"=\"!==e.charAt(1)?e:p.replace(RegExp(\"\\\\s*\\\\b\"+e.substr(2)+\"\\\\b\"),\"\")+(\"+\"===e.charAt(0)?\" \"+e.substr(2):\"\"),s._tween._duration&&(t.setAttribute(\"class\",n.e),o=v(t,l,g(t),a,c),t.setAttribute(\"class\",p),n.data=o.firstMPT,t.style.cssText=f,n=n.xfirst=s.parse(t,o.difs,n,r)),n}});function Dt(t){if((1===t||0===t)&&this.data._totalTime===this.data._totalDuration&&\"isFromStart\"!==this.data.data){var e,i,s,n,r=this.t.style,a=_.transform.parse;if(\"all\"===this.e)n=!(r.cssText=\"\");else for(s=(e=this.e.split(\",\")).length;-1<--s;)i=e[s],_[i]&&(_[i].parse===a?n=!0:i=\"transformOrigin\"===i?Tt:_[i].p),Mt(r,i);n&&(Mt(r,xt),this.t._gsTransform&&delete this.t._gsTransform)}}for(vt(\"clearProps\",{parser:function(t,e,i,s,n){return(n=new dt(t,i,0,0,n,2)).setRatio=Dt,n.e=e,n.pr=-10,n.data=s._tween,d=!0,n}}),t=\"bezier,throwProps,physicsProps,physics2D\".split(\",\"),mt=t.length;mt--;)!function(t){var l;_[t]||(l=t.charAt(0).toUpperCase()+t.substr(1)+\"Plugin\",vt(t,{parser:function(t,e,i,s,n,r,a){var o=(window.GreenSockGlobals||window).com.greensock.plugins[l];return o?(o._cssRegister(),_[i].parse(t,e,i,s,n,r,a)):(m(\"Error: \"+l+\" js file not loaded.\"),n)}}))}(t[mt]);(t=J.prototype)._firstPT=null,t._onInitTween=function(t,e,i){if(!t.nodeType)return!1;this._target=t,this._tween=i,this._vars=e,A=e.autoRound,d=!1,T=e.suffixMap||J.suffixMap,k=st(t,\"\"),f=this._overwriteProps;var s,n,r,a,o,l,h,c,u,p=t.style;if(b&&\"\"===p.zIndex&&(\"auto\"!==(s=nt(t,\"zIndex\",k))&&\"\"!==s||this._addLazySet(p,\"zIndex\",0)),\"string\"==typeof e&&(a=p.cssText,s=g(t,k),p.cssText=a+\";\"+e,s=v(t,s,g(t)).difs,!Z&&z.test(e)&&(s.opacity=parseFloat(RegExp.$1)),e=s,p.cssText=a),this._firstPT=n=this.parse(t,e,null),this._transformType){for(u=3===this._transformType,xt?C&&(b=!0,\"\"===p.zIndex&&(\"auto\"!==(h=nt(t,\"zIndex\",k))&&\"\"!==h||this._addLazySet(p,\"zIndex\",0)),M&&this._addLazySet(p,\"WebkitBackfaceVisibility\",this._vars.WebkitBackfaceVisibility||(u?\"visible\":\"hidden\"))):p.zoom=1,r=n;r&&r._next;)r=r._next;c=new dt(t,\"transform\",0,0,null,2),this._linkCSSP(c,null,r),c.setRatio=u&&kt?Ot:xt?At:wt,c.data=this._transform||St(t,k,!0),f.pop()}if(d){for(;n;){for(l=n._next,r=a;r&&r.pr>n.pr;)r=r._next;(n._prev=r?r._prev:o)?n._prev._next=n:a=n,(n._next=r)?r._prev=n:o=n,n=l}this._firstPT=a}return!0},t.parse=function(t,e,i,s){var n,r,a,o,l,h,c,u,p,f,d=t.style;for(n in e)h=e[n],(r=_[n])?i=r.parse(t,h,n,this,i,s,e):(l=nt(t,n,k)+\"\",p=\"string\"==typeof h,\"color\"===n||\"fill\"===n||\"stroke\"===n||-1!==n.indexOf(\"Color\")||p&&N.test(h)?(p||(h=(3<(h=O(h)).length?\"rgba(\":\"rgb(\")+h.join(\",\")+\")\"),i=_t(d,n,l,h,!0,\"transparent\",i,0,s)):!p||-1===h.indexOf(\" \")&&-1===h.indexOf(\",\")?(c=(a=parseFloat(l))||0===a?l.substr((a+\"\").length):\"\",\"\"!==l&&\"auto\"!==l||(c=\"width\"===n||\"height\"===n?(a=function(t,e,i){var s=parseFloat(\"width\"===e?t.offsetWidth:t.offsetHeight),n=ot[e],r=n.length;for(i=i||st(t,null);-1<--r;)s-=parseFloat(nt(t,\"padding\"+n[r],i,!0))||0,s-=parseFloat(nt(t,\"border\"+n[r]+\"Width\",i,!0))||0;return s}(t,n,k),\"px\"):\"left\"===n||\"top\"===n?(a=at(t,n,k),\"px\"):(a=\"opacity\"!==n?0:1,\"\")),\"\"===(u=(f=p&&\"=\"===h.charAt(1))?(o=parseInt(h.charAt(0)+\"1\",10),h=h.substr(2),o*=parseFloat(h),h.replace(X,\"\")):(o=parseFloat(h),p&&h.substr((o+\"\").length)||\"\"))&&(u=n in T?T[n]:c),h=o||0===o?(f?o+a:o)+u:e[n],c!==u&&\"\"!==u&&(o||0===o)&&a&&(a=rt(t,n,a,c),\"%\"===u?(a/=rt(t,n,100,\"%\")/100,!0!==e.strictUnits&&(l=a+\"%\")):\"em\"===u?a/=rt(t,n,1,\"em\"):\"px\"!==u&&(o=rt(t,n,o,u),u=\"px\"),f&&(o||0===o)&&(h=o+a+u)),f&&(o+=a),!a&&0!==a||!o&&0!==o?void 0!==d[n]&&(h||\"NaN\"!=h+\"\"&&null!=h)?(i=new dt(d,n,o||a||0,0,i,-1,n,!1,0,l,h)).xs0=\"none\"!==h||\"display\"!==n&&-1===n.indexOf(\"Style\")?h:l:m(\"invalid \"+n+\" tween value: \"+e[n]):(i=new dt(d,n,a,o-a,i,0,n,!1!==A&&(\"px\"===u||\"zIndex\"===n),0,l,h)).xs0=u):i=_t(d,n,l,h,!0,null,i,0,s)),s&&i&&!i.plugin&&(i.plugin=s);return i},t.setRatio=function(t){var e,i,s,n=this._firstPT;if(1!==t||this._tween._time!==this._tween._duration&&0!==this._tween._time)if(t||this._tween._time!==this._tween._duration&&0!==this._tween._time||-1e-6===this._tween._rawPrevTime)for(;n;){if(e=n.c*t+n.s,n.r?e=Math.round(e):e<1e-6&&-1e-6s;s++)i+=n[\"xn\"+s]+n[\"xs\"+(s+1)];n.t[n.p]=i}else-1===n.type?n.t[n.p]=n.xs0:n.setRatio&&n.setRatio(t);else n.t[n.p]=e+n.xs0;n=n._next}else for(;n;)2!==n.type?n.t[n.p]=n.b:n.setRatio(t),n=n._next;else for(;n;)2!==n.type?n.t[n.p]=n.e:n.setRatio(t),n=n._next},t._enableTransforms=function(t){this._transformType=t||3===this._transformType?3:2,this._transform=this._transform||St(this._target,k,!0)};function It(){this.t[this.p]=this.e,this.data._linkCSSP(this,this._next,null,!0)}t._addLazySet=function(t,e,i){var s=this._firstPT=new dt(t,e,0,0,this._firstPT,2);s.e=i,s.setRatio=It,s.data=this},t._linkCSSP=function(t,e,i,s){return t&&(e&&(e._prev=t),t._next&&(t._next._prev=t._prev),t._prev?t._prev._next=t._next:this._firstPT===t&&(this._firstPT=t._next,s=!0),i?i._next=t:s||null!==this._firstPT||(this._firstPT=t),t._next=e,t._prev=i),t},t._kill=function(t){var e,i,s,n=t;if(t.autoAlpha||t.alpha){for(i in n={},t)n[i]=t[i];n.opacity=1,n.autoAlpha&&(n.visibility=1)}return t.className&&(e=this._classNamePT)&&((s=e.xfirst)&&s._prev?this._linkCSSP(s._prev,e._next,s._prev._prev):s===this._firstPT&&(this._firstPT=e._next),e._next&&this._linkCSSP(e._next,e._next._next,s._prev),this._classNamePT=null),r.prototype._kill.call(this,n)};function Lt(t,e,i){var s,n,r,a;if(t.slice)for(n=t.length;-1<--n;)Lt(t[n],e,i);else for(n=(s=t.childNodes).length;-1<--n;)a=(r=s[n]).type,r.style&&(e.push(g(r)),i&&i.push(r)),1!==a&&9!==a&&11!==a||!r.childNodes.length||Lt(r,e,i)}return J.cascadeTo=function(t,e,i){var s,n,r,a=p.to(t,e,i),o=[a],l=[],h=[],c=[],u=p._internals.reservedProps;for(t=a._targets||a.target,Lt(t,l,c),a.render(e,!0),Lt(t,h),a.render(0,!0),a._enabled(!0),s=c.length;-1<--s;)if((n=v(c[s],l[s],h[s])).firstMPT){for(r in n=n.difs,i)u[r]&&(n[r]=i[r]);o.push(p.to(c[s],e,n))}return o},r.activate([J]),J},!0)}),window._gsDefine&&window._gsQueue.pop()()},{}],13:[function(t,e,i){\"use strict\";var s=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t};(window._gsQueue||(window._gsQueue=[])).push(function(){function r(t,e){var i=\"x\"===e?\"Width\":\"Height\",s=\"scroll\"+i,n=\"client\"+i,r=document.body;return t===o||t===a||t===r?Math.max(a[s],r[s])-(o[\"inner\"+i]||Math.max(a[n],r[n])):t[s]-t[\"offset\"+i]}var a=document.documentElement,o=window,t=window._gsDefine.plugin({propName:\"scrollTo\",API:2,version:\"1.7.3\",init:function(t,e,i){return this._wdw=t===o,this._target=t,this._tween=i,\"object\"!=(void 0===e?\"undefined\":s(e))&&(e={y:e}),this._autoKill=!1!==e.autoKill,this.x=this.xPrev=this.getX(),this.y=this.yPrev=this.getY(),null!=e.x?(this._addTween(this,\"x\",this.x,\"max\"===e.x?r(t,\"x\"):e.x,\"scrollTo_x\",!0),this._overwriteProps.push(\"scrollTo_x\")):this.skipX=!0,null!=e.y?(this._addTween(this,\"y\",this.y,\"max\"===e.y?r(t,\"y\"):e.y,\"scrollTo_y\",!0),this._overwriteProps.push(\"scrollTo_y\")):this.skipY=!0,!0},set:function(t){this._super.setRatio.call(this,t);var e=this._wdw||!this.skipX?this.getX():this.xPrev,i=this._wdw||!this.skipY?this.getY():this.yPrev,s=i-this.yPrev,n=e-this.xPrev;this._autoKill&&(!this.skipX&&(7e&&(this.skipX=!0),!this.skipY&&(7i&&(this.skipY=!0),this.skipX&&this.skipY&&this._tween.kill()),this._wdw?o.scrollTo(this.skipX?e:this.x,this.skipY?i:this.y):(this.skipY||(this._target.scrollTop=this.y),this.skipX||(this._target.scrollLeft=this.x)),this.xPrev=this.x,this.yPrev=this.y}}),e=t.prototype;t.max=r,e.getX=function(){return this._wdw?null!=o.pageXOffset?o.pageXOffset:null!=a.scrollLeft?a.scrollLeft:document.body.scrollLeft:this._target.scrollLeft},e.getY=function(){return this._wdw?null!=o.pageYOffset?o.pageYOffset:null!=a.scrollTop?a.scrollTop:document.body.scrollTop:this._target.scrollTop},e._kill=function(t){return t.scrollTo_x&&(this.skipX=!0),t.scrollTo_y&&(this.skipY=!0),this._super._kill.call(this,t)}}),window._gsDefine&&window._gsQueue.pop()()},{}]},{},[2]);"],"file":"wpr-admin.js"} \ No newline at end of file diff --git a/wp-content/plugins/wp-rocket/assets/js/wpr-cpcss-heartbeat.js b/wp-content/plugins/wp-rocket/assets/js/wpr-cpcss-heartbeat.js new file mode 100644 index 0000000..b2195a8 --- /dev/null +++ b/wp-content/plugins/wp-rocket/assets/js/wpr-cpcss-heartbeat.js @@ -0,0 +1,36 @@ +let cpcssHeartbeatCall; +const cpcssHeartbeat = () => { + const xhttp = new XMLHttpRequest(); + xhttp.onload = () => { + if ( 200 !== xhttp.status ) { + return; + } + + const cpcs_heartbeat_response = JSON.parse( xhttp.response ); + if ( false === cpcs_heartbeat_response.success ) { + stopCPCSSHeartbeat(); + return; + } + + if ( cpcs_heartbeat_response.success && + 'cpcss_complete' === cpcs_heartbeat_response.data.status ) { + stopCPCSSHeartbeat(); + return; + } + + cpcssHeartbeatCall = setTimeout( () => { + cpcssHeartbeat(); + }, 3000 ); + }; + + xhttp.open( 'POST', ajaxurl, true ); + xhttp.setRequestHeader( 'Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8' ); + xhttp.send( "action=rocket_cpcss_heartbeat&_nonce=" + rocket_cpcss_heartbeat.nonce ); +} + + +const stopCPCSSHeartbeat = () => { + clearTimeout( cpcssHeartbeatCall ); +} + +cpcssHeartbeat(); diff --git a/wp-content/plugins/wp-rocket/assets/js/wpr-cpcss.js b/wp-content/plugins/wp-rocket/assets/js/wpr-cpcss.js new file mode 100644 index 0000000..020b873 --- /dev/null +++ b/wp-content/plugins/wp-rocket/assets/js/wpr-cpcss.js @@ -0,0 +1,146 @@ +let checkCPCSSGenerationCall; +let checkCPCSSMobileGenerationCall; +let cpcsssGenerationPending = 0; +let cpcsssMobileGenerationPending = 0; +const rocketDeleteCPCSSbtn = document.getElementById( 'rocket-delete-post-cpss' ); +const rocketGenerateCPCSSbtn = document.getElementById( 'rocket-generate-post-cpss' ); +const rocketCPCSSGenerate = document.querySelectorAll( '.cpcss_generate' ); +const rocketCPCSSReGenerate = document.querySelectorAll( '.cpcss_regenerate' ); + +rocketDeleteCPCSSbtn.addEventListener( 'click', e => { + e.preventDefault(); + deleteCPCSS(); +} ); + +rocketGenerateCPCSSbtn.addEventListener( 'click', e => { + e.preventDefault(); + rocketGenerateCPCSSbtn.disabled = true; + checkCPCSSGeneration( null, false ); + if ( rocket_cpcss.wprMobileCpcssEnabled ) { + checkCPCSSGeneration( null, true ); + } +} ); + +const checkCPCSSGeneration = ( timeout = null, is_mobile = false ) => { + const spinner = rocketGenerateCPCSSbtn.querySelector( '.spinner' ); + spinner.style.display = 'block'; + spinner.style.visibility = 'visible'; + + const xhttp = new XMLHttpRequest(); + xhttp.onload = () => { + if ( 200 !== xhttp.status ) { + return; + } + + const cpcss_response = JSON.parse( xhttp.response ); + if ( 200 !== cpcss_response.data.status ) { + stopCPCSSGeneration( spinner ); + if ( ! is_mobile ) { + cpcssNotice( cpcss_response.message, 'error' ); + } + rocketGenerateCPCSSbtn.disabled = false; + return; + } + + if ( 200 === cpcss_response.data.status && + 'cpcss_generation_pending' !== cpcss_response.code ) { + stopCPCSSGeneration( spinner, is_mobile ); + if ( ! is_mobile ) { + cpcssNotice( cpcss_response.message, 'success' ); + } + + // Revert view to Regenerate. + rocketGenerateCPCSSbtn.querySelector( '.rocket-generate-post-cpss-btn-txt' ).innerHTML = rocket_cpcss.regenerate_btn; + rocketDeleteCPCSSbtn.style.display = 'block'; + rocketGenerateCPCSSbtn.disabled = false; + rocketCPCSSGenerate.forEach( item => item.style.display = 'none' ); + rocketCPCSSReGenerate.forEach( item => item.style.display = 'block' ); + return; + } + + if ( is_mobile ) { + cpcsssMobileGenerationPending++; + if ( cpcsssMobileGenerationPending > 10 ) { + stopCPCSSGeneration( spinner, is_mobile ); + cpcsssMobileGenerationPending = 0; + checkCPCSSGeneration( true, true ); + return; + } + checkCPCSSMobileGenerationCall = setTimeout( () => { + checkCPCSSGeneration( null, true ); + }, 3000 ); + } else { + cpcsssGenerationPending++; + if ( cpcsssGenerationPending > 10 ) { + stopCPCSSGeneration( spinner, is_mobile ); + cpcsssGenerationPending = 0; + checkCPCSSGeneration( true, false ); + return; + } + + checkCPCSSGenerationCall = setTimeout( () => { + checkCPCSSGeneration( null, false ); + }, 3000 ); + } + }; + + xhttp.open( 'POST', rocket_cpcss.rest_url, true ); + xhttp.setRequestHeader( 'Content-Type', 'application/json;charset=UTF-8' ); + xhttp.setRequestHeader( 'X-WP-Nonce', rocket_cpcss.rest_nonce ); + xhttp.send( JSON.stringify( { timeout: timeout, is_mobile: is_mobile } ) ); +} + +const stopCPCSSGeneration = ( spinner, is_mobile ) => { + spinner.style.display = 'none'; + if ( is_mobile ) { + clearTimeout( checkCPCSSMobileGenerationCall ); + } else { + clearTimeout( checkCPCSSGenerationCall ); + } +} + +const deleteCPCSS = () => { + rocketDeleteCPCSSbtn.disabled = true; + + const xhttp = new XMLHttpRequest(); + xhttp.onload = () => { + if ( 200 !== xhttp.status ) { + return; + } + + rocketDeleteCPCSSbtn.disabled = false; + const cpcss_response = JSON.parse( xhttp.response ); + + if ( 200 !== cpcss_response.data.status ) { + cpcssNotice( cpcss_response.message, 'error' ); + return; + } + cpcssNotice( cpcss_response.message, 'success' ); + + // Revert view to Generate. + rocketGenerateCPCSSbtn.querySelector( '.rocket-generate-post-cpss-btn-txt' ).innerHTML = rocket_cpcss.generate_btn; + rocketDeleteCPCSSbtn.style.display = 'none'; + rocketCPCSSReGenerate.forEach( item => item.style.display = 'none' ); + rocketCPCSSGenerate.forEach( item => item.style.display = 'block' ); + }; + + xhttp.open( 'DELETE', rocket_cpcss.rest_url, true ); + xhttp.setRequestHeader( 'Content-Type', 'application/json;charset=UTF-8' ); + xhttp.setRequestHeader( 'X-WP-Nonce', rocket_cpcss.rest_nonce ); + xhttp.send(); +} + +const cpcssNotice = ( msg, type ) => { + /* Add notice class */ + const cpcssNotice = document.getElementById( 'cpcss_response_notice' ); + cpcssNotice.innerHTML = ''; + cpcssNotice.classList.remove( 'hidden', 'notice', 'is-warning', 'notice-error', 'notice-success', 'is-error', 'is-success' ); + cpcssNotice.classList.add( 'notice', 'notice-' + type, 'is-' + type ); + + /* create paragraph element to hold message */ + const p = document.createElement( 'p' ); + p.appendChild( document.createTextNode( msg ) ); + + /* Add the whole message to notice div */ + cpcssNotice.appendChild( p ); +} diff --git a/wp-content/plugins/wp-rocket/assets/js/wpr-modal.js b/wp-content/plugins/wp-rocket/assets/js/wpr-modal.js new file mode 100644 index 0000000..a1d947e --- /dev/null +++ b/wp-content/plugins/wp-rocket/assets/js/wpr-modal.js @@ -0,0 +1,202 @@ +var $ = jQuery; +$(document).ready(function(){ + + var $wprModal = $(".wpr-Modal"); + if($wprModal){ + new ModalWpr($wprModal); + } + + /** + * AJAX Safe mode action button + */ + $('#wpr-action-safe_mode').on('click', function(e) { + var button = $(this); + e.preventDefault(); + + $.post( + ajaxurl, + { + action: 'rocket_safe_mode', + nonce: rocket_ajax_data.nonce, + }, + function(response) { + if ( true === response.success ) { + button.hide(); + $('.show-if-safe-mode').show(); + } + } + ); + }); +}); + + +/*-----------------------------------------------*\ + CLASS ModalWpr +\*-----------------------------------------------*/ +/** + * Manages the display of deactivation modal box + * + * Public method : + open - Open the modal + close - Close the modal + change - Test if modal state change + * + */ + +function ModalWpr(aElem) { + + var refThis = this; + + this.elem = aElem; + this.overlay = $('.wpr-Modal-overlay'); + this.radio = $('input[name=reason]', aElem); + this.closer = $('.wpr-Modal-close, .wpr-Modal-cancel', aElem); + this.return = $('.wpr-Modal-return', aElem); + this.opener = $('.plugins [data-slug="wp-rocket"] .deactivate'); + this.question = $('.wpr-Modal-question', aElem); + this.button = $('.button-primary', aElem); + this.title = $('.wpr-Modal-header h2', aElem); + this.textFields = $('input[type=text], textarea',aElem); + this.hiddenReason = $('#wpr-reason', aElem); + this.hiddenDetails = $('#wpr-details', aElem); + this.titleText = this.title.text(); + + // Open + this.opener.click(function() { + refThis.open(); + return false; + }); + + // Close + this.closer.click(function() { + refThis.close(); + return false; + }); + + aElem.bind('keyup', function(){ + if(event.keyCode == 27){ // ECHAP + refThis.close(); + return false; + } + }); + + // Back + this.return.click(function() { + refThis.returnToQuestion(); + return false; + }); + + // Click on radio + this.radio.change(function(){ + refThis.change($(this)); + }); + + // Write text + this.textFields.keyup(function() { + refThis.hiddenDetails.val($(this).val()); + if(refThis.hiddenDetails.val() != ''){ + refThis.button.removeClass('wpr-isDisabled'); + refThis.button.removeAttr("disabled"); + } + else{ + refThis.button.addClass('wpr-isDisabled'); + refThis.button.attr("disabled", true); + } + }); +} + + +/* +* Change modal state +*/ +ModalWpr.prototype.change = function(aElem) { + + var id = aElem.attr('id'); + var refThis = this; + + // Reset values + this.hiddenReason.val(aElem.val()); + this.hiddenDetails.val(''); + this.textFields.val(''); + + $('.wpr-Modal-fieldHidden').removeClass('wpr-isOpen'); + $('.wpr-Modal-hidden').removeClass('wpr-isOpen'); + this.button.removeClass('wpr-isDisabled'); + this.button.removeAttr("disabled"); + + switch(id){ + case 'reason-temporary': + // Nothing to do + break; + + case 'reason-broke': + case 'reason-score': + case 'reason-loading': + case 'reason-complicated': + var $panel = $('#' + id + '-panel'); + refThis.question.removeClass('wpr-isOpen'); + refThis.return.addClass('wpr-isOpen'); + $panel.addClass('wpr-isOpen'); + + var titleText = $panel.find('h3').text(); + this.title.text(titleText); + break; + + case 'reason-host': + case 'reason-other': + var field = aElem.siblings('.wpr-Modal-fieldHidden'); + field.addClass('wpr-isOpen'); + field.find('input, textarea').focus(); + refThis.button.addClass('wpr-isDisabled'); + refThis.button.attr("disabled", true); + break; + } +}; + + + +/* +* Return to the question +*/ +ModalWpr.prototype.returnToQuestion = function() { + + $('.wpr-Modal-fieldHidden').removeClass('wpr-isOpen'); + $('.wpr-Modal-hidden').removeClass('wpr-isOpen'); + this.question.addClass('wpr-isOpen'); + this.return.removeClass('wpr-isOpen'); + this.title.text(this.titleText); + + // Reset values + this.hiddenReason.val(''); + this.hiddenDetails.val(''); + + this.radio.attr('checked', false); + this.button.addClass('wpr-isDisabled'); + this.button.attr("disabled", true); + +}; + + +/* +* Open modal +*/ +ModalWpr.prototype.open = function() { + + this.elem.css('display','block'); + this.overlay.css('display','block'); + + // Reset current tab wp-rocket + localStorage.setItem('wpr-hash', ''); +}; + + +/* +* Close modal +*/ +ModalWpr.prototype.close = function() { + + this.returnToQuestion(); + this.elem.css('display','none'); + this.overlay.css('display','none'); + +}; diff --git a/wp-content/plugins/wp-rocket/composer.json b/wp-content/plugins/wp-rocket/composer.json new file mode 100644 index 0000000..8f94a82 --- /dev/null +++ b/wp-content/plugins/wp-rocket/composer.json @@ -0,0 +1,171 @@ +{ + "name": "wp-media/wp-rocket", + "description": "Performance optimization plugin for WordPress", + "keywords": [ + "wordpress", + "cache", + "minification", + "lazyload" + ], + "homepage": "https://wp-rocket.me", + "license": "GPL-2.0-or-later", + "authors": [ + { + "name": "WP Media", + "email": "contact@wp-media.me", + "homepage": "https://wp-media.me" + } + ], + "type": "wordpress-plugin", + "config": { + "sort-packages": true, + "preferred-install": { + "wp-media/phpunit": "source" + } + }, + "support": { + "issues": "https://github.com/wp-media/wp-rocket/issues", + "source": "https://github.com/wp-media/wp-rocket" + }, + "repositories":[ + { + "type": "composer", + "url": "https://wpackagist.org" + } + ], + "require": { + "php": ">=5.6.0", + "composer/installers": "~1.0", + "monolog/monolog": "^1.0", + "psr/container": "^1.0" + }, + "require-dev": { + "php": "^5.6 || ^7", + "brain/monkey": "^2.0", + "coenjacobs/mozart": "0.6.0-beta-3", + "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", + "mikey179/vfsstream": "^1.6", + "mobiledetect/mobiledetectlib": "^2.8", + "mnsami/composer-custom-directory-installer": "^2.0", + "phpcompatibility/phpcompatibility-wp": "^2.0", + "phpstan/phpstan": "^0.12.3", + "phpunit/phpunit": "^5.7 || ^7", + "roave/security-advisories": "dev-master", + "szepeviktor/phpstan-wordpress": "^0.5.0", + "woocommerce/woocommerce": "^3.9", + "wp-coding-standards/wpcs": "^2", + "wp-media/background-processing": "^1.3", + "wp-media/cloudflare": "^1.0", + "wp-media/module-rocketcdn": "^1.0", + "wp-media/module-varnish": "^1.0", + "wp-media/rocket-lazyload-common": "^2", + "wp-media/phpunit": "^1.0", + "wp-media/wp-imagify-partner": "^1.0", + "wpackagist-plugin/amp": "^1.1.4", + "wpackagist-plugin/hummingbird-performance": "2.0.1", + "wpackagist-plugin/pdf-embedder": "^4.6", + "wpackagist-plugin/simple-custom-css": "^4.0.3", + "wpackagist-plugin/spinupwp": "^1.1", + "wpackagist-plugin/wp-smushit": "^3.0" + }, + "autoload": { + "classmap": [ + "inc/classes", + "inc/vendors/classes" + ], + "exclude-from-classmap": [ + "inc/vendors/classes/class-rocket-mobile-detect.php", + "inc/classes/class-wp-rocket-requirements-check.php" + ], + "psr-4": { + "WP_Rocket\\": "inc/", + "WPMedia\\Cloudflare\\": "inc/Addon/Cloudflare/" + } + }, + "autoload-dev": { + "psr-4": { + "WP_Rocket\\Tests\\": "tests/" + } + }, + "extra": { + "installer-paths": { + "vendor/{$vendor}/{$name}/": ["type:wordpress-plugin"], + "./inc/Addon/Cloudflare/": ["wp-media/cloudflare"], + "./inc/Addon/Varnish/": ["wp-media/module-varnish"], + "./inc/Engine/CDN/RocketCDN/": ["wp-media/module-rocketcdn"] + }, + "mozart": { + "dep_namespace": "WP_Rocket\\Dependencies\\", + "dep_directory": "/inc/Dependencies/", + "classmap_directory": "/inc/classes/dependencies/", + "classmap_prefix": "WP_Rocket_", + "packages": [ + "mobiledetect/mobiledetectlib", + "wp-media/background-processing", + "wp-media/rocket-lazyload-common", + "wp-media/wp-imagify-partner" + ] + } + }, + "scripts": { + "test-unit": "\"vendor/bin/phpunit\" --testsuite unit --colors=always --configuration tests/Unit/phpunit.xml.dist", + "test-integration": "\"vendor/bin/phpunit\" --testsuite integration --colors=always --configuration tests/Integration/phpunit.xml.dist --exclude-group AdminOnly,BeaverBuilder,Elementor,Hummingbird,WithSmush,WithWoo,WithAmp,WithAmpAndCloudflare,WithSCCSS,Cloudways,Dreampress,DoCloudflare,Multisite,WPEngine,SpinUpWP,WordPressCom,O2Switch,PDFEmbedder,PDFEmbedderPremium,PDFEmbedderSecure", + "test-integration-adminonly": "\"vendor/bin/phpunit\" --testsuite integration --colors=always --configuration tests/Integration/phpunit.xml.dist --group AdminOnly", + "test-integration-bb": "\"vendor/bin/phpunit\" --testsuite integration --colors=always --configuration tests/Integration/phpunit.xml.dist --group BeaverBuilder", + "test-integration-cloudflare": "\"vendor/bin/phpunit\" --testsuite integration --colors=always --configuration tests/Integration/phpunit.xml.dist --group DoCloudflare", + "test-integration-cloudways": "\"vendor/bin/phpunit\" --testsuite integration --colors=always --configuration tests/Integration/phpunit.xml.dist --group Cloudways", + "test-integration-elementor": "\"vendor/bin/phpunit\" --testsuite integration --colors=always --configuration tests/Integration/phpunit.xml.dist --group Elementor", + "test-integration-hummingbird": "\"vendor/bin/phpunit\" --testsuite integration --colors=always --configuration tests/Integration/phpunit.xml.dist --group Hummingbird", + "test-integration-multisite": "\"vendor/bin/phpunit\" --testsuite integration --colors=always --configuration tests/Integration/phpunit.xml.dist --group Multisite", + "test-integration-withsmush": "\"vendor/bin/phpunit\" --testsuite integration --colors=always --configuration tests/Integration/phpunit.xml.dist --group WithSmush", + "test-integration-withamp": "\"vendor/bin/phpunit\" --testsuite integration --colors=always --configuration tests/Integration/phpunit.xml.dist --group WithAmp", + "test-integration-withampcloudflare": "\"vendor/bin/phpunit\" --testsuite integration --colors=always --configuration tests/Integration/phpunit.xml.dist --group WithAmpAndCloudflare", + "test-integration-withsccss": "\"vendor/bin/phpunit\" --testsuite integration --colors=always --configuration tests/Integration/phpunit.xml.dist --group WithSCCSS", + "test-integration-withwoo": "\"vendor/bin/phpunit\" --testsuite integration --colors=always --configuration tests/Integration/phpunit.xml.dist --group WithWoo", + "test-integration-wpengine": "\"vendor/bin/phpunit\" --testsuite integration --colors=always --configuration tests/Integration/phpunit.xml.dist --group WPEngine", + "test-integration-spinupwp": "\"vendor/bin/phpunit\" --testsuite integration --colors=always --configuration tests/Integration/phpunit.xml.dist --group SpinUpWP", + "test-integration-wpcom": "\"vendor/bin/phpunit\" --testsuite integration --colors=always --configuration tests/Integration/phpunit.xml.dist --group WordPressCom", + "test-integration-pdfembedder": "\"vendor/bin/phpunit\" --testsuite integration --colors=always --configuration tests/Integration/phpunit.xml.dist --group PDFEmbedder", + "test-integration-pdfembedderpremium": "\"vendor/bin/phpunit\" --testsuite integration --colors=always --configuration tests/Integration/phpunit.xml.dist --group PDFEmbedderPremium", + "test-integration-pdfembeddersecure": "\"vendor/bin/phpunit\" --testsuite integration --colors=always --configuration tests/Integration/phpunit.xml.dist --group PDFEmbedderSecure", + "test-integration-o2switch": "\"vendor/bin/phpunit\" --testsuite integration --colors=always --configuration tests/Integration/phpunit.xml.dist --group O2Switch", + "test-integration-dreampress": "\"vendor/bin/phpunit\" --testsuite integration --colors=always --configuration tests/Integration/phpunit.xml.dist --group Dreampress", + "run-tests": [ + "@test-unit", + "@test-integration", + "@test-integration-adminonly", + "@test-integration-cloudflare", + "@test-integration-bb", + "@test-integration-elementor", + "@test-integration-hummingbird", + "@test-integration-withamp", + "@test-integration-withampcloudflare", + "@test-integration-withsccss", + "@test-integration-withsmush", + "@test-integration-withwoo", + "@test-integration-pdfembedder", + "@test-integration-pdfembedderpremium", + "@test-integration-pdfembeddersecure", + "@test-integration-multisite", + "@test-integration-cloudways", + "@test-integration-wpengine", + "@test-integration-spinupwp", + "@test-integration-wpcom", + "@test-integration-o2switch", + "@test-integration-dreampress" + ], + "run-stan":"vendor/bin/phpstan analyze --memory-limit=2G --no-progress", + "install-codestandards": "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin::run", + "phpcs": "phpcs --basepath=.", + "phpcs-changed": "./bin/phpcs-changed.sh", + "phpcs:fix": "phpcbf", + "post-install-cmd": [ + "\"vendor/bin/mozart\" compose", + "composer dump-autoload" + ], + "post-update-cmd": [ + "\"vendor/bin/mozart\" compose", + "composer dump-autoload" + ] + } +} diff --git a/wp-content/plugins/wp-rocket/composer.lock b/wp-content/plugins/wp-rocket/composer.lock new file mode 100644 index 0000000..9ebc288 --- /dev/null +++ b/wp-content/plugins/wp-rocket/composer.lock @@ -0,0 +1,4551 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "61b259361275700fb36cf7791fd81d4b", + "packages": [ + { + "name": "composer/installers", + "version": "v1.7.0", + "source": { + "type": "git", + "url": "https://github.com/composer/installers.git", + "reference": "141b272484481432cda342727a427dc1e206bfa0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/installers/zipball/141b272484481432cda342727a427dc1e206bfa0", + "reference": "141b272484481432cda342727a427dc1e206bfa0", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.0" + }, + "replace": { + "roundcube/plugin-installer": "*", + "shama/baton": "*" + }, + "require-dev": { + "composer/composer": "1.0.*@dev", + "phpunit/phpunit": "^4.8.36" + }, + "type": "composer-plugin", + "extra": { + "class": "Composer\\Installers\\Plugin", + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\Installers\\": "src/Composer/Installers" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Kyle Robinson Young", + "email": "kyle@dontkry.com", + "homepage": "https://github.com/shama" + } + ], + "description": "A multi-framework Composer library installer", + "homepage": "https://composer.github.io/installers/", + "keywords": [ + "Craft", + "Dolibarr", + "Eliasis", + "Hurad", + "ImageCMS", + "Kanboard", + "Lan Management System", + "MODX Evo", + "Mautic", + "Maya", + "OXID", + "Plentymarkets", + "Porto", + "RadPHP", + "SMF", + "Thelia", + "Whmcs", + "WolfCMS", + "agl", + "aimeos", + "annotatecms", + "attogram", + "bitrix", + "cakephp", + "chef", + "cockpit", + "codeigniter", + "concrete5", + "croogo", + "dokuwiki", + "drupal", + "eZ Platform", + "elgg", + "expressionengine", + "fuelphp", + "grav", + "installer", + "itop", + "joomla", + "known", + "kohana", + "laravel", + "lavalite", + "lithium", + "magento", + "majima", + "mako", + "mediawiki", + "modulework", + "modx", + "moodle", + "osclass", + "phpbb", + "piwik", + "ppi", + "puppet", + "pxcms", + "reindex", + "roundcube", + "shopware", + "silverstripe", + "sydes", + "symfony", + "typo3", + "wordpress", + "yawik", + "zend", + "zikula" + ], + "time": "2019-08-12T15:00:31+00:00" + }, + { + "name": "monolog/monolog", + "version": "1.25.5", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/monolog.git", + "reference": "1817faadd1846cd08be9a49e905dc68823bc38c0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/1817faadd1846cd08be9a49e905dc68823bc38c0", + "reference": "1817faadd1846cd08be9a49e905dc68823bc38c0", + "shasum": "" + }, + "require": { + "php": ">=5.3.0", + "psr/log": "~1.0" + }, + "provide": { + "psr/log-implementation": "1.0.0" + }, + "require-dev": { + "aws/aws-sdk-php": "^2.4.9 || ^3.0", + "doctrine/couchdb": "~1.0@dev", + "graylog2/gelf-php": "~1.0", + "php-amqplib/php-amqplib": "~2.4", + "php-console/php-console": "^3.1.3", + "php-parallel-lint/php-parallel-lint": "^1.0", + "phpunit/phpunit": "~4.5", + "ruflin/elastica": ">=0.90 <3.0", + "sentry/sentry": "^0.13", + "swiftmailer/swiftmailer": "^5.3|^6.0" + }, + "suggest": { + "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", + "doctrine/couchdb": "Allow sending log messages to a CouchDB server", + "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", + "ext-mongo": "Allow sending log messages to a MongoDB server", + "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", + "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver", + "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", + "php-console/php-console": "Allow sending log messages to Google Chrome", + "rollbar/rollbar": "Allow sending log messages to Rollbar", + "ruflin/elastica": "Allow sending log messages to an Elastic Search server", + "sentry/sentry": "Allow sending log messages to a Sentry server" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Monolog\\": "src/Monolog" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "Sends your logs to files, sockets, inboxes, databases and various web services", + "homepage": "http://github.com/Seldaek/monolog", + "keywords": [ + "log", + "logging", + "psr-3" + ], + "funding": [ + { + "url": "https://github.com/Seldaek", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", + "type": "tidelift" + } + ], + "time": "2020-07-23T08:35:51+00:00" + }, + { + "name": "psr/container", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", + "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "time": "2017-02-14T16:28:37+00:00" + }, + { + "name": "psr/log", + "version": "1.1.3", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc", + "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "Psr/Log/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "time": "2020-03-23T09:12:05+00:00" + } + ], + "packages-dev": [ + { + "name": "antecedent/patchwork", + "version": "2.1.12", + "source": { + "type": "git", + "url": "https://github.com/antecedent/patchwork.git", + "reference": "b98e046dd4c0acc34a0846604f06f6111654d9ea" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/antecedent/patchwork/zipball/b98e046dd4c0acc34a0846604f06f6111654d9ea", + "reference": "b98e046dd4c0acc34a0846604f06f6111654d9ea", + "shasum": "" + }, + "require": { + "php": ">=5.4.0" + }, + "require-dev": { + "phpunit/phpunit": ">=4" + }, + "type": "library", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ignas Rudaitis", + "email": "ignas.rudaitis@gmail.com" + } + ], + "description": "Method redefinition (monkey-patching) functionality for PHP.", + "homepage": "http://patchwork2.org/", + "keywords": [ + "aop", + "aspect", + "interception", + "monkeypatching", + "redefinition", + "runkit", + "testing" + ], + "time": "2019-12-22T17:52:09+00:00" + }, + { + "name": "automattic/jetpack-autoloader", + "version": "v1.3.2", + "source": { + "type": "git", + "url": "https://github.com/Automattic/jetpack-autoloader.git", + "reference": "301c2fbcf070d4f0147753447616b6e982bda09e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Automattic/jetpack-autoloader/zipball/301c2fbcf070d4f0147753447616b6e982bda09e", + "reference": "301c2fbcf070d4f0147753447616b6e982bda09e", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.1" + }, + "require-dev": { + "phpunit/phpunit": "^5.7 || ^6.5 || ^7.5" + }, + "type": "composer-plugin", + "extra": { + "class": "Automattic\\Jetpack\\Autoloader\\CustomAutoloaderPlugin" + }, + "autoload": { + "psr-4": { + "Automattic\\Jetpack\\Autoloader\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0-or-later" + ], + "description": "Creates a custom autoloader for a plugin or theme.", + "time": "2019-09-24T06:39:29+00:00" + }, + { + "name": "brain/monkey", + "version": "2.5.0", + "source": { + "type": "git", + "url": "https://github.com/Brain-WP/BrainMonkey.git", + "reference": "f2295a57da59ff88621cd959dbdb4b288feefd19" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Brain-WP/BrainMonkey/zipball/f2295a57da59ff88621cd959dbdb4b288feefd19", + "reference": "f2295a57da59ff88621cd959dbdb4b288feefd19", + "shasum": "" + }, + "require": { + "antecedent/patchwork": "^2.0", + "mockery/mockery": ">=0.9 <2", + "php": ">=5.6.0" + }, + "require-dev": { + "dealerdirect/phpcodesniffer-composer-installer": "^0.6 || ^0.7", + "phpcompatibility/php-compatibility": "^9.3.0", + "phpunit/phpunit": "^5.7.9 || ^6.0 || ^7.0 || ^8.0 || ^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-version/1": "1.x-dev", + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Brain\\Monkey\\": "src/" + }, + "files": [ + "inc/api.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Giuseppe Mazzapica", + "email": "giuseppe.mazzapica@gmail.com", + "homepage": "https://gmazzap.me", + "role": "Developer" + } + ], + "description": "Mocking utility for PHP functions and WordPress plugin API", + "keywords": [ + "Monkey Patching", + "interception", + "mock", + "mock functions", + "mockery", + "patchwork", + "redefinition", + "runkit", + "test", + "testing" + ], + "time": "2020-10-09T06:55:33+00:00" + }, + { + "name": "coenjacobs/mozart", + "version": "0.6.0-beta-3", + "source": { + "type": "git", + "url": "https://github.com/coenjacobs/mozart.git", + "reference": "965d698d76639587b26c878b22f4373c32f3d9ee" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/coenjacobs/mozart/zipball/965d698d76639587b26c878b22f4373c32f3d9ee", + "reference": "965d698d76639587b26c878b22f4373c32f3d9ee", + "shasum": "" + }, + "require": { + "league/flysystem": "^1.0", + "php": "^7.2", + "symfony/console": "^4|^5", + "symfony/finder": "^4|^5" + }, + "require-dev": { + "phpunit/phpunit": "^8.5", + "squizlabs/php_codesniffer": "^3.5" + }, + "bin": [ + "bin/mozart" + ], + "type": "library", + "autoload": { + "psr-4": { + "CoenJacobs\\Mozart\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Coen Jacobs", + "email": "coenjacobs@gmail.com" + } + ], + "description": "Composes all dependencies as a package inside a WordPress plugin", + "funding": [ + { + "url": "https://github.com/coenjacobs", + "type": "github" + } + ], + "time": "2020-06-02T06:54:01+00:00" + }, + { + "name": "dealerdirect/phpcodesniffer-composer-installer", + "version": "v0.7.0", + "source": { + "type": "git", + "url": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer.git", + "reference": "e8d808670b8f882188368faaf1144448c169c0b7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Dealerdirect/phpcodesniffer-composer-installer/zipball/e8d808670b8f882188368faaf1144448c169c0b7", + "reference": "e8d808670b8f882188368faaf1144448c169c0b7", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.0 || ^2.0", + "php": ">=5.3", + "squizlabs/php_codesniffer": "^2 || ^3 || 4.0.x-dev" + }, + "require-dev": { + "composer/composer": "*", + "phpcompatibility/php-compatibility": "^9.0", + "sensiolabs/security-checker": "^4.1.0" + }, + "type": "composer-plugin", + "extra": { + "class": "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin" + }, + "autoload": { + "psr-4": { + "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Franck Nijhof", + "email": "franck.nijhof@dealerdirect.com", + "homepage": "http://www.frenck.nl", + "role": "Developer / IT Manager" + } + ], + "description": "PHP_CodeSniffer Standards Composer Installer Plugin", + "homepage": "http://www.dealerdirect.com", + "keywords": [ + "PHPCodeSniffer", + "PHP_CodeSniffer", + "code quality", + "codesniffer", + "composer", + "installer", + "phpcs", + "plugin", + "qa", + "quality", + "standard", + "standards", + "style guide", + "stylecheck", + "tests" + ], + "time": "2020-06-25T14:57:39+00:00" + }, + { + "name": "doctrine/instantiator", + "version": "1.3.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/instantiator.git", + "reference": "f350df0268e904597e3bd9c4685c53e0e333feea" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/f350df0268e904597e3bd9c4685c53e0e333feea", + "reference": "f350df0268e904597e3bd9c4685c53e0e333feea", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^6.0", + "ext-pdo": "*", + "ext-phar": "*", + "phpbench/phpbench": "^0.13", + "phpstan/phpstan-phpunit": "^0.11", + "phpstan/phpstan-shim": "^0.11", + "phpunit/phpunit": "^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "http://ocramius.github.com/" + } + ], + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://www.doctrine-project.org/projects/instantiator.html", + "keywords": [ + "constructor", + "instantiate" + ], + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", + "type": "tidelift" + } + ], + "time": "2020-05-29T17:27:14+00:00" + }, + { + "name": "hamcrest/hamcrest-php", + "version": "v2.0.1", + "source": { + "type": "git", + "url": "https://github.com/hamcrest/hamcrest-php.git", + "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", + "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", + "shasum": "" + }, + "require": { + "php": "^5.3|^7.0|^8.0" + }, + "replace": { + "cordoval/hamcrest-php": "*", + "davedevelopment/hamcrest-php": "*", + "kodova/hamcrest-php": "*" + }, + "require-dev": { + "phpunit/php-file-iterator": "^1.4 || ^2.0", + "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1-dev" + } + }, + "autoload": { + "classmap": [ + "hamcrest" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "This is the PHP port of Hamcrest Matchers", + "keywords": [ + "test" + ], + "time": "2020-07-09T08:09:16+00:00" + }, + { + "name": "league/flysystem", + "version": "1.1.3", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/flysystem.git", + "reference": "9be3b16c877d477357c015cec057548cf9b2a14a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/9be3b16c877d477357c015cec057548cf9b2a14a", + "reference": "9be3b16c877d477357c015cec057548cf9b2a14a", + "shasum": "" + }, + "require": { + "ext-fileinfo": "*", + "league/mime-type-detection": "^1.3", + "php": "^7.2.5 || ^8.0" + }, + "conflict": { + "league/flysystem-sftp": "<1.0.6" + }, + "require-dev": { + "phpspec/prophecy": "^1.11.1", + "phpunit/phpunit": "^8.5.8" + }, + "suggest": { + "ext-fileinfo": "Required for MimeType", + "ext-ftp": "Allows you to use FTP server storage", + "ext-openssl": "Allows you to use FTPS server storage", + "league/flysystem-aws-s3-v2": "Allows you to use S3 storage with AWS SDK v2", + "league/flysystem-aws-s3-v3": "Allows you to use S3 storage with AWS SDK v3", + "league/flysystem-azure": "Allows you to use Windows Azure Blob storage", + "league/flysystem-cached-adapter": "Flysystem adapter decorator for metadata caching", + "league/flysystem-eventable-filesystem": "Allows you to use EventableFilesystem", + "league/flysystem-rackspace": "Allows you to use Rackspace Cloud Files", + "league/flysystem-sftp": "Allows you to use SFTP server storage via phpseclib", + "league/flysystem-webdav": "Allows you to use WebDAV storage", + "league/flysystem-ziparchive": "Allows you to use ZipArchive adapter", + "spatie/flysystem-dropbox": "Allows you to use Dropbox storage", + "srmklive/flysystem-dropbox-v2": "Allows you to use Dropbox storage for PHP 5 applications" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Flysystem\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frenky.net" + } + ], + "description": "Filesystem abstraction: Many filesystems, one API.", + "keywords": [ + "Cloud Files", + "WebDAV", + "abstraction", + "aws", + "cloud", + "copy.com", + "dropbox", + "file systems", + "files", + "filesystem", + "filesystems", + "ftp", + "rackspace", + "remote", + "s3", + "sftp", + "storage" + ], + "funding": [ + { + "url": "https://offset.earth/frankdejonge", + "type": "other" + } + ], + "time": "2020-08-23T07:39:11+00:00" + }, + { + "name": "league/mime-type-detection", + "version": "1.5.1", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/mime-type-detection.git", + "reference": "353f66d7555d8a90781f6f5e7091932f9a4250aa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/353f66d7555d8a90781f6f5e7091932f9a4250aa", + "reference": "353f66d7555d8a90781f6f5e7091932f9a4250aa", + "shasum": "" + }, + "require": { + "ext-fileinfo": "*", + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^0.12.36", + "phpunit/phpunit": "^8.5.8" + }, + "type": "library", + "autoload": { + "psr-4": { + "League\\MimeTypeDetection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frankdejonge.nl" + } + ], + "description": "Mime-type detection for Flysystem", + "funding": [ + { + "url": "https://github.com/frankdejonge", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/league/flysystem", + "type": "tidelift" + } + ], + "time": "2020-10-18T11:50:25+00:00" + }, + { + "name": "maxmind-db/reader", + "version": "v1.6.0", + "source": { + "type": "git", + "url": "https://github.com/maxmind/MaxMind-DB-Reader-php.git", + "reference": "febd4920bf17c1da84cef58e56a8227dfb37fbe4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/maxmind/MaxMind-DB-Reader-php/zipball/febd4920bf17c1da84cef58e56a8227dfb37fbe4", + "reference": "febd4920bf17c1da84cef58e56a8227dfb37fbe4", + "shasum": "" + }, + "require": { + "php": ">=5.6" + }, + "conflict": { + "ext-maxminddb": "<1.6.0,>=2.0.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "2.*", + "php-coveralls/php-coveralls": "^2.1", + "phpunit/phpcov": "^3.0", + "phpunit/phpunit": "5.*", + "squizlabs/php_codesniffer": "3.*" + }, + "suggest": { + "ext-bcmath": "bcmath or gmp is required for decoding larger integers with the pure PHP decoder", + "ext-gmp": "bcmath or gmp is required for decoding larger integers with the pure PHP decoder", + "ext-maxminddb": "A C-based database decoder that provides significantly faster lookups" + }, + "type": "library", + "autoload": { + "psr-4": { + "MaxMind\\Db\\": "src/MaxMind/Db" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Gregory J. Oschwald", + "email": "goschwald@maxmind.com", + "homepage": "https://www.maxmind.com/" + } + ], + "description": "MaxMind DB Reader API", + "homepage": "https://github.com/maxmind/MaxMind-DB-Reader-php", + "keywords": [ + "database", + "geoip", + "geoip2", + "geolocation", + "maxmind" + ], + "time": "2019-12-19T22:59:03+00:00" + }, + { + "name": "mikey179/vfsstream", + "version": "v1.6.8", + "source": { + "type": "git", + "url": "https://github.com/bovigo/vfsStream.git", + "reference": "231c73783ebb7dd9ec77916c10037eff5a2b6efe" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/bovigo/vfsStream/zipball/231c73783ebb7dd9ec77916c10037eff5a2b6efe", + "reference": "231c73783ebb7dd9ec77916c10037eff5a2b6efe", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.5|^5.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.6.x-dev" + } + }, + "autoload": { + "psr-0": { + "org\\bovigo\\vfs\\": "src/main/php" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Frank Kleine", + "homepage": "http://frankkleine.de/", + "role": "Developer" + } + ], + "description": "Virtual file system to mock the real file system in unit tests.", + "homepage": "http://vfs.bovigo.org/", + "time": "2019-10-30T15:31:00+00:00" + }, + { + "name": "mnsami/composer-custom-directory-installer", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/mnsami/composer-custom-directory-installer.git", + "reference": "85f66323978d0b1cb0e6acc7f69b3e7b912f82d9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mnsami/composer-custom-directory-installer/zipball/85f66323978d0b1cb0e6acc7f69b3e7b912f82d9", + "reference": "85f66323978d0b1cb0e6acc7f69b3e7b912f82d9", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.0 || ^2.0", + "php": ">=5.3" + }, + "type": "composer-plugin", + "extra": { + "class": [ + "Composer\\CustomDirectoryInstaller\\LibraryPlugin", + "Composer\\CustomDirectoryInstaller\\PearPlugin", + "Composer\\CustomDirectoryInstaller\\PluginPlugin" + ], + "branch-alias": { + "dev-master": "1.1.x-dev" + } + }, + "autoload": { + "psr-0": { + "Composer\\CustomDirectoryInstaller": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mina Nabil Sami", + "email": "mina.nsami@gmail.com" + } + ], + "description": "A composer plugin, to help install packages of different types in custom paths.", + "keywords": [ + "composer", + "composer-installer", + "composer-plugin" + ], + "time": "2020-08-18T11:00:11+00:00" + }, + { + "name": "mobiledetect/mobiledetectlib", + "version": "2.8.34", + "source": { + "type": "git", + "url": "https://github.com/serbanghita/Mobile-Detect.git", + "reference": "6f8113f57a508494ca36acbcfa2dc2d923c7ed5b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/serbanghita/Mobile-Detect/zipball/6f8113f57a508494ca36acbcfa2dc2d923c7ed5b", + "reference": "6f8113f57a508494ca36acbcfa2dc2d923c7ed5b", + "shasum": "" + }, + "require": { + "php": ">=5.0.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.8.35||~5.7" + }, + "type": "library", + "autoload": { + "classmap": [ + "Mobile_Detect.php" + ], + "psr-0": { + "Detection": "namespaced/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Serban Ghita", + "email": "serbanghita@gmail.com", + "homepage": "http://mobiledetect.net", + "role": "Developer" + } + ], + "description": "Mobile_Detect is a lightweight PHP class for detecting mobile devices. It uses the User-Agent string combined with specific HTTP headers to detect the mobile environment.", + "homepage": "https://github.com/serbanghita/Mobile-Detect", + "keywords": [ + "detect mobile devices", + "mobile", + "mobile detect", + "mobile detector", + "php mobile detect" + ], + "time": "2019-09-18T18:44:20+00:00" + }, + { + "name": "mockery/mockery", + "version": "1.3.3", + "source": { + "type": "git", + "url": "https://github.com/mockery/mockery.git", + "reference": "60fa2f67f6e4d3634bb4a45ff3171fa52215800d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mockery/mockery/zipball/60fa2f67f6e4d3634bb4a45ff3171fa52215800d", + "reference": "60fa2f67f6e4d3634bb4a45ff3171fa52215800d", + "shasum": "" + }, + "require": { + "hamcrest/hamcrest-php": "^2.0.1", + "lib-pcre": ">=7.0", + "php": ">=5.6.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.7.10|^6.5|^7.5|^8.5|^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3.x-dev" + } + }, + "autoload": { + "psr-0": { + "Mockery": "library/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Pádraic Brady", + "email": "padraic.brady@gmail.com", + "homepage": "http://blog.astrumfutura.com" + }, + { + "name": "Dave Marshall", + "email": "dave.marshall@atstsolutions.co.uk", + "homepage": "http://davedevelopment.co.uk" + } + ], + "description": "Mockery is a simple yet flexible PHP mock object framework", + "homepage": "https://github.com/mockery/mockery", + "keywords": [ + "BDD", + "TDD", + "library", + "mock", + "mock objects", + "mockery", + "stub", + "test", + "test double", + "testing" + ], + "time": "2020-08-11T18:10:21+00:00" + }, + { + "name": "myclabs/deep-copy", + "version": "1.10.1", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "969b211f9a51aa1f6c01d1d2aef56d3bd91598e5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/969b211f9a51aa1f6c01d1d2aef56d3bd91598e5", + "reference": "969b211f9a51aa1f6c01d1d2aef56d3bd91598e5", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "replace": { + "myclabs/deep-copy": "self.version" + }, + "require-dev": { + "doctrine/collections": "^1.0", + "doctrine/common": "^2.6", + "phpunit/phpunit": "^7.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + }, + "files": [ + "src/DeepCopy/deep_copy.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Create deep copies (clones) of your objects", + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" + ], + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", + "type": "tidelift" + } + ], + "time": "2020-06-29T13:22:24+00:00" + }, + { + "name": "phar-io/manifest", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/phar-io/manifest.git", + "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", + "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-phar": "*", + "phar-io/version": "^2.0", + "php": "^5.6 || ^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "time": "2018-07-08T19:23:20+00:00" + }, + { + "name": "phar-io/version", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/phar-io/version.git", + "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/version/zipball/45a2ec53a73c70ce41d55cedef9063630abaf1b6", + "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Library for handling version information and constraints", + "time": "2018-07-08T19:19:57+00:00" + }, + { + "name": "php-stubs/wordpress-stubs", + "version": "v5.5.3", + "source": { + "type": "git", + "url": "https://github.com/php-stubs/wordpress-stubs.git", + "reference": "7a8d0009b38c5fdec777a0a5333552ff6e445065" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-stubs/wordpress-stubs/zipball/7a8d0009b38c5fdec777a0a5333552ff6e445065", + "reference": "7a8d0009b38c5fdec777a0a5333552ff6e445065", + "shasum": "" + }, + "replace": { + "giacocorsiglia/wordpress-stubs": "*" + }, + "require-dev": { + "giacocorsiglia/stubs-generator": "^0.5.0", + "php": "~7.1" + }, + "suggest": { + "paragonie/sodium_compat": "Pure PHP implementation of libsodium", + "symfony/polyfill-php73": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", + "szepeviktor/phpstan-wordpress": "WordPress extensions for PHPStan" + }, + "type": "library", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "WordPress function and class declaration stubs for static analysis.", + "homepage": "https://github.com/php-stubs/wordpress-stubs", + "keywords": [ + "PHPStan", + "static analysis", + "wordpress" + ], + "time": "2020-10-31T01:42:05+00:00" + }, + { + "name": "phpcompatibility/php-compatibility", + "version": "9.3.5", + "source": { + "type": "git", + "url": "https://github.com/PHPCompatibility/PHPCompatibility.git", + "reference": "9fb324479acf6f39452e0655d2429cc0d3914243" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibility/zipball/9fb324479acf6f39452e0655d2429cc0d3914243", + "reference": "9fb324479acf6f39452e0655d2429cc0d3914243", + "shasum": "" + }, + "require": { + "php": ">=5.3", + "squizlabs/php_codesniffer": "^2.3 || ^3.0.2" + }, + "conflict": { + "squizlabs/php_codesniffer": "2.6.2" + }, + "require-dev": { + "phpunit/phpunit": "~4.5 || ^5.0 || ^6.0 || ^7.0" + }, + "suggest": { + "dealerdirect/phpcodesniffer-composer-installer": "^0.5 || This Composer plugin will sort out the PHPCS 'installed_paths' automatically.", + "roave/security-advisories": "dev-master || Helps prevent installing dependencies with known security issues." + }, + "type": "phpcodesniffer-standard", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-3.0-or-later" + ], + "authors": [ + { + "name": "Wim Godden", + "homepage": "https://github.com/wimg", + "role": "lead" + }, + { + "name": "Juliette Reinders Folmer", + "homepage": "https://github.com/jrfnl", + "role": "lead" + }, + { + "name": "Contributors", + "homepage": "https://github.com/PHPCompatibility/PHPCompatibility/graphs/contributors" + } + ], + "description": "A set of sniffs for PHP_CodeSniffer that checks for PHP cross-version compatibility.", + "homepage": "http://techblog.wimgodden.be/tag/codesniffer/", + "keywords": [ + "compatibility", + "phpcs", + "standards" + ], + "time": "2019-12-27T09:44:58+00:00" + }, + { + "name": "phpcompatibility/phpcompatibility-paragonie", + "version": "1.3.0", + "source": { + "type": "git", + "url": "https://github.com/PHPCompatibility/PHPCompatibilityParagonie.git", + "reference": "b862bc32f7e860d0b164b199bd995e690b4b191c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibilityParagonie/zipball/b862bc32f7e860d0b164b199bd995e690b4b191c", + "reference": "b862bc32f7e860d0b164b199bd995e690b4b191c", + "shasum": "" + }, + "require": { + "phpcompatibility/php-compatibility": "^9.0" + }, + "require-dev": { + "dealerdirect/phpcodesniffer-composer-installer": "^0.5", + "paragonie/random_compat": "dev-master", + "paragonie/sodium_compat": "dev-master" + }, + "suggest": { + "dealerdirect/phpcodesniffer-composer-installer": "^0.5 || This Composer plugin will sort out the PHP_CodeSniffer 'installed_paths' automatically.", + "roave/security-advisories": "dev-master || Helps prevent installing dependencies with known security issues." + }, + "type": "phpcodesniffer-standard", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-3.0-or-later" + ], + "authors": [ + { + "name": "Wim Godden", + "role": "lead" + }, + { + "name": "Juliette Reinders Folmer", + "role": "lead" + } + ], + "description": "A set of rulesets for PHP_CodeSniffer to check for PHP cross-version compatibility issues in projects, while accounting for polyfills provided by the Paragonie polyfill libraries.", + "homepage": "http://phpcompatibility.com/", + "keywords": [ + "compatibility", + "paragonie", + "phpcs", + "polyfill", + "standards" + ], + "time": "2019-11-04T15:17:54+00:00" + }, + { + "name": "phpcompatibility/phpcompatibility-wp", + "version": "2.1.0", + "source": { + "type": "git", + "url": "https://github.com/PHPCompatibility/PHPCompatibilityWP.git", + "reference": "41bef18ba688af638b7310666db28e1ea9158b2f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibilityWP/zipball/41bef18ba688af638b7310666db28e1ea9158b2f", + "reference": "41bef18ba688af638b7310666db28e1ea9158b2f", + "shasum": "" + }, + "require": { + "phpcompatibility/php-compatibility": "^9.0", + "phpcompatibility/phpcompatibility-paragonie": "^1.0" + }, + "require-dev": { + "dealerdirect/phpcodesniffer-composer-installer": "^0.5" + }, + "suggest": { + "dealerdirect/phpcodesniffer-composer-installer": "^0.5 || This Composer plugin will sort out the PHP_CodeSniffer 'installed_paths' automatically.", + "roave/security-advisories": "dev-master || Helps prevent installing dependencies with known security issues." + }, + "type": "phpcodesniffer-standard", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-3.0-or-later" + ], + "authors": [ + { + "name": "Wim Godden", + "role": "lead" + }, + { + "name": "Juliette Reinders Folmer", + "role": "lead" + } + ], + "description": "A ruleset for PHP_CodeSniffer to check for PHP cross-version compatibility issues in projects, while accounting for polyfills provided by WordPress.", + "homepage": "http://phpcompatibility.com/", + "keywords": [ + "compatibility", + "phpcs", + "standards", + "wordpress" + ], + "time": "2019-08-28T14:22:28+00:00" + }, + { + "name": "phpdocumentor/reflection-common", + "version": "2.2.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-2.x": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" + } + ], + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "homepage": "http://www.phpdoc.org", + "keywords": [ + "FQSEN", + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" + ], + "time": "2020-06-27T09:03:43+00:00" + }, + { + "name": "phpdocumentor/reflection-docblock", + "version": "5.2.2", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/069a785b2141f5bcf49f3e353548dc1cce6df556", + "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556", + "shasum": "" + }, + "require": { + "ext-filter": "*", + "php": "^7.2 || ^8.0", + "phpdocumentor/reflection-common": "^2.2", + "phpdocumentor/type-resolver": "^1.3", + "webmozart/assert": "^1.9.1" + }, + "require-dev": { + "mockery/mockery": "~1.3.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + }, + { + "name": "Jaap van Otterdijk", + "email": "account@ijaap.nl" + } + ], + "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "time": "2020-09-03T19:13:55+00:00" + }, + { + "name": "phpdocumentor/type-resolver", + "version": "1.4.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0", + "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0", + "phpdocumentor/reflection-common": "^2.0" + }, + "require-dev": { + "ext-tokenizer": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-1.x": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", + "time": "2020-09-17T18:55:26+00:00" + }, + { + "name": "phpspec/prophecy", + "version": "1.12.1", + "source": { + "type": "git", + "url": "https://github.com/phpspec/prophecy.git", + "reference": "8ce87516be71aae9b956f81906aaf0338e0d8a2d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/8ce87516be71aae9b956f81906aaf0338e0d8a2d", + "reference": "8ce87516be71aae9b956f81906aaf0338e0d8a2d", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.2", + "php": "^7.2 || ~8.0, <8.1", + "phpdocumentor/reflection-docblock": "^5.2", + "sebastian/comparator": "^3.0 || ^4.0", + "sebastian/recursion-context": "^3.0 || ^4.0" + }, + "require-dev": { + "phpspec/phpspec": "^6.0", + "phpunit/phpunit": "^8.0 || ^9.0 <9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.11.x-dev" + } + }, + "autoload": { + "psr-4": { + "Prophecy\\": "src/Prophecy" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + }, + { + "name": "Marcello Duarte", + "email": "marcello.duarte@gmail.com" + } + ], + "description": "Highly opinionated mocking framework for PHP 5.3+", + "homepage": "https://github.com/phpspec/prophecy", + "keywords": [ + "Double", + "Dummy", + "fake", + "mock", + "spy", + "stub" + ], + "time": "2020-09-29T09:10:42+00:00" + }, + { + "name": "phpstan/phpstan", + "version": "0.12.54", + "source": { + "type": "git", + "url": "https://github.com/phpstan/phpstan.git", + "reference": "45c7b999a4b7dd9ac5558bdaaf23dcebbef88223" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/45c7b999a4b7dd9ac5558bdaaf23dcebbef88223", + "reference": "45c7b999a4b7dd9ac5558bdaaf23dcebbef88223", + "shasum": "" + }, + "require": { + "php": "^7.1|^8.0" + }, + "conflict": { + "phpstan/phpstan-shim": "*" + }, + "bin": [ + "phpstan", + "phpstan.phar" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.12-dev" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "PHPStan - PHP Static Analysis Tool", + "funding": [ + { + "url": "https://github.com/ondrejmirtes", + "type": "github" + }, + { + "url": "https://www.patreon.com/phpstan", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpstan/phpstan", + "type": "tidelift" + } + ], + "time": "2020-11-05T13:36:26+00:00" + }, + { + "name": "phpunit/php-code-coverage", + "version": "6.1.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "807e6013b00af69b6c5d9ceb4282d0393dbb9d8d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/807e6013b00af69b6c5d9ceb4282d0393dbb9d8d", + "reference": "807e6013b00af69b6c5d9ceb4282d0393dbb9d8d", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-xmlwriter": "*", + "php": "^7.1", + "phpunit/php-file-iterator": "^2.0", + "phpunit/php-text-template": "^1.2.1", + "phpunit/php-token-stream": "^3.0", + "sebastian/code-unit-reverse-lookup": "^1.0.1", + "sebastian/environment": "^3.1 || ^4.0", + "sebastian/version": "^2.0.1", + "theseer/tokenizer": "^1.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.0" + }, + "suggest": { + "ext-xdebug": "^2.6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "6.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ], + "time": "2018-10-31T16:06:48+00:00" + }, + { + "name": "phpunit/php-file-iterator", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "050bedf145a257b1ff02746c31894800e5122946" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/050bedf145a257b1ff02746c31894800e5122946", + "reference": "050bedf145a257b1ff02746c31894800e5122946", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "keywords": [ + "filesystem", + "iterator" + ], + "time": "2018-09-13T20:33:42+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "time": "2015-06-21T13:50:34+00:00" + }, + { + "name": "phpunit/php-timer", + "version": "2.1.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "1038454804406b0b5f5f520358e78c1c2f71501e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/1038454804406b0b5f5f520358e78c1c2f71501e", + "reference": "1038454804406b0b5f5f520358e78c1c2f71501e", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], + "time": "2019-06-07T04:22:29+00:00" + }, + { + "name": "phpunit/php-token-stream", + "version": "3.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-token-stream.git", + "reference": "995192df77f63a59e47f025390d2d1fdf8f425ff" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/995192df77f63a59e47f025390d2d1fdf8f425ff", + "reference": "995192df77f63a59e47f025390d2d1fdf8f425ff", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": "^7.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Wrapper around PHP's tokenizer extension.", + "homepage": "https://github.com/sebastianbergmann/php-token-stream/", + "keywords": [ + "tokenizer" + ], + "abandoned": true, + "time": "2019-09-17T06:23:10+00:00" + }, + { + "name": "phpunit/phpunit", + "version": "7.5.20", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "9467db479d1b0487c99733bb1e7944d32deded2c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/9467db479d1b0487c99733bb1e7944d32deded2c", + "reference": "9467db479d1b0487c99733bb1e7944d32deded2c", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.1", + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "myclabs/deep-copy": "^1.7", + "phar-io/manifest": "^1.0.2", + "phar-io/version": "^2.0", + "php": "^7.1", + "phpspec/prophecy": "^1.7", + "phpunit/php-code-coverage": "^6.0.7", + "phpunit/php-file-iterator": "^2.0.1", + "phpunit/php-text-template": "^1.2.1", + "phpunit/php-timer": "^2.1", + "sebastian/comparator": "^3.0", + "sebastian/diff": "^3.0", + "sebastian/environment": "^4.0", + "sebastian/exporter": "^3.1", + "sebastian/global-state": "^2.0", + "sebastian/object-enumerator": "^3.0.3", + "sebastian/resource-operations": "^2.0", + "sebastian/version": "^2.0.1" + }, + "conflict": { + "phpunit/phpunit-mock-objects": "*" + }, + "require-dev": { + "ext-pdo": "*" + }, + "suggest": { + "ext-soap": "*", + "ext-xdebug": "*", + "phpunit/php-invoker": "^2.0" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "7.5-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "time": "2020-01-08T08:45:45+00:00" + }, + { + "name": "roave/security-advisories", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/Roave/SecurityAdvisories.git", + "reference": "065a018d3b5c2c84a53db3347cca4e1b7fa362a6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/065a018d3b5c2c84a53db3347cca4e1b7fa362a6", + "reference": "065a018d3b5c2c84a53db3347cca4e1b7fa362a6", + "shasum": "" + }, + "conflict": { + "3f/pygmentize": "<1.2", + "adodb/adodb-php": "<5.20.12", + "alterphp/easyadmin-extension-bundle": ">=1.2,<1.2.11|>=1.3,<1.3.1", + "amphp/artax": "<1.0.6|>=2,<2.0.6", + "amphp/http": "<1.0.1", + "amphp/http-client": ">=4,<4.4", + "api-platform/core": ">=2.2,<2.2.10|>=2.3,<2.3.6", + "asymmetricrypt/asymmetricrypt": ">=0,<9.9.99", + "aws/aws-sdk-php": ">=3,<3.2.1", + "bagisto/bagisto": "<0.1.5", + "barrelstrength/sprout-base-email": "<1.2.7", + "barrelstrength/sprout-forms": "<3.9", + "baserproject/basercms": ">=4,<=4.3.6|>=4.4,<4.4.1", + "bolt/bolt": "<3.7.1", + "brightlocal/phpwhois": "<=4.2.5", + "buddypress/buddypress": "<5.1.2", + "bugsnag/bugsnag-laravel": ">=2,<2.0.2", + "cakephp/cakephp": ">=1.3,<1.3.18|>=2,<2.4.99|>=2.5,<2.5.99|>=2.6,<2.6.12|>=2.7,<2.7.6|>=3,<3.5.18|>=3.6,<3.6.15|>=3.7,<3.7.7", + "cart2quote/module-quotation": ">=4.1.6,<=4.4.5|>=5,<5.4.4", + "cartalyst/sentry": "<=2.1.6", + "centreon/centreon": "<18.10.8|>=19,<19.4.5", + "cesnet/simplesamlphp-module-proxystatistics": "<3.1", + "codeigniter/framework": "<=3.0.6", + "composer/composer": "<=1-alpha.11", + "contao-components/mediaelement": ">=2.14.2,<2.21.1", + "contao/core": ">=2,<3.5.39", + "contao/core-bundle": ">=4,<4.4.52|>=4.5,<4.9.6|= 4.10.0", + "contao/listing-bundle": ">=4,<4.4.8", + "datadog/dd-trace": ">=0.30,<0.30.2", + "david-garcia/phpwhois": "<=4.3.1", + "derhansen/sf_event_mgt": "<4.3.1|>=5,<5.1.1", + "doctrine/annotations": ">=1,<1.2.7", + "doctrine/cache": ">=1,<1.3.2|>=1.4,<1.4.2", + "doctrine/common": ">=2,<2.4.3|>=2.5,<2.5.1", + "doctrine/dbal": ">=2,<2.0.8|>=2.1,<2.1.2", + "doctrine/doctrine-bundle": "<1.5.2", + "doctrine/doctrine-module": "<=0.7.1", + "doctrine/mongodb-odm": ">=1,<1.0.2", + "doctrine/mongodb-odm-bundle": ">=2,<3.0.1", + "doctrine/orm": ">=2,<2.4.8|>=2.5,<2.5.1", + "dolibarr/dolibarr": "<11.0.4", + "dompdf/dompdf": ">=0.6,<0.6.2", + "drupal/core": ">=7,<7.73|>=8,<8.8.10|>=8.9,<8.9.6|>=9,<9.0.6", + "drupal/drupal": ">=7,<7.73|>=8,<8.8.10|>=8.9,<8.9.6|>=9,<9.0.6", + "endroid/qr-code-bundle": "<3.4.2", + "enshrined/svg-sanitize": "<0.13.1", + "erusev/parsedown": "<1.7.2", + "ezsystems/demobundle": ">=5.4,<5.4.6.1", + "ezsystems/ezdemo-ls-extension": ">=5.4,<5.4.2.1", + "ezsystems/ezfind-ls": ">=5.3,<5.3.6.1|>=5.4,<5.4.11.1|>=2017.12,<2017.12.0.1", + "ezsystems/ezplatform": ">=1.7,<1.7.9.1|>=1.13,<1.13.5.1|>=2.5,<2.5.4", + "ezsystems/ezplatform-admin-ui": ">=1.3,<1.3.5|>=1.4,<1.4.6", + "ezsystems/ezplatform-admin-ui-assets": ">=4,<4.2.1|>=5,<5.0.1|>=5.1,<5.1.1", + "ezsystems/ezplatform-kernel": ">=1,<1.0.2.1", + "ezsystems/ezplatform-user": ">=1,<1.0.1", + "ezsystems/ezpublish-kernel": ">=5.3,<5.3.12.1|>=5.4,<5.4.14.2|>=6,<6.7.9.1|>=6.8,<6.13.6.3|>=7,<7.2.4.1|>=7.3,<7.3.2.1|>=7.5,<7.5.7.1", + "ezsystems/ezpublish-legacy": ">=5.3,<5.3.12.6|>=5.4,<5.4.14.2|>=2011,<2017.12.7.3|>=2018.6,<2018.6.1.4|>=2018.9,<2018.9.1.3|>=2019.3,<2019.3.5.1", + "ezsystems/platform-ui-assets-bundle": ">=4.2,<4.2.3", + "ezsystems/repository-forms": ">=2.3,<2.3.2.1", + "ezyang/htmlpurifier": "<4.1.1", + "firebase/php-jwt": "<2", + "fooman/tcpdf": "<6.2.22", + "fossar/tcpdf-parser": "<6.2.22", + "friendsofsymfony/oauth2-php": "<1.3", + "friendsofsymfony/rest-bundle": ">=1.2,<1.2.2", + "friendsofsymfony/user-bundle": ">=1.2,<1.3.5", + "friendsoftypo3/mediace": ">=7.6.2,<7.6.5", + "fuel/core": "<1.8.1", + "getgrav/grav": "<1.7-beta.8", + "gos/web-socket-bundle": "<1.10.4|>=2,<2.6.1|>=3,<3.3", + "gree/jose": "<=2.2", + "gregwar/rst": "<1.0.3", + "guzzlehttp/guzzle": ">=4-rc.2,<4.2.4|>=5,<5.3.1|>=6,<6.2.1", + "illuminate/auth": ">=4,<4.0.99|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.10", + "illuminate/cookie": ">=4,<=4.0.11|>=4.1,<=4.1.99999|>=4.2,<=4.2.99999|>=5,<=5.0.99999|>=5.1,<=5.1.99999|>=5.2,<=5.2.99999|>=5.3,<=5.3.99999|>=5.4,<=5.4.99999|>=5.5,<=5.5.49|>=5.6,<=5.6.99999|>=5.7,<=5.7.99999|>=5.8,<=5.8.99999|>=6,<6.18.31|>=7,<7.22.4", + "illuminate/database": ">=4,<4.0.99|>=4.1,<4.1.29|>=5.5,<=5.5.44|>=6,<6.18.34|>=7,<7.23.2", + "illuminate/encryption": ">=4,<=4.0.11|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.40|>=5.6,<5.6.15", + "illuminate/view": ">=7,<7.1.2", + "ivankristianto/phpwhois": "<=4.3", + "james-heinrich/getid3": "<1.9.9", + "joomla/session": "<1.3.1", + "jsmitty12/phpwhois": "<5.1", + "kazist/phpwhois": "<=4.2.6", + "kitodo/presentation": "<3.1.2", + "kreait/firebase-php": ">=3.2,<3.8.1", + "la-haute-societe/tcpdf": "<6.2.22", + "laravel/framework": ">=4,<4.0.99|>=4.1,<=4.1.99999|>=4.2,<=4.2.99999|>=5,<=5.0.99999|>=5.1,<=5.1.99999|>=5.2,<=5.2.99999|>=5.3,<=5.3.99999|>=5.4,<=5.4.99999|>=5.5,<=5.5.49|>=5.6,<=5.6.99999|>=5.7,<=5.7.99999|>=5.8,<=5.8.99999|>=6,<6.18.34|>=7,<7.23.2", + "laravel/socialite": ">=1,<1.0.99|>=2,<2.0.10", + "league/commonmark": "<0.18.3", + "librenms/librenms": "<1.53", + "livewire/livewire": ">2.2.4,<2.2.6", + "magento/community-edition": ">=2,<2.2.10|>=2.3,<2.3.3", + "magento/magento1ce": "<1.9.4.3", + "magento/magento1ee": ">=1,<1.14.4.3", + "magento/product-community-edition": ">=2,<2.2.10|>=2.3,<2.3.2-p.2", + "marcwillmann/turn": "<0.3.3", + "mediawiki/core": ">=1.31,<1.31.9|>=1.32,<1.32.4|>=1.33,<1.33.3|>=1.34,<1.34.3|>=1.34.99,<1.35", + "mittwald/typo3_forum": "<1.2.1", + "monolog/monolog": ">=1.8,<1.12", + "namshi/jose": "<2.2", + "nette/application": ">=2,<2.0.19|>=2.1,<2.1.13|>=2.2,<2.2.10|>=2.3,<2.3.14|>=2.4,<2.4.16|>=3,<3.0.6", + "nette/nette": ">=2,<2.0.19|>=2.1,<2.1.13", + "nystudio107/craft-seomatic": "<3.3", + "nzo/url-encryptor-bundle": ">=4,<4.3.2|>=5,<5.0.1", + "october/backend": ">=1.0.319,<1.0.467", + "october/cms": ">=1.0.319,<1.0.466", + "october/october": ">=1.0.319,<1.0.466", + "october/rain": ">=1.0.319,<1.0.468", + "onelogin/php-saml": "<2.10.4", + "oneup/uploader-bundle": "<1.9.3|>=2,<2.1.5", + "openid/php-openid": "<2.3", + "openmage/magento-lts": "<19.4.8|>=20,<20.0.4", + "orchid/platform": ">=9,<9.4.4", + "oro/crm": ">=1.7,<1.7.4", + "oro/platform": ">=1.7,<1.7.4", + "padraic/humbug_get_contents": "<1.1.2", + "pagarme/pagarme-php": ">=0,<3", + "paragonie/random_compat": "<2", + "paypal/merchant-sdk-php": "<3.12", + "pear/archive_tar": "<1.4.4", + "personnummer/personnummer": "<3.0.2", + "phpfastcache/phpfastcache": ">=5,<5.0.13", + "phpmailer/phpmailer": "<6.1.6", + "phpmussel/phpmussel": ">=1,<1.6", + "phpmyadmin/phpmyadmin": "<4.9.2", + "phpoffice/phpexcel": "<1.8.2", + "phpoffice/phpspreadsheet": "<1.8", + "phpunit/phpunit": ">=4.8.19,<4.8.28|>=5.0.10,<5.6.3", + "phpwhois/phpwhois": "<=4.2.5", + "phpxmlrpc/extras": "<0.6.1", + "pimcore/pimcore": "<6.3", + "prestashop/autoupgrade": ">=4,<4.10.1", + "prestashop/contactform": ">1.0.1,<4.3", + "prestashop/gamification": "<2.3.2", + "prestashop/ps_facetedsearch": "<3.4.1", + "privatebin/privatebin": "<1.2.2|>=1.3,<1.3.2", + "propel/propel": ">=2-alpha.1,<=2-alpha.7", + "propel/propel1": ">=1,<=1.7.1", + "pterodactyl/panel": "<0.7.19|>=1-rc.0,<=1-rc.6", + "pusher/pusher-php-server": "<2.2.1", + "rainlab/debugbar-plugin": "<3.1", + "robrichards/xmlseclibs": "<3.0.4", + "sabberworm/php-css-parser": ">=1,<1.0.1|>=2,<2.0.1|>=3,<3.0.1|>=4,<4.0.1|>=5,<5.0.9|>=5.1,<5.1.3|>=5.2,<5.2.1|>=6,<6.0.2|>=7,<7.0.4|>=8,<8.0.1|>=8.1,<8.1.1|>=8.2,<8.2.1|>=8.3,<8.3.1", + "sabre/dav": ">=1.6,<1.6.99|>=1.7,<1.7.11|>=1.8,<1.8.9", + "scheb/two-factor-bundle": ">=0,<3.26|>=4,<4.11", + "sensiolabs/connect": "<4.2.3", + "serluck/phpwhois": "<=4.2.6", + "shopware/core": "<=6.3.2", + "shopware/platform": "<=6.3.2", + "shopware/shopware": "<5.3.7", + "silverstripe/admin": ">=1.0.3,<1.0.4|>=1.1,<1.1.1", + "silverstripe/assets": ">=1,<1.4.7|>=1.5,<1.5.2", + "silverstripe/cms": "<4.3.6|>=4.4,<4.4.4", + "silverstripe/comments": ">=1.3,<1.9.99|>=2,<2.9.99|>=3,<3.1.1", + "silverstripe/forum": "<=0.6.1|>=0.7,<=0.7.3", + "silverstripe/framework": "<4.4.7|>=4.5,<4.5.4", + "silverstripe/graphql": ">=2,<2.0.5|>=3,<3.1.2|>=3.2,<3.2.4", + "silverstripe/registry": ">=2.1,<2.1.2|>=2.2,<2.2.1", + "silverstripe/restfulserver": ">=1,<1.0.9|>=2,<2.0.4", + "silverstripe/subsites": ">=2,<2.1.1", + "silverstripe/taxonomy": ">=1.3,<1.3.1|>=2,<2.0.1", + "silverstripe/userforms": "<3", + "simple-updates/phpwhois": "<=1", + "simplesamlphp/saml2": "<1.10.6|>=2,<2.3.8|>=3,<3.1.4", + "simplesamlphp/simplesamlphp": "<1.18.6", + "simplesamlphp/simplesamlphp-module-infocard": "<1.0.1", + "simplito/elliptic-php": "<1.0.6", + "slim/slim": "<2.6", + "smarty/smarty": "<3.1.33", + "socalnick/scn-social-auth": "<1.15.2", + "spoonity/tcpdf": "<6.2.22", + "squizlabs/php_codesniffer": ">=1,<2.8.1|>=3,<3.0.1", + "ssddanbrown/bookstack": "<0.29.2", + "stormpath/sdk": ">=0,<9.9.99", + "studio-42/elfinder": "<2.1.49", + "sulu/sulu": "<1.6.34|>=2,<2.0.10|>=2.1,<2.1.1", + "swiftmailer/swiftmailer": ">=4,<5.4.5", + "sylius/admin-bundle": ">=1,<1.0.17|>=1.1,<1.1.9|>=1.2,<1.2.2", + "sylius/grid": ">=1,<1.1.19|>=1.2,<1.2.18|>=1.3,<1.3.13|>=1.4,<1.4.5|>=1.5,<1.5.1", + "sylius/grid-bundle": ">=1,<1.1.19|>=1.2,<1.2.18|>=1.3,<1.3.13|>=1.4,<1.4.5|>=1.5,<1.5.1", + "sylius/resource-bundle": "<1.3.14|>=1.4,<1.4.7|>=1.5,<1.5.2|>=1.6,<1.6.4", + "sylius/sylius": "<1.6.9|>=1.7,<1.7.9|>=1.8,<1.8.3", + "symbiote/silverstripe-multivaluefield": ">=3,<3.0.99", + "symbiote/silverstripe-versionedfiles": "<=2.0.3", + "symfony/cache": ">=3.1,<3.4.35|>=4,<4.2.12|>=4.3,<4.3.8", + "symfony/dependency-injection": ">=2,<2.0.17|>=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7", + "symfony/error-handler": ">=4.4,<4.4.4|>=5,<5.0.4", + "symfony/form": ">=2.3,<2.3.35|>=2.4,<2.6.12|>=2.7,<2.7.50|>=2.8,<2.8.49|>=3,<3.4.20|>=4,<4.0.15|>=4.1,<4.1.9|>=4.2,<4.2.1", + "symfony/framework-bundle": ">=2,<2.3.18|>=2.4,<2.4.8|>=2.5,<2.5.2|>=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7", + "symfony/http-foundation": ">=2,<2.8.52|>=3,<3.4.35|>=4,<4.2.12|>=4.3,<4.3.8|>=4.4,<4.4.7|>=5,<5.0.7", + "symfony/http-kernel": ">=2,<2.8.52|>=3,<3.4.35|>=4,<4.2.12|>=4.3,<4.4.13|>=5,<5.1.5", + "symfony/intl": ">=2.7,<2.7.38|>=2.8,<2.8.31|>=3,<3.2.14|>=3.3,<3.3.13", + "symfony/mime": ">=4.3,<4.3.8", + "symfony/phpunit-bridge": ">=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7", + "symfony/polyfill": ">=1,<1.10", + "symfony/polyfill-php55": ">=1,<1.10", + "symfony/proxy-manager-bridge": ">=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7", + "symfony/routing": ">=2,<2.0.19", + "symfony/security": ">=2,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7|>=4.4,<4.4.7|>=5,<5.0.7", + "symfony/security-bundle": ">=2,<2.7.48|>=2.8,<2.8.41|>=3,<3.3.17|>=3.4,<3.4.11|>=4,<4.0.11", + "symfony/security-core": ">=2.4,<2.6.13|>=2.7,<2.7.9|>=2.7.30,<2.7.32|>=2.8,<2.8.37|>=3,<3.3.17|>=3.4,<3.4.7|>=4,<4.0.7", + "symfony/security-csrf": ">=2.4,<2.7.48|>=2.8,<2.8.41|>=3,<3.3.17|>=3.4,<3.4.11|>=4,<4.0.11", + "symfony/security-guard": ">=2.8,<2.8.41|>=3,<3.3.17|>=3.4,<3.4.11|>=4,<4.0.11", + "symfony/security-http": ">=2.3,<2.3.41|>=2.4,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.2.12|>=4.3,<4.3.8|>=4.4,<4.4.7|>=5,<5.0.7", + "symfony/serializer": ">=2,<2.0.11", + "symfony/symfony": ">=2,<2.8.52|>=3,<3.4.35|>=4,<4.2.12|>=4.3,<4.4.13|>=5,<5.1.5", + "symfony/translation": ">=2,<2.0.17", + "symfony/validator": ">=2,<2.0.24|>=2.1,<2.1.12|>=2.2,<2.2.5|>=2.3,<2.3.3", + "symfony/var-exporter": ">=4.2,<4.2.12|>=4.3,<4.3.8", + "symfony/web-profiler-bundle": ">=2,<2.3.19|>=2.4,<2.4.9|>=2.5,<2.5.4", + "symfony/yaml": ">=2,<2.0.22|>=2.1,<2.1.7", + "t3g/svg-sanitizer": "<1.0.3", + "tecnickcom/tcpdf": "<6.2.22", + "thelia/backoffice-default-template": ">=2.1,<2.1.2", + "thelia/thelia": ">=2.1-beta.1,<2.1.3", + "theonedemon/phpwhois": "<=4.2.5", + "titon/framework": ">=0,<9.9.99", + "truckersmp/phpwhois": "<=4.3.1", + "twig/twig": "<1.38|>=2,<2.7", + "typo3/cms": ">=6.2,<6.2.30|>=7,<7.6.32|>=8,<8.7.30|>=9,<9.5.20|>=10,<10.4.6", + "typo3/cms-core": ">=8,<8.7.30|>=9,<9.5.20|>=10,<10.4.6", + "typo3/flow": ">=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1|>=2.3,<2.3.16|>=3,<3.0.10|>=3.1,<3.1.7|>=3.2,<3.2.7|>=3.3,<3.3.5", + "typo3/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4", + "typo3/phar-stream-wrapper": ">=1,<2.1.1|>=3,<3.1.1", + "typo3fluid/fluid": ">=2,<2.0.5|>=2.1,<2.1.4|>=2.2,<2.2.1|>=2.3,<2.3.5|>=2.4,<2.4.1|>=2.5,<2.5.5|>=2.6,<2.6.1", + "ua-parser/uap-php": "<3.8", + "usmanhalalit/pixie": "<1.0.3|>=2,<2.0.2", + "verot/class.upload.php": "<=1.0.3|>=2,<=2.0.4", + "wallabag/tcpdf": "<6.2.22", + "willdurand/js-translation-bundle": "<2.1.1", + "yii2mod/yii2-cms": "<1.9.2", + "yiisoft/yii": ">=1.1.14,<1.1.15", + "yiisoft/yii2": "<2.0.38", + "yiisoft/yii2-bootstrap": "<2.0.4", + "yiisoft/yii2-dev": "<2.0.15", + "yiisoft/yii2-elasticsearch": "<2.0.5", + "yiisoft/yii2-gii": "<2.0.4", + "yiisoft/yii2-jui": "<2.0.4", + "yiisoft/yii2-redis": "<2.0.8", + "yourls/yourls": "<1.7.4", + "zendframework/zend-cache": ">=2.4,<2.4.8|>=2.5,<2.5.3", + "zendframework/zend-captcha": ">=2,<2.4.9|>=2.5,<2.5.2", + "zendframework/zend-crypt": ">=2,<2.4.9|>=2.5,<2.5.2", + "zendframework/zend-db": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.10|>=2.3,<2.3.5", + "zendframework/zend-developer-tools": ">=1.2.2,<1.2.3", + "zendframework/zend-diactoros": ">=1,<1.8.4", + "zendframework/zend-feed": ">=1,<2.10.3", + "zendframework/zend-form": ">=2,<2.2.7|>=2.3,<2.3.1", + "zendframework/zend-http": ">=1,<2.8.1", + "zendframework/zend-json": ">=2.1,<2.1.6|>=2.2,<2.2.6", + "zendframework/zend-ldap": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.8|>=2.3,<2.3.3", + "zendframework/zend-mail": ">=2,<2.4.11|>=2.5,<2.7.2", + "zendframework/zend-navigation": ">=2,<2.2.7|>=2.3,<2.3.1", + "zendframework/zend-session": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.9|>=2.3,<2.3.4", + "zendframework/zend-validator": ">=2.3,<2.3.6", + "zendframework/zend-view": ">=2,<2.2.7|>=2.3,<2.3.1", + "zendframework/zend-xmlrpc": ">=2.1,<2.1.6|>=2.2,<2.2.6", + "zendframework/zendframework": "<2.5.1", + "zendframework/zendframework1": "<1.12.20", + "zendframework/zendopenid": ">=2,<2.0.2", + "zendframework/zendxml": ">=1,<1.0.1", + "zetacomponents/mail": "<1.8.2", + "zf-commons/zfc-user": "<1.2.2", + "zfcampus/zf-apigility-doctrine": ">=1,<1.0.3", + "zfr/zfr-oauth2-server-module": "<0.1.2" + }, + "type": "metapackage", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "role": "maintainer" + }, + { + "name": "Ilya Tribusean", + "email": "slash3b@gmail.com", + "role": "maintainer" + } + ], + "description": "Prevents installation of composer packages with known security vulnerabilities: no API, simply require it", + "funding": [ + { + "url": "https://github.com/Ocramius", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/roave/security-advisories", + "type": "tidelift" + } + ], + "time": "2020-11-01T20:01:47+00:00" + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", + "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.7 || ^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Looks up which function or method a line of code belongs to", + "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", + "time": "2017-03-04T06:30:41+00:00" + }, + { + "name": "sebastian/comparator", + "version": "3.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/5de4fc177adf9bce8df98d8d141a7559d7ccf6da", + "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da", + "shasum": "" + }, + "require": { + "php": "^7.1", + "sebastian/diff": "^3.0", + "sebastian/exporter": "^3.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "https://github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ], + "time": "2018-07-12T15:12:46+00:00" + }, + { + "name": "sebastian/diff", + "version": "3.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/720fcc7e9b5cf384ea68d9d930d480907a0c1a29", + "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.5 || ^8.0", + "symfony/process": "^2 || ^3.3 || ^4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff", + "udiff", + "unidiff", + "unified diff" + ], + "time": "2019-02-04T06:01:07+00:00" + }, + { + "name": "sebastian/environment", + "version": "4.2.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "464c90d7bdf5ad4e8a6aea15c091fec0603d4368" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/464c90d7bdf5ad4e8a6aea15c091fec0603d4368", + "reference": "464c90d7bdf5ad4e8a6aea15c091fec0603d4368", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.5" + }, + "suggest": { + "ext-posix": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.2-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "http://www.github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], + "time": "2019-11-20T08:46:58+00:00" + }, + { + "name": "sebastian/exporter", + "version": "3.1.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/68609e1261d215ea5b21b7987539cbfbe156ec3e", + "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e", + "shasum": "" + }, + "require": { + "php": "^7.0", + "sebastian/recursion-context": "^3.0" + }, + "require-dev": { + "ext-mbstring": "*", + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "http://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ], + "time": "2019-09-14T09:02:43+00:00" + }, + { + "name": "sebastian/global-state", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", + "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", + "shasum": "" + }, + "require": { + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "suggest": { + "ext-uopz": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Snapshotting of global state", + "homepage": "http://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], + "time": "2017-04-27T15:39:26+00:00" + }, + { + "name": "sebastian/object-enumerator", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5", + "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5", + "shasum": "" + }, + "require": { + "php": "^7.0", + "sebastian/object-reflector": "^1.1.1", + "sebastian/recursion-context": "^3.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Traverses array structures and object graphs to enumerate all referenced objects", + "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "time": "2017-08-03T12:35:26+00:00" + }, + { + "name": "sebastian/object-reflector", + "version": "1.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "773f97c67f28de00d397be301821b06708fca0be" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be", + "reference": "773f97c67f28de00d397be301821b06708fca0be", + "shasum": "" + }, + "require": { + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Allows reflection of object attributes, including inherited and non-public ones", + "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "time": "2017-03-29T09:07:27+00:00" + }, + { + "name": "sebastian/recursion-context", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", + "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", + "shasum": "" + }, + "require": { + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "time": "2017-03-03T06:23:57+00:00" + }, + { + "name": "sebastian/resource-operations", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/resource-operations.git", + "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/4d7a795d35b889bf80a0cc04e08d77cedfa917a9", + "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides a list of PHP built-in functions that operate on resources", + "homepage": "https://www.github.com/sebastianbergmann/resource-operations", + "time": "2018-10-04T04:07:39+00:00" + }, + { + "name": "sebastian/version", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", + "shasum": "" + }, + "require": { + "php": ">=5.6" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", + "time": "2016-10-03T07:35:21+00:00" + }, + { + "name": "squizlabs/php_codesniffer", + "version": "3.5.8", + "source": { + "type": "git", + "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", + "reference": "9d583721a7157ee997f235f327de038e7ea6dac4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/9d583721a7157ee997f235f327de038e7ea6dac4", + "reference": "9d583721a7157ee997f235f327de038e7ea6dac4", + "shasum": "" + }, + "require": { + "ext-simplexml": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": ">=5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" + }, + "bin": [ + "bin/phpcs", + "bin/phpcbf" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Greg Sherwood", + "role": "lead" + } + ], + "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", + "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", + "keywords": [ + "phpcs", + "standards" + ], + "time": "2020-10-23T02:01:07+00:00" + }, + { + "name": "symfony/console", + "version": "v5.1.8", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "e0b2c29c0fa6a69089209bbe8fcff4df2a313d0e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/e0b2c29c0fa6a69089209bbe8fcff4df2a313d0e", + "reference": "e0b2c29c0fa6a69089209bbe8fcff4df2a313d0e", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php73": "^1.8", + "symfony/polyfill-php80": "^1.15", + "symfony/service-contracts": "^1.1|^2", + "symfony/string": "^5.1" + }, + "conflict": { + "symfony/dependency-injection": "<4.4", + "symfony/dotenv": "<5.1", + "symfony/event-dispatcher": "<4.4", + "symfony/lock": "<4.4", + "symfony/process": "<4.4" + }, + "provide": { + "psr/log-implementation": "1.0" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "^4.4|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/event-dispatcher": "^4.4|^5.0", + "symfony/lock": "^4.4|^5.0", + "symfony/process": "^4.4|^5.0", + "symfony/var-dumper": "^4.4|^5.0" + }, + "suggest": { + "psr/log": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/lock": "", + "symfony/process": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Console Component", + "homepage": "https://symfony.com", + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-10-24T12:01:57+00:00" + }, + { + "name": "symfony/finder", + "version": "v5.1.8", + "source": { + "type": "git", + "url": "https://github.com/symfony/finder.git", + "reference": "e70eb5a69c2ff61ea135a13d2266e8914a67b3a0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/finder/zipball/e70eb5a69c2ff61ea135a13d2266e8914a67b3a0", + "reference": "e70eb5a69c2ff61ea135a13d2266e8914a67b3a0", + "shasum": "" + }, + "require": { + "php": ">=7.2.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Finder\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Finder Component", + "homepage": "https://symfony.com", + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-10-24T12:01:57+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.20.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "f4ba089a5b6366e453971d3aad5fe8e897b37f41" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/f4ba089a5b6366e453971d3aad5fe8e897b37f41", + "reference": "f4ba089a5b6366e453971d3aad5fe8e897b37f41", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.20-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-10-23T14:02:19+00:00" + }, + { + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.20.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "c7cf3f858ec7d70b89559d6e6eb1f7c2517d479c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/c7cf3f858ec7d70b89559d6e6eb1f7c2517d479c", + "reference": "c7cf3f858ec7d70b89559d6e6eb1f7c2517d479c", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.20-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's grapheme_* functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-10-23T14:02:19+00:00" + }, + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.20.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "727d1096295d807c309fb01a851577302394c897" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/727d1096295d807c309fb01a851577302394c897", + "reference": "727d1096295d807c309fb01a851577302394c897", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.20-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "files": [ + "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's Normalizer class and related functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-10-23T14:02:19+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.20.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "39d483bdf39be819deabf04ec872eb0b2410b531" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/39d483bdf39be819deabf04ec872eb0b2410b531", + "reference": "39d483bdf39be819deabf04ec872eb0b2410b531", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.20-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-10-23T14:02:19+00:00" + }, + { + "name": "symfony/polyfill-php73", + "version": "v1.20.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php73.git", + "reference": "8ff431c517be11c78c48a39a66d37431e26a6bed" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/8ff431c517be11c78c48a39a66d37431e26a6bed", + "reference": "8ff431c517be11c78c48a39a66d37431e26a6bed", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.20-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php73\\": "" + }, + "files": [ + "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-10-23T14:02:19+00:00" + }, + { + "name": "symfony/polyfill-php80", + "version": "v1.20.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "e70aa8b064c5b72d3df2abd5ab1e90464ad009de" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/e70aa8b064c5b72d3df2abd5ab1e90464ad009de", + "reference": "e70aa8b064c5b72d3df2abd5ab1e90464ad009de", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.20-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "files": [ + "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-10-23T14:02:19+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "v2.2.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "d15da7ba4957ffb8f1747218be9e1a121fd298a1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/d15da7ba4957ffb8f1747218be9e1a121fd298a1", + "reference": "d15da7ba4957ffb8f1747218be9e1a121fd298a1", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "psr/container": "^1.0" + }, + "suggest": { + "symfony/service-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.2-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Service\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to writing services", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-09-07T11:33:47+00:00" + }, + { + "name": "symfony/string", + "version": "v5.1.8", + "source": { + "type": "git", + "url": "https://github.com/symfony/string.git", + "reference": "a97573e960303db71be0dd8fda9be3bca5e0feea" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/string/zipball/a97573e960303db71be0dd8fda9be3bca5e0feea", + "reference": "a97573e960303db71be0dd8fda9be3bca5e0feea", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "~1.15" + }, + "require-dev": { + "symfony/error-handler": "^4.4|^5.0", + "symfony/http-client": "^4.4|^5.0", + "symfony/translation-contracts": "^1.1|^2", + "symfony/var-exporter": "^4.4|^5.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\String\\": "" + }, + "files": [ + "Resources/functions.php" + ], + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony String component", + "homepage": "https://symfony.com", + "keywords": [ + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-10-24T12:01:57+00:00" + }, + { + "name": "szepeviktor/phpstan-wordpress", + "version": "v0.5.0", + "source": { + "type": "git", + "url": "https://github.com/szepeviktor/phpstan-wordpress.git", + "reference": "1946738cdec130df4727f780ac541f8c6fd746a2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/szepeviktor/phpstan-wordpress/zipball/1946738cdec130df4727f780ac541f8c6fd746a2", + "reference": "1946738cdec130df4727f780ac541f8c6fd746a2", + "shasum": "" + }, + "require": { + "php": "~7.1", + "php-stubs/wordpress-stubs": "^4.7 || ^5.0", + "phpstan/phpstan": "^0.12.0", + "symfony/polyfill-php73": "^1.12.0" + }, + "require-dev": { + "composer/composer": "^1.8.6", + "consistence/coding-standard": "^3.8", + "dealerdirect/phpcodesniffer-composer-installer": "^0.5", + "jakub-onderka/php-parallel-lint": "^1.0", + "phpstan/phpstan-strict-rules": "^0.12", + "slevomat/coding-standard": "^5.0.4" + }, + "type": "phpstan-extension", + "extra": { + "phpstan": { + "includes": [ + "extension.neon" + ] + } + }, + "autoload": { + "psr-4": { + "PHPStan\\WordPress\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "WordPress extensions for PHPStan", + "keywords": [ + "PHPStan", + "code analyse", + "code analysis", + "static analysis", + "wordpress" + ], + "time": "2019-12-05T22:19:53+00:00" + }, + { + "name": "theseer/tokenizer", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/theseer/tokenizer.git", + "reference": "75a63c33a8577608444246075ea0af0d052e452a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/75a63c33a8577608444246075ea0af0d052e452a", + "reference": "75a63c33a8577608444246075ea0af0d052e452a", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": "^7.2 || ^8.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + } + ], + "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2020-07-12T23:59:07+00:00" + }, + { + "name": "webmozart/assert", + "version": "1.9.1", + "source": { + "type": "git", + "url": "https://github.com/webmozart/assert.git", + "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozart/assert/zipball/bafc69caeb4d49c39fd0779086c03a3738cbb389", + "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0 || ^8.0", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "phpstan/phpstan": "<0.12.20", + "vimeo/psalm": "<3.9.1" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.36 || ^7.5.13" + }, + "type": "library", + "autoload": { + "psr-4": { + "Webmozart\\Assert\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" + ], + "time": "2020-07-08T17:02:28+00:00" + }, + { + "name": "woocommerce/woocommerce", + "version": "3.9.3", + "source": { + "type": "git", + "url": "https://github.com/woocommerce/woocommerce.git", + "reference": "310a620134199758e071ad00690816a95ced2100" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/woocommerce/woocommerce/zipball/310a620134199758e071ad00690816a95ced2100", + "reference": "310a620134199758e071ad00690816a95ced2100", + "shasum": "" + }, + "require": { + "automattic/jetpack-autoloader": "^1.2.0", + "composer/installers": "1.7.0", + "maxmind-db/reader": "1.6.0", + "php": ">=5.6|>=7.0", + "woocommerce/woocommerce-blocks": "2.5.14", + "woocommerce/woocommerce-rest-api": "1.0.7" + }, + "require-dev": { + "phpunit/phpunit": "7.5.18", + "woocommerce/woocommerce-sniffs": "0.0.9" + }, + "type": "wordpress-plugin", + "extra": { + "installer-paths": { + "packages/woocommerce-rest-api": [ + "woocommerce/woocommerce-rest-api" + ], + "packages/woocommerce-blocks": [ + "woocommerce/woocommerce-blocks" + ] + }, + "scripts-description": { + "test": "Run unit tests", + "phpcs": "Analyze code against the WordPress coding standards with PHP_CodeSniffer", + "phpcbf": "Fix coding standards warnings/errors automatically with PHP Code Beautifier" + } + }, + "autoload": { + "exclude-from-classmap": [ + "includes/legacy", + "includes/libraries" + ], + "psr-4": { + "Automattic\\WooCommerce\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-3.0-or-later" + ], + "description": "An eCommerce toolkit that helps you sell anything. Beautifully.", + "homepage": "https://woocommerce.com/", + "time": "2020-03-04T09:08:17+00:00" + }, + { + "name": "woocommerce/woocommerce-blocks", + "version": "v2.5.14", + "source": { + "type": "git", + "url": "https://github.com/woocommerce/woocommerce-gutenberg-products-block.git", + "reference": "0dd70617085d2e73f3adfb38df98a90df3514816" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/woocommerce/woocommerce-gutenberg-products-block/zipball/0dd70617085d2e73f3adfb38df98a90df3514816", + "reference": "0dd70617085d2e73f3adfb38df98a90df3514816", + "shasum": "" + }, + "require": { + "automattic/jetpack-autoloader": "1.3.2", + "composer/installers": "1.7.0" + }, + "require-dev": { + "phpunit/phpunit": "6.5.14", + "woocommerce/woocommerce-sniffs": "0.0.7" + }, + "type": "wordpress-plugin", + "extra": { + "scripts-description": { + "phpcs": "Analyze code against the WordPress coding standards with PHP_CodeSniffer", + "phpcbf": "Fix coding standards warnings/errors automatically with PHP Code Beautifier" + } + }, + "autoload": { + "psr-4": { + "Automattic\\WooCommerce\\Blocks\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-3.0-or-later" + ], + "description": "WooCommerce blocks for the Gutenberg editor.", + "homepage": "https://woocommerce.com/", + "keywords": [ + "blocks", + "gutenberg", + "woocommerce" + ], + "time": "2020-03-03T13:25:56+00:00" + }, + { + "name": "woocommerce/woocommerce-rest-api", + "version": "1.0.7", + "source": { + "type": "git", + "url": "https://github.com/woocommerce/woocommerce-rest-api.git", + "reference": "49162ec26a25bd0c6efc0f3452b113cdfff0a823" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/woocommerce/woocommerce-rest-api/zipball/49162ec26a25bd0c6efc0f3452b113cdfff0a823", + "reference": "49162ec26a25bd0c6efc0f3452b113cdfff0a823", + "shasum": "" + }, + "require": { + "automattic/jetpack-autoloader": "^1.2.0" + }, + "require-dev": { + "phpunit/phpunit": "6.5.14", + "woocommerce/woocommerce-sniffs": "0.0.9" + }, + "type": "wordpress-plugin", + "autoload": { + "classmap": [ + "src/Controllers/Version1", + "src/Controllers/Version2", + "src/Controllers/Version3" + ], + "psr-4": { + "Automattic\\WooCommerce\\RestApi\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-3.0-or-later" + ], + "description": "The WooCommerce core REST API.", + "homepage": "https://github.com/woocommerce/woocommerce-rest-api", + "abandoned": true, + "time": "2020-01-28T21:04:51+00:00" + }, + { + "name": "wp-coding-standards/wpcs", + "version": "2.3.0", + "source": { + "type": "git", + "url": "https://github.com/WordPress/WordPress-Coding-Standards.git", + "reference": "7da1894633f168fe244afc6de00d141f27517b62" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/WordPress/WordPress-Coding-Standards/zipball/7da1894633f168fe244afc6de00d141f27517b62", + "reference": "7da1894633f168fe244afc6de00d141f27517b62", + "shasum": "" + }, + "require": { + "php": ">=5.4", + "squizlabs/php_codesniffer": "^3.3.1" + }, + "require-dev": { + "dealerdirect/phpcodesniffer-composer-installer": "^0.5 || ^0.6", + "phpcompatibility/php-compatibility": "^9.0", + "phpcsstandards/phpcsdevtools": "^1.0", + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" + }, + "suggest": { + "dealerdirect/phpcodesniffer-composer-installer": "^0.6 || This Composer plugin will sort out the PHPCS 'installed_paths' automatically." + }, + "type": "phpcodesniffer-standard", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Contributors", + "homepage": "https://github.com/WordPress/WordPress-Coding-Standards/graphs/contributors" + } + ], + "description": "PHP_CodeSniffer rules (sniffs) to enforce WordPress coding conventions", + "keywords": [ + "phpcs", + "standards", + "wordpress" + ], + "time": "2020-05-13T23:57:56+00:00" + }, + { + "name": "wp-media/background-processing", + "version": "v1.3.1", + "source": { + "type": "git", + "url": "https://github.com/wp-media/background-processing.git", + "reference": "20979ca3bc258bb97a526c2c4aff61254872bfea" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wp-media/background-processing/zipball/20979ca3bc258bb97a526c2c4aff61254872bfea", + "reference": "20979ca3bc258bb97a526c2c4aff61254872bfea", + "shasum": "" + }, + "require-dev": { + "brain/monkey": "^2.0", + "dealerdirect/phpcodesniffer-composer-installer": "^0.5.0", + "php": "^5.6 || ^7", + "phpcompatibility/phpcompatibility-wp": "^2.0", + "phpunit/phpunit": "^5.7 || ^7", + "wp-coding-standards/wpcs": "^2", + "wp-media/phpunit": "^1.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0+" + ], + "authors": [ + { + "name": "WP Media", + "email": "contact@wp-media.me", + "homepage": "https://wp-media.me" + } + ], + "description": "Async & Background Tasks Processing", + "homepage": "https://github.com/wp-media/background-processing", + "time": "2020-08-21T13:47:06+00:00" + }, + { + "name": "wp-media/cloudflare", + "version": "v1.0", + "source": { + "type": "git", + "url": "https://github.com/wp-media/module-cloudflare.git", + "reference": "2fa5d2c99e7696d71885bda1c14e49e3ff0d5e3e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wp-media/module-cloudflare/zipball/2fa5d2c99e7696d71885bda1c14e49e3ff0d5e3e", + "reference": "2fa5d2c99e7696d71885bda1c14e49e3ff0d5e3e", + "shasum": "" + }, + "require-dev": { + "brain/monkey": "^2.0", + "dealerdirect/phpcodesniffer-composer-installer": "^0.5.0", + "php": "^5.6 || ^7", + "phpcompatibility/phpcompatibility-wp": "^2.0", + "phpunit/phpunit": "^5.7 || ^7", + "wp-coding-standards/wpcs": "^2", + "wp-media/event-manager": "^3.1", + "wp-media/options": "^3.0", + "wp-media/phpunit": "^1.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "WPMedia\\Cloudflare\\": "." + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0+" + ], + "authors": [ + { + "name": "WP Media", + "email": "contact@wp-media.me", + "homepage": "https://wp-media.me" + } + ], + "description": "Cloudflare Addon", + "homepage": "https://github.com/wp-media/cloudflare", + "time": "2020-08-24T20:21:34+00:00" + }, + { + "name": "wp-media/module-rocketcdn", + "version": "v1.0.3", + "source": { + "type": "git", + "url": "https://github.com/wp-media/module-rocketcdn.git", + "reference": "989dbc6a8240d3f7b6f2fe4f234d3b4832df9c8c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wp-media/module-rocketcdn/zipball/989dbc6a8240d3f7b6f2fe4f234d3b4832df9c8c", + "reference": "989dbc6a8240d3f7b6f2fe4f234d3b4832df9c8c", + "shasum": "" + }, + "require-dev": { + "brain/monkey": "^2.0", + "dealerdirect/phpcodesniffer-composer-installer": "^0.5.0", + "php": "^5.6 || ^7", + "phpcompatibility/phpcompatibility-wp": "^2.0", + "phpunit/phpunit": "^5.7 || ^7", + "roave/security-advisories": "dev-master", + "wp-coding-standards/wpcs": "^2", + "wp-media/event-manager": "^3.1", + "wp-media/module-container": "^2.4", + "wp-media/options": "^3.0", + "wp-media/phpunit": "^1.0", + "wp-media/phpunit-wp-rocket": "^1.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "WP_Rocket\\Engine\\CDN\\RocketCDN\\": "." + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0+" + ], + "authors": [ + { + "name": "WP Media", + "email": "contact@wp-media.me", + "homepage": "https://wp-media.me" + } + ], + "description": "Module for RocketCDN integration", + "homepage": "https://github.com/wp-media/module-rocketcdn", + "time": "2020-11-03T19:12:06+00:00" + }, + { + "name": "wp-media/module-varnish", + "version": "v1.0", + "source": { + "type": "git", + "url": "https://github.com/wp-media/module-varnish.git", + "reference": "698534076da4af54fe4a99f33cd0c947175d564c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wp-media/module-varnish/zipball/698534076da4af54fe4a99f33cd0c947175d564c", + "reference": "698534076da4af54fe4a99f33cd0c947175d564c", + "shasum": "" + }, + "require-dev": { + "brain/monkey": "^2.0", + "dealerdirect/phpcodesniffer-composer-installer": "^0.5.0", + "php": "^5.6 || ^7", + "phpcompatibility/phpcompatibility-wp": "^2.0", + "phpstan/phpstan": "^0.12.3", + "phpunit/phpunit": "^5.7 || ^7", + "roave/security-advisories": "dev-master", + "szepeviktor/phpstan-wordpress": "^0.6", + "wp-coding-standards/wpcs": "^2", + "wp-media/event-manager": "^3.1", + "wp-media/module-container": "^2.4", + "wp-media/options": "^3.0", + "wp-media/phpunit": "^1.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "WP_Rocket\\Addon\\Varnish\\": "." + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0+" + ], + "authors": [ + { + "name": "WP Media", + "email": "contact@wp-media.me", + "homepage": "https://wp-media.me" + } + ], + "description": "Varnish Addon for WP Rocket", + "homepage": "https://github.com/wp-media/module-varnish", + "time": "2020-09-01T14:11:34+00:00" + }, + { + "name": "wp-media/phpunit", + "version": "v1.1.6", + "source": { + "type": "git", + "url": "https://github.com/wp-media/phpunit.git", + "reference": "5ea013e3a573c4211512248971145496193d9535" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wp-media/phpunit/zipball/5ea013e3a573c4211512248971145496193d9535", + "reference": "5ea013e3a573c4211512248971145496193d9535", + "shasum": "" + }, + "require": { + "brain/monkey": "^2.0", + "mikey179/vfsstream": "^1.6", + "php": "^5.6 || ^7", + "phpunit/phpunit": "^5.7 || ^7" + }, + "bin": [ + "wpmedia-phpunit" + ], + "type": "library", + "autoload": { + "psr-4": { + "WPMedia\\PHPUnit\\": "." + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0+" + ], + "authors": [ + { + "name": "WP Media", + "email": "contact@wp-media.me", + "homepage": "https://wp-media.me" + } + ], + "description": "PHPUnit extender for bootstrapping unit and WordPress integration test suites.", + "homepage": "https://github.com/wp-media/phpunit", + "time": "2020-04-08T10:44:10+00:00" + }, + { + "name": "wp-media/rocket-lazyload-common", + "version": "v2.5.13", + "source": { + "type": "git", + "url": "https://github.com/wp-media/rocket-lazyload-common.git", + "reference": "511aca1c16aafd61d0a21b1559c38308e948d37d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wp-media/rocket-lazyload-common/zipball/511aca1c16aafd61d0a21b1559c38308e948d37d", + "reference": "511aca1c16aafd61d0a21b1559c38308e948d37d", + "shasum": "" + }, + "require": { + "php": ">=5.6" + }, + "require-dev": { + "brain/monkey": "^2.0", + "dealerdirect/phpcodesniffer-composer-installer": "^0.5.0", + "php": "^5.6 || ^7", + "phpcompatibility/phpcompatibility-wp": "^2.0", + "phpunit/phpunit": "^5.7 || ^7", + "wp-coding-standards/wpcs": "^2.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "RocketLazyload\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-3.0-or-later" + ], + "authors": [ + { + "name": "WP Media", + "email": "contact@wp-media.me" + } + ], + "description": "Common Code between WP Rocket and Lazyload by WP Rocket", + "time": "2020-11-02T15:54:11+00:00" + }, + { + "name": "wp-media/wp-imagify-partner", + "version": "v1.0", + "source": { + "type": "git", + "url": "https://github.com/wp-media/wp-imagify-partner.git", + "reference": "c3412007b268a2793432f7d4fed31d2639ee2982" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wp-media/wp-imagify-partner/zipball/c3412007b268a2793432f7d4fed31d2639ee2982", + "reference": "c3412007b268a2793432f7d4fed31d2639ee2982", + "shasum": "" + }, + "type": "library", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0+" + ], + "authors": [ + { + "name": "WP Media", + "email": "contact@wp-media.me", + "homepage": "https://wp-media.me" + } + ], + "description": "A php class allowing WordPress plugin developers to promote Imagify through their own plugin", + "homepage": "https://github.com/wp-media/wp-imagify-partner", + "keywords": [ + "Imagify", + "wordpress" + ], + "time": "2020-01-22T22:22:41+00:00" + }, + { + "name": "wpackagist-plugin/amp", + "version": "1.5.5", + "source": { + "type": "svn", + "url": "https://plugins.svn.wordpress.org/amp/", + "reference": "tags/1.5.5" + }, + "dist": { + "type": "zip", + "url": "https://downloads.wordpress.org/plugin/amp.1.5.5.zip" + }, + "require": { + "composer/installers": "~1.0" + }, + "type": "wordpress-plugin", + "homepage": "https://wordpress.org/plugins/amp/" + }, + { + "name": "wpackagist-plugin/hummingbird-performance", + "version": "2.0.1", + "source": { + "type": "svn", + "url": "https://plugins.svn.wordpress.org/hummingbird-performance/", + "reference": "tags/2.0.1" + }, + "dist": { + "type": "zip", + "url": "https://downloads.wordpress.org/plugin/hummingbird-performance.2.0.1.zip" + }, + "require": { + "composer/installers": "~1.0" + }, + "type": "wordpress-plugin", + "homepage": "https://wordpress.org/plugins/hummingbird-performance/" + }, + { + "name": "wpackagist-plugin/pdf-embedder", + "version": "4.6.1", + "source": { + "type": "svn", + "url": "https://plugins.svn.wordpress.org/pdf-embedder/", + "reference": "tags/4.6.1" + }, + "dist": { + "type": "zip", + "url": "https://downloads.wordpress.org/plugin/pdf-embedder.4.6.1.zip" + }, + "require": { + "composer/installers": "~1.0" + }, + "type": "wordpress-plugin", + "homepage": "https://wordpress.org/plugins/pdf-embedder/" + }, + { + "name": "wpackagist-plugin/simple-custom-css", + "version": "4.0.4", + "source": { + "type": "svn", + "url": "https://plugins.svn.wordpress.org/simple-custom-css/", + "reference": "trunk" + }, + "dist": { + "type": "zip", + "url": "https://downloads.wordpress.org/plugin/simple-custom-css.zip?timestamp=1591707703" + }, + "require": { + "composer/installers": "~1.0" + }, + "type": "wordpress-plugin", + "homepage": "https://wordpress.org/plugins/simple-custom-css/" + }, + { + "name": "wpackagist-plugin/spinupwp", + "version": "1.2", + "source": { + "type": "svn", + "url": "https://plugins.svn.wordpress.org/spinupwp/", + "reference": "tags/1.2" + }, + "dist": { + "type": "zip", + "url": "https://downloads.wordpress.org/plugin/spinupwp.1.2.zip" + }, + "require": { + "composer/installers": "~1.0" + }, + "type": "wordpress-plugin", + "homepage": "https://wordpress.org/plugins/spinupwp/" + }, + { + "name": "wpackagist-plugin/wp-smushit", + "version": "3.7.1", + "source": { + "type": "svn", + "url": "https://plugins.svn.wordpress.org/wp-smushit/", + "reference": "tags/3.7.1" + }, + "dist": { + "type": "zip", + "url": "https://downloads.wordpress.org/plugin/wp-smushit.3.7.1.zip" + }, + "require": { + "composer/installers": "~1.0" + }, + "type": "wordpress-plugin", + "homepage": "https://wordpress.org/plugins/wp-smushit/" + } + ], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": { + "coenjacobs/mozart": 10, + "roave/security-advisories": 20 + }, + "prefer-stable": false, + "prefer-lowest": false, + "platform": { + "php": ">=5.6.0" + }, + "platform-dev": { + "php": "^5.6 || ^7" + }, + "plugin-api-version": "1.1.0" +} diff --git a/wp-content/plugins/wp-rocket/contributors.txt b/wp-content/plugins/wp-rocket/contributors.txt new file mode 100644 index 0000000..b405b8d --- /dev/null +++ b/wp-content/plugins/wp-rocket/contributors.txt @@ -0,0 +1,21 @@ +This file contains a list of people who have made large contributions to WP Rocket. + +Developers: + Jonathan Buttigieg + Remy Perona + Arun Basil Lal + Cristina Soponar + Tonya Mork + Ahmed Saeed + Caspar Green + +QA: + David Acuna + +UX: + Caspar Hübinger + Thomas Geisen + +Previous contributors: + Julio Potier + Gregory Viguier \ No newline at end of file diff --git a/wp-content/plugins/wp-rocket/inc/3rd-party/3rd-party.php b/wp-content/plugins/wp-rocket/inc/3rd-party/3rd-party.php new file mode 100644 index 0000000..e5acf03 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/3rd-party/3rd-party.php @@ -0,0 +1,89 @@ +pagination_base ); + + rocket_godaddy_request( 'PURGE', $home_url ); + rocket_godaddy_request( 'PURGE', $home_pagination_url ); +} +add_action( 'before_rocket_clean_home', 'rocket_clean_home_godaddy', 10, 2 ); + +/** + * Perform the call to the Varnish server to purge + * + * @since 2.9.5 + * @source WPaaS\Cache + * + * @param string $method can be BAN or PURGE. + * @param string $url URL to purge. + * @return void + */ +function rocket_godaddy_request( $method, $url = null ) { + if ( ! method_exists( 'WPass\Plugin', 'vip' ) ) { + return; + } + + if ( empty( $url ) ) { + $url = home_url(); + } + + $host = rocket_extract_url_component( $url, PHP_URL_HOST ); + $url = set_url_scheme( str_replace( $host, WPaas\Plugin::vip(), $url ), 'http' ); + + wp_cache_flush(); + + // This forces the APC cache to flush across the server. + update_option( 'gd_system_last_cache_flush', time() ); + + wp_remote_request( + esc_url_raw( $url ), + [ + 'method' => $method, + 'blocking' => false, + 'headers' => [ + 'Host' => $host, + ], + ] + ); +} diff --git a/wp-content/plugins/wp-rocket/inc/3rd-party/hosting/kinsta.php b/wp-content/plugins/wp-rocket/inc/3rd-party/hosting/kinsta.php new file mode 100644 index 0000000..a131745 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/3rd-party/hosting/kinsta.php @@ -0,0 +1,166 @@ +kinsta_cache_purge ) ) { + $kinsta_cache->kinsta_cache_purge->purge_complete_caches(); + } + } + add_action( 'after_rocket_clean_domain', 'rocket_clean_kinsta_cache' ); + + /** + * Partially clear Kinsta cache when partially clearing WP Rocket cache + * + * @since 3.0 + * @author Remy Perona + * + * @param object $post Post object. + * @return void + */ + function rocket_clean_kinsta_post_cache( $post ) { + global $kinsta_cache; + $kinsta_cache->kinsta_cache_purge->initiate_purge( $post->ID, 'post' ); + } + add_action( 'after_rocket_clean_post', 'rocket_clean_kinsta_post_cache' ); + + /** + * Clears Kinsta cache for the homepage URL when using "Purge this URL" from the admin bar on the front end + * + * @since 3.0.4 + * @author Remy Perona + * + * @param string $root WP Rocket root cache path. + * @param string $lang Current language. + * @return void + */ + function rocket_clean_kinsta_cache_home( $root = '', $lang = '' ) { + $url = get_rocket_i18n_home_url( $lang ); + $url = trailingslashit( $url ) . 'kinsta-clear-cache/'; + + wp_remote_get( + $url, + [ + 'blocking' => false, + 'timeout' => 0.01, + ] + ); + } + add_action( 'after_rocket_clean_home', 'rocket_clean_kinsta_cache_home', 10, 2 ); + + /** + * Clears Kinsta cache for a specific URL when using "Purge this URL" from the admin bar on the front end + * + * @since 3.0.4 + * @author Remy Perona + * + * @param string $url URL to purge. + * @return void + */ + function rocket_clean_kinsta_cache_url( $url ) { + $url = trailingslashit( $url ) . 'kinsta-clear-cache/'; + + wp_remote_get( + $url, + [ + 'blocking' => false, + 'timeout' => 0.01, + ] + ); + } + add_action( 'after_rocket_clean_file', 'rocket_clean_kinsta_cache_url' ); + + /** + * Remove WP Rocket functions on WP core action hooks to prevent triggering a double cache clear. + * + * @since 3.0 + * @author Remy Perona + * + * @return void + */ + function rocket_remove_partial_purge_hooks() { + // WP core action hooks rocket_clean_post() gets hooked into. + $clean_post_hooks = [ + // Disables the refreshing of partial cache when content is edited. + 'wp_trash_post', + 'delete_post', + 'clean_post_cache', + 'wp_update_comment_count', + ]; + + // Remove rocket_clean_post() from core action hooks. + array_map( + function( $hook ) { + remove_action( $hook, 'rocket_clean_post' ); + }, + $clean_post_hooks + ); + + remove_filter( 'rocket_clean_files', 'rocket_clean_files_users' ); + } + add_action( 'wp_rocket_loaded', 'rocket_remove_partial_purge_hooks' ); + + if ( \Kinsta\CDN_Enabler::cdn_is_enabled() ) { + /** + * Add Kinsta CDN to WP Rocket CDN hosts list if enabled + * + * @since 3.0 + * @author Remy Perona + * + * @param Array $hosts Array of CDN hosts. + * @return Array Updated array of CDN hosts + */ + function rocket_add_kinsta_cdn_cname( $hosts ) { + if ( ! isset( $_SERVER['KINSTA_CDN_DOMAIN'] ) ) { + return $hosts; + } + + $hosts[] = sanitize_text_field( wp_unslash( $_SERVER['KINSTA_CDN_DOMAIN'] ) ); + + return $hosts; + } + add_filter( 'rocket_cdn_cnames', 'rocket_add_kinsta_cdn_cname', 1 ); + } +} else { + add_action( + 'admin_notices', + function() { + if ( ! current_user_can( 'manage_options' ) ) { + return; + } + + $screen = get_current_screen(); + + if ( 'settings_page_wprocket' !== $screen->id ) { + return; + } + + rocket_notice_html( + [ + 'status' => 'error', + 'dismissible' => '', + // translators: %1$s = opening link tag, %2$s = closing link tag. + 'message' => sprintf( __( 'Your installation seems to be missing core Kinsta files managing Cache clearing and CDN, which will prevent your Kinsta installation and WP Rocket from working correctly. Please get in touch with Kinsta support through your %1$sMyKinsta%2$s account to resolve this issue.', 'rocket' ), '', '' ), + ] + ); + } + ); +} diff --git a/wp-content/plugins/wp-rocket/inc/3rd-party/hosting/nginx.php b/wp-content/plugins/wp-rocket/inc/3rd-party/hosting/nginx.php new file mode 100644 index 0000000..e910776 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/3rd-party/hosting/nginx.php @@ -0,0 +1,24 @@ +purgeAll(); + } +} +add_action( 'after_rocket_clean_domain', 'rocket_clean_pagely' ); diff --git a/wp-content/plugins/wp-rocket/inc/3rd-party/hosting/pressidium.php b/wp-content/plugins/wp-rocket/inc/3rd-party/hosting/pressidium.php new file mode 100644 index 0000000..f2342e9 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/3rd-party/hosting/pressidium.php @@ -0,0 +1,61 @@ +purgeAllCaches(); + } + add_action( 'after_rocket_clean_domain', 'rocket_clean_pressidium' ); +} diff --git a/wp-content/plugins/wp-rocket/inc/3rd-party/hosting/presslabs.php b/wp-content/plugins/wp-rocket/inc/3rd-party/hosting/presslabs.php new file mode 100644 index 0000000..1ac7bb1 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/3rd-party/hosting/presslabs.php @@ -0,0 +1,98 @@ +invalidate_url( $permalink[0], true ); + $cache_handler->invalidate_url( home_url( '/' ), true ); + $cache_handler->purge_cache( 'listing' ); +} + +/** + * We clear the cache for the homepage URL when using "Purge this URL" from the admin bar on the front end. + * + * @since 3.3 + * + * @param string $root WP Rocket root cache path. + * @param string $lang Current language. + * + * @return void + */ +function rocket_pl_clean_home( $root = false, $lang = false ) { + if ( ! $post || ! $permalink ) { + return; + } + + $cache_handler = new \Presslabs\Cache\CacheHandler(); + $cache_handler->invalidate_url( home_url( '/' ), true ); +} + +/** + * Remove WP Rocket functions on WP core action hooks to prevent triggering a double cache clear. + * + * @since 3.3 + * + * @return void + */ +function rocket_remove_partial_purge_hooks() { + // WP core action hooks rocket_clean_post() gets hooked into. + $clean_post_hooks = [ + // Disables the refreshing of partial cache when content is edited. + 'wp_trash_post', + 'delete_post', + 'clean_post_cache', + 'wp_update_comment_count', + ]; + // Remove rocket_clean_post() from core action hooks. + array_map( + function( $hook ) { + remove_action( $hook, 'rocket_clean_post' ); + }, + $clean_post_hooks + ); + remove_filter( 'rocket_clean_files', 'rocket_clean_files_users' ); +} + +if ( ! defined( 'DISABLE_CDN_OFFLOAD' ) && defined( 'PL_CDN_HOST' ) ) { + /** + * If we have CDN enabled we'll add our HOST to the list. + * + * @since 3.3 + * + * @param array $hosts Array of CDN hosts. + * + * @return array Updated array of CDN hosts + */ + function rocket_add_pl_cdn( $hosts ) { + $hosts[] = constant( 'PL_CDN_HOST' ); + return $hosts; + } + add_filter( 'rocket_cdn_cnames', 'rocket_add_pl_cdn', 1 ); +} diff --git a/wp-content/plugins/wp-rocket/inc/3rd-party/hosting/siteground.php b/wp-content/plugins/wp-rocket/inc/3rd-party/hosting/siteground.php new file mode 100644 index 0000000..b8150b2 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/3rd-party/hosting/siteground.php @@ -0,0 +1,87 @@ + 'Version' ] ); + $version = $sg_optimizer['Version']; + + return $version; +} + +/** + * Checks if SG Optimizer Supercache is active. + * + * @since 3.2.3.1 + * @author Remy Perona + * + * @return bool + */ +function rocket_is_supercacher_active() { + if ( ! version_compare( rocket_get_sg_optimizer_version(), '5.0' ) < 0 ) { + global $sg_cachepress_environment; + + return isset( $sg_cachepress_environment ) && $sg_cachepress_environment instanceof SG_CachePress_Environment && $sg_cachepress_environment->cache_is_enabled(); + } + + return (bool) get_option( 'siteground_optimizer_enable_cache', 0 ); +} + +/** + * Call the cache server to purge the cache with SuperCacher (SiteGround). + * + * @since 2.3 + * + * @return void + */ +function rocket_clean_supercacher() { + if ( ! rocket_is_supercacher_active() ) { + return; + } + + if ( ! version_compare( rocket_get_sg_optimizer_version(), '5.0' ) < 0 ) { + SiteGround_Optimizer\Supercacher\Supercacher::purge_cache(); + } elseif ( isset( $sg_cachepress_supercacher ) && $sg_cachepress_supercacher instanceof SG_CachePress_Supercacher ) { + $sg_cachepress_supercacher->purge_cache(); + } +} + +if ( rocket_is_supercacher_active() ) { + add_action( 'admin_post_sg-cachepress-purge', 'rocket_clean_domain', 0 ); + add_action( 'after_rocket_clean_domain', 'rocket_clean_supercacher' ); + add_filter( 'rocket_display_varnish_options_tab', '__return_false' ); + // Prevent mandatory cookies on hosting with server cache. + add_filter( 'rocket_cache_mandatory_cookies', '__return_empty_array', PHP_INT_MAX ); + + /** + * Force WP Rocket caching on SG Optimizer versions before 4.0.5. + * + * @since 3.0.4 + * @author Arun Basil Lal + * + * @link https://github.com/wp-media/wp-rocket/issues/925 + */ + if ( version_compare( rocket_get_sg_optimizer_version(), '4.0.5' ) < 0 ) { + add_filter( 'do_rocket_generate_caching_files', '__return_true', 11 ); + } + + if ( version_compare( rocket_get_sg_optimizer_version(), '5.0' ) < 0 ) { + add_action( 'wp_ajax_sg-cachepress-purge', 'rocket_clean_domain', 0 ); + } else { + add_action( 'wp_ajax_admin_bar_purge_cache', 'rocket_clean_domain', 0 ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/3rd-party/hosting/wp-serveur.php b/wp-content/plugins/wp-rocket/inc/3rd-party/hosting/wp-serveur.php new file mode 100644 index 0000000..b129380 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/3rd-party/hosting/wp-serveur.php @@ -0,0 +1,35 @@ + + */ +if ( class_exists( 'GeotWP\GeotargetingWP' ) ) : + + add_filter( 'rocket_htaccess_mod_rewrite', '__return_false', 72 ); + add_filter( 'rocket_cache_dynamic_cookies', 'rocket_add_geotargetingwp_dynamic_cookies' ); + add_filter( 'rocket_cache_mandatory_cookies', 'rocket_add_geotargetingwp_mandatory_cookie' ); + + /** + * If we recently deactivated a plugin of the family but + * we still see the class it means another plugin is still active, + * so flush rules once more to be safe + */ + if ( get_option( 'geotWP-deactivated' ) ) { + // Update the WP Rocket rules on the .htaccess file. + add_action( 'admin_init', 'flush_rocket_htaccess' ); + + // Regenerate the config file. + add_action( 'admin_init', 'rocket_generate_config_file' ); + delete_option( 'geotWP-deactivated' ); + } +endif; + +/** + * Add cookies when we activate any goetargetingWP plugin. + * + * @since 2.10.3 + * @author Damian Logghe + */ +function rocket_activate_geotargetingwp() { + add_filter( 'rocket_htaccess_mod_rewrite', '__return_false', 72 ); + add_filter( 'rocket_cache_dynamic_cookies', 'rocket_add_geotargetingwp_dynamic_cookies' ); + add_filter( 'rocket_cache_mandatory_cookies', 'rocket_add_geotargetingwp_mandatory_cookie' ); + + // Update the WP Rocket rules on the .htaccess file. + flush_rocket_htaccess(); + + // Regenerate the config file. + rocket_generate_config_file(); +} +add_action( 'geotWP/activated', 'rocket_activate_geotargetingwp', 11 ); + +/** + * Remove cookies when we deactivate the plugin. + * + * @since 2.10.3 + * @author Damian Logghe + */ +function rocket_deactivate_geotargetingwp() { + // add into db a record saying we deactivated one of the family plugins. + update_option( 'geotWP-deactivated', true ); + remove_filter( 'rocket_htaccess_mod_rewrite', '__return_false', 72 ); + remove_filter( 'rocket_cache_dynamic_cookies', 'rocket_add_geotargetingwp_dynamic_cookies' ); + remove_filter( 'rocket_cache_mandatory_cookies', 'rocket_add_geotargetingwp_mandatory_cookie' ); + + // Update the WP Rocket rules on the .htaccess file. + flush_rocket_htaccess(); + + // Regenerate the config file. + rocket_generate_config_file(); +} +add_action( 'geotWP/deactivated', 'rocket_deactivate_geotargetingwp', 11 ); + +/** + * Add the GeotargetingWP cookies to generate caching files depending on their values. + * + * @since 2.10.3 + * @author Damian Logghe + * + * @param Array $cookies An array of cookies. + * @return Array Updated array of cookies + */ +function rocket_add_geotargetingwp_dynamic_cookies( $cookies ) { + return rocket_add_geot_cookies( $cookies ); +} + +/** + * Add the GeotargetingWP cookies to the list of mandatory cookies before to generate caching files. + * + * @since 2.10.3 + * @author Damian Logghe + * + * @param Array $cookies An array of cookies. + * @return Array Updated array of cookies + */ +function rocket_add_geotargetingwp_mandatory_cookie( $cookies ) { + return rocket_add_geot_cookies( $cookies ); +} + +/** + * Let users modify cache level by default set to country. + * + * @since 2.10.3 + * @author Damian Logghe + * + * @param Array $cookies An array of cookies. + * @return Array Updated array of cookies + */ +function rocket_add_geot_cookies( $cookies ) { + // valid options are country, state, city. + $enabled_cookies = apply_filters( 'rocket_geotargetingwp_enabled_cookies', [ 'country' ] ); + foreach ( $enabled_cookies as $enabled_cookie ) { + if ( ! in_array( 'geot_rocket_' . $enabled_cookie, $cookies, true ) ) { + $cookies[] = 'geot_rocket_' . $enabled_cookie; + } + } + return $cookies; +} diff --git a/wp-content/plugins/wp-rocket/inc/3rd-party/plugins/i18n/polylang.php b/wp-content/plugins/wp-rocket/inc/3rd-party/plugins/i18n/polylang.php new file mode 100644 index 0000000..0df3902 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/3rd-party/plugins/i18n/polylang.php @@ -0,0 +1,145 @@ +options['force_lang'] ) { + rocket_clean_cache_dir(); + } + } + add_action( 'after_rocket_clean_domain', 'rocket_force_clean_domain_on_polylang' ); + + // Filter mandatory cookies and WP Rocket rewrite rules if Polylang module 'Detect browser language' is enabled. + if ( function_exists( 'PLL' ) && PLL()->options['browser'] ) { + + // Add Polylang's language cookie as a mandatory cookie. + add_filter( 'rocket_cache_mandatory_cookies', 'rocket_add_polylang_mandatory_cookie' ); + + // Remove WP Rocket rewrite rules from .htaccess file. + add_filter( 'rocket_htaccess_mod_rewrite', '__return_false', 74 ); + } +endif; + +/** + * Add Polylang's language cookie to the mandatory cookies of WP Rocket. + * + * Polylang saves the users preferred language in this cookie by detecting browser language or by user choice + * Adding this as a mandatory cookie prevents WP Rocket from serving the cache when the cookie is not set. + * + * @param array $cookies Array with mandatory cookies. + * @return (array) Array of mandatory cookies with the Polylang cookie appended + * + * @author Arun Basil Lal + * @since 3.0.5 + */ +function rocket_add_polylang_mandatory_cookie( $cookies ) { + $cookies[] = defined( 'PLL_COOKIE' ) ? PLL_COOKIE : 'pll_language'; + + return $cookies; +} + +/** + * Add mandatory cookie to WP Rocket config and remove rewrite rules from .htaccess on Polylang activation. + * + * Add mandatory cookie only if the Polylang module 'Detect browser language' is active. + * Also purge the homepage cache. + * + * @author Arun Basil Lal + * @since 3.0.5 + */ +function rocket_activate_polylang() { + // Read Polylang settings from db. + $polylang_settings = get_option( 'polylang' ); + + if ( isset( $polylang_settings['browser'] ) && ( 1 === (int) $polylang_settings['browser'] ) ) { + // Add Polylang's language cookie as a mandatory cookie. + add_filter( 'rocket_cache_mandatory_cookies', 'rocket_add_polylang_mandatory_cookie' ); + + // Remove WP Rocket rewrite rules from .htaccess file. + add_filter( 'rocket_htaccess_mod_rewrite', '__return_false', 74 ); + + // Regenerate the config file. + rocket_generate_config_file(); + + // Regenerate .htaccess file. + flush_rocket_htaccess(); + + // Purge homepage cache. + rocket_clean_home(); + } +} +add_action( 'activate_polylang/polylang.php', 'rocket_activate_polylang', 11 ); + +/** + * Remove mandatory cookie and add rewrite rules back to .htaccess when Polylang is deactivated. + * + * @author Arun Basil Lal + * @since 3.0.5 + */ +function rocket_deactivate_polylang() { + // Remove Polylang's language cookie as a mandatory cookie. + remove_filter( 'rocket_cache_mandatory_cookies', 'rocket_add_polylang_mandatory_cookie' ); + + // Add back WP Rocket rewrite rules from .htaccess file. + remove_filter( 'rocket_htaccess_mod_rewrite', '__return_false', 74 ); + + // Regenerate the config file. + rocket_generate_config_file(); + + // Regenerate .htaccess file. + flush_rocket_htaccess(); +} +add_action( 'deactivate_polylang/polylang.php', 'rocket_deactivate_polylang', 11 ); + +/** + * Update mandatory cookie in WP Rocket config file and remove rewrite rules from .htaccess + * when Detect browser language module is enabled / disabled. + * + * @param array $value Array containing Polylang settings before its written to db. + * @return array + * + * @author Arun Basil Lal + * @since 3.0.5 + */ +function rocket_detect_browser_language_status_change( $value ) { + if ( function_exists( 'PLL' ) && PLL()->options['browser'] ) { + + // Add Polylang's language cookie as a mandatory cookie. + add_filter( 'rocket_cache_mandatory_cookies', 'rocket_add_polylang_mandatory_cookie' ); + + // Remove WP Rocket rewrite rules from .htaccess file. + add_filter( 'rocket_htaccess_mod_rewrite', '__return_false', 74 ); + + // Regenerate the config file. + rocket_generate_config_file(); + + // Regenerate .htaccess file. + flush_rocket_htaccess(); + + // Purge homepage cache. + rocket_clean_home(); + } else { + // Remove Polylang's language cookie as a mandatory cookie. + remove_filter( 'rocket_cache_mandatory_cookies', 'rocket_add_polylang_mandatory_cookie' ); + + // Add back WP Rocket rewrite rules from .htaccess file. + remove_filter( 'rocket_htaccess_mod_rewrite', '__return_false', 74 ); + + // Regenerate the config file. + rocket_generate_config_file(); + + // Regenerate .htaccess file. + flush_rocket_htaccess(); + } + + return $value; +} +add_filter( 'pre_update_option_polylang', 'rocket_detect_browser_language_status_change' ); diff --git a/wp-content/plugins/wp-rocket/inc/3rd-party/plugins/i18n/wpml.php b/wp-content/plugins/wp-rocket/inc/3rd-party/plugins/i18n/wpml.php new file mode 100644 index 0000000..6f3482b --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/3rd-party/plugins/i18n/wpml.php @@ -0,0 +1,11 @@ + 'sitemap_preload', + 'type' => 'checkbox', + 'label' => __( 'Jetpack XML Sitemaps', 'rocket' ), + 'label_for' => 'jetpack_xml_sitemap', + 'label_screen' => sprintf( __( 'Preload the sitemap from the Jetpack plugin', 'rocket' ), 'Jetpack' ), + 'default' => 0, + ]; + $options[] = [ + 'parent' => 'sitemap_preload', + 'type' => 'helper_description', + 'name' => 'jetpack_xml_sitemap_desc', + // translators: %s = plugin name, e.g. Yoast SEO. + 'description' => sprintf( __( 'We automatically detected the sitemap generated by the %s plugin. You can check the option to preload it.', 'rocket' ), 'Jetpack' ), + ]; + + return $options; + } + add_filter( 'rocket_sitemap_preload_options', 'rocket_sitemap_preload_jetpack_option' ); + } // End if(). + + /** + * Support Jetpack's EU Cookie Law Widget. + * + * @see https://jetpack.com/support/extra-sidebar-widgets/eu-cookie-law-widget/ + * + * @since 2.10.1 + * @author Jeremy Herve + */ + if ( Jetpack::is_module_active( 'widgets' ) ) : + + /** + * Add the EU Cookie Law to the list of mandatory cookies before generating caching files. + * + * @since 2.10.1 + * @author Jeremy Herve + * + * @param array $cookies List of mandatory cookies. + */ + function rocket_add_jetpack_cookie_law_mandatory_cookie( $cookies ) { + $cookies['jetpack-eu-cookie-law'] = 'eucookielaw'; + + return $cookies; + } + add_filter( 'rocket_cache_mandatory_cookies', 'rocket_add_jetpack_cookie_law_mandatory_cookie' ); + + // Don't add the WP Rocket rewrite rules to avoid issues. + add_filter( 'rocket_htaccess_mod_rewrite', '__return_false', 76 ); + + /** + * Add Jetpack cookie when: + * - Jetpack is active. + * - Jetpack's Extra Sidebar Widgets module is active. + * - The widget is active. + * - the rocket_jetpack_eu_cookie_widget option is empty or not set. + * + * @since 2.10.1 + * @author Jeremy Herve + */ + function rocket_activate_jetpack_cookie_law() { + $rocket_jp_eu_cookie_widget = get_option( 'rocket_jetpack_eu_cookie_widget' ); + + if ( + is_active_widget( false, false, 'eu_cookie_law_widget' ) + && empty( $rocket_jp_eu_cookie_widget ) + ) { + add_filter( 'rocket_htaccess_mod_rewrite', '__return_false', 76 ); + add_filter( 'rocket_cache_mandatory_cookies', 'rocket_add_jetpack_cookie_law_mandatory_cookie' ); + + // Update the WP Rocket rules on the .htaccess file. + flush_rocket_htaccess(); + + // Regenerate the config file. + rocket_generate_config_file(); + + // Set the option, so this is not triggered again. + update_option( 'rocket_jetpack_eu_cookie_widget', 1, true ); + } + } + add_action( 'admin_init', 'rocket_activate_jetpack_cookie_law' ); + + endif; // End if Widgets module is active check. + +endif; // End if Jetpack is active check. + +/** + * Remove cookies if Jetpack gets deactivated. + * + * @since 2.10.1 + * @author Jeremy Herve + */ +function rocket_remove_jetpack_cookie_law_mandatory_cookie() { + remove_filter( 'rocket_htaccess_mod_rewrite', '__return_false', 76 ); + remove_filter( 'rocket_cache_mandatory_cookies', '_rocket_add_eu_cookie_law_mandatory_cookie' ); + + // Update the WP Rocket rules on the .htaccess file. + flush_rocket_htaccess(); + + // Regenerate the config file. + rocket_generate_config_file(); + + // Delete our option. + delete_option( 'rocket_jetpack_eu_cookie_widget' ); +} +add_action( 'deactivate_jetpack/jetpack.php', 'rocket_remove_jetpack_cookie_law_mandatory_cookie', 11 ); diff --git a/wp-content/plugins/wp-rocket/inc/3rd-party/plugins/mailchimp.php b/wp-content/plugins/wp-rocket/inc/3rd-party/plugins/mailchimp.php new file mode 100644 index 0000000..cb06046 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/3rd-party/plugins/mailchimp.php @@ -0,0 +1,36 @@ +is_dir( $cache_path ) ) { + rocket_mkdir_p( $cache_path ); + } + + if ( ! rocket_direct_filesystem()->exists( $css_path ) ) { + ob_start(); + mailchimpSF_main_css(); + $content = ob_get_contents(); + ob_end_clean(); + + rocket_put_content( $css_path, $content ); + } + + wp_deregister_style( 'mailchimpSF_main_css' ); + wp_register_style( 'mailchimpSF_main_css', $cache_url . 'mailchimpSF_main_css.css', null, MCSF_VER ); +} +add_action( 'init', 'rocket_fix_mailchimp_main_css', PHP_INT_MAX ); diff --git a/wp-content/plugins/wp-rocket/inc/3rd-party/plugins/mobile/wp-appkit.php b/wp-content/plugins/wp-rocket/inc/3rd-party/plugins/mobile/wp-appkit.php new file mode 100644 index 0000000..68e669f --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/3rd-party/plugins/mobile/wp-appkit.php @@ -0,0 +1,56 @@ +purge_url( $url ); + } + add_action( 'after_rocket_clean_home', 'rocket_clean_nginx_cache_home', 10, 2 ); + + /** + * Clears NGINX cache for a specific URL when using "Purge this URL" from the admin bar on the front end + * + * @since 3.3.0.1 + * @author Remy Perona + * + * @param string $url URL to purge. + * @return void + */ + function rocket_clean_nginx_cache_url( $url ) { + global $nginx_purger; + + if ( ! isset( $nginx_purger ) ) { + return; + } + + if ( ! isset( $_GET['type'], $_GET['_wpnonce'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended + return; + } + + if ( false !== strpos( $url, 'index.html' ) ) { + return; + } + + if ( 'page' === substr( $url, -4 ) ) { + return; + } + + $url = str_replace( '*', '', $url ); + + $nginx_purger->purge_url( $url ); + } + add_action( 'after_rocket_clean_file', 'rocket_clean_nginx_cache_url' ); + + /** + * Clean the NGINX cache using Nginx Helper after WP Rocket's cache is purged. + * + * @since 3.3.0.1 + */ + function rocket_clean_nginx_helper_cache() { + if ( isset( $_GET['nginx_helper_action'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended + return; + } + + do_action( 'rt_nginx_helper_purge_all' ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + } + add_action( 'after_rocket_clean_domain', 'rocket_clean_nginx_helper_cache' ); +endif; diff --git a/wp-content/plugins/wp-rocket/inc/3rd-party/plugins/page-builder/thrive-visual-editor.php b/wp-content/plugins/wp-rocket/inc/3rd-party/plugins/page-builder/thrive-visual-editor.php new file mode 100644 index 0000000..a940aea --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/3rd-party/plugins/page-builder/thrive-visual-editor.php @@ -0,0 +1,16 @@ + $slug ) { + $sfml_slugs[ $key ] = $slug . '?'; + } + + return array_merge( $urls, $sfml_slugs ); +} + +/** + * Add SFML custom urls to caching exclusion when activating the plugin + * + * @since 2.9.3 + */ +function rocket_activate_sfml() { + if ( defined( 'SFML_VERSION' ) ) { + add_filter( 'rocket_cache_reject_uri', 'rocket_add_sfml_exclude_pages' ); + + // Update the WP Rocket rules on the .htaccess. + flush_rocket_htaccess(); + + // Regenerate the config file. + rocket_generate_config_file(); + } +} +add_action( 'activate_sf-move-login/sf-move-login.php', 'rocket_activate_sfml', 11 ); + +/** + * Remove SFML custom urls from caching exclusion when deactivating the plugin + * + * @since 2.9.3 + */ +function rocket_deactivate_sfml() { + if ( defined( 'SFML_VERSION' ) ) { + remove_filter( 'rocket_cache_reject_uri', 'rocket_add_sfml_exclude_pages' ); + + // Update the WP Rocket rules on the .htaccess. + flush_rocket_htaccess(); + + // Regenerate the config file. + rocket_generate_config_file(); + } +} +add_action( 'deactivate_sf-move-login/sf-move-login.php', 'rocket_deactivate_sfml', 11 ); diff --git a/wp-content/plugins/wp-rocket/inc/3rd-party/plugins/security/wps-hide-login.php b/wp-content/plugins/wp-rocket/inc/3rd-party/plugins/security/wps-hide-login.php new file mode 100644 index 0000000..94b08e7 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/3rd-party/plugins/security/wps-hide-login.php @@ -0,0 +1,62 @@ +new_login_url() ); + } elseif ( class_exists( '\WPS\WPS_Hide_Login\Plugin' ) ) { + $urls[] = rocket_clean_exclude_file( \WPS\WPS_Hide_Login\Plugin::get_instance()->new_login_url() ); + } + + return $urls; +} + +/** + * Add WPS Hide Login custom url to caching exclusion when activating the plugin + * + * @since 2.11 + */ +function rocket_activate_wps_hide_login() { + add_filter( 'rocket_cache_reject_uri', 'rocket_exlude_wps_hide_login_page' ); + + // Update .htaccess file rules. + flush_rocket_htaccess(); + + // Update config file. + rocket_generate_config_file(); +} +add_action( 'activate_wps-hide-login/wps-hide-login.php', 'rocket_activate_wps_hide_login', 11 ); + +/** + * Remove WPS Hide Login custom url from caching exclusion when deactivating the plugin + * + * @since 2.11 + */ +function rocket_deactivate_wps_hide_login() { + remove_filter( 'rocket_cache_reject_uri', 'rocket_exlude_wps_hide_login_page' ); + + // Update .htaccess file rules. + flush_rocket_htaccess(); + + // Update config file. + rocket_generate_config_file(); +} +add_action( 'deactivate_wps-hide-login/wps-hide-login.php', 'rocket_deactivate_wps_hide_login', 11 ); diff --git a/wp-content/plugins/wp-rocket/inc/3rd-party/plugins/seo/all-in-one-seo-pack.php b/wp-content/plugins/wp-rocket/inc/3rd-party/plugins/seo/all-in-one-seo-pack.php new file mode 100644 index 0000000..382ddcc --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/3rd-party/plugins/seo/all-in-one-seo-pack.php @@ -0,0 +1,101 @@ + 'checkbox', + 'container_class' => [ + 'wpr-field--children', + ], + 'label' => __( 'All in One SEO XML sitemap', 'rocket' ), + // translators: %s = Name of the plugin. + 'description' => sprintf( __( 'We automatically detected the sitemap generated by the %s plugin. You can check the option to preload it.', 'rocket' ), 'All in One SEO' ), + 'parent' => 'sitemap_preload', + 'section' => 'preload_section', + 'page' => 'preload', + 'default' => 0, + 'sanitize_callback' => 'sanitize_checkbox', + ]; + + return $options; + } + add_filter( 'rocket_sitemap_preload_options', 'rocket_sitemap_preload_all_in_one_seo_option' ); + } +endif; diff --git a/wp-content/plugins/wp-rocket/inc/3rd-party/plugins/seo/premium-seo-pack.php b/wp-content/plugins/wp-rocket/inc/3rd-party/plugins/seo/premium-seo-pack.php new file mode 100644 index 0000000..5460a8b --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/3rd-party/plugins/seo/premium-seo-pack.php @@ -0,0 +1,30 @@ +id ) { + return; + } + + // Dequeueing this stylesheet unfreezes WP Rocket. + wp_dequeue_style( 'psp-main-style' ); + } + add_action( 'admin_print_styles', 'rocket_dequeue_premium_seo_pack_stylesheet', 11 ); +} diff --git a/wp-content/plugins/wp-rocket/inc/3rd-party/plugins/seo/rank-math-seo.php b/wp-content/plugins/wp-rocket/inc/3rd-party/plugins/seo/rank-math-seo.php new file mode 100644 index 0000000..a45c706 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/3rd-party/plugins/seo/rank-math-seo.php @@ -0,0 +1,91 @@ + + */ + +defined( 'ABSPATH' ) || exit; + +// Ealry Bail!! +if ( ! defined( 'RANK_MATH_FILE' ) || ! \RankMath\Helper::is_module_active( 'sitemap' ) ) { + return; +} + +/** + * Add sitemap option to WP Rocket settings + * + * @since 3.2.3 + * + * @param array $options WP Rocket settings array. + * @return array Updated WP Rocket settings array + */ +function rank_math_rocket_sitemap_preload_option( $options ) { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + $options['rank_math_xml_sitemap'] = [ + 'type' => 'checkbox', + 'container_class' => [ + 'wpr-field--children', + ], + 'label' => __( 'Rank Math XML sitemap', 'rocket' ), + // translators: %s = Name of the plugin. + 'description' => sprintf( __( 'We automatically detected the sitemap generated by the %s plugin. You can check the option to preload it.', 'rocket' ), 'Rank Math SEO' ), + 'parent' => 'sitemap_preload', + 'section' => 'preload_section', + 'page' => 'preload', + 'default' => 0, + 'sanitize_callback' => 'sanitize_checkbox', + ]; + + return $options; +} +add_filter( 'rocket_sitemap_preload_options', 'rank_math_rocket_sitemap_preload_option' ); + +/** + * Add sitemap option to WP Rocket default options + * + * @since 3.2.3 + * + * @param array $options WP Rocket options array. + * @return array Updated WP Rocket options array + */ +function rank_math_rocket_add_sitemap_option( $options ) { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + $options['rank_math_xml_sitemap'] = 0; + + return $options; +} +add_filter( 'rocket_first_install_options', 'rank_math_rocket_add_sitemap_option' ); + +/** + * Sanitize SEO sitemap option value + * + * @since 3.2.3 + * + * @param array $inputs WP Rocket inputs array. + * @return array Sanitized WP Rocket inputs array + */ +function rank_math_rocket_sitemap_option_sanitize( $inputs ) { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + $inputs['rank_math_xml_sitemap'] = ! empty( $inputs['rank_math_xml_sitemap'] ) ? 1 : 0; + + return $inputs; +} +add_filter( 'rocket_inputs_sanitize', 'rank_math_rocket_sitemap_option_sanitize' ); + +/** + * Add SEO sitemap URL to the sitemaps to preload + * + * @since 3.2.3 + * + * @param array $sitemaps Sitemaps to preload. + * @return array Updated Sitemaps to preload + */ +function rank_math_rocket_sitemap( $sitemaps ) { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + if ( get_rocket_option( 'rank_math_xml_sitemap', false ) ) { + $sitemaps[] = \RankMath\Sitemap\Router::get_base_url( 'sitemap_index.xml' ); + } + + return $sitemaps; +} +add_filter( 'rocket_sitemap_preload_list', 'rank_math_rocket_sitemap' ); diff --git a/wp-content/plugins/wp-rocket/inc/3rd-party/plugins/seo/seopress.php b/wp-content/plugins/wp-rocket/inc/3rd-party/plugins/seo/seopress.php new file mode 100644 index 0000000..5e4fcf6 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/3rd-party/plugins/seo/seopress.php @@ -0,0 +1,98 @@ + 'checkbox', + 'container_class' => [ + 'wpr-field--children', + ], + 'label' => __( 'SEOPress XML sitemap', 'rocket' ), + // translators: %s = Name of the plugin. + 'description' => sprintf( __( 'We automatically detected the sitemap generated by the %s plugin. You can check the option to preload it.', 'rocket' ), 'SEOPress' ), + 'parent' => 'sitemap_preload', + 'section' => 'preload_section', + 'page' => 'preload', + 'default' => 0, + 'sanitize_callback' => 'sanitize_checkbox', + ]; + + return $options; + } + add_filter( 'rocket_sitemap_preload_options', 'rocket_sitemap_preload_seopress_option' ); + } +endif; diff --git a/wp-content/plugins/wp-rocket/inc/3rd-party/plugins/seo/the-seo-framework.php b/wp-content/plugins/wp-rocket/inc/3rd-party/plugins/seo/the-seo-framework.php new file mode 100644 index 0000000..d158cdf --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/3rd-party/plugins/seo/the-seo-framework.php @@ -0,0 +1,153 @@ +loaded ) ) { + return; + } + + /** + * 1. Performs option & other checks. + * 2. Checks for conflicting sitemap plugins that might prevent loading. + * + * These methods cache their output at runtime. + * + * @link https://github.com/wp-media/wp-rocket/issues/899 + */ + if ( $tsf->can_run_sitemap() ) { + rocket_add_tsf_sitemap_compat(); + } +} + +/** + * Adds compatibility for the sitemap functionality in The SEO Framework plugin. + * + * @since 3.2.1 + * @author Sybre Waaijer + */ +function rocket_add_tsf_sitemap_compat() { + add_filter( 'rocket_first_install_options', 'rocket_add_tsf_seo_sitemap_option' ); + add_filter( 'rocket_inputs_sanitize', 'rocket_tsf_seo_sitemap_option_sanitize' ); + add_filter( 'rocket_sitemap_preload_list', 'rocket_add_tsf_sitemap_to_preload' ); + add_filter( 'rocket_sitemap_preload_options', 'rocket_sitemap_add_tsf_sitemap_to_preload_option' ); +} + +/** + * Adds a sitemap option in WP Rocket for The SEO Framework. + * + * @since 3.2.1 + * @author Sybre Waaijer + * @source ./yoast-seo.php (Remy Perona) + * + * @param array $options WP Rocket options array. + * @return array Updated WP Rocket options array + */ +function rocket_add_tsf_seo_sitemap_option( $options ) { + $options['tsf_xml_sitemap'] = 0; + + return $options; +} + +/** + * Sanitizes the added sitemap option for The SEO Framework. + * + * @since 3.2.1 + * @author Sybre Waaijer + * @source ./yoast-seo.php (Remy Perona) + * + * @param array $inputs WP Rocket inputs array. + * @return array Sanitized WP Rocket inputs array + */ +function rocket_tsf_seo_sitemap_option_sanitize( $inputs ) { + $inputs['tsf_xml_sitemap'] = ! empty( $inputs['tsf_xml_sitemap'] ) ? 1 : 0; + + return $inputs; +} + +/** + * Adds TSF sitemap URLs to preload. + * + * @since 3.2.1 + * @since TODO Added compatibility support for The SEO Framework v4.0+ + * @author Sybre Waaijer + * @source ./yoast-seo.php (Remy Perona) + * + * @param array $sitemaps Sitemaps to preload. + * @return array Updated Sitemaps to preload + */ +function rocket_add_tsf_sitemap_to_preload( $sitemaps ) { + + if ( get_rocket_option( 'tsf_xml_sitemap', false ) ) { + // The autoloader in TSF doesn't check for file_exists(). So, use version compare instead to prevent fatal errors. + if ( version_compare( THE_SEO_FRAMEWORK_VERSION, '4.0', '>=' ) ) { + // TSF 4.0+. Expect the class to exist indefinitely. + + $sitemap_bridge = The_SEO_Framework\Bridges\Sitemap::get_instance(); + + foreach ( $sitemap_bridge->get_sitemap_endpoint_list() as $id => $data ) { + // When the sitemap is good enough for a robots display, we determine it as valid for precaching. + // Non-robots display types are among the stylesheet endpoint, or the Yoast SEO-compatible endpoint. + // In other words, this enables support for ALL current and future public sitemap endpoints. + if ( ! empty( $data['robots'] ) ) { + $sitemaps[] = $sitemap_bridge->get_expected_sitemap_endpoint_url( $id ); + } + } + } else { + // Deprecated. TSF <4.0. + $sitemaps[] = the_seo_framework()->get_sitemap_xml_url(); + } + } + + return $sitemaps; +} + +/** + * Add The SEO Framework SEO option to WP Rocket settings + * + * @since 3.2.1 + * @author Sybre Waaijer + * @source ./yoast-seo.php (Remy Perona) + * + * @param array $options WP Rocket settings array. + * @return array Updated WP Rocket settings array + */ +function rocket_sitemap_add_tsf_sitemap_to_preload_option( $options ) { + $options['tsf_xml_sitemap'] = [ + 'type' => 'checkbox', + 'container_class' => [ + 'wpr-field--children', + ], + 'label' => __( 'The SEO Framework XML sitemap', 'rocket' ), + // translators: %s = Name of the plugin. + 'description' => sprintf( __( 'We automatically detected the sitemap generated by the %s plugin. You can check the option to preload it.', 'rocket' ), 'The SEO Framework' ), + 'parent' => 'sitemap_preload', + 'section' => 'preload_section', + 'page' => 'preload', + 'default' => 0, + 'sanitize_callback' => 'sanitize_checkbox', + ]; + + return $options; +} diff --git a/wp-content/plugins/wp-rocket/inc/3rd-party/plugins/seo/yoast-seo.php b/wp-content/plugins/wp-rocket/inc/3rd-party/plugins/seo/yoast-seo.php new file mode 100644 index 0000000..c5316d3 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/3rd-party/plugins/seo/yoast-seo.php @@ -0,0 +1,99 @@ += 0 ) { + $yoast_seo = get_option( 'wpseo' ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + $yoast_seo_xml['enablexmlsitemap'] = isset( $yoast_seo['enable_xml_sitemap'] ) && $yoast_seo['enable_xml_sitemap']; // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + } + + /** + * Improvement with Yoast SEO: auto-detect the XML sitemaps for the preload option + * + * @since 2.8 + * @author Remy Perona + */ + if ( true === $yoast_seo_xml['enablexmlsitemap'] ) { + /** + * Add Yoast SEO sitemap option to WP Rocket default options + * + * @since 2.8 + * @author Remy Perona + * + * @param array $options WP Rocket options array. + * @return array Updated WP Rocket options array + */ + function rocket_add_yoast_seo_sitemap_option( $options ) { + $options['yoast_xml_sitemap'] = 0; + + return $options; + } + add_filter( 'rocket_first_install_options', 'rocket_add_yoast_seo_sitemap_option' ); + + /** + * Sanitize Yoast SEO sitemap option value + * + * @since 2.8 + * @author Remy Perona + * + * @param array $inputs WP Rocket inputs array. + * @return array Sanitized WP Rocket inputs array + */ + function rocket_yoast_seo_sitemap_option_sanitize( $inputs ) { + $inputs['yoast_xml_sitemap'] = ! empty( $inputs['yoast_xml_sitemap'] ) ? 1 : 0; + + return $inputs; + } + add_filter( 'rocket_inputs_sanitize', 'rocket_yoast_seo_sitemap_option_sanitize' ); + + /** + * Add Yoast SEO sitemap URL to the sitemaps to preload + * + * @since 2.8 + * @author Remy Perona + * + * @param array $sitemaps Sitemaps to preload. + * @return array Updated Sitemaps to preload + */ + function rocket_add_yoast_seo_sitemap( $sitemaps ) { + if ( get_rocket_option( 'yoast_xml_sitemap', false ) ) { + $sitemaps[] = WPSEO_Sitemaps_Router::get_base_url( 'sitemap_index.xml' ); + } + + return $sitemaps; + } + add_filter( 'rocket_sitemap_preload_list', 'rocket_add_yoast_seo_sitemap' ); + + /** + * Add Yoast SEO option to WP Rocket settings + * + * @since 2.8 + * @author Remy Perona + * + * @param array $options WP Rocket settings array. + * @return array Updated WP Rocket settings array + */ + function rocket_sitemap_preload_yoast_seo_option( $options ) { + $options['yoast_xml_sitemap'] = [ + 'type' => 'checkbox', + 'container_class' => [ + 'wpr-field--children', + ], + 'label' => __( 'Yoast SEO XML sitemap', 'rocket' ), + // translators: %s = Name of the plugin. + 'description' => sprintf( __( 'We automatically detected the sitemap generated by the %s plugin. You can check the option to preload it.', 'rocket' ), 'Yoast SEO' ), + 'parent' => 'sitemap_preload', + 'section' => 'preload_section', + 'page' => 'preload', + 'default' => 0, + 'sanitize_callback' => 'sanitize_checkbox', + ]; + + return $options; + } + add_filter( 'rocket_sitemap_preload_options', 'rocket_sitemap_preload_yoast_seo_option' ); + } +endif; diff --git a/wp-content/plugins/wp-rocket/inc/3rd-party/plugins/slider/layerslider.php b/wp-content/plugins/wp-rocket/inc/3rd-party/plugins/slider/layerslider.php new file mode 100644 index 0000000..e1ce70e --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/3rd-party/plugins/slider/layerslider.php @@ -0,0 +1,13 @@ +id ) { + return; + } + + wp_dequeue_style( 'sumome-admin-styles' ); + wp_dequeue_style( 'sumome-admin-media' ); + } + add_action( 'admin_enqueue_scripts', 'rocket_dequeue_sumo_me_css', PHP_INT_MAX ); + + /** + * Dequeue SumoMe inline script + * + * @since 3.0.4 + * @author Arun Basil Lal + */ + function rocket_dequeue_sumo_me_js() { + + // Retun on all pages but WP Rocket settings page. + $screen = get_current_screen(); + if ( 'settings_page_wprocket' !== $screen->id ) { + return; + } + + global $wp_plugin_sumome; + remove_action( 'admin_footer', [ $wp_plugin_sumome, 'append_admin_script_code' ] ); + } + add_action( 'admin_head', 'rocket_dequeue_sumo_me_js' ); +} diff --git a/wp-content/plugins/wp-rocket/inc/3rd-party/plugins/thrive-leads.php b/wp-content/plugins/wp-rocket/inc/3rd-party/plugins/thrive-leads.php new file mode 100644 index 0000000..c0cbf56 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/3rd-party/plugins/thrive-leads.php @@ -0,0 +1,13 @@ + 0; +} +add_filter( 'rocket_override_donotcachepage', 'rocket_override_donotcachepage_on_thrive_leads' ); diff --git a/wp-content/plugins/wp-rocket/inc/3rd-party/plugins/varnish-http-purge.php b/wp-content/plugins/wp-rocket/inc/3rd-party/plugins/varnish-http-purge.php new file mode 100644 index 0000000..e94e43e --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/3rd-party/plugins/varnish-http-purge.php @@ -0,0 +1,75 @@ + 'PURGE', + 'blocking' => false, + 'headers' => [ + 'host' => $p['host'], + 'X-Purge-Method' => 'regex', + ], + ] + ); + + do_action( 'after_purge_url', $url, $purgeme ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + } +} diff --git a/wp-content/plugins/wp-rocket/inc/3rd-party/plugins/wp-offload-s3-assets.php b/wp-content/plugins/wp-rocket/inc/3rd-party/plugins/wp-offload-s3-assets.php new file mode 100644 index 0000000..189b9ec --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/3rd-party/plugins/wp-offload-s3-assets.php @@ -0,0 +1,38 @@ +is_plugin_setup() && 1 === (int) $as3cf_assets->get_setting( 'enable-addon' ) ) { + // Disable WP Rocket CDN option. + add_filter( 'rocket_readonly_cdn_option', '__return_true' ); + } +} + +/** + * Deactivate WP Rocket CDN if WP Offload S3 assets addon copy & serve is active. + * + * @since 2.10.7 + * @author Remy Perona + * + * @param string $old_value Previous assets option value. + * @param string $new_value New assets option value. + */ +function rocket_maybe_deactivate_cdn( $old_value, $new_value ) { + if ( $old_value['enable-addon'] !== $new_value['enable-addon'] && 1 === (int) $new_value['enable-addon'] ) { + update_rocket_option( 'cdn', 0 ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/3rd-party/plugins/wp-offload-s3.php b/wp-content/plugins/wp-rocket/inc/3rd-party/plugins/wp-offload-s3.php new file mode 100644 index 0000000..4b67e63 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/3rd-party/plugins/wp-offload-s3.php @@ -0,0 +1,23 @@ +is_plugin_setup() && 1 === (int) $as3cf->get_setting( 'serve-from-s3' ) ) { + // Remove images option from WP Rocket CDN dropdown settings. + add_filter( 'rocket_allow_cdn_images', '__return_false' ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/3rd-party/plugins/wp-print.php b/wp-content/plugins/wp-rocket/inc/3rd-party/plugins/wp-print.php new file mode 100644 index 0000000..fda86ef --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/3rd-party/plugins/wp-print.php @@ -0,0 +1,19 @@ +query_vars['print'] ) ) { + add_filter( 'do_rocket_lazyload', '__return_false' ); + } + } + add_action( 'wp', 'rocket_deactivate_lazyload_on_print_pages' ); +endif; diff --git a/wp-content/plugins/wp-rocket/inc/3rd-party/plugins/wp-rest-api.php b/wp-content/plugins/wp-rocket/inc/3rd-party/plugins/wp-rest-api.php new file mode 100644 index 0000000..c1bef7d --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/3rd-party/plugins/wp-rest-api.php @@ -0,0 +1,48 @@ + example.com/blog/category/wp-json/). + */ + $prefix = rocket_is_subfolder_install() ? '(/[^/]+)?' : ''; + $index = ! empty( $wp_rewrite->index ) ? $wp_rewrite->index : 'index.php'; + $index = preg_quote( $index, '/' ); + $suffix = rest_get_url_prefix(); + $suffix = preg_quote( trim( $suffix, '/' ), '/' ); + + /** + * Results in: + * - Single site: (/index\.php)?/wp\-json(/.*|$) + * - Multisite: (/[^/]+)?(/index\.php)?/wp\-json(/.*|$) + */ + $uri[] = $prefix . '/(' . $index . '/)?' . $suffix . '(/.*|$)'; + + return $uri; +} +add_filter( 'rocket_cache_reject_uri', 'rocket_exclude_wp_rest_api' ); diff --git a/wp-content/plugins/wp-rocket/inc/3rd-party/themes/avada.php b/wp-content/plugins/wp-rocket/inc/3rd-party/themes/avada.php new file mode 100644 index 0000000..a43ed1c --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/3rd-party/themes/avada.php @@ -0,0 +1,68 @@ +get( 'Name' ) ) { + // When Avada theme purge its own cache. + add_action( 'avada_clear_dynamic_css_cache', 'rocket_clean_domain' ); + + /** + * Deactivate WP Rocket lazyload if Avada lazyload is enabled + * + * @since 3.3.4 + * + * @param string $old_value Previous Avada option value. + * @param string $value New Avada option value. + * @return void + */ + function rocket_avada_maybe_deactivate_lazyload( $old_value, $value ) { + if ( + empty( $old_value['lazy_load'] ) + || + ( ! empty( $value['lazy_load'] ) && 'avada' === $value['lazy_load'] ) + ) { + update_rocket_option( 'lazyload', 0 ); + } + } + add_action( 'update_option_fusion_options', 'rocket_avada_maybe_deactivate_lazyload', 10, 2 ); +} + +/** + * Disable WP Rocket lazyload field if Avada lazyload is enabled + * + * @since 3.3.4 + * + * @return bool + */ +function rocket_avada_maybe_disable_lazyload() { + $avada_options = get_option( 'fusion_options' ); + $current_theme = wp_get_theme(); + + if ( 'Avada' !== $current_theme->get( 'Name' ) ) { + return false; + } + + if ( empty( $avada_options['lazy_load'] ) ) { + return false; + } + + if ( ! empty( $avada_options['lazy_load'] && 'avada' !== $avada_options['lazy_load'] ) ) { + return false; + } + + return true; +} + +/** + * Clears WP Rocket's cache after Avada's Fusion Patcher flushes their caches + * + * @since 3.3.5 + * + * @return void + */ +function rocket_avada_clear_cache_fusion_patcher() { + rocket_clean_domain(); +} +add_action( 'fusion_cache_reset_after', 'rocket_avada_clear_cache_fusion_patcher' ); diff --git a/wp-content/plugins/wp-rocket/inc/3rd-party/themes/studiopress.php b/wp-content/plugins/wp-rocket/inc/3rd-party/themes/studiopress.php new file mode 100644 index 0000000..b9dfb76 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/3rd-party/themes/studiopress.php @@ -0,0 +1,44 @@ +cache_flush_theme(); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/3rd-party/themes/uncode.php b/wp-content/plugins/wp-rocket/inc/3rd-party/themes/uncode.php new file mode 100644 index 0000000..0563161 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/3rd-party/themes/uncode.php @@ -0,0 +1,64 @@ +get( 'Name' ) ) || 'uncode' === strtolower( $current_theme->get( 'Template' ) ) ) { + /** + * Excludes Uncode init and ai-uncode JS files from minification/combine + * + * @since 3.1 + * @author Remy Perona + * + * @param array $excluded_js Array of JS filepaths to be excluded. + * @return array + */ + function rocket_exclude_js_uncode( $excluded_js ) { + $excluded_js[] = rocket_clean_exclude_file( get_template_directory_uri() . '/library/js/init.js' ); + $excluded_js[] = rocket_clean_exclude_file( get_template_directory_uri() . '/library/js/min/init.min.js' ); + $excluded_js[] = rocket_clean_exclude_file( get_template_directory_uri() . '/library/js/ai-uncode.js' ); + $excluded_js[] = rocket_clean_exclude_file( get_template_directory_uri() . '/library/js/min/ai-uncode.min.js' ); + + return $excluded_js; + } + add_filter( 'rocket_exclude_js', 'rocket_exclude_js_uncode' ); + + /** + * Excludes some Uncode inline scripts from combine JS + * + * @since 3.1 + * @author Remy Perona + * + * @param array $inline_js Array of patterns to match for exclusion. + * @return array + */ + function rocket_exclude_inline_js_uncode( $inline_js ) { + $inline_js[] = 'SiteParameters'; + $inline_js[] = 'script-'; + $inline_js[] = 'initBox'; + $inline_js[] = 'initHeader'; + $inline_js[] = 'fixMenuHeight'; + + return $inline_js; + } + add_filter( 'rocket_excluded_inline_js_content', 'rocket_exclude_inline_js_uncode' ); + + if ( version_compare( $current_theme->get( 'Version' ), '2.1', '<' ) ) { + /** + * Excludes Uncode JS files from defer JS + * + * @since 3.2.5 + * @author Remy Perona + * + * @param array $exclude_defer_js Array of JS filepaths to be excluded. + * @return array + */ + function rocket_exclude_defer_js_uncode( $exclude_defer_js ) { + $exclude_defer_js[] = rocket_clean_exclude_file( get_template_directory_uri() . '/library/js/init.js' ); + $exclude_defer_js[] = rocket_clean_exclude_file( get_template_directory_uri() . '/library/js/min/init.min.js' ); + return $exclude_defer_js; + } + add_filter( 'rocket_exclude_defer_js', 'rocket_exclude_defer_js_uncode' ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/API/bypass.php b/wp-content/plugins/wp-rocket/inc/API/bypass.php new file mode 100644 index 0000000..3964596 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/API/bypass.php @@ -0,0 +1,31 @@ +query_vars, home_url( $wp->request ) ) ); + $bypass = isset( $url['query'] ) && false !== strpos( $url['query'], 'nowprocket' ); + + return $bypass; +} diff --git a/wp-content/plugins/wp-rocket/inc/API/preload.php b/wp-content/plugins/wp-rocket/inc/API/preload.php new file mode 100644 index 0000000..b8dc371 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/API/preload.php @@ -0,0 +1,112 @@ +preload( $urls ); +} + +/** + * Launches the sitemap preload (helper function for backward compatibility) + * + * @since 2.8 + * @author Remy Perona + * + * @return void + */ +function run_rocket_sitemap_preload() { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + if ( ! get_rocket_option( 'sitemap_preload' ) || ! get_rocket_option( 'manual_preload' ) ) { + return; + } + + /** + * Filters the sitemaps list to preload + * + * @since 2.8 + * + * @param array Array of sitemaps URL + */ + $sitemaps = apply_filters( 'rocket_sitemap_preload_list', get_rocket_option( 'sitemaps', false ) ); + $sitemaps = array_flip( array_flip( $sitemaps ) ); + + if ( ! $sitemaps ) { + return; + } + + $sitemap_preload = new Sitemap( new FullProcess() ); + + $sitemap_preload->run_preload( $sitemaps ); +} + +/** + * Launches the preload cache from the admin bar or the dashboard button + * + * @since 1.3.0 Compatibility with WPML + * @since 1.0 (delete in 1.1.6 and re-add in 1.1.9) + * @deprecated 3.2 + */ +function do_admin_post_rocket_preload_cache() { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + if ( empty( $_GET['_wpnonce'] ) ) { + wp_safe_redirect( wp_get_referer() ); + die(); + } + + if ( ! wp_verify_nonce( sanitize_key( $_GET['_wpnonce'] ), 'preload' ) ) { + wp_nonce_ays( '' ); + } + + if ( ! current_user_can( 'rocket_preload_cache' ) ) { + wp_safe_redirect( wp_get_referer() ); + die(); + } + + $preload_process = new FullProcess(); + + if ( $preload_process->is_process_running() ) { + wp_safe_redirect( wp_get_referer() ); + die(); + } + + delete_transient( 'rocket_preload_errors' ); + + $lang = isset( $_GET['lang'] ) && 'all' !== $_GET['lang'] ? sanitize_key( $_GET['lang'] ) : ''; + run_rocket_bot( 'cache-preload', $lang ); + run_rocket_sitemap_preload(); + + if ( ! strpos( wp_get_referer(), 'wprocket' ) ) { + set_transient( 'rocket_preload_triggered', 1 ); + } + + wp_safe_redirect( wp_get_referer() ); + die(); +} +add_action( 'admin_post_nopriv_preload', 'do_admin_post_rocket_preload_cache' ); +add_action( 'admin_post_preload', 'do_admin_post_rocket_preload_cache' ); diff --git a/wp-content/plugins/wp-rocket/inc/Addon/Busting/BustingFactory.php b/wp-content/plugins/wp-rocket/inc/Addon/Busting/BustingFactory.php new file mode 100644 index 0000000..366e348 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Addon/Busting/BustingFactory.php @@ -0,0 +1,58 @@ +busting_path = $busting_path; + $this->busting_url = $busting_url; + } + + /** + * Creator method + * + * @param string $type Type of busting class to create. + * @return Busting_Interface + */ + public function type( $type ) { + switch ( $type ) { + case 'fbpix': + return new Facebook_Pickles( $this->busting_path, $this->busting_url ); + case 'fbsdk': + return new Facebook_SDK( $this->busting_path, $this->busting_url ); + case 'ga': + return new GoogleAnalytics( $this->busting_path, $this->busting_url ); + case 'gtm': + return new GoogleTagManager( $this->busting_path, $this->busting_url, new GoogleAnalytics( $this->busting_path, $this->busting_url ) ); + } + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Addon/Busting/FileBustingTrait.php b/wp-content/plugins/wp-rocket/inc/Addon/Busting/FileBustingTrait.php new file mode 100644 index 0000000..b58f767 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Addon/Busting/FileBustingTrait.php @@ -0,0 +1,478 @@ +get_busting_version() ) { + // We have a local copy. + Logger::debug( + 'Found local file.', + [ + self::LOGGER_CONTEXT, + 'path' => $this->get_busting_path(), + ] + ); + return true; + } + + if ( $this->refresh_save( $url ) ) { + // We downloaded a fresh copy. + Logger::debug( + 'New copy downloaded.', + [ + self::LOGGER_CONTEXT, + 'path' => $this->get_busting_path(), + ] + ); + return true; + } + + return false; + } + + /** + * Deletes the busting file. + * + * @since 3.1 + * @since 3.2.4 Handle versioning. + * @access public + * @author Remy Perona + * @author Grégory Viguier + * + * @return bool True on success. False on failure. + */ + public function delete() { + $files = $this->get_all_files(); + + if ( false === $files ) { + // Error. + return false; + } + + $this->file_version = null; + + if ( ! $files ) { + // No local files yet. + return true; + } + + return $this->delete_files( array_keys( $files ) ); + } + + /** ----------------------------------------------------------------------------------------- */ + /** LOCAL FILE ============================================================================== */ + /** ----------------------------------------------------------------------------------------- */ + + /** + * Get the version of the current busting file. + * + * @since 3.2.4 + * @access protected + * @author Grégory Viguier + * + * @return string|bool Version of the file. False if the file does not exist. + */ + protected function get_busting_version() { + if ( ! empty( $this->file_version ) ) { + return $this->file_version; + } + + $files = $this->get_all_files(); + + if ( ! $files ) { + // Error or no local files yet. + return false; + } + + // Since we're not supposed to have several files, return the first one. + $this->file_version = reset( $files ); + + return $this->file_version; + } + + /** + * Get all cached files in the directory. + * In a perfect world, there should be only one. + * + * @since 3.2.4 + * @access private + * + * @return bool|array A list of file names (as array keys) and versions (as array values). False on failure. + */ + private function get_all_files() { + $dir_path = rtrim( $this->busting_path, '\\/' ); + + if ( ! $this->filesystem->exists( $dir_path ) ) { + return []; + } + + if ( ! $this->filesystem->is_readable( $dir_path ) ) { + Logger::error( + 'Directory is not readable.', + [ + self::LOGGER_CONTEXT, + 'path' => $dir_path, + ] + ); + return false; + } + + $pattern = '/' . sprintf( + $this->escape_file_name( $this->filename_pattern ), + '([a-f0-9]{32}|local)' + ) . '/'; + + $entries = _rocket_get_dir_files_by_regex( $dir_path, $pattern ); + + $list = []; + foreach ( $entries as $entry ) { + $filename = $entry->getFilename(); + + preg_match( $pattern, $filename, $file_details_match ); + if ( ! empty( $file_details_match[1] ) ) { + $list[ $filename ] = $file_details_match[1]; + } + } + + return $list; + } + + /** + * Get the final URL for the current cache busting file. + * + * @since 3.2.4 + * @access protected + * + * @return string|bool URL of the file. False if the file does not exist. + */ + public function get_busting_url() { + return $this->get_busting_file_url( $this->get_busting_version() ); + } + + /** + * Get the path to the current cache busting file. + * + * @since 3.2.4 + * @access protected + * @author Grégory Viguier + * + * @return string|bool URL of the file. False if the file does not exist. + */ + protected function get_busting_path() { + return $this->get_busting_file_path( $this->get_busting_version() ); + } + + /** + * Get the final URL for a cache busting file. + * + * @since 3.2.4 + * @access private + * @author Grégory Viguier + * + * @param string $version The file version. + * @return string|bool URL of the file with this version. False if no versions are provided. + */ + private function get_busting_file_url( $version ) { + if ( ! $version ) { + return false; + } + + $filename = $this->get_busting_file_name( $version ); + + // This filter is documented in inc/functions/minify.php. + return apply_filters( 'rocket_js_url', $this->busting_url . $filename ); + } + + /** + * Get the local file name. + * + * @since 3.2.4 + * @access private + * @author Grégory Viguier + * + * @param string $version The file version. + * @return string|bool The name of the file with this version. False if no versions are provided. + */ + private function get_busting_file_name( $version ) { + if ( ! $version ) { + return false; + } + + return sprintf( $this->filename_pattern, $version ); + } + + /** + * Get the local file path. + * + * @since 3.2.4 + * @access private + * @author Grégory Viguier + * + * @param string $version The file version. + * @return string|bool Path to the file with this version. False if no versions are provided. + */ + private function get_busting_file_path( $version ) { + if ( ! $version ) { + return false; + } + + return $this->busting_path . $this->get_busting_file_name( $version ); + } + + /** + * Escape a file name, to be used in a regex pattern (delimiter is `/`). + * `%s` conversion specifications are protected. + * + * @since 3.2.4 + * @access private + * + * @param string $filename_pattern The file name. + * @return string + */ + private function escape_file_name( $filename_pattern ) { + return preg_quote( $filename_pattern, '/' ); + } + + /** + * Delete busting files. + * + * @since 3.2.4 + * @access private + * @author Grégory Viguier + * + * @param array $files A list of file names. + * @return bool True if files have been deleted (or no files have been provided). False on failure. + */ + private function delete_files( $files ) { + if ( ! $files ) { + // ¯\_(ツ)_/¯ + return true; + } + + $has_deleted = false; + $error_paths = []; + + foreach ( $files as $file_name ) { + if ( ! $this->filesystem->delete( $this->busting_path . $file_name, false, 'f' ) ) { + $error_paths[] = $this->busting_path . $file_name; + } else { + $has_deleted = true; + } + } + + if ( $error_paths ) { + // Group all deletion errors into one log. + Logger::error( + 'Local file(s) could not be deleted.', + [ + self::LOGGER_CONTEXT, + 'paths' => $error_paths, + ] + ); + } + + return $has_deleted; + } + + /** ----------------------------------------------------------------------------------------- */ + /** UPDATE THE LOCAL FILE =================================================================== */ + /** ----------------------------------------------------------------------------------------- */ + + /** + * Add new contents to a file. If the file doesn't exist, it is created. + * + * @since 3.2.4 + * @access private + * @author Grégory Viguier + * + * @param string $file_path Path to the file to update. + * @param string $file_contents New contents. + * @return string|bool The file contents on success. False on failure. + */ + private function update_file_contents( $file_path, $file_contents ) { + if ( ! $this->is_busting_dir_writable() ) { + return false; + } + + if ( ! rocket_put_content( $file_path, $file_contents ) ) { + Logger::error( + 'Contents could not be written into file.', + [ + self::LOGGER_CONTEXT, + 'path' => $file_path, + ] + ); + return false; + } + + return $file_contents; + } + + /** + * Tell if the directory containing the busting file is writable. + * + * @since 3.2 + * @access private + * @author Grégory Viguier + * + * @return bool + */ + private function is_busting_dir_writable() { + if ( ! $this->filesystem->exists( $this->busting_path ) ) { + rocket_mkdir_p( $this->busting_path ); + } + + if ( ! $this->filesystem->is_writable( $this->busting_path ) ) { + Logger::error( + 'Directory is not writable.', + [ + self::LOGGER_CONTEXT, + 'paths' => $this->busting_path, + ] + ); + return false; + } + + return true; + } + + /** ----------------------------------------------------------------------------------------- */ + /** GET LOCAL/REMOTE CONTENTS =============================================================== */ + /** ----------------------------------------------------------------------------------------- */ + + /** + * Get a file contents. If the file doesn't exist, new contents are fetched remotely. + * + * @since 3.2.4 + * @access private + * @author Grégory Viguier + * + * @param string $file_path Path to the file. + * @param string $file_url URL to the remote file. + * @return string|bool The contents on success, false on failure. + */ + private function get_file_or_remote_contents( $file_path, $file_url ) { + $content = $this->get_file_contents( $file_path ); + + if ( $content ) { + // We have a local file. + return $content; + } + + return $this->get_remote_contents( $file_url ); + } + + /** + * Get a file contents. + * + * @since 3.2.4 + * @access private + * @author Grégory Viguier + * + * @param string $file_path Path to the file. + * @return string|bool The contents on success, false on failure. + */ + private function get_file_contents( $file_path ) { + if ( ! $this->filesystem->exists( $file_path ) ) { + Logger::error( + 'Local file does not exist.', + [ + self::LOGGER_CONTEXT, + 'path' => $file_path, + ] + ); + return false; + } + + if ( ! $this->filesystem->is_readable( $file_path ) ) { + Logger::error( + 'Local file is not readable.', + [ + self::LOGGER_CONTEXT, + 'path' => $file_path, + ] + ); + return false; + } + + $content = $this->filesystem->get_contents( $file_path ); + + if ( ! $content ) { + Logger::error( + 'Local file is empty.', + [ + self::LOGGER_CONTEXT, + 'path' => $file_path, + ] + ); + return false; + } + + return $content; + } + + /** + * Get the contents of a URL. + * + * @since 3.2.4 + * @access private + * @author Grégory Viguier + * + * @param string $url The URL to request. + * @return string|bool The contents on success. False on failure. + */ + private function get_remote_contents( $url ) { + try { + $response = wp_remote_get( $url ); + } catch ( Exception $e ) { + Logger::error( + 'Remote file could not be fetched.', + [ + self::LOGGER_CONTEXT, + 'url' => $url, + 'response' => $e->getMessage(), + ] + ); + return false; + } + + if ( is_wp_error( $response ) ) { + Logger::error( + 'Remote file could not be fetched.', + [ + self::LOGGER_CONTEXT, + 'url' => $url, + 'response' => $response->get_error_message(), + ] + ); + return false; + } + + $contents = wp_remote_retrieve_body( $response ); + + if ( ! $contents ) { + Logger::error( + 'Remote file could not be fetched.', + [ + self::LOGGER_CONTEXT, + 'url' => $url, + 'response' => $response, + ] + ); + return false; + } + + return $contents; + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Addon/Cloudflare/APIClient.php b/wp-content/plugins/wp-rocket/inc/Addon/Cloudflare/APIClient.php new file mode 100644 index 0000000..244cad5 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Addon/Cloudflare/APIClient.php @@ -0,0 +1,394 @@ +args = [ + 'timeout' => 30, // Increase from default of 5 to give extra time for the plugin to process story for exporting. + 'sslverify' => true, + 'body' => [], + ]; + $this->headers = [ + 'X-Auth-Email' => '', + 'X-Auth-Key' => '', + 'User-Agent' => $useragent, + 'Content-type' => 'application/json', + ]; + } + + /** + * Sets up the API credentials. + * + * @since 1.0 + * + * @param string $email The email associated with the Cloudflare account. + * @param string $api_key The API key for the associated Cloudflare account. + * @param string $zone_id The zone ID. + */ + public function set_api_credentials( $email, $api_key, $zone_id ) { + $this->email = $email; + $this->api_key = $api_key; + $this->zone_id = $zone_id; + + $this->headers['X-Auth-Email'] = $email; + $this->headers['X-Auth-Key'] = $api_key; + } + + /** + * Get zone data. + * + * @since 1.0 + * + * @return stdClass Cloudflare response packet. + */ + public function get_zones() { + return $this->get( "zones/{$this->zone_id}" ); + } + + /** + * Get the zone's page rules. + * + * @since 1.0 + * + * @return stdClass Cloudflare response packet. + */ + public function list_pagerules() { + return $this->get( "zones/{$this->zone_id}/pagerules?status=active" ); + } + + /** + * Purges the cache. + * + * @since 1.0 + * + * @return stdClass Cloudflare response packet. + */ + public function purge() { + return $this->delete( "zones/{$this->zone_id}/purge_cache", [ 'purge_everything' => true ] ); + } + + /** + * Purges the given URLs. + * + * @since 1.0 + * + * @param array|null $urls An array of URLs that should be removed from cache. + * + * @return stdClass Cloudflare response packet. + */ + public function purge_files( array $urls ) { + return $this->delete( "zones/{$this->zone_id}/purge_cache", [ 'files' => $urls ] ); + } + + /** + * Changes the zone's browser cache TTL setting. + * + * @since 1.0 + * + * @param string $value New setting's value. + * + * @return stdClass Cloudflare response packet. + */ + public function change_browser_cache_ttl( $value ) { + return $this->change_setting( 'browser_cache_ttl', $value ); + } + + /** + * Changes the zone's rocket loader setting. + * + * @since 1.0 + * + * @param string $value New setting's value. + * + * @return stdClass Cloudflare response packet. + */ + public function change_rocket_loader( $value ) { + return $this->change_setting( 'rocket_loader', $value ); + } + + /** + * Changes the zone's minify setting. + * + * @since 1.0 + * + * @param string $value New setting's value. + * + * @return stdClass Cloudflare response packet. + */ + public function change_minify( $value ) { + return $this->change_setting( 'minify', $value ); + } + + /** + * Changes the zone's cache level. + * + * @since 1.0 + * + * @param string $value New setting's value. + * + * @return stdClass Cloudflare response packet. + */ + public function change_cache_level( $value ) { + return $this->change_setting( 'cache_level', $value ); + } + + /** + * Changes the zone's development mode. + * + * @since 1.0 + * + * @param string $value New setting's value. + * + * @return stdClass Cloudflare response packet. + */ + public function change_development_mode( $value ) { + return $this->change_setting( 'development_mode', $value ); + } + + /** + * Changes the given setting. + * + * @since 1.0 + * + * @param string $setting Name of the setting to change. + * @param string $value New setting's value. + * + * @return stdClass Cloudflare response packet. + */ + protected function change_setting( $setting, $value ) { + return $this->patch( "zones/{$this->zone_id}/settings/{$setting}", [ 'value' => $value ] ); + } + + /** + * Gets all of the Cloudflare settings. + * + * @since 1.0 + * + * @return stdClass Cloudflare response packet. + */ + public function get_settings() { + return $this->get( "zones/{$this->zone_id}/settings" ); + } + + /** + * Gets Cloudflare's IPs. + * + * @since 1.0 + * + * @return stdClass Cloudflare response packet. + */ + public function get_ips() { + return $this->get( '/ips' ); + } + + /** + * API call method for sending requests using GET. + * + * @since 1.0 + * + * @param string $path Path of the endpoint. + * @param array $data Data to be sent along with the request. + * + * @return stdClass Cloudflare response packet. + */ + protected function get( $path, array $data = [] ) { + return $this->request( $path, $data, 'get' ); + } + + /** + * API call method for sending requests using DELETE. + * + * @since 1.0 + * + * @param string $path Path of the endpoint. + * @param array $data Data to be sent along with the request. + * + * @return stdClass Cloudflare response packet. + */ + protected function delete( $path, array $data = [] ) { + return $this->request( $path, $data, 'delete' ); + } + + /** + * API call method for sending requests using PATCH. + * + * @since 1.0 + * + * @param string $path Path of the endpoint. + * @param array $data Data to be sent along with the request. + * + * @return stdClass Cloudflare response packet. + */ + protected function patch( $path, array $data = [] ) { + return $this->request( $path, $data, 'patch' ); + } + + /** + * API call method for sending requests using GET, POST, PUT, DELETE OR PATCH. + * + * @since 1.0 + * + * @author James Bell - credit for original code adapted for version 1.0. + * @author WP Media + * + * @param string $path Path of the endpoint. + * @param array $data Data to be sent along with the request. + * @param string $method Type of method that should be used ('GET', 'DELETE', 'PATCH'). + * + * @return stdClass response object. + * @throws AuthenticationException When email or api key are not set. + * @throws UnauthorizedException When Cloudflare's API returns a 401 or 403. + */ + protected function request( $path, array $data = [], $method = 'get' ) { + if ( '/ips' !== $path && ! $this->is_authorized() ) { + throw new AuthenticationException( 'Authentication information must be provided.' ); + } + + $response = $this->do_remote_request( $path, $data, $method ); + + if ( is_wp_error( $response ) ) { + throw new Exception( $response->get_error_message() ); + } + + $data = wp_remote_retrieve_body( $response ); + + if ( empty( $data ) ) { + throw new Exception( __( 'Cloudflare did not provide any reply. Please try again later.', 'rocket' ) ); + } + + $data = json_decode( $data ); + + if ( empty( $data->success ) ) { + $errors = []; + foreach ( $data->errors as $error ) { + if ( 6003 === $error->code || 9103 === $error->code ) { + $msg = __( 'Incorrect Cloudflare email address or API key.', 'rocket' ); + + $msg .= ' ' . sprintf( + /* translators: %1$s = opening link; %2$s = closing link */ + __( 'Read the %1$sdocumentation%2$s for further guidance.', 'rocket' ), + // translators: Documentation exists in EN, FR; use localized URL if applicable. + '', + '' + ); + + throw new Exception( $msg ); + } + if ( 7003 === $error->code ) { + $msg = __( 'Incorrect Cloudflare Zone ID.', 'rocket' ); + + $msg .= ' ' . sprintf( + /* translators: %1$s = opening link; %2$s = closing link */ + __( 'Read the %1$sdocumentation%2$s for further guidance.', 'rocket' ), + // translators: Documentation exists in EN, FR; use localized URL if applicable. + '', + '' + ); + + throw new Exception( $msg ); + } + $errors[] = $error->message; + } + throw new Exception( wp_sprintf_l( '%l ', $errors ) ); + } + + return $data; + } + + /** + * Checks if the email and API key for the API credentials are set. + * + * @since 1.0 + * + * @return bool true if authorized; else false. + */ + private function is_authorized() { + return ( + isset( $this->email, $this->api_key ) + && + false !== filter_var( $this->email, FILTER_VALIDATE_EMAIL ) + ); + } + + /** + * Does the request remote cURL request. + * + * @since 1.0 + * + * @param string $path Path of the endpoint. + * @param array $data Data to be sent along with the request. + * @param string $method Type of method that should be used ('GET', 'DELETE', 'PATCH'). + * + * @return array curl response packet. + */ + private function do_remote_request( $path, array $data, $method ) { + $this->args['method'] = isset( $method ) ? strtoupper( $method ) : 'GET'; + + if ( '/ips' !== $path ) { + $this->args['headers'] = $this->headers; + } + + $this->args['body'] = []; + + if ( ! empty( $data ) ) { + $this->args['body'] = wp_json_encode( $data ); + } + + $response = wp_remote_request( self::CLOUDFLARE_API . $path, $this->args ); + + return $response; + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Addon/Cloudflare/AuthenticationException.php b/wp-content/plugins/wp-rocket/inc/Addon/Cloudflare/AuthenticationException.php new file mode 100644 index 0000000..2398ad6 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Addon/Cloudflare/AuthenticationException.php @@ -0,0 +1,7 @@ +options = $options; + $this->cloudflare_api_error = null; + $this->api = $api; + // Update api_error with WP_Error if credentials are not valid. + // Update API with Cloudflare instance with correct auth data. + $this->get_cloudflare_instance(); + } + + /** + * Get a Cloudflare\Api instance & the zone_id corresponding to the domain. + * + * @since 1.0 + * + * @return Object Cloudflare instance & zone_id if credentials are correct, WP_Error otherwise. + */ + public function get_cloudflare_instance() { + $cf_email = $this->options->get( 'cloudflare_email', null ); + $cf_api_key = defined( 'WP_ROCKET_CF_API_KEY' ) ? WP_ROCKET_CF_API_KEY : $this->options->get( 'cloudflare_api_key', null ); + $cf_zone_id = $this->options->get( 'cloudflare_zone_id', null ); + $is_api_keys_valid_cf = get_transient( 'rocket_cloudflare_is_api_keys_valid' ); + + if ( false === $is_api_keys_valid_cf ) { + $is_api_keys_valid_cf = $this->is_api_keys_valid( $cf_email, $cf_api_key, $cf_zone_id ); + set_transient( 'rocket_cloudflare_is_api_keys_valid', $is_api_keys_valid_cf, 2 * WEEK_IN_SECONDS ); + } + + if ( is_wp_error( $is_api_keys_valid_cf ) ) { + // Sets Cloudflare API as WP_Error if credentials are not valid. + $this->cloudflare_api_error = $is_api_keys_valid_cf; + + return; + } + + // Sets Cloudflare Valid Credentials and User Agent. + $this->api->set_api_credentials( $cf_email, $cf_api_key, $cf_zone_id ); + } + + /** + * Validate Cloudflare input data. + * + * @since 1.0 + * + * @param string $cf_email Cloudflare email. + * @param string $cf_api_key Cloudflare API key. + * @param string $cf_zone_id Cloudflare zone ID. + * + * @return stdClass true if credentials are ok, WP_Error otherwise. + */ + public function is_api_keys_valid( $cf_email, $cf_api_key, $cf_zone_id ) { + if ( empty( $cf_email ) || empty( $cf_api_key ) ) { + return new WP_Error( + 'cloudflare_credentials_empty', + sprintf( + /* translators: %1$s = opening link; %2$s = closing link */ + __( 'Cloudflare email and/or API key are not set. Read the %1$sdocumentation%2$s for further guidance.', 'rocket' ), + // translators: Documentation exists in EN, FR; use localized URL if applicable. + '', + '' + ) + ); + } + + if ( empty( $cf_zone_id ) ) { + $msg = __( 'Missing Cloudflare Zone ID.', 'rocket' ); + + $msg .= ' ' . sprintf( + /* translators: %1$s = opening link; %2$s = closing link */ + __( 'Read the %1$sdocumentation%2$s for further guidance.', 'rocket' ), + // translators: Documentation exists in EN, FR; use localized URL if applicable. + '', + '' + ); + + return new WP_Error( 'cloudflare_no_zone_id', $msg ); + } + + try { + $this->api->set_api_credentials( $cf_email, $cf_api_key, $cf_zone_id ); + + $cf_zone = $this->api->get_zones(); + $zone_found = false; + $site_url = get_site_url(); + + if ( function_exists( 'domain_mapping_siteurl' ) ) { + $site_url = domain_mapping_siteurl( $site_url ); + } + + if ( ! empty( $cf_zone->result ) ) { + $parsed_url = wp_parse_url( $site_url ); + if ( false !== strpos( strtolower( $parsed_url['host'] ), $cf_zone->result->name ) ) { + $zone_found = true; + } + } + + if ( ! $zone_found ) { + $msg = __( 'It looks like your domain is not set up on Cloudflare.', 'rocket' ); + + $msg .= ' ' . sprintf( + /* translators: %1$s = opening link; %2$s = closing link */ + __( 'Read the %1$sdocumentation%2$s for further guidance.', 'rocket' ), + // translators: Documentation exists in EN, FR; use localized URL if applicable. + '', + '' + ); + + return new WP_Error( 'cloudflare_wrong_zone_id', $msg ); + } + + $this->cloudflare_api_error = null; + return true; + } catch ( Exception $e ) { + return new WP_Error( 'cloudflare_invalid_auth', $e->getMessage() ); + } + } + + /** + * Checks if CF has the $action_value set as a Page Rule. + * + * @since 1.0 + * + * @param string $action_value Cache_everything. + * + * @return mixed Object|bool true / false if $action_value was found or not, WP_Error otherwise. + */ + public function has_page_rule( $action_value ) { + if ( is_wp_error( $this->cloudflare_api_error ) ) { + return $this->cloudflare_api_error; + } + + try { + $cf_page_rule = $this->api->list_pagerules(); + $cf_page_rule_arr = wp_json_encode( $cf_page_rule ); + + return preg_match( '/' . $action_value . '/', $cf_page_rule_arr ); + } catch ( Exception $e ) { + return new WP_Error( 'cloudflare_page_rule_failed', $e->getMessage() ); + } + } + + /** + * Purge Cloudflare cache. + * + * @since 1.0 + * + * @return mixed Object|bool true if the purge is successful, WP_Error otherwise. + */ + public function purge_cloudflare() { + if ( is_wp_error( $this->cloudflare_api_error ) ) { + return $this->cloudflare_api_error; + } + + try { + $cf_purge = $this->api->purge(); + return true; + } catch ( Exception $e ) { + return new WP_Error( 'cloudflare_purge_failed', $e->getMessage() ); + } + } + + /** + * Purge Cloudflare Cache by URL + * + * @since 1.0 + * + * @param WP_Post $post The post object. + * @param array $purge_urls URLs cache files to remove. + * @param string $lang The post language. + * + * @return mixed Object|bool true if the purge is successful, WP_Error otherwise + */ + public function purge_by_url( $post, $purge_urls, $lang ) { + if ( is_wp_error( $this->cloudflare_api_error ) ) { + return $this->cloudflare_api_error; + } + + try { + $cf_purge = $this->api->purge_files( $purge_urls ); + return true; + } catch ( Exception $e ) { + return new WP_Error( 'cloudflare_purge_failed', $e->getMessage() ); + } + } + + /** + * Set the Browser Cache TTL in Cloudflare. + * + * @since 1.0 + * + * @param string $mode Value for Cloudflare browser cache TTL. + * + * @return mixed Object|String Mode value if the update is successful, WP_Error otherwise. + */ + public function set_browser_cache_ttl( $mode ) { + if ( is_wp_error( $this->cloudflare_api_error ) ) { + return $this->cloudflare_api_error; + } + + try { + $cf_return = $this->api->change_browser_cache_ttl( (int) $mode ); + return $mode; + } catch ( Exception $e ) { + return new WP_Error( 'cloudflare_browser_cache', $e->getMessage() ); + } + } + + /** + * Set the Cloudflare Rocket Loader. + * + * @since 1.0 + * + * @param string $mode Value for Cloudflare Rocket Loader. + * + * @return mixed Object|String Mode value if the update is successful, WP_Error otherwise. + */ + public function set_rocket_loader( $mode ) { + if ( is_wp_error( $this->cloudflare_api_error ) ) { + return $this->cloudflare_api_error; + } + + try { + $cf_return = $this->api->change_rocket_loader( $mode ); + return $mode; + } catch ( Exception $e ) { + return new WP_Error( 'cloudflare_rocket_loader', $e->getMessage() ); + } + } + + /** + * Set the Cloudflare Minification. + * + * @since 1.0 + * + * @param string $mode Value for Cloudflare minification. + * + * @return mixed Object|String Mode value if the update is successful, WP_Error otherwise. + */ + public function set_minify( $mode ) { + if ( is_wp_error( $this->cloudflare_api_error ) ) { + return $this->cloudflare_api_error; + } + + $cf_minify_settings = [ + 'css' => $mode, + 'html' => $mode, + 'js' => $mode, + ]; + + try { + $cf_return = $this->api->change_minify( $cf_minify_settings ); + return $mode; + } catch ( Exception $e ) { + return new WP_Error( 'cloudflare_minification', $e->getMessage() ); + } + } + + /** + * Set the Cloudflare Caching level. + * + * @since 1.0 + * + * @param string $mode Value for Cloudflare caching level. + * + * @return mixed Object|String Mode value if the update is successful, WP_Error otherwise. + */ + public function set_cache_level( $mode ) { + if ( is_wp_error( $this->cloudflare_api_error ) ) { + return $this->cloudflare_api_error; + } + + try { + $cf_return = $this->api->change_cache_level( $mode ); + return $mode; + } catch ( Exception $e ) { + return new WP_Error( 'cloudflare_cache_level', $e->getMessage() ); + } + } + + /** + * Set the Cloudflare Development mode. + * + * @since 1.0 + * + * @param string $mode Value for Cloudflare development mode. + * + * @return mixed Object|String Mode value if the update is successful, WP_Error otherwise. + */ + public function set_devmode( $mode ) { + if ( is_wp_error( $this->cloudflare_api_error ) ) { + return $this->cloudflare_api_error; + } + + if ( 0 === (int) $mode ) { + $value = 'off'; + } else { + $value = 'on'; + } + + try { + $cf_return = $this->api->change_development_mode( $value ); + + if ( 'on' === $value ) { + wp_schedule_single_event( time() + 3 * HOUR_IN_SECONDS, 'rocket_cron_deactivate_cloudflare_devmode' ); + } + + return $value; + } catch ( Exception $e ) { + return new WP_Error( 'cloudflare_dev_mode', $e->getMessage() ); + } + } + + /** + * Get all the current Cloudflare settings for a given domain. + * + * @since 1.0 + * + * @return mixed bool|Array Array of Cloudflare settings, false if any error connection to Cloudflare. + */ + public function get_settings() { + if ( is_wp_error( $this->cloudflare_api_error ) ) { + return $this->cloudflare_api_error; + } + + try { + $cf_settings = $this->api->get_settings(); + + foreach ( $cf_settings->result as $cloudflare_option ) { + switch ( $cloudflare_option->id ) { + case 'browser_cache_ttl': + $browser_cache_ttl = $cloudflare_option->value; + break; + case 'cache_level': + $cache_level = $cloudflare_option->value; + break; + case 'rocket_loader': + $rocket_loader = $cloudflare_option->value; + break; + case 'minify': + $cf_minify = $cloudflare_option->value; + break; + } + } + $cf_minify_value = 'on'; + + if ( 'off' === $cf_minify->js || 'off' === $cf_minify->css || 'off' === $cf_minify->html ) { + $cf_minify_value = 'off'; + } + + $cf_settings_array = [ + 'cache_level' => $cache_level, + 'minify' => $cf_minify_value, + 'rocket_loader' => $rocket_loader, + 'browser_cache_ttl' => $browser_cache_ttl, + ]; + + return $cf_settings_array; + } catch ( Exception $e ) { + return new WP_Error( 'cloudflare_current_settings', $e->getMessage() ); + } + } + + /** + * Get Cloudflare IPs. No API validation needed, all exceptions returns the default CF IPs array. + * + * @since 1.0 + * + * @return Object Result of API request if successful, default CF IPs otherwise. + */ + public function get_cloudflare_ips() { + $cf_ips = get_transient( 'rocket_cloudflare_ips' ); + if ( false !== $cf_ips ) { + return $cf_ips; + } + + try { + $cf_ips = $this->api->get_ips(); + + if ( empty( $cf_ips->success ) ) { + // Set default IPs from Cloudflare if call to Cloudflare /ips API does not contain a success. + // Prevents from making API calls on each page load. + $cf_ips = $this->get_default_ips(); + } + } catch ( Exception $e ) { + // Set default IPs from Cloudflare if call to Cloudflare /ips API fails. + // Prevents from making API calls on each page load. + $cf_ips = $this->get_default_ips(); + } + + set_transient( 'rocket_cloudflare_ips', $cf_ips, 2 * WEEK_IN_SECONDS ); + + return $cf_ips; + } + + /** + * Get default Cloudflare IPs. + * + * @since 1.0 + * + * @return stdClass Default Cloudflare connecting IPs. + */ + private function get_default_ips() { + $cf_ips = (object) [ + 'result' => (object) [], + 'success' => true, + 'errors' => [], + 'messages' => [], + ]; + + $cf_ips->result->ipv4_cidrs = [ + '173.245.48.0/20', + '103.21.244.0/22', + '103.22.200.0/22', + '103.31.4.0/22', + '141.101.64.0/18', + '108.162.192.0/18', + '190.93.240.0/20', + '188.114.96.0/20', + '197.234.240.0/22', + '198.41.128.0/17', + '162.158.0.0/15', + '104.16.0.0/12', + '172.64.0.0/13', + '131.0.72.0/22', + ]; + + $cf_ips->result->ipv6_cidrs = [ + '2400:cb00::/32', + '2606:4700::/32', + '2803:f800::/32', + '2405:b500::/32', + '2405:8100::/32', + '2a06:98c0::/29', + '2c0f:f248::/32', + ]; + + return $cf_ips; + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Addon/Cloudflare/Subscriber.php b/wp-content/plugins/wp-rocket/inc/Addon/Cloudflare/Subscriber.php new file mode 100644 index 0000000..f5e8f35 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Addon/Cloudflare/Subscriber.php @@ -0,0 +1,608 @@ +options = $options; + $this->options_api = $options_api; + $this->cloudflare = $cloudflare; + } + + /** + * Gets the subscribed events. + * + * @since 1.0 + * + * @return array subscribed events => callbacks. + */ + public static function get_subscribed_events() { + $slug = rocket_get_constant( 'WP_ROCKET_SLUG', 'wp_rocket_settings' ); + + return [ + 'rocket_varnish_ip' => 'set_varnish_localhost', + 'rocket_varnish_purge_request_host' => 'set_varnish_purge_request_host', + 'rocket_cron_deactivate_cloudflare_devmode' => 'deactivate_devmode', + 'after_rocket_clean_domain' => 'auto_purge', + 'after_rocket_clean_post' => [ 'auto_purge_by_url', 10, 3 ], + 'admin_post_rocket_purge_cloudflare' => 'purge_cache', + 'init' => [ 'set_real_ip', 1 ], + 'update_option_' . $slug => [ 'save_cloudflare_options', 10, 2 ], + 'pre_update_option_' . $slug => [ 'save_cloudflare_old_settings', 10, 2 ], + 'admin_notices' => [ + [ 'maybe_display_purge_notice' ], + [ 'maybe_print_update_settings_notice' ], + ], + ]; + } + + /** + * Sets the Varnish IP to localhost if Cloudflare is active. + * + * @since 1.0 + * + * @param string|array $varnish_ip Varnish IP. + * + * @return array + */ + public function set_varnish_localhost( $varnish_ip ) { + if ( ! $this->should_filter_varnish() ) { + return $varnish_ip; + } + + if ( is_string( $varnish_ip ) ) { + $varnish_ip = (array) $varnish_ip; + } + + $varnish_ip[] = 'localhost'; + + return $varnish_ip; + } + + /** + * Sets the Host header to the website domain if Cloudflare is active. + * + * @since 1.0 + * + * @param string $host the host header value. + * + * @return string + */ + public function set_varnish_purge_request_host( $host ) { + if ( ! $this->should_filter_varnish() ) { + return $host; + } + + return wp_parse_url( home_url(), PHP_URL_HOST ); + } + + /** + * Checks if we should filter the value for the Varnish purge. + * + * @since 1.0 + * + * @return bool + */ + private function should_filter_varnish() { + // This filter is documented in inc/classes/subscriber/Addons/Varnish/VarnishSubscriber.php. + if ( ! apply_filters( 'do_rocket_varnish_http_purge', false ) && ! $this->options->get( 'varnish_auto_purge', 0 ) ) { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + return false; + } + + return true; + } + + + /** + * Automatically set Cloudflare development mode value to off after 3 hours to reflect Cloudflare behaviour. + * + * @since 1.0 + */ + public function deactivate_devmode() { + $this->options->set( 'cloudflare_devmode', 'off' ); + $this->options_api->set( 'settings', $this->options->get_options() ); + } + + /** + * Purge Cloudflare cache automatically if Cache Everything is set as a Page Rule. + * + * @since 1.0 + */ + public function auto_purge() { + if ( ! current_user_can( 'rocket_purge_cloudflare_cache' ) ) { + return; + } + + $cf_cache_everything = $this->cloudflare->has_page_rule( 'cache_everything' ); + + if ( is_wp_error( $cf_cache_everything ) || ! $cf_cache_everything ) { + return; + } + + // Purge CloudFlare. + $this->cloudflare->purge_cloudflare(); + } + + /** + * Purge Cloudflare cache URLs automatically if Cache Everything is set as a Page Rule. + * + * @since 1.0 + * + * @param WP_Post $post The post object. + * @param array $purge_urls URLs cache files to remove. + * @param string $lang The post language. + */ + public function auto_purge_by_url( $post, $purge_urls, $lang ) { + if ( ! current_user_can( 'rocket_purge_cloudflare_cache' ) ) { + return; + } + + $cf_cache_everything = $this->cloudflare->has_page_rule( 'cache_everything' ); + + if ( is_wp_error( $cf_cache_everything ) || ! $cf_cache_everything ) { + return; + } + + // Add home URL and feeds URLs to Cloudflare clean cache URLs list. + $purge_urls[] = get_rocket_i18n_home_url( $lang ); + $feed_urls = []; + $feed_urls[] = get_feed_link(); + $feed_urls[] = get_feed_link( 'comments_' ); + + // this filter is documented in inc/functions/files.php. + $feed_urls = apply_filters( 'rocket_clean_home_feeds', $feed_urls ); + $purge_urls = array_unique( array_merge( $purge_urls, $feed_urls ) ); + + // Purge CloudFlare. + $this->cloudflare->purge_by_url( $post, $purge_urls, $lang ); + } + + /** + * Purge CloudFlare cache. + * + * @since 1.0 + */ + public function purge_cache_no_die() { + if ( ! current_user_can( 'rocket_purge_cloudflare_cache' ) ) { + return; + } + + // Purge CloudFlare. + $cf_purge = $this->cloudflare->purge_cloudflare(); + + if ( is_wp_error( $cf_purge ) ) { + $cf_purge_result = [ + 'result' => 'error', + // translators: %s = CloudFare API return message. + 'message' => sprintf( __( 'WP Rocket: %s', 'rocket' ), $cf_purge->get_error_message() ), + ]; + } else { + $cf_purge_result = [ + 'result' => 'success', + 'message' => __( 'WP Rocket: Cloudflare cache successfully purged.', 'rocket' ), + ]; + } + + set_transient( get_current_user_id() . '_cloudflare_purge_result', $cf_purge_result ); + } + + /** + * Purge CloudFlare cache. + * + * @since 1.0 + */ + public function purge_cache() { + if ( ! isset( $_GET['_wpnonce'] ) || ! wp_verify_nonce( sanitize_key( $_GET['_wpnonce'] ), 'rocket_purge_cloudflare' ) ) { + wp_nonce_ays( '' ); + } + + $this->purge_cache_no_die(); + + wp_safe_redirect( esc_url_raw( wp_get_referer() ) ); + defined( 'WPMEDIA_IS_TESTING' ) ? wp_die() : exit; + } + + /** + * Set Real IP from CloudFlare. + * + * @since 1.0 + * @source cloudflare.php - https://wordpress.org/plugins/cloudflare/ + */ + public function set_real_ip() { + // only run this logic if the REMOTE_ADDR is populated, to avoid causing notices in CLI mode. + if ( ! isset( $_SERVER['HTTP_CF_CONNECTING_IP'], $_SERVER['REMOTE_ADDR'] ) ) { + return; + } + + $cf_ips_values = $this->cloudflare->get_cloudflare_ips(); + $cf_ip_ranges = $cf_ips_values->result->ipv6_cidrs; + $ip = sanitize_text_field( wp_unslash( $_SERVER['REMOTE_ADDR'] ) ); + $ipv6 = get_rocket_ipv6_full( $ip ); + if ( false === strpos( $ip, ':' ) ) { + // IPV4: Update the REMOTE_ADDR value if the current REMOTE_ADDR value is in the specified range. + $cf_ip_ranges = $cf_ips_values->result->ipv4_cidrs; + } + + foreach ( $cf_ip_ranges as $range ) { + if ( + ( strpos( $ip, ':' ) && rocket_ipv6_in_range( $ipv6, $range ) ) + || + ( false === strpos( $ip, ':' ) && rocket_ipv4_in_range( $ip, $range ) ) + ) { + $_SERVER['REMOTE_ADDR'] = sanitize_text_field( wp_unslash( $_SERVER['HTTP_CF_CONNECTING_IP'] ) ); + break; + } + } + } + + /** + * This notice is displayed after purging the CloudFlare cache. + * + * @since 1.0 + */ + public function maybe_display_purge_notice() { + if ( ! current_user_can( 'rocket_purge_cloudflare_cache' ) ) { + return; + } + + $user_id = get_current_user_id(); + $notice = get_transient( $user_id . '_cloudflare_purge_result' ); + if ( ! $notice ) { + return; + } + + delete_transient( $user_id . '_cloudflare_purge_result' ); + + rocket_notice_html( + [ + 'status' => $notice['result'], + 'message' => $notice['message'], + ] + ); + } + + /** + * This notice is displayed after modifying the CloudFlare settings. + * + * @since 1.0 + */ + public function maybe_print_update_settings_notice() { + $screen = get_current_screen(); + + if ( ! current_user_can( 'rocket_manage_options' ) || 'settings_page_wprocket' !== $screen->id ) { + return; + } + + $user_id = get_current_user_id(); + $notices = get_transient( $user_id . '_cloudflare_update_settings' ); + if ( ! $notices ) { + return; + } + + $errors = ''; + $success = ''; + delete_transient( $user_id . '_cloudflare_update_settings' ); + foreach ( $notices as $notice ) { + if ( 'error' === $notice['result'] ) { + $errors .= $notice['message'] . '
'; + } elseif ( 'success' === $notice['result'] ) { + $success .= $notice['message'] . '
'; + } + } + + if ( ! empty( $success ) ) { + rocket_notice_html( + [ + 'message' => $success, + ] + ); + } + + if ( ! empty( $errors ) ) { + rocket_notice_html( + [ + 'status' => 'error', + 'message' => $errors, + ] + ); + } + + } + + /** + * Save Cloudflare dev mode admin option. + * + * @since 3.5.2 + * @author Soponar Cristina + * + * @param string $devmode New value for Cloudflare dev mode. + */ + private function save_cloudflare_devmode( $devmode ) { + $cloudflare_dev_mode_return = $this->cloudflare->set_devmode( $devmode ); + if ( is_wp_error( $cloudflare_dev_mode_return ) ) { + return [ + 'result' => 'error', + // translators: %s is the message returned by the CloudFlare API. + 'message' => '' . __( 'WP Rocket: ', 'rocket' ) . '' . sprintf( __( 'Cloudflare development mode error: %s', 'rocket' ), $cloudflare_dev_mode_return->get_error_message() ), + ]; + } + return [ + 'result' => 'success', + // translators: %s is the message returned by the CloudFlare API. + 'message' => '' . __( 'WP Rocket: ', 'rocket' ) . '' . sprintf( __( 'Cloudflare development mode %s', 'rocket' ), $cloudflare_dev_mode_return ), + ]; + } + + /** + * Save Cloudflare cache_level admin option. + * + * @since 3.5.2 + * @author Soponar Cristina + * + * @param string $cache_level New value for Cloudflare cache_level. + */ + private function save_cache_level( $cache_level ) { + // Set Cache Level to Aggressive. + $cf_cache_level_return = $this->cloudflare->set_cache_level( $cache_level ); + + if ( is_wp_error( $cf_cache_level_return ) ) { + return [ + 'result' => 'error', + // translators: %s is the message returned by the CloudFlare API. + 'message' => '' . __( 'WP Rocket: ', 'rocket' ) . '' . sprintf( __( 'Cloudflare cache level error: %s', 'rocket' ), $cf_cache_level_return->get_error_message() ), + ]; + } + + if ( 'aggressive' === $cf_cache_level_return ) { + $cf_cache_level_return = _x( 'Standard', 'Cloudflare caching level', 'rocket' ); + } + + return [ + 'result' => 'success', + // translators: %s is the caching level returned by the CloudFlare API. + 'message' => '' . __( 'WP Rocket: ', 'rocket' ) . '' . sprintf( __( 'Cloudflare cache level set to %s', 'rocket' ), $cf_cache_level_return ), + ]; + } + + /** + * Save Cloudflare minify admin option. + * + * @since 3.5.2 + * @author Soponar Cristina + * + * @param string $minify New value for Cloudflare minify. + */ + private function save_minify( $minify ) { + $cf_minify_return = $this->cloudflare->set_minify( $minify ); + + if ( is_wp_error( $cf_minify_return ) ) { + return [ + 'result' => 'error', + // translators: %s is the message returned by the CloudFlare API. + 'message' => '' . __( 'WP Rocket: ', 'rocket' ) . '' . sprintf( __( 'Cloudflare minification error: %s', 'rocket' ), $cf_minify_return->get_error_message() ), + ]; + } + return [ + 'result' => 'success', + // translators: %s is the message returned by the CloudFlare API. + 'message' => '' . __( 'WP Rocket: ', 'rocket' ) . '' . sprintf( __( 'Cloudflare minification %s', 'rocket' ), $cf_minify_return ), + ]; + } + + /** + * Save Cloudflare rocket loader admin option. + * + * @since 3.5.2 + * @author Soponar Cristina + * + * @param string $rocket_loader New value for Cloudflare rocket loader. + */ + private function save_rocket_loader( $rocket_loader ) { + $cf_rocket_loader_return = $this->cloudflare->set_rocket_loader( $rocket_loader ); + + if ( is_wp_error( $cf_rocket_loader_return ) ) { + return [ + 'result' => 'error', + // translators: %s is the message returned by the CloudFlare API. + 'message' => '' . __( 'WP Rocket: ', 'rocket' ) . '' . sprintf( __( 'Cloudflare rocket loader error: %s', 'rocket' ), $cf_rocket_loader_return->get_error_message() ), + ]; + } + return [ + 'result' => 'success', + // translators: %s is the message returned by the CloudFlare API. + 'message' => '' . __( 'WP Rocket: ', 'rocket' ) . '' . sprintf( __( 'Cloudflare rocket loader %s', 'rocket' ), $cf_rocket_loader_return ), + ]; + } + + /** + * Save Cloudflare browser cache ttl admin option. + * + * @since 3.5.2 + * @author Soponar Cristina + * + * @param int $browser_cache_ttl New value for Cloudflare browser cache ttl. + */ + private function save_browser_cache_ttl( $browser_cache_ttl ) { + $cf_browser_cache_return = $this->cloudflare->set_browser_cache_ttl( $browser_cache_ttl ); + + if ( is_wp_error( $cf_browser_cache_return ) ) { + return [ + 'result' => 'error', + // translators: %s is the message returned by the CloudFlare API. + 'message' => '' . __( 'WP Rocket: ', 'rocket' ) . '' . sprintf( __( 'Cloudflare browser cache error: %s', 'rocket' ), $cf_browser_cache_return->get_error_message() ), + ]; + } + return [ + 'result' => 'success', + // translators: %s is the message returned by the CloudFlare API. + 'message' => '' . __( 'WP Rocket: ', 'rocket' ) . '' . sprintf( __( 'Cloudflare browser cache set to %s seconds', 'rocket' ), $cf_browser_cache_return ), + ]; + } + + /** + * Save Cloudflare auto settings admin option. + * + * @since 3.5.2 + * @author Soponar Cristina + * + * @param array $auto_settings New value for Cloudflare auto_settings. + * @param array $old_settings Cloudflare cloudflare_old_settings. + */ + private function save_cloudflare_auto_settings( $auto_settings, $old_settings ) { + $cf_old_settings = explode( ',', $old_settings ); + $cloudflare_update_result = []; + + // Set Cache Level to Aggressive. + $cf_cache_level = isset( $cf_old_settings[0] ) && 0 === $auto_settings ? 'basic' : 'aggressive'; + $cloudflare_update_result[] = $this->save_cache_level( $cf_cache_level ); + + // Active Minification for HTML, CSS & JS. + $cf_minify = isset( $cf_old_settings[1] ) && 0 === $auto_settings ? $cf_old_settings[1] : 'on'; + $cloudflare_update_result[] = $this->save_minify( $cf_minify ); + + // Deactivate Rocket Loader to prevent conflicts. + $cf_rocket_loader = isset( $cf_old_settings[2] ) && 0 === $auto_settings ? $cf_old_settings[2] : 'off'; + $cloudflare_update_result[] = $this->save_rocket_loader( $cf_rocket_loader ); + + // Set Browser cache to 1 year. + $cf_browser_cache_ttl = isset( $cf_old_settings[3] ) && 0 === $auto_settings ? $cf_old_settings[3] : '31536000'; + $cloudflare_update_result[] = $this->save_browser_cache_ttl( $cf_browser_cache_ttl ); + + return $cloudflare_update_result; + } + + /** + * Save Cloudflare admin options. + * + * @since 1.0 + * + * @param array $old_value An array of previous values for the settings. + * @param array $value An array of submitted values for the settings. + */ + public function save_cloudflare_options( $old_value, $value ) { + if ( ! current_user_can( 'rocket_manage_options' ) ) { + return; + } + + $is_api_keys_valid_cloudflare = get_transient( 'rocket_cloudflare_is_api_keys_valid' ); + $submit_cloudflare_view = false; + if ( + ( isset( $old_value['cloudflare_email'], $value['cloudflare_email'] ) && $old_value['cloudflare_email'] !== $value['cloudflare_email'] ) + || + ( isset( $old_value['cloudflare_api_key'], $value['cloudflare_api_key'] ) && $old_value['cloudflare_api_key'] !== $value['cloudflare_api_key'] ) + || + ( isset( $old_value['cloudflare_zone_id'], $value['cloudflare_zone_id'] ) && $old_value['cloudflare_zone_id'] !== $value['cloudflare_zone_id'] ) + ) { + delete_transient( 'rocket_cloudflare_is_api_keys_valid' ); + $is_api_keys_valid_cloudflare = $this->cloudflare->is_api_keys_valid( $value['cloudflare_email'], $value['cloudflare_api_key'], $value['cloudflare_zone_id'], true ); + set_transient( 'rocket_cloudflare_is_api_keys_valid', $is_api_keys_valid_cloudflare, 2 * WEEK_IN_SECONDS ); + $submit_cloudflare_view = true; + } + + if ( ( isset( $old_value['cloudflare_devmode'], $value['cloudflare_devmode'] ) && (int) $old_value['cloudflare_devmode'] !== (int) $value['cloudflare_devmode'] ) || + ( isset( $old_value['cloudflare_auto_settings'], $value['cloudflare_auto_settings'] ) && (int) $old_value['cloudflare_auto_settings'] !== (int) $value['cloudflare_auto_settings'] ) ) { + $submit_cloudflare_view = true; + } + + // Revalidate Cloudflare credentials if transient is false. + if ( false === $is_api_keys_valid_cloudflare ) { + if ( isset( $value['cloudflare_email'], $value['cloudflare_api_key'], $value['cloudflare_zone_id'] ) ) { + $is_api_keys_valid_cloudflare = $this->cloudflare->is_api_keys_valid( $value['cloudflare_email'], $value['cloudflare_api_key'], $value['cloudflare_zone_id'] ); + } else { + $is_api_keys_valid_cloudflare = false; + } + set_transient( 'rocket_cloudflare_is_api_keys_valid', $is_api_keys_valid_cloudflare, 2 * WEEK_IN_SECONDS ); + } + + // If is submit CF view & CF Credentials are invalid, display error and bail out. + if ( is_wp_error( $is_api_keys_valid_cloudflare ) && $submit_cloudflare_view ) { + $cloudflare_error_message = $is_api_keys_valid_cloudflare->get_error_message(); + add_settings_error( 'general', 'cloudflare_api_key_invalid', __( 'WP Rocket: ', 'rocket' ) . '
' . $cloudflare_error_message . '', 'error' ); + set_transient( get_current_user_id() . '_cloudflare_update_settings', [] ); + return; + } + + // Update CloudFlare Development Mode. + $cloudflare_update_result = []; + if ( isset( $old_value['cloudflare_devmode'], $value['cloudflare_devmode'] ) && (int) $old_value['cloudflare_devmode'] !== (int) $value['cloudflare_devmode'] ) { + $cloudflare_update_result[] = $this->save_cloudflare_devmode( $value['cloudflare_devmode'] ); + } + + // Update CloudFlare settings. + if ( isset( $old_value['cloudflare_auto_settings'], $value['cloudflare_auto_settings'] ) && (int) $old_value['cloudflare_auto_settings'] !== (int) $value['cloudflare_auto_settings'] ) { + $cloudflare_update_result = array_merge( $cloudflare_update_result, $this->save_cloudflare_auto_settings( $value['cloudflare_auto_settings'], $value['cloudflare_old_settings'] ) ); + } + + set_transient( get_current_user_id() . '_cloudflare_update_settings', $cloudflare_update_result ); + } + + /** + * Save Cloudflare old settings when the auto settings option is enabled. + * + * @since 1.0 + * + * @param array $value An array of previous values for the settings. + * @param array $old_value An array of submitted values for the settings. + * + * @return array settings with old settings. + */ + public function save_cloudflare_old_settings( $value, $old_value ) { + if ( ! current_user_can( 'rocket_manage_options' ) ) { + return $value; + } + + // Save old CloudFlare settings. + if ( + isset( $value['cloudflare_auto_settings'], $old_value ['cloudflare_auto_settings'] ) + && + $value['cloudflare_auto_settings'] !== $old_value ['cloudflare_auto_settings'] + && + 1 === $value['cloudflare_auto_settings'] + ) { + $cf_settings = $this->cloudflare->get_settings(); + $value['cloudflare_old_settings'] = ! is_wp_error( $cf_settings ) + ? implode( ',', array_filter( $cf_settings ) ) + : ''; + } + + return $value; + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Addon/Cloudflare/UnauthorizedException.php b/wp-content/plugins/wp-rocket/inc/Addon/Cloudflare/UnauthorizedException.php new file mode 100644 index 0000000..a06570e --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Addon/Cloudflare/UnauthorizedException.php @@ -0,0 +1,7 @@ +busting_factory = $busting_factory; + $this->options = $options; + } + + /** + * Return an array of events that this subscriber wants to listen to. + * + * @since 3.2 + * + * @return array + */ + public static function get_subscribed_events() { + $events = [ + 'cron_schedules' => 'add_schedule', + 'init' => 'schedule_cache_update', + self::CRON_NAME => 'update_cache', + 'rocket_purge_cache' => 'delete_cache', + 'rocket_buffer' => 'cache_busting_facebook_tracking', + ]; + + return $events; + } + + /** + * Add weekly interval to cron schedules. + * + * @since 3.2 + * + * @param array $schedules An array of intervals used by cron jobs. + * @return array + */ + public function add_schedule( $schedules ) { + if ( ! $this->is_busting_active() ) { + return $schedules; + } + + $schedules['weekly'] = [ + 'interval' => 604800, + 'display' => __( 'weekly', 'rocket' ), + ]; + + return $schedules; + } + + /** + * (Un)Schedule the auto-update of the cache busting files. + * + * @since 3.2 + */ + public function schedule_cache_update() { + $scheduled = wp_next_scheduled( self::CRON_NAME ); + + if ( ! $this->is_busting_active() ) { + if ( $scheduled ) { + wp_clear_scheduled_hook( self::CRON_NAME ); + } + return; + } + + if ( ! $scheduled ) { + wp_schedule_event( time(), 'weekly', self::CRON_NAME ); + } + } + + /** + * Update the Facebook Pixel cache busting files. + * + * @since 3.2 + * + * @return bool + */ + public function update_cache() { + if ( ! $this->is_busting_active() ) { + return false; + } + + $html = $this->busting_factory->type( 'fbsdk' )->refresh(); + + return $this->busting_factory->type( 'fbpix' )->refresh_all(); + } + + /** + * Delete Facebook Pixel cache busting files. + * + * @since 3.2 + * @since 3.6 Argument replacement. + * + * @param string $type Type of cache clearance: 'all', 'post', 'term', 'user', 'url'. + * @return bool + */ + public function delete_cache( $type ) { + if ( 'all' !== $type || ! $this->is_busting_active() ) { + return false; + } + + $html = $this->busting_factory->type( 'fbsdk' )->delete(); + + return $this->busting_factory->type( 'fbpix' )->delete_all(); + } + + /** + * Process the cache busting on the HTML contents. + * + * @since 3.2 + * + * @param string $html HTML contents. + * @return string + */ + public function cache_busting_facebook_tracking( $html ) { + if ( ! $this->is_allowed() ) { + return $html; + } + + $html = $this->busting_factory->type( 'fbsdk' )->replace_url( $html ); + + return $this->busting_factory->type( 'fbpix' )->replace_url( $html ); + } + + /** + * Tell if the cache busting should happen. + * + * @since 3.2 + * + * @return bool + */ + private function is_allowed() { + if ( defined( 'DONOTROCKETOPTIMIZE' ) && DONOTROCKETOPTIMIZE ) { + return false; + } + + return $this->is_busting_active(); + } + + /** + * Tell if the cache busting option is active. + * + * @since 3.2 + * + * @return bool + */ + private function is_busting_active() { + return (bool) $this->options->get( 'facebook_pixel_cache', 0 ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Addon/GoogleTracking/GoogleAnalytics.php b/wp-content/plugins/wp-rocket/inc/Addon/GoogleTracking/GoogleAnalytics.php new file mode 100644 index 0000000..65d9598 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Addon/GoogleTracking/GoogleAnalytics.php @@ -0,0 +1,245 @@ +busting_path = $busting_path . 'google-tracking/'; + $this->busting_url = $busting_url . 'google-tracking/'; + $this->filesystem = rocket_direct_filesystem(); + } + + /** ----------------------------------------------------------------------------------------- */ + /** PUBLIC METHODS ========================================================================== */ + /** ----------------------------------------------------------------------------------------- */ + + /** + * Performs the replacement process. + * + * @since 3.1 + * @access public + * @author Remy Perona + * + * @param string $html HTML content. + * @return string + */ + public function replace_url( $html ) { + $this->is_replaced = false; + + $tag = $this->find( '[^>]*)?>(?.*)?<\/script>', $html ); + + if ( ! $tag ) { + return $html; + } + + Logger::info( + 'GOOGLE ANALYTICS CACHING PROCESS STARTED.', + [ + self::LOGGER_CONTEXT, + 'tag' => $tag, + ] + ); + + if ( ! $this->save( $this->url ) ) { + return $html; + } + + $replace_tag = preg_replace( '/(?:https?:)?\/\/www\.google-analytics\.com\/analytics\.js/i', $this->get_busting_url(), $tag ); + $html = str_replace( $tag, $replace_tag, $html ); + + $this->is_replaced = true; + + Logger::info( + 'Google Analytics caching process succeeded.', + [ + self::LOGGER_CONTEXT, + 'file' => $this->get_busting_path(), + ] + ); + + return $html; + } + + /** + * Tell if the replacement was sucessful or not. + * + * @since 3.1 + * @access public + * @author Remy Perona + * + * @return bool + */ + public function is_replaced() { + return $this->is_replaced; + } + + /** + * Saves the content of the URL to cache to the busting file. + * + * @since 3.2.4 + * @access public + * @author Grégory Viguier + * + * @param string $url URL to get the content from. + * @return bool + */ + public function refresh_save( $url ) { + // Before doing anything, make sure the busting file can be created. + if ( ! $this->is_busting_dir_writable() ) { + return false; + } + + // Get remote content. + $content = $this->get_remote_contents( $url ); + + if ( ! $content ) { + // Could not get the remote contents. + return false; + } + + $version = md5( $content ); + $path = $this->get_busting_file_path( $version ); + + return $this->update_file_contents( $path, $content ); + } + + /** ----------------------------------------------------------------------------------------- */ + /** REMOTE FILE ============================================================================= */ + /** ----------------------------------------------------------------------------------------- */ + + /** + * Get the Google Analytics URL. + * + * @since 3.1 + * @access public + * @author Remy Perona + * + * @return string + */ + public function get_url() { + return $this->url; + } + + /** ----------------------------------------------------------------------------------------- */ + /** VARIOUS INTERNAL TOOLS ================================================================== */ + /** ----------------------------------------------------------------------------------------- */ + + /** + * Searches for element(s) in the DOM. + * + * @since 3.1 + * @access public + * @author Remy Perona + * + * @param string $pattern Pattern to match. + * @param string $html HTML content. + * @return string + */ + protected function find( $pattern, $html ) { + preg_match_all( '/' . $pattern . '/si', $html, $all_matches, PREG_SET_ORDER ); + + $matches = array_map( + function( $match ) { + + if ( + ! preg_match( '/src\s*=\s*[\'"]\s*(?:https?:)?\/\/www\.google-analytics\.com\/analytics\.js\s*[\'"]/i', $match['attr'] . $match['content'] ) + && + false === strpos( $match['content'], 'GoogleAnalyticsObject' ) + ) { + return; + } + + return $match[0]; + }, + $all_matches + ); + + $matches = array_values( array_filter( $matches ) ); + + if ( ! $matches ) { + return false; + } + + return $matches[0]; + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Addon/GoogleTracking/GoogleTagManager.php b/wp-content/plugins/wp-rocket/inc/Addon/GoogleTracking/GoogleTagManager.php new file mode 100644 index 0000000..1267fb7 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Addon/GoogleTracking/GoogleTagManager.php @@ -0,0 +1,200 @@ +busting_path = $busting_path . $blog_id . '/'; + $this->busting_url = $busting_url . $blog_id . '/'; + $this->ga_busting = $ga_busting; + $this->filesystem = is_null( $filesystem ) ? rocket_direct_filesystem() : $filesystem; + } + + /** ----------------------------------------------------------------------------------------- */ + /** PUBLIC METHODS ========================================================================== */ + /** ----------------------------------------------------------------------------------------- */ + + /** + * Performs the replacement process. + * + * @since 3.1 + * @access public + * + * @param string $html HTML content. + * @return string + */ + public function replace_url( $html ) { + $script = $this->find( ']+)?\s+src\s*=\s*[\'"]\s*?((?:https?:)?\/\/www\.googletagmanager\.com(?:.+)?)\s*?[\'"]([^>]+)?\/?>', $html ); + + if ( ! $script ) { + return $html; + } + + // replace relative protocol // with full https://. + $gtm_url = preg_replace( '/^\/\//', 'https://', $script[2] ); + + Logger::info( + 'GOOGLE TAG MANAGER CACHING PROCESS STARTED.', + [ + self::LOGGER_CONTEXT, + 'tag' => $script, + ] + ); + + if ( ! $this->save( $gtm_url ) ) { + return $html; + } + + $replace_script = str_replace( $script[2], $this->get_busting_url(), $script[0] ); + $replace_script = str_replace( ' $this->get_busting_path(), + ] + ); + + return $html; + } + + /** + * Saves the content of the URL to cache to the busting file. + * + * @since 3.2 + * @access public + * + * @param string $url URL to get the content from. + * @return bool + */ + public function refresh_save( $url ) { + // Before doing anything, make sure the busting file can be created. + if ( ! $this->is_busting_dir_writable() ) { + return false; + } + + // Get remote content. + $content = $this->get_remote_contents( $url ); + + if ( ! $content ) { + // Could not get the remote contents. + return false; + } + + $version = md5( $content ); + $path = $this->get_busting_file_path( $version ); + $content = $this->replace_ga_url( $content ); + + return $this->update_file_contents( $path, $content ); + } + + /** ----------------------------------------------------------------------------------------- */ + /** VARIOUS INTERNAL TOOLS ================================================================== */ + /** ----------------------------------------------------------------------------------------- */ + + /** + * Searches for element(s) in the DOM. + * + * @since 3.1 + * @access public + * + * @param string $pattern Pattern to match. + * @param string $html HTML content. + * @return string + */ + protected function find( $pattern, $html ) { + preg_match_all( '/' . $pattern . '/Umsi', $html, $matches, PREG_SET_ORDER ); + + if ( empty( $matches ) ) { + return false; + } + + return $matches[0]; + } + + /** + * Replaces the Google Analytics URL by the local copy inside the gtm-local.js file content + * + * @since 3.1 + * + * @param string $content JavaScript content. + * @return string + */ + protected function replace_ga_url( $content ) { + if ( ! $this->ga_busting->save( $this->ga_busting->get_url() ) ) { + return $content; + } + + return str_replace( $this->ga_busting->get_url(), $this->ga_busting->get_busting_url(), $content ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Addon/GoogleTracking/Subscriber.php b/wp-content/plugins/wp-rocket/inc/Addon/GoogleTracking/Subscriber.php new file mode 100644 index 0000000..e5583c9 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Addon/GoogleTracking/Subscriber.php @@ -0,0 +1,182 @@ +busting_factory = $busting_factory; + $this->options = $options; + } + + /** + * Return an array of events that this subscriber wants to listen to. + * + * @since 3.1 + * + * @return array + */ + public static function get_subscribed_events() { + $events = [ + 'cron_schedules' => 'add_schedule', + 'init' => 'schedule_tracking_cache_update', + 'rocket_google_tracking_cache_update' => 'update_tracking_cache', + 'rocket_purge_cache' => 'delete_tracking_cache', + 'rocket_buffer' => 'cache_busting_google_tracking', + ]; + + return $events; + } + + /** + * Processes the cache busting on the HTML content + * + * Google Analytics replacement is performed first, and if no replacement occured, Google Tag Manager replacement is performed. + * + * @since 3.1 + * + * @param string $html HTML content. + * @return string + */ + public function cache_busting_google_tracking( $html ) { + if ( ! $this->is_allowed() ) { + return $html; + } + + $processor = $this->busting_factory->type( 'ga' ); + $html = $processor->replace_url( $html ); + + $processor = $this->busting_factory->type( 'gtm' ); + $html = $processor->replace_url( $html ); + + return $html; + } + + /** + * Schedules the auto-update of Google Analytics cache busting file + * + * @since 3.1 + * + * @return void + */ + public function schedule_tracking_cache_update() { + if ( ! $this->is_busting_active() ) { + return; + } + + if ( ! wp_next_scheduled( 'rocket_google_tracking_cache_update' ) ) { + wp_schedule_event( time(), 'weekly', 'rocket_google_tracking_cache_update' ); + } + } + + /** + * Updates Google Analytics cache busting file + * + * @since 3.1 + * + * @return bool + */ + public function update_tracking_cache() { + if ( ! $this->is_busting_active() ) { + return false; + } + + $processor = $this->busting_factory->type( 'ga' ); + + return $processor->refresh_save( $processor->get_url() ); + } + + /** + * Adds weekly interval to cron schedules + * + * @since 3.1 + * + * @param Array $schedules An array of intervals used by cron jobs. + * @return Array + */ + public function add_schedule( $schedules ) { + if ( ! $this->is_busting_active() ) { + return $schedules; + } + + $schedules['weekly'] = [ + 'interval' => 604800, + 'display' => __( 'weekly', 'rocket' ), + ]; + + return $schedules; + } + + /** + * Deletes the GA busting file. + * + * @since 3.1 + * @since 3.6 Argument replacement. + * + * @param string $type Type of cache clearance: 'all', 'post', 'term', 'user', 'url'. + * @return bool + */ + public function delete_tracking_cache( $type ) { + if ( 'all' !== $type || ! $this->is_busting_active() ) { + return false; + } + + $this->busting_factory->type( 'gtm' )->delete(); + + return $this->busting_factory->type( 'ga' )->delete(); + } + + /** + * Checks if the cache busting should happen + * + * @since 3.1 + * + * @return boolean + */ + private function is_allowed() { + if ( rocket_get_constant( 'DONOTROCKETOPTIMIZE' ) ) { + return false; + } + + return $this->is_busting_active(); + } + + /** + * Tell if the cache busting option is active. + * + * @since 3.6 + * + * @return bool + */ + private function is_busting_active() { + return (bool) $this->options->get( 'google_analytics_cache', 0 ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Addon/ServiceProvider.php b/wp-content/plugins/wp-rocket/inc/Addon/ServiceProvider.php new file mode 100644 index 0000000..6ce7ebb --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Addon/ServiceProvider.php @@ -0,0 +1,88 @@ +getContainer()->get( 'options' ); + + // Busting Factory. + $this->getContainer()->add( 'busting_factory', 'WP_Rocket\Addon\Busting\BustingFactory' ) + ->withArgument( rocket_get_constant( 'WP_ROCKET_CACHE_BUSTING_PATH' ) ) + ->withArgument( rocket_get_constant( 'WP_ROCKET_CACHE_BUSTING_URL' ) ); + + // Facebook Tracking Subscriber. + $this->getContainer()->share( 'facebook_tracking', 'WP_Rocket\Addon\FacebookTracking\Subscriber' ) + ->withArgument( $this->getContainer()->get( 'busting_factory' ) ) + ->withArgument( $options ); + + // Google Tracking Subscriber. + $this->getContainer()->share( 'google_tracking', 'WP_Rocket\Addon\GoogleTracking\Subscriber' ) + ->withArgument( $this->getContainer()->get( 'busting_factory' ) ) + ->withArgument( $options ); + + // Sucuri Addon. + $this->getContainer()->share( 'sucuri_subscriber', 'WP_Rocket\Subscriber\Third_Party\Plugins\Security\Sucuri_Subscriber' ) + ->withArgument( $options ); + + // Cloudflare Addon. + $this->addon_cloudflare( $options ); + } + + /** + * Adds Cloudflare Addon into the Container when the addon is enabled. + * + * @since 3.5 + * + * @param Options_Data $options Instance of options. + */ + protected function addon_cloudflare( Options_Data $options ) { + // If the addon is not enabled, delete the transient and bail out. Don't load the addon. + if ( ! (bool) $options->get( 'do_cloudflare', false ) ) { + delete_transient( 'rocket_cloudflare_is_api_keys_valid' ); + return; + } + + $this->provides[] = 'cloudflare_subscriber'; + + $this->getContainer()->add( 'cloudflare_api', 'WPMedia\Cloudflare\APIClient' ) + ->withArgument( rocket_get_constant( 'WP_ROCKET_VERSION' ) ); + $this->getContainer()->add( 'cloudflare', 'WPMedia\Cloudflare\Cloudflare' ) + ->withArgument( $options ) + ->withArgument( $this->getContainer()->get( 'cloudflare_api' ) ); + $this->getContainer()->share( 'cloudflare_subscriber', 'WPMedia\Cloudflare\Subscriber' ) + ->withArgument( $this->getContainer()->get( 'cloudflare' ) ) + ->withArgument( $options ) + ->withArgument( $this->getContainer()->get( 'options_api' ) ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Addon/Varnish/ServiceProvider.php b/wp-content/plugins/wp-rocket/inc/Addon/Varnish/ServiceProvider.php new file mode 100644 index 0000000..ad5f2e2 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Addon/Varnish/ServiceProvider.php @@ -0,0 +1,36 @@ +getContainer()->add( 'varnish', 'WP_Rocket\Addon\Varnish\Varnish' ); + $this->getContainer()->share( 'varnish_subscriber', 'WP_Rocket\Addon\Varnish\Subscriber' ) + ->withArgument( $this->getContainer()->get( 'varnish' ) ) + ->withArgument( $this->getContainer()->get( 'options' ) ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Addon/Varnish/Subscriber.php b/wp-content/plugins/wp-rocket/inc/Addon/Varnish/Subscriber.php new file mode 100644 index 0000000..225b11e --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Addon/Varnish/Subscriber.php @@ -0,0 +1,117 @@ +varnish = $varnish; + $this->options = $options; + } + + /** + * {@inheritdoc} + */ + public static function get_subscribed_events() { + return [ + 'before_rocket_clean_domain' => [ 'clean_domain', 10, 3 ], + 'before_rocket_clean_file' => [ 'clean_file' ], + 'before_rocket_clean_home' => [ 'clean_home', 10, 2 ], + ]; + } + + /** + * Checks if Varnish cache should be purged + * + * @since 3.5 + * + * @return bool + */ + private function should_purge() { + return ( + /** + * Filters the use of the Varnish compatibility add-on + * + * @param bool $varnish_purge True to use, false otherwise. + */ + apply_filters( 'do_rocket_varnish_http_purge', false ) // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + || + (bool) $this->options->get( 'varnish_auto_purge', 0 ) + ); + } + + /** + * Clears Varnish cache for the whole domain + * + * @param string $root The path of home cache file. + * @param string $lang The current lang to purge. + * @param string $url The home url. + * @return void + */ + public function clean_domain( $root, $lang, $url ) { + if ( ! $this->should_purge() ) { + return; + } + + $this->varnish->purge( trailingslashit( $url ) . '?regex' ); + } + + /** + * Clears a specific page in Varnish cache + * + * @param string $url The url to purge. + * @return void + */ + public function clean_file( $url ) { + if ( ! $this->should_purge() ) { + return; + } + + $this->varnish->purge( trailingslashit( $url ) . '?regex' ); + } + + /** + * Clears the homepage in Varnish cache + * + * @param string $root The path of home cache file. + * @param string $lang The current lang to purge. + * @return void + */ + public function clean_home( $root, $lang ) { + if ( ! $this->should_purge() ) { + return; + } + + $home_url = trailingslashit( get_rocket_i18n_home_url( $lang ) ); + $home_pagination_url = $home_url . trailingslashit( $GLOBALS['wp_rewrite']->pagination_base ) . '?regex'; + + $this->varnish->purge( $home_url ); + $this->varnish->purge( $home_pagination_url ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Addon/Varnish/Varnish.php b/wp-content/plugins/wp-rocket/inc/Addon/Varnish/Varnish.php new file mode 100644 index 0000000..03a136a --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Addon/Varnish/Varnish.php @@ -0,0 +1,129 @@ + apply_filters( 'rocket_varnish_purge_request_host', $parse_url['host'] ), + 'X-Purge-Method' => $x_purge_method, + ] + ); + + /** + * Filters the arguments passed to the Varnish purge request + * + * @since 3.5 + * + * @param array $args Array of arguments for the request. + */ + $args = apply_filters( + 'rocket_varnish_purge_request_args', + [ + 'method' => 'PURGE', + 'blocking' => false, + 'redirection' => 0, + 'headers' => $headers, + ] + ); + + foreach ( $this->get_varnish_ips() as $ip ) { + $host = ! empty( $ip ) ? $ip : str_replace( '*', '', $parse_url['host'] ); + $purge_url_main = $scheme . '://' . $host . $parse_url['path']; + + /** + * Filters the purge url. + * + * @since 3.6.3 + * + * @param string $purge_url_full Full url contains the main url plus regex pattern. + * @param string $purge_url_main Main purge url without any additions params. + * @param string $regex Regex string. + */ + $purge_url = apply_filters( + 'rocket_varnish_purge_url', + $purge_url_main . $regex, + $purge_url_main, + $regex + ); + + wp_remote_request( $purge_url, $args ); + } + } + + /** + * Gets an array of Varnish IPs to send the purge request to + * + * @return array + */ + private function get_varnish_ips() { + /** + * Filter the Varnish IP to call + * + * @since 2.6.8 + * @param string|array $varnish_ip The Varnish IP + */ + $varnish_ip = apply_filters( 'rocket_varnish_ip', [] ); + $constant = rocket_get_constant( 'WP_ROCKET_VARNISH_IP' ); + + if ( + ! empty( $constant ) + && + empty( $varnish_ip ) + ) { + $varnish_ip = $constant; + } + + if ( empty( $varnish_ip ) ) { + $varnish_ip = [ '' ]; + } elseif ( is_string( $varnish_ip ) ) { + $varnish_ip = (array) $varnish_ip; + } + + return $varnish_ip; + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Addon/Varnish/composer.json b/wp-content/plugins/wp-rocket/inc/Addon/Varnish/composer.json new file mode 100644 index 0000000..2b70a94 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Addon/Varnish/composer.json @@ -0,0 +1,54 @@ +{ + "name": "wp-media/module-varnish", + "description": "Varnish Addon for WP Rocket", + "homepage": "https://github.com/wp-media/module-varnish", + "license": "GPL-2.0+", + "authors": [ + { + "name": "WP Media", + "email": "contact@wp-media.me", + "homepage": "https://wp-media.me" + } + ], + "type": "library", + "config": { + "sort-packages": true + }, + "support": { + "issues": "https://github.com/wp-media/module-varnish/issues", + "source": "https://github.com/wp-media/module-varnish" + }, + "require-dev": { + "php": "^5.6 || ^7", + "brain/monkey": "^2.0", + "dealerdirect/phpcodesniffer-composer-installer": "^0.5.0", + "phpcompatibility/phpcompatibility-wp": "^2.0", + "phpstan/phpstan": "^0.12.3", + "phpunit/phpunit": "^5.7 || ^7", + "roave/security-advisories": "dev-master", + "szepeviktor/phpstan-wordpress": "^0.6", + "wp-coding-standards/wpcs": "^2", + "wp-media/event-manager": "^3.1", + "wp-media/module-container": "^2.4", + "wp-media/options": "^3.0", + "wp-media/phpunit": "^1.0" + }, + "autoload": { + "psr-4": { "WP_Rocket\\Addon\\Varnish\\": "." } + }, + "autoload-dev": { + "psr-4": { "WP_Rocket\\Tests\\": "Tests/" } + }, + "scripts": { + "test-unit": "\"vendor/bin/wpmedia-phpunit\" unit path=Tests/Unit", + "test-integration": "\"vendor/bin/wpmedia-phpunit\" integration path=Tests/Integration/", + "run-tests": [ + "@test-unit", + "@test-integration" + ], + "install-codestandards": "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin::run", + "phpcs": "phpcs --basepath=.", + "phpcs-changed": "./bin/phpcs-changed.sh", + "phpcs:fix": "phpcbf" + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Dependencies/Minify/CSS.php b/wp-content/plugins/wp-rocket/inc/Dependencies/Minify/CSS.php new file mode 100644 index 0000000..7a9d463 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Dependencies/Minify/CSS.php @@ -0,0 +1,752 @@ + + * @copyright Copyright (c) 2012, Matthias Mullie. All rights reserved + * @license MIT License + */ + +namespace WP_Rocket\Dependencies\Minify; + +use WP_Rocket\Dependencies\Minify\Exceptions\FileImportException; +use WP_Rocket\Dependencies\PathConverter\ConverterInterface; +use WP_Rocket\Dependencies\PathConverter\Converter; + +/** + * CSS minifier + * + * Please report bugs on https://github.com/matthiasmullie/minify/issues + * + * @package Minify + * @author Matthias Mullie + * @author Tijs Verkoyen + * @copyright Copyright (c) 2012, Matthias Mullie. All rights reserved + * @license MIT License + */ +class CSS extends Minify +{ + /** + * @var int maximum inport size in kB + */ + protected $maxImportSize = 5; + + /** + * @var string[] valid import extensions + */ + protected $importExtensions = array( + 'gif' => 'data:image/gif', + 'png' => 'data:image/png', + 'jpe' => 'data:image/jpeg', + 'jpg' => 'data:image/jpeg', + 'jpeg' => 'data:image/jpeg', + 'svg' => 'data:image/svg+xml', + 'woff' => 'data:application/x-font-woff', + 'tif' => 'image/tiff', + 'tiff' => 'image/tiff', + 'xbm' => 'image/x-xbitmap', + ); + + /** + * Set the maximum size if files to be imported. + * + * Files larger than this size (in kB) will not be imported into the CSS. + * Importing files into the CSS as data-uri will save you some connections, + * but we should only import relatively small decorative images so that our + * CSS file doesn't get too bulky. + * + * @param int $size Size in kB + */ + public function setMaxImportSize($size) + { + $this->maxImportSize = $size; + } + + /** + * Set the type of extensions to be imported into the CSS (to save network + * connections). + * Keys of the array should be the file extensions & respective values + * should be the data type. + * + * @param string[] $extensions Array of file extensions + */ + public function setImportExtensions(array $extensions) + { + $this->importExtensions = $extensions; + } + + /** + * Move any import statements to the top. + * + * @param string $content Nearly finished CSS content + * + * @return string + */ + protected function moveImportsToTop($content) + { + if (preg_match_all('/(;?)(@import (?url\()?(?P["\']?).+?(?P=quotes)(?(url)\)));?/', $content, $matches)) { + // remove from content + foreach ($matches[0] as $import) { + $content = str_replace($import, '', $content); + } + + // add to top + $content = implode(';', $matches[2]).';'.trim($content, ';'); + } + + return $content; + } + + /** + * Combine CSS from import statements. + * + * @import's will be loaded and their content merged into the original file, + * to save HTTP requests. + * + * @param string $source The file to combine imports for + * @param string $content The CSS content to combine imports for + * @param string[] $parents Parent paths, for circular reference checks + * + * @return string + * + * @throws FileImportException + */ + protected function combineImports($source, $content, $parents) + { + $importRegexes = array( + // @import url(xxx) + '/ + # import statement + @import + + # whitespace + \s+ + + # open url() + url\( + + # (optional) open path enclosure + (?P["\']?) + + # fetch path + (?P.+?) + + # (optional) close path enclosure + (?P=quotes) + + # close url() + \) + + # (optional) trailing whitespace + \s* + + # (optional) media statement(s) + (?P[^;]*) + + # (optional) trailing whitespace + \s* + + # (optional) closing semi-colon + ;? + + /ix', + + // @import 'xxx' + '/ + + # import statement + @import + + # whitespace + \s+ + + # open path enclosure + (?P["\']) + + # fetch path + (?P.+?) + + # close path enclosure + (?P=quotes) + + # (optional) trailing whitespace + \s* + + # (optional) media statement(s) + (?P[^;]*) + + # (optional) trailing whitespace + \s* + + # (optional) closing semi-colon + ;? + + /ix', + ); + + // find all relative imports in css + $matches = array(); + foreach ($importRegexes as $importRegex) { + if (preg_match_all($importRegex, $content, $regexMatches, PREG_SET_ORDER)) { + $matches = array_merge($matches, $regexMatches); + } + } + + $search = array(); + $replace = array(); + + // loop the matches + foreach ($matches as $match) { + // get the path for the file that will be imported + $importPath = dirname($source).'/'.$match['path']; + + // only replace the import with the content if we can grab the + // content of the file + if (!$this->canImportByPath($match['path']) || !$this->canImportFile($importPath)) { + continue; + } + + // check if current file was not imported previously in the same + // import chain. + if (in_array($importPath, $parents)) { + throw new FileImportException('Failed to import file "'.$importPath.'": circular reference detected.'); + } + + // grab referenced file & minify it (which may include importing + // yet other @import statements recursively) + $minifier = new static($importPath); + $minifier->setMaxImportSize($this->maxImportSize); + $minifier->setImportExtensions($this->importExtensions); + $importContent = $minifier->execute($source, $parents); + + // check if this is only valid for certain media + if (!empty($match['media'])) { + $importContent = '@media '.$match['media'].'{'.$importContent.'}'; + } + + // add to replacement array + $search[] = $match[0]; + $replace[] = $importContent; + } + + // replace the import statements + return str_replace($search, $replace, $content); + } + + /** + * Import files into the CSS, base64-ized. + * + * @url(image.jpg) images will be loaded and their content merged into the + * original file, to save HTTP requests. + * + * @param string $source The file to import files for + * @param string $content The CSS content to import files for + * + * @return string + */ + protected function importFiles($source, $content) + { + $regex = '/url\((["\']?)(.+?)\\1\)/i'; + if ($this->importExtensions && preg_match_all($regex, $content, $matches, PREG_SET_ORDER)) { + $search = array(); + $replace = array(); + + // loop the matches + foreach ($matches as $match) { + $extension = substr(strrchr($match[2], '.'), 1); + if ($extension && !array_key_exists($extension, $this->importExtensions)) { + continue; + } + + // get the path for the file that will be imported + $path = $match[2]; + $path = dirname($source).'/'.$path; + + // only replace the import with the content if we're able to get + // the content of the file, and it's relatively small + if ($this->canImportFile($path) && $this->canImportBySize($path)) { + // grab content && base64-ize + $importContent = $this->load($path); + $importContent = base64_encode($importContent); + + // build replacement + $search[] = $match[0]; + $replace[] = 'url('.$this->importExtensions[$extension].';base64,'.$importContent.')'; + } + } + + // replace the import statements + $content = str_replace($search, $replace, $content); + } + + return $content; + } + + /** + * Minify the data. + * Perform CSS optimizations. + * + * @param string[optional] $path Path to write the data to + * @param string[] $parents Parent paths, for circular reference checks + * + * @return string The minified data + */ + public function execute($path = null, $parents = array()) + { + $content = ''; + + // loop CSS data (raw data and files) + foreach ($this->data as $source => $css) { + /* + * Let's first take out strings & comments, since we can't just + * remove whitespace anywhere. If whitespace occurs inside a string, + * we should leave it alone. E.g.: + * p { content: "a test" } + */ + $this->extractStrings(); + $this->stripComments(); + $this->extractCalcs(); + $css = $this->replace($css); + + $css = $this->stripWhitespace($css); + $css = $this->shortenColors($css); + $css = $this->shortenZeroes($css); + $css = $this->shortenFontWeights($css); + $css = $this->stripEmptyTags($css); + + // restore the string we've extracted earlier + $css = $this->restoreExtractedData($css); + + $source = is_int($source) ? '' : $source; + $parents = $source ? array_merge($parents, array($source)) : $parents; + $css = $this->combineImports($source, $css, $parents); + $css = $this->importFiles($source, $css); + + /* + * If we'll save to a new path, we'll have to fix the relative paths + * to be relative no longer to the source file, but to the new path. + * If we don't write to a file, fall back to same path so no + * conversion happens (because we still want it to go through most + * of the move code, which also addresses url() & @import syntax...) + */ + $converter = $this->getPathConverter($source, $path ?: $source); + $css = $this->move($converter, $css); + + // combine css + $content .= $css; + } + + $content = $this->moveImportsToTop($content); + + return $content; + } + + /** + * Moving a css file should update all relative urls. + * Relative references (e.g. ../images/image.gif) in a certain css file, + * will have to be updated when a file is being saved at another location + * (e.g. ../../images/image.gif, if the new CSS file is 1 folder deeper). + * + * @param ConverterInterface $converter Relative path converter + * @param string $content The CSS content to update relative urls for + * + * @return string + */ + protected function move(ConverterInterface $converter, $content) + { + /* + * Relative path references will usually be enclosed by url(). @import + * is an exception, where url() is not necessary around the path (but is + * allowed). + * This *could* be 1 regular expression, where both regular expressions + * in this array are on different sides of a |. But we're using named + * patterns in both regexes, the same name on both regexes. This is only + * possible with a (?J) modifier, but that only works after a fairly + * recent PCRE version. That's why I'm doing 2 separate regular + * expressions & combining the matches after executing of both. + */ + $relativeRegexes = array( + // url(xxx) + '/ + # open url() + url\( + + \s* + + # open path enclosure + (?P["\'])? + + # fetch path + (?P.+?) + + # close path enclosure + (?(quotes)(?P=quotes)) + + \s* + + # close url() + \) + + /ix', + + // @import "xxx" + '/ + # import statement + @import + + # whitespace + \s+ + + # we don\'t have to check for @import url(), because the + # condition above will already catch these + + # open path enclosure + (?P["\']) + + # fetch path + (?P.+?) + + # close path enclosure + (?P=quotes) + + /ix', + ); + + // find all relative urls in css + $matches = array(); + foreach ($relativeRegexes as $relativeRegex) { + if (preg_match_all($relativeRegex, $content, $regexMatches, PREG_SET_ORDER)) { + $matches = array_merge($matches, $regexMatches); + } + } + + $search = array(); + $replace = array(); + + // loop all urls + foreach ($matches as $match) { + // determine if it's a url() or an @import match + $type = (strpos($match[0], '@import') === 0 ? 'import' : 'url'); + + $url = $match['path']; + if ($this->canImportByPath($url)) { + // attempting to interpret GET-params makes no sense, so let's discard them for awhile + $params = strrchr($url, '?'); + $url = $params ? substr($url, 0, -strlen($params)) : $url; + + // fix relative url + $url = $converter->convert($url); + + // now that the path has been converted, re-apply GET-params + $url .= $params; + } + + /* + * Urls with control characters above 0x7e should be quoted. + * According to Mozilla's parser, whitespace is only allowed at the + * end of unquoted urls. + * Urls with `)` (as could happen with data: uris) should also be + * quoted to avoid being confused for the url() closing parentheses. + * And urls with a # have also been reported to cause issues. + * Urls with quotes inside should also remain escaped. + * + * @see https://developer.mozilla.org/nl/docs/Web/CSS/url#The_url()_functional_notation + * @see https://hg.mozilla.org/mozilla-central/rev/14abca4e7378 + * @see https://github.com/matthiasmullie/minify/issues/193 + */ + $url = trim($url); + if (preg_match('/[\s\)\'"#\x{7f}-\x{9f}]/u', $url)) { + $url = $match['quotes'] . $url . $match['quotes']; + } + + // build replacement + $search[] = $match[0]; + if ($type === 'url') { + $replace[] = 'url('.$url.')'; + } elseif ($type === 'import') { + $replace[] = '@import "'.$url.'"'; + } + } + + // replace urls + return str_replace($search, $replace, $content); + } + + /** + * Shorthand hex color codes. + * #FF0000 -> #F00. + * + * @param string $content The CSS content to shorten the hex color codes for + * + * @return string + */ + protected function shortenColors($content) + { + $content = preg_replace('/(?<=[: ])#([0-9a-z])\\1([0-9a-z])\\2([0-9a-z])\\3(?:([0-9a-z])\\4)?(?=[; }])/i', '#$1$2$3$4', $content); + + // remove alpha channel if it's pointless... + $content = preg_replace('/(?<=[: ])#([0-9a-z]{6})ff?(?=[; }])/i', '#$1', $content); + $content = preg_replace('/(?<=[: ])#([0-9a-z]{3})f?(?=[; }])/i', '#$1', $content); + + $colors = array( + // we can shorten some even more by replacing them with their color name + '#F0FFFF' => 'azure', + '#F5F5DC' => 'beige', + '#A52A2A' => 'brown', + '#FF7F50' => 'coral', + '#FFD700' => 'gold', + '#808080' => 'gray', + '#008000' => 'green', + '#4B0082' => 'indigo', + '#FFFFF0' => 'ivory', + '#F0E68C' => 'khaki', + '#FAF0E6' => 'linen', + '#800000' => 'maroon', + '#000080' => 'navy', + '#808000' => 'olive', + '#CD853F' => 'peru', + '#FFC0CB' => 'pink', + '#DDA0DD' => 'plum', + '#800080' => 'purple', + '#F00' => 'red', + '#FA8072' => 'salmon', + '#A0522D' => 'sienna', + '#C0C0C0' => 'silver', + '#FFFAFA' => 'snow', + '#D2B48C' => 'tan', + '#FF6347' => 'tomato', + '#EE82EE' => 'violet', + '#F5DEB3' => 'wheat', + // or the other way around + 'WHITE' => '#fff', + 'BLACK' => '#000', + ); + + return preg_replace_callback( + '/(?<=[: ])('.implode('|', array_keys($colors)).')(?=[; }])/i', + function ($match) use ($colors) { + return $colors[strtoupper($match[0])]; + }, + $content + ); + } + + /** + * Shorten CSS font weights. + * + * @param string $content The CSS content to shorten the font weights for + * + * @return string + */ + protected function shortenFontWeights($content) + { + $weights = array( + 'normal' => 400, + 'bold' => 700, + ); + + $callback = function ($match) use ($weights) { + return $match[1].$weights[$match[2]]; + }; + + return preg_replace_callback('/(font-weight\s*:\s*)('.implode('|', array_keys($weights)).')(?=[;}])/', $callback, $content); + } + + /** + * Shorthand 0 values to plain 0, instead of e.g. -0em. + * + * @param string $content The CSS content to shorten the zero values for + * + * @return string + */ + protected function shortenZeroes($content) + { + // we don't want to strip units in `calc()` expressions: + // `5px - 0px` is valid, but `5px - 0` is not + // `10px * 0` is valid (equates to 0), and so is `10 * 0px`, but + // `10 * 0` is invalid + // we've extracted calcs earlier, so we don't need to worry about this + + // reusable bits of code throughout these regexes: + // before & after are used to make sure we don't match lose unintended + // 0-like values (e.g. in #000, or in http://url/1.0) + // units can be stripped from 0 values, or used to recognize non 0 + // values (where wa may be able to strip a .0 suffix) + $before = '(?<=[:(, ])'; + $after = '(?=[ ,);}])'; + $units = '(em|ex|%|px|cm|mm|in|pt|pc|ch|rem|vh|vw|vmin|vmax|vm)'; + + // strip units after zeroes (0px -> 0) + // NOTE: it should be safe to remove all units for a 0 value, but in + // practice, Webkit (especially Safari) seems to stumble over at least + // 0%, potentially other units as well. Only stripping 'px' for now. + // @see https://github.com/matthiasmullie/minify/issues/60 + $content = preg_replace('/'.$before.'(-?0*(\.0+)?)(?<=0)px'.$after.'/', '\\1', $content); + + // strip 0-digits (.0 -> 0) + $content = preg_replace('/'.$before.'\.0+'.$units.'?'.$after.'/', '0\\1', $content); + // strip trailing 0: 50.10 -> 50.1, 50.10px -> 50.1px + $content = preg_replace('/'.$before.'(-?[0-9]+\.[0-9]+)0+'.$units.'?'.$after.'/', '\\1\\2', $content); + // strip trailing 0: 50.00 -> 50, 50.00px -> 50px + $content = preg_replace('/'.$before.'(-?[0-9]+)\.0+'.$units.'?'.$after.'/', '\\1\\2', $content); + // strip leading 0: 0.1 -> .1, 01.1 -> 1.1 + $content = preg_replace('/'.$before.'(-?)0+([0-9]*\.[0-9]+)'.$units.'?'.$after.'/', '\\1\\2\\3', $content); + + // strip negative zeroes (-0 -> 0) & truncate zeroes (00 -> 0) + $content = preg_replace('/'.$before.'-?0+'.$units.'?'.$after.'/', '0\\1', $content); + + // IE doesn't seem to understand a unitless flex-basis value (correct - + // it goes against the spec), so let's add it in again (make it `%`, + // which is only 1 char: 0%, 0px, 0 anything, it's all just the same) + // @see https://developer.mozilla.org/nl/docs/Web/CSS/flex + $content = preg_replace('/flex:([0-9]+\s[0-9]+\s)0([;\}])/', 'flex:${1}0%${2}', $content); + $content = preg_replace('/flex-basis:0([;\}])/', 'flex-basis:0%${1}', $content); + + return $content; + } + + /** + * Strip empty tags from source code. + * + * @param string $content + * + * @return string + */ + protected function stripEmptyTags($content) + { + $content = preg_replace('/(?<=^)[^\{\};]+\{\s*\}/', '', $content); + $content = preg_replace('/(?<=(\}|;))[^\{\};]+\{\s*\}/', '', $content); + + return $content; + } + + /** + * Strip comments from source code. + */ + protected function stripComments() + { + // PHP only supports $this inside anonymous functions since 5.4 + $minifier = $this; + $callback = function ($match) use ($minifier) { + $count = count($minifier->extracted); + $placeholder = '/*'.$count.'*/'; + $minifier->extracted[$placeholder] = $match[0]; + + return $placeholder; + }; + $this->registerPattern('/\n?\/\*(!|.*?@license|.*?@preserve).*?\*\/\n?/s', $callback); + + $this->registerPattern('/\/\*.*?\*\//s', ''); + } + + /** + * Strip whitespace. + * + * @param string $content The CSS content to strip the whitespace for + * + * @return string + */ + protected function stripWhitespace($content) + { + // remove leading & trailing whitespace + $content = preg_replace('/^\s*/m', '', $content); + $content = preg_replace('/\s*$/m', '', $content); + + // replace newlines with a single space + $content = preg_replace('/\s+/', ' ', $content); + + // remove whitespace around meta characters + // inspired by stackoverflow.com/questions/15195750/minify-compress-css-with-regex + $content = preg_replace('/\s*([\*$~^|]?+=|[{};,>~]|!important\b)\s*/', '$1', $content); + $content = preg_replace('/([\[(:>\+])\s+/', '$1', $content); + $content = preg_replace('/\s+([\]\)>\+])/', '$1', $content); + $content = preg_replace('/\s+(:)(?![^\}]*\{)/', '$1', $content); + + // whitespace around + and - can only be stripped inside some pseudo- + // classes, like `:nth-child(3+2n)` + // not in things like `calc(3px + 2px)`, shorthands like `3px -2px`, or + // selectors like `div.weird- p` + $pseudos = array('nth-child', 'nth-last-child', 'nth-last-of-type', 'nth-of-type'); + $content = preg_replace('/:('.implode('|', $pseudos).')\(\s*([+-]?)\s*(.+?)\s*([+-]?)\s*(.*?)\s*\)/', ':$1($2$3$4$5)', $content); + + // remove semicolon/whitespace followed by closing bracket + $content = str_replace(';}', '}', $content); + + return trim($content); + } + + /** + * Replace all `calc()` occurrences. + */ + protected function extractCalcs() + { + // PHP only supports $this inside anonymous functions since 5.4 + $minifier = $this; + $callback = function ($match) use ($minifier) { + $length = strlen($match[1]); + $expr = ''; + $opened = 0; + + for ($i = 0; $i < $length; $i++) { + $char = $match[1][$i]; + $expr .= $char; + if ($char === '(') { + $opened++; + } elseif ($char === ')' && --$opened === 0) { + break; + } + } + $rest = str_replace($expr, '', $match[1]); + $expr = trim(substr($expr, 1, -1)); + + $count = count($minifier->extracted); + $placeholder = 'calc('.$count.')'; + $minifier->extracted[$placeholder] = 'calc('.$expr.')'; + + return $placeholder.$rest; + }; + + $this->registerPattern('/calc(\(.+?)(?=$|;|}|calc\()/', $callback); + $this->registerPattern('/calc(\(.+?)(?=$|;|}|calc\()/m', $callback); + } + + /** + * Check if file is small enough to be imported. + * + * @param string $path The path to the file + * + * @return bool + */ + protected function canImportBySize($path) + { + return ($size = @filesize($path)) && $size <= $this->maxImportSize * 1024; + } + + /** + * Check if file a file can be imported, going by the path. + * + * @param string $path + * + * @return bool + */ + protected function canImportByPath($path) + { + return preg_match('/^(data:|https?:|\\/)/', $path) === 0; + } + + /** + * Return a converter to update relative paths to be relative to the new + * destination. + * + * @param string $source + * @param string $target + * + * @return ConverterInterface + */ + protected function getPathConverter($source, $target) + { + return new Converter($source, $target); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Dependencies/Minify/Exception.php b/wp-content/plugins/wp-rocket/inc/Dependencies/Minify/Exception.php new file mode 100644 index 0000000..46ede5d --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Dependencies/Minify/Exception.php @@ -0,0 +1,20 @@ + + */ +namespace WP_Rocket\Dependencies\Minify; + +/** + * Base Exception Class + * @deprecated Use Exceptions\BasicException instead + * + * @package Minify + * @author Matthias Mullie + */ +abstract class Exception extends \Exception +{ +} diff --git a/wp-content/plugins/wp-rocket/inc/Dependencies/Minify/Exceptions/BasicException.php b/wp-content/plugins/wp-rocket/inc/Dependencies/Minify/Exceptions/BasicException.php new file mode 100644 index 0000000..4d6dfca --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Dependencies/Minify/Exceptions/BasicException.php @@ -0,0 +1,23 @@ + + * @copyright Copyright (c) 2012, Matthias Mullie. All rights reserved + * @license MIT License + */ +namespace WP_Rocket\Dependencies\Minify\Exceptions; + +use WP_Rocket\Dependencies\Minify\Exception; + +/** + * Basic Exception Class + * + * @package Minify\Exception + * @author Matthias Mullie + */ +abstract class BasicException extends Exception +{ +} diff --git a/wp-content/plugins/wp-rocket/inc/Dependencies/Minify/Exceptions/FileImportException.php b/wp-content/plugins/wp-rocket/inc/Dependencies/Minify/Exceptions/FileImportException.php new file mode 100644 index 0000000..b5f9e30 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Dependencies/Minify/Exceptions/FileImportException.php @@ -0,0 +1,21 @@ + + * @copyright Copyright (c) 2012, Matthias Mullie. All rights reserved + * @license MIT License + */ +namespace WP_Rocket\Dependencies\Minify\Exceptions; + +/** + * File Import Exception Class + * + * @package Minify\Exception + * @author Matthias Mullie + */ +class FileImportException extends BasicException +{ +} diff --git a/wp-content/plugins/wp-rocket/inc/Dependencies/Minify/Exceptions/IOException.php b/wp-content/plugins/wp-rocket/inc/Dependencies/Minify/Exceptions/IOException.php new file mode 100644 index 0000000..5bc6bfb --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Dependencies/Minify/Exceptions/IOException.php @@ -0,0 +1,21 @@ + + * @copyright Copyright (c) 2012, Matthias Mullie. All rights reserved + * @license MIT License + */ +namespace WP_Rocket\Dependencies\Minify\Exceptions; + +/** + * IO Exception Class + * + * @package Minify\Exception + * @author Matthias Mullie + */ +class IOException extends BasicException +{ +} diff --git a/wp-content/plugins/wp-rocket/inc/Dependencies/Minify/JS.php b/wp-content/plugins/wp-rocket/inc/Dependencies/Minify/JS.php new file mode 100644 index 0000000..1925061 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Dependencies/Minify/JS.php @@ -0,0 +1,612 @@ + + * @copyright Copyright (c) 2012, Matthias Mullie. All rights reserved + * @license MIT License + */ +namespace WP_Rocket\Dependencies\Minify; + +/** + * JavaScript Minifier Class + * + * Please report bugs on https://github.com/matthiasmullie/minify/issues + * + * @package Minify + * @author Matthias Mullie + * @author Tijs Verkoyen + * @copyright Copyright (c) 2012, Matthias Mullie. All rights reserved + * @license MIT License + */ +class JS extends Minify +{ + /** + * Var-matching regex based on http://stackoverflow.com/a/9337047/802993. + * + * Note that regular expressions using that bit must have the PCRE_UTF8 + * pattern modifier (/u) set. + * + * @var string + */ + const REGEX_VARIABLE = '\b[$A-Z\_a-z\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\x{02c1}\x{02c6}-\x{02d1}\x{02e0}-\x{02e4}\x{02ec}\x{02ee}\x{0370}-\x{0374}\x{0376}\x{0377}\x{037a}-\x{037d}\x{0386}\x{0388}-\x{038a}\x{038c}\x{038e}-\x{03a1}\x{03a3}-\x{03f5}\x{03f7}-\x{0481}\x{048a}-\x{0527}\x{0531}-\x{0556}\x{0559}\x{0561}-\x{0587}\x{05d0}-\x{05ea}\x{05f0}-\x{05f2}\x{0620}-\x{064a}\x{066e}\x{066f}\x{0671}-\x{06d3}\x{06d5}\x{06e5}\x{06e6}\x{06ee}\x{06ef}\x{06fa}-\x{06fc}\x{06ff}\x{0710}\x{0712}-\x{072f}\x{074d}-\x{07a5}\x{07b1}\x{07ca}-\x{07ea}\x{07f4}\x{07f5}\x{07fa}\x{0800}-\x{0815}\x{081a}\x{0824}\x{0828}\x{0840}-\x{0858}\x{08a0}\x{08a2}-\x{08ac}\x{0904}-\x{0939}\x{093d}\x{0950}\x{0958}-\x{0961}\x{0971}-\x{0977}\x{0979}-\x{097f}\x{0985}-\x{098c}\x{098f}\x{0990}\x{0993}-\x{09a8}\x{09aa}-\x{09b0}\x{09b2}\x{09b6}-\x{09b9}\x{09bd}\x{09ce}\x{09dc}\x{09dd}\x{09df}-\x{09e1}\x{09f0}\x{09f1}\x{0a05}-\x{0a0a}\x{0a0f}\x{0a10}\x{0a13}-\x{0a28}\x{0a2a}-\x{0a30}\x{0a32}\x{0a33}\x{0a35}\x{0a36}\x{0a38}\x{0a39}\x{0a59}-\x{0a5c}\x{0a5e}\x{0a72}-\x{0a74}\x{0a85}-\x{0a8d}\x{0a8f}-\x{0a91}\x{0a93}-\x{0aa8}\x{0aaa}-\x{0ab0}\x{0ab2}\x{0ab3}\x{0ab5}-\x{0ab9}\x{0abd}\x{0ad0}\x{0ae0}\x{0ae1}\x{0b05}-\x{0b0c}\x{0b0f}\x{0b10}\x{0b13}-\x{0b28}\x{0b2a}-\x{0b30}\x{0b32}\x{0b33}\x{0b35}-\x{0b39}\x{0b3d}\x{0b5c}\x{0b5d}\x{0b5f}-\x{0b61}\x{0b71}\x{0b83}\x{0b85}-\x{0b8a}\x{0b8e}-\x{0b90}\x{0b92}-\x{0b95}\x{0b99}\x{0b9a}\x{0b9c}\x{0b9e}\x{0b9f}\x{0ba3}\x{0ba4}\x{0ba8}-\x{0baa}\x{0bae}-\x{0bb9}\x{0bd0}\x{0c05}-\x{0c0c}\x{0c0e}-\x{0c10}\x{0c12}-\x{0c28}\x{0c2a}-\x{0c33}\x{0c35}-\x{0c39}\x{0c3d}\x{0c58}\x{0c59}\x{0c60}\x{0c61}\x{0c85}-\x{0c8c}\x{0c8e}-\x{0c90}\x{0c92}-\x{0ca8}\x{0caa}-\x{0cb3}\x{0cb5}-\x{0cb9}\x{0cbd}\x{0cde}\x{0ce0}\x{0ce1}\x{0cf1}\x{0cf2}\x{0d05}-\x{0d0c}\x{0d0e}-\x{0d10}\x{0d12}-\x{0d3a}\x{0d3d}\x{0d4e}\x{0d60}\x{0d61}\x{0d7a}-\x{0d7f}\x{0d85}-\x{0d96}\x{0d9a}-\x{0db1}\x{0db3}-\x{0dbb}\x{0dbd}\x{0dc0}-\x{0dc6}\x{0e01}-\x{0e30}\x{0e32}\x{0e33}\x{0e40}-\x{0e46}\x{0e81}\x{0e82}\x{0e84}\x{0e87}\x{0e88}\x{0e8a}\x{0e8d}\x{0e94}-\x{0e97}\x{0e99}-\x{0e9f}\x{0ea1}-\x{0ea3}\x{0ea5}\x{0ea7}\x{0eaa}\x{0eab}\x{0ead}-\x{0eb0}\x{0eb2}\x{0eb3}\x{0ebd}\x{0ec0}-\x{0ec4}\x{0ec6}\x{0edc}-\x{0edf}\x{0f00}\x{0f40}-\x{0f47}\x{0f49}-\x{0f6c}\x{0f88}-\x{0f8c}\x{1000}-\x{102a}\x{103f}\x{1050}-\x{1055}\x{105a}-\x{105d}\x{1061}\x{1065}\x{1066}\x{106e}-\x{1070}\x{1075}-\x{1081}\x{108e}\x{10a0}-\x{10c5}\x{10c7}\x{10cd}\x{10d0}-\x{10fa}\x{10fc}-\x{1248}\x{124a}-\x{124d}\x{1250}-\x{1256}\x{1258}\x{125a}-\x{125d}\x{1260}-\x{1288}\x{128a}-\x{128d}\x{1290}-\x{12b0}\x{12b2}-\x{12b5}\x{12b8}-\x{12be}\x{12c0}\x{12c2}-\x{12c5}\x{12c8}-\x{12d6}\x{12d8}-\x{1310}\x{1312}-\x{1315}\x{1318}-\x{135a}\x{1380}-\x{138f}\x{13a0}-\x{13f4}\x{1401}-\x{166c}\x{166f}-\x{167f}\x{1681}-\x{169a}\x{16a0}-\x{16ea}\x{16ee}-\x{16f0}\x{1700}-\x{170c}\x{170e}-\x{1711}\x{1720}-\x{1731}\x{1740}-\x{1751}\x{1760}-\x{176c}\x{176e}-\x{1770}\x{1780}-\x{17b3}\x{17d7}\x{17dc}\x{1820}-\x{1877}\x{1880}-\x{18a8}\x{18aa}\x{18b0}-\x{18f5}\x{1900}-\x{191c}\x{1950}-\x{196d}\x{1970}-\x{1974}\x{1980}-\x{19ab}\x{19c1}-\x{19c7}\x{1a00}-\x{1a16}\x{1a20}-\x{1a54}\x{1aa7}\x{1b05}-\x{1b33}\x{1b45}-\x{1b4b}\x{1b83}-\x{1ba0}\x{1bae}\x{1baf}\x{1bba}-\x{1be5}\x{1c00}-\x{1c23}\x{1c4d}-\x{1c4f}\x{1c5a}-\x{1c7d}\x{1ce9}-\x{1cec}\x{1cee}-\x{1cf1}\x{1cf5}\x{1cf6}\x{1d00}-\x{1dbf}\x{1e00}-\x{1f15}\x{1f18}-\x{1f1d}\x{1f20}-\x{1f45}\x{1f48}-\x{1f4d}\x{1f50}-\x{1f57}\x{1f59}\x{1f5b}\x{1f5d}\x{1f5f}-\x{1f7d}\x{1f80}-\x{1fb4}\x{1fb6}-\x{1fbc}\x{1fbe}\x{1fc2}-\x{1fc4}\x{1fc6}-\x{1fcc}\x{1fd0}-\x{1fd3}\x{1fd6}-\x{1fdb}\x{1fe0}-\x{1fec}\x{1ff2}-\x{1ff4}\x{1ff6}-\x{1ffc}\x{2071}\x{207f}\x{2090}-\x{209c}\x{2102}\x{2107}\x{210a}-\x{2113}\x{2115}\x{2119}-\x{211d}\x{2124}\x{2126}\x{2128}\x{212a}-\x{212d}\x{212f}-\x{2139}\x{213c}-\x{213f}\x{2145}-\x{2149}\x{214e}\x{2160}-\x{2188}\x{2c00}-\x{2c2e}\x{2c30}-\x{2c5e}\x{2c60}-\x{2ce4}\x{2ceb}-\x{2cee}\x{2cf2}\x{2cf3}\x{2d00}-\x{2d25}\x{2d27}\x{2d2d}\x{2d30}-\x{2d67}\x{2d6f}\x{2d80}-\x{2d96}\x{2da0}-\x{2da6}\x{2da8}-\x{2dae}\x{2db0}-\x{2db6}\x{2db8}-\x{2dbe}\x{2dc0}-\x{2dc6}\x{2dc8}-\x{2dce}\x{2dd0}-\x{2dd6}\x{2dd8}-\x{2dde}\x{2e2f}\x{3005}-\x{3007}\x{3021}-\x{3029}\x{3031}-\x{3035}\x{3038}-\x{303c}\x{3041}-\x{3096}\x{309d}-\x{309f}\x{30a1}-\x{30fa}\x{30fc}-\x{30ff}\x{3105}-\x{312d}\x{3131}-\x{318e}\x{31a0}-\x{31ba}\x{31f0}-\x{31ff}\x{3400}-\x{4db5}\x{4e00}-\x{9fcc}\x{a000}-\x{a48c}\x{a4d0}-\x{a4fd}\x{a500}-\x{a60c}\x{a610}-\x{a61f}\x{a62a}\x{a62b}\x{a640}-\x{a66e}\x{a67f}-\x{a697}\x{a6a0}-\x{a6ef}\x{a717}-\x{a71f}\x{a722}-\x{a788}\x{a78b}-\x{a78e}\x{a790}-\x{a793}\x{a7a0}-\x{a7aa}\x{a7f8}-\x{a801}\x{a803}-\x{a805}\x{a807}-\x{a80a}\x{a80c}-\x{a822}\x{a840}-\x{a873}\x{a882}-\x{a8b3}\x{a8f2}-\x{a8f7}\x{a8fb}\x{a90a}-\x{a925}\x{a930}-\x{a946}\x{a960}-\x{a97c}\x{a984}-\x{a9b2}\x{a9cf}\x{aa00}-\x{aa28}\x{aa40}-\x{aa42}\x{aa44}-\x{aa4b}\x{aa60}-\x{aa76}\x{aa7a}\x{aa80}-\x{aaaf}\x{aab1}\x{aab5}\x{aab6}\x{aab9}-\x{aabd}\x{aac0}\x{aac2}\x{aadb}-\x{aadd}\x{aae0}-\x{aaea}\x{aaf2}-\x{aaf4}\x{ab01}-\x{ab06}\x{ab09}-\x{ab0e}\x{ab11}-\x{ab16}\x{ab20}-\x{ab26}\x{ab28}-\x{ab2e}\x{abc0}-\x{abe2}\x{ac00}-\x{d7a3}\x{d7b0}-\x{d7c6}\x{d7cb}-\x{d7fb}\x{f900}-\x{fa6d}\x{fa70}-\x{fad9}\x{fb00}-\x{fb06}\x{fb13}-\x{fb17}\x{fb1d}\x{fb1f}-\x{fb28}\x{fb2a}-\x{fb36}\x{fb38}-\x{fb3c}\x{fb3e}\x{fb40}\x{fb41}\x{fb43}\x{fb44}\x{fb46}-\x{fbb1}\x{fbd3}-\x{fd3d}\x{fd50}-\x{fd8f}\x{fd92}-\x{fdc7}\x{fdf0}-\x{fdfb}\x{fe70}-\x{fe74}\x{fe76}-\x{fefc}\x{ff21}-\x{ff3a}\x{ff41}-\x{ff5a}\x{ff66}-\x{ffbe}\x{ffc2}-\x{ffc7}\x{ffca}-\x{ffcf}\x{ffd2}-\x{ffd7}\x{ffda}-\x{ffdc}][$A-Z\_a-z\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\x{02c1}\x{02c6}-\x{02d1}\x{02e0}-\x{02e4}\x{02ec}\x{02ee}\x{0370}-\x{0374}\x{0376}\x{0377}\x{037a}-\x{037d}\x{0386}\x{0388}-\x{038a}\x{038c}\x{038e}-\x{03a1}\x{03a3}-\x{03f5}\x{03f7}-\x{0481}\x{048a}-\x{0527}\x{0531}-\x{0556}\x{0559}\x{0561}-\x{0587}\x{05d0}-\x{05ea}\x{05f0}-\x{05f2}\x{0620}-\x{064a}\x{066e}\x{066f}\x{0671}-\x{06d3}\x{06d5}\x{06e5}\x{06e6}\x{06ee}\x{06ef}\x{06fa}-\x{06fc}\x{06ff}\x{0710}\x{0712}-\x{072f}\x{074d}-\x{07a5}\x{07b1}\x{07ca}-\x{07ea}\x{07f4}\x{07f5}\x{07fa}\x{0800}-\x{0815}\x{081a}\x{0824}\x{0828}\x{0840}-\x{0858}\x{08a0}\x{08a2}-\x{08ac}\x{0904}-\x{0939}\x{093d}\x{0950}\x{0958}-\x{0961}\x{0971}-\x{0977}\x{0979}-\x{097f}\x{0985}-\x{098c}\x{098f}\x{0990}\x{0993}-\x{09a8}\x{09aa}-\x{09b0}\x{09b2}\x{09b6}-\x{09b9}\x{09bd}\x{09ce}\x{09dc}\x{09dd}\x{09df}-\x{09e1}\x{09f0}\x{09f1}\x{0a05}-\x{0a0a}\x{0a0f}\x{0a10}\x{0a13}-\x{0a28}\x{0a2a}-\x{0a30}\x{0a32}\x{0a33}\x{0a35}\x{0a36}\x{0a38}\x{0a39}\x{0a59}-\x{0a5c}\x{0a5e}\x{0a72}-\x{0a74}\x{0a85}-\x{0a8d}\x{0a8f}-\x{0a91}\x{0a93}-\x{0aa8}\x{0aaa}-\x{0ab0}\x{0ab2}\x{0ab3}\x{0ab5}-\x{0ab9}\x{0abd}\x{0ad0}\x{0ae0}\x{0ae1}\x{0b05}-\x{0b0c}\x{0b0f}\x{0b10}\x{0b13}-\x{0b28}\x{0b2a}-\x{0b30}\x{0b32}\x{0b33}\x{0b35}-\x{0b39}\x{0b3d}\x{0b5c}\x{0b5d}\x{0b5f}-\x{0b61}\x{0b71}\x{0b83}\x{0b85}-\x{0b8a}\x{0b8e}-\x{0b90}\x{0b92}-\x{0b95}\x{0b99}\x{0b9a}\x{0b9c}\x{0b9e}\x{0b9f}\x{0ba3}\x{0ba4}\x{0ba8}-\x{0baa}\x{0bae}-\x{0bb9}\x{0bd0}\x{0c05}-\x{0c0c}\x{0c0e}-\x{0c10}\x{0c12}-\x{0c28}\x{0c2a}-\x{0c33}\x{0c35}-\x{0c39}\x{0c3d}\x{0c58}\x{0c59}\x{0c60}\x{0c61}\x{0c85}-\x{0c8c}\x{0c8e}-\x{0c90}\x{0c92}-\x{0ca8}\x{0caa}-\x{0cb3}\x{0cb5}-\x{0cb9}\x{0cbd}\x{0cde}\x{0ce0}\x{0ce1}\x{0cf1}\x{0cf2}\x{0d05}-\x{0d0c}\x{0d0e}-\x{0d10}\x{0d12}-\x{0d3a}\x{0d3d}\x{0d4e}\x{0d60}\x{0d61}\x{0d7a}-\x{0d7f}\x{0d85}-\x{0d96}\x{0d9a}-\x{0db1}\x{0db3}-\x{0dbb}\x{0dbd}\x{0dc0}-\x{0dc6}\x{0e01}-\x{0e30}\x{0e32}\x{0e33}\x{0e40}-\x{0e46}\x{0e81}\x{0e82}\x{0e84}\x{0e87}\x{0e88}\x{0e8a}\x{0e8d}\x{0e94}-\x{0e97}\x{0e99}-\x{0e9f}\x{0ea1}-\x{0ea3}\x{0ea5}\x{0ea7}\x{0eaa}\x{0eab}\x{0ead}-\x{0eb0}\x{0eb2}\x{0eb3}\x{0ebd}\x{0ec0}-\x{0ec4}\x{0ec6}\x{0edc}-\x{0edf}\x{0f00}\x{0f40}-\x{0f47}\x{0f49}-\x{0f6c}\x{0f88}-\x{0f8c}\x{1000}-\x{102a}\x{103f}\x{1050}-\x{1055}\x{105a}-\x{105d}\x{1061}\x{1065}\x{1066}\x{106e}-\x{1070}\x{1075}-\x{1081}\x{108e}\x{10a0}-\x{10c5}\x{10c7}\x{10cd}\x{10d0}-\x{10fa}\x{10fc}-\x{1248}\x{124a}-\x{124d}\x{1250}-\x{1256}\x{1258}\x{125a}-\x{125d}\x{1260}-\x{1288}\x{128a}-\x{128d}\x{1290}-\x{12b0}\x{12b2}-\x{12b5}\x{12b8}-\x{12be}\x{12c0}\x{12c2}-\x{12c5}\x{12c8}-\x{12d6}\x{12d8}-\x{1310}\x{1312}-\x{1315}\x{1318}-\x{135a}\x{1380}-\x{138f}\x{13a0}-\x{13f4}\x{1401}-\x{166c}\x{166f}-\x{167f}\x{1681}-\x{169a}\x{16a0}-\x{16ea}\x{16ee}-\x{16f0}\x{1700}-\x{170c}\x{170e}-\x{1711}\x{1720}-\x{1731}\x{1740}-\x{1751}\x{1760}-\x{176c}\x{176e}-\x{1770}\x{1780}-\x{17b3}\x{17d7}\x{17dc}\x{1820}-\x{1877}\x{1880}-\x{18a8}\x{18aa}\x{18b0}-\x{18f5}\x{1900}-\x{191c}\x{1950}-\x{196d}\x{1970}-\x{1974}\x{1980}-\x{19ab}\x{19c1}-\x{19c7}\x{1a00}-\x{1a16}\x{1a20}-\x{1a54}\x{1aa7}\x{1b05}-\x{1b33}\x{1b45}-\x{1b4b}\x{1b83}-\x{1ba0}\x{1bae}\x{1baf}\x{1bba}-\x{1be5}\x{1c00}-\x{1c23}\x{1c4d}-\x{1c4f}\x{1c5a}-\x{1c7d}\x{1ce9}-\x{1cec}\x{1cee}-\x{1cf1}\x{1cf5}\x{1cf6}\x{1d00}-\x{1dbf}\x{1e00}-\x{1f15}\x{1f18}-\x{1f1d}\x{1f20}-\x{1f45}\x{1f48}-\x{1f4d}\x{1f50}-\x{1f57}\x{1f59}\x{1f5b}\x{1f5d}\x{1f5f}-\x{1f7d}\x{1f80}-\x{1fb4}\x{1fb6}-\x{1fbc}\x{1fbe}\x{1fc2}-\x{1fc4}\x{1fc6}-\x{1fcc}\x{1fd0}-\x{1fd3}\x{1fd6}-\x{1fdb}\x{1fe0}-\x{1fec}\x{1ff2}-\x{1ff4}\x{1ff6}-\x{1ffc}\x{2071}\x{207f}\x{2090}-\x{209c}\x{2102}\x{2107}\x{210a}-\x{2113}\x{2115}\x{2119}-\x{211d}\x{2124}\x{2126}\x{2128}\x{212a}-\x{212d}\x{212f}-\x{2139}\x{213c}-\x{213f}\x{2145}-\x{2149}\x{214e}\x{2160}-\x{2188}\x{2c00}-\x{2c2e}\x{2c30}-\x{2c5e}\x{2c60}-\x{2ce4}\x{2ceb}-\x{2cee}\x{2cf2}\x{2cf3}\x{2d00}-\x{2d25}\x{2d27}\x{2d2d}\x{2d30}-\x{2d67}\x{2d6f}\x{2d80}-\x{2d96}\x{2da0}-\x{2da6}\x{2da8}-\x{2dae}\x{2db0}-\x{2db6}\x{2db8}-\x{2dbe}\x{2dc0}-\x{2dc6}\x{2dc8}-\x{2dce}\x{2dd0}-\x{2dd6}\x{2dd8}-\x{2dde}\x{2e2f}\x{3005}-\x{3007}\x{3021}-\x{3029}\x{3031}-\x{3035}\x{3038}-\x{303c}\x{3041}-\x{3096}\x{309d}-\x{309f}\x{30a1}-\x{30fa}\x{30fc}-\x{30ff}\x{3105}-\x{312d}\x{3131}-\x{318e}\x{31a0}-\x{31ba}\x{31f0}-\x{31ff}\x{3400}-\x{4db5}\x{4e00}-\x{9fcc}\x{a000}-\x{a48c}\x{a4d0}-\x{a4fd}\x{a500}-\x{a60c}\x{a610}-\x{a61f}\x{a62a}\x{a62b}\x{a640}-\x{a66e}\x{a67f}-\x{a697}\x{a6a0}-\x{a6ef}\x{a717}-\x{a71f}\x{a722}-\x{a788}\x{a78b}-\x{a78e}\x{a790}-\x{a793}\x{a7a0}-\x{a7aa}\x{a7f8}-\x{a801}\x{a803}-\x{a805}\x{a807}-\x{a80a}\x{a80c}-\x{a822}\x{a840}-\x{a873}\x{a882}-\x{a8b3}\x{a8f2}-\x{a8f7}\x{a8fb}\x{a90a}-\x{a925}\x{a930}-\x{a946}\x{a960}-\x{a97c}\x{a984}-\x{a9b2}\x{a9cf}\x{aa00}-\x{aa28}\x{aa40}-\x{aa42}\x{aa44}-\x{aa4b}\x{aa60}-\x{aa76}\x{aa7a}\x{aa80}-\x{aaaf}\x{aab1}\x{aab5}\x{aab6}\x{aab9}-\x{aabd}\x{aac0}\x{aac2}\x{aadb}-\x{aadd}\x{aae0}-\x{aaea}\x{aaf2}-\x{aaf4}\x{ab01}-\x{ab06}\x{ab09}-\x{ab0e}\x{ab11}-\x{ab16}\x{ab20}-\x{ab26}\x{ab28}-\x{ab2e}\x{abc0}-\x{abe2}\x{ac00}-\x{d7a3}\x{d7b0}-\x{d7c6}\x{d7cb}-\x{d7fb}\x{f900}-\x{fa6d}\x{fa70}-\x{fad9}\x{fb00}-\x{fb06}\x{fb13}-\x{fb17}\x{fb1d}\x{fb1f}-\x{fb28}\x{fb2a}-\x{fb36}\x{fb38}-\x{fb3c}\x{fb3e}\x{fb40}\x{fb41}\x{fb43}\x{fb44}\x{fb46}-\x{fbb1}\x{fbd3}-\x{fd3d}\x{fd50}-\x{fd8f}\x{fd92}-\x{fdc7}\x{fdf0}-\x{fdfb}\x{fe70}-\x{fe74}\x{fe76}-\x{fefc}\x{ff21}-\x{ff3a}\x{ff41}-\x{ff5a}\x{ff66}-\x{ffbe}\x{ffc2}-\x{ffc7}\x{ffca}-\x{ffcf}\x{ffd2}-\x{ffd7}\x{ffda}-\x{ffdc}0-9\x{0300}-\x{036f}\x{0483}-\x{0487}\x{0591}-\x{05bd}\x{05bf}\x{05c1}\x{05c2}\x{05c4}\x{05c5}\x{05c7}\x{0610}-\x{061a}\x{064b}-\x{0669}\x{0670}\x{06d6}-\x{06dc}\x{06df}-\x{06e4}\x{06e7}\x{06e8}\x{06ea}-\x{06ed}\x{06f0}-\x{06f9}\x{0711}\x{0730}-\x{074a}\x{07a6}-\x{07b0}\x{07c0}-\x{07c9}\x{07eb}-\x{07f3}\x{0816}-\x{0819}\x{081b}-\x{0823}\x{0825}-\x{0827}\x{0829}-\x{082d}\x{0859}-\x{085b}\x{08e4}-\x{08fe}\x{0900}-\x{0903}\x{093a}-\x{093c}\x{093e}-\x{094f}\x{0951}-\x{0957}\x{0962}\x{0963}\x{0966}-\x{096f}\x{0981}-\x{0983}\x{09bc}\x{09be}-\x{09c4}\x{09c7}\x{09c8}\x{09cb}-\x{09cd}\x{09d7}\x{09e2}\x{09e3}\x{09e6}-\x{09ef}\x{0a01}-\x{0a03}\x{0a3c}\x{0a3e}-\x{0a42}\x{0a47}\x{0a48}\x{0a4b}-\x{0a4d}\x{0a51}\x{0a66}-\x{0a71}\x{0a75}\x{0a81}-\x{0a83}\x{0abc}\x{0abe}-\x{0ac5}\x{0ac7}-\x{0ac9}\x{0acb}-\x{0acd}\x{0ae2}\x{0ae3}\x{0ae6}-\x{0aef}\x{0b01}-\x{0b03}\x{0b3c}\x{0b3e}-\x{0b44}\x{0b47}\x{0b48}\x{0b4b}-\x{0b4d}\x{0b56}\x{0b57}\x{0b62}\x{0b63}\x{0b66}-\x{0b6f}\x{0b82}\x{0bbe}-\x{0bc2}\x{0bc6}-\x{0bc8}\x{0bca}-\x{0bcd}\x{0bd7}\x{0be6}-\x{0bef}\x{0c01}-\x{0c03}\x{0c3e}-\x{0c44}\x{0c46}-\x{0c48}\x{0c4a}-\x{0c4d}\x{0c55}\x{0c56}\x{0c62}\x{0c63}\x{0c66}-\x{0c6f}\x{0c82}\x{0c83}\x{0cbc}\x{0cbe}-\x{0cc4}\x{0cc6}-\x{0cc8}\x{0cca}-\x{0ccd}\x{0cd5}\x{0cd6}\x{0ce2}\x{0ce3}\x{0ce6}-\x{0cef}\x{0d02}\x{0d03}\x{0d3e}-\x{0d44}\x{0d46}-\x{0d48}\x{0d4a}-\x{0d4d}\x{0d57}\x{0d62}\x{0d63}\x{0d66}-\x{0d6f}\x{0d82}\x{0d83}\x{0dca}\x{0dcf}-\x{0dd4}\x{0dd6}\x{0dd8}-\x{0ddf}\x{0df2}\x{0df3}\x{0e31}\x{0e34}-\x{0e3a}\x{0e47}-\x{0e4e}\x{0e50}-\x{0e59}\x{0eb1}\x{0eb4}-\x{0eb9}\x{0ebb}\x{0ebc}\x{0ec8}-\x{0ecd}\x{0ed0}-\x{0ed9}\x{0f18}\x{0f19}\x{0f20}-\x{0f29}\x{0f35}\x{0f37}\x{0f39}\x{0f3e}\x{0f3f}\x{0f71}-\x{0f84}\x{0f86}\x{0f87}\x{0f8d}-\x{0f97}\x{0f99}-\x{0fbc}\x{0fc6}\x{102b}-\x{103e}\x{1040}-\x{1049}\x{1056}-\x{1059}\x{105e}-\x{1060}\x{1062}-\x{1064}\x{1067}-\x{106d}\x{1071}-\x{1074}\x{1082}-\x{108d}\x{108f}-\x{109d}\x{135d}-\x{135f}\x{1712}-\x{1714}\x{1732}-\x{1734}\x{1752}\x{1753}\x{1772}\x{1773}\x{17b4}-\x{17d3}\x{17dd}\x{17e0}-\x{17e9}\x{180b}-\x{180d}\x{1810}-\x{1819}\x{18a9}\x{1920}-\x{192b}\x{1930}-\x{193b}\x{1946}-\x{194f}\x{19b0}-\x{19c0}\x{19c8}\x{19c9}\x{19d0}-\x{19d9}\x{1a17}-\x{1a1b}\x{1a55}-\x{1a5e}\x{1a60}-\x{1a7c}\x{1a7f}-\x{1a89}\x{1a90}-\x{1a99}\x{1b00}-\x{1b04}\x{1b34}-\x{1b44}\x{1b50}-\x{1b59}\x{1b6b}-\x{1b73}\x{1b80}-\x{1b82}\x{1ba1}-\x{1bad}\x{1bb0}-\x{1bb9}\x{1be6}-\x{1bf3}\x{1c24}-\x{1c37}\x{1c40}-\x{1c49}\x{1c50}-\x{1c59}\x{1cd0}-\x{1cd2}\x{1cd4}-\x{1ce8}\x{1ced}\x{1cf2}-\x{1cf4}\x{1dc0}-\x{1de6}\x{1dfc}-\x{1dff}\x{200c}\x{200d}\x{203f}\x{2040}\x{2054}\x{20d0}-\x{20dc}\x{20e1}\x{20e5}-\x{20f0}\x{2cef}-\x{2cf1}\x{2d7f}\x{2de0}-\x{2dff}\x{302a}-\x{302f}\x{3099}\x{309a}\x{a620}-\x{a629}\x{a66f}\x{a674}-\x{a67d}\x{a69f}\x{a6f0}\x{a6f1}\x{a802}\x{a806}\x{a80b}\x{a823}-\x{a827}\x{a880}\x{a881}\x{a8b4}-\x{a8c4}\x{a8d0}-\x{a8d9}\x{a8e0}-\x{a8f1}\x{a900}-\x{a909}\x{a926}-\x{a92d}\x{a947}-\x{a953}\x{a980}-\x{a983}\x{a9b3}-\x{a9c0}\x{a9d0}-\x{a9d9}\x{aa29}-\x{aa36}\x{aa43}\x{aa4c}\x{aa4d}\x{aa50}-\x{aa59}\x{aa7b}\x{aab0}\x{aab2}-\x{aab4}\x{aab7}\x{aab8}\x{aabe}\x{aabf}\x{aac1}\x{aaeb}-\x{aaef}\x{aaf5}\x{aaf6}\x{abe3}-\x{abea}\x{abec}\x{abed}\x{abf0}-\x{abf9}\x{fb1e}\x{fe00}-\x{fe0f}\x{fe20}-\x{fe26}\x{fe33}\x{fe34}\x{fe4d}-\x{fe4f}\x{ff10}-\x{ff19}\x{ff3f}]*\b'; + + /** + * Full list of JavaScript reserved words. + * Will be loaded from /data/js/keywords_reserved.txt. + * + * @see https://mathiasbynens.be/notes/reserved-keywords + * + * @var string[] + */ + protected $keywordsReserved = array(); + + /** + * List of JavaScript reserved words that accept a + * after them. Some end of lines are not the end of a statement, like with + * these keywords. + * + * E.g.: we shouldn't insert a ; after this else + * else + * console.log('this is quite fine') + * + * Will be loaded from /data/js/keywords_before.txt + * + * @var string[] + */ + protected $keywordsBefore = array(); + + /** + * List of JavaScript reserved words that accept a + * before them. Some end of lines are not the end of a statement, like when + * continued by one of these keywords on the newline. + * + * E.g.: we shouldn't insert a ; before this instanceof + * variable + * instanceof String + * + * Will be loaded from /data/js/keywords_after.txt + * + * @var string[] + */ + protected $keywordsAfter = array(); + + /** + * List of all JavaScript operators. + * + * Will be loaded from /data/js/operators.txt + * + * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Expressions_and_Operators + * + * @var string[] + */ + protected $operators = array(); + + /** + * List of JavaScript operators that accept a after + * them. Some end of lines are not the end of a statement, like with these + * operators. + * + * Note: Most operators are fine, we've only removed ++ and --. + * ++ & -- have to be joined with the value they're in-/decrementing. + * + * Will be loaded from /data/js/operators_before.txt + * + * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Expressions_and_Operators + * + * @var string[] + */ + protected $operatorsBefore = array(); + + /** + * List of JavaScript operators that accept a before + * them. Some end of lines are not the end of a statement, like when + * continued by one of these operators on the newline. + * + * Note: Most operators are fine, we've only removed ), ], ++, --, ! and ~. + * There can't be a newline separating ! or ~ and whatever it is negating. + * ++ & -- have to be joined with the value they're in-/decrementing. + * ) & ] are "special" in that they have lots or usecases. () for example + * is used for function calls, for grouping, in if () and for (), ... + * + * Will be loaded from /data/js/operators_after.txt + * + * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Expressions_and_Operators + * + * @var string[] + */ + protected $operatorsAfter = array(); + + /** + * {@inheritdoc} + */ + public function __construct() + { + call_user_func_array(array('parent', '__construct'), func_get_args()); + + $dataDir = __DIR__.'/data/js/'; + $options = FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES; + $this->keywordsReserved = file($dataDir.'keywords_reserved.txt', $options); + $this->keywordsBefore = file($dataDir.'keywords_before.txt', $options); + $this->keywordsAfter = file($dataDir.'keywords_after.txt', $options); + $this->operators = file($dataDir.'operators.txt', $options); + $this->operatorsBefore = file($dataDir.'operators_before.txt', $options); + $this->operatorsAfter = file($dataDir.'operators_after.txt', $options); + } + + /** + * Minify the data. + * Perform JS optimizations. + * + * @param string[optional] $path Path to write the data to + * + * @return string The minified data + */ + public function execute($path = null) + { + $content = ''; + + /* + * Let's first take out strings, comments and regular expressions. + * All of these can contain JS code-like characters, and we should make + * sure any further magic ignores anything inside of these. + * + * Consider this example, where we should not strip any whitespace: + * var str = "a test"; + * + * Comments will be removed altogether, strings and regular expressions + * will be replaced by placeholder text, which we'll restore later. + */ + $this->extractStrings('\'"`'); + $this->stripComments(); + $this->extractRegex(); + + // loop files + foreach ($this->data as $source => $js) { + // take out strings, comments & regex (for which we've registered + // the regexes just a few lines earlier) + $js = $this->replace($js); + + $js = $this->propertyNotation($js); + $js = $this->shortenBools($js); + $js = $this->stripWhitespace($js); + + // combine js: separating the scripts by a ; + $content .= $js.";"; + } + + // clean up leftover `;`s from the combination of multiple scripts + $content = ltrim($content, ';'); + $content = (string) substr($content, 0, -1); + + /* + * Earlier, we extracted strings & regular expressions and replaced them + * with placeholder text. This will restore them. + */ + $content = $this->restoreExtractedData($content); + + return $content; + } + + /** + * Strip comments from source code. + */ + protected function stripComments() + { + // PHP only supports $this inside anonymous functions since 5.4 + $minifier = $this; + $callback = function ($match) use ($minifier) { + $count = count($minifier->extracted); + $placeholder = '/*'.$count.'*/'; + $minifier->extracted[$placeholder] = $match[0]; + + return $placeholder; + }; + // multi-line comments + $this->registerPattern('/\n?\/\*(!|.*?@license|.*?@preserve).*?\*\/\n?/s', $callback); + $this->registerPattern('/\/\*.*?\*\//s', ''); + + // single-line comments + $this->registerPattern('/\/\/.*$/m', ''); + } + + /** + * JS can have /-delimited regular expressions, like: /ab+c/.match(string). + * + * The content inside the regex can contain characters that may be confused + * for JS code: e.g. it could contain whitespace it needs to match & we + * don't want to strip whitespace in there. + * + * The regex can be pretty simple: we don't have to care about comments, + * (which also use slashes) because stripComments() will have stripped those + * already. + * + * This method will replace all string content with simple REGEX# + * placeholder text, so we've rid all regular expressions from characters + * that may be misinterpreted. Original regex content will be saved in + * $this->extracted and after doing all other minifying, we can restore the + * original content via restoreRegex() + */ + protected function extractRegex() + { + // PHP only supports $this inside anonymous functions since 5.4 + $minifier = $this; + $callback = function ($match) use ($minifier) { + $count = count($minifier->extracted); + $placeholder = '"'.$count.'"'; + $minifier->extracted[$placeholder] = $match[0]; + + return $placeholder; + }; + + // match all chars except `/` and `\` + // `\` is allowed though, along with whatever char follows (which is the + // one being escaped) + // this should allow all chars, except for an unescaped `/` (= the one + // closing the regex) + // then also ignore bare `/` inside `[]`, where they don't need to be + // escaped: anything inside `[]` can be ignored safely + $pattern = '\\/(?!\*)(?:[^\\[\\/\\\\\n\r]++|(?:\\\\.)++|(?:\\[(?:[^\\]\\\\\n\r]++|(?:\\\\.)++)++\\])++)++\\/[gimuy]*'; + + // a regular expression can only be followed by a few operators or some + // of the RegExp methods (a `\` followed by a variable or value is + // likely part of a division, not a regex) + $keywords = array('do', 'in', 'new', 'else', 'throw', 'yield', 'delete', 'return', 'typeof'); + $before = '([=:,;\+\-\*\/\}\(\{\[&\|!]|^|'.implode('|', $keywords).')\s*'; + $propertiesAndMethods = array( + // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp#Properties_2 + 'constructor', + 'flags', + 'global', + 'ignoreCase', + 'multiline', + 'source', + 'sticky', + 'unicode', + // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp#Methods_2 + 'compile(', + 'exec(', + 'test(', + 'toSource(', + 'toString(', + ); + $delimiters = array_fill(0, count($propertiesAndMethods), '/'); + $propertiesAndMethods = array_map('preg_quote', $propertiesAndMethods, $delimiters); + $after = '(?=\s*([\.,;\)\}&\|+]|\/\/|$|\.('.implode('|', $propertiesAndMethods).')))'; + $this->registerPattern('/'.$before.'\K'.$pattern.$after.'/', $callback); + + // regular expressions following a `)` are rather annoying to detect... + // quite often, `/` after `)` is a division operator & if it happens to + // be followed by another one (or a comment), it is likely to be + // confused for a regular expression + // however, it's perfectly possible for a regex to follow a `)`: after + // a single-line `if()`, `while()`, ... statement, for example + // since, when they occur like that, they're always the start of a + // statement, there's only a limited amount of ways they can be useful: + // by calling the regex methods directly + // if a regex following `)` is not followed by `.`, + // it's quite likely not a regex + $before = '\)\s*'; + $after = '(?=\s*\.('.implode('|', $propertiesAndMethods).'))'; + $this->registerPattern('/'.$before.'\K'.$pattern.$after.'/', $callback); + + // 1 more edge case: a regex can be followed by a lot more operators or + // keywords if there's a newline (ASI) in between, where the operator + // actually starts a new statement + // (https://github.com/matthiasmullie/minify/issues/56) + $operators = $this->getOperatorsForRegex($this->operatorsBefore, '/'); + $operators += $this->getOperatorsForRegex($this->keywordsReserved, '/'); + $after = '(?=\s*\n\s*('.implode('|', $operators).'))'; + $this->registerPattern('/'.$pattern.$after.'/', $callback); + } + + /** + * Strip whitespace. + * + * We won't strip *all* whitespace, but as much as possible. The thing that + * we'll preserve are newlines we're unsure about. + * JavaScript doesn't require statements to be terminated with a semicolon. + * It will automatically fix missing semicolons with ASI (automatic semi- + * colon insertion) at the end of line causing errors (without semicolon.) + * + * Because it's sometimes hard to tell if a newline is part of a statement + * that should be terminated or not, we'll just leave some of them alone. + * + * @param string $content The content to strip the whitespace for + * + * @return string + */ + protected function stripWhitespace($content) + { + // uniform line endings, make them all line feed + $content = str_replace(array("\r\n", "\r"), "\n", $content); + + // collapse all non-line feed whitespace into a single space + $content = preg_replace('/[^\S\n]+/', ' ', $content); + + // strip leading & trailing whitespace + $content = str_replace(array(" \n", "\n "), "\n", $content); + + // collapse consecutive line feeds into just 1 + $content = preg_replace('/\n+/', "\n", $content); + + $operatorsBefore = $this->getOperatorsForRegex($this->operatorsBefore, '/'); + $operatorsAfter = $this->getOperatorsForRegex($this->operatorsAfter, '/'); + $operators = $this->getOperatorsForRegex($this->operators, '/'); + $keywordsBefore = $this->getKeywordsForRegex($this->keywordsBefore, '/'); + $keywordsAfter = $this->getKeywordsForRegex($this->keywordsAfter, '/'); + + // strip whitespace that ends in (or next line begin with) an operator + // that allows statements to be broken up over multiple lines + unset($operatorsBefore['+'], $operatorsBefore['-'], $operatorsAfter['+'], $operatorsAfter['-']); + $content = preg_replace( + array( + '/('.implode('|', $operatorsBefore).')\s+/', + '/\s+('.implode('|', $operatorsAfter).')/', + ), + '\\1', + $content + ); + + // make sure + and - can't be mistaken for, or joined into ++ and -- + $content = preg_replace( + array( + '/(?%&|', $delimiter); + $operators['='] = '(?keywordsReserved; + $callback = function ($match) use ($minifier, $keywords) { + $property = trim($minifier->extracted[$match[1]], '\'"'); + + /* + * Check if the property is a reserved keyword. In this context (as + * property of an object literal/array) it shouldn't matter, but IE8 + * freaks out with "Expected identifier". + */ + if (in_array($property, $keywords)) { + return $match[0]; + } + + /* + * See if the property is in a variable-like format (e.g. + * array['key-here'] can't be replaced by array.key-here since '-' + * is not a valid character there. + */ + if (!preg_match('/^'.$minifier::REGEX_VARIABLE.'$/u', $property)) { + return $match[0]; + } + + return '.'.$property; + }; + + /* + * Figure out if previous character is a variable name (of the array + * we want to use property notation on) - this is to make sure + * standalone ['value'] arrays aren't confused for keys-of-an-array. + * We can (and only have to) check the last character, because PHP's + * regex implementation doesn't allow unfixed-length look-behind + * assertions. + */ + preg_match('/(\[[^\]]+\])[^\]]*$/', static::REGEX_VARIABLE, $previousChar); + $previousChar = $previousChar[1]; + + /* + * Make sure word preceding the ['value'] is not a keyword, e.g. + * return['x']. Because -again- PHP's regex implementation doesn't allow + * unfixed-length look-behind assertions, I'm just going to do a lot of + * separate look-behind assertions, one for each keyword. + */ + $keywords = $this->getKeywordsForRegex($keywords); + $keywords = '(? + * @copyright Copyright (c) 2012, Matthias Mullie. All rights reserved + * @license MIT License + */ +namespace WP_Rocket\Dependencies\Minify; + +use WP_Rocket\Dependencies\Minify\Exceptions\IOException; +use Psr\Cache\CacheItemInterface; + +/** + * Abstract minifier class. + * + * Please report bugs on https://github.com/matthiasmullie/minify/issues + * + * @package Minify + * @author Matthias Mullie + * @copyright Copyright (c) 2012, Matthias Mullie. All rights reserved + * @license MIT License + */ +abstract class Minify +{ + /** + * The data to be minified. + * + * @var string[] + */ + protected $data = array(); + + /** + * Array of patterns to match. + * + * @var string[] + */ + protected $patterns = array(); + + /** + * This array will hold content of strings and regular expressions that have + * been extracted from the JS source code, so we can reliably match "code", + * without having to worry about potential "code-like" characters inside. + * + * @var string[] + */ + public $extracted = array(); + + /** + * Init the minify class - optionally, code may be passed along already. + */ + public function __construct(/* $data = null, ... */) + { + // it's possible to add the source through the constructor as well ;) + if (func_num_args()) { + call_user_func_array(array($this, 'add'), func_get_args()); + } + } + + /** + * Add a file or straight-up code to be minified. + * + * @param string|string[] $data + * + * @return static + */ + public function add($data /* $data = null, ... */) + { + // bogus "usage" of parameter $data: scrutinizer warns this variable is + // not used (we're using func_get_args instead to support overloading), + // but it still needs to be defined because it makes no sense to have + // this function without argument :) + $args = array($data) + func_get_args(); + + // this method can be overloaded + foreach ($args as $data) { + if (is_array($data)) { + call_user_func_array(array($this, 'add'), $data); + continue; + } + + // redefine var + $data = (string) $data; + + // load data + $value = $this->load($data); + $key = ($data != $value) ? $data : count($this->data); + + // replace CR linefeeds etc. + // @see https://github.com/matthiasmullie/minify/pull/139 + $value = str_replace(array("\r\n", "\r"), "\n", $value); + + // store data + $this->data[$key] = $value; + } + + return $this; + } + + /** + * Add a file to be minified. + * + * @param string|string[] $data + * + * @return static + * + * @throws IOException + */ + public function addFile($data /* $data = null, ... */) + { + // bogus "usage" of parameter $data: scrutinizer warns this variable is + // not used (we're using func_get_args instead to support overloading), + // but it still needs to be defined because it makes no sense to have + // this function without argument :) + $args = array($data) + func_get_args(); + + // this method can be overloaded + foreach ($args as $path) { + if (is_array($path)) { + call_user_func_array(array($this, 'addFile'), $path); + continue; + } + + // redefine var + $path = (string) $path; + + // check if we can read the file + if (!$this->canImportFile($path)) { + throw new IOException('The file "'.$path.'" could not be opened for reading. Check if PHP has enough permissions.'); + } + + $this->add($path); + } + + return $this; + } + + /** + * Minify the data & (optionally) saves it to a file. + * + * @param string[optional] $path Path to write the data to + * + * @return string The minified data + */ + public function minify($path = null) + { + $content = $this->execute($path); + + // save to path + if ($path !== null) { + $this->save($content, $path); + } + + return $content; + } + + /** + * Minify & gzip the data & (optionally) saves it to a file. + * + * @param string[optional] $path Path to write the data to + * @param int[optional] $level Compression level, from 0 to 9 + * + * @return string The minified & gzipped data + */ + public function gzip($path = null, $level = 9) + { + $content = $this->execute($path); + $content = gzencode($content, $level, FORCE_GZIP); + + // save to path + if ($path !== null) { + $this->save($content, $path); + } + + return $content; + } + + /** + * Minify the data & write it to a CacheItemInterface object. + * + * @param CacheItemInterface $item Cache item to write the data to + * + * @return CacheItemInterface Cache item with the minifier data + */ + public function cache(CacheItemInterface $item) + { + $content = $this->execute(); + $item->set($content); + + return $item; + } + + /** + * Minify the data. + * + * @param string[optional] $path Path to write the data to + * + * @return string The minified data + */ + abstract public function execute($path = null); + + /** + * Load data. + * + * @param string $data Either a path to a file or the content itself + * + * @return string + */ + protected function load($data) + { + // check if the data is a file + if ($this->canImportFile($data)) { + $data = file_get_contents($data); + + // strip BOM, if any + if (substr($data, 0, 3) == "\xef\xbb\xbf") { + $data = substr($data, 3); + } + } + + return $data; + } + + /** + * Save to file. + * + * @param string $content The minified data + * @param string $path The path to save the minified data to + * + * @throws IOException + */ + protected function save($content, $path) + { + $handler = $this->openFileForWriting($path); + + $this->writeToFile($handler, $content); + + @fclose($handler); + } + + /** + * Register a pattern to execute against the source content. + * + * @param string $pattern PCRE pattern + * @param string|callable $replacement Replacement value for matched pattern + */ + protected function registerPattern($pattern, $replacement = '') + { + // study the pattern, we'll execute it more than once + $pattern .= 'S'; + + $this->patterns[] = array($pattern, $replacement); + } + + /** + * We can't "just" run some regular expressions against JavaScript: it's a + * complex language. E.g. having an occurrence of // xyz would be a comment, + * unless it's used within a string. Of you could have something that looks + * like a 'string', but inside a comment. + * The only way to accurately replace these pieces is to traverse the JS one + * character at a time and try to find whatever starts first. + * + * @param string $content The content to replace patterns in + * + * @return string The (manipulated) content + */ + protected function replace($content) + { + $processed = ''; + $positions = array_fill(0, count($this->patterns), -1); + $matches = array(); + + while ($content) { + // find first match for all patterns + foreach ($this->patterns as $i => $pattern) { + list($pattern, $replacement) = $pattern; + + // we can safely ignore patterns for positions we've unset earlier, + // because we know these won't show up anymore + if (array_key_exists($i, $positions) == false) { + continue; + } + + // no need to re-run matches that are still in the part of the + // content that hasn't been processed + if ($positions[$i] >= 0) { + continue; + } + + $match = null; + if (preg_match($pattern, $content, $match, PREG_OFFSET_CAPTURE)) { + $matches[$i] = $match; + + // we'll store the match position as well; that way, we + // don't have to redo all preg_matches after changing only + // the first (we'll still know where those others are) + $positions[$i] = $match[0][1]; + } else { + // if the pattern couldn't be matched, there's no point in + // executing it again in later runs on this same content; + // ignore this one until we reach end of content + unset($matches[$i], $positions[$i]); + } + } + + // no more matches to find: everything's been processed, break out + if (!$matches) { + $processed .= $content; + break; + } + + // see which of the patterns actually found the first thing (we'll + // only want to execute that one, since we're unsure if what the + // other found was not inside what the first found) + $discardLength = min($positions); + $firstPattern = array_search($discardLength, $positions); + $match = $matches[$firstPattern][0][0]; + + // execute the pattern that matches earliest in the content string + list($pattern, $replacement) = $this->patterns[$firstPattern]; + $replacement = $this->replacePattern($pattern, $replacement, $content); + + // figure out which part of the string was unmatched; that's the + // part we'll execute the patterns on again next + $content = (string) substr($content, $discardLength); + $unmatched = (string) substr($content, strpos($content, $match) + strlen($match)); + + // move the replaced part to $processed and prepare $content to + // again match batch of patterns against + $processed .= substr($replacement, 0, strlen($replacement) - strlen($unmatched)); + $content = $unmatched; + + // first match has been replaced & that content is to be left alone, + // the next matches will start after this replacement, so we should + // fix their offsets + foreach ($positions as $i => $position) { + $positions[$i] -= $discardLength + strlen($match); + } + } + + return $processed; + } + + /** + * This is where a pattern is matched against $content and the matches + * are replaced by their respective value. + * This function will be called plenty of times, where $content will always + * move up 1 character. + * + * @param string $pattern Pattern to match + * @param string|callable $replacement Replacement value + * @param string $content Content to match pattern against + * + * @return string + */ + protected function replacePattern($pattern, $replacement, $content) + { + if (is_callable($replacement)) { + return preg_replace_callback($pattern, $replacement, $content, 1, $count); + } else { + return preg_replace($pattern, $replacement, $content, 1, $count); + } + } + + /** + * Strings are a pattern we need to match, in order to ignore potential + * code-like content inside them, but we just want all of the string + * content to remain untouched. + * + * This method will replace all string content with simple STRING# + * placeholder text, so we've rid all strings from characters that may be + * misinterpreted. Original string content will be saved in $this->extracted + * and after doing all other minifying, we can restore the original content + * via restoreStrings(). + * + * @param string[optional] $chars + * @param string[optional] $placeholderPrefix + */ + protected function extractStrings($chars = '\'"', $placeholderPrefix = '') + { + // PHP only supports $this inside anonymous functions since 5.4 + $minifier = $this; + $callback = function ($match) use ($minifier, $placeholderPrefix) { + // check the second index here, because the first always contains a quote + if ($match[2] === '') { + /* + * Empty strings need no placeholder; they can't be confused for + * anything else anyway. + * But we still needed to match them, for the extraction routine + * to skip over this particular string. + */ + return $match[0]; + } + + $count = count($minifier->extracted); + $placeholder = $match[1].$placeholderPrefix.$count.$match[1]; + $minifier->extracted[$placeholder] = $match[1].$match[2].$match[1]; + + return $placeholder; + }; + + /* + * The \\ messiness explained: + * * Don't count ' or " as end-of-string if it's escaped (has backslash + * in front of it) + * * Unless... that backslash itself is escaped (another leading slash), + * in which case it's no longer escaping the ' or " + * * So there can be either no backslash, or an even number + * * multiply all of that times 4, to account for the escaping that has + * to be done to pass the backslash into the PHP string without it being + * considered as escape-char (times 2) and to get it in the regex, + * escaped (times 2) + */ + $this->registerPattern('/(['.$chars.'])(.*?(?extracted. + * + * @param string $content + * + * @return string + */ + protected function restoreExtractedData($content) + { + if (!$this->extracted) { + // nothing was extracted, nothing to restore + return $content; + } + + $content = strtr($content, $this->extracted); + + $this->extracted = array(); + + return $content; + } + + /** + * Check if the path is a regular file and can be read. + * + * @param string $path + * + * @return bool + */ + protected function canImportFile($path) + { + $parsed = parse_url($path); + if ( + // file is elsewhere + isset($parsed['host']) || + // file responds to queries (may change, or need to bypass cache) + isset($parsed['query']) + ) { + return false; + } + + return strlen($path) < PHP_MAXPATHLEN && @is_file($path) && is_readable($path); + } + + /** + * Attempts to open file specified by $path for writing. + * + * @param string $path The path to the file + * + * @return resource Specifier for the target file + * + * @throws IOException + */ + protected function openFileForWriting($path) + { + if (($handler = @fopen($path, 'w')) === false) { + throw new IOException('The file "'.$path.'" could not be opened for writing. Check if PHP has enough permissions.'); + } + + return $handler; + } + + /** + * Attempts to write $content to the file specified by $handler. $path is used for printing exceptions. + * + * @param resource $handler The resource to write to + * @param string $content The content to write + * @param string $path The path to the file (for exception printing only) + * + * @throws IOException + */ + protected function writeToFile($handler, $content, $path = '') + { + if (($result = @fwrite($handler, $content)) === false || ($result < strlen($content))) { + throw new IOException('The file "'.$path.'" could not be written to. Check your disk space and file permissions.'); + } + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Dependencies/Minify/data/js/keywords_after.txt b/wp-content/plugins/wp-rocket/inc/Dependencies/Minify/data/js/keywords_after.txt new file mode 100644 index 0000000..5c8cba7 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Dependencies/Minify/data/js/keywords_after.txt @@ -0,0 +1,7 @@ +in +public +extends +private +protected +implements +instanceof \ No newline at end of file diff --git a/wp-content/plugins/wp-rocket/inc/Dependencies/Minify/data/js/keywords_before.txt b/wp-content/plugins/wp-rocket/inc/Dependencies/Minify/data/js/keywords_before.txt new file mode 100644 index 0000000..5abf357 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Dependencies/Minify/data/js/keywords_before.txt @@ -0,0 +1,26 @@ +do +in +let +new +var +case +else +enum +void +with +class +const +yield +delete +export +import +public +static +typeof +extends +package +private +function +protected +implements +instanceof \ No newline at end of file diff --git a/wp-content/plugins/wp-rocket/inc/Dependencies/Minify/data/js/keywords_reserved.txt b/wp-content/plugins/wp-rocket/inc/Dependencies/Minify/data/js/keywords_reserved.txt new file mode 100644 index 0000000..2a3ad3c --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Dependencies/Minify/data/js/keywords_reserved.txt @@ -0,0 +1,63 @@ +do +if +in +for +let +new +try +var +case +else +enum +eval +null +this +true +void +with +break +catch +class +const +false +super +throw +while +yield +delete +export +import +public +return +static +switch +typeof +default +extends +finally +package +private +continue +debugger +function +arguments +interface +protected +implements +instanceof +abstract +boolean +byte +char +double +final +float +goto +int +long +native +short +synchronized +throws +transient +volatile \ No newline at end of file diff --git a/wp-content/plugins/wp-rocket/inc/Dependencies/Minify/data/js/operators.txt b/wp-content/plugins/wp-rocket/inc/Dependencies/Minify/data/js/operators.txt new file mode 100644 index 0000000..e66229a --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Dependencies/Minify/data/js/operators.txt @@ -0,0 +1,46 @@ ++ +- +* +/ +% += ++= +-= +*= +/= +%= +<<= +>>= +>>>= +&= +^= +|= +& +| +^ +~ +<< +>> +>>> +== +=== +!= +!== +> +< +>= +<= +&& +|| +! +. +[ +] +? +: +, +; +( +) +{ +} \ No newline at end of file diff --git a/wp-content/plugins/wp-rocket/inc/Dependencies/Minify/data/js/operators_after.txt b/wp-content/plugins/wp-rocket/inc/Dependencies/Minify/data/js/operators_after.txt new file mode 100644 index 0000000..71a9b70 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Dependencies/Minify/data/js/operators_after.txt @@ -0,0 +1,43 @@ ++ +- +* +/ +% += ++= +-= +*= +/= +%= +<<= +>>= +>>>= +&= +^= +|= +& +| +^ +<< +>> +>>> +== +=== +!= +!== +> +< +>= +<= +&& +|| +. +[ +] +? +: +, +; +( +) +} \ No newline at end of file diff --git a/wp-content/plugins/wp-rocket/inc/Dependencies/Minify/data/js/operators_before.txt b/wp-content/plugins/wp-rocket/inc/Dependencies/Minify/data/js/operators_before.txt new file mode 100644 index 0000000..ff50d87 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Dependencies/Minify/data/js/operators_before.txt @@ -0,0 +1,43 @@ ++ +- +* +/ +% += ++= +-= +*= +/= +%= +<<= +>>= +>>>= +&= +^= +|= +& +| +^ +~ +<< +>> +>>> +== +=== +!= +!== +> +< +>= +<= +&& +|| +! +. +[ +? +: +, +; +( +{ diff --git a/wp-content/plugins/wp-rocket/inc/Dependencies/PathConverter/Converter.php b/wp-content/plugins/wp-rocket/inc/Dependencies/PathConverter/Converter.php new file mode 100644 index 0000000..0b620ab --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Dependencies/PathConverter/Converter.php @@ -0,0 +1,204 @@ + + * @copyright Copyright (c) 2015, Matthias Mullie. All rights reserved + * @license MIT License + */ +class Converter implements ConverterInterface +{ + /** + * @var string + */ + protected $from; + + /** + * @var string + */ + protected $to; + + /** + * @param string $from The original base path (directory, not file!) + * @param string $to The new base path (directory, not file!) + * @param string $root Root directory (defaults to `getcwd`) + */ + public function __construct($from, $to, $root = '') + { + $shared = $this->shared($from, $to); + if ($shared === '') { + // when both paths have nothing in common, one of them is probably + // absolute while the other is relative + $root = $root ?: getcwd(); + $from = strpos($from, $root) === 0 ? $from : preg_replace('/\/+/', '/', $root.'/'.$from); + $to = strpos($to, $root) === 0 ? $to : preg_replace('/\/+/', '/', $root.'/'.$to); + + // or traveling the tree via `..` + // attempt to resolve path, or assume it's fine if it doesn't exist + $from = @realpath($from) ?: $from; + $to = @realpath($to) ?: $to; + } + + $from = $this->dirname($from); + $to = $this->dirname($to); + + $from = $this->normalize($from); + $to = $this->normalize($to); + + $this->from = $from; + $this->to = $to; + } + + /** + * Normalize path. + * + * @param string $path + * + * @return string + */ + protected function normalize($path) + { + // deal with different operating systems' directory structure + $path = rtrim(str_replace(DIRECTORY_SEPARATOR, '/', $path), '/'); + + // remove leading current directory. + if (substr($path, 0, 2) === './') { + $path = substr($path, 2); + } + + // remove references to current directory in the path. + $path = str_replace('/./', '/', $path); + + /* + * Example: + * /home/forkcms/frontend/cache/compiled_templates/../../core/layout/css/../images/img.gif + * to + * /home/forkcms/frontend/core/layout/images/img.gif + */ + do { + $path = preg_replace('/[^\/]+(? $chunk) { + if (isset($path2[$i]) && $path1[$i] == $path2[$i]) { + $shared[] = $chunk; + } else { + break; + } + } + + return implode('/', $shared); + } + + /** + * Convert paths relative from 1 file to another. + * + * E.g. + * ../images/img.gif relative to /home/forkcms/frontend/core/layout/css + * should become: + * ../../core/layout/images/img.gif relative to + * /home/forkcms/frontend/cache/minified_css + * + * @param string $path The relative path that needs to be converted + * + * @return string The new relative path + */ + public function convert($path) + { + // quit early if conversion makes no sense + if ($this->from === $this->to) { + return $path; + } + + $path = $this->normalize($path); + // if we're not dealing with a relative path, just return absolute + if (strpos($path, '/') === 0) { + return $path; + } + + // normalize paths + $path = $this->normalize($this->from.'/'.$path); + + // strip shared ancestor paths + $shared = $this->shared($path, $this->to); + $path = mb_substr($path, mb_strlen($shared)); + $to = mb_substr($this->to, mb_strlen($shared)); + + // add .. for every directory that needs to be traversed to new path + $to = str_repeat('../', count(array_filter(explode('/', $to)))); + + return $to.ltrim($path, '/'); + } + + /** + * Attempt to get the directory name from a path. + * + * @param string $path + * + * @return string + */ + protected function dirname($path) + { + if (@is_file($path)) { + return dirname($path); + } + + if (@is_dir($path)) { + return rtrim($path, '/'); + } + + // no known file/dir, start making assumptions + + // ends in / = dir + if (mb_substr($path, -1) === '/') { + return rtrim($path, '/'); + } + + // has a dot in the name, likely a file + if (preg_match('/.*\..*$/', basename($path)) !== 0) { + return dirname($path); + } + + // you're on your own here! + return $path; + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Dependencies/PathConverter/ConverterInterface.php b/wp-content/plugins/wp-rocket/inc/Dependencies/PathConverter/ConverterInterface.php new file mode 100644 index 0000000..53c2ee6 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Dependencies/PathConverter/ConverterInterface.php @@ -0,0 +1,24 @@ + + * @copyright Copyright (c) 2015, Matthias Mullie. All rights reserved + * @license MIT License + */ +interface ConverterInterface +{ + /** + * Convert file paths. + * + * @param string $path The path to be converted + * + * @return string The new path + */ + public function convert($path); +} diff --git a/wp-content/plugins/wp-rocket/inc/Dependencies/PathConverter/NoConverter.php b/wp-content/plugins/wp-rocket/inc/Dependencies/PathConverter/NoConverter.php new file mode 100644 index 0000000..cba2292 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Dependencies/PathConverter/NoConverter.php @@ -0,0 +1,23 @@ + + * @copyright Copyright (c) 2015, Matthias Mullie. All rights reserved + * @license MIT License + */ +class NoConverter implements ConverterInterface +{ + /** + * {@inheritdoc} + */ + public function convert($path) + { + return $path; + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Dependencies/RocketLazyload/Assets.php b/wp-content/plugins/wp-rocket/inc/Dependencies/RocketLazyload/Assets.php new file mode 100644 index 0000000..d225caa --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Dependencies/RocketLazyload/Assets.php @@ -0,0 +1,290 @@ +getLazyloadScript( $args ); + } + + /** + * Gets the inline lazyload script configuration + * + * @param array $args Array of arguments to populate the lazyload script options. + * @return string + */ + public function getInlineLazyloadScript( $args = [] ) { + $defaults = [ + 'elements' => [ + 'img', + 'iframe', + ], + 'threshold' => 300, + 'options' => [], + ]; + + $allowed_options = [ + 'container' => 1, + 'thresholds' => 1, + 'data_bg' => 1, + 'class_error' => 1, + 'cancel_on_exit' => 1, + 'unobserve_completed' => 1, + 'callback_enter' => 1, + 'callback_exit' => 1, + 'callback_loading' => 1, + 'callback_error' => 1, + 'callback_finish' => 1, + 'use_native' => 1, + ]; + + $args = wp_parse_args( $args, $defaults ); + $script = ''; + + $args['options'] = array_intersect_key( $args['options'], $allowed_options ); + + $script .= 'window.lazyLoadOptions = { + elements_selector: "' . esc_attr( implode( ',', $args['elements'] ) ) . '", + data_src: "lazy-src", + data_srcset: "lazy-srcset", + data_sizes: "lazy-sizes", + class_loading: "lazyloading", + class_loaded: "lazyloaded", + threshold: ' . esc_attr( $args['threshold'] ) . ', + callback_loaded: function(element) { + if ( element.tagName === "IFRAME" && element.dataset.rocketLazyload == "fitvidscompatible" ) { + if (element.classList.contains("lazyloaded") ) { + if (typeof window.jQuery != "undefined") { + if (jQuery.fn.fitVids) { + jQuery(element).parent().fitVids(); + } + } + } + } + }'; + + if ( ! empty( $args['options'] ) ) { + $script .= ',' . PHP_EOL; + + foreach ( $args['options'] as $option => $value ) { + $script .= $option . ': ' . $value . ','; + } + + $script = rtrim( $script, ',' ); + } + + $script .= '};'; + + $script .= ' + window.addEventListener(\'LazyLoad::Initialized\', function (e) { + var lazyLoadInstance = e.detail.instance; + + if (window.MutationObserver) { + var observer = new MutationObserver(function(mutations) { + var image_count = 0; + var iframe_count = 0; + var rocketlazy_count = 0; + + mutations.forEach(function(mutation) { + for (i = 0; i < mutation.addedNodes.length; i++) { + if (typeof mutation.addedNodes[i].getElementsByTagName !== \'function\') { + continue; + } + + if (typeof mutation.addedNodes[i].getElementsByClassName !== \'function\') { + continue; + } + + images = mutation.addedNodes[i].getElementsByTagName(\'img\'); + is_image = mutation.addedNodes[i].tagName == "IMG"; + iframes = mutation.addedNodes[i].getElementsByTagName(\'iframe\'); + is_iframe = mutation.addedNodes[i].tagName == "IFRAME"; + rocket_lazy = mutation.addedNodes[i].getElementsByClassName(\'rocket-lazyload\'); + + image_count += images.length; + iframe_count += iframes.length; + rocketlazy_count += rocket_lazy.length; + + if(is_image){ + image_count += 1; + } + + if(is_iframe){ + iframe_count += 1; + } + } + } ); + + if(image_count > 0 || iframe_count > 0 || rocketlazy_count > 0){ + lazyLoadInstance.update(); + } + } ); + + var b = document.getElementsByTagName("body")[0]; + var config = { childList: true, subtree: true }; + + observer.observe(b, config); + } + }, false);'; + + return $script; + } + + /** + * Returns the lazyload inline script + * + * @param array $args Array of arguments to populate the lazyload script options. + * @return string + */ + public function getLazyloadScript( $args = [] ) { + $defaults = [ + 'base_url' => '', + 'version' => '', + 'polyfill' => false, + ]; + + $args = wp_parse_args( $args, $defaults ); + $min = ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) ? '' : '.min'; + $script = ''; + + if ( isset( $args['polyfill'] ) && $args['polyfill'] ) { + $script .= ''; + } + + /** + * Filters the script tag for the lazyload script + * + * @since 2.2.6 + * + * @param $script_tag HTML tag for the lazyload script. + */ + $script .= apply_filters( 'rocket_lazyload_script_tag', '' ); + + return $script; + } + + /** + * Inserts in the HTML the script to replace the Youtube thumbnail by the iframe. + * + * @param array $args Array of arguments to populate the script options. + * @return void + */ + public function insertYoutubeThumbnailScript( $args = [] ) { + echo $this->getYoutubeThumbnailScript( $args ); + } + + /** + * Returns the Youtube Thumbnail inline script + * + * @param array $args Array of arguments to populate the script options. + * @return string + */ + public function getYoutubeThumbnailScript( $args = [] ) { + $defaults = [ + 'resolution' => 'hqdefault', + 'lazy_image' => false, + ]; + + $allowed_resolutions = [ + 'default' => [ + 'width' => 120, + 'height' => 90, + ], + 'mqdefault' => [ + 'width' => 320, + 'height' => 180, + ], + 'hqdefault' => [ + 'width' => 480, + 'height' => 360, + ], + 'sddefault' => [ + 'width' => 640, + 'height' => 480, + ], + + 'maxresdefault' => [ + 'width' => 1280, + 'height' => 720, + ], + ]; + + $args['resolution'] = ( isset( $args['resolution'] ) && isset( $allowed_resolutions[ $args['resolution'] ] ) ) ? $args['resolution'] : 'hqdefault'; + + $args = wp_parse_args( $args, $defaults ); + + $image = ''; + + if ( isset( $args['lazy_image'] ) && $args['lazy_image'] ) { + $image = ''; + } + + return ""; + } + + /** + * Inserts the CSS to style the Youtube thumbnail container + * + * @param array $args Array of arguments to populate the CSS. + * @return void + */ + public function insertYoutubeThumbnailCSS( $args = [] ) { + wp_register_style( 'rocket-lazyload', false ); + wp_enqueue_style( 'rocket-lazyload' ); + wp_add_inline_style( 'rocket-lazyload', $this->getYoutubeThumbnailCSS( $args ) ); + } + + /** + * Returns the CSS for the Youtube Thumbnail + * + * @param array $args Array of arguments to populate the CSS. + * @return string + */ + public function getYoutubeThumbnailCSS( $args = [] ) { + $defaults = [ + 'base_url' => '', + 'responsive_embeds' => true, + ]; + + $args = wp_parse_args( $args, $defaults ); + + $css = '.rll-youtube-player{position:relative;padding-bottom:56.23%;height:0;overflow:hidden;max-width:100%;}.rll-youtube-player iframe{position:absolute;top:0;left:0;width:100%;height:100%;z-index:100;background:0 0}.rll-youtube-player img{bottom:0;display:block;left:0;margin:auto;max-width:100%;width:100%;position:absolute;right:0;top:0;border:none;height:auto;cursor:pointer;-webkit-transition:.4s all;-moz-transition:.4s all;transition:.4s all}.rll-youtube-player img:hover{-webkit-filter:brightness(75%)}.rll-youtube-player .play{height:72px;width:72px;left:50%;top:50%;margin-left:-36px;margin-top:-36px;position:absolute;background:url(' . $args['base_url'] . 'img/youtube.png) no-repeat;cursor:pointer}'; + + if ( $args['responsive_embeds'] ) { + $css .= '.wp-has-aspect-ratio .rll-youtube-player{position:absolute;padding-bottom:0;width:100%;height:100%;top:0;bottom:0;left:0;right:0}'; + } + + return $css; + } + + /** + * Inserts the CSS needed when Javascript is not enabled to keep the display correct + */ + public function insertNoJSCSS() { + echo $this->getNoJSCSS(); + } + + /** + * Returns the CSS to correctly display images when JavaScript is disabled + * + * @return string + */ + public function getNoJSCSS() { + return ''; + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Dependencies/RocketLazyload/Iframe.php b/wp-content/plugins/wp-rocket/inc/Dependencies/RocketLazyload/Iframe.php new file mode 100644 index 0000000..202964a --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Dependencies/RocketLazyload/Iframe.php @@ -0,0 +1,232 @@ + false, + ]; + + $args = wp_parse_args( $args, $defaults ); + + if ( ! preg_match_all( '@\s.+)>.*@iUs', $buffer, $iframes, PREG_SET_ORDER ) ) { + return $html; + } + + $iframes = array_unique( $iframes, SORT_REGULAR ); + + foreach ( $iframes as $iframe ) { + if ( $this->isIframeExcluded( $iframe ) ) { + continue; + } + + // Given the previous regex pattern, $iframe['atts'] starts with a whitespace character. + if ( ! preg_match( '@\ssrc\s*=\s*(\'|")(?.*)\1@iUs', $iframe['atts'], $atts ) ) { + continue; + } + + $iframe['src'] = trim( $atts['src'] ); + + if ( '' === $iframe['src'] ) { + continue; + } + + if ( $args['youtube'] ) { + $iframe_lazyload = $this->replaceYoutubeThumbnail( $iframe ); + } + + if ( empty( $iframe_lazyload ) ) { + $iframe_lazyload = $this->replaceIframe( $iframe ); + } + + $html = str_replace( $iframe[0], $iframe_lazyload, $html ); + + unset( $iframe_lazyload ); + } + + return $html; + } + + /** + * Checks if the provided iframe is excluded from lazyload + * + * @param array $iframe Array of matched patterns. + * @return boolean + */ + public function isIframeExcluded( $iframe ) { + + foreach ( $this->getExcludedPatterns() as $excluded_pattern ) { + if ( strpos( $iframe[0], $excluded_pattern ) !== false ) { + return true; + } + } + + return false; + } + + /** + * Gets patterns excluded from lazyload for iframes + * + * @since 2.1.1 + * + * @return array + */ + private function getExcludedPatterns() { + /** + * Filters the patterns excluded from lazyload for iframes + * + * @since 2.1.1 + * + * @param array $excluded_patterns Array of excluded patterns. + */ + return apply_filters( + 'rocket_lazyload_iframe_excluded_patterns', + [ + 'gform_ajax_frame', + 'data-no-lazy=', + 'recaptcha/api/fallback', + 'loading="eager"', + 'data-skip-lazy', + 'skip-lazy', + ] + ); + } + + /** + * Applies lazyload on the iframe provided + * + * @param array $iframe Array of matched elements. + * @return string + */ + private function replaceIframe( $iframe ) { + /** + * Filter the LazyLoad placeholder on src attribute + * + * @since 1.0 + * + * @param string $placeholder placeholder that will be printed. + */ + $placeholder = apply_filters( 'rocket_lazyload_placeholder', 'about:blank' ); + + $placeholder_atts = str_replace( $iframe['src'], $placeholder, $iframe['atts'] ); + $iframe_lazyload = str_replace( $iframe['atts'], $placeholder_atts . ' data-rocket-lazyload="fitvidscompatible" data-lazy-src="' . esc_url( $iframe['src'] ) . '"', $iframe[0] ); + + if ( ! preg_match( '@\sloading\s*=\s*(\'|")(?:lazy|auto)\1@i', $iframe_lazyload ) ) { + $iframe_lazyload = str_replace( ''; + + return $iframe_lazyload; + } + + /** + * Replaces the iframe provided by the Youtube thumbnail + * + * @param array $iframe Array of matched elements. + * @return bool|string + */ + private function replaceYoutubeThumbnail( $iframe ) { + $youtube_id = $this->getYoutubeIDFromURL( $iframe['src'] ); + + if ( ! $youtube_id ) { + return false; + } + + $query = wp_parse_url( htmlspecialchars_decode( $iframe['src'] ), PHP_URL_QUERY ); + + $youtube_url = $this->changeYoutubeUrlForYoutuDotBe( $iframe['src'] ); + $youtube_url = $this->cleanYoutubeUrl( $iframe['src'] ); + /** + * Filter the LazyLoad HTML output on Youtube iframes + * + * @since 2.11 + * + * @param array $html Output that will be printed. + */ + $youtube_lazyload = apply_filters( 'rocket_lazyload_youtube_html', '
' ); + $youtube_lazyload .= ''; + + return $youtube_lazyload; + } + + /** + * Gets the Youtube ID from the URL provided + * + * @param string $url URL to search. + * @return bool|string + */ + public function getYoutubeIDFromURL( $url ) { + $pattern = '#^(?:https?:)?(?://)?(?:www\.)?(?:youtu\.be|youtube\.com|youtube-nocookie\.com)/(?:embed/|v/|watch/?\?v=)?([\w-]{11})#iU'; + $result = preg_match( $pattern, $url, $matches ); + + if ( ! $result ) { + return false; + } + + // exclude playlist. + if ( 'videoseries' === $matches[1] ) { + return false; + } + + return $matches[1]; + } + + /** + * Changes URL youtu.be/ID to youtube.com/embed/ID + * + * @param string $url URL to replace. + * @return string Unchanged URL or modified URL. + */ + public function changeYoutubeUrlForYoutuDotBe( $url ) { + $pattern = '#^(?:https?:)?(?://)?(?:www\.)?(?:youtu\.be)/(?:embed/|v/|watch/?\?v=)?([\w-]{11})#iU'; + $result = preg_match( $pattern, $url, $matches ); + + if ( ! $result ) { + return $url; + } + + return 'https://www.youtube.com/embed/' . $matches[1]; + } + + /** + * Cleans Youtube URL. Keeps only scheme, host and path. + * + * @param string $url URL to be cleaned. + * @return string Cleaned URL + */ + public function cleanYoutubeUrl( $url ) { + $parsed_url = wp_parse_url( $url, -1 ); + $scheme = isset( $parsed_url['scheme'] ) ? $parsed_url['scheme'] . '://' : '//'; + $host = isset( $parsed_url['host'] ) ? $parsed_url['host'] : ''; + $path = isset( $parsed_url['path'] ) ? $parsed_url['path'] : ''; + + return $scheme . $host . $path; + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Dependencies/RocketLazyload/Image.php b/wp-content/plugins/wp-rocket/inc/Dependencies/RocketLazyload/Image.php new file mode 100644 index 0000000..6a95df4 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Dependencies/RocketLazyload/Image.php @@ -0,0 +1,602 @@ +]*)>(?:.+)?<\/script>/Umsi', '', $html ); + $clean_buffer = preg_replace( '##Umsi', '', $clean_buffer ); + if (! preg_match_all('#\s.+)\s?/?>#iUs', $clean_buffer, $images, PREG_SET_ORDER)) { + return $html; + } + + $images = array_unique( $images, SORT_REGULAR ); + + foreach ( $images as $image ) { + $image = $this->canLazyload( $image ); + + if ( ! $image ) { + continue; + } + + $image_lazyload = $this->replaceImage( $image ); + $image_lazyload .= $this->noscript( $image[0] ); + $html = str_replace( $image[0], $image_lazyload, $html ); + + unset( $image_lazyload ); + } + + return $html; + } + + /** + * Applies lazyload on background images defined in style attributes + * + * @param string $html Original HTML. + * @param string $buffer Content to parse. + * @return string + */ + public function lazyloadBackgroundImages( $html, $buffer ) { + if ( ! preg_match_all( '#<(?div|figure|section|span|li|a)\s+(?[^>]+[\'"\s])?style\s*=\s*([\'"])(?.*?)\3(?[^>]*)>#is', $buffer, $elements, PREG_SET_ORDER ) ) { + return $html; + } + + foreach ( $elements as $element ) { + if ( $this->isExcluded( $element['before'] . $element['after'], $this->getExcludedAttributes() ) ) { + continue; + } + + if ( ! preg_match( '#background-image\s*:\s*(?\s*url\s*\((?[^)]+)\))\s*;?#is', $element['styles'], $url ) ) { + continue; + } + + $url['url'] = esc_url( + trim( + strip_tags( + html_entity_decode( + $url['url'], ENT_QUOTES|ENT_HTML5 + ) + ), '\'" ' + ) + ); + + if ( $this->isExcluded( $url['url'], $this->getExcludedSrc() ) ) { + continue; + } + + $lazy_bg = $this->addLazyCLass( $element[0] ); + $lazy_bg = str_replace( $url[0], '', $lazy_bg ); + $lazy_bg = str_replace( '<' . $element['tag'], '<' . $element['tag'] . ' data-bg="' . esc_attr( $url['url'] ) . '"', $lazy_bg ); + + $html = str_replace( $element[0], $lazy_bg, $html ); + unset( $lazy_bg ); + } + + return $html; + } + + /** + * Add the identifier class to the element + * + * @param string $element Element to add the class to. + * @return string + */ + private function addLazyClass( $element ) { + $class = $this->getClasses( $element ); + if ( empty( $class ) ) { + return preg_replace( '#<(img|div|figure|section|li|span|a)([^>]*)>#is', '<\1 class="rocket-lazyload"\2>', $element ); + } + + if ( empty( $class['attribute'] ) || empty( $class['classes'] ) ) { + return str_replace( $class['attribute'], 'class="rocket-lazyload"', $element ); + } + + $quotes = $this->getAttributeQuotes( $class['classes'] ); + $classes = $this->trimOuterQuotes( $class['classes'], $quotes ); + + if ( empty( $classes ) ) { + return str_replace( $class['attribute'], 'class="rocket-lazyload"', $element ); + } + + $classes .= ' rocket-lazyload'; + + return str_replace( + $class['attribute'], + 'class=' . $this->normalizeClasses( $classes, $quotes ), + $element + ); + } + + /** + * Gets the attribute value's outer quotation mark, if one exists, i.e. " or '. + * + * @param string $attribute_value The target attribute's value. + * + * @return bool|string quotation character; else false when no quotation mark. + */ + private function getAttributeQuotes( $attribute_value ) { + $attribute_value = trim( $attribute_value ); + $first_char = $attribute_value[0]; + + if ( '"' === $first_char || "'" === $first_char ) { + return $first_char; + } + + return false; + } + + /** + * Gets the class attribute and values from the given element, if it exists. + * + * @param string $element Given HTML element to extract classes from. + * + * @return bool|string[] { + * @type string $attribute Class attribute and value, e.g. class="value" + * @type string $classes String of class attribute's value(s) + * }; else, false when no class attribute exists. + */ + private function getClasses( $element ) { + if ( ! preg_match( '#class\s*=\s*(?["\'].*?["\']|[^\s]+)#is', $element, $class ) ) { + return false; + } + + if ( empty( $class ) ) { + return false; + } + + if ( ! isset( $class['classes'] ) ) { + return false; + } + + return [ + 'attribute' => $class[0], + 'classes' => $class['classes'], + ]; + } + + /** + * Removes outer single or double quotations. + * + * @param string $string String to strip quotes from. + * @param string $quotes The outer quotes to remove. + * + * @return string string without quotes. + */ + private function trimOuterQuotes( $string, $quotes ) { + $string = trim( $string ); + if ( empty( $string ) ) { + return ''; + } + + if ( empty( $quotes ) ) { + return $string; + } + + $string = ltrim( $string, $quotes ); + $string = rtrim( $string, $quotes ); + return trim( $string ); + } + + /** + * Normalizes the class attribute values to ensure well-formed. + * + * @param string $classes String of class attribute value(s). + * @param string|bool $quotes Optional. Quotation mark to wrap around the classes. + * + * @return string well-formed class attributes. + */ + private function normalizeClasses( $classes, $quotes = '"' ) { + $array_of_classes = $this->stringToArray( $classes ); + $classes = implode( ' ', $array_of_classes ); + + if ( false === $quotes ) { + $quotes = '"'; + } + + return $quotes . $classes . $quotes; + } + + /** + * Converts the given string into an array of strings. + * + * Note: + * 1. Removes empties. + * 2. Trims each string. + * + * @param string $string The target string to convert. + * @param string $delimiter Optional. Default: ' ' empty string. + * + * @return array An array of trimmed strings. + */ + private function stringToArray( $string, $delimiter = ' ' ) { + if ( empty( $string ) ) { + return []; + } + + $array = explode( $delimiter, $string ); + $array = array_map('trim', $array ); + + // Remove empties. + return array_filter( $array ); + } + + /** + * Applies lazyload on picture elements found in the HTML. + * + * @param string $html Original HTML. + * @param string $buffer Content to parse. + * @return string + */ + public function lazyloadPictures( $html, $buffer ) { + if ( ! preg_match_all( '#(?.*)#iUs', $buffer, $pictures, PREG_SET_ORDER ) ) { + return $html; + } + + $pictures = array_unique( $pictures, SORT_REGULAR ); + $excluded = array_merge( $this->getExcludedAttributes(), $this->getExcludedSrc() ); + + foreach ( $pictures as $picture ) { + if ( $this->isExcluded( $picture[0], $excluded ) ) { + continue; + } + + if ( preg_match_all( '#\s.+)>#iUs', $picture['sources'], $sources, PREG_SET_ORDER ) ) { + $sources = array_unique( $sources, SORT_REGULAR ); + + $lazy_sources = 0; + + foreach ( $sources as $source ) { + $lazyload_srcset = preg_replace( '/([\s"\'])srcset/i', '\1data-lazy-srcset', $source[0] ); + $html = str_replace( $source[0], $lazyload_srcset, $html ); + + unset( $lazyload_srcset ); + $lazy_sources++; + } + } + + if ( 0 === $lazy_sources ) { + continue; + } + + if ( ! preg_match( '#\s.+)\s?/?>#iUs', $picture[0], $img ) ) { + continue; + } + + $img = $this->canLazyload( $img ); + + if ( ! $img ) { + continue; + } + + $img_lazy = $this->replaceImage( $img ); + $img_lazy .= $this->noscript( $img[0] ); + $safe_img = str_replace('/', '\/', preg_quote( $img[0], '#' )); + $html = preg_replace( '#]*>.*' . $safe_img . '.*<\/noscript>(*SKIP)(*FAIL)|' . $safe_img . '#iU', $img_lazy, $html ); + + unset( $img_lazy ); + } + + return $html; + } + + /** + * Checks if the image can be lazyloaded + * + * @param Array $image Array of image data coming from Regex. + * @return bool|Array + */ + private function canLazyload( $image ) { + if ( $this->isExcluded( $image['atts'], $this->getExcludedAttributes() ) ) { + return false; + } + + // Given the previous regex pattern, $image['atts'] starts with a whitespace character. + if ( ! preg_match( '@\ssrc\s*=\s*(\'|")(?.*)\1@iUs', $image['atts'], $atts ) ) { + return false; + } + + $image['src'] = trim( $atts['src'] ); + + if ( '' === $image['src'] ) { + return false; + } + + if ( $this->isExcluded( $image['src'], $this->getExcludedSrc() ) ) { + return false; + } + + // Don't apply LazyLoad on images from WP Retina x2. + if ( function_exists( 'wr2x_picture_rewrite' ) ) { + if ( wr2x_get_retina( trailingslashit( ABSPATH ) . wr2x_get_pathinfo_from_image_src( trim( $image['src'], '"' ) ) ) ) { + return false; + } + } + + return $image; + } + + /** + * Checks if the provided string matches with the provided excluded patterns + * + * @param string $string String to check. + * @param array $excluded_values Patterns to match against. + * @return boolean + */ + public function isExcluded( $string, $excluded_values ) { + if ( ! is_array( $excluded_values ) ) { + (array) $excluded_values; + } + + if ( empty( $excluded_values ) ) { + return false; + } + + foreach ( $excluded_values as $excluded_value ) { + if ( strpos( $string, $excluded_value ) !== false ) { + return true; + } + } + + return false; + } + + /** + * Returns the list of excluded attributes + * + * @return array + */ + public function getExcludedAttributes() { + /** + * Filters the attributes used to prevent lazylad from being applied + * + * @since 1.0 + * @author Remy Perona + * + * @param array $excluded_attributes An array of excluded attributes. + */ + return apply_filters( + 'rocket_lazyload_excluded_attributes', + [ + 'data-src=', + 'data-no-lazy=', + 'data-lazy-original=', + 'data-lazy-src=', + 'data-lazysrc=', + 'data-lazyload=', + 'data-bgposition=', + 'data-envira-src=', + 'fullurl=', + 'lazy-slider-img=', + 'data-srcset=', + 'class="ls-l', + 'class="ls-bg', + 'soliloquy-image', + 'loading="eager"', + 'swatch-img', + 'data-height-percentage', + 'data-large_image', + 'avia-bg-style-fixed', + 'data-skip-lazy', + 'skip-lazy', + ] + ); + } + + /** + * Returns the list of excluded src + * + * @return array + */ + public function getExcludedSrc() { + /** + * Filters the src used to prevent lazylad from being applied + * + * @since 1.0 + * @author Remy Perona + * + * @param array $excluded_src An array of excluded src. + */ + return apply_filters( + 'rocket_lazyload_excluded_src', + [ + '/wpcf7_captcha/', + 'timthumb.php?src', + 'woocommerce/assets/images/placeholder.png', + ] + ); + } + + /** + * Replaces the original image by the lazyload one + * + * @param array $image Array of matches elements. + * @return string + */ + private function replaceImage( $image ) { + $width = 0; + $height = 0; + + if ( preg_match( '@[\s"\']width\s*=\s*(\'|")(?.*)\1@iUs', $image['atts'], $atts ) ) { + $width = absint( $atts['width'] ); + } + + if ( preg_match( '@[\s"\']height\s*=\s*(\'|")(?.*)\1@iUs', $image['atts'], $atts ) ) { + $height = absint( $atts['height'] ); + } + + $placeholder_atts = preg_replace( '@\ssrc\s*=\s*(\'|")(?.*)\1@iUs', ' src="' . $this->getPlaceholder( $width, $height ) . '"', $image['atts'] ); + + $image_lazyload = str_replace( $image['atts'], $placeholder_atts . ' data-lazy-src="' . $image['src'] . '"', $image[0] ); + + if ( ! preg_match( '@\sloading\s*=\s*(\'|")(?:lazy|auto)\1@i', $image_lazyload ) && apply_filters( 'rocket_use_native_lazyload', false ) ) { + $image_lazyload = str_replace( '' . $element . ''; + } + + /** + * Applies lazyload on srcset and sizes attributes + * + * @param string $html HTML image tag. + * @return string + */ + public function lazyloadResponsiveAttributes( $html ) { + $html = preg_replace( '/[\s|"|\'](srcset)\s*=\s*("|\')([^"|\']+)\2/i', ' data-lazy-$1=$2$3$2', $html ); + $html = preg_replace( '/[\s|"|\'](sizes)\s*=\s*("|\')([^"|\']+)\2/i', ' data-lazy-$1=$2$3$2', $html ); + + return $html; + } + + /** + * Finds patterns matching smiley and call the callback method to replace them with the image + * + * @param string $text Content to search in. + * @return string + */ + public function convertSmilies( $text ) { + global $wp_smiliessearch; + + if ( ! get_option( 'use_smilies' ) || empty( $wp_smiliessearch ) ) { + return $text; + } + + $output = ''; + // HTML loop taken from texturize function, could possible be consolidated. + $textarr = preg_split( '/(<.*>)/U', $text, -1, PREG_SPLIT_DELIM_CAPTURE ); // capture the tags as well as in between. + $stop = count( $textarr );// loop stuff. + + // Ignore proessing of specific tags. + $tags_to_ignore = 'code|pre|style|script|textarea'; + $ignore_block_element = ''; + + for ( $i = 0; $i < $stop; $i++ ) { + $content = $textarr[ $i ]; + + // If we're in an ignore block, wait until we find its closing tag. + if ( '' === $ignore_block_element && preg_match( '/^<(' . $tags_to_ignore . ')>/', $content, $matches ) ) { + $ignore_block_element = $matches[1]; + } + + // If it's not a tag and not in ignore block. + if ( '' === $ignore_block_element && strlen( $content ) > 0 && '<' !== $content[0] ) { + $content = preg_replace_callback( $wp_smiliessearch, [ $this, 'translateSmiley' ], $content ); + } + + // did we exit ignore block. + if ( '' !== $ignore_block_element && '' === $content ) { + $ignore_block_element = ''; + } + + $output .= $content; + } + + return $output; + } + + /** + * Replace matches by smiley image, lazyloaded + * + * @param array $matches Array of matches. + * @return string + */ + private function translateSmiley( $matches ) { + global $wpsmiliestrans; + + if ( count( $matches ) === 0 ) { + return ''; + } + + $smiley = trim( reset( $matches ) ); + $img = $wpsmiliestrans[ $smiley ]; + + $matches = []; + $ext = preg_match( '/\.([^.]+)$/', $img, $matches ) ? strtolower( $matches[1] ) : false; + $image_exts = [ 'jpg', 'jpeg', 'jpe', 'gif', 'png' ]; + + // Don't convert smilies that aren't images - they're probably emoji. + if ( ! in_array( $ext, $image_exts, true ) ) { + return $img; + } + + /** + * Filter the Smiley image URL before it's used in the image element. + * + * @since 2.9.0 + * + * @param string $smiley_url URL for the smiley image. + * @param string $img Filename for the smiley image. + * @param string $site_url Site URL, as returned by site_url(). + */ + $src_url = apply_filters( 'smilies_src', includes_url( "images/smilies/$img" ), $img, site_url() ); + + // Don't LazyLoad if process is stopped for these reasons. + if ( is_feed() || is_preview() ) { + return sprintf( ' %s ', esc_url( $src_url ), esc_attr( $smiley ) ); + } + + return sprintf( ' %s ', $this->getPlaceholder(), esc_url( $src_url ), esc_attr( $smiley ) ); + } + + /** + * Returns the placeholder for the src attribute + * + * @since 1.2 + * @author Remy Perona + * + * @param int $width Width of the placeholder image. Default 0. + * @param int $height Height of the placeholder image. Default 0. + * @return string + */ + public function getPlaceholder( $width = 0, $height = 0 ) { + $width = 0 === $width ? 0 : absint( $width ); + $height = 0 === $height ? 0 : absint( $height ); + + $placeholder = str_replace( ' ', '%20', "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 $width $height'%3E%3C/svg%3E" ); + /** + * Filter the image lazyLoad placeholder on src attribute + * + * @since 1.1 + * + * @param string $placeholder Placeholder that will be printed. + * @param int $width Placeholder width. + * @param int $height Placeholder height. + */ + return apply_filters( 'rocket_lazyload_placeholder', $placeholder, $width, $height ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/Activation/Activation.php b/wp-content/plugins/wp-rocket/inc/Engine/Activation/Activation.php new file mode 100644 index 0000000..b0b4930 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/Activation/Activation.php @@ -0,0 +1,100 @@ +add( 'template_path', WP_ROCKET_PATH . 'views' ); + $container->addServiceProvider( 'WP_Rocket\Engine\Activation\ServiceProvider' ); + $container->addServiceProvider( 'WP_Rocket\ThirdParty\Hostings\ServiceProvider' ); + + $host_type = HostResolver::get_host_service(); + + if ( ! empty( $host_type ) ) { + array_unshift( self::$activators, $host_type ); + } + + foreach ( self::$activators as $activator ) { + $container->get( $activator ); + } + + // Last constants. + define( 'WP_ROCKET_PLUGIN_NAME', 'WP Rocket' ); + define( 'WP_ROCKET_PLUGIN_SLUG', sanitize_key( WP_ROCKET_PLUGIN_NAME ) ); + + if ( defined( 'SUNRISE' ) && SUNRISE === 'on' && function_exists( 'domain_mapping_siteurl' ) ) { + require WP_ROCKET_INC_PATH . 'domain-mapping.php'; + } + + require WP_ROCKET_FUNCTIONS_PATH . 'options.php'; + require WP_ROCKET_FUNCTIONS_PATH . 'formatting.php'; + require WP_ROCKET_FUNCTIONS_PATH . 'i18n.php'; + require WP_ROCKET_FUNCTIONS_PATH . 'htaccess.php'; + + if ( class_exists( 'WPaaS\Plugin' ) ) { + require WP_ROCKET_3RD_PARTY_PATH . 'hosting/godaddy.php'; + } + + /** + * WP Rocket activation. + * + * @since 3.1.5 + */ + do_action( 'rocket_activation' ); + + if ( rocket_valid_key() ) { + // Add All WP Rocket rules of the .htaccess file. + flush_rocket_htaccess(); + } + + // Create the cache folders (wp-rocket & min). + rocket_init_cache_dir(); + + // Create the config folder (wp-rocket-config). + rocket_init_config_dir(); + + // Update customer key & licence. + wp_remote_get( + WP_ROCKET_WEB_API . 'activate-licence.php', + [ + 'blocking' => false, + ] + ); + + wp_remote_get( + home_url(), + [ + 'timeout' => 0.01, + 'blocking' => false, + 'user-agent' => 'WP Rocket/Homepage Preload', + 'sslverify' => apply_filters( 'https_local_ssl_verify', false ), // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound + ] + ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/Activation/ActivationInterface.php b/wp-content/plugins/wp-rocket/inc/Engine/Activation/ActivationInterface.php new file mode 100644 index 0000000..951b042 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/Activation/ActivationInterface.php @@ -0,0 +1,12 @@ +getContainer() + ->inflector( 'WP_Rocket\Engine\Activation\ActivationInterface' ) + ->invokeMethod( 'activate', [] ); + } + + /** + * Registers the option array in the container. + */ + public function register() { + $filesystem = rocket_direct_filesystem(); + + $this->getContainer()->add( 'advanced_cache', 'WP_Rocket\Engine\Cache\AdvancedCache' ) + ->withArgument( $this->getContainer()->get( 'template_path' ) . '/cache/' ) + ->withArgument( $filesystem ); + $this->getContainer()->add( 'capabilities_manager', 'WP_Rocket\Engine\Capabilities\Manager' ); + $this->getContainer()->add( 'wp_cache', 'WP_Rocket\Engine\Cache\WPCache' ) + ->withArgument( $filesystem ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/Admin/Beacon/Beacon.php b/wp-content/plugins/wp-rocket/inc/Engine/Admin/Beacon/Beacon.php new file mode 100644 index 0000000..ce09f1a --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/Admin/Beacon/Beacon.php @@ -0,0 +1,630 @@ +options = $options; + $this->support_data = $support_data; + } + + /** + * Return an array of events that this subscriber wants to listen to. + * + * @since 3.2 + * + * @return array + */ + public static function get_subscribed_events() { + return [ + 'admin_print_footer_scripts-settings_page_wprocket' => 'insert_script', + ]; + } + + /** + * Configures and returns beacon javascript + * + * @since 3.2 + * + * @return void + */ + public function insert_script() { + if ( ! current_user_can( 'rocket_manage_options' ) ) { + return; + } + + switch ( $this->get_user_locale() ) { + case 'fr': + $form_id = '9db9417a-5e2f-41dd-8857-1421d5112aea'; + break; + default: + $form_id = '44cc73fb-7636-4206-b115-c7b33823551b'; + break; + } + + $data = [ + 'form_id' => $form_id, + 'identify' => wp_json_encode( $this->identify_data() ), + 'session' => wp_json_encode( $this->support_data->get_support_data() ), + 'prefill' => wp_json_encode( $this->prefill_data() ), + ]; + + echo $this->generate( 'beacon', $data ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + } + + /** + * Sets the locale property with the current user locale if not set yet + * + * @since 3.5 + * + * @return string + */ + private function get_user_locale() { + if ( ! isset( $this->locale ) ) { + $this->locale = current( array_slice( explode( '_', get_user_locale() ), 0, 1 ) ); + } + + /** + * Filters the locale ID for Beacon + * + * @since 3.6 + * + * @param string $locale The locale ID. + */ + return apply_filters( 'rocket_beacon_locale', $this->locale ); + } + + /** + * Returns Identify data to pass to Beacon + * + * @since 3.0 + * + * @return array + */ + private function identify_data() { + $identify_data = [ + 'email' => $this->options->get( 'consumer_email' ), + 'Website' => home_url(), + ]; + $customer_data = get_transient( 'wp_rocket_customer_data' ); + + if ( false !== $customer_data && isset( $customer_data->status ) ) { + $identify_data['status'] = $customer_data->status; + } + + return $identify_data; + } + + /** + * Returns prefill data to pass to Beacon + * + * @since 3.6 + * + * @return array + */ + private function prefill_data() { + $prefill_data = [ + 'fields' => [ + [ + 'id' => 21728, + 'value' => 108003, // default to nulled. + ], + ], + ]; + + $customer_data = get_transient( 'wp_rocket_customer_data' ); + + if ( false === $customer_data || ! isset( $customer_data->licence_account ) ) { + return $prefill_data; + } + + $licenses = [ + 'Single' => 108000, + 'Plus' => 108001, + 'Infinite' => 108002, + 'Unavailable' => 108003, + ]; + + if ( isset( $licenses[ $customer_data->licence_account ] ) ) { + $prefill_data['fields'][0]['value'] = $licenses[ $customer_data->licence_account ]; + } + + return $prefill_data; + } + + /** + * Returns the IDs for the HelpScout docs for the corresponding section and language. + * + * @since 3.0 + * + * @param string $doc_id Section identifier. + * + * @return string|array + */ + public function get_suggest( $doc_id ) { + $suggest = [ + 'faq' => [ + 'en' => [ + [ + 'id' => '5569b671e4b027e1978e3c51', + 'url' => 'https://docs.wp-rocket.me/article/99-pages-are-not-cached-or-css-and-js-minification-are-not-working/?utm_source=wp_plugin&utm_medium=wp_rocket', + 'title' => 'Pages Are Not Cached or CSS and JS Minification Are Not Working', + ], + [ + 'id' => '556778c8e4b01a224b426fad', + 'url' => 'https://docs.wp-rocket.me/article/85-google-page-speed-grade-does-not-improve/?utm_source=wp_plugin&utm_medium=wp_rocket', + 'title' => 'Google PageSpeed Grade does not Improve', + ], + [ + 'id' => '556ef48ce4b01a224b428691', + 'url' => 'https://docs.wp-rocket.me/article/106-my-site-is-broken/?utm_source=wp_plugin&utm_medium=wp_rocket', + 'title' => 'My Site Is Broken', + ], + [ + 'id' => '54205957e4b099def9b55df0', + 'url' => 'https://docs.wp-rocket.me/article/19-resolving-issues-with-file-optimization/?utm_source=wp_plugin&utm_medium=wp_rocket', + 'title' => 'Resolving Issues with File Optimization', + ], + ], + 'fr' => [ + [ + 'id' => '5697d2dc9033603f7da31041', + 'url' => 'https://fr.docs.wp-rocket.me/article/264-les-pages-ne-sont-pas-mises-en-cache-ou-la-minification-css-et-js-ne-fonctionne-pas/?utm_source=wp_plugin&utm_medium=wp_rocket', + 'title' => 'Les pages ne sont pas mises en cache, ou la minification CSS et JS ne fonctionne pas', + ], + [ + 'id' => '569564dfc69791436155e0b0', + 'url' => 'https://fr.docs.wp-rocket.me/article/218-la-note-google-page-speed-ne-sameliore-pas/?utm_source=wp_plugin&utm_medium=wp_rocket', + 'title' => "La note Google Page Speed ne s'améliore pas", + ], + [ + 'id' => '5697d03bc69791436155ed69', + 'url' => 'https://fr.docs.wp-rocket.me/article/263-site-casse/?utm_source=wp_plugin&utm_medium=wp_rocket', + 'title' => 'Mon site est cassé', + ], + [ + 'id' => '56967d73c69791436155e637', + 'url' => 'https://fr.docs.wp-rocket.me/article/241-problemes-minification/?utm_source=wp_plugin&utm_medium=wp_rocket', + 'title' => "Résoudre les problèmes avec l'optimisation des fichiers", + ], + ], + ], + 'user_cache_section' => [ + 'en' => '56b55ba49033600da1c0b687,587920b5c697915403a0e1f4,560c66b0c697917e72165a6d', + 'fr' => '56cb9ba990336008e9e9e3d9,5879230cc697915403a0e211,569410999033603f7da2fa94', + ], + 'user_cache' => [ + 'en' => [ + 'id' => '56b55ba49033600da1c0b687', + 'url' => 'https://docs.wp-rocket.me/article/313-user-cache/?utm_source=wp_plugin&utm_medium=wp_rocket', + ], + 'fr' => [ + 'id' => '56cb9ba990336008e9e9e3d9', + 'url' => 'https://fr.docs.wp-rocket.me/article/333-cache-utilisateurs-connectes/?utm_source=wp_plugin&utm_medium=wp_rocket', + ], + ], + 'mobile_cache_section' => [ + 'en' => '577a5f1f903360258a10e52a,5678aa76c697914361558e92,5745b9a6c697917290ddc715', + 'fr' => '589b17a02c7d3a784630b249,5a6b32830428632faf6233dc,58a480e5dd8c8e56bfa7b85c', + ], + 'mobile_cache' => [ + 'en' => [ + 'id' => '577a5f1f903360258a10e52a', + 'url' => 'https://docs.wp-rocket.me/article/708-mobile-caching/?utm_source=wp_plugin&utm_medium=wp_rocket', + ], + 'fr' => [ + 'id' => '589b17a02c7d3a784630b249', + 'url' => 'https://fr.docs.wp-rocket.me/article/934-mise-en-cache-pour-mobile/?utm_source=wp_plugin&utm_medium=wp_rocket', + ], + ], + 'cache_ssl' => [ + 'en' => [ + 'id' => '56c24fd3903360436857f1ed', + 'url' => 'https://docs.wp-rocket.me/article/314-using-ssl-with-wp-rocket/?utm_source=wp_plugin&utm_medium=wp_rocket', + ], + 'fr' => [ + 'id' => '56cb9d24c6979102ccfc801c', + 'url' => 'https://fr.docs.wp-rocket.me/article/335-utiliser-ssl-wp-rocket/?utm_source=wp_plugin&utm_medium=wp_rocket', + ], + ], + 'cache_lifespan' => [ + 'en' => [ + 'id' => '555c7e9ee4b027e1978e17a5', + 'url' => 'https://docs.wp-rocket.me/article/78-how-often-is-the-cache-updated/?utm_source=wp_plugin&utm_medium=wp_rocket', + ], + 'fr' => [ + 'id' => '568f7df49033603f7da2ec72', + 'url' => 'https://fr.docs.wp-rocket.me/article/171-intervalle-cache/?utm_source=wp_plugin&utm_medium=wp_rocket', + ], + ], + 'cache_lifespan_section' => [ + 'en' => '555c7e9ee4b027e1978e17a5,5922fd0e0428634b4a33552c', + 'fr' => '568f7df49033603f7da2ec72,598080e1042863033a1b890e', + ], + 'nonce' => [ + 'en' => [ + 'id' => '5922fd0e0428634b4a33552c', + 'url' => 'https://docs.wp-rocket.me/article/975-nonces-and-cache-lifespan/?utm_source=wp_plugin&utm_medium=wp_rocket', + ], + 'fr' => [ + 'id' => '598080e1042863033a1b890e', + 'url' => 'https://fr.docs.wp-rocket.me/article/1015-nonces-delai-nettoyage-cache/?utm_source=wp_plugin&utm_medium=wp_rocket', + ], + ], + 'basic_section' => [ + 'en' => '55231415e4b0221aadf25676,588286b32c7d3a4a60b95b6c,58869c492c7d3a7846303a3d', + 'fr' => '569568269033603f7da30334,58e3be72dd8c8e5c57311c6e,59b7f049042863033a1cc5d0', + ], + 'css_section' => [ + 'en' => '54205957e4b099def9b55df0,5419ec47e4b099def9b5565f,5578cfbbe4b027e1978e6bb1,5569b671e4b027e1978e3c51,5923772c2c7d3a074e8ab8b9', + 'fr' => '56967d73c69791436155e637,56967e80c69791436155e646,56957209c69791436155e0f6,5697d2dc9033603f7da31041593fec6d2c7d3a0747cddb93', + ], + 'js_section' => [ + 'en' => '54205957e4b099def9b55df0,5419ec47e4b099def9b5565f,5578cfbbe4b027e1978e6bb1,587904cf90336009736c678e,54b9509de4b07997ea3f27c7,59236dfb0428634b4a3358f9', + 'fr' => '56967d73c69791436155e637,56967e80c69791436155e646,56957209c69791436155e0f6,58a337c12c7d3a576d352cde,56967eebc69791436155e649,593fe9882c7d3a0747cddb77', + ], + 'file_optimization' => [ + 'en' => [ + 'id' => '54205957e4b099def9b55df0', + 'url' => 'https://docs.wp-rocket.me/article/19-resolving-issues-with-file-optimization/?utm_source=wp_plugin&utm_medium=wp_rocket', + ], + 'fr' => [ + 'id' => '56967d73c69791436155e637', + 'url' => 'https://fr.docs.wp-rocket.me/article/241-problemes-minification/?utm_source=wp_plugin&utm_medium=wp_rocket', + ], + ], + 'combine' => [ + 'en' => [ + 'id' => '596eaf7d2c7d3a73488b3661', + 'url' => 'https://docs.wp-rocket.me/article/1009-configuration-for-http-2/?utm_source=wp_plugin&utm_medium=wp_rocket', + ], + 'fr' => [ + 'id' => '59a418ad042863033a1c572e', + 'url' => 'https://fr.docs.wp-rocket.me/article/1018-configuration-http-2/?utm_source=wp_plugin&utm_medium=wp_rocket', + ], + ], + 'exclude_inline_js' => [ + 'en' => [ + 'id' => '5b4879100428630abc0c0713', + 'url' => 'https://docs.wp-rocket.me/article/1104-excluding-inline-js-from-combine/?utm_source=wp_plugin&utm_medium=wp_rocket', + ], + ], + 'exclude_js' => [ + 'en' => [ + 'id' => '54b9509de4b07997ea3f27c7', + 'url' => 'https://docs.wp-rocket.me/article/39-excluding-external-js-from-concatenation/?utm_source=wp_plugin&utm_medium=wp_rocket', + ], + ], + 'defer_js' => [ + 'en' => [ + 'id' => '5d52138d2c7d3a68825e8faa', + 'url' => 'https://docs.wp-rocket.me/article/1265-load-javascript-deferred/?utm_source=wp_plugin&utm_medium=wp_rocket', + ], + 'fr' => [ + 'id' => '5d5ac08b2c7d3a7920be3649', + 'url' => 'https://fr.​docs.​wp-rocket.​me/article/1270-chargement-differe-des-fichiers-js/?utm_source=wp_plugin&utm_medium=wp_rocket', + ], + ], + 'jquery_migrate' => [ + 'en' => [ + 'id' => '5e1d27de2c7d3a7e9ae627e8', + 'url' => 'https://docs.wp-rocket.me/article/1304-remove-jquery-migrate/?utm_source=wp_plugin&utm_medium=wp_rocket', + ], + 'fr' => [ + 'id' => '5e5e5bfe04286364bc962504', + 'url' => 'https://fr.docs.wp-rocket.me/article/1309-supprimer-jquery-migrate/?utm_source=wp_plugin&utm_medium=wp_rocket', + ], + ], + 'delay_js' => [ + 'en' => [ + 'id' => '5f359695042863444aa04e26', + 'url' => 'https://docs.wp-rocket.me/article/1349-delay-javascript-execution/?utm_source=wp_plugin&utm_medium=wp_rocket', + ], + ], + 'async' => [ + 'en' => [ + 'id' => '5d52144c0428631e94f94ae2', + 'url' => 'https://docs.wp-rocket.me/article/1266-optimize-css-delivery/?utm_source=wp_plugin&utm_medium=wp_rocket', + ], + 'fr' => [ + 'id' => '5d5abada0428634552d85bff', + 'url' => 'https://fr.​docs.​wp-rocket.​me/article/1268-optimiser-le-chargement-du-css/?utm_source=wp_plugin&utm_medium=wp_rocket', + ], + ], + 'lazyload' => [ + 'en' => [ + 'id' => '5c884cf80428633d2cf38314', + 'url' => 'https://docs.wp-rocket.me/article/1141-using-lazyload-in-wp-rocket/?utm_source=wp_plugin&utm_medium=wp_rocket', + ], + 'fr' => [ + 'id' => '5c98ff532c7d3a1544614cf4', + 'url' => 'https://fr.docs.wp-rocket.me/article/1146-utiliser-lazyload-images-wp-rocket/?utm_source=wp_plugin&utm_medium=wp_rocket', + ], + ], + 'webp' => [ + 'en' => [ + 'id' => '5d72919704286364bc8ed49d', + 'url' => 'https://docs.wp-rocket.me/article/1282-webp', + ], + ], + 'lazyload_section' => [ + 'en' => '5c884cf80428633d2cf38314,54b85754e4b0512429883a86,5418c792e4b0e7b8127bed99,569ec4a69033603f7da32c93,5419e246e4b099def9b5561e,5a299b332c7d3a1a640cb402', + 'fr' => '56967a859033603f7da30858,56967952c69791436155e60a,56cb9c9d90336008e9e9e3dc,569676ea9033603f7da3083d,5a3a66f52c7d3a1943676524', + ], + 'sitemap_preload' => [ + 'en' => '541780fde4b005ed2d11784c,5a71c8ab2c7d3a4a4198a9b3,55b282ede4b0b0593824f852', + 'fr' => '5693d582c69791436155d645', + ], + 'preload_bot' => [ + 'en' => '541780fde4b005ed2d11784c,55b282ede4b0b0593824f852,559113eae4b027e1978eba11', + 'fr' => '5693d582c69791436155d645,569433d1c69791436155d99c', + ], + 'bot' => [ + 'en' => [ + 'id' => '541780fde4b005ed2d11784c', + 'url' => 'https://docs.wp-rocket.me/article/8-how-the-cache-is-preloaded/?utm_source=wp_plugin&utm_medium=wp_rocket', + ], + 'fr' => [ + 'id' => '5693d582c69791436155d645', + 'url' => 'https://fr.docs.wp-rocket.me/article/188-comment-est-pre-charge-le-cache/?utm_source=wp_plugin&utm_medium=wp_rocket', + ], + ], + 'dns_prefetch' => [ + 'en' => '541780fde4b005ed2d11784c', + 'fr' => '5693d582c69791436155d645', + ], + 'fonts_preload' => [ + 'en' => [ + 'id' => '5eab7729042863474d19f647', + 'url' => 'https://docs.wp-rocket.me/article/1317-preload-fonts/?utm_source=wp_plugin&utm_medium=wp_rocket', + ], + 'fr' => [ + 'id' => '5eb3add02c7d3a5ea54aa66d', + 'url' => 'https://fr.docs.wp-rocket.me/article/1319-precharger-polices/?utm_source=wp_plugin&utm_medium=wp_rocket', + ], + ], + 'preload_links' => [ + 'en' => [ + 'id' => '5f35939b042863444aa04df9', + 'url' => 'https://docs.wp-rocket.me/article/1348-preload-links/?utm_source=wp_plugin&utm_medium=wp_rocket', + ], + ], + 'never_cache' => [ + 'en' => '5519ab03e4b061031402119f,559110d0e4b027e1978eba09,56b55ba49033600da1c0b687,553ac7bfe4b0eb143c62af44,587920b5c697915403a0e1f4,5569b671e4b027e1978e3c51', + 'fr' => '56941c0cc69791436155d8ab,56943395c69791436155d99a,56cb9ba990336008e9e9e3d9,56942fc3c69791436155d987,5879230cc697915403a0e211,5697d2dc9033603f7da31041', + ], + 'always_purge_section' => [ + 'en' => '555c7e9ee4b027e1978e17a,55151406e4b0610314020a3f,5632858890336002f86d903e,5792c0c1903360293603896b', + 'fr' => '568f7df49033603f7da2ec72,5694194d9033603f7da2fb00,56951208c69791436155de2a,57a4a0c3c697910783242008', + ], + 'query_strings' => [ + 'en' => '590a83610428634b4a32d52c', + 'fr' => '597a04fd042863033a1b6da4', + ], + 'ecommerce' => [ + 'en' => [ + 'id' => '555c619ce4b027e1978e1767', + 'url' => 'https://docs.wp-rocket.me/article/75-is-wp-rocket-compatible-with-e-commerce-plugins/?utm_source=wp_plugin&utm_medium=wp_rocket', + ], + 'fr' => [ + 'id' => '568f8291c69791436155caea', + 'url' => 'https://fr.docs.wp-rocket.me/article/176-compatibilite-extensions-e-commerce/?utm_source=wp_plugin&utm_medium=wp_rocket', + ], + ], + 'cache_query_strings' => [ + 'en' => [ + 'id' => '590a83610428634b4a32d52c', + 'url' => 'https://docs.wp-rocket.me/article/971-caching-query-strings/?utm_source=wp_plugin&utm_medium=wp_rocket', + ], + 'fr' => [ + 'id' => '597a04fd042863033a1b6da4', + 'url' => 'https://fr.docs.wp-rocket.me/article/1014-cache-query-strings/?utm_source=wp_plugin&utm_medium=wp_rocket', + ], + ], + 'exclude_cache' => [ + 'en' => [ + 'id' => '5519ab03e4b061031402119f', + 'url' => 'https://docs.wp-rocket.me/article/54-exclude-pages-from-the-cache/?utm_source=wp_plugin&utm_medium=wp_rocket', + ], + 'fr' => [ + 'id' => '56941c0cc69791436155d8ab', + 'url' => 'https://fr.docs.wp-rocket.me/article/196-exclure-pages-cache/?utm_source=wp_plugin&utm_medium=wp_rocket', + ], + ], + 'always_purge' => [ + 'en' => [ + 'id' => '555c7e9ee4b027e1978e17a5', + 'url' => 'https://docs.wp-rocket.me/article/78-how-often-is-the-cache-updated/?utm_source=wp_plugin&utm_medium=wp_rocket', + ], + 'fr' => [ + 'id' => '568f7df49033603f7da2ec72', + 'url' => 'https://fr.docs.wp-rocket.me/article/171-intervalle-cache/?utm_source=wp_plugin&utm_medium=wp_rocket', + ], + ], + 'cleanup' => [ + 'en' => '55dcaa28e4b01d7a6a9bd373,578cd762c6979160ca1441cd,5569d11ae4b01a224b427725', + 'fr' => '5697cebbc69791436155ed5e,58b6e7a0dd8c8e56bfa819f5,5697cd85c69791436155ed50', + ], + 'slow_admin' => [ + 'en' => [ + 'id' => '55dcaa28e4b01d7a6a9bd373', + 'url' => 'https://docs.wp-rocket.me/article/121-wp-admin-area-is-slow/?utm_source=wp_plugin&utm_medium=wp_rocket', + ], + 'fr' => [ + 'id' => '5697cebbc69791436155ed5e', + 'url' => 'https://fr.docs.wp-rocket.me/article/260-la-zone-d-administration-wp-est-lente/?utm_source=wp_plugin&utm_medium=wp_rocket', + ], + ], + 'cdn_section' => [ + 'en' => '54c7fa3de4b0512429885b5c,54205619e4b0e7b8127bf849,54a6d578e4b047ebb774a687,56b2b4459033603f7da37acf,566f749f9033603f7da28459,5434667fe4b0310ce5ee867a', + 'fr' => '5696830b9033603f7da308ac,5696837e9033603f7da308ae,569685749033603f7da308c0,57a4961190336059d4edc9d8,5697d5f8c69791436155ed8e,569684d29033603f7da308b9', + ], + 'cdn' => [ + 'en' => [ + 'id' => '54c7fa3de4b0512429885b5c', + 'url' => 'https://docs.wp-rocket.me/article/42-using-wp-rocket-with-a-cdn/?utm_source=wp_plugin&utm_medium=wp_rocket', + ], + 'fr' => [ + 'id' => '5696830b9033603f7da308ac', + 'url' => 'https://fr.docs.wp-rocket.me/article/246-utiliser-wp-rocket-avec-un-cdn/?utm_source=wp_plugin&utm_medium=wp_rocket', + ], + ], + 'rocketcdn' => [ + 'en' => [ + 'id' => '5e4c84bd04286364bc958833', + 'url' => 'https://docs.wp-rocket.me/article/1307-rocketcdn/?utm_source=wp_plugin&utm_medium=wp_rocket', + ], + 'fr' => [ + 'id' => '5e5e36712c7d3a7e9ae89555', + 'url' => 'https://fr.docs.wp-rocket.me/article/1308-rocketcdn/?utm_source=wp_plugin&utm_medium=wp_rocket', + ], + ], + 'exclude_cdn' => [ + 'en' => [ + 'id' => '5434667fe4b0310ce5ee867a', + 'url' => 'https://docs.wp-rocket.me/article/24-resolving-issues-with-cdn-and-fonts-icons/?utm_source=wp_plugin&utm_medium=wp_rocket', + ], + 'fr' => [ + 'id' => '569684d29033603f7da308b9', + 'url' => 'https://fr.docs.wp-rocket.me/article/248-resoudre-des-problemes-avec-cdn-et-les-polices-icones/?utm_source=wp_plugin&utm_medium=wp_rocket', + ], + ], + 'cloudflare_credentials' => [ + 'en' => [ + 'id' => '54205619e4b0e7b8127bf849', + 'url' => 'https://docs.wp-rocket.me/article/18-using-wp-rocket-with-cloudflare/?utm_source=wp_plugin&utm_medium=wp_rocket', + ], + 'fr' => [ + 'id' => '5696837e9033603f7da308ae', + 'url' => 'https://fr.docs.wp-rocket.me/article/247-utiliser-wp-rocket-avec-cloudflare/?utm_source=wp_plugin&utm_medium=wp_rocket', + ], + ], + 'cloudflare_settings' => [ + 'en' => [ + 'id' => '54205619e4b0e7b8127bf849', + 'url' => 'https://docs.wp-rocket.me/article/18-using-wp-rocket-with-cloudflare/?utm_source=wp_plugin&utm_medium=wp_rocket', + ], + 'fr' => [ + 'id' => '5696837e9033603f7da308ae', + 'url' => 'https://fr.docs.wp-rocket.me/article/247-utiliser-wp-rocket-avec-cloudflare/?utm_source=wp_plugin&utm_medium=wp_rocket', + ], + ], + 'cloudflare_credentials_api' => [ + 'en' => [ + 'id' => '54205619e4b0e7b8127bf849', + 'url' => 'https://docs.wp-rocket.me/article/18-using-wp-rocket-with-cloudflare/?utm_source=wp_plugin&utm_medium=wp_rocket#add-on', + ], + 'fr' => [ + 'id' => '5696837e9033603f7da308ae', + 'url' => 'https://fr.docs.wp-rocket.me/article/247-utiliser-wp-rocket-avec-cloudflare/?utm_source=wp_plugin&utm_medium=wp_rocket#add-on', + ], + ], + 'sucuri_credentials' => [ + 'en' => [ + 'id' => '5bce07be2c7d3a04dd5bf94d', + 'url' => 'https://docs.wp-rocket.me/article/1120-sucuri-add-on/?utm_source=wp_plugin&utm_medium=wp_rocket', + ], + 'fr' => [ + 'id' => '5bcf39c72c7d3a4db66085b9', + 'url' => 'https://fr.docs.wp-rocket.me/article/1122-sucuri-add-on/?utm_source=wp_plugin&utm_medium=wp_rocket', + ], + ], + 'varnish' => [ + 'en' => [ + 'id' => '56f48132c6979115a34095bd', + 'url' => 'https://docs.wp-rocket.me/article/493-using-varnish-with-wp-rocket/?utm_source=wp_plugin&utm_medium=wp_rocket', + ], + 'fr' => [ + 'id' => '56fd2f789033601d6683e574', + 'url' => 'https://fr.docs.wp-rocket.me/article/512-varnish-wp-rocket-2-7/?utm_source=wp_plugin&utm_medium=wp_rocket', + ], + ], + 'heartbeat_settings' => [ + 'en' => [ + 'id' => '5bcdfecd042863158cc7b672', + 'url' => 'https://docs.wp-rocket.me/article/1119-control-wordpress-heartbeat-api/?utm_source=wp_plugin&utm_medium=wp_rocket', + ], + 'fr' => [ + 'id' => '5bcf4378042863215a46bc00', + 'url' => 'https://fr.docs.wp-rocket.me/article/1124-controler-api-wordpress-heartbeat/?utm_source=wp_plugin&utm_medium=wp_rocket', + ], + ], + 'google_tracking' => [ + 'en' => [ + 'id' => '5b4693220428630abc0bf97b', + 'url' => 'https://docs.wp-rocket.me/article/1103-google-tracking-add-on/?utm_source=wp_plugin&utm_medium=wp_rocket', + ], + ], + 'facebook_tracking' => [ + 'en' => [ + 'id' => '5bc904e7042863158cc79d57', + 'url' => 'https://docs.wp-rocket.me/article/1117-facebook-pixel-add-on/?utm_source=wp_plugin&utm_medium=wp_rocket', + ], + 'fr' => [ + 'id' => '5bcf3d35042863215a46bb7f', + 'url' => 'https://fr.docs.wp-rocket.me/article/1123-add-on-facebook-pixel/?utm_source=wp_plugin&utm_medium=wp_rocket', + ], + ], + 'google_fonts' => [ + 'en' => [ + 'id' => '5e8687c22c7d3a7e9aea4c4a', + 'url' => 'https://docs.wp-rocket.me/article/1312-optimize-google-fonts', + ], + 'fr' => [ + 'id' => '5e970f512c7d3a7e9aeaf9fb', + 'url' => 'https://fr.docs.wp-rocket.me/article/1314-optimiser-les-google-fonts/?utm_source=wp_plugin&utm_medium=wp_rocket', + ], + ], + ]; + + return isset( $suggest[ $doc_id ][ $this->get_user_locale() ] ) + ? $suggest[ $doc_id ][ $this->get_user_locale() ] + : $suggest[ $doc_id ]['en']; + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/Admin/Beacon/ServiceProvider.php b/wp-content/plugins/wp-rocket/inc/Engine/Admin/Beacon/ServiceProvider.php new file mode 100644 index 0000000..8cfd3a1 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/Admin/Beacon/ServiceProvider.php @@ -0,0 +1,41 @@ +getContainer()->add( 'beacon', 'WP_Rocket\Engine\Admin\Beacon\Beacon' ) + ->withArgument( $this->getContainer()->get( 'options' ) ) + ->withArgument( $this->getContainer()->get( 'template_path' ) . '/settings' ) + ->withArgument( $this->getContainer()->get( 'support_data' ) ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/Admin/Deactivation/DeactivationIntent.php b/wp-content/plugins/wp-rocket/inc/Engine/Admin/Deactivation/DeactivationIntent.php new file mode 100644 index 0000000..8e0fb1c --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/Admin/Deactivation/DeactivationIntent.php @@ -0,0 +1,161 @@ +render = $render; + $this->options_api = $options_api; + $this->options = $options; + } + + /** + * Return an array of events that this subscriber wants to listen to. + * + * @since 3.0 + * + * @return array + */ + public static function get_subscribed_events() { + return [ + 'admin_print_footer_scripts-plugins.php' => 'insert_mixpanel_tracking', + 'admin_footer' => 'insert_deactivation_intent_form', + 'wp_ajax_rocket_safe_mode' => 'activate_safe_mode', + ]; + } + + /** + * Inserts mixpanel tracking on plugins page to send deactivation data + * + * @since 3.0 + * + * @return void + */ + public function insert_mixpanel_tracking() { + ?> + + id && 'plugins-network' !== $current_screen->id ) { + return; + } + + $this->render->render_form(); + } + + /** + * Activates WP Rocket safe mode by deactivating possibly layout breaking options + * + * @since 3.0 + * + * @return void + */ + public function activate_safe_mode() { + check_ajax_referer( 'rocket-ajax', 'nonce' ); + + if ( ! current_user_can( 'rocket_manage_options' ) ) { + wp_send_json_error(); + return; + } + + /** + * Filters the array of options to reset when activating safe mode + * + * @since 3.7 + * + * @param array $options Array of options to reset. + */ + $reset_options = apply_filters( + 'rocket_safe_mode_reset_options', + [ + 'embeds' => 0, + 'defer_all_js' => 0, + 'async_css' => 0, + 'lazyload' => 0, + 'lazyload_iframes' => 0, + 'lazyload_youtube' => 0, + 'minify_css' => 0, + 'minify_concatenate_css' => 0, + 'minify_js' => 0, + 'minify_concatenate_js' => 0, + 'minify_google_fonts' => 0, + 'cdn' => 0, + ] + ); + + $this->options->set_values( $reset_options ); + $this->options_api->set( 'settings', $this->options->get_options() ); + + wp_send_json_success(); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/Admin/ServiceProvider.php b/wp-content/plugins/wp-rocket/inc/Engine/Admin/ServiceProvider.php new file mode 100644 index 0000000..67164ca --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/Admin/ServiceProvider.php @@ -0,0 +1,45 @@ +getContainer()->get( 'options' ); + + $this->getContainer()->add( 'deactivation_intent_render', 'WP_Rocket\Admin\Deactivation\Render' ) + ->withArgument( $this->getContainer()->get( 'template_path' ) . '/deactivation-intent' ); + $this->getContainer()->share( 'deactivation_intent_subscriber', 'WP_Rocket\Engine\Admin\Deactivation\DeactivationIntent' ) + ->withArgument( $this->getContainer()->get( 'deactivation_intent_render' ) ) + ->withArgument( $this->getContainer()->get( 'options_api' ) ) + ->withArgument( $options ); + $this->getContainer()->share( 'hummingbird_subscriber', 'WP_Rocket\ThirdParty\Plugins\Optimization\Hummingbird' ) + ->withArgument( $options ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/Admin/Settings/Page.php b/wp-content/plugins/wp-rocket/inc/Engine/Admin/Settings/Page.php new file mode 100644 index 0000000..f16afdf --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/Admin/Settings/Page.php @@ -0,0 +1,2141 @@ + 'wprocket', + 'title' => 'WP Rocket', + 'capability' => 'rocket_manage_options', + ], + $args + ); + + $this->slug = $args['slug']; + $this->title = $args['title']; + $this->capability = $args['capability']; + $this->settings = $settings; + $this->render = $render; + $this->beacon = $beacon; + $this->optimize = $optimize; + $this->user_client = $user_client; + } + + /** + * Returns the settings page title. + * + * @since 3.3 + * + * @return string + */ + public function get_title() { + return $this->title; + } + + /** + * Returns the settings page slug. + * + * @since 3.3 + * + * @return string + */ + public function get_slug() { + return $this->slug; + } + + /** + * Returns the settings page capability. + * + * @since 3.3 + * + * @return string + */ + public function get_capability() { + return $this->capability; + } + + /** + * Registers the settings, page sections, fields sections and fields. + * + * @since 3.0 + */ + public function configure() { + register_setting( $this->slug, WP_ROCKET_SLUG, [ $this->settings, 'sanitize_callback' ] ); + } + + /** + * Renders the settings page. + * + * @since 3.0 + */ + public function render_page() { + $rocket_valid_key = rocket_valid_key(); + if ( $rocket_valid_key ) { + $this->dashboard_section(); + $this->cache_section(); + $this->assets_section(); + $this->media_section(); + $this->preload_section(); + $this->advanced_cache_section(); + $this->database_section(); + $this->cdn_section(); + $this->heartbeat_section(); + $this->addons_section(); + $this->cloudflare_section(); + $this->sucuri_section(); + } else { + $this->license_section(); + } + + $this->render->set_settings( $this->settings->get_settings() ); + + $this->hidden_fields(); + + $this->render->set_hidden_settings( $this->settings->get_hidden_settings() ); + + $btn_submit_text = $rocket_valid_key ? __( 'Save Changes', 'rocket' ) : __( 'Validate License', 'rocket' ); + echo $this->render->generate( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Dynamic content is properly escaped in the view. + 'page', + [ + 'slug' => $this->slug, // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Dynamic content is properly escaped in the view. + 'btn_submit_text' => $btn_submit_text, // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Dynamic content is properly escaped in the view. + ] + ); + } + + /** + * Enqueues WP Rocket scripts on the settings page + * + * @since 3.6.1 + * + * @param string $hook The current admin page. + * + * @return void + */ + public function enqueue_rocket_scripts( $hook ) { + if ( 'settings_page_wprocket' !== $hook ) { + return; + } + + wp_enqueue_script( 'wistia-e-v1', 'https://fast.wistia.com/assets/external/E-v1.js', [], null, true ); // phpcs:ignore WordPress.WP.EnqueuedResourceParameters.MissingVersion + } + + /** + * Adds the async attribute to the Wistia script + * + * @since 3.6.1 + * + * @param string $tag The + id ) { + return false; + } + + if ( get_user_meta( get_current_user_id(), 'rocketcdn_dismiss_notice', true ) ) { + return false; + } + + $subscription_data = $this->api_client->get_subscription_data(); + + return 'running' !== $subscription_data['subscription_status']; + } + + /** + * Ajax callback to save the dismiss as a user meta + * + * @since 3.5 + * + * @return void + */ + public function dismiss_notice() { + check_ajax_referer( 'rocketcdn_dismiss_notice', 'nonce', true ); + + if ( ! current_user_can( 'rocket_manage_options' ) ) { + return; + } + + update_user_meta( get_current_user_id(), 'rocketcdn_dismiss_notice', true ); + } + + /** + * Displays the RocketCDN Call to Action on the CDN tab of WP Rocket settings page + * + * @since 3.5 + * + * @return void + */ + public function display_rocketcdn_cta() { + if ( $this->is_white_label_account() ) { + return; + } + + if ( ! rocket_is_live_site() ) { + return; + } + + $subscription_data = $this->api_client->get_subscription_data(); + + if ( 'running' === $subscription_data['subscription_status'] ) { + return; + } + + $pricing = $this->api_client->get_pricing_data(); + + $regular_price = ''; + $nopromo_variant = '--no-promo'; + $cta_small_class = 'wpr-isHidden'; + $cta_big_class = ''; + + if ( get_user_meta( get_current_user_id(), 'rocket_rocketcdn_cta_hidden', true ) ) { + $cta_small_class = ''; + $cta_big_class = 'wpr-isHidden'; + } + + $small_cta_data = [ + 'container_class' => $cta_small_class, + ]; + + if ( is_wp_error( $pricing ) ) { + $big_cta_data = [ + 'container_class' => $cta_big_class, + 'nopromo_variant' => $nopromo_variant, + 'error' => true, + 'message' => $pricing->get_error_message(), + ]; + } else { + $current_price = number_format_i18n( $pricing['monthly_price'], 2 ); + $promotion_campaign = ''; + $end_date = strtotime( $pricing['end_date'] ); + $promotion_end_date = ''; + + if ( + $pricing['is_discount_active'] + && + $end_date > time() + ) { + $promotion_campaign = $pricing['discount_campaign_name']; + $regular_price = $current_price; + $current_price = number_format_i18n( $pricing['discounted_price_monthly'], 2 ) . '*'; + $nopromo_variant = ''; + $promotion_end_date = date_i18n( get_option( 'date_format' ), $end_date ); + } + + $big_cta_data = [ + 'container_class' => $cta_big_class, + 'promotion_campaign' => $promotion_campaign, + 'promotion_end_date' => $promotion_end_date, + 'nopromo_variant' => $nopromo_variant, + 'regular_price' => $regular_price, + 'current_price' => $current_price, + ]; + } + + echo $this->generate( 'cta-small', $small_cta_data ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Dynamic content is properly escaped in the view. + echo $this->generate( 'cta-big', $big_cta_data ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Dynamic content is properly escaped in the view. + } + + /** + * Toggles display of the RocketCDN CTAs on the settings page + * + * @since 3.5 + * + * @return void + */ + public function toggle_cta() { + check_ajax_referer( 'rocket-ajax', 'nonce', true ); + + if ( ! current_user_can( 'rocket_manage_options' ) ) { + return; + } + + if ( ! isset( $_POST['status'] ) ) { + return; + } + + if ( 'big' === $_POST['status'] ) { + delete_user_meta( get_current_user_id(), 'rocket_rocketcdn_cta_hidden' ); + } elseif ( 'small' === $_POST['status'] ) { + update_user_meta( get_current_user_id(), 'rocket_rocketcdn_cta_hidden', true ); + } + } + + /** + * Displays a notice after purging the RocketCDN cache. + * + * @since 3.5 + * + * @return void + */ + public function purge_cache_notice() { + if ( ! current_user_can( 'rocket_manage_options' ) ) { + return; + } + + if ( 'settings_page_wprocket' !== get_current_screen()->id ) { + return; + } + + $purge_response = get_transient( 'rocketcdn_purge_cache_response' ); + + if ( false === $purge_response ) { + return; + } + + delete_transient( 'rocketcdn_purge_cache_response' ); + + rocket_notice_html( + [ + 'status' => $purge_response['status'], + 'message' => $purge_response['message'], + ] + ); + } + + /** + * Checks if white label is enabled + * + * @since 3.6 + * + * @return bool + */ + private function is_white_label_account() { + return (bool) rocket_get_constant( 'WP_ROCKET_WHITE_LABEL_ACCOUNT' ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/RESTSubscriber.php b/wp-content/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/RESTSubscriber.php new file mode 100644 index 0000000..0fd4a1c --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/RESTSubscriber.php @@ -0,0 +1,194 @@ +cdn_options = $cdn_options; + $this->options = $options; + } + + /** + * {@inheritdoc} + */ + public static function get_subscribed_events() { + return [ + 'rest_api_init' => [ + [ 'register_enable_route' ], + [ 'register_disable_route' ], + ], + ]; + } + + /** + * Register Enable route in the WP REST API + * + * @since 3.5 + * + * @return void + */ + public function register_enable_route() { + register_rest_route( + self::ROUTE_NAMESPACE, + 'rocketcdn/enable', + [ + 'methods' => 'PUT', + 'callback' => [ $this, 'enable' ], + 'args' => [ + 'email' => [ + 'required' => true, + 'validate_callback' => [ $this, 'validate_email' ], + ], + 'key' => [ + 'required' => true, + 'validate_callback' => [ $this, 'validate_key' ], + ], + 'url' => [ + 'required' => true, + 'validate_callback' => function ( $param ) { + $url = esc_url_raw( $param ); + + return ! empty( $url ); + }, + 'sanitize_callback' => function ( $param ) { + return esc_url_raw( $param ); + }, + ], + ], + 'permission_callback' => '__return_true', + ] + ); + } + + /** + * Register Disable route in the WP REST API + * + * @since 3.5 + * + * @return void + */ + public function register_disable_route() { + register_rest_route( + self::ROUTE_NAMESPACE, + 'rocketcdn/disable', + [ + 'methods' => 'PUT', + 'callback' => [ $this, 'disable' ], + 'args' => [ + 'email' => [ + 'required' => true, + 'validate_callback' => [ $this, 'validate_email' ], + ], + 'key' => [ + 'required' => true, + 'validate_callback' => [ $this, 'validate_key' ], + ], + ], + 'permission_callback' => '__return_true', + ] + ); + } + + /** + * Enable CDN and add RocketCDN URL to WP Rocket options + * + * @since 3.5 + * + * @param \WP_REST_Request $request the WP REST Request object. + * + * @return string + */ + public function enable( \WP_REST_Request $request ) { + $params = $request->get_body_params(); + + $this->cdn_options->enable( $params['url'] ); + + $response = [ + 'code' => 'success', + 'message' => __( 'RocketCDN enabled', 'rocket' ), + 'data' => [ + 'status' => 200, + ], + ]; + + return rest_ensure_response( $response ); + } + + /** + * Disable the CDN and remove the RocketCDN URL from WP Rocket options + * + * @since 3.5 + * + * @param \WP_REST_Request $request the WP Rest Request object. + * + * @return string + */ + public function disable( \WP_REST_Request $request ) { + $this->cdn_options->disable(); + + $response = [ + 'code' => 'success', + 'message' => __( 'RocketCDN disabled', 'rocket' ), + 'data' => [ + 'status' => 200, + ], + ]; + + return rest_ensure_response( $response ); + } + + /** + * Checks that the email sent along the request corresponds to the one saved in the DB + * + * @since 3.5 + * + * @param string $param Parameter value to validate. + * + * @return bool + */ + public function validate_email( $param ) { + return $param === $this->options->get( 'consumer_email' ); + } + + /** + * Checks that the key sent along the request corresponds to the one saved in the DB + * + * @since 3.5 + * + * @param string $param Parameter value to validate. + * + * @return bool + */ + public function validate_key( $param ) { + return $param === $this->options->get( 'consumer_key' ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/ServiceProvider.php b/wp-content/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/ServiceProvider.php new file mode 100644 index 0000000..10ec396 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/ServiceProvider.php @@ -0,0 +1,64 @@ +getContainer()->get( 'options' ); + // RocketCDN API Client. + $this->getContainer()->add( 'rocketcdn_api_client', 'WP_Rocket\Engine\CDN\RocketCDN\APIClient' ); + // RocketCDN CDN options manager. + $this->getContainer()->add( 'rocketcdn_options_manager', 'WP_Rocket\Engine\CDN\RocketCDN\CDNOptionsManager' ) + ->withArgument( $this->getContainer()->get( 'options_api' ) ) + ->withArgument( $options ); + // RocketCDN Data manager subscriber. + $this->getContainer()->share( 'rocketcdn_data_manager_subscriber', 'WP_Rocket\Engine\CDN\RocketCDN\DataManagerSubscriber' ) + ->withArgument( $this->getContainer()->get( 'rocketcdn_api_client' ) ) + ->withArgument( $this->getContainer()->get( 'rocketcdn_options_manager' ) ); + // RocketCDN REST API Subscriber. + $this->getContainer()->share( 'rocketcdn_rest_subscriber', 'WP_Rocket\Engine\CDN\RocketCDN\RESTSubscriber' ) + ->withArgument( $this->getContainer()->get( 'rocketcdn_options_manager' ) ) + ->withArgument( $options ); + // RocketCDN Notices Subscriber. + $this->getContainer()->share( 'rocketcdn_notices_subscriber', 'WP_Rocket\Engine\CDN\RocketCDN\NoticesSubscriber' ) + ->withArgument( $this->getContainer()->get( 'rocketcdn_api_client' ) ) + ->withArgument( __DIR__ . '/views' ); + // RocketCDN settings page subscriber. + $this->getContainer()->share( 'rocketcdn_admin_subscriber', 'WP_Rocket\Engine\CDN\RocketCDN\AdminPageSubscriber' ) + ->withArgument( $this->getContainer()->get( 'rocketcdn_api_client' ) ) + ->withArgument( $options ) + ->withArgument( $this->getContainer()->get( 'beacon' ) ) + ->withArgument( __DIR__ . '/views' ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/composer.json b/wp-content/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/composer.json new file mode 100644 index 0000000..5c0ae5a --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/composer.json @@ -0,0 +1,55 @@ +{ + "name": "wp-media/module-rocketcdn", + "description": "Module for RocketCDN integration", + "homepage": "https://github.com/wp-media/module-rocketcdn", + "license": "GPL-2.0+", + "authors": [ + { + "name": "WP Media", + "email": "contact@wp-media.me", + "homepage": "https://wp-media.me" + } + ], + "type": "library", + "config": { + "sort-packages": true + }, + "support": { + "issues": "https://github.com/wp-media/module-rocketcdn/issues", + "source": "https://github.com/wp-media/module-rocketcdn" + }, + "require-dev": { + "php": "^5.6 || ^7", + "brain/monkey": "^2.0", + "dealerdirect/phpcodesniffer-composer-installer": "^0.5.0", + "phpcompatibility/phpcompatibility-wp": "^2.0", + "phpunit/phpunit": "^5.7 || ^7", + "roave/security-advisories": "dev-master", + "wp-coding-standards/wpcs": "^2", + "wp-media/event-manager": "^3.1", + "wp-media/options": "^3.0", + "wp-media/module-container": "^2.4", + "wp-media/phpunit": "^1.0", + "wp-media/phpunit-wp-rocket": "^1.0" + }, + "autoload": { + "psr-4": { "WP_Rocket\\Engine\\CDN\\RocketCDN\\": "." } + }, + "autoload-dev": { + "psr-4": { "WP_Rocket\\Tests\\": "Tests/" } + }, + "scripts": { + "test-unit": "\"vendor/bin/phpunit\" --testsuite unit --colors=always --configuration Tests/Unit/phpunit.xml.dist", + "test-integration": "\"vendor/bin/phpunit\" --testsuite integration --colors=always --configuration Tests/Integration/phpunit.xml.dist --exclude-group AdminOnly", + "test-integration-adminonly": "\"vendor/bin/phpunit\" --testsuite integration --colors=always --configuration Tests/Integration/phpunit.xml.dist --group AdminOnly", + "run-tests": [ + "@test-unit", + "@test-integration", + "@test-integration-adminonly" + ], + "install-codestandards": "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin::run", + "phpcs": "phpcs --basepath=.", + "phpcs-changed": "./bin/phpcs-changed.sh", + "phpcs:fix": "phpcbf" + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/views/cta-big.php b/wp-content/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/views/cta-big.php new file mode 100644 index 0000000..08f342a --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/views/cta-big.php @@ -0,0 +1,95 @@ + +
+ +
+

+

+ +

+
+ +
+

RocketCDN

+

+
+
    +
  • + ', '' ); + ?> +
  • +
  • + ', '' ); + ?> +
  • +
  • + ', '' ); + ?> +
  • +
+
+ +

+ + +

$

+ +

+ $' . esc_html( $data['current_price'] ) . '' + ); + ?> +

+ + +
+
+
+ + + +

+ +

+ +
diff --git a/wp-content/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/views/cta-small.php b/wp-content/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/views/cta-small.php new file mode 100644 index 0000000..93d8285 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/views/cta-small.php @@ -0,0 +1,23 @@ + +
+
+
+

+
+
+ +
+
+
diff --git a/wp-content/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/views/dashboard-status.php b/wp-content/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/views/dashboard-status.php new file mode 100644 index 0000000..ac22d8a --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/views/dashboard-status.php @@ -0,0 +1,37 @@ + +
+

RocketCDN

+
+ diff --git a/wp-content/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/views/promote-notice.php b/wp-content/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/views/promote-notice.php new file mode 100644 index 0000000..93f7b9a --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/views/promote-notice.php @@ -0,0 +1,14 @@ + +
+

+

+

+
diff --git a/wp-content/plugins/wp-rocket/inc/Engine/CDN/ServiceProvider.php b/wp-content/plugins/wp-rocket/inc/Engine/CDN/ServiceProvider.php new file mode 100644 index 0000000..45fd0ba --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/CDN/ServiceProvider.php @@ -0,0 +1,40 @@ +getContainer()->get( 'options' ); + + $this->getContainer()->share( 'cdn', 'WP_Rocket\Engine\CDN\CDN' ) + ->withArgument( $options ); + $this->getContainer()->share( 'cdn_subscriber', 'WP_Rocket\Engine\CDN\Subscriber' ) + ->withArgument( $options ) + ->withArgument( $this->getContainer()->get( 'cdn' ) ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/CDN/Subscriber.php b/wp-content/plugins/wp-rocket/inc/Engine/CDN/Subscriber.php new file mode 100644 index 0000000..ad96701 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/CDN/Subscriber.php @@ -0,0 +1,277 @@ +options = $options; + $this->cdn = $cdn; + } + + /** + * Return an array of events that this subscriber wants to listen to. + * + * @since 3.4 + * + * @return array + */ + public static function get_subscribed_events() { + return [ + 'rocket_buffer' => [ + [ 'rewrite', 20 ], + [ 'rewrite_srcset', 21 ], + ], + 'rocket_css_content' => 'rewrite_css_properties', + 'rocket_cdn_hosts' => [ 'get_cdn_hosts', 10, 2 ], + 'rocket_dns_prefetch' => 'add_dns_prefetch_cdn', + 'rocket_facebook_sdk_url' => 'add_cdn_url', + 'rocket_css_url' => [ 'add_cdn_url', 10, 2 ], + 'rocket_js_url' => [ 'add_cdn_url', 10, 2 ], + 'rocket_asset_url' => [ 'maybe_replace_url', 10, 2 ], + ]; + } + + /** + * Rewrites URLs to the CDN URLs if allowed + * + * @since 3.4 + * + * @param string $html HTML content. + * @return string + */ + public function rewrite( $html ) { + if ( ! $this->is_allowed() ) { + return $html; + } + + return $this->cdn->rewrite( $html ); + } + + /** + * Rewrites URLs in srcset attributes to the CDN URLs if allowed + * + * @since 3.4.0.4 + * + * @param string $html HTML content. + * @return string + */ + public function rewrite_srcset( $html ) { + if ( ! $this->is_allowed() ) { + return $html; + } + + return $this->cdn->rewrite_srcset( $html ); + } + + /** + * Rewrites URLs to the CDN URLs in CSS files + * + * @since 3.4 + * + * @param string $content CSS content. + * @return string + */ + public function rewrite_css_properties( $content ) { + /** + * Filters the application of the CDN on CSS properties + * + * @since 2.6 + * + * @param bool true to apply CDN to properties, false otherwise + */ + $do_rewrite = apply_filters( 'do_rocket_cdn_css_properties', true ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + + if ( ! $do_rewrite ) { + return $content; + } + + if ( ! $this->is_cdn_enabled() ) { + return $content; + } + + return $this->cdn->rewrite_css_properties( $content ); + } + + /** + * Gets the host value for each CDN URLs + * + * @since 3.4 + * + * @param array $hosts Base hosts. + * @param array $zones Zones to get the CND URLs associated with. + * + * @return array + */ + public function get_cdn_hosts( array $hosts = [], array $zones = [ 'all' ] ) { + $cdn_urls = $this->cdn->get_cdn_urls( $zones ); + + if ( empty( $cdn_urls ) ) { + return $hosts; + } + + foreach ( $cdn_urls as $cdn_url ) { + $parsed = get_rocket_parse_url( rocket_add_url_protocol( $cdn_url ) ); + + if ( empty( $parsed['host'] ) ) { + continue; + } + + $hosts[] = untrailingslashit( $parsed['host'] . $parsed['path'] ); + } + + return array_unique( $hosts ); + } + + /** + * Adds CDN URLs to the DNS prefetch links + * + * @since 3.4 + * + * @param array $domains Domain names to DNS prefetch. + * @return array + */ + public function add_dns_prefetch_cdn( $domains ) { + if ( ! $this->is_allowed() ) { + return $domains; + } + + $cdn_urls = $this->cdn->get_cdn_urls( [ 'all', 'images', 'css_and_js', 'css', 'js' ] ); + + if ( ! $cdn_urls ) { + return $domains; + } + + return array_merge( $domains, $cdn_urls ); + } + + /** + * Adds the CDN URL on the provided URL + * + * @since 3.4 + * + * @param string $url URL to rewrite. + * @param string $original_url Original URL for this URL. Optional. + * @return string + */ + public function add_cdn_url( $url, $original_url = '' ) { + if ( ! empty( $original_url ) ) { + if ( $this->cdn->is_excluded( $original_url ) ) { + return $url; + } + } + + return $this->cdn->rewrite_url( $url ); + } + + /** + * Replace CDN URL with site URL on the provided asset URL. + * + * @since 3.5.3 + * + * @param string $url URL of the asset. + * @param array $zones Array of corresponding zones for the asset. + * @return string + */ + public function maybe_replace_url( $url, array $zones = [ 'all' ] ) { + if ( ! $this->is_allowed() ) { + return $url; + } + + $url_parts = get_rocket_parse_url( $url ); + + if ( empty( $url_parts['host'] ) ) { + return $url; + } + + $site_url_parts = get_rocket_parse_url( site_url() ); + + if ( empty( $site_url_parts['host'] ) ) { + return $url; + } + + if ( $url_parts['host'] === $site_url_parts['host'] ) { + return $url; + } + + $cdn_urls = $this->cdn->get_cdn_urls( $zones ); + + if ( empty( $cdn_urls ) ) { + return $url; + } + + $cdn_urls = array_map( 'rocket_add_url_protocol', $cdn_urls ); + + $site_url = $site_url_parts['scheme'] . '://' . $site_url_parts['host']; + + foreach ( $cdn_urls as $cdn_url ) { + if ( false === strpos( $url, $cdn_url ) ) { + continue; + } + + return str_replace( $cdn_url, $site_url, $url ); + } + + return $url; + } + + /** + * Checks if CDN can be applied + * + * @since 3.4 + * + * @return boolean + */ + private function is_allowed() { + if ( rocket_get_constant( 'DONOTROCKETOPTIMIZE' ) ) { + return false; + } + + if ( ! $this->is_cdn_enabled() ) { + return false; + } + + if ( is_rocket_post_excluded_option( 'cdn' ) ) { + return false; + } + + return true; + } + + /** + * Checks if the CDN option is enabled + * + * @since 3.5.5 + * + * @return bool + */ + private function is_cdn_enabled() { + return (bool) $this->options->get( 'cdn', 0 ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/Cache/AdminSubscriber.php b/wp-content/plugins/wp-rocket/inc/Engine/Cache/AdminSubscriber.php new file mode 100644 index 0000000..ef02fdf --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/Cache/AdminSubscriber.php @@ -0,0 +1,168 @@ +advanced_cache = $advanced_cache; + $this->wp_cache = $wp_cache; + } + + /** + * Returns an array of events that this subscriber wants to listen to. + * + * @return array + */ + public static function get_subscribed_events() { + $slug = rocket_get_constant( 'WP_ROCKET_SLUG' ); + + return [ + 'admin_init' => [ + [ 'register_terms_row_action' ], + [ 'maybe_set_wp_cache' ], + ], + 'admin_notices' => [ + [ 'notice_advanced_cache_permissions' ], + [ 'notice_wp_config_permissions' ], + ], + "update_option_{$slug}" => [ 'maybe_set_wp_cache', 12 ], + 'site_status_tests' => 'add_wp_cache_status_test', + ]; + } + + /** + * Sets the event manager for the subscriber. + * + * @param Event_Manager $event_manager Event Manager instance. + */ + public function set_event_manager( Event_Manager $event_manager ) { + $this->event_manager = $event_manager; + } + + /** + * Registers the action for each public taxonomy + * + * @since 3.5.5 + * + * @return void + */ + public function register_terms_row_action() { + $taxonomies = get_taxonomies( + [ + 'public' => true, + 'publicly_queryable' => true, + ] + ); + + foreach ( $taxonomies as $taxonomy ) { + $this->event_manager->add_callback( "{$taxonomy}_row_actions", [ $this, 'add_purge_term_link' ], 10, 2 ); + } + } + + /** + * Adds a link "Purge this cache" in the terms list table + * + * @param array $actions An array of action links to be displayed. + * @param WP_Term $term Term object. + * + * @return array + */ + public function add_purge_term_link( $actions, $term ) { + if ( ! current_user_can( 'rocket_purge_terms' ) ) { + return $actions; + } + + $url = wp_nonce_url( + admin_url( "admin-post.php?action=purge_cache&type=term-{$term->term_id}&taxonomy={$term->taxonomy}" ), + "purge_cache_term-{$term->term_id}" + ); + + $actions['rocket_purge'] = sprintf( + '%2$s', + $url, + __( 'Clear this cache', 'rocket' ) + ); + + return $actions; + } + + /** + * Displays the notice for advanced-cache.php permissions + * + * @since 3.6 + * + * @return void + */ + public function notice_advanced_cache_permissions() { + $this->advanced_cache->notice_permissions(); + } + + /** + * Set WP_CACHE constant to true if needed + * + * @since 3.6.1 + * + * @return void + */ + public function maybe_set_wp_cache() { + $this->wp_cache->maybe_set_wp_cache(); + } + + /** + * Displays the notice for wp-config.php permissions + * + * @since 3.6.1 + * + * @return void + */ + public function notice_wp_config_permissions() { + $this->wp_cache->notice_wp_config_permissions(); + } + + /** + * Adds a Site Health check for the WP_CACHE constant value + * + * @since 3.6.1 + * + * @param array $tests An array of tests to perform. + * @return array + */ + public function add_wp_cache_status_test( $tests ) { + return $this->wp_cache->add_wp_cache_status_test( $tests ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/Cache/AdvancedCache.php b/wp-content/plugins/wp-rocket/inc/Engine/Cache/AdvancedCache.php new file mode 100644 index 0000000..f74996f --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/Cache/AdvancedCache.php @@ -0,0 +1,206 @@ +template_path = $template_path; + $this->content_dir = rocket_get_constant( 'WP_CONTENT_DIR' ); + $this->filesystem = $filesystem; + } + + /** + * Actions to perform on plugin activation + * + * @since 3.6.3 + * + * @return void + */ + public function activate() { + add_action( 'rocket_activation', [ $this, 'update_advanced_cache' ] ); + } + + /** + * Actions to perform on plugin deactivation + * + * @since 3.6.3 + * + * @return void + */ + public function deactivate() { + add_action( 'rocket_deactivation', [ $this, 'update_advanced_cache' ] ); + } + + /** + * Generates the advanced-cache.php file with its content + * + * @since 3.6.3 + * + * @param int $sites_number Number of WP Rocket config files found. + * @return void + */ + public function update_advanced_cache( $sites_number = 0 ) { + /** + * Filters whether to generate the advanced-cache.php file. + * + * @since 3.6.3 + * + * @param bool True (default) to go ahead with advanced cache file generation; false to stop generation. + */ + if ( ! (bool) apply_filters( 'rocket_generate_advanced_cache_file', true ) ) { + return; + } + + $content = $this->get_advanced_cache_content(); + + if ( 'rocket_deactivation' === current_filter() ) { + if ( is_multisite() && 0 !== $sites_number ) { + return; + } + + $content = ''; + } + + $this->filesystem->put_contents( + "{$this->content_dir}/advanced-cache.php", + $content, + rocket_get_filesystem_perms( 'file' ) + ); + } + + /** + * Gets the content for the advanced-cache.php file + * + * @since 3.6 + * + * @return string + */ + public function get_advanced_cache_content() { + $content = $this->filesystem->get_contents( $this->template_path . 'advanced-cache.php' ); + $mobile = is_rocket_generate_caching_mobile_files() ? '$1' : ''; + $content = preg_replace( "/'{{MOBILE_CACHE}}';(\X*)'{{\/MOBILE_CACHE}}';/", $mobile, $content ); + + $replacements = [ + '{{WP_ROCKET_PHP_VERSION}}' => rocket_get_constant( 'WP_ROCKET_PHP_VERSION' ), + '{{WP_ROCKET_PATH}}' => rocket_get_constant( 'WP_ROCKET_PATH' ), + '{{WP_ROCKET_CONFIG_PATH}}' => rocket_get_constant( 'WP_ROCKET_CONFIG_PATH' ), + '{{WP_ROCKET_CACHE_PATH}}' => rocket_get_constant( 'WP_ROCKET_CACHE_PATH' ), + ]; + + foreach ( $replacements as $key => $value ) { + $content = str_replace( $key, $value, $content ); + } + + /** + * Filter the content of advanced-cache.php file. + * + * @since 2.1 + * + * @param string $content The content that will be printed in advanced-cache.php. + */ + return (string) apply_filters( 'rocket_advanced_cache_file', $content ); + } + + /** + * This warning is displayed when the advanced-cache.php file isn't writeable + * + * @since 3.6 Moved to a method in AdvancedCache + * @since 2.0 + * + * @return void + */ + public function notice_permissions() { + if ( ! $this->is_user_allowed() ) { + return; + } + + // This filter is documented in inc/functions/files.php. + if ( ! (bool) apply_filters( 'rocket_generate_advanced_cache_file', true ) ) { + return; + } + + if ( + $this->filesystem->is_writable( "{$this->content_dir}/advanced-cache.php" ) + || + rocket_get_constant( 'WP_ROCKET_ADVANCED_CACHE' ) + ) { + return; + } + + $notice_name = 'rocket_warning_advanced_cache_permissions'; + + if ( + in_array( + $notice_name, + (array) get_user_meta( get_current_user_id(), 'rocket_boxes', true ), + true + ) + ) { + return; + } + + rocket_notice_html( + [ + 'status' => 'error', + 'dismissible' => '', + 'message' => $this->get_notice_message(), + 'dismiss_button' => $notice_name, + 'readonly_content' => $this->get_advanced_cache_content(), + ] + ); + } + + /** + * Checks if current user can see the notices + * + * @since 3.6 + * + * @return bool + */ + private function is_user_allowed() { + return current_user_can( 'rocket_manage_options' ) && rocket_valid_key(); + } + + /** + * Gets the message to display in the notice + * + * @since 3.6 + * + * @return string + */ + private function get_notice_message() { + return rocket_notice_writing_permissions( basename( $this->content_dir ) . '/advanced-cache.php' ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/Cache/Purge.php b/wp-content/plugins/wp-rocket/inc/Engine/Cache/Purge.php new file mode 100644 index 0000000..7b58afc --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/Cache/Purge.php @@ -0,0 +1,223 @@ +filesystem = $filesystem; + } + + /** + * Purges cache for the dates archives of a post + * + * @param WP_Post $post Post object. + * @return void + */ + public function purge_dates_archives( $post ) { + foreach ( $this->get_dates_archives( $post ) as $url ) { + $this->purge_url( $url, true ); + } + } + + /** + * Purge URL cache. + * + * @param string $url URL to be purged. + * @param boolean $pagination Purge also pagination. + * @return void + */ + private function purge_url( $url, $pagination = false ) { + global $wp_rewrite; + + $parsed_url = $this->parse_url( $url ); + + foreach ( _rocket_get_cache_dirs( $parsed_url['host'] ) as $dir ) { + $path = $dir . $parsed_url['path']; + + if ( ! $this->filesystem->exists( $path ) ) { + continue; + } + + foreach ( $this->get_iterator( $path ) as $item ) { + if ( $item->isFile() ) { + $this->filesystem->delete( $item->getPathname() ); + } + } + + if ( $pagination ) { + $this->maybe_remove_dir( $path . DIRECTORY_SEPARATOR . $wp_rewrite->pagination_base ); + } + } + } + + /** + * Gets the dates archives URLs for the provided post + * + * @param WP_Post $post Post object. + * @return array + */ + private function get_dates_archives( $post ) { + $time = get_the_time( 'Y-m-d', $post ); + + if ( empty( $time ) ) { + return []; + } + + $date = explode( '-', $time ); + $urls = [ + get_year_link( $date[0] ), + get_month_link( $date[0], $date[1] ), + get_day_link( $date[0], $date[1], $date[2] ), + ]; + + /** + * Filter the list of dates URLs. + * + * @since 1.1.0 + * + * @param array $urls List of dates URLs. + */ + return (array) apply_filters( 'rocket_post_dates_urls', $urls ); + } + + /** + * Parses URL and return the parts array + * + * @since 3.6.1 + * + * @param string $url URL to parse. + * @return array + */ + private function parse_url( $url ) { + $parsed_url = get_rocket_parse_url( $url ); + + /** This filter is documented in inc/front/htaccess.php */ + if ( apply_filters( 'rocket_url_no_dots', false ) ) { + $parsed_url['host'] = str_replace( '.', '_', $parsed_url['host'] ); + } + + return $parsed_url; + } + + /** + * Gets the iterator for the given path + * + * @since 3.6.1 + * + * @param string $path Absolute path. + * @return DirectoryIterator|array + */ + private function get_iterator( $path ) { + try { + $iterator = new DirectoryIterator( $path ); + } catch ( Exception $e ) { + // No action required, as logging not enabled. + $iterator = []; + } + + return $iterator; + } + + /** + * Recursively remove the provided directory and its content + * + * @since 3.6.1 + * + * @param string $dir Absolute path for the directory. + * @return void + */ + private function maybe_remove_dir( $dir ) { + if ( $this->filesystem->is_dir( $dir ) ) { + rocket_rrmdir( $dir, [], $this->filesystem ); + } + } + + /** + * Purge all terms archives urls associated to a specific post. + * + * @since 3.6.1 + * + * @param WP_Post $post Post object. + */ + public function purge_post_terms_urls( WP_Post $post ) { + foreach ( $this->get_post_terms_urls( $post ) as $url ) { + $this->purge_url( $url ); + } + + } + + /** + * Get all terms archives urls associated to a specific post. + * + * @since 3.6.1 + * + * @param WP_Post $post Post object. + * + * @return array $urls List of taxonomies URLs + */ + private function get_post_terms_urls( WP_Post $post ) { + $urls = []; + $taxonomies = get_object_taxonomies( get_post_type( $post->ID ), 'objects' ); + + foreach ( $taxonomies as $taxonomy ) { + if ( ! $taxonomy->public || 'product_shipping_class' === $taxonomy->name ) { + continue; + } + + // Get the terms related to post. + $terms = get_the_terms( $post->ID, $taxonomy->name ); + + if ( empty( $terms ) || is_wp_error( $terms ) ) { + continue; + } + foreach ( $terms as $term ) { + $term_url = get_term_link( $term->slug, $taxonomy->name ); + if ( ! is_wp_error( $term_url ) ) { + $urls[] = $term_url; + } + if ( ! is_taxonomy_hierarchical( $taxonomy->name ) ) { + continue; + } + $ancestors = (array) get_ancestors( $term->term_id, $taxonomy->name ); + foreach ( $ancestors as $ancestor ) { + $ancestor_object = get_term( $ancestor, $taxonomy->name ); + if ( ! $ancestor_object instanceof WP_Term ) { + continue; + } + $ancestor_term_url = get_term_link( $ancestor_object->slug, $taxonomy->name ); + if ( ! is_wp_error( $ancestor_term_url ) ) { + $urls[] = $ancestor_term_url; + } + } + } + } + /** + * Filter the list of taxonomies URLs + * + * @since 1.1.0 + * + * @param array $urls List of taxonomies URLs + */ + return apply_filters( 'rocket_post_terms_urls', $urls ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/Cache/PurgeActionsSubscriber.php b/wp-content/plugins/wp-rocket/inc/Engine/Cache/PurgeActionsSubscriber.php new file mode 100644 index 0000000..ba6374f --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/Cache/PurgeActionsSubscriber.php @@ -0,0 +1,140 @@ +options = $options; + $this->purge = $purge; + } + + /** + * {@inheritdoc} + */ + public static function get_subscribed_events() { + return [ + 'profile_update' => 'purge_user_cache', + 'delete_user' => 'purge_user_cache', + 'create_term' => [ 'maybe_purge_cache_on_term_change', 10, 3 ], + 'edit_term' => [ 'maybe_purge_cache_on_term_change', 10, 3 ], + 'delete_term' => [ 'maybe_purge_cache_on_term_change', 10, 3 ], + 'after_rocket_clean_post' => [ + [ 'purge_dates_archives' ], + [ 'purge_post_terms_urls' ], + ], + ]; + } + + /** + * Purges the cache of the corresponding user + * + * @since 3.5 + * + * @param int $user_id User ID. + * @return void + */ + public function purge_user_cache( $user_id ) { + if ( ! $this->should_purge_user_cache() ) { + return; + } + + rocket_clean_user( $user_id ); + } + + /** + * Purges the cache when a public term is created|updated|deleted + * + * @since 3.5.5 + * + * @param int $term_id Term ID. + * @param int $tt_id Term taxonomy ID. + * @param string $taxonomy Taxonomy slug. + * @return void + */ + public function maybe_purge_cache_on_term_change( $term_id, $tt_id, $taxonomy ) { + if ( ! $this->is_taxonomy_public( $taxonomy ) ) { + return; + } + + rocket_clean_domain(); + } + + /** + * Purges cache for the dates archives of a post after cleaning the post + * + * @param WP_Post $post Post object. + * @return void + */ + public function purge_dates_archives( $post ) { + $this->purge->purge_dates_archives( $post ); + } + + /** + * Purge all terms archives urls associated to a specific post. + * + * @param WP_Post $post Post object. + * @return void + */ + public function purge_post_terms_urls( $post ) { + $this->purge->purge_post_terms_urls( $post ); + } + + /** + * Checks if the given taxonomy is public + * + * @param string $name Taxonomy name. + * @return bool + */ + private function is_taxonomy_public( $name ) { + $taxonomy = get_taxonomy( $name ); + + if ( false === $taxonomy ) { + return false; + } + + return ( $taxonomy->public && $taxonomy->publicly_queryable ); + } + + /** + * Checks if the user cache should be purged + * + * @since 3.5 + * + * @return boolean + */ + private function should_purge_user_cache() { + if ( ! $this->options->get( 'cache_logged_user', 0 ) ) { + return false; + } + + // This filter is documented in /inc/functions/files.php. + return ! (bool) apply_filters( 'rocket_common_cache_logged_users', false ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/Cache/ServiceProvider.php b/wp-content/plugins/wp-rocket/inc/Engine/Cache/ServiceProvider.php new file mode 100644 index 0000000..6b0bde6 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/Cache/ServiceProvider.php @@ -0,0 +1,52 @@ +getContainer()->add( 'advanced_cache', 'WP_Rocket\Engine\Cache\AdvancedCache' ) + ->withArgument( $this->getContainer()->get( 'template_path' ) . '/cache/' ) + ->withArgument( $filesystem ); + $this->getContainer()->add( 'wp_cache', 'WP_Rocket\Engine\Cache\WPCache' ) + ->withArgument( $filesystem ); + $this->getContainer()->add( 'purge', 'WP_Rocket\Engine\Cache\Purge' ) + ->withArgument( $filesystem ); + $this->getContainer()->share( 'purge_actions_subscriber', 'WP_Rocket\Engine\Cache\PurgeActionsSubscriber' ) + ->withArgument( $this->getContainer()->get( 'options' ) ) + ->withArgument( $this->getContainer()->get( 'purge' ) ); + $this->getContainer()->share( 'admin_cache_subscriber', 'WP_Rocket\Engine\Cache\AdminSubscriber' ) + ->withArgument( $this->getContainer()->get( 'advanced_cache' ) ) + ->withArgument( $this->getContainer()->get( 'wp_cache' ) ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/Cache/WPCache.php b/wp-content/plugins/wp-rocket/inc/Engine/Cache/WPCache.php new file mode 100644 index 0000000..d587293 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/Cache/WPCache.php @@ -0,0 +1,385 @@ +filesystem = $filesystem; + } + + /** + * Performs these actions during the plugin activation + * + * @return void + */ + public function activate() { + add_action( 'rocket_activation', [ $this, 'update_wp_cache' ] ); + } + + /** + * Performs these actions during the plugin deactivation + * + * @return void + */ + public function deactivate() { + add_action( 'rocket_deactivation', [ $this, 'update_wp_cache' ] ); + add_filter( 'rocket_prevent_deactivation', [ $this, 'maybe_prevent_deactivation' ] ); + } + + /** + * Sets the WP_CACHE constant on (de)activation + * + * @since 3.6.3 + * + * @param int $sites_number Number of WP Rocket config files found. + * @return void + */ + public function update_wp_cache( $sites_number = 0 ) { + if ( ! rocket_valid_key() ) { + return; + } + + $value = true; + + if ( 'rocket_deactivation' === current_filter() ) { + if ( is_multisite() && 0 !== $sites_number ) { + return; + } + + $value = false; + } + + $this->set_wp_cache_constant( $value ); + } + + /** + * Updates the causes array on deactivation if needed + * + * @since 3.6.3 + * + * @param array $causes Array of causes to pass to the notice. + */ + public function maybe_prevent_deactivation( $causes ) { + if ( + $this->find_wpconfig_path() + || + // This filter is documented in inc/Engine/Cache/WPCache.php. + ! (bool) apply_filters( 'rocket_set_wp_cache_constant', true ) + ) { + return $causes; + } + + $causes[] = 'wpconfig'; + + return $causes; + } + + /** + * Set WP_CACHE constant to true if needed + * + * @since 3.6.1 + * + * @return void + */ + public function maybe_set_wp_cache() { + if ( + rocket_get_constant( 'DOING_AJAX' ) + || + rocket_get_constant( 'DOING_AUTOSAVE' ) + ) { + return; + } + + if ( rocket_get_constant( 'WP_CACHE' ) ) { + return; + } + + $this->set_wp_cache_constant( true ); + } + + /** + * Sets the value of the WP_CACHE constant in wp-config.php + * + * @since 3.6.1 + * + * @param bool $value The value to set for WP_CACHE constant. + * @return void + */ + public function set_wp_cache_constant( $value ) { + if ( ! $this->should_set_wp_cache_constant( $value ) ) { + return; + } + + $config_file_path = $this->find_wpconfig_path(); + + if ( ! $config_file_path ) { + return; + } + + $config_file_contents = $this->filesystem->get_contents( $config_file_path ); + $value = $value ? 'true' : 'false'; + + /** + * Filter allow to change the value of WP_CACHE constant + * + * @since 2.1 + * + * @param string $value The value of WP_CACHE constant. + */ + $value = apply_filters( 'set_rocket_wp_cache_define', $value ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + + $wp_cache_found = preg_match( '/^\s*define\(\s*\'WP_CACHE\'\s*,\s*(?[^\s\)]*)\s*\)/m', $config_file_contents, $matches ); + + if ( + ! empty( $matches['value'] ) + && + $matches['value'] === $value + ) { + return; + } + + $constant = $this->get_wp_cache_content( $value ); + + if ( ! $wp_cache_found ) { + $config_file_contents = preg_replace( '/(<\?php)/i', "filesystem->put_contents( $config_file_path, $config_file_contents, rocket_get_filesystem_perms( 'file' ) ); + } + + /** + * Checks if we should set the WP_CACHE constant + * + * @since 3.6.1 + * + * @param bool $value The value to set for WP_CACHE constant. + * @return bool + */ + private function should_set_wp_cache_constant( $value ) { + if ( ! $this->is_user_allowed() ) { + return false; + } + + if ( + true === $value + && + rocket_get_constant( 'WP_CACHE' ) + ) { + return false; + } + + /** + * Filters the writing of the WP_CACHE constant in wp-config.php + * + * @since 3.6.1 + * @param bool $set True to allow writing, false otherwise. + */ + return (bool) apply_filters( 'rocket_set_wp_cache_constant', true ); + } + + /** + * Try to find the correct wp-config.php file, support one level up in file tree. + * + * @since 3.6.1 + * + * @return string|bool The path of wp-config.php file or false if not found. + */ + private function find_wpconfig_path() { + /** + * Filter the wp-config's filename. + * + * @since 2.11 + * + * @param string $filename The WP Config filename, without the extension. + */ + $config_file_name = apply_filters( 'rocket_wp_config_name', 'wp-config' ); + $abspath = rocket_get_constant( 'ABSPATH' ); + $config_file = "{$abspath}{$config_file_name}.php"; + + if ( $this->filesystem->is_writable( $config_file ) ) { + return $config_file; + } + + $abspath_parent = dirname( $abspath ) . DIRECTORY_SEPARATOR; + $config_file_alt = "{$abspath_parent}{$config_file_name}.php"; + + if ( + $this->filesystem->exists( $config_file_alt ) + && + $this->filesystem->is_writable( $config_file_alt ) + && + ! $this->filesystem->exists( "{$abspath_parent}wp-settings.php" ) + ) { + return $config_file_alt; + } + + // No writable file found. + return false; + } + + /** + * This warning is displayed when the wp-config.php file isn't writable + * + * @since 3.6.1 + * + * @return void + */ + public function notice_wp_config_permissions() { + global $pagenow; + + if ( + 'plugins.php' === $pagenow + || + isset( $_GET['activate'] ) // phpcs:ignore WordPress.Security.NonceVerification.Recommended + ) { + return; + } + + if ( ! $this->is_user_allowed() ) { + return; + } + + if ( rocket_get_constant( 'WP_CACHE' ) ) { + return; + } + + // This filter is documented in inc/Engine/Cache/WPCache.php. + if ( ! (bool) apply_filters( 'rocket_set_wp_cache_constant', true ) ) { + return; + } + + if ( $this->find_wpconfig_path() ) { + return; + } + + $notice_name = 'rocket_warning_wp_config_permissions'; + + if ( + in_array( + $notice_name, + (array) get_user_meta( get_current_user_id(), 'rocket_boxes', true ), + true + ) + ) { + return; + } + + rocket_notice_html( + [ + 'status' => 'error', + 'dismissible' => '', + 'message' => rocket_notice_writing_permissions( 'wp-config.php' ), + 'dismiss_button' => $notice_name, + 'readonly_content' => $this->get_wp_cache_content(), + ] + ); + } + + /** + * Checks if current user can perform the action + * + * @since 3.6.1 + * + * @return bool + */ + private function is_user_allowed() { + return current_user_can( 'rocket_manage_options' ) && rocket_valid_key(); + } + + /** + * Gets the content to add to the wp-config.php file + * + * @since 3.6.1 + * + * @param string $value Value for the WP_CACHE constant. + * @return string + */ + private function get_wp_cache_content( $value = 'true' ) { + $plugin_name = rocket_get_constant( 'WP_ROCKET_PLUGIN_NAME' ); + + return "define( 'WP_CACHE', {$value} ); // Added by {$plugin_name}"; + } + + /** + * Adds a Site Health check for the WP_CACHE constant value + * + * @since 3.6.1 + * + * @param array $tests An array of tests to perform. + * @return array + */ + public function add_wp_cache_status_test( $tests ) { + $tests['direct']['wp_cache_status'] = [ + 'label' => __( 'WP_CACHE value', 'rocket' ), + 'test' => [ $this, 'check_wp_cache_value' ], + ]; + + return $tests; + } + + /** + * Checks the WP_CACHE constant value and return the result for Site Health + * + * @since 3.6.1 + * + * @return array + */ + public function check_wp_cache_value() { + $result = [ + 'badge' => [ + 'label' => __( 'Cache', 'rocket' ), + ], + 'description' => sprintf( + '

%s

', + __( 'The WP_CACHE constant needs to be set to true for WP Rocket cache to work properly', 'rocket' ) + ), + 'actions' => '', + 'test' => 'wp_cache_status', + ]; + + $value = rocket_get_constant( 'WP_CACHE' ); + + if ( true === $value ) { + $result['label'] = __( 'WP_CACHE is set to true', 'rocket' ); + $result['status'] = 'good'; + $result['badge']['color'] = 'green'; + + return $result; + } + + if ( null === $value ) { + $result['label'] = __( 'WP_CACHE is not set', 'rocket' ); + $result['status'] = 'critical'; + $result['badge']['color'] = 'red'; + + return $result; + } + + if ( false === $value ) { + $result['label'] = __( 'WP_CACHE is set to false', 'rocket' ); + $result['status'] = 'critical'; + $result['badge']['color'] = 'red'; + + return $result; + } + + return $result; + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/Capabilities/Manager.php b/wp-content/plugins/wp-rocket/inc/Engine/Capabilities/Manager.php new file mode 100644 index 0000000..b5d4d47 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/Capabilities/Manager.php @@ -0,0 +1,168 @@ +capabilities; + } + + /** + * Performs these actions during the plugin activation + * + * @return void + */ + public function activate() { + add_action( 'rocket_activation', [ $this, 'add_rocket_capabilities' ] ); + } + + /** + * Performs these actions during the plugin deactivation + * + * @return void + */ + public function deactivate() { + add_action( 'rocket_deactivation', [ $this, 'remove_rocket_capabilities' ] ); + } + + /** + * Add WP Rocket capabilities to the administrator role + * + * @since 3.4 + * + * @return void + */ + public function add_rocket_capabilities() { + $role = $this->get_administrator_role_object(); + + if ( is_null( $role ) ) { + return; + } + + foreach ( $this->get_capabilities() as $cap ) { + $role->add_cap( $cap ); + } + } + + /** + * Remove WP Rocket capabilities from the administrator role + * + * @since 3.4 + * + * @return void + */ + public function remove_rocket_capabilities() { + $role = $this->get_administrator_role_object(); + + if ( is_null( $role ) ) { + return; + } + + foreach ( $this->get_capabilities() as $cap ) { + $role->remove_cap( $cap ); + } + } + + /** + * Sets the capability for the options page. + * + * @since 3.4 + * + * @param string $capability The capability used for the page, which is manage_options by default. + * @return string + */ + public function required_capability( $capability ) { + return 'rocket_manage_options'; + } + + /** + * Add WP Rocket capabilities to User Role Editor + * + * @since 3.4 + * + * @param array $caps Array of existing capabilities. + * @return array + */ + public function add_caps_to_ure( $caps ) { + foreach ( $this->get_capabilities() as $cap ) { + $caps[ $cap ] = [ + 'custom', + 'wp_rocket', + ]; + } + + return $caps; + } + + /** + * Add WP Rocket as a group in User Role Editor + * + * @since 3.4 + * + * @param array $groups Array of existing groups. + * @return array + */ + public function add_group_to_ure( $groups ) { + $groups['wp_rocket'] = [ + 'caption' => esc_html( 'WP Rocket' ), + 'parent' => 'custom', + 'level' => 2, + ]; + + return $groups; + } + + /** + * Adds WP Rocket capabilities on plugin upgrade + * + * @since 3.6.3 + * + * @param string $wp_rocket_version Latest WP Rocket version. + * @param string $actual_version Installed WP Rocket version. + * @return void + */ + public function add_capabilities_on_upgrade( $wp_rocket_version, $actual_version ) { + if ( version_compare( $actual_version, '3.4.0.1', '<' ) ) { + $this->add_rocket_capabilities(); + } + } + + /** + * Returns the object for the administrator roll + * + * @since 3.6.3 + * + * @return WP_Role|null + */ + private function get_administrator_role_object() { + return get_role( 'administrator' ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/Capabilities/ServiceProvider.php b/wp-content/plugins/wp-rocket/inc/Engine/Capabilities/ServiceProvider.php new file mode 100644 index 0000000..848e2cb --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/Capabilities/ServiceProvider.php @@ -0,0 +1,37 @@ +getContainer()->add( 'capabilities_manager', 'WP_Rocket\Engine\Capabilities\Manager' ); + $this->getContainer()->share( 'capabilities_subscriber', 'WP_Rocket\Engine\Capabilities\Subscriber' ) + ->withArgument( $this->getContainer()->get( 'capabilities_manager' ) ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/Capabilities/Subscriber.php b/wp-content/plugins/wp-rocket/inc/Engine/Capabilities/Subscriber.php new file mode 100644 index 0000000..803f69f --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/Capabilities/Subscriber.php @@ -0,0 +1,94 @@ +capabilities = $capabilities; + } + + /** + * Return an array of events that this subscriber wants to listen to. + * + * @since 3.4 + * + * @return array + */ + public static function get_subscribed_events() { + $slug = rocket_get_constant( 'WP_ROCKET_PLUGIN_SLUG' ); + + return [ + "option_page_capability_{$slug}" => 'required_capability', + 'ure_built_in_wp_caps' => 'add_caps_to_ure', + 'ure_capabilities_groups_tree' => 'add_group_to_ure', + 'wp_rocket_upgrade' => [ 'add_capabilities_on_upgrade', 12, 2 ], + ]; + } + + /** + * Sets the capability for the options page. + * + * @since 3.4 + * + * @param string $capability The capability used for the page, which is manage_options by default. + * @return string + */ + public function required_capability( $capability ) { + return $this->capabilities->required_capability( $capability ); + } + + /** + * Adds WP Rocket capabilities to User Role Editor + * + * @since 3.4 + * + * @param array $caps Array of existing capabilities. + * @return array + */ + public function add_caps_to_ure( $caps ) { + return $this->capabilities->add_caps_to_ure( $caps ); + } + + /** + * Adds WP Rocket as a group in User Role Editor + * + * @since 3.4 + * + * @param array $groups Array of existing groups. + * @return array + */ + public function add_group_to_ure( $groups ) { + return $this->capabilities->add_group_to_ure( $groups ); + } + + /** + * Adds WP Rocket capabilities on plugin upgrade + * + * @since 3.6.3 + * + * @param string $wp_rocket_version Latest WP Rocket version. + * @param string $actual_version Installed WP Rocket version. + * @return void + */ + public function add_capabilities_on_upgrade( $wp_rocket_version, $actual_version ) { + $this->capabilities->add_capabilities_on_upgrade( $wp_rocket_version, $actual_version ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/Container/Argument/ArgumentResolverInterface.php b/wp-content/plugins/wp-rocket/inc/Engine/Container/Argument/ArgumentResolverInterface.php new file mode 100644 index 0000000..4b13340 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/Container/Argument/ArgumentResolverInterface.php @@ -0,0 +1,26 @@ +getValue(); + continue; + } + + if (! is_string($arg)) { + continue; + } + + $container = $this->getContainer(); + + if (is_null($container) && $this instanceof ReflectionContainer) { + $container = $this; + } + + if (! is_null($container) && $container->has($arg)) { + $arg = $container->get($arg); + + if ($arg instanceof RawArgumentInterface) { + $arg = $arg->getValue(); + } + + continue; + } + } + + return $arguments; + } + + /** + * {@inheritdoc} + */ + public function reflectArguments(ReflectionFunctionAbstract $method, array $args = []) + { + $arguments = array_map(function (ReflectionParameter $param) use ($method, $args) { + $name = $param->getName(); + $class = $param->getClass(); + + if (array_key_exists($name, $args)) { + return $args[$name]; + } + + if (! is_null($class)) { + return $class->getName(); + } + + if ($param->isDefaultValueAvailable()) { + return $param->getDefaultValue(); + } + + throw new NotFoundException(sprintf( + 'Unable to resolve a value for parameter (%s) in the function/method (%s)', + $name, + $method->getName() + )); + }, $method->getParameters()); + + return $this->resolveArguments($arguments); + } + + /** + * @return \WP_Rocket\Engine\Container\ContainerInterface + */ + abstract public function getContainer(); +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/Container/Argument/RawArgument.php b/wp-content/plugins/wp-rocket/inc/Engine/Container/Argument/RawArgument.php new file mode 100644 index 0000000..38da849 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/Container/Argument/RawArgument.php @@ -0,0 +1,27 @@ +value = $value; + } + + /** + * {@inheritdoc} + */ + public function getValue() + { + return $this->value; + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/Container/Argument/RawArgumentInterface.php b/wp-content/plugins/wp-rocket/inc/Engine/Container/Argument/RawArgumentInterface.php new file mode 100644 index 0000000..6ca53ec --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/Container/Argument/RawArgumentInterface.php @@ -0,0 +1,13 @@ +providers = (is_null($providers)) + ? (new ServiceProviderAggregate)->setContainer($this) + : $providers->setContainer($this); + + $this->inflectors = (is_null($inflectors)) + ? (new InflectorAggregate)->setContainer($this) + : $inflectors->setContainer($this); + + $this->definitionFactory = (is_null($definitionFactory)) + ? (new DefinitionFactory)->setContainer($this) + : $definitionFactory->setContainer($this); + } + + /** + * {@inheritdoc} + */ + public function get($alias, array $args = []) + { + try { + return $this->getFromThisContainer($alias, $args); + } catch (NotFoundException $exception) { + if ($this->providers->provides($alias)) { + $this->providers->register($alias); + + return $this->getFromThisContainer($alias, $args); + } + + $resolved = $this->getFromDelegate($alias, $args); + + return $this->inflectors->inflect($resolved); + } + } + + /** + * {@inheritdoc} + */ + public function has($alias) + { + if (array_key_exists($alias, $this->definitions) || $this->hasShared($alias)) { + return true; + } + + if ($this->providers->provides($alias)) { + return true; + } + + return $this->hasInDelegate($alias); + } + + /** + * Returns a boolean to determine if the container has a shared instance of an alias. + * + * @param string $alias + * @param boolean $resolved + * @return boolean + */ + public function hasShared($alias, $resolved = false) + { + $shared = ($resolved === false) ? array_merge($this->shared, $this->sharedDefinitions) : $this->shared; + + return (array_key_exists($alias, $shared)); + } + + /** + * {@inheritdoc} + */ + public function add($alias, $concrete = null, $share = false) + { + unset($this->shared[$alias]); + unset($this->definitions[$alias]); + unset($this->sharedDefinitions[$alias]); + + if (is_null($concrete)) { + $concrete = $alias; + } + + $definition = $this->definitionFactory->getDefinition($alias, $concrete); + + if ($definition instanceof DefinitionInterface) { + if ($share === false) { + $this->definitions[$alias] = $definition; + } else { + $this->sharedDefinitions[$alias] = $definition; + } + + return $definition; + } + + // dealing with a value that cannot build a definition + $this->shared[$alias] = $concrete; + } + + /** + * {@inheritdoc} + */ + public function share($alias, $concrete = null) + { + return $this->add($alias, $concrete, true); + } + + /** + * {@inheritdoc} + */ + public function addServiceProvider($provider) + { + $this->providers->add($provider); + + return $this; + } + + /** + * {@inheritdoc} + */ + public function extend($alias) + { + if ($this->providers->provides($alias)) { + $this->providers->register($alias); + } + + if (array_key_exists($alias, $this->definitions)) { + return $this->definitions[$alias]; + } + + if (array_key_exists($alias, $this->sharedDefinitions)) { + return $this->sharedDefinitions[$alias]; + } + + throw new NotFoundException( + sprintf('Unable to extend alias (%s) as it is not being managed as a definition', $alias) + ); + } + + /** + * {@inheritdoc} + */ + public function inflector($type, callable $callback = null) + { + return $this->inflectors->add($type, $callback); + } + + /** + * {@inheritdoc} + */ + public function call(callable $callable, array $args = []) + { + return (new ReflectionContainer)->setContainer($this)->call($callable, $args); + } + + /** + * Delegate a backup container to be checked for services if it + * cannot be resolved via this container. + * + * @param \Psr\Container\ContainerInterface $container + * @return $this + */ + public function delegate(InteropContainerInterface $container) + { + $this->delegates[] = $container; + + if ($container instanceof ImmutableContainerAwareInterface) { + $container->setContainer($this); + } + + return $this; + } + + /** + * Returns true if service is registered in one of the delegated backup containers. + * + * @param string $alias + * @return boolean + */ + public function hasInDelegate($alias) + { + foreach ($this->delegates as $container) { + if ($container->has($alias)) { + return true; + } + } + + return false; + } + + /** + * Attempt to get a service from the stack of delegated backup containers. + * + * @param string $alias + * @param array $args + * @return mixed + */ + protected function getFromDelegate($alias, array $args = []) + { + foreach ($this->delegates as $container) { + if ($container->has($alias)) { + return $container->get($alias, $args); + } + + continue; + } + + throw new NotFoundException( + sprintf('Alias (%s) is not being managed by the container', $alias) + ); + + } + + /** + * Get a service that has been registered in this container. + * + * @param string $alias + * @param array $args + * @return mixed + */ + protected function getFromThisContainer($alias, array $args = []) + { + if ($this->hasShared($alias, true)) { + $shared = $this->inflectors->inflect($this->shared[$alias]); + if ($shared instanceof RawArgumentInterface) { + return $shared->getValue(); + } + return $shared; + } + + if (array_key_exists($alias, $this->sharedDefinitions)) { + $shared = $this->inflectors->inflect($this->sharedDefinitions[$alias]->build()); + $this->shared[$alias] = $shared; + return $shared; + } + + if (array_key_exists($alias, $this->definitions)) { + return $this->inflectors->inflect( + $this->definitions[$alias]->build($args) + ); + } + + throw new NotFoundException( + sprintf('Alias (%s) is not being managed by the container', $alias) + ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/Container/ContainerAwareInterface.php b/wp-content/plugins/wp-rocket/inc/Engine/Container/ContainerAwareInterface.php new file mode 100644 index 0000000..74c78a3 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/Container/ContainerAwareInterface.php @@ -0,0 +1,20 @@ +container = $container; + + return $this; + } + + /** + * Get the container. + * + * @return \WP_Rocket\Engine\Container\ContainerInterface + */ + public function getContainer() + { + return $this->container; + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/Container/ContainerInterface.php b/wp-content/plugins/wp-rocket/inc/Engine/Container/ContainerInterface.php new file mode 100644 index 0000000..19b95b9 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/Container/ContainerInterface.php @@ -0,0 +1,59 @@ +alias = $alias; + $this->concrete = $concrete; + } + + /** + * {@inheritdoc} + */ + public function withArgument($arg) + { + $this->arguments[] = $arg; + + return $this; + } + + /** + * {@inheritdoc} + */ + public function withArguments(array $args) + { + foreach ($args as $arg) { + $this->withArgument($arg); + } + + return $this; + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/Container/Definition/CallableDefinition.php b/wp-content/plugins/wp-rocket/inc/Engine/Container/Definition/CallableDefinition.php new file mode 100644 index 0000000..7d7c898 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/Container/Definition/CallableDefinition.php @@ -0,0 +1,23 @@ +arguments : $args; + $resolved = $this->resolveArguments($args); + + if (is_array($this->concrete) && is_string($this->concrete[0])) { + $this->concrete[0] = ($this->getContainer()->has($this->concrete[0])) + ? $this->getContainer()->get($this->concrete[0]) + : $this->concrete[0]; + } + + return call_user_func_array($this->concrete, $resolved); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/Container/Definition/ClassDefinition.php b/wp-content/plugins/wp-rocket/inc/Engine/Container/Definition/ClassDefinition.php new file mode 100644 index 0000000..3c2559b --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/Container/Definition/ClassDefinition.php @@ -0,0 +1,67 @@ +methods[] = [ + 'method' => $method, + 'arguments' => $args + ]; + + return $this; + } + + /** + * {@inheritdoc} + */ + public function withMethodCalls(array $methods = []) + { + foreach ($methods as $method => $args) { + $this->withMethodCall($method, $args); + } + + return $this; + } + + /** + * {@inheritdoc} + */ + public function build(array $args = []) + { + $args = (empty($args)) ? $this->arguments : $args; + $resolved = $this->resolveArguments($args); + $reflection = new ReflectionClass($this->concrete); + $instance = $reflection->newInstanceArgs($resolved); + + return $this->invokeMethods($instance); + } + + /** + * Invoke methods on resolved instance. + * + * @param object $instance + * @return object + */ + protected function invokeMethods($instance) + { + foreach ($this->methods as $method) { + $args = $this->resolveArguments($method['arguments']); + call_user_func_array([$instance, $method['method']], $args); + } + + return $instance; + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/Container/Definition/ClassDefinitionInterface.php b/wp-content/plugins/wp-rocket/inc/Engine/Container/Definition/ClassDefinitionInterface.php new file mode 100644 index 0000000..8273dae --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/Container/Definition/ClassDefinitionInterface.php @@ -0,0 +1,23 @@ +setContainer($this->getContainer()); + } + + if (is_string($concrete) && class_exists($concrete)) { + return (new ClassDefinition($alias, $concrete))->setContainer($this->getContainer()); + } + + // if the item is not definable we just return the value to be stored + // in the container as an arbitrary value/instance + return $concrete; + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/Container/Definition/DefinitionFactoryInterface.php b/wp-content/plugins/wp-rocket/inc/Engine/Container/Definition/DefinitionFactoryInterface.php new file mode 100644 index 0000000..a9bd63e --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/Container/Definition/DefinitionFactoryInterface.php @@ -0,0 +1,17 @@ +container = $container; + + return $this; + } + + /** + * Get the container. + * + * @return \WP_Rocket\Engine\Container\ImmutableContainerInterface + */ + public function getContainer() + { + return $this->container; + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/Container/ImmutableContainerInterface.php b/wp-content/plugins/wp-rocket/inc/Engine/Container/ImmutableContainerInterface.php new file mode 100644 index 0000000..9dc9365 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/Container/ImmutableContainerInterface.php @@ -0,0 +1,10 @@ +methods[$name] = $args; + + return $this; + } + + /** + * Defines multiple methods to be invoked on the subject object. + * + * @param array $methods + * @return $this + */ + public function invokeMethods(array $methods) + { + foreach ($methods as $name => $args) { + $this->invokeMethod($name, $args); + } + + return $this; + } + + /** + * Defines a property to be set on the subject object. + * + * @param string $property + * @param mixed $value + * @return $this + */ + public function setProperty($property, $value) + { + $this->properties[$property] = $value; + + return $this; + } + + /** + * Defines multiple properties to be set on the subject object. + * + * @param array $properties + * @return $this + */ + public function setProperties(array $properties) + { + foreach ($properties as $property => $value) { + $this->setProperty($property, $value); + } + + return $this; + } + + /** + * Apply inflections to an object. + * + * @param object $object + * @return void + */ + public function inflect($object) + { + $properties = $this->resolveArguments(array_values($this->properties)); + $properties = array_combine(array_keys($this->properties), $properties); + + foreach ($properties as $property => $value) { + $object->{$property} = $value; + } + + foreach ($this->methods as $method => $args) { + $args = $this->resolveArguments($args); + + call_user_func_array([$object, $method], $args); + } + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/Container/Inflector/InflectorAggregate.php b/wp-content/plugins/wp-rocket/inc/Engine/Container/Inflector/InflectorAggregate.php new file mode 100644 index 0000000..d8d2abe --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/Container/Inflector/InflectorAggregate.php @@ -0,0 +1,53 @@ +inflectors[$type] = $inflector; + + return $inflector; + } + + $this->inflectors[$type] = $callback; + } + + /** + * {@inheritdoc} + */ + public function inflect($object) + { + foreach ($this->inflectors as $type => $inflector) { + if (! $object instanceof $type) { + continue; + } + + if ($inflector instanceof Inflector) { + $inflector->setContainer($this->getContainer()); + $inflector->inflect($object); + continue; + } + + // must be dealing with a callable as the inflector + call_user_func_array($inflector, [$object]); + } + + return $object; + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/Container/Inflector/InflectorAggregateInterface.php b/wp-content/plugins/wp-rocket/inc/Engine/Container/Inflector/InflectorAggregateInterface.php new file mode 100644 index 0000000..2b5e303 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/Container/Inflector/InflectorAggregateInterface.php @@ -0,0 +1,25 @@ +has($alias)) { + throw new NotFoundException( + sprintf('Alias (%s) is not an existing class and therefore cannot be resolved', $alias) + ); + } + + $reflector = new ReflectionClass($alias); + $construct = $reflector->getConstructor(); + + if ($construct === null) { + return new $alias; + } + + return $reflector->newInstanceArgs( + $this->reflectArguments($construct, $args) + ); + } + + /** + * {@inheritdoc} + */ + public function has($alias) + { + return class_exists($alias); + } + + /** + * Invoke a callable via the container. + * + * @param callable $callable + * @param array $args + * @return mixed + */ + public function call(callable $callable, array $args = []) + { + if (is_string($callable) && strpos($callable, '::') !== false) { + $callable = explode('::', $callable); + } + + if (is_array($callable)) { + if (is_string($callable[0])) { + $callable[0] = $this->getContainer()->get($callable[0]); + } + + $reflection = new ReflectionMethod($callable[0], $callable[1]); + + if ($reflection->isStatic()) { + $callable[0] = null; + } + + return $reflection->invokeArgs($callable[0], $this->reflectArguments($reflection, $args)); + } + + if (is_object($callable)) { + $reflection = new ReflectionMethod($callable, '__invoke'); + + return $reflection->invokeArgs($callable, $this->reflectArguments($reflection, $args)); + } + + $reflection = new ReflectionFunction($callable); + + return $reflection->invokeArgs($this->reflectArguments($reflection, $args)); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/Container/ServiceProvider/AbstractServiceProvider.php b/wp-content/plugins/wp-rocket/inc/Engine/Container/ServiceProvider/AbstractServiceProvider.php new file mode 100644 index 0000000..6bd7fc5 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/Container/ServiceProvider/AbstractServiceProvider.php @@ -0,0 +1,27 @@ +provides)); + } + + return $this->provides; + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/Container/ServiceProvider/AbstractSignatureServiceProvider.php b/wp-content/plugins/wp-rocket/inc/Engine/Container/ServiceProvider/AbstractSignatureServiceProvider.php new file mode 100644 index 0000000..84b5425 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/Container/ServiceProvider/AbstractSignatureServiceProvider.php @@ -0,0 +1,31 @@ +signature = $signature; + + return $this; + } + + /** + * {@inheritdoc} + */ + public function getSignature() + { + return (is_null($this->signature)) ? get_class($this) : $this->signature; + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/Container/ServiceProvider/BootableServiceProviderInterface.php b/wp-content/plugins/wp-rocket/inc/Engine/Container/ServiceProvider/BootableServiceProviderInterface.php new file mode 100644 index 0000000..33d9579 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/Container/ServiceProvider/BootableServiceProviderInterface.php @@ -0,0 +1,14 @@ +setContainer($this->getContainer()); + } + + if ($provider instanceof BootableServiceProviderInterface) { + $provider->boot(); + } + + if ($provider instanceof ServiceProviderInterface) { + foreach ($provider->provides() as $service) { + $this->providers[$service] = $provider; + } + + return $this; + } + + throw new \InvalidArgumentException( + 'A service provider must be a fully qualified class name or instance ' . + 'of (\WP_Rocket\Engine\Container\ServiceProvider\ServiceProviderInterface)' + ); + } + + /** + * {@inheritdoc} + */ + public function provides($service) + { + return array_key_exists($service, $this->providers); + } + + /** + * {@inheritdoc} + */ + public function register($service) + { + if (! array_key_exists($service, $this->providers)) { + throw new \InvalidArgumentException( + sprintf('(%s) is not provided by a service provider', $service) + ); + } + + $provider = $this->providers[$service]; + $signature = get_class($provider); + + if ($provider instanceof SignatureServiceProviderInterface) { + $signature = $provider->getSignature(); + } + + // ensure that the provider hasn't already been invoked by any other service request + if (in_array($signature, $this->registered)) { + return; + } + + $provider->register(); + + $this->registered[] = $signature; + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/Container/ServiceProvider/ServiceProviderAggregateInterface.php b/wp-content/plugins/wp-rocket/inc/Engine/Container/ServiceProvider/ServiceProviderAggregateInterface.php new file mode 100644 index 0000000..41559ca --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/Container/ServiceProvider/ServiceProviderAggregateInterface.php @@ -0,0 +1,32 @@ +container property or the `getContainer` method + * from the ContainerAwareTrait. + * + * @return void + */ + public function register(); +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/Container/ServiceProvider/SignatureServiceProviderInterface.php b/wp-content/plugins/wp-rocket/inc/Engine/Container/ServiceProvider/SignatureServiceProviderInterface.php new file mode 100644 index 0000000..33a5628 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/Container/ServiceProvider/SignatureServiceProviderInterface.php @@ -0,0 +1,24 @@ + apply_filters( 'rocket_cpcss_job_request', $params ), + ] + ); + + return $this->prepare_response( $response, $url, $is_mobile, $item_type ); + } + + /** + * Prepare the response to be returned. + * + * @since 3.6 + * + * @param array|WP_Error $response The response or WP_Error on failure. + * @param string $url Url to be checked. + * @param bool $is_mobile Optional. Flag for if this is cpcss for mobile or not. Default: false. + * @param string $item_type Optional. Type for this item if it's custom or specific type. Default: custom. + * + * @return array|WP_Error + */ + private function prepare_response( $response, $url, $is_mobile = false, $item_type = 'custom' ) { + + if ( is_wp_error( $response ) ) { + return new WP_Error( + $this->get_response_code( $response ), + sprintf( + // translators: %1$s = type of content, %2$s = error message. + __( 'Critical CSS for %1$s not generated. Error: %2$s', 'rocket' ), + ( 'custom' === $item_type ) ? $url : $item_type, + $response->get_error_message() + ), + [ + 'status' => 400, + ] + ); + } + + $response_data = $this->get_response_data( $response ); + $response_status_code = $this->get_response_status( $response, ( isset( $response_data->status ) ) ? $response_data->status : null ); + $succeeded = $this->get_response_success( $response_status_code, $response_data ); + + if ( $succeeded ) { + return $response_data; + } + + $response_message = $this->get_response_message( $response_status_code, $response_data, $url, $is_mobile, $item_type ); + + if ( 200 === $response_status_code ) { + $response_status_code = 400; + } + + return new WP_Error( + $this->get_response_code( $response ), + $response_message, + [ + 'status' => $response_status_code, + ] + ); + } + + /** + * Get the status of response. + * + * @since 3.6 + * + * @param int $response_code Response code to check success or failure. + * @param stdClass $response_data Object of data returned from request. + * + * @return bool success or failed. + */ + private function get_response_success( $response_code, $response_data ) { + return ( + 200 === $response_code + && + ! empty( $response_data ) + && + ( + ( + isset( $response_data->status ) + && + 200 === $response_data->status + ) + || + ( + isset( $response_data->data ) + && + isset( $response_data->data->id ) + ) + ) + ); + } + + /** + * Get response status code/number. + * + * @since 3.6 + * + * @param array|WP_Error $response The response or WP_Error on failure. + * @param null|int $status Optional. Status code to overwrite the response status. Default: null. + * + * @return int status code|number of response. + */ + private function get_response_status( $response, $status = null ) { + if ( ! is_null( $status ) ) { + return (int) $status; + } + + return (int) wp_remote_retrieve_response_code( $response ); + } + + /** + * Get response message. + * + * @since 3.6 + * + * @param int $response_status_code Response status code. + * @param stdClass $response_data Object of data returned from request. + * @param string $url Url for the web page to be checked. + * @param bool $is_mobile Optional. Flag for if this is cpcss for mobile or not. Default: false. + * @param string $item_type Optional. Type for this item if it's custom or specific type. Default: custom. + * + * @return string + */ + private function get_response_message( $response_status_code, $response_data, $url, $is_mobile = false, $item_type = 'custom' ) { + $message = ''; + + switch ( $response_status_code ) { + case 200: + if ( ! isset( $response_data->data->id ) ) { + $message .= sprintf( + $is_mobile + ? + // translators: %s = item URL. + __( 'Critical CSS for %1$s on mobile not generated. Error: The API returned an empty response.', 'rocket' ) + : + // translators: %s = item URL. + __( 'Critical CSS for %1$s not generated. Error: The API returned an empty response.', 'rocket' ), + ( 'custom' === $item_type ) ? $url : $item_type + ); + } + break; + case 400: + case 440: + case 404: + // translators: %s = item URL. + $message .= sprintf( + $is_mobile + // translators: %s = item URL. + ? __( 'Critical CSS for %1$s on mobile not generated.', 'rocket' ) + // translators: %s = item URL. + : __( 'Critical CSS for %1$s not generated.', 'rocket' ), + ( 'custom' === $item_type ) ? $url : $item_type + ); + break; + default: + $message .= sprintf( + $is_mobile + // translators: %s = URL. + ? __( 'Critical CSS for %1$s on mobile not generated. Error: The API returned an invalid response code.', 'rocket' ) + // translators: %s = URL. + : __( 'Critical CSS for %1$s not generated. Error: The API returned an invalid response code.', 'rocket' ), + ( 'custom' === $item_type ) ? $url : $item_type + ); + break; + } + + if ( isset( $response_data->message ) ) { + // translators: %1$s = error message. + $message .= ' ' . sprintf( __( 'Error: %1$s', 'rocket' ), $response_data->message ); + } + + return $message; + } + + /** + * Get response data from the API. + * + * @since 3.6 + * + * @param array|WP_Error $response The response or WP_Error on failure. + * + * @return mixed response of API. + */ + private function get_response_data( $response ) { + return json_decode( wp_remote_retrieve_body( $response ) ); + } + + /** + * Get our internal response code [Not the standard HTTP codes]. + * + * @since 3.6 + * + * @param array|WP_Error $response The response or WP_Error on failure. + * + * @return string response code. + */ + private function get_response_code( $response ) { + // Todo: we can return code based on the response status number, for example 404 not_found. + return 'cpcss_generation_failed'; + } + + /** + * Get job details by calling API with job ID. + * + * @since 3.6 + * + * @param string $job_id ID for the job to get details. + * @param string $url URL to be used in error messages. + * @param bool $is_mobile Optional. Flag for if this is cpcss for mobile or not. Default: false. + * @param string $item_type Optional. Type for this item if it's custom or specific type. Default: custom. + * + * @return mixed|WP_Error Details for job. + */ + public function get_job_details( $job_id, $url, $is_mobile = false, $item_type = 'custom' ) { + $response = wp_remote_get( + self::API_URL . "{$job_id}/" + ); + + return $this->prepare_response( $response, $url, $is_mobile, $item_type ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/CriticalPath/Admin/Admin.php b/wp-content/plugins/wp-rocket/inc/Engine/CriticalPath/Admin/Admin.php new file mode 100644 index 0000000..98fc7f8 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/CriticalPath/Admin/Admin.php @@ -0,0 +1,276 @@ +options = $options; + $this->processor = $processor; + } + + /** + * Check the CPCSS heartbeat. + * + * @since 3.6 + */ + public function cpcss_heartbeat() { + check_ajax_referer( 'cpcss_heartbeat_nonce', '_nonce', true ); + + if ( + ! $this->is_async_css_enabled() + || + ! current_user_can( 'rocket_manage_options' ) + || + ! current_user_can( 'rocket_regenerate_critical_css' ) + ) { + wp_send_json_error(); + + return; + } + + $cpcss_pending = get_transient( 'rocket_cpcss_generation_pending' ); + + if ( ! empty( $cpcss_pending ) ) { + $cpcss_pending = $this->process_cpcss_pending_queue( (array) $cpcss_pending ); + } + + if ( false !== $cpcss_pending && empty( $cpcss_pending ) ) { + delete_transient( 'rocket_cpcss_generation_pending' ); + } + + if ( empty( $cpcss_pending ) ) { + $this->generation_complete(); + wp_send_json_success( [ 'status' => 'cpcss_complete' ] ); + + return; + } + + set_transient( 'rocket_cpcss_generation_pending', $cpcss_pending, HOUR_IN_SECONDS ); + wp_send_json_success( [ 'status' => 'cpcss_running' ] ); + } + + /** + * Pull one item off of the CPCSS Pending Queue and process it. + * + * @since 3.6 + * + * @param array $cpcss_pending CPCSS Pending Queue. + * + * @return array remaining queue. + */ + private function process_cpcss_pending_queue( array $cpcss_pending ) { + $cpcss_item = reset( $cpcss_pending ); + if ( empty( $cpcss_item ) ) { + return $cpcss_pending; + } + + // Threshold 'check' > 10 = timed out. + $timeout = ( $cpcss_item['check'] > 10 ); + $additional_params = [ + 'timeout' => $timeout, + 'is_mobile' => ! empty( $cpcss_item['mobile'] ) ? (bool) $cpcss_item['mobile'] : false, + 'item_type' => $cpcss_item['type'], + ]; + $cpcss_generation = $this->processor->process_generate( + $cpcss_item['url'], + $cpcss_item['path'], + $additional_params + ); + + // Increment this item's threshold count. + $cpcss_pending[ $cpcss_item['path'] ]['check']++; + + $this->cpcss_heartbeat_notices( $cpcss_generation, $cpcss_item ); + + // Remove the item from the queue when (a) the CPCSS API returns success or error or (b) timeouts. + if ( + is_wp_error( $cpcss_generation ) + || + 'cpcss_generation_successful' === $cpcss_generation['code'] + || + 'cpcss_generation_failed' === $cpcss_generation['code'] + || + $timeout + ) { + unset( $cpcss_pending[ $cpcss_item['path'] ] ); + } + + return $cpcss_pending; + } + + /** + * CPCSS heartbeat update notices transients. + * + * @since 3.6 + * + * @param array|WP_Error $cpcss_generation CPCSS regeneration reply. + * @param array $cpcss_item Item processed. + */ + private function cpcss_heartbeat_notices( $cpcss_generation, $cpcss_item ) { + $mobile = isset( $cpcss_item['mobile'] ) ? $cpcss_item['mobile'] : 0; + $transient = (array) get_transient( 'rocket_critical_css_generation_process_running' ); + + // Initializes the transient. + if ( ! isset( $transient['items'] ) ) { + $transient['items'] = []; + } + + if ( is_wp_error( $cpcss_generation ) ) { + $this->update_running_transient( $transient, $cpcss_item['path'], $mobile, $cpcss_generation->get_error_message(), false ); + return; + } + + if ( + isset( $cpcss_generation['code'] ) + && + ( + 'cpcss_generation_successful' === $cpcss_generation['code'] + || + 'cpcss_generation_failed' === $cpcss_generation['code'] + ) + ) { + $this->update_running_transient( $transient, $cpcss_item['path'], $mobile, $cpcss_generation['message'], ( 'cpcss_generation_successful' === $cpcss_generation['code'] ) ); + } + } + + /** + * Launches when the CPCSS generation is complete. + * + * @since 3.6 + */ + private function generation_complete() { + $running = get_transient( 'rocket_critical_css_generation_process_running' ); + + if ( false === $running ) { + return; + } + + if ( ! isset( $running['total'], $running['items'] ) ) { + return; + } + + if ( $running['total'] > count( $running['items'] ) ) { + return; + } + + /** + * Fires when the critical CSS generation process is complete. + * + * @since 2.11 + */ + do_action( 'rocket_critical_css_generation_process_complete' ); + + rocket_clean_domain(); + set_transient( 'rocket_critical_css_generation_process_complete', get_transient( 'rocket_critical_css_generation_process_running' ), HOUR_IN_SECONDS ); + delete_transient( 'rocket_critical_css_generation_process_running' ); + } + + /** + * Enqueue CPCSS heartbeat script on all admin pages. + * + * @since 3.6 + */ + public function enqueue_admin_cpcss_heartbeat_script() { + if ( ! $this->is_async_css_enabled() ) { + return; + } + + wp_enqueue_script( + 'wpr-heartbeat-cpcss-script', + rocket_get_constant( 'WP_ROCKET_ASSETS_JS_URL' ) . 'wpr-cpcss-heartbeat.js', + [], + rocket_get_constant( 'WP_ROCKET_VERSION' ), + true + ); + + wp_localize_script( + 'wpr-heartbeat-cpcss-script', + 'rocket_cpcss_heartbeat', + [ + 'nonce' => wp_create_nonce( 'cpcss_heartbeat_nonce' ), + ] + ); + } + + /** + * Add Regenerate Critical CSS link to WP Rocket admin bar item + * + * @since 3.6 + * + * @param WP_Admin_Bar $wp_admin_bar WP_Admin_Bar instance, passed by reference. + * + * @return void + */ + public function add_regenerate_menu_item( $wp_admin_bar ) { + if ( ! current_user_can( 'rocket_regenerate_critical_css' ) ) { + return; + } + + if ( ! is_admin() ) { + return; + } + + if ( ! $this->is_async_css_enabled() ) { + return; + } + + // This filter is documented in inc/Engine/CriticalPath/CriticalCSS.php. + if ( ! apply_filters( 'do_rocket_critical_css_generation', true ) ) { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + return; + } + + $referer = ''; + $action = 'rocket_generate_critical_css'; + + if ( ! empty( $_SERVER['REQUEST_URI'] ) ) { + $referer_url = filter_var( wp_unslash( $_SERVER['REQUEST_URI'] ), FILTER_SANITIZE_URL ); + $referer = '&_wp_http_referer=' . rawurlencode( remove_query_arg( 'fl_builder', $referer_url ) ); + } + + $wp_admin_bar->add_menu( + [ + 'parent' => 'wp-rocket', + 'id' => 'regenerate-critical-path', + 'title' => __( 'Regenerate Critical Path CSS', 'rocket' ), + 'href' => wp_nonce_url( admin_url( "admin-post.php?action={$action}{$referer}" ), $action ), + ] + ); + } + + /** + * Checks if the "async_css" option is enabled. + * + * @since 3.6 + * + * @return bool true when "async_css" option is enabled. + */ + private function is_async_css_enabled() { + return (bool) $this->options->get( 'async_css', 0 ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/CriticalPath/Admin/Post.php b/wp-content/plugins/wp-rocket/inc/Engine/CriticalPath/Admin/Post.php new file mode 100644 index 0000000..10c9d15 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/CriticalPath/Admin/Post.php @@ -0,0 +1,224 @@ +beacon = $beacon; + $this->options = $options; + $this->critical_css_path = $critical_path . get_current_blog_id() . '/posts/'; + } + + /** + * Displays the critical CSS block in WP Rocket options metabox. + * + * @since 3.6 + * + * @return void + */ + public function cpcss_section() { + $data = [ + 'disabled_description' => $this->get_disabled_description(), + ]; + + echo $this->generate( 'metabox/container', $data ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + } + + /** + * Displays the content inside the critical CSS block. + * + * @since 3.6 + * + * @return void + */ + public function cpcss_actions() { + $data = [ + 'disabled' => $this->is_enabled(), + 'beacon' => $this->beacon->get_suggest( 'async' ), + 'cpcss_exists' => $this->cpcss_exists(), + ]; + + // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + echo $this->generate( + 'metabox/generate', + $data // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + ); + } + + /** + * Enqueue CPCSS generation / deletion script on edit.php page. + * + * @since 3.6 + * + * @param string $page The current admin page. + * + * @return void + */ + public function enqueue_admin_edit_script( $page ) { + global $post, $pagenow; + + // Bailout if the page is not Post / Page. + if ( ! in_array( $page, [ 'edit.php', 'post.php' ], true ) ) { + return; + } + + if ( ! in_array( $pagenow, [ 'post-new.php', 'post.php' ], true ) ) { + return; + } + + // Bailout if the CPCSS is not enabled for this Post / Page. + if ( $this->is_enabled() ) { + return; + } + + $post_id = ( 'post-new.php' === $pagenow ) ? '' : $post->ID; + + wp_enqueue_script( + 'wpr-edit-cpcss-script', + rocket_get_constant( 'WP_ROCKET_ASSETS_JS_URL' ) . 'wpr-cpcss.js', + [], + rocket_get_constant( 'WP_ROCKET_VERSION' ), + true + ); + + wp_localize_script( + 'wpr-edit-cpcss-script', + 'rocket_cpcss', + [ + 'rest_url' => rest_url( "wp-rocket/v1/cpcss/post/{$post_id}" ), + 'rest_nonce' => wp_create_nonce( 'wp_rest' ), + 'generate_btn' => __( 'Generate Specific CPCSS', 'rocket' ), + 'regenerate_btn' => __( 'Regenerate specific CPCSS', 'rocket' ), + 'wprMobileCpcssEnabled' => $this->options->get( 'async_css_mobile', 0 ), + ] + ); + } + + /** + * Gets data for the disabled checks. + * + * @since 3.6 + * + * @return array + */ + private function get_disabled_data() { + global $post; + + if ( rocket_get_constant( 'WP_ROCKET_IS_TESTING', false ) ) { + $this->disabled_data = null; + } + + if ( isset( $this->disabled_data ) ) { + return $this->disabled_data; + } + + if ( 'publish' !== $post->post_status ) { + $this->disabled_data['not_published'] = 1; + } + + if ( ! $this->options->get( 'async_css', 0 ) ) { + $this->disabled_data['option_disabled'] = 1; + } + + if ( get_post_meta( $post->ID, '_rocket_exclude_async_css', true ) ) { + $this->disabled_data['option_excluded'] = 1; + } + + return $this->disabled_data; + } + + /** + * Checks if critical CSS generation is enabled for the current post. + * + * @since 3.6 + * + * @return bool + */ + private function is_enabled() { + return ! empty( $this->get_disabled_data() ); + } + + /** + * Returns the reason why actions are disabled. + * + * @since 3.6 + * + * @return string + */ + private function get_disabled_description() { + global $post; + + $disabled_data = $this->get_disabled_data(); + + if ( empty( $disabled_data ) ) { + return ''; + } + + $notice = __( '%l to use this feature.', 'rocket' ); + $list = [ + // translators: %s = post type. + 'not_published' => sprintf( __( 'Publish the %s', 'rocket' ), $post->post_type ), + 'option_disabled' => __( 'Enable Optimize CSS delivery in WP Rocket settings', 'rocket' ), + 'option_excluded' => __( 'Enable Optimize CSS delivery in the options above', 'rocket' ), + ]; + + return wp_sprintf_l( $notice, array_intersect_key( $list, $disabled_data ) ); + } + + /** + * Checks if a specific critical css file exists for the current post. + * + * @since 3.6 + * + * @return bool + */ + private function cpcss_exists() { + global $post; + + $post_cpcss = "{$this->critical_css_path}{$post->post_type}-{$post->ID}.css"; + + return rocket_direct_filesystem()->exists( $post_cpcss ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/CriticalPath/Admin/Settings.php b/wp-content/plugins/wp-rocket/inc/Engine/CriticalPath/Admin/Settings.php new file mode 100644 index 0000000..2e33b9d --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/CriticalPath/Admin/Settings.php @@ -0,0 +1,160 @@ +beacon = $beacon; + $this->options = $options; + $this->critical_css = $critical_css; + } + + /** + * Display CPCSS mobile section tool admin view. + * + * @since 3.6 + * + * @return void + */ + public function display_cpcss_mobile_section() { + if ( ! current_user_can( 'rocket_manage_options' ) ) { + return; + } + + // Bailout if CPCSS is not enabled & separate cache for mobiles is not enabled. + // Or bailout if CPCSS mobile option is false. + if ( + ! ( + $this->options->get( 'async_css', 0 ) + && + $this->options->get( 'cache_mobile', 0 ) + && + $this->options->get( 'do_caching_mobile_files', 0 ) + ) + || + $this->options->get( 'async_css_mobile', 0 ) + ) { + return; + } + + $data = [ + 'beacon' => $this->beacon->get_suggest( 'async' ), + ]; + + echo $this->generate( 'activate-cpcss-mobile', $data ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + } + + /** + * Enable CPCSS mobile. + * + * @since 3.6 + * + * @return void + */ + public function enable_mobile_cpcss() { + check_ajax_referer( 'rocket-ajax', 'nonce', true ); + + if ( ! current_user_can( 'rocket_manage_options' ) || ! current_user_can( 'rocket_regenerate_critical_css' ) ) { + wp_send_json_error(); + return; + } + + $this->options->set( 'async_css_mobile', 1 ); + update_option( rocket_get_constant( 'WP_ROCKET_SLUG', 'wp_rocket_settings' ), $this->options->get_options() ); + + // Start Mobile CPCSS process. + $this->critical_css->process_handler( 'mobile' ); + + wp_send_json_success(); + } + + /** + * Adds async_css_mobile option to WP Rocket options. + * + * @since 3.6 + * + * @param array $options WP Rocket options array. + * + * @return array + */ + public function add_async_css_mobile_option( $options ) { + $options = (array) $options; + + $options['async_css_mobile'] = 1; + + return $options; + } + + /** + * Sets the default value of async_css_mobile to 0 when upgrading from < 3.6. + * + * @since 3.6 + * + * @param string $new_version New WP Rocket version. + * @param string $old_version Previous WP Rocket version. + */ + public function set_async_css_mobile_default_value( $new_version, $old_version ) { + if ( version_compare( $old_version, '3.6', '>' ) ) { + return; + } + + $options = get_option( 'wp_rocket_settings', [] ); + + $options['async_css_mobile'] = 0; + + update_option( 'wp_rocket_settings', $options ); + } + + /** + * Adds async_css_mobile to the hidden settings fields. + * + * @since 3.6 + * + * @param array $hidden_settings_fields An array of hidden settings fields ID. + * + * @return array + */ + public function add_hidden_async_css_mobile( $hidden_settings_fields ) { + $hidden_settings_fields = (array) $hidden_settings_fields; + + $hidden_settings_fields[] = 'async_css_mobile'; + + return $hidden_settings_fields; + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/CriticalPath/Admin/Subscriber.php b/wp-content/plugins/wp-rocket/inc/Engine/CriticalPath/Admin/Subscriber.php new file mode 100644 index 0000000..a9a5139 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/CriticalPath/Admin/Subscriber.php @@ -0,0 +1,189 @@ +post = $post; + $this->settings = $settings; + $this->admin = $admin; + } + + /** + * Events this subscriber wants to listen to. + * + * @return array + */ + public static function get_subscribed_events() { + return [ + 'rocket_after_options_metabox' => 'cpcss_section', + 'rocket_metabox_cpcss_content' => 'cpcss_actions', + 'rocket_first_install_options' => 'add_async_css_mobile_option', + 'wp_rocket_upgrade' => [ 'set_async_css_mobile_default_value', 12, 2 ], + 'rocket_hidden_settings_fields' => 'add_hidden_async_css_mobile', + 'rocket_settings_tools_content' => 'display_cpcss_mobile_section', + 'wp_ajax_rocket_enable_mobile_cpcss' => 'enable_mobile_cpcss', + 'wp_ajax_rocket_cpcss_heartbeat' => 'cpcss_heartbeat', + 'admin_enqueue_scripts' => [ + [ 'enqueue_admin_edit_script' ], + [ 'enqueue_admin_cpcss_heartbeat_script' ], + ], + 'rocket_admin_bar_items' => 'add_regenerate_menu_item', + ]; + } + + /** + * Enable CPCSS mobile. + * + * @since 3.6 + * + * @return void + */ + public function enable_mobile_cpcss() { + $this->settings->enable_mobile_cpcss(); + } + + /** + * Display CPCSS mobile section tool admin view. + * + * @since 3.6 + * + * @return void + */ + public function display_cpcss_mobile_section() { + $this->settings->display_cpcss_mobile_section(); + } + + /** + * Enqueue CPCSS generation / deletion script on edit.php page. + * + * @since 3.6 + * + * @param string $page The current admin page. + * + * @return void + */ + public function enqueue_admin_edit_script( $page ) { + $this->post->enqueue_admin_edit_script( $page ); + } + + /** + * Displays the critical CSS block in WP Rocket options metabox. + * + * @since 3.6 + * + * @return void + */ + public function cpcss_section() { + $this->post->cpcss_section(); + } + + /** + * Displays the content inside the critical CSS block. + * + * @since 3.6 + * + * @return void + */ + public function cpcss_actions() { + $this->post->cpcss_actions(); + } + + /** + * Adds async_css_mobile option to WP Rocket options. + * + * @since 3.6 + * + * @param array $options WP Rocket options array. + * + * @return array + */ + public function add_async_css_mobile_option( $options ) { + return $this->settings->add_async_css_mobile_option( $options ); + } + + /** + * Sets the default value of async_css_mobile to 0 when upgrading from < 3.6. + * + * @since 3.6 + * + * @param string $new_version New WP Rocket version. + * @param string $old_version Previous WP Rocket version. + */ + public function set_async_css_mobile_default_value( $new_version, $old_version ) { + $this->settings->set_async_css_mobile_default_value( $new_version, $old_version ); + } + + /** + * Adds async_css_mobile to the hidden settings fields. + * + * @since 3.6 + * + * @param array $hidden_settings_fields An array of hidden settings fields ID. + * + * @return array + */ + public function add_hidden_async_css_mobile( $hidden_settings_fields ) { + return $this->settings->add_hidden_async_css_mobile( $hidden_settings_fields ); + } + + /** + * Check the CPCSS heartbeat. + * + * @since 3.6 + */ + public function cpcss_heartbeat() { + $this->admin->cpcss_heartbeat(); + } + + /** + * Enqueue CPCSS heartbeat script on all admin pages. + * + * @since 3.6 + */ + public function enqueue_admin_cpcss_heartbeat_script() { + $this->admin->enqueue_admin_cpcss_heartbeat_script(); + } + + /** + * Add Regenerate Critical CSS link to WP Rocket admin bar item + * + * @since 3.6 + * + * @param WP_Admin_Bar $wp_admin_bar WP_Admin_Bar instance, passed by reference. + * @return void + */ + public function add_regenerate_menu_item( $wp_admin_bar ) { + $this->admin->add_regenerate_menu_item( $wp_admin_bar ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/CriticalPath/CriticalCSS.php b/wp-content/plugins/wp-rocket/inc/Engine/CriticalPath/CriticalCSS.php new file mode 100644 index 0000000..908a1f7 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/CriticalPath/CriticalCSS.php @@ -0,0 +1,578 @@ +process = $process; + $this->options = $options; + $this->critical_css_path = rocket_get_constant( 'WP_ROCKET_CRITICAL_CSS_PATH' ) . get_current_blog_id() . '/'; + $this->filesystem = $filesystem; + $this->items['front_page'] = [ + 'type' => 'front_page', + 'url' => home_url( '/' ), + 'path' => 'front_page.css', + 'check' => 0, + ]; + } + + /** + * Returns the current site critical CSS path. + * + * @since 3.3.5 + * + * @return string + */ + public function get_critical_css_path() { + return $this->critical_css_path; + } + + /** + * Performs the critical CSS generation. + * + * @since 3.6 Added the $version parameter. + * @since 2.11 + * + * @param string $version Optional. Version of the CPCSS files to generate. Possible values: default, mobile, all. + */ + public function process_handler( $version = 'default' ) { + /** + * Filters the critical CSS generation process. + * + * Use this filter to prevent the automatic critical CSS generation. + * + * @since 2.11.5 + * + * @param bool $do_rocket_critical_css_generation True to activate the automatic generation, false to prevent it. + */ + if ( ! apply_filters( 'do_rocket_critical_css_generation', true ) ) { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound + return; + } + + if ( get_transient( 'rocket_critical_css_generation_process_running' ) ) { + return; + } + + $this->clean_critical_css( $version ); + + $this->stop_generation(); + + $this->set_items( $version ); + + array_map( [ $this->process, 'push_to_queue' ], $this->items ); + + $this->update_process_running_transient(); + + $this->process->save()->dispatch(); + } + + /** + * Stop the critical CSS generation process. + * + * @since 3.3 + */ + public function stop_generation() { + if ( method_exists( $this->process, 'cancel_process' ) ) { + $this->process->cancel_process(); + } + } + + /** + * Launches when the CPCSS generation is complete. + * + * @since 3.6 + */ + protected function generation_complete() { + /** + * Fires when the critical CSS generation process is complete. + * + * @since 2.11 + */ + do_action( 'rocket_critical_css_generation_process_complete' ); + + set_transient( 'rocket_critical_css_generation_process_complete', get_transient( 'rocket_critical_css_generation_process_running' ), HOUR_IN_SECONDS ); + delete_transient( 'rocket_critical_css_generation_process_running' ); + } + + /** + * Deletes critical CSS files. + * + * @since 3.6 Replaced glob(). + * @since 3.6 Added $version parameter. + * @since 2.11 + * + * @param string $version Optional. Version of the CPCSS files to delete. Possible values: default, mobile, all. + */ + public function clean_critical_css( $version = 'default' ) { + foreach ( $this->get_critical_css_iterator() as $file ) { + if ( ! $this->filesystem->is_file( $file ) ) { + continue; + } + + if ( + 'mobile' === $version + && + false === strpos( $file, '-mobile' ) + ) { + continue; + } elseif ( + 'default' === $version + && + false !== strpos( $file, '-mobile' ) + ) { + continue; + } + + $this->filesystem->delete( $file ); + } + } + + /** + * Gets the Critical CSS Filesystem Iterator. + * + * @since 3.6 + * + * @return FilesystemIterator|array Returns iterator on success; else an empty array. + */ + private function get_critical_css_iterator() { + try { + return new FilesystemIterator( $this->critical_css_path ); + } catch ( UnexpectedValueException $e ) { + // No logging yet. + return []; + } + } + + /** + * Gets all public post types. + * + * @since 2.11 + */ + private function get_public_post_types() { + global $wpdb; + + $post_types = get_post_types( + [ + 'public' => true, + 'publicly_queryable' => true, + ] + ); + + $post_types[] = 'page'; + + /** + * Filters the post types excluded from critical CSS generation. + * + * @since 2.11 + * + * @param array $excluded_post_types An array of post types names. + * + * @return array + */ + $excluded_post_types = (array) apply_filters( + 'rocket_cpcss_excluded_post_types', + [ + 'elementor_library', + 'oceanwp_library', + 'tbuilder_layout', + 'tbuilder_layout_part', + 'slider', + 'karma-slider', + 'tt-gallery', + 'xlwcty_thankyou', + 'fusion_template', + 'blocks', + 'jet-woo-builder', + 'fl-builder-template', + ] + ); + + $post_types = array_diff( $post_types, $excluded_post_types ); + $post_types = esc_sql( $post_types ); + $post_types = "'" . implode( "','", $post_types ) . "'"; + + return $wpdb->get_results( + "SELECT MAX(ID) as ID, post_type + FROM ( + SELECT ID, post_type + FROM $wpdb->posts + WHERE post_type IN ( $post_types ) + AND post_status = 'publish' + ORDER BY post_date DESC + ) AS posts + GROUP BY post_type" + ); + } + + /** + * Gets all public taxonomies. + * + * @since 2.11 + */ + private function get_public_taxonomies() { + global $wpdb; + + $taxonomies = get_taxonomies( + [ + 'public' => true, + 'publicly_queryable' => true, + ] + ); + + /** + * Filters the taxonomies excluded from critical CSS generation. + * + * @since 2.11 + * + * @param array $excluded_taxonomies An array of taxonomies names. + * + * @return array + */ + $excluded_taxonomies = (array) apply_filters( + 'rocket_cpcss_excluded_taxonomies', + [ + 'post_format', + 'product_shipping_class', + 'karma-slider-category', + 'truethemes-gallery-category', + 'coupon_campaign', + 'element_category', + 'mediamatic_wpfolder', + 'attachment_category', + ] + ); + + $taxonomies = array_diff( $taxonomies, $excluded_taxonomies ); + $taxonomies = esc_sql( $taxonomies ); + $taxonomies = "'" . implode( "','", $taxonomies ) . "'"; + + return $wpdb->get_results( + "SELECT MAX( term_id ) AS ID, taxonomy + FROM ( + SELECT term_id, taxonomy + FROM $wpdb->term_taxonomy + WHERE taxonomy IN ( $taxonomies ) + AND count > 0 + ) AS taxonomies + GROUP BY taxonomy" + ); + } + + /** + * Sets the items for which we generate critical CSS. + * + * @since 2.11 + * + * @param string $version Optional. Version of the CPCSS files to generate. Possible values: default, mobile, all. + */ + private function set_items( $version = 'default' ) { + $page_for_posts = get_option( 'page_for_posts' ); + + if ( 'page' === get_option( 'show_on_front' ) && ! empty( $page_for_posts ) ) { + $this->items['home'] = [ + 'type' => 'home', + 'url' => get_permalink( get_option( 'page_for_posts' ) ), + 'path' => 'home.css', + 'check' => 0, + ]; + } + + $post_types = $this->get_public_post_types(); + + foreach ( $post_types as $post_type ) { + $this->items[ $post_type->post_type ] = [ + 'type' => $post_type->post_type, + 'url' => get_permalink( $post_type->ID ), + 'path' => "{$post_type->post_type}.css", + 'check' => 0, + ]; + } + + $taxonomies = $this->get_public_taxonomies(); + foreach ( $taxonomies as $taxonomy ) { + + $this->items[ $taxonomy->taxonomy ] = [ + 'type' => $taxonomy->taxonomy, + 'url' => get_term_link( (int) $taxonomy->ID, $taxonomy->taxonomy ), + 'path' => "{$taxonomy->taxonomy}.css", + 'check' => 0, + ]; + } + + if ( in_array( $version, [ 'all', 'mobile' ], true ) ) { + $mobile_items = []; + + foreach ( $this->items as $key => $value ) { + $value['mobile'] = 1; + $value['path'] = str_replace( '.css', '-mobile.css', $value['path'] ); + $mobile_items[ "{$key}-mobile" ] = $value; + } + + if ( 'mobile' === $version ) { + $this->items = $mobile_items; + } elseif ( 'all' === $version ) { + $this->items = array_merge( $this->items, $mobile_items ); + } + } + + /** + * Filters the array containing the items to send to the critical CSS generator. + * + * @since 2.11.4 + * + * @param array $items Array containing the type/url pair for each item to send. + */ + $this->items = (array) apply_filters( 'rocket_cpcss_items', $this->items ); + } + + /** + * Updates the "rocket_critical_css_generation_process_running" transient. + * + * @since 3.6 + */ + private function update_process_running_transient() { + $total = 0; + + foreach ( $this->items as $item ) { + if ( ! isset( $item['mobile'] ) ) { + $total ++; + continue; + } + + if ( 1 === $item['mobile'] ) { + continue; + } + + $total ++; + } + + $transient = [ + 'total' => $total, + 'items' => [], + ]; + + set_transient( 'rocket_critical_css_generation_process_running', $transient, HOUR_IN_SECONDS ); + } + + /** + * Gets the CPCSS content to use on the current page. + * + * @since 3.6 + * + * @return bool|string + */ + public function get_critical_css_content() { + $filename = $this->get_current_page_critical_css(); + + if ( empty( $filename ) ) { + return $this->options->get( 'critical_css', '' ); + } + + return $this->filesystem->get_contents( $filename ); + } + + /** + * Gets the CPCSS filepath for the current page. + * + * @since 2.11 + * + * @return string Filepath if the file exists, empty string otherwise. + */ + public function get_current_page_critical_css() { + $files = $this->get_critical_css_filenames(); + + if ( + $this->is_async_css_mobile() + && + wp_is_mobile() + && + $this->filesystem->is_readable( $this->critical_css_path . $files['mobile'] ) + ) { + return $this->critical_css_path . $files['mobile']; + } + + if ( $this->filesystem->is_readable( $this->critical_css_path . $files['default'] ) ) { + return $this->critical_css_path . $files['default']; + } + + return ''; + } + + /** + * Gets the CPCSS filenames for the current URL type. + * + * @since 3.6 + * + * @return array + */ + private function get_critical_css_filenames() { + $default = [ + 'default' => 'front_page.css', + 'mobile' => 'front_page-mobile.css', + ]; + + if ( is_home() && 'page' === get_option( 'show_on_front' ) ) { + return [ + 'default' => 'home.css', + 'mobile' => 'home-mobile.css', + ]; + } + + if ( is_front_page() ) { + return $default; + } + + if ( is_category() ) { + return [ + 'default' => 'category.css', + 'mobile' => 'category-mobile.css', + ]; + } + + if ( is_tag() ) { + return [ + 'default' => 'post_tag.css', + 'mobile' => 'post_tag-mobile.css', + ]; + } + + if ( is_tax() ) { + $taxonomy = get_queried_object()->taxonomy; + + return [ + 'default' => "{$taxonomy}.css", + 'mobile' => "{$taxonomy}-mobile.css", + ]; + } + + if ( is_singular() ) { + return $this->get_singular_cpcss_filenames(); + } + + return $default; + } + + /** + * Gets the filenames for a singular content. + * + * @since 3.6 + * + * @return array + */ + private function get_singular_cpcss_filenames() { + $post_type = get_post_type(); + $post_id = get_the_ID(); + $post_cpcss = [ + 'default' => "posts/{$post_type}-{$post_id}.css", + 'mobile' => "posts/{$post_type}-{$post_id}-mobile.css", + ]; + + if ( + $this->is_async_css_mobile() + && + ! $this->filesystem->exists( $this->critical_css_path . $post_cpcss['mobile'] ) + ) { + $post_cpcss['mobile'] = $post_cpcss['default']; + } + + if ( $this->filesystem->exists( $this->critical_css_path . $post_cpcss['default'] ) ) { + return $post_cpcss; + } + + return [ + 'default' => "{$post_type}.css", + 'mobile' => "{$post_type}-mobile.css", + ]; + } + + /** + * Checks if we are in a situation where we need the mobile CPCSS. + * + * @since 3.6 + * + * @return bool + */ + public function is_async_css_mobile() { + if ( ! (bool) $this->options->get( 'do_caching_mobile_files', 0 ) ) { + return false; + } + + return (bool) $this->options->get( 'async_css_mobile', 0 ); + } + + /** + * Get list of CSS files to be excluded from async CSS. + * + * @since 3.6.2 + * + * @return array An array of URLs for the CSS files to be excluded. + */ + public function get_exclude_async_css() { + /** + * Filter list of async CSS files + * + * @since 2.10 + * + * @param array $exclude_async_css An array of URLs for the CSS files to be excluded. + */ + $exclude_async_css = (array) apply_filters( 'rocket_exclude_async_css', [] ); + if ( empty( $exclude_async_css ) ) { + return $exclude_async_css; + } + $exclude_async_css = array_filter( $exclude_async_css ); + + return array_flip( array_flip( $exclude_async_css ) ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/CriticalPath/CriticalCSSGeneration.php b/wp-content/plugins/wp-rocket/inc/Engine/CriticalPath/CriticalCSSGeneration.php new file mode 100644 index 0000000..64b9c49 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/CriticalPath/CriticalCSSGeneration.php @@ -0,0 +1,94 @@ +processor = $processor; + } + + /** + * Perform the optimization corresponding to $item. + * + * @since 2.11 + * + * @param mixed $item Queue item to iterate over. + * + * @return bool false if task performed successfully, true otherwise to re-queue the item. + */ + protected function task( $item ) { + if ( ! is_array( $item ) ) { + return false; + } + + $transient = get_transient( 'rocket_critical_css_generation_process_running' ); + $mobile = isset( $item['mobile'] ) ? $item['mobile'] : 0; + + $generation_params = [ + 'is_mobile' => $mobile, + 'item_type' => $item['type'], + ]; + $generated = $this->processor->process_generate( $item['url'], $item['path'], $generation_params ); + + if ( is_wp_error( $generated ) ) { + $this->update_running_transient( $transient, $item['path'], $mobile, $generated->get_error_message(), false ); + return false; + } + + if ( isset( $generated['code'] ) && 'cpcss_generation_pending' === $generated['code'] ) { + $pending = get_transient( 'rocket_cpcss_generation_pending' ); + + if ( false === $pending ) { + $pending = []; + } + + $pending[ $item['path'] ] = $item; + + set_transient( 'rocket_cpcss_generation_pending', $pending, HOUR_IN_SECONDS ); + + return false; + } + + $this->update_running_transient( $transient, $item['path'], $mobile, $generated['message'], ( 'cpcss_generation_successful' === $generated['code'] ) ); + return false; + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/CriticalPath/CriticalCSSSubscriber.php b/wp-content/plugins/wp-rocket/inc/Engine/CriticalPath/CriticalCSSSubscriber.php new file mode 100644 index 0000000..d4bdc0d --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/CriticalPath/CriticalCSSSubscriber.php @@ -0,0 +1,728 @@ +critical_css = $critical_css; + $this->cpcss_service = $cpcss_service; + $this->options = $options; + $this->filesystem = $filesystem; + } + + /** + * Return an array of events that this subscriber wants to listen to. + * + * @since 3.3 + * + * @return array + */ + public static function get_subscribed_events() { + // phpcs:disable WordPress.Arrays.MultipleStatementAlignment.DoubleArrowNotAligned + return [ + 'admin_post_rocket_generate_critical_css' => 'init_critical_css_generation', + + 'update_option_' . rocket_get_constant( 'WP_ROCKET_SLUG' ) => [ + [ 'generate_critical_css_on_activation', 11, 2 ], + [ 'stop_process_on_deactivation', 11, 2 ], + [ 'maybe_generate_cpcss_mobile', 12, 2 ], + ], + + 'admin_notices' => [ + [ 'notice_critical_css_generation_triggered' ], + [ 'critical_css_generation_running_notice' ], + [ 'critical_css_generation_complete_notice' ], + [ 'warning_critical_css_dir_permissions' ], + ], + + 'wp_head' => [ 'insert_load_css', PHP_INT_MAX ], + + 'rocket_buffer' => [ + [ 'insert_critical_css_buffer', 19 ], + [ 'async_css', 32 ], + ], + + 'switch_theme' => 'maybe_regenerate_cpcss', + 'rocket_excluded_inline_js_content' => 'exclude_inline_js', + 'before_delete_post' => 'delete_cpcss', + ]; + // phpcs:enable WordPress.Arrays.MultipleStatementAlignment.DoubleArrowNotAligned + } + + /** + * Deletes the custom CPCSS files from /posts/ folder. + * + * @since 3.6 + * + * @param int $post_id Deleted post id. + */ + public function delete_cpcss( $post_id ) { + if ( ! current_user_can( 'rocket_regenerate_critical_css' ) ) { + return; + } + + if ( ! $this->options->get( 'async_css', 0 ) ) { + return; + } + + $post_type = get_post_type( $post_id ); + $item_path = 'posts' . DIRECTORY_SEPARATOR . "{$post_type}-{$post_id}.css"; + $this->cpcss_service->process_delete( $item_path ); + + if ( $this->options->get( 'async_css_mobile', 0 ) ) { + $mobile_item_path = 'posts' . DIRECTORY_SEPARATOR . "{$post_type}-{$post_id}-mobile.css"; + $this->cpcss_service->process_delete( $mobile_item_path ); + } + } + + /** + * This notice is displayed when the Critical CSS Generation is triggered from a different page than + * WP Rocket settings page. + * + * @since 3.4.1 + */ + public function notice_critical_css_generation_triggered() { + if ( ! current_user_can( 'rocket_regenerate_critical_css' ) ) { + return; + } + + $screen = get_current_screen(); + + if ( 'settings_page_wprocket' === $screen->id ) { + return; + } + + if ( false === get_transient( 'rocket_critical_css_generation_triggered' ) ) { + return; + } + + delete_transient( 'rocket_critical_css_generation_triggered' ); + + $message = __( 'Critical CSS generation is currently running.', 'rocket' ); + + if ( current_user_can( 'rocket_manage_options' ) ) { + $message .= ' ' . sprintf( + // Translators: %1$s = opening link tag, %2$s = closing link tag. + __( 'Go to the %1$sWP Rocket settings%2$s page to track progress.', 'rocket' ), + '', + '' + ); + } + + rocket_notice_html( + [ + 'status' => 'info', + 'message' => $message, + ] + ); + } + + /** + * Launches the critical CSS generation from admin. + * + * @since 2.11 + * + * @see CriticalCSS::process_handler() + */ + public function init_critical_css_generation() { + if ( + ! isset( $_GET['_wpnonce'] ) + || + ! wp_verify_nonce( sanitize_key( $_GET['_wpnonce'] ), 'rocket_generate_critical_css' ) + ) { + wp_nonce_ays( '' ); + } + + if ( ! current_user_can( 'rocket_regenerate_critical_css' ) ) { + wp_die(); + } + + $version = 'default'; + + if ( $this->critical_css->is_async_css_mobile() ) { + $version = 'all'; + } + + $this->critical_css->process_handler( $version ); + + if ( ! strpos( wp_get_referer(), 'wprocket' ) ) { + set_transient( 'rocket_critical_css_generation_triggered', 1 ); + } + + wp_safe_redirect( esc_url_raw( wp_get_referer() ) ); + rocket_get_constant( 'WP_ROCKET_IS_TESTING', false ) ? wp_die() : exit; + } + + /** + * Launches the critical CSS generation when activating the async CSS option. + * + * @since 2.11 + * + * @param array $old_value Previous values for WP Rocket settings. + * @param array $value New values for WP Rocket settings. + * + * @see CriticalCSS::process_handler() + */ + public function generate_critical_css_on_activation( $old_value, $value ) { + if ( + ! isset( $old_value['async_css'], $value['async_css'] ) + || + ( $old_value['async_css'] === $value['async_css'] ) + || 1 !== (int) $value['async_css'] + ) { + return; + } + + $critical_css_path = $this->critical_css->get_critical_css_path(); + + // Check if the CPCSS path exists and create it. + if ( ! $this->filesystem->is_dir( $critical_css_path ) ) { + rocket_mkdir_p( $critical_css_path ); + } + + $version = 'default'; + + if ( + isset( $value['do_caching_mobile_files'], $value['async_css_mobile'] ) + && + ( + 1 === (int) $value['do_caching_mobile_files'] + && + 1 === (int) $value['async_css_mobile'] + ) + ) { + $version = 'all'; + } + + // Generate the CPCSS files. + $this->critical_css->process_handler( $version ); + } + + /** + * Maybe generate the CPCSS for Mobile. + * + * @since 3.6 + * + * @param array $old_value Array of original values. + * @param array $value Array of new values. + */ + public function maybe_generate_cpcss_mobile( $old_value, $value ) { + if ( + ! isset( $value['async_css_mobile'] ) + || + 1 !== (int) $value['async_css_mobile'] + ) { + return; + } + + if ( + ! isset( $value['do_caching_mobile_files'] ) + || + 1 !== (int) $value['do_caching_mobile_files'] + ) { + return; + } + + if ( + ! isset( $old_value['async_css'], $value['async_css'] ) + || + ( ( $old_value['async_css'] !== $value['async_css'] ) && 1 === (int) $value['async_css'] ) + || + 1 !== (int) $value['async_css'] + ) { + return; + } + + $this->critical_css->process_handler( 'mobile' ); + } + + /** + * Stops the critical CSS generation when deactivating the async CSS option and remove the notices. + * + * @since 2.11 + * + * @param array $old_value Previous values for WP Rocket settings. + * @param array $value New values for WP Rocket settings. + */ + public function stop_process_on_deactivation( $old_value, $value ) { + if ( + ! empty( $_POST[ WP_ROCKET_SLUG ] ) // phpcs:ignore WordPress.Security.NonceVerification.Missing + && + isset( $old_value['async_css'], $value['async_css'] ) + && + ( $old_value['async_css'] !== $value['async_css'] ) + && + 0 === (int) $value['async_css'] + ) { + $this->critical_css->stop_generation(); + + delete_transient( 'rocket_critical_css_generation_process_running' ); + delete_transient( 'rocket_critical_css_generation_process_complete' ); + } + } + + /** + * This notice is displayed when the critical CSS generation is running. + * + * @since 2.11 + */ + public function critical_css_generation_running_notice() { + if ( ! current_user_can( 'rocket_regenerate_critical_css' ) ) { + return; + } + + $screen = get_current_screen(); + + if ( 'settings_page_wprocket' !== $screen->id ) { + return; + } + + $transient = get_transient( 'rocket_critical_css_generation_process_running' ); + + if ( ! $transient ) { + return; + } + + $success_counter = 0; + $items_message = ''; + + if ( ! empty( $transient['items'] ) ) { + $items_message .= '
    '; + + foreach ( $transient['items'] as $item ) { + $status_nonmobile = isset( $item['status']['nonmobile'] ); + $status_mobile = $this->is_mobile_cpcss_active() ? isset( $item['status']['mobile'] ) : true; + if ( $status_nonmobile && $status_mobile ) { + $items_message .= '
  • ' . $item['status']['nonmobile']['message'] . '
  • '; + if ( $item['status']['nonmobile']['success'] ) { + $success_counter ++; + } + } + } + + $items_message .= '
'; + } + + if ( ! isset( $transient['total'] ) ) { + return; + } + + if ( + 0 === $success_counter + && + 0 === $transient['total'] + ) { + return; + } + + $message = '

' . sprintf( + // Translators: %1$d = number of critical CSS generated, %2$d = total number of critical CSS to generate. + __( 'Critical CSS generation is currently running: %1$d of %2$d page types completed. (Refresh this page to view progress)', 'rocket' ), + $success_counter, + $transient['total'] + ) . '

' . $items_message; + + rocket_notice_html( + [ + 'status' => 'info', + 'message' => $message, + ] + ); + } + + /** + * This notice is displayed when the critical CSS generation is complete. + * + * @since 2.11 + */ + public function critical_css_generation_complete_notice() { + if ( ! current_user_can( 'rocket_regenerate_critical_css' ) ) { + return; + } + + $screen = get_current_screen(); + + if ( 'settings_page_wprocket' !== $screen->id ) { + return; + } + + $transient = get_transient( 'rocket_critical_css_generation_process_complete' ); + if ( ! $transient ) { + return; + } + + $status = 'success'; + $success_counter = 0; + $items_message = ''; + $desktop = false; + + if ( ! empty( $transient['items'] ) ) { + $items_message .= '
    '; + + foreach ( $transient['items'] as $item ) { + $status_nonmobile = isset( $item['status']['nonmobile'] ); + $status_mobile = $this->is_mobile_cpcss_active() ? isset( $item['status']['mobile'] ) : true; + if ( ! $status_nonmobile || ! $status_mobile ) { + continue; + } + if ( isset( $item['status']['nonmobile']['message'] ) ) { + $desktop = true; + } + $items_message .= '
  • ' . $item['status']['nonmobile']['message'] . '
  • '; + if ( $item['status']['nonmobile']['success'] ) { + $success_counter ++; + } + } + + $items_message .= '
'; + } + + if ( ! $desktop || ( 0 === $success_counter && 0 === $transient['total'] ) ) { + return; + } + + if ( 0 === $success_counter ) { + $status = 'error'; + } elseif ( $success_counter < $transient['total'] ) { + $status = 'warning'; + } + + $message = '

' . sprintf( + // Translators: %1$d = number of critical CSS generated, %2$d = total number of critical CSS to generate. + __( 'Critical CSS generation finished for %1$d of %2$d page types.', 'rocket' ), + $success_counter, + $transient['total'] + ); + $message .= ' (' . date_i18n( get_option( 'date_format' ) ) . ' @ ' . date_i18n( get_option( 'time_format' ) ) . ')

' . $items_message; + + if ( 'error' === $status || 'warning' === $status ) { + $message .= '

' . __( 'Critical CSS generation encountered one or more errors.', 'rocket' ) . ' ' . __( 'Learn more.', 'rocket' ) . ''; + } + + rocket_notice_html( + [ + 'status' => $status, + 'message' => $message, + ] + ); + + delete_transient( 'rocket_critical_css_generation_process_complete' ); + } + + /** + * This warning is displayed when the critical CSS dir isn't writeable. + * + * @since 2.11 + */ + public function warning_critical_css_dir_permissions() { + if ( + current_user_can( 'rocket_manage_options' ) + && + ( ! $this->filesystem->is_writable( WP_ROCKET_CRITICAL_CSS_PATH ) ) + && + ( $this->options->get( 'async_css', false ) ) + && + rocket_valid_key() + ) { + + $boxes = get_user_meta( get_current_user_id(), 'rocket_boxes', true ); + + if ( in_array( __FUNCTION__, (array) $boxes, true ) ) { + return; + } + + $message = rocket_notice_writing_permissions( + trim( str_replace( ABSPATH, '', WP_ROCKET_CRITICAL_CSS_PATH ), '/' ) + ); + + rocket_notice_html( + [ + 'status' => 'error', + 'dismissible' => '', + 'message' => $message, + ] + ); + } + } + + /** + * Insert loadCSS script in . + * + * @since 2.11.2 Updated loadCSS rel=preload polyfill to version 2.0.1 + * @since 2.10 + */ + public function insert_load_css() { + if ( ! $this->should_async_css() ) { + return; + } + + // This filter is documented in inc/classes/Buffer/class-tests.php. + $rocket_cache_search = apply_filters( 'rocket_cache_search', false ); + + // Don't apply on search page. + if ( is_search() && ! $rocket_cache_search ) { + return; + } + + // Don't apply on 404 page. + if ( is_404() ) { + return; + } + + if ( + empty( $this->critical_css->get_current_page_critical_css() ) + && + empty( $this->options->get( 'critical_css', '' ) ) + ) { + return; + } + + echo /* phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Dynamic content is properly escaped in the view. */ << +/*! loadCSS rel=preload polyfill. [c]2017 Filament Group, Inc. MIT License */ +(function(w){"use strict";if(!w.loadCSS){w.loadCSS=function(){}} +var rp=loadCSS.relpreload={};rp.support=(function(){var ret;try{ret=w.document.createElement("link").relList.supports("preload")}catch(e){ret=!1} +return function(){return ret}})();rp.bindMediaToggle=function(link){var finalMedia=link.media||"all";function enableStylesheet(){link.media=finalMedia} +if(link.addEventListener){link.addEventListener("load",enableStylesheet)}else if(link.attachEvent){link.attachEvent("onload",enableStylesheet)} +setTimeout(function(){link.rel="stylesheet";link.media="only x"});setTimeout(enableStylesheet,3000)};rp.poly=function(){if(rp.support()){return} +var links=w.document.getElementsByTagName("link");for(var i=0;i +JS; + } + + /** + * Insert critical CSS before combined CSS when option is active. + * + * @since 2.11.5 + * + * @param string $buffer HTML output of the page. + * + * @return string Updated HTML output + */ + public function insert_critical_css_buffer( $buffer ) { + if ( ! $this->should_async_css() ) { + return $buffer; + } + + $critical_css_content = $this->critical_css->get_critical_css_content(); + + if ( empty( $critical_css_content ) ) { + return $buffer; + } + + $critical_css_content = str_replace( '\\', '\\\\', $critical_css_content ); + + $buffer = preg_replace( + '##iU', + '', + $buffer, + 1 + ); + + return preg_replace( '##iU', $this->return_remove_cpcss_script() . '', $buffer, 1 ); + } + + /** + * Returns JS script to remove the critical css style from frontend. + * + * @since 3.6 + * + * @return string + */ + protected function return_remove_cpcss_script() { + $filename = rocket_get_constant( 'SCRIPT_DEBUG' ) ? 'cpcss-removal.js' : 'cpcss-removal.min.js'; + $script = rocket_get_constant( 'WP_ROCKET_PATH' ) . "assets/js/{$filename}"; + + if ( ! is_readable( $script ) ) { + return ''; + } + + return sprintf( + '', + $this->filesystem->get_contents( $script ) + ); + } + + /** + * Adds wprRemoveCPCSS to excluded inline JS array. + * + * @since 3.6 + * + * @param array $excluded_inline Array of inline JS excluded from being combined. + * + * @return array + */ + public function exclude_inline_js( array $excluded_inline ) { + $excluded_inline[] = 'wprRemoveCPCSS'; + + return $excluded_inline; + } + + /** + * Defer loading of CSS files. + * + * @since 2.10 + * + * @param string $buffer HTML code. + * + * @return string Updated HTML code + */ + public function async_css( $buffer ) { + if ( ! $this->should_async_css() ) { + return $buffer; + } + + if ( + empty( $this->critical_css->get_current_page_critical_css() ) + && + empty( $this->options->get( 'critical_css', '' ) ) + ) { + return $buffer; + } + + $excluded_css = array_flip( $this->critical_css->get_exclude_async_css() ); + + /** + * Filters the pattern used to get all stylesheets in the HTML. + * + * @since 2.10 + * + * @param string $css_pattern Regex pattern to get all stylesheets in the HTML. + */ + $css_pattern = apply_filters( + 'rocket_async_css_regex_pattern', + '/(?=]*\s(rel\s*=\s*[\'"]stylesheet["\']))]*\shref\s*=\s*[\'"]([^\'"]+)[\'"](.*)>/iU' + ); + + // Get all css files with this regex. + preg_match_all( $css_pattern, $buffer, $tags_match ); + if ( ! isset( $tags_match[0] ) ) { + return $buffer; + } + + $noscripts = ''; + + return str_replace( '', $noscripts . '', $buffer ); + } + + /** + * Regenerates the CPCSS when switching theme if the option is active. + * + * @since 3.3 + */ + public function maybe_regenerate_cpcss() { + if ( ! $this->options->get( 'async_css' ) ) { + return; + } + + $this->critical_css->process_handler(); + } + + /** + * Checks if mobile CPCSS is active. + * + * @since 3.6 + * + * @return boolean CPCSS active or not. + */ + private function is_mobile_cpcss_active() { + return ( + $this->options->get( 'async_css', 0 ) + && + $this->options->get( 'cache_mobile', 0 ) + && + $this->options->get( 'do_caching_mobile_files', 0 ) + ) + && + $this->options->get( 'async_css_mobile', 0 ); + } + + /** + * Checks if we should async CSS + * + * @since 3.6.2.1 + * + * @return boolean + */ + private function should_async_css() { + if ( rocket_get_constant( 'DONOTROCKETOPTIMIZE' ) ) { + return false; + } + + if ( ! $this->options->get( 'async_css', 0 ) ) { + return false; + } + + return ! is_rocket_post_excluded_option( 'async_css' ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/CriticalPath/DataManager.php b/wp-content/plugins/wp-rocket/inc/Engine/CriticalPath/DataManager.php new file mode 100644 index 0000000..dd7ac55 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/CriticalPath/DataManager.php @@ -0,0 +1,196 @@ +critical_css_path = $critical_css_path . get_current_blog_id() . DIRECTORY_SEPARATOR; + $this->filesystem = $filesystem; + } + + /** + * Save CPCSS into file. + * + * @since 3.6 + * + * @param string $path Path for cpcss file related to this web page. + * @param string $cpcss CPCSS code to be saved. + * @param string $url URL for item to be used in error messages. + * @param bool $is_mobile If this is cpcss for mobile or not. + * @param string $item_type Optional. Type for this item if it's custom or specific type. Default: custom. + * + * @return bool|WP_Error + */ + public function save_cpcss( $path, $cpcss, $url, $is_mobile = false, $item_type = 'custom' ) { + $file_path_directory = dirname( $this->critical_css_path . $path ); + + if ( ! $this->filesystem->is_dir( $file_path_directory ) ) { + if ( ! rocket_mkdir_p( $file_path_directory ) ) { + + return new WP_Error( + 'cpcss_generation_failed', + // translators: %s = item URL. + sprintf( + $is_mobile + ? + // translators: %s = item URL. + __( 'Critical CSS for %1$s on mobile not generated. Error: The API returned an empty response.', 'rocket' ) + : + // translators: %s = item URL. + __( 'Critical CSS for %1$s not generated. Error: The API returned an empty response.', 'rocket' ), + ( 'custom' === $item_type ) ? $url : $item_type + ), + [ + 'status' => 400, + ] + ); + + } + } + + return rocket_put_content( + $this->critical_css_path . $path, + wp_strip_all_tags( $cpcss, true ) + ); + } + + /** + * Delete critical css file by path. + * + * @param string $path Critical css file path to be deleted. + * @param bool $is_mobile If this is cpcss for mobile or not. + * + * @return bool|WP_Error + */ + public function delete_cpcss( $path, $is_mobile = false ) { + $full_path = $this->critical_css_path . $path; + + if ( ! $this->filesystem->exists( $full_path ) ) { + return new WP_Error( + 'cpcss_not_exists', + $is_mobile + ? + __( 'Critical CSS file for mobile does not exist', 'rocket' ) + : + __( 'Critical CSS file does not exist', 'rocket' ), + [ + 'status' => 400, + ] + ); + } + + if ( ! $this->filesystem->delete( $full_path ) ) { + return new WP_Error( + 'cpcss_deleted_failed', + $is_mobile + ? + __( 'Critical CSS file for mobile cannot be deleted', 'rocket' ) + : + __( 'Critical CSS file cannot be deleted', 'rocket' ), + [ + 'status' => 400, + ] + ); + } + + return true; + } + + /** + * Get job_id from cache based on item_url. + * + * @since 3.6 + * + * @param string $item_url URL for item to be used in error messages. + * @param bool $is_mobile Bool identifier for is_mobile CPCSS generation. + * + * @return mixed + */ + public function get_cache_job_id( $item_url, $is_mobile = false ) { + $cache_key = $this->get_cache_key_from_url( $item_url, $is_mobile ); + + return get_transient( $cache_key ); + } + + /** + * Set Job_id for Item_url into cache. + * + * @since 3.6 + * + * @param string $item_url URL for item to be used in error messages. + * @param string $job_id ID for the job to get details. + * @param bool $is_mobile Bool identifier for is_mobile CPCSS generation. + * + * @return bool + */ + public function set_cache_job_id( $item_url, $job_id, $is_mobile = false ) { + $cache_key = $this->get_cache_key_from_url( $item_url, $is_mobile ); + + return set_transient( $cache_key, $job_id, HOUR_IN_SECONDS ); + } + + /** + * Delete job_id from cache based on item_url. + * + * @since 3.6 + * + * @param string $item_url URL for item to be used in error messages. + * @param bool $is_mobile Bool identifier for is_mobile CPCSS generation. + * + * @return bool + */ + public function delete_cache_job_id( $item_url, $is_mobile = false ) { + $cache_key = $this->get_cache_key_from_url( $item_url, $is_mobile ); + + return delete_transient( $cache_key ); + } + + /** + * Get cache key from url to be used in caching job_id. + * + * @since 3.6 + * + * @param string $item_url URL for item to be used in error messages. + * @param bool $is_mobile Bool identifier for is_mobile CPCSS generation. + * + * @return string + */ + private function get_cache_key_from_url( $item_url, $is_mobile = false ) { + $encoded_url = md5( $item_url ); + + if ( $is_mobile ) { + $encoded_url .= '_mobile'; + } + + return 'rocket_specific_cpcss_job_' . $encoded_url; + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/CriticalPath/ProcessorService.php b/wp-content/plugins/wp-rocket/inc/Engine/CriticalPath/ProcessorService.php new file mode 100644 index 0000000..2bdbb92 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/CriticalPath/ProcessorService.php @@ -0,0 +1,338 @@ +data_manager = $data_manager; + $this->api_client = $api_client; + } + + /** + * Process CPCSS generation, Check timeout and send the generation request. + * + * @since 3.6 + * + * @param string $item_url URL for item to be used in error messages. + * @param string $item_path Path for item to be processed. + * @param array $additional_parameters additional parameters for generation. + * + * @return array|WP_Error + */ + public function process_generate( $item_url, $item_path, $additional_parameters = [] ) { + $defaults = [ + 'timeout' => false, + 'is_mobile' => false, + 'item_type' => 'custom', + ]; + $args = array_merge( $defaults, $additional_parameters ); + + // Ajax call requested a timeout. + if ( $args['timeout'] ) { + return $this->process_timeout( $item_url, $args['is_mobile'], $args['item_type'] ); + } + + $cpcss_job_id = $this->data_manager->get_cache_job_id( $item_url, $args['is_mobile'] ); + if ( false === $cpcss_job_id ) { + return $this->send_generation_request( $item_url, $item_path, $args['is_mobile'], $args['item_type'] ); + } + + // job_id is found and we need to check status for it. + return $this->check_cpcss_job_status( $cpcss_job_id, $item_path, $item_url, $args['is_mobile'], $args['item_type'] ); + } + + /** + * Send Generation first request. + * + * @since 3.6 + * + * @param string $item_url Url for item to send the generation request for. + * @param string $item_path Path for item to send the generation request for. + * @param bool $is_mobile If this request is for mobile cpcss. + * @param string $item_type Optional. Type for this item if it's custom or specific type. Default: custom. + * + * @return array + */ + private function send_generation_request( $item_url, $item_path, $is_mobile = false, $item_type = 'custom' ) { + // call send generation request from APIClient for the first time. + $params = [ + 'mobile' => (int) $is_mobile, + ]; + $generated_job = $this->api_client->send_generation_request( $item_url, $params, $item_type ); + + // validate generate response. + if ( is_wp_error( $generated_job ) ) { + // Failed so return back the data. + return $generated_job; + } + + // Send generation request succeeded. + // Save job_id into cache. + $this->data_manager->set_cache_job_id( $item_url, $generated_job->data->id, $is_mobile ); + + return $this->check_cpcss_job_status( $generated_job->data->id, $item_path, $item_url, $is_mobile, $item_type ); + } + + /** + * Get job details by job_id. + * + * @since 3.6 + * + * @param string $job_id ID for the job to get details. + * @param string $item_url URL for item to be used in error messages. + * @param string $item_type Optional. Type for this item if it's custom or specific type. Default: custom. + * + * @return array|mixed|WP_Error + */ + private function get_cpcss_job_details( $job_id, $item_url, $item_type = 'custom' ) { + $job_details = $this->api_client->get_job_details( $job_id, $item_url, $item_type ); + + if ( is_wp_error( $job_details ) ) { + return $job_details; + } + + return $job_details; + } + + /** + * Check status and process the output for a job. + * + * @since 3.6 + * + * @param string $job_id ID for the job to get details. + * @param string $item_path Path for this item to be validated. + * @param string $item_url URL for item to be used in error messages. + * @param bool $is_mobile Bool identifier for is_mobile CPCSS generation. + * @param string $item_type Optional. Type for this item if it's custom or specific type. Default: custom. + * + * @return array|WP_Error Response in case of success, failure or pending. + */ + private function check_cpcss_job_status( $job_id, $item_path, $item_url, $is_mobile = false, $item_type = 'custom' ) { + $job_details = $this->api_client->get_job_details( $job_id, $item_url, $is_mobile, $item_type ); + + if ( is_wp_error( $job_details ) ) { + $this->data_manager->delete_cache_job_id( $item_url, $is_mobile ); + + return $job_details; + } + + if ( 200 !== $job_details->status ) { + // On job error. + return $this->on_job_error( $job_details, $item_url, $is_mobile, $item_type ); + } + + // On job status 200. + $job_state = $job_details->data->state; + + // For pending job status. + if ( isset( $job_state ) && 'complete' !== $job_state ) { + return $this->on_job_pending( $item_url, $item_type ); + } + + // For successful job status. + if ( + isset( $job_state, $job_details->data->critical_path ) + && + 'complete' === $job_state + ) { + return $this->on_job_success( $item_path, $item_url, $job_details->data->critical_path, $is_mobile, $item_type ); + } + } + + /** + * Process logic for job error. + * + * @since 3.6 + * + * @param array $job_details Job details array. + * @param string $item_url Url for web page to be processed, used for error messages. + * @param bool $is_mobile Bool identifier for is_mobile CPCSS generation. + * @param string $item_type Optional. Type for this item if it's custom or specific type. Default: custom. + * + * @return WP_Error + */ + private function on_job_error( $job_details, $item_url, $is_mobile = false, $item_type = 'custom' ) { + $this->data_manager->delete_cache_job_id( $item_url, $is_mobile ); + + if ( $is_mobile ) { + + $error = sprintf( + // translators: %1$s = item URL or item type. + __( 'Mobile Critical CSS for %1$s not generated.', 'rocket' ), + ( 'custom' === $item_type ) ? $item_url : $item_type + ); + } else { + + $error = sprintf( + // translators: %1$s = item URL or item type. + __( 'Critical CSS for %1$s not generated.', 'rocket' ), + ( 'custom' === $item_type ) ? $item_url : $item_type + ); + } + + if ( isset( $job_details->message ) ) { + // translators: %1$s = error message. + $error .= ' ' . sprintf( __( 'Error: %1$s', 'rocket' ), $job_details->message ); + } + + return new WP_Error( + 'cpcss_generation_failed', + $error, + [ + 'status' => 400, + ] + ); + } + + /** + * Process logic for job pending status. + * + * @since 3.6 + * + * @param string $item_url Url for web page to be processed, used for error messages. + * @param string $item_type Optional. Type for this item if it's custom or specific type. Default: custom. + * + * @return array + */ + private function on_job_pending( $item_url, $item_type = 'custom' ) { + return [ + 'code' => 'cpcss_generation_pending', + 'message' => sprintf( + // translators: %1$s = Item URL or item type. + __( 'Critical CSS for %s in progress.', 'rocket' ), + ( 'custom' === $item_type ) ? $item_url : $item_type + ), + ]; + } + + /** + * Process logic for job success status. + * + * @since 3.6 + * + * @param string $item_path Item Path for web page to be processed. + * @param string $item_url Item Url for web page to be processed. + * @param string $cpcss_code CPCSS Code to be saved. + * @param bool $is_mobile Bool identifier for is_mobile CPCSS generation. + * @param string $item_type Optional. Type for this item if it's custom or specific type. Default: custom. + * + * @return array|WP_Error + */ + private function on_job_success( $item_path, $item_url, $cpcss_code, $is_mobile = false, $item_type = 'custom' ) { + // delete cache job_id for this item. + $this->data_manager->delete_cache_job_id( $item_url, $is_mobile ); + + // save the generated CPCSS code into file. + $saved = $this->data_manager->save_cpcss( $item_path, $cpcss_code, $item_url, $is_mobile, $item_type ); + if ( is_wp_error( $saved ) ) { + return $saved; + } + + if ( $is_mobile ) { + return [ + 'code' => 'cpcss_generation_successful', + 'message' => sprintf( + // translators: %1$s = Item URL or item type. + __( 'Mobile Critical CSS for %s generated.', 'rocket' ), + ( 'custom' === $item_type ) ? $item_url : $item_type + ), + ]; + } + + // Send the current status of job. + return [ + 'code' => 'cpcss_generation_successful', + 'message' => sprintf( + // translators: %1$s = Item URL or item type. + __( 'Critical CSS for %s generated.', 'rocket' ), + ( 'custom' === $item_type ) ? $item_url : $item_type + ), + ]; + } + + /** + * Process the login for CPCSS deletion. + * + * @param string $item_path Path for item to delete CPCSS code. + * + * @return array|WP_Error + */ + public function process_delete( $item_path ) { + $deleted = $this->data_manager->delete_cpcss( $item_path ); + + if ( is_wp_error( $deleted ) ) { + return $deleted; + } + + return [ + 'code' => 'success', + 'message' => __( 'Critical CSS file deleted successfully.', 'rocket' ), + ]; + } + + /** + * Process timeout action for CPCSS generation. + * + * @since 3.6 + * + * @param string $item_url URL for item to be used in error messages. + * @param bool $is_mobile Bool identifier for is_mobile CPCSS generation. + * @param string $item_type Optional. Type for this item if it's custom or specific type. Default: custom. + * @return WP_Error + */ + private function process_timeout( $item_url, $is_mobile = false, $item_type = 'custom' ) { + $this->data_manager->delete_cache_job_id( $item_url, $is_mobile ); + + if ( $is_mobile ) { + return new WP_Error( + 'cpcss_generation_timeout', + sprintf( + // translators: %1$s = Item URL or item type. + __( 'Mobile Critical CSS for %1$s timeout. Please retry a little later.', 'rocket' ), + ( 'custom' === $item_type ) ? $item_url : $item_type + ), + [ + 'status' => 400, + ] + ); + } + + return new WP_Error( + 'cpcss_generation_timeout', + sprintf( + // translators: %1$s = Item URL or item type. + __( 'Critical CSS for %1$s timeout. Please retry a little later.', 'rocket' ), + ( 'custom' === $item_type ) ? $item_url : $item_type + ), + [ + 'status' => 400, + ] + ); + } + +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/CriticalPath/RESTCSSSubscriber.php b/wp-content/plugins/wp-rocket/inc/Engine/CriticalPath/RESTCSSSubscriber.php new file mode 100644 index 0000000..60bdd1c --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/CriticalPath/RESTCSSSubscriber.php @@ -0,0 +1,55 @@ +rest_manager = $rest_manager; + } + + /** + * Return an array of events that this subscriber wants to listen to. + * + * @since 3.6 + * + * @return array + */ + public static function get_subscribed_events() { + return [ + 'rest_api_init' => [ 'register_routes' ], + ]; + } + + /** + * Registers generate/delete routes in the API. + * + * @since 3.6 + * + * @return void + */ + public function register_routes() { + $this->rest_manager->register_generate_route(); + $this->rest_manager->register_delete_route(); + } + +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/CriticalPath/RESTWP.php b/wp-content/plugins/wp-rocket/inc/Engine/CriticalPath/RESTWP.php new file mode 100644 index 0000000..633426d --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/CriticalPath/RESTWP.php @@ -0,0 +1,322 @@ +cpcss_service = $cpcss_service; + $this->options = $options; + } + + /** + * Registers the generate route in the WP REST API + * + * @since 3.6 + * + * @return void + */ + public function register_generate_route() { + register_rest_route( + self::ROUTE_NAMESPACE, + 'cpcss/' . $this->route_namespace . '/(?P[\d]+)', + [ + 'methods' => 'POST', + 'callback' => [ $this, 'generate' ], + 'permission_callback' => [ $this, 'check_permissions' ], + ] + ); + } + + /** + * Register Delete CPCSS route in the WP REST API. + * + * @since 3.6 + */ + public function register_delete_route() { + register_rest_route( + self::ROUTE_NAMESPACE, + 'cpcss/' . $this->route_namespace . '/(?P[\d]+)', + [ + 'methods' => 'DELETE', + 'callback' => [ $this, 'delete' ], + 'permission_callback' => [ $this, 'check_permissions' ], + ] + ); + } + + /** + * Checks user's permissions. This is a callback registered to REST route's "permission_callback" parameter. + * + * @since 3.6 + * + * @return bool true if the user has permission; else false. + */ + public function check_permissions() { + return current_user_can( 'rocket_regenerate_critical_css' ); + } + + /** + * Clean post cache files on CPCSS generation or deletion. + * + * @since 3.6.1 + * + * @param int $item_id ID for this item to get Url for. + */ + private function clean_post_cache( $item_id ) { + rocket_clean_files( $this->get_url( $item_id ) ); + } + + /** + * Generates the CPCSS for the requested post ID. + * + * @since 3.6 + * + * @param WP_REST_Request $request WP REST request response. + * + * @return WP_REST_Response + */ + public function generate( WP_REST_Request $request ) { + $item_id = (int) $request->get_param( 'id' ); + $is_mobile = (bool) $request->get_param( 'is_mobile' ); + + // Bailout in case mobile CPCSS generation is called but this option is disabled. + if ( + $is_mobile + && + ( + ! $this->options->get( 'async_css_mobile', 0 ) + || + ! $this->options->get( 'do_caching_mobile_files', 0 ) + ) + ) { + return rest_ensure_response( + $this->return_error( + new WP_Error( + 'mobile_cpcss_not_enabled', + __( 'Mobile CPCSS generation not enabled.', 'rocket' ), + [ + 'status' => 400, + ] + ) + ) + ); + } + + // validate item. + $validated = $this->validate_item_for_generate( $item_id ); + if ( is_wp_error( $validated ) ) { + return rest_ensure_response( $this->return_error( $validated ) ); + } + + // get item url. + $item_url = $this->get_url( $item_id ); + $timeout = ( isset( $request['timeout'] ) && ! empty( $request['timeout'] ) ); + $item_path = $this->get_path( $item_id, $is_mobile ); + + $additional_params = [ + 'timeout' => $timeout, + 'is_mobile' => $is_mobile, + 'item_type' => 'custom', + ]; + $generated = $this->cpcss_service->process_generate( $item_url, $item_path, $additional_params ); + + if ( is_wp_error( $generated ) ) { + return rest_ensure_response( + $this->return_error( $generated ) + ); + } + + $this->clean_post_cache( $item_id ); + + return rest_ensure_response( + $this->return_success( $generated ) + ); + + } + + /** + * Validate the item to be sent to generate CPCSS. + * + * @since 3.6 + * + * @param int $item_id ID for this item to be validated. + * + * @return true|WP_Error + */ + abstract protected function validate_item_for_generate( $item_id ); + + /** + * Validate the item to be sent to Delete CPCSS. + * + * @since 3.6 + * + * @param int $item_id ID for this item to be validated. + * + * @return true|WP_Error + */ + abstract protected function validate_item_for_delete( $item_id ); + + /** + * Get url for this item. + * + * @since 3.6 + * + * @param int $item_id ID for this item to get Url for. + * + * @return false|string + */ + abstract protected function get_url( $item_id ); + + /** + * Get CPCSS file path to save CPCSS code into. + * + * @since 3.6 + * + * @param int $item_id ID for this item to get the path for. + * @param bool $is_mobile Bool identifier for is_mobile CPCSS generation. + * + * @return string + */ + abstract protected function get_path( $item_id, $is_mobile = false ); + + /** + * Delete Post ID CPCSS file. + * + * @since 3.6 + * + * @param WP_REST_Request $request the WP Rest Request object. + * + * @return WP_REST_Response + */ + public function delete( WP_REST_Request $request ) { + $item_id = (int) $request->get_param( 'id' ); + + // validate item. + $validated = $this->validate_item_for_delete( $item_id ); + if ( is_wp_error( $validated ) ) { + return rest_ensure_response( $this->return_error( $validated ) ); + } + + if ( $this->options->get( 'async_css_mobile', 0 ) ) { + $mobile_item_path = $this->get_path( $item_id, true ); + $this->cpcss_service->process_delete( $mobile_item_path ); + } + + $item_path = $this->get_path( $item_id ); + $deleted = $this->cpcss_service->process_delete( $item_path ); + if ( is_wp_error( $deleted ) ) { + return rest_ensure_response( $this->return_error( $deleted ) ); + } + + $this->clean_post_cache( $item_id ); + + return rest_ensure_response( $this->return_success( $deleted ) ); + } + + /** + * Returns the formatted array response + * + * @since 3.6 + * + * @param bool $success True for success, false otherwise. + * @param string $code The code to use for the response. + * @param string $message The message to send in the response. + * @param int $status The status code to send for the response. + * + * @return array + */ + protected function return_array_response( $success = false, $code = '', $message = '', $status = 200 ) { + return [ + 'success' => $success, + 'code' => $code, + 'message' => $message, + 'data' => [ + 'status' => $status, + ], + ]; + } + + /** + * Convert WP_Error into array to be used in response. + * + * @since 3.6 + * + * @param WP_Error $error Error that will be converted to array. + * + * @return array + */ + protected function return_error( $error ) { + $error_data = $error->get_error_data(); + + return $this->return_array_response( + false, + $error->get_error_code(), + $error->get_error_message(), + isset( $error_data['status'] ) ? $error_data['status'] : 400 + ); + } + + /** + * Return success to be used in response. + * + * @since 3.6 + * + * @param array $data which has success parameters with two keys: code and message. + * + * @return array + */ + protected function return_success( $data ) { + return $this->return_array_response( + true, + $data['code'], + $data['message'], + 200 + ); + } + +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/CriticalPath/RESTWPInterface.php b/wp-content/plugins/wp-rocket/inc/Engine/CriticalPath/RESTWPInterface.php new file mode 100644 index 0000000..c11c92e --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/CriticalPath/RESTWPInterface.php @@ -0,0 +1,58 @@ + 400, + ] + ); + } + + if ( 'publish' !== $status ) { + return new WP_Error( + 'post_not_published', + __( 'Cannot generate CPCSS for unpublished post.', 'rocket' ), + [ + 'status' => 400, + ] + ); + } + + return true; + } + + /** + * Validate the item to be sent to delete CPCSS. + * + * @since 3.6 + * + * @param int $post_id ID for this post to be validated. + * + * @return true|WP_Error + */ + protected function validate_item_for_delete( $post_id ) { + if ( empty( get_permalink( $post_id ) ) ) { + return new WP_Error( + 'post_not_exists', + __( 'Requested post does not exist.', 'rocket' ), + [ + 'status' => 400, + ] + ); + } + + return true; + } + + + /** + * Get url for this item. + * + * @since 3.6 + * + * @param int $post_id ID for this post to be validated. + * + * @return false|string + */ + protected function get_url( $post_id ) { + return get_permalink( $post_id ); + } + + /** + * Get CPCSS file path to save CPCSS code into. + * + * @since 3.6 + * + * @param int $post_id ID for this post to be validated. + * @param bool $is_mobile Bool identifier for is_mobile CPCSS generation. + * + * @return string + */ + protected function get_path( $post_id, $is_mobile = false ) { + $post_type = get_post_type( $post_id ); + + return 'posts' . DIRECTORY_SEPARATOR . "{$post_type}-{$post_id}" . ( $is_mobile ? '-mobile' : '' ) . '.css'; + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/CriticalPath/ServiceProvider.php b/wp-content/plugins/wp-rocket/inc/Engine/CriticalPath/ServiceProvider.php new file mode 100644 index 0000000..2410fd9 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/CriticalPath/ServiceProvider.php @@ -0,0 +1,101 @@ +getContainer()->get( 'options' ); + $beacon = $this->getContainer()->get( 'beacon' ); + $template_path = $this->getContainer()->get( 'template_path' ) . '/cpcss'; + + $this->getContainer()->share( 'cpcss_api_client', 'WP_Rocket\Engine\CriticalPath\APIClient' ); + $this->getContainer()->share( 'cpcss_data_manager', 'WP_Rocket\Engine\CriticalPath\DataManager' ) + ->withArgument( $critical_css_path ) + ->withArgument( $filesystem ); + $this->getContainer()->share( 'cpcss_service', 'WP_Rocket\Engine\CriticalPath\ProcessorService' ) + ->withArgument( $this->getContainer()->get( 'cpcss_data_manager' ) ) + ->withArgument( $this->getContainer()->get( 'cpcss_api_client' ) ); + + $processor_service = $this->getContainer()->get( 'cpcss_service' ); + + // REST CPCSS START. + $this->getContainer()->share( 'rest_cpcss_wp_post', 'WP_Rocket\Engine\CriticalPath\RESTWPPost' ) + ->withArgument( $processor_service ) + ->withArgument( $options ); + $this->getContainer()->share( 'rest_cpcss_subscriber', 'WP_Rocket\Engine\CriticalPath\RESTCSSSubscriber' ) + ->withArgument( $this->getContainer()->get( 'rest_cpcss_wp_post' ) ); + // REST CPCSS END. + + $this->getContainer()->add( 'critical_css_generation', 'WP_Rocket\Engine\CriticalPath\CriticalCSSGeneration' ) + ->withArgument( $processor_service ); + $this->getContainer()->add( 'critical_css', 'WP_Rocket\Engine\CriticalPath\CriticalCSS' ) + ->withArgument( $this->getContainer()->get( 'critical_css_generation' ) ) + ->withArgument( $options ) + ->withArgument( $filesystem ); + + $critical_css = $this->getContainer()->get( 'critical_css' ); + + $this->getContainer()->share( 'critical_css_subscriber', 'WP_Rocket\Engine\CriticalPath\CriticalCSSSubscriber' ) + ->withArgument( $critical_css ) + ->withArgument( $processor_service ) + ->withArgument( $options ) + ->withArgument( $filesystem ); + + $this->getContainer()->add( 'cpcss_post', 'WP_Rocket\Engine\CriticalPath\Admin\Post' ) + ->withArgument( $options ) + ->withArgument( $beacon ) + ->withArgument( $critical_css_path ) + ->withArgument( $template_path ); + $this->getContainer()->add( 'cpcss_settings', 'WP_Rocket\Engine\CriticalPath\Admin\Settings' ) + ->withArgument( $options ) + ->withArgument( $beacon ) + ->withArgument( $critical_css ) + ->withArgument( $template_path ); + $this->getContainer()->add( 'cpcss_admin', 'WP_Rocket\Engine\CriticalPath\Admin\Admin' ) + ->withArgument( $options ) + ->withArgument( $processor_service ); + $this->getContainer()->share( 'critical_css_admin_subscriber', 'WP_Rocket\Engine\CriticalPath\Admin\Subscriber' ) + ->withArgument( $this->getContainer()->get( 'cpcss_post' ) ) + ->withArgument( $this->getContainer()->get( 'cpcss_settings' ) ) + ->withArgument( $this->getContainer()->get( 'cpcss_admin' ) ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/CriticalPath/TransientTrait.php b/wp-content/plugins/wp-rocket/inc/Engine/CriticalPath/TransientTrait.php new file mode 100644 index 0000000..1709164 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/CriticalPath/TransientTrait.php @@ -0,0 +1,25 @@ +add( 'template_path', WP_ROCKET_PATH . 'views' ); + $container->addServiceProvider( 'WP_Rocket\Engine\Deactivation\ServiceProvider' ); + $container->addServiceProvider( 'WP_Rocket\ThirdParty\Hostings\ServiceProvider' ); + + $host_type = HostResolver::get_host_service(); + + if ( ! empty( $host_type ) ) { + array_unshift( self::$deactivators, $host_type ); + } + + foreach ( self::$deactivators as $deactivator ) { + $container->get( $deactivator ); + } + + if ( ! isset( $_GET['rocket_nonce'] ) || ! wp_verify_nonce( sanitize_key( $_GET['rocket_nonce'] ), 'force_deactivation' ) ) { + $causes = []; + + // .htaccess problem. + if ( $is_apache && ! rocket_direct_filesystem()->is_writable( get_home_path() . '.htaccess' ) ) { + $causes[] = 'htaccess'; + } + + /** + * Filters the causes which can prevent the deactivation of the plugin + * + * @since 3.6.3 + * + * @param array $causes An array of causes to pass to the notice. + */ + $causes = (array) apply_filters( 'rocket_prevent_deactivation', $causes ); + + if ( count( $causes ) ) { + set_transient( get_current_user_id() . '_donotdeactivaterocket', $causes ); + wp_safe_redirect( wp_get_referer() ); + die(); + } + } + + // Delete config files. + rocket_delete_config_file(); + + $sites_number = count( _rocket_get_php_files_in_dir( rocket_get_constant( 'WP_ROCKET_CONFIG_PATH' ) ) ); + + if ( ! $sites_number ) { + // Delete All WP Rocket rules of the .htaccess file. + flush_rocket_htaccess( true ); + } + + // Update customer key & licence. + wp_remote_get( + WP_ROCKET_WEB_API . 'pause-licence.php', + [ + 'blocking' => false, + ] + ); + + // Delete transients. + delete_transient( 'rocket_check_licence_30' ); + delete_transient( 'rocket_check_licence_1' ); + delete_site_transient( 'update_wprocket_response' ); + + // Unschedule WP Cron events. + wp_clear_scheduled_hook( 'rocket_facebook_tracking_cache_update' ); + wp_clear_scheduled_hook( 'rocket_google_tracking_cache_update' ); + wp_clear_scheduled_hook( 'rocket_cache_dir_size_check' ); + + /** + * WP Rocket deactivation. + * + * @since 3.6.3 add $sites_count parameter. + * @since 3.1.5 + * + * @param int $sites_number Number of WP Rocket config files found. + */ + do_action( 'rocket_deactivation', $sites_number ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/Deactivation/DeactivationInterface.php b/wp-content/plugins/wp-rocket/inc/Engine/Deactivation/DeactivationInterface.php new file mode 100644 index 0000000..1962df6 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/Deactivation/DeactivationInterface.php @@ -0,0 +1,12 @@ +getContainer() + ->inflector( 'WP_Rocket\Engine\Deactivation\DeactivationInterface' ) + ->invokeMethod( 'deactivate', [] ); + } + + /** + * Registers the option array in the container. + */ + public function register() { + $filesystem = rocket_direct_filesystem(); + + $this->getContainer()->add( 'advanced_cache', 'WP_Rocket\Engine\Cache\AdvancedCache' ) + ->withArgument( $this->getContainer()->get( 'template_path' ) . '/cache/' ) + ->withArgument( $filesystem ); + $this->getContainer()->add( 'capabilities_manager', 'WP_Rocket\Engine\Capabilities\Manager' ); + $this->getContainer()->add( 'wp_cache', 'WP_Rocket\Engine\Cache\WPCache' ) + ->withArgument( $filesystem ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/HealthCheck/CacheDirSizeCheck.php b/wp-content/plugins/wp-rocket/inc/Engine/HealthCheck/CacheDirSizeCheck.php new file mode 100644 index 0000000..db96d78 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/HealthCheck/CacheDirSizeCheck.php @@ -0,0 +1,187 @@ +minify_path = $minify_path . get_current_blog_id(); + $this->api_endpoint = $rocket_url . self::ROUTE; + } + + /** + * Return an array of events that this subscriber wants to listen to. + * + * @since 3.3.5 + * + * @return array + */ + public static function get_subscribed_events() { + return [ + 'cron_schedules' => 'add_schedule', + 'init' => 'schedule_cache_dir_size_check', + self::CRON_NAME => 'cache_dir_size_check', + 'wp_rocket_upgrade' => [ 'delete_option_after_upgrade', 11, 2 ], + ]; + } + + /** + * Adds the weekly interval if it doesn't already exist + * + * @since 3.3.5 + * + * @param array $schedules Array of intervals. + * @return array + */ + public function add_schedule( $schedules ) { + if ( isset( $schedules['weekly'] ) ) { + return $schedules; + } + + $schedules['weekly'] = [ + 'interval' => 604800, + 'display' => __( 'weekly', 'rocket' ), + ]; + + return $schedules; + } + + /** + * Schedules the cron event if not yet scheduled. + * + * @since 3.3.5 + * + * @return void + */ + public function schedule_cache_dir_size_check() { + if ( ! wp_next_scheduled( self::CRON_NAME ) ) { + wp_schedule_event( time(), 'weekly', self::CRON_NAME ); + } + } + + /** + * Checks the cache dir size when the event is triggered + * and send a notification if the directory size is above the defined maximum size + * + * @since 3.3.5 + * + * @return void + */ + public function cache_dir_size_check() { + if ( 1 === (int) get_option( self::CRON_NAME ) ) { + return; + } + + $checks = [ + 'min' => $this->minify_path, + ]; + + foreach ( $checks as $type => $path ) { + $size = $this->get_dir_size( $path ); + + if ( $size > self::MAX_SIZE ) { + $this->send_notification( $type ); + } + } + + update_option( self::CRON_NAME, 1 ); + } + + /** + * Deletes the check size option when updating the plugin + * + * @since 3.3.6 + * + * @param string $new_version Latest WP Rocket version. + * @param string $current_version Installed WP Rocket version. + */ + public function delete_option_after_upgrade( $new_version, $current_version ) { + if ( version_compare( $current_version, $new_version, '<' ) ) { + delete_option( self::CRON_NAME ); + } + } + + /** + * Gets the size of the provided directory + * + * @since 3.3.5 + * + * @param string $dir Absolute path to the directory. + * @return int + */ + private function get_dir_size( $dir ) { + $size = 0; + + try { + foreach ( new RecursiveIteratorIterator( new RecursiveDirectoryIterator( $dir, FilesystemIterator::SKIP_DOTS ) ) as $file ) { + $size += $file->getSize(); + } + + return $size; + } catch ( UnexpectedValueException $e ) { + return $size; + } + } + + /** + * Sends a notification to our endpoint with the type of directory + * + * @since 3.3.5 + * + * @param string $dir_type Type of directory. + * @return void + */ + private function send_notification( $dir_type ) { + wp_safe_remote_post( + $this->api_endpoint, + [ + 'body' => 'cache_dir_type=' . $dir_type, + ] + ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/HealthCheck/HealthCheck.php b/wp-content/plugins/wp-rocket/inc/Engine/HealthCheck/HealthCheck.php new file mode 100644 index 0000000..3f3a7ea --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/HealthCheck/HealthCheck.php @@ -0,0 +1,149 @@ +options = $options; + $this->events = $this->get_events(); + } + + /** + * Returns an array of events that this subscriber wants to listen to. + * + * @return array + */ + public static function get_subscribed_events() { + return [ + 'admin_notices' => 'missed_cron', + ]; + } + + /** + * Display a warning notice if WP Rocket scheduled events are not running properly. + * + * @since 3.5.4 + */ + public function missed_cron() { + if ( ! $this->should_check() ) { + return; + } + + $delay = rocket_get_constant( 'DISABLE_WP_CRON' ) ? HOUR_IN_SECONDS : 5 * MINUTE_IN_SECONDS; + $list = ''; + $events = $this->events; + + foreach ( $this->events as $event => $description ) { + $timestamp = wp_next_scheduled( $event ); + + if ( + false === $timestamp + || + ( $timestamp + $delay - time() ) > 0 + ) { + unset( $events[ $event ] ); + continue; + } + + $list .= "

  • {$description}
  • "; + } + + if ( empty( $events ) ) { + return; + } + + $message = sprintf( + '

    %1$s

    +
      %2$s
    +

    %3$s

    ', + _n( + 'The following scheduled event failed to run. This may indicate the CRON system is not running properly, which can prevent some WP Rocket features from working as intended:', + 'The following scheduled events failed to run. This may indicate the CRON system is not running properly, which can prevent some WP Rocket features from working as intended:', + count( $events ), + 'rocket' + ), + $list, + __( 'Please contact your host to check if CRON is working.', 'rocket' ) + ); + + rocket_notice_html( + [ + 'status' => 'warning', + 'dismissible' => '', + 'message' => $message, + 'dismiss_button' => 'rocket_warning_cron', + ] + ); + } + + /** + * Checks if health check should run. + * + * @since 3.5.4 + * + * @return bool true when should do health check; else, false. + */ + protected function should_check() { + if ( ! current_user_can( 'rocket_manage_options' ) ) { + return false; + } + + if ( 'settings_page_wprocket' !== get_current_screen()->id ) { + return false; + } + + $dismissed = (array) get_user_meta( get_current_user_id(), 'rocket_boxes', true ); + if ( in_array( 'rocket_warning_cron', $dismissed, true ) ) { + return false; + } + + return ! ( + 0 === (int) $this->options->get( 'purge_cron_interval', 0 ) + && + 0 === (int) $this->options->get( 'async_css', 0 ) + && + 0 === (int) $this->options->get( 'manual_preload', 0 ) + && + 0 === (int) $this->options->get( 'schedule_automatic_cleanup', 0 ) + ); + } + + /** + * Gets an array of events with their descriptions. + * + * @since 3.5.4 + * + * @return array array of events => descriptions. + */ + protected function get_events() { + return [ + 'rocket_purge_time_event' => __( 'Scheduled Cache Purge', 'rocket' ), + 'rocket_database_optimization_time_event' => __( 'Scheduled Database Optimization', 'rocket' ), + 'rocket_database_optimization_cron_interval' => __( 'Database Optimization Process', 'rocket' ), + 'rocket_preload_cron_interval' => _x( 'Preload', 'noun', 'rocket' ), + 'rocket_critical_css_generation_cron_interval' => __( 'Critical Path CSS Generation Process', 'rocket' ), + ]; + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/HealthCheck/ServiceProvider.php b/wp-content/plugins/wp-rocket/inc/Engine/HealthCheck/ServiceProvider.php new file mode 100644 index 0000000..86e674b --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/HealthCheck/ServiceProvider.php @@ -0,0 +1,42 @@ +getContainer()->share( 'health_check', 'WP_Rocket\Engine\HealthCheck\HealthCheck' ) + ->withArgument( $this->getContainer()->get( 'options' ) ); + $this->getContainer()->share( 'cache_dir_size_check', 'WP_Rocket\Engine\HealthCheck\CacheDirSizeCheck' ) + ->withArgument( rocket_get_constant( 'WP_ROCKET_MINIFY_CACHE_PATH' ) ) + ->withArgument( rocket_get_constant( 'WP_ROCKET_WEB_MAIN' ) ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/Heartbeat/HeartbeatSubscriber.php b/wp-content/plugins/wp-rocket/inc/Engine/Heartbeat/HeartbeatSubscriber.php new file mode 100644 index 0000000..33e2e5a --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/Heartbeat/HeartbeatSubscriber.php @@ -0,0 +1,160 @@ +options = $options; + } + + /** + * Return an array of events that this subscriber wants to listen to. + * + * @since 3.2 + * @access public + * + * @return array + */ + public static function get_subscribed_events() { + $priority = PHP_INT_MAX - 60; + return [ + 'admin_enqueue_scripts' => [ 'maybe_disable', $priority ], + 'wp_enqueue_scripts' => [ 'maybe_disable', $priority ], + 'heartbeat_settings' => [ 'maybe_modify_period', $priority ], + ]; + } + + /** + * Maybe disable Heartbeat. + * + * @since 3.2 + * @access public + */ + public function maybe_disable() { + if ( ! $this->behavior_match_context( 'disable' ) || rocket_bypass() ) { + return; + } + + wp_deregister_script( 'heartbeat' ); + } + + /** + * Maybe modify Heartbeat periodicity. + * + * @since 3.2 + * @access public + * + * @param array $settings The Heartbeat settings. + * + * @return array + */ + public function maybe_modify_period( $settings ) { + if ( ! $this->behavior_match_context( 'reduce_periodicity' ) ) { + return $settings; + } + + $settings['interval'] = 120; + $settings['minimalInterval'] = 120; + + return $settings; + } + + /** + * Tell if we're in frontend, backend, or a post edition page. + * + * @since 3.2 + * @access private + * + * @return string Either 'site' (frontend), 'admin' (backend), or 'editor'. + */ + private function get_current_context() { + $request_uri = ! empty( $_SERVER['REQUEST_URI'] ) ? wp_unslash( $_SERVER['REQUEST_URI'] ) : ''; // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized + $request_uri = explode( '?', $request_uri, 2 ); + $request_uri = reset( $request_uri ); + + if ( $request_uri && preg_match( '@/wp-admin/post(-new)?\.php$@', $request_uri ) ) { + $context = 'editor'; + } elseif ( is_admin() ) { + $context = 'admin'; + + if ( wp_doing_ajax() && ! empty( $_POST['action'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Missing + if ( 'wp-remove-post-lock' === sanitize_key( wp_unslash( $_POST['action'] ) ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Missing + $context = 'editor'; + } elseif ( ! empty( $_POST['screen_id'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Missing + switch ( $_POST['screen_id'] ) { // phpcs:ignore WordPress.Security.NonceVerification.Missing + case 'post': + $context = 'editor'; + break; + case 'front': + $context = 'site'; + } + } + } + } else { + $context = 'site'; + } + + /** + * Filter the current context. + * This can be useful for ajax requests or requests to admin-post.php, as there is no easy way to tell where those requests come from. + * + * @since 3.2 + * + * @param $context string Either 'site' (frontend), 'admin' (backend), or 'editor'. + */ + $filtered_context = apply_filters( 'rocket_heartbeat_context', $context ); + + $contexts = [ + 'editor' => 1, + 'admin' => 1, + 'site' => 1, + ]; + + return isset( $contexts[ $filtered_context ] ) ? $filtered_context : $context; + } + + /** + * Tell if the given behavior is what is set in the addon settings, accordingly to the current context. + * + * @since 3.2 + * @access private + * + * @param string $behavior Either '', 'disable', or 'reduce_periodicity'. + * + * @return bool + */ + private function behavior_match_context( $behavior ) { + if ( ! $this->options->get( 'control_heartbeat', 0 ) ) { + return false; + } + + $context = $this->get_current_context(); + + return $behavior === $this->options->get( 'heartbeat_' . $context . '_behavior', '' ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/Heartbeat/ServiceProvider.php b/wp-content/plugins/wp-rocket/inc/Engine/Heartbeat/ServiceProvider.php new file mode 100644 index 0000000..d0c4317 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/Heartbeat/ServiceProvider.php @@ -0,0 +1,39 @@ +getContainer()->get( 'options' ); + + $this->getContainer()->share( 'heartbeat_subscriber', 'WP_Rocket\Engine\Heartbeat\HeartbeatSubscriber' ) + ->withArgument( $this->getContainer()->get( 'options' ) ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/License/API/Pricing.php b/wp-content/plugins/wp-rocket/inc/Engine/License/API/Pricing.php new file mode 100644 index 0000000..6b7297f --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/License/API/Pricing.php @@ -0,0 +1,324 @@ +pricing = $pricing; + } + + /** + * Gets the single license pricing data + * + * @return null|object + */ + public function get_single_pricing() { + if ( + ! isset( $this->pricing->licenses->single ) + || + ! is_object( $this->pricing->licenses->single ) + ) { + return null; + } + + return $this->pricing->licenses->single; + } + + /** + * Gets the plus license pricing data + * + * @return null|object + */ + public function get_plus_pricing() { + if ( + ! isset( $this->pricing->licenses->plus ) + || + ! is_object( $this->pricing->licenses->plus ) + ) { + return null; + } + + return $this->pricing->licenses->plus; + } + + /** + * Gets the infinite license pricing data + * + * @return null|object + */ + public function get_infinite_pricing() { + if ( + ! isset( $this->pricing->licenses->infinite ) + || + ! is_object( $this->pricing->licenses->infinite ) + ) { + return null; + } + + return $this->pricing->licenses->infinite; + } + + /** + * Gets the license renewal pricing data + * + * @return null|object + */ + public function get_renewals_data() { + if ( + ! isset( $this->pricing->renewals ) + || + ! is_object( $this->pricing->renewals ) + ) { + return null; + } + + return $this->pricing->renewals; + } + + /** + * Gets the promotion data + * + * @return null|object + */ + public function get_promo_data() { + if ( + ! isset( $this->pricing->promo ) + || + ! is_object( $this->pricing->promo ) + ) { + return null; + } + + return $this->pricing->promo; + } + + /** + * Checks if a promotion is currently active + * + * @return boolean + */ + public function is_promo_active() { + $promo_data = $this->get_promo_data(); + + if ( is_null( $promo_data ) ) { + return false; + } + + if ( ! isset( $promo_data->start_date, $promo_data->end_date ) ) { + return false; + } + + $current_time = time(); + + return ( + absint( $promo_data->start_date ) < $current_time + && + absint( $promo_data->end_date ) > $current_time + ); + } + + /** + * Gets promotion end date + * + * @return int + */ + public function get_promo_end() { + $promo = $this->get_promo_data(); + + if ( + is_null( $promo ) + || + ! isset( $promo->end_date ) + ) { + return 0; + } + + return absint( $promo->end_date ); + } + + /** + * Gets the regular upgrade price from single to plus + * + * @return int + */ + public function get_regular_single_to_plus_price() { + $plus_pricing = $this->get_plus_pricing(); + + if ( + is_null( $plus_pricing ) + || + ! isset( $plus_pricing->prices->from_single->regular ) + ) { + return 0; + } + + return $plus_pricing->prices->from_single->regular; + } + + /** + * Gets the current upgrade price from single to plus + * + * @return int + */ + public function get_single_to_plus_price() { + $plus_pricing = $this->get_plus_pricing(); + $regular = $this->get_regular_single_to_plus_price(); + + if ( + is_null( $plus_pricing ) + || + ! isset( $plus_pricing->prices->from_single->sale ) + ) { + return $regular; + } + + return $this->is_promo_active() ? $plus_pricing->prices->from_single->sale : $regular; + } + + /** + * Gets the regular upgrade price from single to infinite + * + * @return int + */ + public function get_regular_single_to_infinite_price() { + $infinite_pricing = $this->get_infinite_pricing(); + + if ( + is_null( $infinite_pricing ) + || + ! isset( $infinite_pricing->prices->from_single->regular ) + ) { + return 0; + } + + return $infinite_pricing->prices->from_single->regular; + } + + /** + * Gets the current upgrade price from single to plus + * + * @return int + */ + public function get_single_to_infinite_price() { + $infinite_pricing = $this->get_infinite_pricing(); + $regular = $this->get_regular_single_to_infinite_price(); + + if ( + is_null( $infinite_pricing ) + || + ! isset( $infinite_pricing->prices->from_single->sale ) + ) { + return $regular; + } + + return $this->is_promo_active() ? $infinite_pricing->prices->from_single->sale : $regular; + } + + /** + * Gets the regular upgrade price from plus to infinite + * + * @return int + */ + public function get_regular_plus_to_infinite_price() { + $infinite_pricing = $this->get_infinite_pricing(); + + if ( + is_null( $infinite_pricing ) + || + ! isset( $infinite_pricing->prices->from_plus->regular ) + ) { + return 0; + } + + return $infinite_pricing->prices->from_plus->regular; + } + + /** + * Gets the current upgrade price from plus to infinite + * + * @return int + */ + public function get_plus_to_infinite_price() { + $infinite_pricing = $this->get_infinite_pricing(); + $regular = $this->get_regular_plus_to_infinite_price(); + + if ( + is_null( $infinite_pricing ) + || + ! isset( $infinite_pricing->prices->from_plus->sale ) + ) { + return $regular; + } + + return $this->is_promo_active() ? $infinite_pricing->prices->from_plus->sale : $regular; + } + + /** + * Gets the number of websites allowed for the single license + * + * @return int + */ + public function get_single_websites_count() { + $single_pricing = $this->get_single_pricing(); + + if ( + is_null( $single_pricing ) + || + ! isset( $single_pricing->websites ) + ) { + return 0; + } + + return (int) $single_pricing->websites; + } + + /** + * Gets the number of websites allowed for the plus license + * + * @return int + */ + public function get_plus_websites_count() { + $plus_pricing = $this->get_plus_pricing(); + + if ( + is_null( $plus_pricing ) + || + ! isset( $plus_pricing->websites ) + ) { + return 0; + } + + return (int) $plus_pricing->websites; + } + + /** + * Gets the number of websites allowed for the infinite license + * + * @return int + */ + public function get_infinite_websites_count() { + $infinite_pricing = $this->get_infinite_pricing(); + + if ( + is_null( $infinite_pricing ) + || + ! isset( $infinite_pricing->websites ) + ) { + return 0; + } + + return (int) $infinite_pricing->websites; + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/License/API/PricingClient.php b/wp-content/plugins/wp-rocket/inc/Engine/License/API/PricingClient.php new file mode 100644 index 0000000..c827b56 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/License/API/PricingClient.php @@ -0,0 +1,59 @@ +get_raw_pricing_data(); + + if ( false === $data ) { + return false; + } + + set_transient( 'wp_rocket_pricing', $data, 6 * HOUR_IN_SECONDS ); + + return $data; + } + + /** + * Gets the pricing data from the pricing endpoint + * + * @since 3.7.3 + * + * @return bool|object + */ + private function get_raw_pricing_data() { + $response = wp_safe_remote_get( + self::PRICING_ENDPOINT + ); + + if ( 200 !== wp_remote_retrieve_response_code( $response ) ) { + return false; + } + + $body = wp_remote_retrieve_body( $response ); + + if ( empty( $body ) ) { + return false; + } + + return json_decode( $body ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/License/API/User.php b/wp-content/plugins/wp-rocket/inc/Engine/License/API/User.php new file mode 100644 index 0000000..ab62765 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/License/API/User.php @@ -0,0 +1,121 @@ +user = is_object( $user ) ? $user : new \stdClass(); + } + + /** + * Gets the user license type + * + * @return int + */ + public function get_license_type() { + if ( ! isset( $this->user->licence_account ) ) { + return 0; + } + + return (int) $this->user->licence_account; + } + + /** + * Gets the user license expiration timestamp + * + * @return int + */ + public function get_license_expiration() { + if ( ! isset( $this->user->licence_expiration ) ) { + return 0; + } + + return (int) $this->user->licence_expiration; + } + + /** + * Checks if the user license is expired + * + * @return boolean + */ + public function is_license_expired() { + return time() > $this->get_license_expiration(); + } + + /** + * Gets the user license creation date + * + * @return int + */ + public function get_creation_date() { + if ( ! isset( $this->user->date_created ) ) { + return 0; + } + + return (int) $this->user->date_created; + } + + /** + * Checks if user has auto-renew enabled + * + * @return boolean + */ + public function is_auto_renew() { + if ( ! isset( $this->user->has_auto_renew ) ) { + return false; + } + + return (bool) $this->user->has_auto_renew; + } + + /** + * Gets the upgrade to plus URL + * + * @return string + */ + public function get_upgrade_plus_url() { + if ( ! isset( $this->user->upgrade_plus_url ) ) { + return ''; + } + + return $this->user->upgrade_plus_url; + } + + /** + * Gets the upgrade to infinite url + * + * @return string + */ + public function get_upgrade_infinite_url() { + if ( ! isset( $this->user->upgrade_infinite_url ) ) { + return ''; + } + + return $this->user->upgrade_infinite_url; + } + + /** + * Gets the renewal url + * + * @return string + */ + public function get_renewal_url() { + if ( ! isset( $this->user->renewal_url ) ) { + return ''; + } + + return $this->user->renewal_url; + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/License/API/UserClient.php b/wp-content/plugins/wp-rocket/inc/Engine/License/API/UserClient.php new file mode 100644 index 0000000..00d6f15 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/License/API/UserClient.php @@ -0,0 +1,87 @@ +options = $options; + } + + /** + * Gets user data from cache if it exists, else gets it from the user endpoint + * + * Cache the user data for 24 hours in a transient + * + * @since 3.7.3 + * + * @return bool|object + */ + public function get_user_data() { + $cached_data = get_transient( 'wp_rocket_customer_data' ); + + if ( false !== $cached_data ) { + return $cached_data; + } + + $data = $this->get_raw_user_data(); + + if ( false === $data ) { + return false; + } + + set_transient( 'wp_rocket_customer_data', $data, DAY_IN_SECONDS ); + + return $data; + } + + /** + * Gets the user data from the user endpoint + * + * @since 3.7.3 + * + * @return bool|object + */ + private function get_raw_user_data() { + $customer_key = ! empty( $this->options->get( 'consumer_key', '' ) ) + ? $this->options->get( 'consumer_key', '' ) + : rocket_get_constant( 'WP_ROCKET_KEY', '' ); + $customer_email = ! empty( $this->options->get( 'consumer_email', '' ) ) + ? $this->options->get( 'consumer_email', '' ) + : rocket_get_constant( 'WP_ROCKET_EMAIL', '' ); + + $response = wp_safe_remote_post( + self::USER_ENDPOINT, + [ + 'body' => 'user_id=' . rawurlencode( $customer_email ) . '&consumer_key=' . sanitize_key( $customer_key ), + ] + ); + + if ( 200 !== wp_remote_retrieve_response_code( $response ) ) { + return false; + } + + $body = wp_remote_retrieve_body( $response ); + + if ( empty( $body ) ) { + return false; + } + + return json_decode( $body ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/License/Renewal.php b/wp-content/plugins/wp-rocket/inc/Engine/License/Renewal.php new file mode 100644 index 0000000..1070acb --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/License/Renewal.php @@ -0,0 +1,313 @@ +pricing = $pricing; + $this->user = $user; + } + + /** + * Displays the renewal banner for users expiring in less than 30 days + * + * @since 3.7.5 + * + * @return void + */ + public function display_renewal_soon_banner() { + if ( rocket_get_constant( 'WP_ROCKET_WHITE_LABEL_ACCOUNT' ) ) { + return; + } + + if ( $this->user->is_license_expired() ) { + return; + } + + if ( ! $this->is_expired_soon() ) { + return; + } + + $data = $this->get_banner_data(); + $data['countdown'] = $this->get_countdown_data(); + + echo $this->generate( 'renewal-soon-banner', $data ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + } + + /** + * Displays the renewal banner for expired users + * + * @since 3.7.5 + * + * @return void + */ + public function display_renewal_expired_banner() { + if ( rocket_get_constant( 'WP_ROCKET_WHITE_LABEL_ACCOUNT' ) ) { + return; + } + + if ( 0 === $this->user->get_license_expiration() ) { + return; + } + + if ( ! $this->user->is_license_expired() ) { + return; + } + + if ( false !== get_transient( 'rocket_renewal_banner_' . get_current_user_id() ) ) { + return; + } + + echo $this->generate( 'renewal-expired-banner', $this->get_banner_data() ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + } + + /** + * Get base data to display in the banners + * + * @since 3.7.5 + * + * @return array + */ + private function get_banner_data() { + return [ + 'discount_percent' => $this->get_discount_percent(), + 'discount_price' => number_format_i18n( $this->get_discount_price(), 2 ), + 'renewal_url' => $this->user->get_renewal_url(), + ]; + } + + /** + * AJAX callback to dismiss the renewal banner for expired users + * + * @since 3.7.5 + * + * @return void + */ + public function dismiss_renewal_expired_banner() { + check_ajax_referer( 'rocket-ajax', 'nonce', true ); + + if ( ! current_user_can( 'rocket_manage_options' ) ) { + return; + } + + $transient = 'rocket_renewal_banner_' . get_current_user_id(); + + if ( false !== get_transient( $transient ) ) { + return; + } + + set_transient( $transient, 1, MONTH_IN_SECONDS ); + + wp_send_json_success(); + } + + /** + * Adds the license expiration time to WP Rocket localize script data + * + * @since 3.7.5 + * + * @param array $data Localize script data. + * @return array + */ + public function add_localize_script_data( $data ) { + if ( ! is_array( $data ) ) { + $data = (array) $data; + } + + if ( $this->user->is_license_expired() ) { + return $data; + } + + if ( ! $this->is_expired_soon() ) { + return $data; + } + + $data['license_expiration'] = $this->user->get_license_expiration(); + + return $data; + } + + /** + * Checks if the license expires in less than 30 days + * + * @since 3.7.5 + * + * @return boolean + */ + private function is_expired_soon() { + if ( $this->user->is_auto_renew() ) { + return false; + } + + $expiration_delay = $this->user->get_license_expiration() - time(); + + return 30 * DAY_IN_SECONDS > $expiration_delay; + } + + /** + * Gets the discount percentage corresponding to the current user status + * + * @since 3.7.5 + * + * @return int + */ + private function get_discount_percent() { + $renewals = $this->get_user_renewal_status(); + + if ( false === $renewals ) { + return 0; + } + + if ( $renewals['is_expired'] ) { + return isset( $renewals['discount_percent']->is_expired ) ? $renewals['discount_percent']->is_expired : 0; + } + + if ( $renewals['is_grandfather'] ) { + return isset( $renewals['discount_percent']->is_grandfather ) ? $renewals['discount_percent']->is_grandfather : 0; + } + + return isset( $renewals['discount_percent']->not_grandfather ) ? $renewals['discount_percent']->not_grandfather : 0; + } + + /** + * Gets the discount price corresponding to the current user status + * + * @since 3.7.5 + * + * @return int + */ + private function get_discount_price() { + $renewals = $this->get_user_renewal_status(); + + if ( false === $renewals ) { + return 0; + } + + $license = $this->get_license_pricing_data(); + + if ( $renewals['is_expired'] ) { + return isset( $license->prices->renewal->is_expired ) ? $license->prices->renewal->is_expired : 0; + } + + if ( $renewals['is_grandfather'] ) { + return isset( $license->prices->renewal->is_grandfather ) ? $license->prices->renewal->is_grandfather : 0; + } + + return isset( $license->prices->renewal->not_grandfather ) ? $license->prices->renewal->not_grandfather : 0; + } + + /** + * Gets the user renewal status + * + * @since 3.7.5 + * + * @return array + */ + private function get_user_renewal_status() { + $renewals = $this->pricing->get_renewals_data(); + + if ( ! isset( $renewals->extra_days, $renewals->grandfather_date, $renewals->discount_percent ) ) { + return false; + } + + return [ + 'discount_percent' => $renewals->discount_percent, + 'is_expired' => time() > ( $this->user->get_license_expiration() + ( $renewals->extra_days * DAY_IN_SECONDS ) ), + 'is_grandfather' => $renewals->grandfather_date > $this->user->get_creation_date(), + ]; + } + + /** + * Gets the license pricing data corresponding to the user license + * + * @since 3.7.5 + * + * @return object|null + */ + private function get_license_pricing_data() { + $license = $this->user->get_license_type(); + $plus_websites = $this->pricing->get_plus_websites_count(); + + if ( $license === $plus_websites ) { + return $this->pricing->get_plus_pricing(); + } elseif ( + $license >= $this->pricing->get_single_websites_count() + && + $license < $plus_websites + ) { + return $this->pricing->get_single_pricing(); + } + + return $this->pricing->get_infinite_pricing(); + } + + /** + * Gets the countdown data to display for the renewal soon banner + * + * @since 3.7.5 + * + * @return array + */ + private function get_countdown_data() { + $data = [ + 'days' => 0, + 'hours' => 0, + 'minutes' => 0, + 'seconds' => 0, + ]; + + if ( rocket_get_constant( 'WP_ROCKET_IS_TESTING', false ) ) { + return $data; + } + + $expiration = $this->user->get_license_expiration(); + + if ( 0 === $expiration ) { + return $data; + } + + $now = date_create(); + $end = date_timestamp_set( date_create(), $expiration ); + + if ( $now > $end ) { + return $data; + } + + $remaining = date_diff( $now, $end ); + $format = explode( ' ', $remaining->format( '%d %H %i %s' ) ); + + $data['days'] = $format[0]; + $data['hours'] = $format[1]; + $data['minutes'] = $format[2]; + $data['seconds'] = $format[3]; + + return $data; + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/License/ServiceProvider.php b/wp-content/plugins/wp-rocket/inc/Engine/License/ServiceProvider.php new file mode 100644 index 0000000..2d826f0 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/License/ServiceProvider.php @@ -0,0 +1,62 @@ +getContainer()->add( 'pricing_client', PricingClient::class ); + $this->getContainer()->add( 'user_client', UserClient::class ) + ->withArgument( $this->getContainer()->get( 'options' ) ); + $this->getContainer()->share( 'pricing', Pricing::class ) + ->withArgument( $this->getContainer()->get( 'pricing_client' )->get_pricing_data() ); + $this->getContainer()->share( 'user', User::class ) + ->withArgument( $this->getContainer()->get( 'user_client' )->get_user_data() ); + $this->getContainer()->add( 'upgrade', Upgrade::class ) + ->withArgument( $this->getContainer()->get( 'pricing' ) ) + ->withArgument( $this->getContainer()->get( 'user' ) ) + ->withArgument( $views ); + $this->getContainer()->add( 'renewal', Renewal::class ) + ->withArgument( $this->getContainer()->get( 'pricing' ) ) + ->withArgument( $this->getContainer()->get( 'user' ) ) + ->withArgument( $views ); + $this->getContainer()->share( 'license_subscriber', Subscriber::class ) + ->withArgument( $this->getContainer()->get( 'upgrade' ) ) + ->withArgument( $this->getContainer()->get( 'renewal' ) ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/License/Subscriber.php b/wp-content/plugins/wp-rocket/inc/Engine/License/Subscriber.php new file mode 100644 index 0000000..657097f --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/License/Subscriber.php @@ -0,0 +1,187 @@ +upgrade = $upgrade; + $this->renewal = $renewal; + } + + /** + * Events this subscriber listens to. + * + * @return array + */ + public static function get_subscribed_events() { + return [ + 'rocket_dashboard_license_info' => 'display_upgrade_section', + 'rocket_settings_page_footer' => 'display_upgrade_popin', + 'rocket_menu_title' => 'add_notification_bubble', + 'admin_footer-settings_page_wprocket' => 'dismiss_notification_bubble', + 'rocket_before_dashboard_content' => [ + [ 'display_promo_banner' ], + [ 'display_renewal_soon_banner', 11 ], + [ 'display_renewal_expired_banner', 12 ], + ], + 'wp_ajax_rocket_dismiss_promo' => 'dismiss_promo_banner', + 'wp_ajax_rocket_dismiss_renewal' => 'dismiss_renewal_banner', + 'rocket_localize_admin_script' => 'add_localize_script_data', + 'wp_rocket_upgrade' => [ 'clean_user_transient', 15, 2 ], + ]; + } + + /** + * Displays the upgrade section in the license info block + * + * @since 3.7.3 + * + * @return void + */ + public function display_upgrade_section() { + $this->upgrade->display_upgrade_section(); + } + + /** + * Displays the upgrade popin + * + * @since 3.7.3 + * + * @return void + */ + public function display_upgrade_popin() { + $this->upgrade->display_upgrade_popin(); + } + + /** + * Adds the notification bubble to the menu title if a promotion is active + * + * @since 3.7.4 + * + * @param string $menu_title The text to be used for the menu. + * @return string + */ + public function add_notification_bubble( $menu_title ) { + return $this->upgrade->add_notification_bubble( $menu_title ); + } + + /** + * Prevents the notification bubble from showing once the user accessed the dashboard once + * + * @since 3.7.4 + * + * @return void + */ + public function dismiss_notification_bubble() { + $this->upgrade->dismiss_notification_bubble(); + } + + /** + * Displays the promotions banner when a promotion is active + * + * @since 3.7.4 + * + * @return void + */ + public function display_promo_banner() { + $this->upgrade->display_promo_banner(); + } + + /** + * AJAX callback to dismiss the promotion banner + * + * @since 3.7.4 + * + * @return void + */ + public function dismiss_promo_banner() { + $this->upgrade->dismiss_promo_banner(); + } + + /** + * Adds the current time and promotion end time to WP Rocket localize script data + * + * @since 3.7.5 Add the renewal localize data + * @since 3.7.4 + * + * @param array $data Localize script data. + * @return array + */ + public function add_localize_script_data( $data ) { + $data = $this->upgrade->add_localize_script_data( $data ); + + return $this->renewal->add_localize_script_data( $data ); + } + + /** + * Deletes the user data transient on 3.7.4 update + * + * @since 3.7.4 + * + * @param string $new_version New version of the plugin. + * @param string $old_version Installed version of the plugin. + * @return void + */ + public function clean_user_transient( $new_version, $old_version ) { + if ( version_compare( $old_version, '3.7.4', '>' ) ) { + return; + } + + delete_transient( 'wp_rocket_customer_data' ); + } + + /** + * Displays the renewal banner for users expiring in less than 30 days + * + * @since 3.7.5 + * + * @return void + */ + public function display_renewal_soon_banner() { + $this->renewal->display_renewal_soon_banner(); + } + + /** + * Displays the renewal banner for expired users + * + * @since 3.7.5 + * + * @return void + */ + public function display_renewal_expired_banner() { + $this->renewal->display_renewal_expired_banner(); + } + + /** + * AJAX callback to dismiss the renewal banner + * + * @since 3.7.5 + * + * @return void + */ + public function dismiss_renewal_banner() { + $this->renewal->dismiss_renewal_expired_banner(); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/License/Upgrade.php b/wp-content/plugins/wp-rocket/inc/Engine/License/Upgrade.php new file mode 100644 index 0000000..4d854bf --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/License/Upgrade.php @@ -0,0 +1,404 @@ +pricing = $pricing; + $this->user = $user; + } + + /** + * Displays the upgrade section in the license block on the dashboard + * + * @return void + */ + public function display_upgrade_section() { + if ( ! $this->can_upgrade() ) { + return; + } + + echo $this->generate( 'upgrade-section' ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + } + + /** + * Displays the upgrade pop on the dashboard + * + * @return void + */ + public function display_upgrade_popin() { + if ( rocket_get_constant( 'WP_ROCKET_WHITE_LABEL_ACCOUNT' ) ) { + return; + } + + if ( ! $this->can_upgrade() ) { + return; + } + + $data = [ + 'is_promo_active' => $this->pricing->is_promo_active(), + 'upgrades' => $this->get_upgrade_choices(), + ]; + + echo $this->generate( 'upgrade-popin', $data ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + } + + /** + * Adds the notification bubble to WP Rocket menu item when a promo is active + * + * @param string $menu_title Menu title. + * @return string + */ + public function add_notification_bubble( $menu_title ) { + if ( ! $this->can_use_promo() ) { + return $menu_title; + } + + if ( false !== get_transient( 'rocket_promo_seen_' . get_current_user_id() ) ) { + return $menu_title; + } + + return $menu_title . ' !'; + } + + /** + * Prevents the notification bubble from showing once the user accessed the dashboard once + * + * @return void + */ + public function dismiss_notification_bubble() { + if ( ! $this->can_use_promo() ) { + return; + } + + $user_id = get_current_user_id(); + + if ( false !== get_transient( "rocket_promo_seen_{$user_id}" ) ) { + return; + } + + set_transient( "rocket_promo_seen_{$user_id}", 1, 2 * WEEK_IN_SECONDS ); + } + + /** + * Displays the promotion banner + * + * @return void + */ + public function display_promo_banner() { + if ( ! $this->can_use_promo() ) { + return; + } + + if ( false !== get_transient( 'rocket_promo_banner_' . get_current_user_id() ) ) { + return; + } + + $promo = $this->pricing->get_promo_data(); + $promo_name = isset( $promo->name ) ? $promo->name : ''; + $promo_discount = isset( $promo->discount_percent ) ? $promo->discount_percent : 0; + + $data = [ + 'name' => $promo_name, + 'discount_percent' => $promo_discount, + 'countdown' => $this->get_countdown_data(), + 'message' => $this->get_promo_message( $promo_name, $promo_discount ), + ]; + + echo $this->generate( 'promo-banner', $data ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + } + + /** + * AJAX callback to dismiss the promotion banner + * + * @return void + */ + public function dismiss_promo_banner() { + check_ajax_referer( 'rocket-ajax', 'nonce', true ); + + if ( ! current_user_can( 'rocket_manage_options' ) ) { + return; + } + + $user = get_current_user_id(); + + if ( false !== get_transient( "rocket_promo_banner_{$user}" ) ) { + return; + } + + set_transient( "rocket_promo_banner_{$user}", 1, 2 * WEEK_IN_SECONDS ); + + wp_send_json_success(); + } + + /** + * Adds the promotion end time to WP Rocket localize script data + * + * @since 3.7.4 + * + * @param array $data Localize script data. + * @return array + */ + public function add_localize_script_data( $data ) { + if ( ! is_array( $data ) ) { + $data = (array) $data; + } + + if ( ! $this->can_use_promo() ) { + return $data; + } + + $data['promo_end'] = $this->pricing->get_promo_end(); + + return $data; + } + + /** + * Returns an array containing the remaining days, hours, minutes & seconds for the promotion + * + * @since 3.7.4 + * + * @return array + */ + private function get_countdown_data() { + $data = [ + 'days' => 0, + 'hours' => 0, + 'minutes' => 0, + 'seconds' => 0, + ]; + + if ( rocket_get_constant( 'WP_ROCKET_IS_TESTING', false ) ) { + return $data; + } + + $promo_end = $this->pricing->get_promo_end(); + + if ( 0 === $promo_end ) { + return $data; + } + + $now = date_create(); + $end = date_timestamp_set( date_create(), $promo_end ); + + if ( $now > $end ) { + return $data; + } + + $remaining = date_diff( $now, $end ); + $format = explode( ' ', $remaining->format( '%d %H %i %s' ) ); + + $data['days'] = $format[0]; + $data['hours'] = $format[1]; + $data['minutes'] = $format[2]; + $data['seconds'] = $format[3]; + + return $data; + } + + /** + * Returns the promotion message to display in the banner + * + * @param string $promo_name Name of the promotion. + * @param int $promo_discount Discount percentage. + * + * @return string + */ + private function get_promo_message( $promo_name = '', $promo_discount = 0 ) { + $choices = 0; + $license = $this->user->get_license_type(); + $plus_websites = $this->pricing->get_plus_websites_count(); + + if ( $license === $plus_websites ) { + $choices = 2; + } elseif ( + $license >= $this->pricing->get_single_websites_count() + && + $license < $plus_websites + ) { + $choices = 1; + } + + return sprintf( + // translators: %1$s = promotion name, %2$s =
    , %3$s = , %4$s = promotion discount percentage, %5$s = . + _n( + 'Take advantage of %1$s to speed up more websites:%2$s get a %3$s%4$s off%5$s for %3$supgrading your license to Plus or Infinite!%5$s', + 'Take advantage of %1$s to speed up more websites:%2$s get a %3$s%4$s off%5$s for %3$supgrading your license to Infinite!%5$s', + $choices, + 'rocket' + ), + $promo_name, + '
    ', + '', + $promo_discount . '%', + '' + ); + } + + /** + * Checks if current user can use the promotion + * + * @since 3.7.4 + * + * @return boolean + */ + private function can_use_promo() { + if ( rocket_get_constant( 'WP_ROCKET_WHITE_LABEL_ACCOUNT' ) ) { + return false; + } + + if ( ! $this->can_upgrade() ) { + return false; + } + + if ( $this->is_expired_soon() ) { + return false; + } + + return $this->pricing->is_promo_active(); + } + + /** + * Checks if the license expires in less than 30 days + * + * @return boolean + */ + private function is_expired_soon() { + $expiration_delay = $this->user->get_license_expiration() - time(); + + return 30 * DAY_IN_SECONDS > $expiration_delay; + } + + /** + * Checks if the current license can upgrade + * + * @return boolean + */ + private function can_upgrade() { + return ( + -1 !== $this->user->get_license_type() + && + ! $this->user->is_license_expired() + ); + } + + /** + * Gets the upgrade choices depending on the current license level + * + * @return array + */ + private function get_upgrade_choices() { + $choices = []; + $license = $this->user->get_license_type(); + $plus_websites = $this->pricing->get_plus_websites_count(); + + if ( $license === $plus_websites ) { + $choices['infinite'] = $this->get_upgrade_from_plus_to_infinite_data(); + } elseif ( + $license >= $this->pricing->get_single_websites_count() + && + $license < $plus_websites + ) { + $choices['plus'] = $this->get_upgrade_from_single_to_plus_data(); + $choices['infinite'] = $this->get_upgrade_from_single_to_infinite_data(); + } + + return $choices; + } + + /** + * Gets the data to upgrade from single to plus + * + * @return array + */ + private function get_upgrade_from_single_to_plus_data() { + $price = $this->pricing->get_single_to_plus_price(); + $data = [ + 'name' => 'Plus', + 'price' => $price, + 'websites' => $this->pricing->get_plus_websites_count(), + 'upgrade_url' => $this->user->get_upgrade_plus_url(), + ]; + + if ( $this->pricing->is_promo_active() ) { + $regular_price = $this->pricing->get_regular_single_to_plus_price(); + $data['saving'] = $regular_price - $price; + $data['regular_price'] = $regular_price; + } + + return $data; + } + + /** + * Gets the data to upgrade from single to infinite + * + * @return array + */ + private function get_upgrade_from_single_to_infinite_data() { + $price = $this->pricing->get_single_to_infinite_price(); + $data = [ + 'name' => 'Infinite', + 'price' => $price, + 'websites' => __( 'Unlimited', 'rocket' ), + 'upgrade_url' => $this->user->get_upgrade_infinite_url(), + ]; + + if ( $this->pricing->is_promo_active() ) { + $regular_price = $this->pricing->get_regular_single_to_infinite_price(); + $data['saving'] = $regular_price - $price; + $data['regular_price'] = $regular_price; + } + + return $data; + } + + /** + * Gets the data to upgrade from plus to infinite + * + * @return array + */ + private function get_upgrade_from_plus_to_infinite_data() { + $price = $this->pricing->get_plus_to_infinite_price(); + $data = [ + 'name' => 'Infinite', + 'price' => $price, + 'websites' => __( 'Unlimited', 'rocket' ), + 'upgrade_url' => $this->user->get_upgrade_infinite_url(), + ]; + + if ( $this->pricing->is_promo_active() ) { + $regular_price = $this->pricing->get_regular_plus_to_infinite_price(); + $data['saving'] = $regular_price - $price; + $data['regular_price'] = $regular_price; + } + + return $data; + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/License/views/promo-banner.php b/wp-content/plugins/wp-rocket/inc/Engine/License/views/promo-banner.php new file mode 100644 index 0000000..5fd0bda --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/License/views/promo-banner.php @@ -0,0 +1,37 @@ + +
    +
    +

    + + + + +

    +

    +
    +
    +

    +
      +
    • +
    • +
    • +
    • +
    + +
    + +
    diff --git a/wp-content/plugins/wp-rocket/inc/Engine/License/views/renewal-expired-banner.php b/wp-content/plugins/wp-rocket/inc/Engine/License/views/renewal-expired-banner.php new file mode 100644 index 0000000..8b18653 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/License/views/renewal-expired-banner.php @@ -0,0 +1,40 @@ + +
    +
    +

    +

    + , %2$s = . + esc_html__( 'Your website could be much faster if it could take advantage of our %1$snew features and enhancements.%2$s', 'rocket' ), + '', + '' + ); + ?> +

    +

    + , %2$s = discount percentage, %3$s = , %4$s = discount price. + esc_html__( 'Renew your license for 1 year and get an immediate %1$s%2$s off%3$s on your renewal rate: you will only pay %1$s%4$s%3$s!', 'rocket' ), + '', + esc_html( $data['discount_percent'] . '%' ), + '', + esc_html( '$' . $data['discount_price'] ) + ); + ?> +

    +
    +
    + +
    + +
    diff --git a/wp-content/plugins/wp-rocket/inc/Engine/License/views/renewal-soon-banner.php b/wp-content/plugins/wp-rocket/inc/Engine/License/views/renewal-soon-banner.php new file mode 100644 index 0000000..c9c5445 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/License/views/renewal-soon-banner.php @@ -0,0 +1,44 @@ + +
    +
      +
    • +
    • +
    • +
    • +
    +
    +

    + , %2$s = . + esc_html__( 'Your %1$sWP Rocket license is about to expire.%2$s', 'rocket' ), + '', + '' + ); + ?> +

    +

    + , %2$s = discount percentage, %3$s = , %4$s = discount price. + esc_html__( 'Renew with a %1$s%2$s discount%3$s before it is too late, you will only pay %1$s%4$s%3$s!', 'rocket' ), + '', + esc_html( $data['discount_percent'] . '%' ), + '', + esc_html( '$' . $data['discount_price'] ) + ); + ?> +

    +
    +
    + +
    +
    diff --git a/wp-content/plugins/wp-rocket/inc/Engine/License/views/upgrade-popin.php b/wp-content/plugins/wp-rocket/inc/Engine/License/views/upgrade-popin.php new file mode 100644 index 0000000..5a4ec99 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/License/views/upgrade-popin.php @@ -0,0 +1,61 @@ + +
    +
    +

    + +
    +
    +

    + ', '' ); + ?> +

    +

    + ', '' ); + ?> +

    +
    + +
    + +
    + +
    + +

    +
    $ + + $ + +
    +
    + +
    + + + +
    + +
    +
    +
    diff --git a/wp-content/plugins/wp-rocket/inc/Engine/License/views/upgrade-section.php b/wp-content/plugins/wp-rocket/inc/Engine/License/views/upgrade-section.php new file mode 100644 index 0000000..eaa56ed --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/License/views/upgrade-section.php @@ -0,0 +1,12 @@ + +

    + +

    diff --git a/wp-content/plugins/wp-rocket/inc/Engine/Media/Embeds/EmbedsSubscriber.php b/wp-content/plugins/wp-rocket/inc/Engine/Media/Embeds/EmbedsSubscriber.php new file mode 100644 index 0000000..27bc7a9 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/Media/Embeds/EmbedsSubscriber.php @@ -0,0 +1,214 @@ +options = $options; + } + + /** + * Return an array of events that this subscriber wants to listen to. + * + * @since 3.7 + * + * @return array + */ + public static function get_subscribed_events() { + return [ + 'init' => [ 'remove_wp_vars_and_hooks', 9999 ], + 'rest_endpoints' => 'remove_embed_endpoint', + 'oembed_response_data' => 'empty_oembed_response_data', + 'embed_oembed_discover' => 'return_false', + 'rewrite_rules_array' => 'remove_embeds_rewrite_rules', + 'enqueue_block_editor_assets' => 'enqueue_disable_embeds_script', + 'wp_default_scripts' => 'remove_wp_embed_dependency', + ]; + } + + /** + * Remove WP Query Vars and hooks relating to embeds. + * + * Replaces old architecture's rocket_disable_embeds_init(). + * + * @since 3.7 + * + * @return void + */ + public function remove_wp_vars_and_hooks() { + if ( ! $this->can_disable_embeds() ) { + return; + } + + global $wp; + + // Remove the embed query var. + $wp->public_query_vars = array_diff( + $wp->public_query_vars, + [ + 'embed', + ] + ); + + // Don't filter oEmbed results. + remove_filter( 'oembed_dataparse', 'wp_filter_oembed_result', 10 ); + + // Remove oEmbed discovery links. + remove_action( 'wp_head', 'wp_oembed_add_discovery_links' ); + + // Remove oEmbed-specific JavaScript from the front-end and back-end. + remove_action( 'wp_head', 'wp_oembed_add_host_js' ); + + // Remove filter of the oEmbed result before any HTTP requests are made. + remove_filter( 'pre_oembed_result', 'wp_filter_pre_oembed_result', 10 ); + } + + /** + * Remove all rewrite rules related to embeds. + * + * @since 3.7 Moved to new architecture. + * @since 2.10 + * + * @param array $rules WordPress rewrite rules. + * + * @return array Rewrite rules without embeds rules. + */ + public function remove_embeds_rewrite_rules( $rules ) { + if ( empty( $rules ) || ! $this->can_disable_embeds() ) { + return $rules; + } + + foreach ( $rules as $rule => $rewrite ) { + if ( false !== strpos( $rewrite, 'embed=true' ) ) { + unset( $rules[ $rule ] ); + } + } + + return $rules; + } + + /** + * Remove the oembed/1.0/embed REST route. + * + * @since 3.7 Moved to new architecture. + * @since 3.3.3 + * + * @param array $endpoints Registered REST API endpoints. + * + * @return array Filtered REST API endpoints. + */ + public function remove_embed_endpoint( $endpoints ) { + if ( ! $this->can_disable_embeds() ) { + return $endpoints; + } + + unset( $endpoints['/oembed/1.0/embed'] ); + + return $endpoints; + } + + /** + * Disables sending internal oEmbed response data in proxy endpoint. + * + * @since 3.7 Moved to new architecture. + * @since 3.3.3 + * + * @param array $data The response data. + * + * @return array Response data + */ + public function empty_oembed_response_data( $data ) { + if ( + ! rocket_get_constant( 'REST_REQUEST' ) + || + ! $this->can_disable_embeds() + ) { + return $data; + } + + return []; + } + + /** + * Enqueue JavaScript for the block editor. + * + * This is used to unregister the `core-embed/wordpress` block type. + * + * @since 3.7 Moved to new architecture. + * @since 3.3.3 + * + * @return void + */ + public function enqueue_disable_embeds_script() { + if ( ! $this->can_disable_embeds() ) { + return; + } + + wp_enqueue_script( + 'rocket-disable-embeds', + rocket_get_constant( WP_ROCKET_ASSETS_JS_URL ) . 'editor/editor.js', + [ + 'wp-edit-post', + 'wp-editor', + 'wp-dom', + ], + '1.0', + true + ); + } + + /** + * Remove wp-embed dependency of core packages. + * + * @since 3.7 Moved to new architecture. + * @since 3.3.3 + * + * @param \WP_Scripts $scripts WP_Scripts instance, passed by reference. + */ + public function remove_wp_embed_dependency( $scripts ) { + if ( ! $this->can_disable_embeds() ) { + return; + } + + if ( ! empty( $scripts->registered['wp-edit-post'] ) ) { + $scripts->registered['wp-edit-post']->deps = array_diff( + $scripts->registered['wp-edit-post']->deps, + [ 'wp-embed' ] + ); + } + } + + /** + * Check for embeds enabled. + * + * @since 3.7 + * + * @return bool + */ + private function can_disable_embeds() { + return ! rocket_bypass() && (bool) $this->options->get( 'embeds', 0 ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/Media/Emojis/EmojisSubscriber.php b/wp-content/plugins/wp-rocket/inc/Engine/Media/Emojis/EmojisSubscriber.php new file mode 100644 index 0000000..f551841 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/Media/Emojis/EmojisSubscriber.php @@ -0,0 +1,95 @@ +options = $options; + } + + /** + * Return an array of events that this subscriber wants to listen to. + * + * @since 3.7 + * + * @return array + */ + public static function get_subscribed_events() { + return [ + 'init' => 'disable_emoji', + 'tiny_mce_plugins' => 'disable_emoji_tinymce', + ]; + } + + /** + * Disable the emoji functionality to reduce then number of external HTTP requests. + * + * @since 3.7 Moved to new architecture. + * @since 2.7 + */ + public function disable_emoji() { + if ( ! $this->can_disable_emoji() ) { + return; + } + + remove_action( 'wp_head', 'print_emoji_detection_script', 7 ); + remove_action( 'admin_print_scripts', 'print_emoji_detection_script' ); + remove_filter( 'the_content_feed', 'wp_staticize_emoji' ); + remove_filter( 'comment_text_rss', 'wp_staticize_emoji' ); + remove_filter( 'wp_mail', 'wp_staticize_emoji_for_email' ); + add_filter( 'emoji_svg_url', '__return_false' ); + } + + /** + * Remove the tinymce emoji plugin. + * + * @since 3.7 Moved to new architecture. + * @since 2.7 + * + * @param array $plugins Plugins loaded for TinyMCE. + * + * @return array + */ + public function disable_emoji_tinymce( $plugins ) { + if ( ! $this->can_disable_emoji() ) { + return $plugins; + } + + if ( is_array( $plugins ) ) { + return array_diff( $plugins, [ 'wpemoji' ] ); + } + + return []; + } + + /** + * Check for emoji option enabled & not bypassed. + * + * @since 3.7 + * + * @return bool + */ + private function can_disable_emoji() { + return ! rocket_bypass() && (bool) $this->options->get( 'emoji', 0 ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/Media/LazyloadSubscriber.php b/wp-content/plugins/wp-rocket/inc/Engine/Media/LazyloadSubscriber.php new file mode 100644 index 0000000..a5082cc --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/Media/LazyloadSubscriber.php @@ -0,0 +1,546 @@ +options = $options; + $this->assets = $assets; + $this->image = $image; + $this->iframe = $iframe; + } + + /** + * Return an array of events that this subscriber wants to listen to. + * + * @since 3.3 + * + * @return array + */ + public static function get_subscribed_events() { + return [ + 'wp_footer' => [ + [ 'insert_lazyload_script', PHP_INT_MAX ], + [ 'insert_youtube_thumbnail_script', PHP_INT_MAX ], + ], + 'wp_head' => [ 'insert_nojs_style', PHP_INT_MAX ], + 'wp_enqueue_scripts' => [ 'insert_youtube_thumbnail_style', PHP_INT_MAX ], + 'rocket_buffer' => [ 'lazyload', 18 ], + 'rocket_lazyload_html' => 'lazyload_responsive', + 'init' => 'lazyload_smilies', + 'wp' => 'deactivate_lazyload_on_specific_posts', + 'wp_lazy_loading_enabled' => 'maybe_disable_core_lazyload', + ]; + } + + /** + * Inserts the lazyload script in the footer + * + * @since 3.3 + * + * @return void + */ + public function insert_lazyload_script() { + if ( ! $this->can_lazyload_images() && ! $this->can_lazyload_iframes() ) { + return; + } + + if ( ! $this->should_lazyload() ) { + return; + } + + /** + * Filters the use of the polyfill for intersectionObserver + * + * @since 3.3 + * @author Remy Perona + * + * @param bool $polyfill True to use the polyfill, false otherwise. + */ + $polyfill = (bool) apply_filters( 'rocket_lazyload_polyfill', false ); + + $script_args = [ + 'base_url' => rocket_get_constant( 'WP_ROCKET_ASSETS_JS_URL' ) . 'lazyload/', + 'version' => self::SCRIPT_VERSION, + 'polyfill' => $polyfill, + ]; + + $this->add_inline_script(); + $this->assets->insertLazyloadScript( $script_args ); + } + + /** + * Adds the inline lazyload script + * + * @since 3.6 + * + * @return void + */ + private function add_inline_script() { + $inline_script = $this->assets->getInlineLazyloadScript( $this->set_inline_script_args() ); + + if ( ! rocket_get_constant( 'SCRIPT_DEBUG' ) ) { + $inline_script = $this->minify_script( $inline_script ); + } + + echo ''; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Dynamic content is properly escaped in the view. + } + + /** + * Sets the arguments array for the inline lazyload script + * + * @since 3.6 + * + * @return array + */ + private function set_inline_script_args() { + /** + * Filters the threshold at which lazyload is triggered + * + * @since 1.2 + * @author Remy Perona + * + * @param int $threshold Threshold value. + */ + $threshold = (int) apply_filters( 'rocket_lazyload_threshold', 300 ); + + $inline_args = [ + 'threshold' => $threshold, + ]; + + /** + * Filters the use of native lazyload + * + * @since 3.4 + * @author Remy Perona + * + * @param bool $use_native True to use native lazyload, false otherwise. + */ + if ( (bool) apply_filters( 'rocket_use_native_lazyload', false ) ) { + $inline_args['options'] = [ + 'use_native' => 'true', + ]; + $inline_args['elements']['loading'] = '[loading=lazy]'; + } + + if ( $this->options->get( 'lazyload', 0 ) ) { + $inline_args['elements']['image'] = 'img[data-lazy-src]'; + $inline_args['elements']['background_image'] = '.rocket-lazyload'; + } + + if ( (bool) $this->options->get( 'lazyload_iframes', 0 ) ) { + $inline_args['elements']['iframe'] = 'iframe[data-lazy-src]'; + } + + /** + * Filters the arguments array for the lazyload script options + * + * @since 3.3 + * @author Remy Perona + * + * @param array $inline_args Arguments used for the lazyload script options. + */ + return (array) apply_filters( 'rocket_lazyload_script_args', $inline_args ); + } + + /** + * Minifies the inline script + * + * @since 3.6 + * + * @param string $script Inline script to minify. + * @return string + */ + private function minify_script( $script ) { + $minify = new JS( $script ); + + return $minify->minify(); + } + + /** + * Inserts the Youtube thumbnail script in the footer + * + * @since 3.3 + * + * @return void + */ + public function insert_youtube_thumbnail_script() { + if ( ! $this->options->get( 'lazyload_youtube' ) || ! $this->can_lazyload_iframes() ) { + return; + } + + if ( ! $this->should_lazyload() ) { + return; + } + + /** + * Filters the resolution of the YouTube thumbnail + * + * @since 1.4.8 + * @deprecated 3.3 + * @author Arun Basil Lal + * + * @param string $thumbnail_resolution The resolution of the thumbnail. Accepted values: default, mqdefault, hqdefault, sddefault, maxresdefault + */ + $thumbnail_resolution = apply_filters_deprecated( 'rocket_youtube_thumbnail_resolution', [ 'hqdefault' ], '3.3', 'rocket_lazyload_youtube_thumbnail_resolution' ); + + /** + * Filters the resolution of the YouTube thumbnail + * + * @since 1.4.8 + * @author Arun Basil Lal + * + * @param string $thumbnail_resolution The resolution of the thumbnail. Accepted values: default, mqdefault, hqdefault, sddefault, maxresdefault + */ + $thumbnail_resolution = apply_filters( 'rocket_lazyload_youtube_thumbnail_resolution', $thumbnail_resolution ); + + $this->assets->insertYoutubeThumbnailScript( + [ + 'resolution' => $thumbnail_resolution, + 'lazy_image' => (bool) $this->options->get( 'lazyload' ), + ] + ); + } + + /** + * Inserts the no JS CSS compatibility in the header + * + * @since 3.3 + * + * @return void + */ + public function insert_nojs_style() { + if ( ! $this->should_lazyload() ) { + return; + } + + if ( ! $this->can_lazyload_images() && ! $this->can_lazyload_iframes() ) { + return; + } + + if ( ! $this->options->get( 'lazyload' ) && ! $this->options->get( 'lazyload_iframes' ) ) { + return; + } + + $this->assets->insertNoJSCSS(); + } + + /** + * Inserts the Youtube thumbnail CSS in the header + * + * @since 3.3 + * + * @return void + */ + public function insert_youtube_thumbnail_style() { + if ( ! $this->options->get( 'lazyload_youtube' ) || ! $this->can_lazyload_iframes() ) { + return; + } + + if ( ! $this->should_lazyload() ) { + return; + } + + $this->assets->insertYoutubeThumbnailCSS( + [ + 'base_url' => WP_ROCKET_ASSETS_URL, + 'responsive_embeds' => current_theme_supports( 'responsive-embeds' ), + ] + ); + } + + /** + * Checks if lazyload should be applied + * + * @since 3.3 + * + * @return bool + */ + private function should_lazyload() { + if ( + rocket_get_constant( 'REST_REQUEST', false ) + || + rocket_get_constant( 'DONOTLAZYLOAD', false ) + || + rocket_get_constant( 'DONOTROCKETOPTIMIZE', false ) + ) { + return false; + } + + if ( + is_admin() + || + is_feed() + || + is_preview() + ) { + return false; + } + + if ( + is_search() + && + // This filter is documented in inc/classes/Buffer/class-tests.php. + ! (bool) apply_filters( 'rocket_cache_search', false ) + ) { + return false; + } + + // Exclude Page Builders editors. + $excluded_parameters = [ + 'fl_builder', + 'et_fb', + 'ct_builder', + ]; + + foreach ( $excluded_parameters as $excluded ) { + if ( isset( $_GET[ $excluded ] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended + return false; + } + } + + return true; + } + + /** + * Applies lazyload on the provided content + * + * @since 3.3 + * + * @param string $html HTML content. + * @return string + */ + public function lazyload( $html ) { + if ( ! $this->should_lazyload() ) { + return $html; + } + + $buffer = $this->ignore_scripts( $html ); + $buffer = $this->ignore_noscripts( $buffer ); + + if ( $this->can_lazyload_iframes() ) { + $args = [ + 'youtube' => $this->options->get( 'lazyload_youtube' ), + ]; + + $html = $this->iframe->lazyloadIframes( $html, $buffer, $args ); + } + + if ( $this->can_lazyload_images() ) { + $html = $this->image->lazyloadPictures( $html, $buffer ); + $html = $this->image->lazyloadImages( $html, $buffer ); + + /** + * Filters the application of lazyload on background images + * + * @since 3.3 + * + * @param bool $lazyload True to apply, false otherwise. + */ + if ( apply_filters( 'rocket_lazyload_background_images', true ) ) { + $html = $this->image->lazyloadBackgroundImages( $html, $buffer ); + } + } + + return $html; + } + + /** + * Applies lazyload on responsive images attributes srcset and sizes + * + * @since 3.3 + * + * @param string $html Image HTML. + * @return string + */ + public function lazyload_responsive( $html ) { + return $this->image->lazyloadResponsiveAttributes( $html ); + } + + /** + * Applies lazyload on WordPress smilies + * + * @since 3.3 + * + * @return void + */ + public function lazyload_smilies() { + if ( ! $this->should_lazyload() ) { + return; + } + + if ( ! $this->options->get( 'lazyload' ) ) { + return; + } + + $filters = [ + 'the_content' => 10, + 'the_excerpt' => 10, + 'comment_text' => 20, + ]; + + foreach ( $filters as $filter => $prio ) { + if ( ! has_filter( $filter ) ) { + continue; + } + + remove_filter( $filter, 'convert_smilies', $prio ); + add_filter( $filter, [ $this->image, 'convertSmilies' ], $prio ); + } + } + + /** + * Prevents lazyload if the option is unchecked on the WP Rocket options metabox for a post + * + * @since 3.3 + * + * @return void + */ + public function deactivate_lazyload_on_specific_posts() { + if ( is_rocket_post_excluded_option( 'lazyload' ) ) { + add_filter( 'do_rocket_lazyload', '__return_false' ); + } + + if ( is_rocket_post_excluded_option( 'lazyload_iframes' ) ) { + add_filter( 'do_rocket_lazyload_iframes', '__return_false' ); + } + } + + /** + * Disable WP core lazyload if our images lazyload is active + * + * @since 3.5 + * + * @param bool $value Current value for the enabling variable. + * @return bool + */ + public function maybe_disable_core_lazyload( $value ) { + if ( false === $value ) { + return $value; + } + + return ! (bool) $this->can_lazyload_images(); + } + + /** + * Remove inline scripts from the HTML to parse + * + * @since 3.3 + * + * @param string $html HTML content. + * @return string + */ + private function ignore_scripts( $html ) { + return preg_replace( '/]*)>(?:.+)?<\/script>/Umsi', '', $html ); + } + + /** + * Checks if we can lazyload images. + * + * @since 3.3 + * + * @return boolean + */ + private function can_lazyload_images() { + if ( ! $this->options->get( 'lazyload', 0 ) ) { + return false; + } + + /** + * Filters the lazyload application on images + * + * @since 2.0 + * @author Remy Perona + * + * @param bool $do_rocket_lazyload True to apply lazyload, false otherwise. + */ + return apply_filters( 'do_rocket_lazyload', true ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + } + + /** + * Checks if we can lazyload iframes + * + * @since 3.3 + * + * @return boolean + */ + private function can_lazyload_iframes() { + if ( ! $this->options->get( 'lazyload_iframes', 0 ) ) { + return false; + } + + /** + * Filters the lazyload application on iframes + * + * @since 2.0 + * @author Remy Perona + * + * @param bool $do_rocket_lazyload_iframes True to apply lazyload, false otherwise. + */ + return apply_filters( 'do_rocket_lazyload_iframes', true ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + } + + /** + * Remove noscript tags from the HTML to parse + * + * @since 3.3 + * + * @param string $html HTML content. + * @return string + */ + private function ignore_noscripts( $html ) { + return preg_replace( '##Umsi', '', $html ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/Media/ServiceProvider.php b/wp-content/plugins/wp-rocket/inc/Engine/Media/ServiceProvider.php new file mode 100644 index 0000000..ea417e8 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/Media/ServiceProvider.php @@ -0,0 +1,54 @@ +getContainer()->get( 'options' ); + + $this->getContainer()->add( 'lazyload_assets', 'WP_Rocket\Dependencies\RocketLazyload\Assets' ); + $this->getContainer()->add( 'lazyload_image', 'WP_Rocket\Dependencies\RocketLazyload\Image' ); + $this->getContainer()->add( 'lazyload_iframe', 'WP_Rocket\Dependencies\RocketLazyload\Iframe' ); + $this->getContainer()->share( 'lazyload_subscriber', 'WP_Rocket\Engine\Media\LazyloadSubscriber' ) + ->withArgument( $options ) + ->withArgument( $this->getContainer()->get( 'lazyload_assets' ) ) + ->withArgument( $this->getContainer()->get( 'lazyload_image' ) ) + ->withArgument( $this->getContainer()->get( 'lazyload_iframe' ) ); + $this->getContainer()->share( 'embeds_subscriber', 'WP_Rocket\Engine\Media\Embeds\EmbedsSubscriber' ) + ->withArgument( $options ); + $this->getContainer()->share( 'emojis_subscriber', 'WP_Rocket\Engine\Media\Emojis\EmojisSubscriber' ) + ->withArgument( $options ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/Optimization/AbstractOptimization.php b/wp-content/plugins/wp-rocket/inc/Engine/Optimization/AbstractOptimization.php new file mode 100644 index 0000000..ba78597 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/Optimization/AbstractOptimization.php @@ -0,0 +1,217 @@ +minify_base_path = rocket_get_constant( 'WP_ROCKET_MINIFY_CACHE_PATH' ) . $site_id; + $this->minify_base_url = rocket_get_constant( 'WP_ROCKET_MINIFY_CACHE_URL' ) . $site_id; + } + + /** + * Finds nodes matching the pattern in the HTML. + * + * @since 3.1 + * @author Remy Perona + * + * @param string $pattern Pattern to match. + * @param string $html HTML content. + * @return bool|array + */ + protected function find( $pattern, $html ) { + preg_match_all( '/' . $pattern . '/Umsi', $html, $matches, PREG_SET_ORDER ); + + if ( empty( $matches ) ) { + return false; + } + + return $matches; + } + + /** + * Determines if the file is external. + * + * @since 2.11 + * @author Remy Perona + * + * @param string $url URL of the file. + * @return bool True if external, false otherwise + */ + protected function is_external_file( $url ) { + $file = get_rocket_parse_url( $url ); + + if ( empty( $file['path'] ) ) { + return true; + } + + $wp_content = wp_parse_url( content_url() ); + + if ( empty( $wp_content['host'] ) || empty( $wp_content['path'] ) ) { + return true; + } + + /** + * Filters the allowed hosts for optimization + * + * @since 3.4 + * @author Remy Perona + * + * @param array $hosts Allowed hosts. + * @param array $zones Zones to check available hosts. + */ + $hosts = (array) apply_filters( 'rocket_cdn_hosts', [], $this->get_zones() ); + $hosts[] = $wp_content['host']; + $langs = get_rocket_i18n_uri(); + + // Get host for all langs. + foreach ( $langs as $lang ) { + $url_host = wp_parse_url( $lang, PHP_URL_HOST ); + + if ( ! isset( $url_host ) ) { + continue; + } + + $hosts[] = $url_host; + } + + $hosts = array_unique( $hosts ); + + if ( empty( $hosts ) ) { + return true; + } + + // URL has domain and domain is part of the internal domains. + if ( ! empty( $file['host'] ) ) { + foreach ( $hosts as $host ) { + if ( false !== strpos( $url, $host ) ) { + return false; + } + } + + return true; + } + + // URL has no domain and doesn't contain the WP_CONTENT path or wp-includes. + return ! preg_match( '#(' . $wp_content['path'] . '|wp-includes)#', $file['path'] ); + } + + /** + * Writes the content to a file + * + * @since 3.1 + * @author Remy Perona + * + * @param string $content Content to write. + * @param string $file Path to the file to write in. + * @return bool + */ + protected function write_file( $content, $file ) { + if ( rocket_direct_filesystem()->is_readable( $file ) ) { + return true; + } + + if ( ! rocket_mkdir_p( dirname( $file ) ) ) { + return false; + } + + if ( function_exists( 'gzencode' ) ) { + // This filter is documented in inc/classes/Buffer/class-cache.php. + $gzip_content = gzencode( $content, apply_filters( 'rocket_gzencode_level_compression', 6 ) ); + + if ( $gzip_content ) { + rocket_put_content( $file . '.gz', $gzip_content ); + } + } + + return rocket_put_content( $file, $content ); + } + + /** + * Gets the file path from an URL + * + * @since 3.1 + * @author Remy Perona + * + * @param string $url File URL. + * @return bool|string + */ + protected function get_file_path( $url ) { + return rocket_url_to_path( strtok( $url, '?' ), $this->get_zones() ); + } + + /** + * Gets content of a file + * + * @since 3.1 + * @author Remy Perona + * + * @param string $file File path. + * @return string + */ + protected function get_file_content( $file ) { + return rocket_direct_filesystem()->get_contents( $file ); + } + + /** + * Hides unwanted blocks from the HTML to be parsed for optimization + * + * @since 3.1.4 + * @author Remy Perona + * + * @param string $html HTML content. + * @return string + */ + protected function hide_comments( $html ) { + $html = preg_replace( '#.*?#is', '', $html ); + $html = preg_replace( '//Uis', '', $html ); + + return $html; + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/Optimization/AdminServiceProvider.php b/wp-content/plugins/wp-rocket/inc/Engine/Optimization/AdminServiceProvider.php new file mode 100644 index 0000000..171320d --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/Optimization/AdminServiceProvider.php @@ -0,0 +1,44 @@ +getContainer()->share( 'minify_css_admin_subscriber', 'WP_Rocket\Engine\Optimization\Minify\CSS\AdminSubscriber' ); + $this->getContainer()->add( 'google_fonts_settings', 'WP_Rocket\Engine\Optimization\GoogleFonts\Admin\Settings' ) + ->withArgument( $this->getContainer()->get( 'options' ) ) + ->withArgument( $this->getContainer()->get( 'beacon' ) ) + ->withArgument( $this->getContainer()->get( 'template_path' ) ); + $this->getContainer()->share( 'google_fonts_admin_subscriber', 'WP_Rocket\Engine\Optimization\GoogleFonts\Admin\Subscriber' ) + ->withArgument( $this->getContainer()->get( 'google_fonts_settings' ) ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/Optimization/AssetsLocalCache.php b/wp-content/plugins/wp-rocket/inc/Engine/Optimization/AssetsLocalCache.php new file mode 100644 index 0000000..b845bf8 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/Optimization/AssetsLocalCache.php @@ -0,0 +1,188 @@ +cache_path = "{$cache_path}3rd-party/"; + $this->filesystem = $filesystem; + } + + /** + * Get remote file contents. + * + * @param string $url Url of the file to get contents for. + * + * @return string Raw file contents. + */ + private function get_raw_content( $url ) { + $cache_key = md5( $url ); + + if ( ! isset( $this->url_cache[ $cache_key ] ) ) { + $this->url_cache[ $cache_key ] = wp_remote_retrieve_body( wp_remote_get( $url ) ); + } + + return $this->url_cache[ $cache_key ]; + } + + /** + * Gets content for the provided URL. + * Use the local cache file if it exists, else get it from the 3rd party URL and save it locally for future use. + * + * @since 3.1 + * + * @param string $url URL to get the content from. + * + * @return string + */ + public function get_content( $url ) { + $filepath = $this->get_filepath( $url ); + + if ( empty( $filepath ) ) { + return ''; + } + + if ( $this->filesystem->is_readable( $filepath ) ) { + return $this->filesystem->get_contents( $filepath ); + } + + $content = $this->get_raw_content( $url ); + + if ( empty( $content ) ) { + return ''; + } + + $this->write_file( $content, $filepath ); + + return $content; + } + + /** + * Gets the filepath of the local copy for the given URL + * + * @since 3.7 + * + * @param string $url URL to get filepath for. + * @return string + */ + public function get_filepath( $url ) { + $parts = wp_parse_url( $url ); + + if ( empty( $parts['path'] ) ) { + return ''; + } + + $filename = $parts['host'] . str_replace( '/', '-', $parts['path'] ); + + return $this->cache_path . $filename; + } + + /** + * Writes the content to a file + * + * @since 3.1 + * + * @param string $content Content to write. + * @param string $file Path to the file to write in. + * @return bool + */ + protected function write_file( $content, $file ) { + if ( $this->filesystem->is_readable( $file ) ) { + return true; + } + + if ( ! rocket_mkdir_p( dirname( $file ) ) ) { + return false; + } + + return rocket_put_content( $file, $content ); + } + + /** + * Check if this link HTML has integrity attribute or not? + * + * @since 3.7.5 + * + * @param string $asset Link HTML to be tested. + * + * @return array|false Matched array with integrityhashmethod, integrityhash keys. + */ + private function has_integrity( $asset ) { + if ( ! preg_match( '#\s*integrity\s*=[\'"](?.*)-(?.*)[\'"]#Ui', $asset, $integrity_matches ) ) { + return false; + } + + if ( ! isset( $integrity_matches['integrityhashmethod'], $integrity_matches['integrityhash'] ) ) { + return false; + } + + return $integrity_matches; + } + + /** + * Validate the integrity attribute if the content matches with the hashed integrity value. + * + * @param array $asset_matched the matched array which has 0, url keys. + * + * @return bool|string + */ + public function validate_integrity( $asset_matched ) { + $integrity_matches = $this->has_integrity( $asset_matched[0] ); + + if ( false === $integrity_matches ) { + return $asset_matched[0]; + } + + // validate the hash algorithm. + if ( ! in_array( $integrity_matches['integrityhashmethod'], hash_algos(), true ) ) { + return false; + } + + $content = $this->get_raw_content( $asset_matched['url'] ); + $content_hash = base64_encode( hash( $integrity_matches['integrityhashmethod'], $content, true ) );// phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_encode + + if ( $integrity_matches['integrityhash'] !== $content_hash ) { + return false; + } + + return str_replace( $integrity_matches[0], '', $asset_matched[0] ); + + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/Optimization/CSSTrait.php b/wp-content/plugins/wp-rocket/inc/Engine/Optimization/CSSTrait.php new file mode 100644 index 0000000..321e70b --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/Optimization/CSSTrait.php @@ -0,0 +1,220 @@ +move( $this->get_converter( $source, $target ), $content, $source ), $source, $target ); + } + + /** + * Get an instance of the Converter class + * + * @param string $source Source filepath. + * @param string $target Destination filepath. + * @return Converter + */ + protected function get_converter( $source, $target ) { + return new Converter( $source, $target ); + } + + /** + * Moving a css file should update all relative urls. + * Relative references (e.g. ../images/image.gif) in a certain css file, + * will have to be updated when a file is being saved at another location + * (e.g. ../../images/image.gif, if the new CSS file is 1 folder deeper). + * + * Method copied from WP_Rocket\Dependencies\Minify\CSS; + * + * @param ConverterInterface $converter Relative path converter. + * @param string $content The CSS content to update relative urls for. + * @param string $source The source path or URL for the CSS file. + * + * @return string + */ + protected function move( ConverterInterface $converter, $content, $source ) { + /* + * Relative path references will usually be enclosed by url(). @import + * is an exception, where url() is not necessary around the path (but is + * allowed). + * This *could* be 1 regular expression, where both regular expressions + * in this array are on different sides of a |. But we're using named + * patterns in both regexes, the same name on both regexes. This is only + * possible with a (?J) modifier, but that only works after a fairly + * recent PCRE version. That's why I'm doing 2 separate regular + * expressions & combining the matches after executing of both. + */ + $relative_regexes = [ + // url(xxx). + '/ + # open url() + url\( + + \s* + + # open path enclosure + (?P["\'])? + + # fetch path + (?P.+?) + + # close path enclosure + (?(quotes)(?P=quotes)) + + \s* + + # close url() + \) + + /ix', + + // @import "xxx" + '/ + # import statement + @import + + # whitespace + \s+ + + # we don\'t have to check for @import url(), because the + # condition above will already catch these + + # open path enclosure + (?P["\']) + + # fetch path + (?P.+?) + + # close path enclosure + (?P=quotes) + + /ix', + ]; + + // find all relative urls in css. + $matches = []; + foreach ( $relative_regexes as $relative_regex ) { + if ( preg_match_all( $relative_regex, $content, $regex_matches, PREG_SET_ORDER ) ) { + $matches = array_merge( $matches, $regex_matches ); + } + } + + $search = []; + $replace = []; + + // loop all urls. + foreach ( $matches as $match ) { + // determine if it's a url() or an @import match. + $type = ( strpos( $match[0], '@import' ) === 0 ? 'import' : 'url' ); + + $url = $match['path']; + if ( ! preg_match( '/^(data:|https?:|\\/)/', $url ) ) { + // attempting to interpret GET-params makes no sense, so let's discard them for awhile. + $params = strrchr( $url, '?' ); + $url = $params ? substr( $url, 0, -strlen( $params ) ) : $url; + + // fix relative url. + $url = filter_var( $source, FILTER_VALIDATE_URL ) ? dirname( $source ) . '/' . ltrim( $url, '/' ) : $converter->convert( $url ); + + // now that the path has been converted, re-apply GET-params. + $url .= $params; + } + + /* + * Urls with control characters above 0x7e should be quoted. + * According to Mozilla's parser, whitespace is only allowed at the + * end of unquoted urls. + * Urls with `)` (as could happen with data: uris) should also be + * quoted to avoid being confused for the url() closing parentheses. + * And urls with a # have also been reported to cause issues. + * Urls with quotes inside should also remain escaped. + * + * @see https://developer.mozilla.org/nl/docs/Web/CSS/url#The_url()_functional_notation + * @see https://hg.mozilla.org/mozilla-central/rev/14abca4e7378 + * @see https://github.com/matthiasmullie/minify/issues/193 + */ + $url = trim( $url ); + if ( preg_match( '/[\s\)\'"#\x{7f}-\x{9f}]/u', $url ) ) { + $url = $match['quotes'] . $url . $match['quotes']; + } + + // build replacement. + $search[] = $match[0]; + if ( 'url' === $type ) { + $replace[] = 'url(' . $url . ')'; + } elseif ( 'import' === $type ) { + $replace[] = '@import "' . $url . '"'; + } + } + + // replace urls. + return str_replace( $search, $replace, $content ); + } + + /** + * Applies font-display:swap to all font-family rules without a previously set font-display property. + * + * @since 3.7 + * + * @param string $css_file_content CSS file content to modify. + * + * @return string Modified CSS content. + */ + private function apply_font_display_swap( $css_file_content ) { + $css_file_content = (string) $css_file_content; + + return preg_replace_callback( + '/(?:@font-face)\s*{(?[^}]+)}/', + function ( $matches ) { + if ( false !== strpos( $matches['value'], 'font-display' ) ) { + return $matches[0]; + } + + $swap = "font-display:swap;{$matches['value']}"; + + return str_replace( $matches['value'], $swap, $matches[0] ); + }, + $css_file_content + ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/Optimization/CacheDynamicResource.php b/wp-content/plugins/wp-rocket/inc/Engine/Optimization/CacheDynamicResource.php new file mode 100644 index 0000000..fdcbddb --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/Optimization/CacheDynamicResource.php @@ -0,0 +1,309 @@ +options = $options; + $this->busting_path = "{$busting_path}{$site_id}/"; + $this->busting_url = "{$busting_url}{$site_id}/"; + + /** + * Filters files to exclude from static dynamic resources + * + * @since 2.9.3 + * @author Remy Perona + * + * @param array $excluded_files An array of filepath to exclude. + */ + $this->excluded_files = (array) apply_filters( 'rocket_exclude_static_dynamic_resources', [] ); + $this->excluded_files[] = '/wp-admin/admin-ajax.php'; + + foreach ( $this->excluded_files as $i => $excluded_file ) { + // Escape character for future use in regex pattern. + $this->excluded_files[ $i ] = str_replace( '#', '\#', $excluded_file ); + } + + $this->excluded_files = implode( '|', $this->excluded_files ); + } + + /** + * Return an array of events that this subscriber wants to listen to. + * + * @since 3.1 + * + * @return array + */ + public static function get_subscribed_events() { + return [ + 'style_loader_src' => [ 'cache_dynamic_resource', 16 ], + 'script_loader_src' => [ 'cache_dynamic_resource', 16 ], + ]; + } + + /** + * Filters the source dynamic php file to replace it with a static file + * + * @since 3.1 + * + * @param string $src source URL. + * + * @return string + */ + public function cache_dynamic_resource( $src ) { + if ( ! $this->is_allowed() ) { + return $src; + } + + switch ( current_filter() ) { + case 'script_loader_src': + $this->set_extension( 'js' ); + break; + case 'style_loader_src': + $this->set_extension( 'css' ); + break; + } + + if ( $this->is_excluded_file( $src ) ) { + return $src; + } + + return $this->replace_url( $src ); + } + + /** + * Replaces the dynamic URL by the static file URL + * + * @since 3.1 + * + * @param string $src Source URL. + * + * @return string + */ + public function replace_url( $src ) { + $path = ltrim( rocket_extract_url_component( $src, PHP_URL_PATH ), '/' ); + + /** + * Filters the dynamic resource cache filename + * + * @since 2.9 + * + * @param string $filename filename for the cache file + */ + $filename = apply_filters( 'rocket_dynamic_resource_cache_filename', preg_replace( '/\.php$/', '-' . $this->minify_key . '.' . $this->extension, $path ) ); + $filename = ltrim( rocket_realpath( rtrim( str_replace( [ ' ', '%20' ], '-', $filename ) ) ), '/' ); + $filepath = $this->busting_path . $filename; + + if ( ! rocket_direct_filesystem()->is_readable( $filepath ) ) { + $content = $this->get_url_content( $src ); + + if ( ! $content ) { + return $src; + } + + if ( 'css' === $this->extension ) { + $content = $this->rewrite_paths( $this->get_file_path( $src ), $filepath, $content ); + $content = $this->apply_font_display_swap( $content ); + } + + if ( ! $this->write_file( $content, $filepath ) ) { + return $src; + } + } + + return $this->get_cache_url( $filename ); + } + + /** + * Determines if we can optimize + * + * @since 3.1 + * + * @return bool + */ + public function is_allowed() { + global $pagenow; + + if ( rocket_bypass() ) { + return false; + } + + if ( rocket_get_constant( 'DONOTROCKETOPTIMIZE' ) ) { + return false; + } + + if ( is_user_logged_in() && ! $this->options->get( 'cache_logged_user' ) ) { + return false; + } + + if ( 'wp-login.php' === $pagenow ) { + return false; + } + + return true; + } + + /** + * Determines if the file is excluded from optimization + * + * @since 3.1 + * + * @param string $src source URL. + * + * @return bool + */ + public function is_excluded_file( $src ) { + $file = get_rocket_parse_url( $src ); + + if ( isset( $file['path'] ) && ! preg_match( '#\.php$#', $file['path'] ) ) { + return true; + } + + if ( $this->is_external_file( $src ) ) { + return true; + } + + if ( preg_match( '#^' . $this->excluded_files . '$#', $file['path'] ) ) { + return true; + } + + if ( ! isset( $file['query'] ) ) { + return false; + } + + $file['query'] = remove_query_arg( 'ver', $file['query'] ); + + return (bool) $file['query']; + } + + /** + * Sets the current file extension and minify key + * + * @since 3.1 + * + * @param string $extension Current file extension. + */ + public function set_extension( $extension ) { + $this->extension = $extension; + $this->minify_key = $this->options->get( 'minify_' . $this->extension . '_key' ); + } + + /** + * Gets the CDN zones. + * + * @since 3.1 + * + * @return array + */ + public function get_zones() { + return [ 'all', 'css_and_js', $this->extension ]; + } + + /** + * Gets the cache URL for the static file + * + * @since 3.1 + * + * @param string $filename Filename for the static file. + * + * @return string + */ + protected function get_cache_url( $filename ) { + $cache_url = $this->busting_url . $filename; + + switch ( $this->extension ) { + case 'css': + // This filter is documented in inc/classes/optimization/css/class-abstract-css-optimization.php. + $cache_url = apply_filters( 'rocket_css_url', $cache_url ); + break; + case 'js': + // This filter is documented in inc/classes/optimization/css/class-abstract-js-optimization.php. + $cache_url = apply_filters( 'rocket_js_url', $cache_url ); + break; + } + + return $cache_url; + } + + /** + * Gets content from an URL + * + * @since 3.1 + * + * @param string $url URL to get the content from. + * + * @return string|bool + */ + protected function get_url_content( $url ) { + $content = wp_remote_retrieve_body( wp_remote_get( $url ) ); + + if ( ! $content ) { + return false; + } + + return $content; + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/Optimization/DelayJS/Admin/Settings.php b/wp-content/plugins/wp-rocket/inc/Engine/Optimization/DelayJS/Admin/Settings.php new file mode 100644 index 0000000..be15bb7 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/Optimization/DelayJS/Admin/Settings.php @@ -0,0 +1,218 @@ +options = $options; + } + + /** + * Add the delay JS options to the WP Rocket options array + * + * @since 3.7 + * + * @param array $options WP Rocket options array. + * + * @return array + */ + public function add_options( $options ) { + $options = (array) $options; + + $options['delay_js'] = 1; + $options['delay_js_scripts'] = $this->defaults; + + return $options; + } + + /** + * Gets the data to populate the view for the restore defaults button + * + * @since 3.7 + * + * @return array + */ + public function get_button_data() { + return [ + 'type' => 'button', + 'action' => 'rocket_delay_js_restore_defaults', + 'attributes' => [ + 'label' => __( 'Restore Defaults', 'rocket' ), + 'attributes' => [ + 'class' => 'wpr-button wpr-button--icon wpr-button--purple wpr-icon-refresh', + ], + ], + ]; + } + + /** + * Sets the delay_js option to zero when updating to 3.7 + * + * @since 3.7 + * + * @param string $old_version Previous plugin version. + * + * @return void + */ + public function set_option_on_update( $old_version ) { + if ( version_compare( $old_version, '3.7', '>' ) ) { + return; + } + + $options = get_option( 'wp_rocket_settings', [] ); + + $options['delay_js'] = 0; + $options['delay_js_scripts'] = $this->defaults; + + update_option( 'wp_rocket_settings', $options ); + } + + /** + * Update delay_js options when updating to ver 3.7.4 + * + * @since 3.7.4 + * + * @param string $old_version Old plugin version. + * + * @return void + */ + public function option_update_3_7_4( $old_version ) { + if ( version_compare( $old_version, '3.7.4', '>' ) ) { + return; + } + + $options = get_option( 'wp_rocket_settings', [] ); + $delay_js_scripts = array_flip( $options['delay_js_scripts'] ); + + if ( isset( $delay_js_scripts['adsbygoogle'] ) ) { + $delay_js_scripts['adsbygoogle.js'] = $delay_js_scripts['adsbygoogle']; + + unset( $delay_js_scripts['adsbygoogle'] ); + } + + $options['delay_js_scripts'] = array_values( array_flip( $delay_js_scripts ) ); + + update_option( 'wp_rocket_settings', $options ); + } + + /** + * Update delay_js options when updating to ver 3.7.2. + * + * @since 3.7.2 + * + * @param string $old_version Old plugin version. + * + * @return void + */ + public function option_update_3_7_2( $old_version ) { + if ( version_compare( $old_version, '3.7.2', '>' ) ) { + return; + } + + $options = get_option( 'wp_rocket_settings', [] ); + + $delay_js_scripts = array_flip( $options['delay_js_scripts'] ); + + if ( + isset( $delay_js_scripts['fbq('] ) + && + ! isset( $delay_js_scripts['pixel-caffeine/build/frontend.js'] ) + ) { + $delay_js_scripts['pixel-caffeine/build/frontend.js'] = ''; + } + + if ( isset( $delay_js_scripts['google.com/recaptcha/api.js'] ) ) { + unset( $delay_js_scripts['google.com/recaptcha/api.js'] ); + } + + if ( isset( $delay_js_scripts['widget.trustpilot.com'] ) ) { + $delay_js_scripts['widget.trustpilot.com/bootstrap'] = $delay_js_scripts['widget.trustpilot.com']; + + unset( $delay_js_scripts['widget.trustpilot.com'] ); + } + + $options['delay_js_scripts'] = array_values( array_flip( $delay_js_scripts ) ); + + update_option( 'wp_rocket_settings', $options ); + } + + /** + * Restores the delay_js_scripts option to the default value + * + * @since 3.7 + * + * @return bool|string + */ + public function restore_defaults() { + if ( ! current_user_can( 'rocket_manage_options' ) ) { + return false; + } + + return implode( "\n", $this->defaults ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/Optimization/DelayJS/Admin/Subscriber.php b/wp-content/plugins/wp-rocket/inc/Engine/Optimization/DelayJS/Admin/Subscriber.php new file mode 100644 index 0000000..35f0815 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/Optimization/DelayJS/Admin/Subscriber.php @@ -0,0 +1,139 @@ +settings = $settings; + } + + /** + * Return an array of events that this subscriber listens to. + * + * @return array + */ + public static function get_subscribed_events() { + return [ + 'rocket_first_install_options' => 'add_options', + 'rocket_after_textarea_field_delay_js_scripts' => 'display_restore_defaults_button', + 'wp_rocket_upgrade' => [ + [ 'set_option_on_update', 13, 2 ], + [ 'option_update_3_7_2', 13, 2 ], + [ 'option_update_3_7_4', 13, 2 ], + ], + 'wp_ajax_rocket_restore_delay_js_defaults' => 'restore_defaults', + 'rocket_safe_mode_reset_options' => 'add_options', + ]; + } + + /** + * Add the delay JS options to the WP Rocket options array + * + * @since 3.7 + * + * @param array $options WP Rocket options array. + * + * @return array + */ + public function add_options( $options ) { + return $this->settings->add_options( $options ); + } + + /** + * Displays the restore defaults button under the textarea field + * + * @since 3.7 + * + * @return void + */ + public function display_restore_defaults_button() { + $data = $this->settings->get_button_data(); + + $this->render_action_button( + $data['type'], + $data['action'], + $data['attributes'] + ); + } + + /** + * Sets the delay_js option to zero when updating to 3.7 + * + * @since 3.7 + * + * @param string $new_version New plugin version. + * @param string $old_version Previous plugin version. + * + * @return void + */ + public function set_option_on_update( $new_version, $old_version ) { + $this->settings->set_option_on_update( $old_version ); + } + + /** + * Update the delay_js options when updating to 3.7.2. + * + * @since 3.7.2 + * + * @param string $new_version New plugin version. + * @param string $old_version Old plugin version. + * + * @return void + */ + public function option_update_3_7_2( $new_version, $old_version ) { + $this->settings->option_update_3_7_2( $old_version ); + } + + /** + * Update the delay_js options when updating to 3.7.4 + * + * @since 3.7.4 + * + * @param string $new_version New plugin version. + * @param string $old_version Old plugin version. + * + * @return void + */ + public function option_update_3_7_4( $new_version, $old_version ) { + $this->settings->option_update_3_7_4( $old_version ); + } + + /** + * AJAX callback to restore the default value for the delay JS scripts + * + * @since 3.7 + * + * @return void + */ + public function restore_defaults() { + check_ajax_referer( 'rocket-ajax', 'nonce', true ); + + $result = $this->settings->restore_defaults(); + + if ( false === $result ) { + wp_send_json_error(); + + return; + } + + wp_send_json_success( $result ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/Optimization/DelayJS/HTML.php b/wp-content/plugins/wp-rocket/inc/Engine/Optimization/DelayJS/HTML.php new file mode 100644 index 0000000..2645db0 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/Optimization/DelayJS/HTML.php @@ -0,0 +1,175 @@ +options = $options; + } + + /** + * Adjust HTML to have delay js structure. + * + * @param string $html Buffer html for the page. + * + * @return string + */ + public function delay_js( $html ) { + + if ( ! $this->is_allowed() ) { + return $html; + } + + $this->allowed_scripts = $this->prepare_allowed_scripts_regex(); + + if ( empty( $this->allowed_scripts ) ) { + return $html; + } + + return $this->parse( $html ); + } + + /** + * Checks if is allowed to Delay JS. + * + * @since 3.7 + * + * @return bool + */ + public function is_allowed() { + if ( rocket_bypass() ) { + return false; + } + + if ( rocket_get_constant( 'DONOTROCKETOPTIMIZE' ) ) { + return false; + } + + if ( is_rocket_post_excluded_option( 'delay_js' ) ) { + return false; + } + + return (bool) $this->options->get( 'delay_js', 0 ); + } + + /** + * Parse the html and add/remove attributes from specific scripts. + * + * @param string $html Buffer html for the page. + * + * @return string + */ + private function parse( $html ) { + $replaced_html = preg_replace_callback( '/[^>]*)?>(?.*)?<\/script>/Uims', [ $this, 'replace_scripts' ], $html ); + + if ( empty( $replaced_html ) ) { + return $html; + } + + return $replaced_html; + } + + /** + * Callback method for preg_replace_callback that is used to adjust attributes for specific scripts. + * + * @param array $matches Matches array for scripts regex. + * + * @return string + */ + public function replace_scripts( $matches ) { + if ( + empty( $this->allowed_scripts ) + || + ( + ! empty( $this->allowed_scripts ) + && + ! preg_match( '#(' . $this->allowed_scripts . ')#', $matches[0] ) + ) + ) { + return $matches[0]; + } + + $src = ''; + $matches['attr'] = trim( $matches['attr'] ); + + if ( ! empty( $matches['attr'] ) ) { + if ( preg_match( '/src=(["\'])(.*?)\1/', $matches['attr'], $src_matches ) ) { + $src = $src_matches[2]; + + // Remove the src attribute. + $matches['attr'] = str_replace( $src_matches[0], '', $matches['attr'] ); + } + } + + if ( empty( $src ) ) { + // Get the JS content. + if ( ! empty( $matches['content'] ) ) { + $src = 'data:text/javascript;base64,' . base64_encode( $matches['content'] );// phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_encode + } + } + + if ( empty( $src ) ) { + return $matches[0]; + } + + return ""; + } + + /** + * Prepare allowed scripts to be used as regex. + * + * @return string + */ + private function prepare_allowed_scripts_regex() { + $delay_js_scripts = $this->options->get( 'delay_js_scripts', [] ); + + /** + * Filters JS files to included into delay JS. + * + * @since 3.7 + * + * @param array $delay_js_scripts List of allowed JS files. + */ + $delay_js_scripts = (array) apply_filters( 'rocket_delay_js_scripts', $delay_js_scripts ); + + if ( empty( $delay_js_scripts ) ) { + return ''; + } + + foreach ( $delay_js_scripts as $i => $delay_js_script ) { + $delay_js_scripts[ $i ] = preg_quote( str_replace( '#', '\#', $delay_js_script ), '#' ); + } + + return implode( '|', $delay_js_scripts ); + + } + +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/Optimization/DelayJS/ServiceProvider.php b/wp-content/plugins/wp-rocket/inc/Engine/Optimization/DelayJS/ServiceProvider.php new file mode 100644 index 0000000..a9d0039 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/Optimization/DelayJS/ServiceProvider.php @@ -0,0 +1,39 @@ +getContainer()->add( 'delay_js_settings', 'WP_Rocket\Engine\Optimization\DelayJS\Admin\Settings' ) + ->withArgument( $this->getContainer()->get( 'options' ) ); + $this->getContainer()->share( 'delay_js_admin_subscriber', 'WP_Rocket\Engine\Optimization\DelayJS\Admin\Subscriber' ) + ->withArgument( $this->getContainer()->get( 'delay_js_settings' ) ) + ->withArgument( $this->getContainer()->get( 'template_path' ) . '/settings' ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/Optimization/DelayJS/Subscriber.php b/wp-content/plugins/wp-rocket/inc/Engine/Optimization/DelayJS/Subscriber.php new file mode 100644 index 0000000..6705d47 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/Optimization/DelayJS/Subscriber.php @@ -0,0 +1,130 @@ +html = $html; + $this->filesystem = $filesystem; + } + + /** + * Return an array of events that this subscriber wants to listen to. + * + * @since 3.7 + * + * @return array + */ + public static function get_subscribed_events() { + return [ + 'rocket_buffer' => [ + [ 'delay_js', 21 ], + ], + 'wp_enqueue_scripts' => 'add_delay_js_script', + ]; + } + + /** + * Using html buffer get scripts to be delayed and adjust their html. + * + * @param string $buffer_html Html for the page. + * + * @return string + */ + public function delay_js( $buffer_html ) { + return $this->html->delay_js( $buffer_html ); + } + + /** + * Adds the inline script to the footer when the option is enabled. + * + * @since 3.7 + * + * @return void + */ + public function add_delay_js_script() { + if ( $this->is_enqueued ) { + return; + } + if ( ! $this->html->is_allowed() ) { + return; + } + + $js_assets_path = rocket_get_constant( 'WP_ROCKET_PATH' ) . 'assets/js/'; + + if ( ! wp_script_is( 'rocket-browser-checker' ) ) { + $checker_filename = rocket_get_constant( 'SCRIPT_DEBUG' ) ? 'browser-checker.js' : 'browser-checker.min.js'; + + // phpcs:ignore WordPress.WP.EnqueuedResourceParameters.NoExplicitVersion + wp_register_script( + 'rocket-browser-checker', + '', + [], + '', + true + ); + wp_enqueue_script( 'rocket-browser-checker' ); + wp_add_inline_script( + 'rocket-browser-checker', + $this->filesystem->get_contents( "{$js_assets_path}{$checker_filename}" ) + ); + } + + // Register handle with no src to add the inline script after. + // phpcs:ignore WordPress.WP.EnqueuedResourceParameters.NoExplicitVersion + wp_register_script( + 'rocket-delay-js', + '', + [ + 'rocket-browser-checker', + ], + '', + true + ); + wp_enqueue_script( 'rocket-delay-js' ); + + $script_filename = rocket_get_constant( 'SCRIPT_DEBUG' ) ? 'lazyload-scripts.js' : 'lazyload-scripts.min.js'; + + wp_add_inline_script( + 'rocket-delay-js', + $this->filesystem->get_contents( "{$js_assets_path}{$script_filename}" ) + ); + + $this->is_enqueued = true; + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/Optimization/GoogleFonts/Admin/Settings.php b/wp-content/plugins/wp-rocket/inc/Engine/Optimization/GoogleFonts/Admin/Settings.php new file mode 100644 index 0000000..2d765a8 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/Optimization/GoogleFonts/Admin/Settings.php @@ -0,0 +1,85 @@ +options = $options; + $this->beacon = $beacon; + } + + /** + * Displays the Google Fonts Optimization section in the tools tab + * + * @since 3.7 + * + * @return void + */ + public function display_google_fonts_enabler() { + if ( ! current_user_can( 'rocket_manage_options' ) ) { + return; + } + + if ( ! apply_filters( 'pre_get_rocket_option_minify_google_fonts', true ) ) { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound + return; + } + + if ( $this->options->get( 'minify_google_fonts', 0 ) ) { + return; + } + + $data = [ + 'beacon' => $this->beacon->get_suggest( 'google_fonts' ), + ]; + + echo $this->generate( 'settings/enable-google-fonts', $data ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + } + + /** + * Callback method for the AJAX request to enable Google Fonts Optimization + * + * @since 3.7 + * + * @return void + */ + public function enable_google_fonts() { + check_ajax_referer( 'rocket-ajax', 'nonce', true ); + + if ( ! current_user_can( 'rocket_manage_options' ) ) { + wp_send_json_error(); + return; + } + + $this->options->set( 'minify_google_fonts', 1 ); + update_option( rocket_get_constant( 'WP_ROCKET_SLUG', 'wp_rocket_settings' ), $this->options->get_options() ); + + wp_send_json_success(); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/Optimization/GoogleFonts/Admin/Subscriber.php b/wp-content/plugins/wp-rocket/inc/Engine/Optimization/GoogleFonts/Admin/Subscriber.php new file mode 100644 index 0000000..9445730 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/Optimization/GoogleFonts/Admin/Subscriber.php @@ -0,0 +1,59 @@ +settings = $settings; + } + + /** + * Return an array of events that this subscriber wants to listen to. + * + * @since 3.7 + * + * @return array + */ + public static function get_subscribed_events() { + return [ + 'rocket_settings_tools_content' => 'display_google_fonts_enabler', + 'wp_ajax_rocket_enable_google_fonts' => 'enable_google_fonts', + ]; + } + + /** + * Displays the Google Fonts Optimization section in the tools tab + * + * @since 3.7 + * + * @return void + */ + public function display_google_fonts_enabler() { + $this->settings->display_google_fonts_enabler(); + } + + /** + * Callback method for the AJAX request to enable Google Fonts Optimization + * + * @since 3.7 + * + * @return void + */ + public function enable_google_fonts() { + $this->settings->enable_google_fonts(); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/Optimization/GoogleFonts/Combine.php b/wp-content/plugins/wp-rocket/inc/Engine/Optimization/GoogleFonts/Combine.php new file mode 100644 index 0000000..e510f47 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/Optimization/GoogleFonts/Combine.php @@ -0,0 +1,234 @@ +hide_comments( $html ); + $fonts = $this->find( '])+)?(?:\s+href\s*=\s*([\'"])(?(?:https?:)?\/\/fonts\.googleapis\.com\/css(?:(?!\1).)+)\1)(?:\s+[^>]*)?>', $html_nocomments ); + + if ( ! $fonts ) { + Logger::debug( 'No Google Fonts found.', [ 'GF combine process' ] ); + + return $html; + } + + $num_fonts = count( $fonts ); + + Logger::debug( + "Found {$num_fonts} Google Fonts.", + [ + 'GF combine process', + 'tags' => $fonts, + ] + ); + + if ( 1 === $num_fonts ) { + return str_replace( $fonts[0][0], $this->get_font_with_display( $fonts[0] ), $html ); + } + + $this->parse( $fonts ); + + if ( empty( $this->fonts ) ) { + Logger::debug( 'No Google Fonts left to combine.', [ 'GF combine process' ] ); + + return $html; + } + + $html = preg_replace( '@<\/title>@i', '$0' . $this->get_combine_tag(), $html, 1 ); + + foreach ( $fonts as $font ) { + $html = str_replace( $font[0], '', $html ); + } + + Logger::info( + 'Google Fonts successfully combined.', + [ + 'GF combine process', + 'url' => $this->fonts . $this->subsets, + ] + ); + + return $html; + } + + /** + * Finds links to Google fonts + * + * @since 3.1 + * @author Remy Perona + * + * @param string $pattern Pattern to search for. + * @param string $html HTML content. + * + * @return bool|array + */ + protected function find( $pattern, $html ) { + $result = preg_match_all( '/' . $pattern . '/Umsi', $html, $matches, PREG_SET_ORDER ); + + if ( empty( $result ) ) { + return false; + } + + return $matches; + } + + /** + * Parses found matches to extract fonts and subsets. + * + * @since 3.1 + * @author Remy Perona + * + * @param array $matches Found matches for the pattern. + * + * @return void + */ + protected function parse( array $matches ) { + $fonts_array = []; + $subsets_array = []; + foreach ( $matches as $match ) { + $url = html_entity_decode( $match[2] ); + $query = wp_parse_url( $url, PHP_URL_QUERY ); + if ( empty( $query ) ) { + return; + } + + $font = wp_parse_args( $query ); + if ( isset( $font['family'] ) ) { + $font_family = $font['family']; + $font_family = rtrim( $font_family, '%7C' ); + $font_family = rtrim( $font_family, '|' ); + // Add font to the collection. + $fonts_array[] = rawurlencode( htmlentities( $font_family ) ); + } + + // Add subset to collection. + if ( isset( $font['subset'] ) ) { + $subsets_array[] = rawurlencode( htmlentities( $font['subset'] ) ); + } + } + + // Concatenate fonts tag. + $this->subsets = ! empty( $subsets_array ) ? '&subset=' . implode( ',', array_filter( array_unique( $subsets_array ) ) ) : ''; + $this->fonts = ! empty( $fonts_array ) ? implode( '%7C', array_filter( array_unique( $fonts_array ) ) ) : ''; + } + + /** + * Returns the combined Google fonts link tag + * + * @since 3.3.5 Add support for the display parameter + * @since 3.1 + * @author Remy Perona + * + * @return string + */ + protected function get_combine_tag() { + $display = $this->get_font_display_value(); + + return sprintf( + '', // phpcs:ignore WordPress.WP.EnqueuedResources.NonEnqueuedStylesheet + esc_url( "https://fonts.googleapis.com/css?family={$this->fonts}{$this->subsets}&display={$display}" ) + ); + } + + /** + * Returns font with display value. + * + * @since 3.5.1 + * @author Soponar Cristina + * + * @param array $font Array containing font tag and matches. + * + * @return string Google Font tag with display param. + */ + protected function get_font_with_display( array $font ) { + $font_url = html_entity_decode( $font['url'] ); + $query = wp_parse_url( $font_url, PHP_URL_QUERY ); + + if ( empty( $query ) ) { + return $font[0]; + } + + $display = $this->get_font_display_value(); + $parsed_font = wp_parse_args( $query ); + + $font_url = ! empty( $parsed_font['display'] ) + ? str_replace( "&display={$parsed_font['display']}", "&display={$display}", $font_url ) + : "{$font_url}&display={$display}"; + + return str_replace( $font['url'], esc_url( $font_url ), $font[0] ); + } + + /** + * Get the font display value. + * + * @since 3.5.1 + * + * @return string font display value. + */ + protected function get_font_display_value() { + $allowed_values = [ + 'auto' => 1, + 'block' => 1, + 'swap' => 1, + 'fallback' => 1, + 'optional' => 1, + ]; + + /** + * Filters the combined Google Fonts display parameter value + * + * @since 3.3.5 + * @author Remy Perona + * + * @param string $display Display value. Can be either auto, block, swap, fallback or optional. + */ + $display = apply_filters( 'rocket_combined_google_fonts_display', 'swap' ); + if ( ! is_string( $display ) ) { + return 'swap'; + } + + return isset( $allowed_values[ $display ] ) ? $display : 'swap'; + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/Optimization/GoogleFonts/Subscriber.php b/wp-content/plugins/wp-rocket/inc/Engine/Optimization/GoogleFonts/Subscriber.php new file mode 100644 index 0000000..743dee3 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/Optimization/GoogleFonts/Subscriber.php @@ -0,0 +1,106 @@ +combine = $combine; + $this->options = $options; + } + + /** + * Return an array of events that this subscriber wants to listen to. + * + * @since 3.1 + * + * @return array + */ + public static function get_subscribed_events() { + return [ + 'wp_resource_hints' => [ 'preconnect', 10, 2 ], + 'rocket_buffer' => [ 'process', 18 ], + ]; + } + + /** + * Adds google fonts URL to preconnect + * + * @since 3.5.3 + * + * @param array $urls URLs to print for resource hints. + * @param string $relation_type The relation type the URLs are printed for, e.g. 'preconnect' or 'prerender'. + * @return array + */ + public function preconnect( array $urls, $relation_type ) { + if ( ! $this->is_allowed() ) { + return $urls; + } + + if ( 'preconnect' !== $relation_type ) { + return $urls; + } + + $urls[] = [ + 'href' => 'https://fonts.gstatic.com', + 1 => 'crossorigin', + ]; + + return $urls; + } + + /** + * Processes the HTML to combine found Google fonts + * + * @since 3.1 + * + * @param string $html HTML content. + * @return string + */ + public function process( $html ) { + if ( ! $this->is_allowed() ) { + return $html; + } + + return $this->combine->optimize( $html ); + } + + /** + * Checks if files can combine found Google fonts. + * + * @since 3.1 + */ + protected function is_allowed() { + if ( rocket_bypass() ) { + return false; + } + + return (bool) $this->options->get( 'minify_google_fonts', 0 ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/Optimization/IEConditionalSubscriber.php b/wp-content/plugins/wp-rocket/inc/Engine/Optimization/IEConditionalSubscriber.php new file mode 100644 index 0000000..55f2bf7 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/Optimization/IEConditionalSubscriber.php @@ -0,0 +1,140 @@ +.*?/is'; + + /** + * HTML IE conditional template tag. + * + * @since 3.6.2 + * + * @var string + */ + const WP_ROCKET_CONDITIONAL = ''; + + /** + * Return an array of events that this subscriber listens to. + * + * @since 3.1 + * + * @return array + */ + public static function get_subscribed_events() { + return [ + 'rocket_buffer' => [ + [ 'extract_ie_conditionals', 1 ], + [ 'inject_ie_conditionals', 34 ], + ], + ]; + } + + /** + * Extracts IE conditionals tags and replace them with placeholders. + * + * @since 3.1 + * + * @param string $html HTML content. + * + * @return string + */ + public function extract_ie_conditionals( $html ) { + preg_match_all( self::IE_PATTERN, $html, $conditionals_match ); + + if ( ! $conditionals_match ) { + return $html; + } + + foreach ( $conditionals_match[0] as $conditional ) { + $this->conditionals[] = $conditional; + } + + return preg_replace( self::IE_PATTERN, self::WP_ROCKET_CONDITIONAL, $html ); + } + + /** + * Replaces WP Rocket placeholders with IE conditional tags. + * + * @since 3.1 + * + * @param string $html HTML content. + * + * @return string + */ + public function inject_ie_conditionals( $html ) { + if ( ! $this->has_conditional_tag( $html ) ) { + return $html; + } + + foreach ( $this->conditionals as $conditional ) { + // Prevent scripts containing things like "\\s" to be striped of a backslash when put back in content. + if ( preg_match( '@^(?)?\s*]*?>))\s*(?.*?)\s*(?\s*(?:)$@is', $conditional, $matches ) ) { + $conditional = $matches['opening'] . preg_replace( '#(?replace_conditional_tag( $html, $conditional ); + } + + return $html; + } + + /** + * Checks if the template tag for the IE conditional exists in the given HTML string. + * + * @since 3.6.2 + * + * @param string $html HTML content. + * + * @return bool true if at least one exists; else false. + */ + private function has_conditional_tag( $html ) { + return ( false !== strpos( $html, self::WP_ROCKET_CONDITIONAL ) ); + } + + /** + * Replaces the template tag with the original IE conditional HTML. + * + * @since 3.6.2 + * + * @param string $html HTML content. + * @param string $original Original IE conditional HTML. + * + * @return string + */ + private function replace_conditional_tag( $html, $original ) { + $template_tag_position = strpos( $html, self::WP_ROCKET_CONDITIONAL ); + + return substr_replace( + $html, + $original, + $template_tag_position, + strlen( self::WP_ROCKET_CONDITIONAL ) + ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/Optimization/Minify/AbstractMinifySubscriber.php b/wp-content/plugins/wp-rocket/inc/Engine/Optimization/Minify/AbstractMinifySubscriber.php new file mode 100644 index 0000000..7aa0ef8 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/Optimization/Minify/AbstractMinifySubscriber.php @@ -0,0 +1,133 @@ +options = $options; + $this->filesystem = $filesystem; + } + + /** + * Sets the type of processor to use + * + * @since 3.1 + * + * @param ProcessorInterface $processor Processor instance. + * @return void + */ + protected function set_processor_type( ProcessorInterface $processor ) { + $this->processor = $processor; + } + + /** + * Processes the HTML to perform an optimization and return the new content + * + * @since 3.1 + * + * @param string $html HTML content. + * @return string + */ + abstract public function process( $html ); + + /** + * Checks if files can be optimized + * + * @since 3.1 + */ + abstract protected function is_allowed(); + + /** + * Fix issue with SSL and minification + * + * @since 2.3 + * + * @param string $url An url to filter to set the scheme to https if needed. + * @return string + */ + public function fix_ssl_minify( $url ) { + if ( ! is_ssl() ) { + return $url; + } + + if ( 0 === strpos( $url, 'https://' ) ) { + return $url; + } + + // This filter is documented in inc/Engine/Admin/Settings/Settings.php. + if ( in_array( wp_parse_url( $url, PHP_URL_HOST ), apply_filters( 'rocket_cdn_hosts', [], ( $this->get_zones() ) ), true ) ) { + return $url; + } + + return str_replace( 'http://', 'https://', $url ); + } + + /** + * Compatibility with multilingual plugins & multidomain configuration + * + * @since 2.6.13 Regression Fix: Apply CDN on minified CSS and JS files by checking the CNAME host + * @since 2.6.8 + * + * @param string $url Minified file URL. + * @return string Updated minified file URL + */ + public function i18n_multidomain_url( $url ) { + if ( ! rocket_has_i18n() ) { + return $url; + } + + $url_host = wp_parse_url( $url, PHP_URL_HOST ); + + if ( isset( $_SERVER['HTTP_HOST'] ) && $url_host === $_SERVER['HTTP_HOST'] ) { + return $url; + } + + if ( ! in_array( $_SERVER['HTTP_HOST'], get_rocket_i18n_host(), true ) ) { + return $url; + } + + // This filter is documented in inc/Engine/Admin/Settings/Settings.php. + $cdn_hosts = apply_filters( 'rocket_cdn_hosts', [], ( $this->get_zones() ) ); + + if ( in_array( $url_host, $cdn_hosts, true ) ) { + return $url; + } + + return str_replace( $url_host, sanitize_text_field( $_SERVER['HTTP_HOST'] ), $url ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.MissingUnslash + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/Optimization/Minify/CSS/AbstractCSSOptimization.php b/wp-content/plugins/wp-rocket/inc/Engine/Optimization/Minify/CSS/AbstractCSSOptimization.php new file mode 100644 index 0000000..354c01f --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/Optimization/Minify/CSS/AbstractCSSOptimization.php @@ -0,0 +1,148 @@ +options = $options; + $this->local_cache = $local_cache; + $this->minify_key = $this->options->get( 'minify_css_key', create_rocket_uniqid() ); + $this->excluded_files = $this->get_excluded_files(); + $this->init_base_path_and_url(); + } + + /** + * Get all files to exclude from minification/concatenation. + * + * @since 2.11 + * + * @return string + */ + protected function get_excluded_files() { + $excluded_files = $this->options->get( 'exclude_css', [] ); + + /** + * Filters CSS files to exclude from minification/concatenation. + * + * @since 2.6 + * + * @param array $excluded_files List of excluded CSS files. + */ + $excluded_files = (array) apply_filters( 'rocket_exclude_css', $excluded_files ); + + if ( empty( $excluded_files ) ) { + return ''; + } + + foreach ( $excluded_files as $i => $excluded_file ) { + $excluded_files[ $i ] = str_replace( '#', '\#', $excluded_file ); + } + + return implode( '|', $excluded_files ); + } + + /** + * Returns the CDN zones. + * + * @since 3.1 + * + * @return array + */ + public function get_zones() { + return [ 'all', 'css_and_js', self::FILE_TYPE ]; + } + + /** + * Gets the minify URL + * + * @since 3.1 + * + * @param string $filename Minified filename. + * @param string $original_url Original URL for this file. Optional. + * + * @return string + */ + protected function get_minify_url( $filename, $original_url = '' ) { + $minify_url = $this->minify_base_url . $filename; + + /** + * Filters CSS file URL with CDN hostname + * + * @since 2.1 + * + * @param string $minify_url Minified file URL. + * @param string $original_url Original URL for this file. + */ + return apply_filters( 'rocket_css_url', $minify_url, $original_url ); + } + + /** + * Determines if it is a file excluded from minification + * + * @since 2.11 + * + * @param array $tag Tag corresponding to a CSS file. + * + * @return bool True if it is a file excluded, false otherwise + */ + protected function is_minify_excluded_file( array $tag ) { + if ( ! isset( $tag[0], $tag['url'] ) ) { + return true; + } + + // File should not be minified. + if ( false !== strpos( $tag[0], 'data-minify=' ) || false !== strpos( $tag[0], 'data-no-minify=' ) ) { + return true; + } + + if ( false !== strpos( $tag[0], 'media=' ) && ! preg_match( '/media=["\'](?:\s*|[^"\']*?\b(all|screen)\b[^"\']*?)["\']/i', $tag[0] ) ) { + return true; + } + + if ( false !== strpos( $tag[0], 'only screen and' ) ) { + return true; + } + + $file_path = wp_parse_url( $tag['url'], PHP_URL_PATH ); + + // File extension is not css. + if ( pathinfo( $file_path, PATHINFO_EXTENSION ) !== self::FILE_TYPE ) { + return true; + } + + if ( ! empty( $this->excluded_files ) ) { + // File is excluded from minification/concatenation. + if ( preg_match( '#^(' . $this->excluded_files . ')$#', $file_path ) ) { + return true; + } + } + + return false; + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/Optimization/Minify/CSS/AdminSubscriber.php b/wp-content/plugins/wp-rocket/inc/Engine/Optimization/Minify/CSS/AdminSubscriber.php new file mode 100644 index 0000000..eab9e52 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/Optimization/Minify/CSS/AdminSubscriber.php @@ -0,0 +1,125 @@ + [ 'clean_minify', 10, 2 ], + "pre_update_option_{$slug}" => [ 'regenerate_minify_css_key', 10, 2 ], + ]; + } + + /** + * Clean minify CSS files when options change. + * + * @since 3.5.4 + * + * @param array $old An array of previous settings. + * @param array $new An array of submitted settings. + */ + public function clean_minify( $old, $new ) { + if ( ! is_array( $old ) || ! is_array( $new ) ) { + return; + } + + if ( ! $this->maybe_minify_regenerate( $new, $old ) ) { + return; + } + // Purge all minify cache files. + rocket_clean_minify( 'css' ); + } + + /** + * Regenerate the minify key if CSS files have been modified. + * + * @since 3.5.4 + * + * @param array $new An array of submitted settings. + * @param array $old An array of previous settings. + * + * @return array Updates 'minify_css_key' setting when regenerated; else, original submitted settings. + */ + public function regenerate_minify_css_key( $new, $old ) { + if ( ! is_array( $old ) || ! is_array( $new ) ) { + return $new; + } + + if ( ! $this->maybe_minify_regenerate( $new, $old ) ) { + return $new; + } + + $new['minify_css_key'] = create_rocket_uniqid(); + + return $new; + } + + /** + * Checks minify CSS condition when options change. + * + * @since 3.5.4 + * + * @param array $new An array of submitted settings. + * @param array $old An array of previous settings. + * + * @return bool true when should regenerate; else false. + */ + protected function maybe_minify_regenerate( array $new, array $old ) { + $settings_to_check = [ + 'minify_css', + 'exclude_css', + 'cdn', + ]; + + foreach ( $settings_to_check as $setting ) { + if ( $this->did_setting_change( $setting, $new, $old ) ) { + return true; + } + } + + return ( + array_key_exists( 'cdn', $new ) + && + 1 === (int) $new['cdn'] + && + $this->did_setting_change( 'cdn_cnames', $new, $old ) + ); + } + + /** + * Checks if the given setting's value changed. + * + * @since 3.5.4 + * + * @param string $setting The settings's value to check in the old and new values. + * @param array $new An array of submitted settings. + * @param array $old An array of previous settings. + * + * @return bool + */ + protected function did_setting_change( $setting, array $new, array $old ) { + return ( + array_key_exists( $setting, $old ) + && + array_key_exists( $setting, $new ) + && + $old[ $setting ] !== $new[ $setting ] + ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/Optimization/Minify/CSS/Combine.php b/wp-content/plugins/wp-rocket/inc/Engine/Optimization/Minify/CSS/Combine.php new file mode 100644 index 0000000..aec8166 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/Optimization/Minify/CSS/Combine.php @@ -0,0 +1,322 @@ +hide_comments( $html ); + $styles = $this->find( ']+[\s"\'])?href\s*=\s*[\'"]\s*?(?[^\'"]+\.css(?:\?[^\'"]*)?)\s*?[\'"]([^>]+)?\/?>', $html_nocomments ); + + if ( ! $styles ) { + Logger::debug( 'No `` tags found.', [ 'css combine process' ] ); + return $html; + } + + Logger::debug( + 'Found ' . count( $styles ) . ' `` tag(s).', + [ + 'css combine process', + 'tags' => $styles, + ] + ); + + $styles = $this->parse( $styles ); + + if ( empty( $styles ) ) { + Logger::debug( 'No `` tags to optimize.', [ 'css combine process' ] ); + return $html; + } + + Logger::debug( + count( $styles ) . ' `` tag(s) remaining.', + [ + 'css combine process', + 'tags' => $styles, + ] + ); + + if ( ! $this->combine() ) { + Logger::error( 'CSS combine process failed.', [ 'css combine process' ] ); + return $html; + } + + return $this->insert_combined_css( $html ); + } + + /** + * Parses all found styles tag to keep only the ones to combine + * + * @since 3.7 + * + * @param array $styles Array of matched styles. + * @return array + */ + private function parse( array $styles ) { + foreach ( $styles as $key => $style ) { + if ( $this->is_external_file( $style['url'] ) ) { + if ( $this->is_excluded_external( $style['url'] ) ) { + unset( $styles[ $key ] ); + + continue; + } + + $this->styles[ $style['url'] ] = [ + 'type' => 'external', + 'tag' => $style[0], + 'url' => rocket_add_url_protocol( strtok( $style['url'], '?' ) ), + ]; + + continue; + } + + if ( $this->is_minify_excluded_file( $style ) ) { + Logger::debug( + 'Style is excluded.', + [ + 'css combine process', + 'tag' => $style[0], + ] + ); + + unset( $styles[ $key ] ); + + continue; + } + + $this->styles[ $style['url'] ] = [ + 'type' => 'internal', + 'tag' => $style[0], + 'url' => strtok( $style['url'], '?' ), + ]; + } + + return $styles; + } + + /** + * Checks if the provided external URL is excluded from combine + * + * @since 3.7 + * + * @param string $url External URL to check. + * @return boolean + */ + private function is_excluded_external( $url ) { + foreach ( $this->get_excluded_externals() as $excluded ) { + if ( false !== strpos( $url, $excluded ) ) { + Logger::debug( + 'Style is external.', + [ + 'css combine process', + 'url' => $url, + ] + ); + return true; + } + } + + return false; + } + + /** + * Gets external URLs excluded from combine + * + * @since 3.7 + * + * @return array + */ + private function get_excluded_externals() { + /** + * Filters CSS external URLs to exclude from the combine process + * + * @since 3.7 + * + * @param array $pattern Patterns to match. + */ + $excluded_externals = (array) apply_filters( 'rocket_combine_css_excluded_external', [] ); + + return array_merge( $excluded_externals, $this->options->get( 'exclude_css', [] ) ); + } + + /** + * Combine the CSS content into one file and save it + * + * @since 3.1 + * + * @return bool True if successful, false otherwise + */ + protected function combine() { + if ( empty( $this->styles ) ) { + return false; + } + + $file_hash = implode( ',', array_column( $this->styles, 'url' ) ); + $this->filename = md5( $file_hash . $this->minify_key ) . '.css'; + + $combined_file = $this->minify_base_path . $this->filename; + + if ( rocket_direct_filesystem()->exists( $combined_file ) ) { + Logger::debug( + 'Combined CSS file already exists.', + [ + 'css combine process', + 'path' => $combined_file, + ] + ); + + return true; + } + + $combined_content = $this->get_content( $combined_file ); + $combined_content = $this->apply_font_display_swap( $combined_content ); + + if ( empty( $combined_content ) ) { + Logger::error( + 'No combined content.', + [ + 'css combine process', + 'path' => $combined_file, + ] + ); + return false; + } + + if ( ! $this->write_file( $combined_content, $combined_file ) ) { + Logger::error( + 'Combined CSS file could not be created.', + [ + 'css combine process', + 'path' => $combined_file, + ] + ); + return false; + } + + Logger::debug( + 'Combined CSS file successfully created.', + [ + 'css combine process', + 'path' => $combined_file, + ] + ); + + return true; + } + + /** + * Insert the combined CSS file and remove the original CSS tags + * + * The combined CSS file is added after the closing tag, and the replacement occurs only once. The original CSS tags are then removed from the HTML. + * + * @since 3.3.3 + * + * @param string $html HTML content. + * @return string + */ + protected function insert_combined_css( $html ) { + foreach ( $this->styles as $style ) { + $html = str_replace( $style['tag'], '', $html ); + } + + $minify_url = $this->get_minify_url( $this->filename ); + + Logger::info( + 'Combined CSS file successfully added.', + [ + 'css combine process', + 'url' => $minify_url, + ] + ); + + // phpcs:ignore WordPress.WP.EnqueuedResources.NonEnqueuedStylesheet + return preg_replace( '/<\/title>/i', '$0', $html, 1 ); + } + + /** + * Gathers the content from all styles to combine & minify it if needed + * + * @since 3.7 + * + * @param string $combined_file Absolute path to the combined file. + * @return string + */ + private function get_content( $combined_file ) { + $content = ''; + + foreach ( $this->styles as $key => $style ) { + if ( 'internal' === $style['type'] ) { + $filepath = $this->get_file_path( $style['url'] ); + $file_content = $this->get_file_content( $filepath ); + $file_content = $this->rewrite_paths( $filepath, $combined_file, $file_content ); + } elseif ( 'external' === $style['type'] ) { + $file_content = $this->local_cache->get_content( $style['url'] ); + $file_content = $this->rewrite_paths( $style['url'], $combined_file, $file_content ); + } + + if ( empty( $file_content ) ) { + unset( $this->styles[ $key ] ); + + continue; + } + + $content .= $file_content; + } + + $content = $this->minify( $content ); + + if ( empty( $content ) ) { + Logger::debug( 'No CSS content.', [ 'css combine process' ] ); + } + + return $content; + } + + /** + * Minifies the content + * + * @since 3.1 + * + * @param string $content Content to minify. + * @return string + */ + protected function minify( $content ) { + $minifier = new MinifyCSS( $content ); + + return $minifier->minify(); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/Optimization/Minify/CSS/Minify.php b/wp-content/plugins/wp-rocket/inc/Engine/Optimization/Minify/CSS/Minify.php new file mode 100644 index 0000000..ebd9ebe --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/Optimization/Minify/CSS/Minify.php @@ -0,0 +1,331 @@ +get_styles( $html ); + + if ( empty( $styles ) ) { + return $html; + } + + foreach ( $styles as $style ) { + if ( $this->is_minify_excluded_file( $style ) ) { + Logger::debug( + 'Style is excluded.', + [ + 'css minification process', + 'tag' => $style[0], + ] + ); + + continue; + } + + $integrity_validated = $this->local_cache->validate_integrity( $style ); + + if ( false === $integrity_validated ) { + Logger::debug( + 'Style integrity attribute not valid.', + [ + 'css minification process', + 'tag' => $style[0], + ] + ); + + continue; + } + + $style['final'] = $integrity_validated; + + $minify_url = $this->replace_url( strtok( $style['url'], '?' ) ); + + if ( ! $minify_url ) { + Logger::error( + 'Style minification failed.', + [ + 'css minification process', + 'tag' => $style[0], + ] + ); + continue; + } + + $html = $this->replace_style( $style, $minify_url, $html ); + } + + return $html; + } + + /** + * Get all style tags from HTML. + * + * @param string $html HTML content. + * @return array Array with style tags, empty array if no style tags found. + */ + protected function get_styles( $html ) { + $html_nocomments = $this->hide_comments( $html ); + $styles = $this->find( ']+[\s"\'])?href\s*=\s*[\'"]\s*?(?[^\'"]+\.css(?:\?[^\'"]*)?)\s*?[\'"]([^>]+)?\/?>', $html_nocomments ); + + if ( ! $styles ) { + Logger::debug( 'No `` tags found.', [ 'css minification process' ] ); + return []; + } + + Logger::debug( + 'Found ' . count( $styles ) . ' `` tags.', + [ + 'css minification process', + 'tags' => $styles, + ] + ); + + return $styles; + } + + /** + * Creates the minify URL if the minification is successful + * + * @since 2.11 + * + * @param string $url Original file URL. + + * @return string|bool The minify URL if successful, false otherwise + */ + private function replace_url( $url ) { + if ( empty( $url ) ) { + return false; + } + + // This filter is documented in /inc/classes/optimization/class-abstract-optimization.php. + $url = apply_filters( 'rocket_asset_url', $url, $this->get_zones() ); + + $parsed_url = wp_parse_url( $url ); + + if ( empty( $parsed_url['path'] ) ) { + return false; + } + + if ( ! empty( $parsed_url['host'] ) ) { + $url = rocket_add_url_protocol( $url ); + } + + $unique_id = md5( $url . $this->minify_key ); + $filename = preg_replace( '/\.(css)$/', '-' . $unique_id . '.css', ltrim( rocket_realpath( $parsed_url['path'] ), '/' ) ); + $minified_file = rawurldecode( $this->minify_base_path . $filename ); + $minify_url = $this->get_minify_url( $filename, $url ); + + if ( rocket_direct_filesystem()->exists( $minified_file ) ) { + Logger::debug( + 'Minified CSS file already exists.', + [ + 'css minification process', + 'path' => $minified_file, + ] + ); + return $minify_url; + } + + $external_url = $this->is_external_file( $url ); + $file_path = $external_url ? $this->local_cache->get_filepath( $url ) : $this->get_file_path( $url ); + + if ( empty( $file_path ) ) { + Logger::error( + 'Couldn’t get the file path from the URL.', + [ + 'css minification process', + 'url' => $url, + ] + ); + return false; + } + + $file_content = $external_url ? $this->local_cache->get_content( $url ) : $this->get_file_content( $file_path ); + + if ( ! $file_content ) { + Logger::error( + 'No file content.', + [ + 'css minification process', + 'path' => $file_path, + ] + ); + return false; + } + + $minified_content = $external_url ? $this->minify( $url, $minified_file, $file_content ) : $this->minify( $file_path, $minified_file, $file_content ); + + if ( empty( $minified_content ) ) { + return false; + } + + $minified_content = $this->font_display_swap( $url, $minified_file, $minified_content ); + + if ( empty( $minified_content ) ) { + return false; + } + + $save_minify_file = $this->save_minify_file( $minified_file, $minified_content ); + + if ( ! $save_minify_file ) { + return false; + } + + return $minify_url; + } + + /** + * Replace old style tag with the minified tag. + * + * @param array $style Style matched data. + * @param string $minify_url Minified URL. + * @param string $html HTML content. + * + * @return string + */ + protected function replace_style( $style, $minify_url, $html ) { + $replace_style = str_replace( $style['url'], $minify_url, $style['final'] ); + $replace_style = str_replace( ' $minify_url, + ] + ); + + return $html; + } + + /** + * Save minified CSS file. + * + * @since 3.7 + * + * @param string $minified_file Minified file path. + * @param string $minified_content Minified HTML content. + * + * @return bool + */ + protected function save_minify_file( $minified_file, $minified_content ) { + $save_minify_file = $this->write_file( $minified_content, $minified_file ); + + if ( ! $save_minify_file ) { + Logger::error( + 'Minified CSS file could not be created.', + [ + 'css minification process', + 'path' => $minified_file, + ] + ); + return false; + } + Logger::debug( + 'Minified CSS file successfully created.', + [ + 'css minification process', + 'path' => $minified_file, + ] + ); + return true; + } + + /** + * Applies font display swap if the file contains @font-face. + * + * @since 3.7 + * + * @param string $url File Url. + * @param string $minified_file Minified file path. + * @param string $content CSS file content. + * @return string + */ + protected function font_display_swap( $url, $minified_file, $content ) { + if ( + preg_match( '/(?:-|\.)min.css/iU', $url ) + && + false === stripos( $content, '@font-face' ) + ) { + Logger::error( + 'Do not apply font display swap on min.css files without font-face.', + [ + 'css minification process', + 'path' => $minified_file, + ] + ); + + if ( ! $this->is_external_file( $url ) ) { + return ''; + } + + return $content; + } + + return $this->apply_font_display_swap( $content ); + } + + /** + * Minifies the content + * + * @since 2.11 + * + * @param string $file_path Source filepath. + * @param string $minified_file Target filepath. + * @param string $file_content Content to minify. + * @return string + */ + protected function minify( $file_path, $minified_file, $file_content ) { + $file_content = $this->rewrite_paths( $file_path, $minified_file, $file_content ); + $minifier = $this->get_minifier( $file_content ); + $minified_content = $minifier->minify(); + + if ( empty( $minified_content ) ) { + Logger::error( + 'No minified content.', + [ + 'css minification process', + 'path' => $minified_file, + ] + ); + return ''; + } + + return $minified_content; + } + + /** + * Returns a new minifier instance + * + * @since 3.1 + * + * @param string $file_content Content to minify. + * @return Minifier\CSS + */ + protected function get_minifier( $file_content ) { + return new Minifier\CSS( $file_content ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/Optimization/Minify/CSS/Subscriber.php b/wp-content/plugins/wp-rocket/inc/Engine/Optimization/Minify/CSS/Subscriber.php new file mode 100644 index 0000000..34c7795 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/Optimization/Minify/CSS/Subscriber.php @@ -0,0 +1,85 @@ + [ + [ 'fix_ssl_minify' ], + [ 'i18n_multidomain_url' ], + ], + 'rocket_buffer' => [ 'process', 16 ], + ]; + + return $events; + } + + /** + * Processes the HTML to Minify/Combine CSS. + * + * @since 3.1 + * + * @param string $html HTML content. + * @return string + */ + public function process( $html ) { + if ( ! $this->is_allowed() ) { + return $html; + } + + $assets_local_cache = new AssetsLocalCache( rocket_get_constant( 'WP_ROCKET_MINIFY_CACHE_PATH' ), $this->filesystem ); + + if ( $this->options->get( 'minify_css' ) && $this->options->get( 'minify_concatenate_css' ) ) { + $this->set_processor_type( new Combine( $this->options, $assets_local_cache ) ); + } elseif ( $this->options->get( 'minify_css' ) && ! $this->options->get( 'minify_concatenate_css' ) ) { + $this->set_processor_type( new Minify( $this->options, $assets_local_cache ) ); + } + + return $this->processor->optimize( $html ); + } + + /** + * Checks if is allowed to Minify/Combine CSS. + * + * @since 3.1 + * + * @return bool + */ + protected function is_allowed() { + if ( rocket_get_constant( 'DONOTROCKETOPTIMIZE' ) ) { + return false; + } + + if ( ! (bool) $this->options->get( 'minify_css', 0 ) ) { + return false; + } + + return ! is_rocket_post_excluded_option( 'minify_css' ); + } + + /** + * Returns an array of CDN zones for CSS files. + * + * @since 3.1 + * + * @return array + */ + public function get_zones() { + return [ 'all', 'css_and_js', 'css' ]; + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/Optimization/Minify/JS/AbstractJSOptimization.php b/wp-content/plugins/wp-rocket/inc/Engine/Optimization/Minify/JS/AbstractJSOptimization.php new file mode 100644 index 0000000..059aa00 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/Optimization/Minify/JS/AbstractJSOptimization.php @@ -0,0 +1,283 @@ +options = $options; + $this->local_cache = $local_cache; + $this->minify_key = $this->options->get( 'minify_js_key', create_rocket_uniqid() ); + $this->excluded_files = $this->get_excluded_files(); + $this->init_base_path_and_url(); + } + + /** + * Get all files to exclude from minification/concatenation. + * + * @since 2.11 + * + * @return string A list of files to exclude, ready to be used in a regex pattern. + */ + protected function get_excluded_files() { + $excluded_files = $this->options->get( 'exclude_js', [] ); + $excluded_files[] = '/wp-includes/js/dist/i18n.min.js'; + $jquery_urls = $this->get_jquery_urls(); + + if ( ! empty( $jquery_urls ) ) { + $excluded_files = array_merge( $excluded_files, $jquery_urls ); + } + + /** + * Filter JS files to exclude from minification/concatenation. + * + * @since 2.6 + * + * @param array $js_files List of excluded JS files. + */ + $excluded_files = (array) apply_filters( 'rocket_exclude_js', $excluded_files ); + + if ( empty( $excluded_files ) ) { + return ''; + } + + foreach ( $excluded_files as $i => $excluded_file ) { + // Escape characters for future use in regex pattern. + $excluded_files[ $i ] = str_replace( '#', '\#', $excluded_file ); + } + + return implode( '|', $excluded_files ); + } + + /** + * Returns the CDN zones. + * + * @since 3.1 + * + * @return array + */ + public function get_zones() { + return [ 'all', 'css_and_js', self::FILE_TYPE ]; + } + + /** + * Determines if it is a file excluded from minification. + * + * @since 2.11 + * + * @param array $tag Tag corresponding to a JS file. + * + * @return bool True if it is a file excluded, false otherwise + */ + protected function is_minify_excluded_file( array $tag ) { + if ( ! isset( $tag[0], $tag['url'] ) ) { + return true; + } + + // File should not be minified. + if ( + false !== strpos( $tag[0], 'data-minify=' ) + || + false !== strpos( $tag[0], 'data-no-minify=' ) + ) { + return true; + } + + $file_path = wp_parse_url( $tag['url'], PHP_URL_PATH ); + + // File extension is not js. + if ( pathinfo( $file_path, PATHINFO_EXTENSION ) !== self::FILE_TYPE ) { + return true; + } + + if ( ! empty( $this->excluded_files ) ) { + // File is excluded from minification/concatenation. + if ( preg_match( '#^(' . $this->excluded_files . ')$#', $file_path ) ) { + return true; + } + } + + return false; + } + + /** + * Gets the minify URL. + * + * @since 3.1 + * + * @param string $filename Minified filename. + * @param string $original_url Original URL for this file. Optional. + * + * @return string + */ + protected function get_minify_url( $filename, $original_url = '' ) { + $minify_url = $this->minify_base_url . $filename; + + /** + * Filters JS file URL with CDN hostname + * + * @since 2.1 + * + * @param string $minify_url Minified file URL. + * @param string $original_url Original URL for this file. + */ + return apply_filters( 'rocket_js_url', $minify_url, $original_url ); + } + + /** + * Gets jQuery URL if defer JS safe mode is active. + * + * @since 3.1 + * + * @return array + */ + protected function get_jquery_urls() { + if ( ! $this->options->get( 'defer_all_js', 0 ) || ! $this->options->get( 'defer_all_js_safe', 0 ) ) { + return []; + } + + $exclude_jquery = []; + $jquery = wp_scripts()->registered['jquery-core']->src; + + if ( isset( $jquery ) ) { + if ( empty( wp_parse_url( $jquery, PHP_URL_HOST ) ) ) { + $exclude_jquery[] = wp_parse_url( site_url( $jquery ), PHP_URL_PATH ); + } else { + $exclude_jquery[] = $jquery; + } + } + + $exclude_jquery[] = 'c0.wp.com/c/(?:.+)/wp-includes/js/jquery/jquery.js'; + $exclude_jquery[] = 'ajax.googleapis.com/ajax/libs/jquery/(?:.+)/jquery(?:\.min)?.js'; + $exclude_jquery[] = 'cdnjs.cloudflare.com/ajax/libs/jquery/(?:.+)/jquery(?:\.min)?.js'; + $exclude_jquery[] = 'code.jquery.com/jquery-.*(?:\.min|slim)?.js'; + + return $exclude_jquery; + } + + /** + * Patterns in URL excluded from being combined + * + * @since 3.1 + * + * @return array + */ + protected function get_excluded_external_file_path() { + $defaults = [ + 'html5.js', + 'show_ads.js', + 'histats.com/js', + 'ws.amazon.com/widgets', + '/ads/', + 'intensedebate.com', + 'scripts.chitika.net/', + 'jotform.com/', + 'gist.github.com', + 'forms.aweber.com', + 'video.unrulymedia.com', + 'stats.wp.com', + 'stats.wordpress.com', + 'widget.rafflecopter.com', + 'widget-prime.rafflecopter.com', + 'releases.flowplayer.org', + 'c.ad6media.fr', + 'cdn.stickyadstv.com', + 'www.smava.de', + 'contextual.media.net', + 'app.getresponse.com', + 'adserver.reklamstore.com', + 's0.wp.com', + 'wprp.zemanta.com', + 'files.bannersnack.com', + 'smarticon.geotrust.com', + 'js.gleam.io', + 'ir-na.amazon-adsystem.com', + 'web.ventunotech.com', + 'verify.authorize.net', + 'ads.themoneytizer.com', + 'embed.finanzcheck.de', + 'imagesrv.adition.com', + 'js.juicyads.com', + 'form.jotformeu.com', + 'speakerdeck.com', + 'content.jwplatform.com', + 'ads.investingchannel.com', + 'app.ecwid.com', + 'www.industriejobs.de', + 's.gravatar.com', + 'googlesyndication.com', + 'a.optmstr.com', + 'a.optmnstr.com', + 'a.opmnstr.com', + 'adthrive.com', + 'mediavine.com', + 'js.hsforms.net', + 'googleadservices.com', + 'f.convertkit.com', + 'recaptcha/api.js', + 'mailmunch.co', + 'apps.shareaholic.com', + 'dsms0mj1bbhn4.cloudfront.net', + 'nutrifox.com', + 'code.tidio.co', + 'www.uplaunch.com', + 'widget.reviewability.com', + 'embed-cdn.gettyimages.com/widgets.js', + 'app.mailerlite.com', + 'ck.page', + 'cdn.jsdelivr.net/gh/AmauriC/', + 'static.klaviyo.com/onsite/js/klaviyo.js', + 'a.omappapi.com/app/js/api.min.js', + 'static.zdassets.com', + 'feedbackcompany.com/widgets/feedback-company-widget.min.js', + 'widget.gleamjs.io', + 'phonewagon.com', + 'simplybook.asia/v2/widget/widget.js', + 'simplybook.it/v2/widget/widget.js', + 'simplybook.me/v2/widget/widget.js', + 'static.botsrv.com/website/js/widget2.36cf1446.js', + 'static.mailerlite.com/data/', + 'cdn.voxpow.com', + 'loader.knack.com', + 'embed.lpcontent.net/leadboxes/current/embed.js', + ]; + + $excluded_external = array_merge( $defaults, $this->options->get( 'exclude_js', [] ) ); + + /** + * Filters JS externals files to exclude from the combine process + * + * @since 2.2 + * + * @param array $pattern Patterns to match. + */ + return apply_filters( 'rocket_minify_excluded_external_js', $excluded_external ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/Optimization/Minify/JS/Combine.php b/wp-content/plugins/wp-rocket/inc/Engine/Optimization/Minify/JS/Combine.php new file mode 100644 index 0000000..163b1f4 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/Optimization/Minify/JS/Combine.php @@ -0,0 +1,846 @@ +minifier = $minifier; + $this->jquery_urls = $this->get_jquery_urls(); + } + + /** + * Minifies and combines JavaScripts into one + * + * @since 3.1 + * + * @param string $html HTML content. + * @return string + */ + public function optimize( $html ) { + Logger::info( 'JS COMBINE PROCESS STARTED.', [ 'js combine process' ] ); + + $html_nocomments = $this->hide_comments( $html ); + $scripts = $this->find( '', $html_nocomments ); + + if ( ! $scripts ) { + Logger::debug( 'No `' . $move_after . '', $html ); + + foreach ( $combine_scripts as $script ) { + $html = str_replace( $script[0], '', $html ); + } + + Logger::info( + 'Combined JS file successfully added.', + [ + 'js combine process', + 'url' => $minify_url, + ] + ); + + return $html; + } + + /** + * Parses found nodes to keep only the ones to combine + * + * @since 3.1 + * + * @param Array $scripts scripts corresponding to JS file or content. + * @return array + */ + protected function parse( $scripts ) { + $scripts = array_map( + function( $script ) { + preg_match( '/]+[\s\'"])?src\s*=\s*[\'"]\s*?(?[^\'"]+\.js(?:\?[^\'"]*)?)\s*?[\'"]([^>]+)?\/?>/Umsi', $script[0], $matches ); + + if ( isset( $matches['url'] ) ) { + if ( $this->is_external_file( $matches['url'] ) ) { + foreach ( $this->get_excluded_external_file_path() as $excluded_file ) { + if ( false !== strpos( $matches['url'], $excluded_file ) ) { + Logger::debug( + 'Script is external.', + [ + 'js combine process', + 'tag' => $matches[0], + ] + ); + return; + } + } + + if ( ! empty( $this->jquery_urls ) ) { + $jquery_urls = implode( '|', $this->jquery_urls ); + if ( preg_match( '#^(' . $jquery_urls . ')$#', rocket_remove_url_protocol( strtok( $matches['url'], '?' ) ) ) ) { + return; + } + } + + $this->scripts[] = [ + 'type' => 'url', + 'content' => $matches['url'], + ]; + + return $script; + } + + if ( $this->is_minify_excluded_file( $matches ) ) { + Logger::debug( + 'Script is excluded.', + [ + 'js combine process', + 'tag' => $matches[0], + ] + ); + return; + } + + $file_path = $this->get_file_path( strtok( $matches['url'], '?' ) ); + + if ( ! $file_path ) { + return; + } + + $this->scripts[] = [ + 'type' => 'file', + 'content' => $file_path, + ]; + } else { + preg_match( '/[^>]*)>(?:\/\*\s*[\s\S]*?)\s*(?:\/\*\s*\]\]>\s*\*\/)?<\/script>/msi', $script[0], $matches_inline ); + + $matches_inline = array_merge( + [ + 'attrs' => '', + 'content' => '', + ], + $matches_inline + ); + + if ( preg_last_error() === PREG_BACKTRACK_LIMIT_ERROR ) { + Logger::debug( + 'PCRE regex execution Catastrophic Backtracking', + [ + 'inline JS backtracking error', + 'content' => $matches_inline['content'], + ] + ); + return; + } + + if ( strpos( $matches_inline['attrs'], 'type' ) !== false && ! preg_match( '/type\s*=\s*["\']?(?:text|application)\/(?:(?:x\-)?javascript|ecmascript)["\']?/i', $matches_inline['attrs'] ) ) { + Logger::debug( + 'Inline script is not JS.', + [ + 'js combine process', + 'attributes' => $matches_inline['attrs'], + ] + ); + return; + } + + if ( false !== strpos( $matches_inline['attrs'], 'src=' ) ) { + Logger::debug( + 'Inline script has a `src` attribute.', + [ + 'js combine process', + 'attributes' => $matches_inline['attrs'], + ] + ); + return; + } + + if ( in_array( $matches_inline['content'], $this->get_localized_scripts(), true ) ) { + Logger::debug( + 'Inline script is a localize script', + [ + 'js combine process', + 'excluded_content' => $matches_inline['content'], + ] + ); + return; + } + + if ( $this->is_delayed_script( $matches_inline['attrs'] ) ) { + return; + } + + foreach ( $this->get_excluded_inline_content() as $excluded_content ) { + if ( false !== strpos( $matches_inline['content'], $excluded_content ) ) { + Logger::debug( + 'Inline script has excluded content.', + [ + 'js combine process', + 'excluded_content' => $excluded_content, + ] + ); + return; + } + } + + foreach ( $this->get_move_after_inline_scripts() as $move_after_script ) { + if ( false !== strpos( $matches_inline['content'], $move_after_script ) ) { + $this->move_after[] = $script[0]; + return; + } + } + + $this->scripts[] = [ + 'type' => 'inline', + 'content' => $matches_inline['content'], + ]; + } + + return $script; + }, + $scripts + ); + + return array_filter( $scripts ); + } + + /** + * Gets content for each script either from inline or from src + * + * @since 3.1 + * + * @return string + */ + protected function get_content() { + $content = ''; + + foreach ( $this->scripts as $script ) { + if ( 'file' === $script['type'] ) { + $file_content = $this->get_file_content( $script['content'] ); + $content .= $file_content; + + $this->add_to_minify( $file_content ); + } elseif ( 'url' === $script['type'] ) { + $file_content = $this->local_cache->get_content( rocket_add_url_protocol( $script['content'] ) ); + $content .= $file_content; + + $this->add_to_minify( $file_content ); + } elseif ( 'inline' === $script['type'] ) { + $inline_js = rtrim( $script['content'], ";\n\t\r" ) . ';'; + $content .= $inline_js; + + $this->add_to_minify( $inline_js ); + } + } + + return $content; + } + + /** + * Creates the minify URL if the minification is successful + * + * @since 2.11 + * + * @param string $content Content to minify & combine. + + * @return string|bool The minify URL if successful, false otherwise + */ + protected function combine( $content ) { + if ( empty( $content ) ) { + return false; + } + + $filename = md5( $content . $this->minify_key ) . '.js'; + $minified_file = $this->minify_base_path . $filename; + if ( ! rocket_direct_filesystem()->is_readable( $minified_file ) ) { + $minified_content = $this->minify(); + + if ( ! $minified_content ) { + return false; + } + + $minify_filepath = $this->write_file( $minified_content, $minified_file ); + + if ( ! $minify_filepath ) { + return false; + } + } + + return $this->get_minify_url( $filename ); + } + + /** + * Minifies the content + * + * @since 2.11 + * + * @return string|bool Minified content, false if empty + */ + protected function minify() { + $minified_content = $this->minifier->minify(); + + if ( empty( $minified_content ) ) { + return false; + } + + return $minified_content; + } + + /** + * Adds content to the minifier + * + * @since 3.1 + * + * @param string $content Content to minify/combine. + * @return void + */ + protected function add_to_minify( $content ) { + $this->minifier->add( $content ); + } + + /** + * Patterns in content excluded from being combined + * + * @since 3.1 + * + * @return array + */ + protected function get_excluded_inline_content() { + $defaults = [ + 'document.write', + 'google_ad', + 'edToolbar', + 'gtag', + '_gaq.push', + '_gaLt', + 'GoogleAnalyticsObject', + 'syntaxhighlighter', + 'adsbygoogle', + 'ci_cap_', + '_stq', + 'nonce', + 'post_id', + 'LogHuman', + 'idcomments_acct', + 'ch_client', + 'sc_online_t', + '_stq', + 'bannersnack_embed', + 'vtn_player_type', + 'ven_video_key', + 'ANS_customer_id', + 'tdBlock', + 'tdLocalCache', + 'wpRestNonce', + '"url":', + 'lazyLoadOptions', + 'adthrive', + 'loadCSS', + 'google_tag_params', + 'clicky_custom', + 'clicky_site_ids', + 'NSLPopupCenter', + '_paq', + 'gtm', + 'dataLayer', + 'RecaptchaLoad', + 'WPCOM_sharing_counts', + 'jetpack_remote_comment', + 'subscribe-field', + 'contextly', + '_mmunch', + 'gt_request_uri', + 'doGTranslate', + 'docTitle', + 'bs_ajax_paginate_', + 'bs_deferred_loading_', + 'theChampRedirectionUrl', + 'theChampFBCommentUrl', + 'theChampTwitterRedirect', + 'theChampRegRedirectionUrl', + 'ESSB_CACHE_URL', + 'oneall_social_login_providers_', + 'betterads_screen_width', + 'woocommerce_wishlist_add_to_wishlist_url', + 'arf_conditional_logic', + 'heateorSsHorSharingShortUrl', + 'TL_Const', + 'bimber_front_microshare', + 'setAttribute("id"', + 'setAttribute( "id"', + 'TribeEventsPro', + 'peepsotimedata', + 'wphc_data', + 'hc_rand_id', + 'RBL_ADD', + 'AfsAnalyticsObject', + '_thriveCurrentPost', + 'esc_login_url', + 'fwduvpMainPlaylist', + 'Bibblio.initRelatedContent', + 'showUFC()', + '#iphorm-', + '#fancy-', + 'ult-carousel-', + 'theChampLJAuthUrl', + 'f._fbq', + 'Insticator', + 'w2dc_js_objects', + 'cherry_ajax', + 'ad_block_', + 'elementorFrontendConfig', + 'zeen_', + 'disqusIdentifier', + 'currentAjaxUrl', + 'geodir_event_call_calendar_', + 'atatags-', + 'hbspt.forms.create', + 'function(c,h,i,m,p)', + 'dataTable({', + 'rankMath = {', + '_atrk_opts', + 'quicklinkOptions', + 'ct_checkjs_', + 'WP_Statistics_http', + 'penci_block_', + 'omapi_localized', + 'omapi_data', + 'OptinMonsterApp', + 'tminusnow', + 'nfForms', + 'galleries.gallery_', + 'wcj_evt.prodID', + 'advads_tracking_ads', + 'advadsGATracking.postContext', + 'woopack_config', + 'ulp_content_id', + 'wp-cumulus/tagcloud.swf?r=', + 'ctSetCookie(\'ct_checkjs\'', + 'woof_really_curr_tax', + 'uLogin.customInit', + 'i18n_no_matching_variations_text', + 'alsp_map_markers_attrs', + 'var inc_opt =', + 'iworks_upprev', + 'yith_wcevti_tickets', + 'window.metrilo.ensure_cbuid', + 'metrilo.event', + 'wordpress_page_root', + 'wcct_info', + 'Springbot.product_id', + 'pysWooProductData', + 'dfd-heading', + 'owl=$("#', + 'penci_megamenu', + 'fts_security', + 'algoliaAutocomplete', + 'avia_framework_globals', + 'tabs.easyResponsiveTabs', + 'searchlocationHeader', + 'yithautocomplete', + 'data-parallax-speed', + 'currency_data=', + 'cedexisData', + 'function reenableButton', + '#wpnbio-show', + 'e.Newsletter2GoTrackingObject', + 'var categories_', + '"+nRemaining+"', + 'cartsguru_cart_token', + 'after_share_easyoptin', + 'location_data.push', + 'thirstyFunctions.isThirstyLink', + 'styles: \' #custom-menu-', + 'function svc_center_', + '#svc_carousel2_container_', + 'advads.move', + 'elementid', + 'advads_has_ads', + 'wpseo_map_init', + 'mdf_current_page_url', + 'tptn_tracker', + 'dpsp_pin_button_data', + 'searchwp_live_search_params', + 'wpp_params', + 'top.location,thispage', + 'selection+pagelink', + 'ic_window_resolution', + 'PHP.wp_p_id', + 'ShopifyBuy.UI.onReady(client)', + 'orig_request_uri', + 'gie.widgets.load', + 'Adman.Flash', + 'PHP.wp_p_id', + 'window.broadstreetKeywords', + 'var productId =', + 'var flatsomeVars', + 'wc_product_block_data', + 'static.mailerlite.com', + 'amzn_assoc', + '_bs_getParameterByName', + '_stq.push', + 'h._remove', + 'var FlowFlowOpts', + 'var WCPFData =', + 'var _beeketing', + 'var _statcounter', + 'var actions =', + 'var current_url', + 'var object_name', + 'var the_ajax_script', + 'var wc_cart_fragments_params', + 'var woocommerce_params', + 'var wpml_cookies', + 'wc_add_to_cart_params', + 'window.broadstreetKeywords', + 'window.wc_ga_pro.available_gateways', + 'xa.prototype', + 'HOUZEZ_ajaxcalls_vars', + 'w2dc_maps_objects', + 'w2dc_controller_args_array', + 'w2dc_map_markers_attrs', + 'YT.Player', + 'WPFC.data', + 'function current_video_', + 'var videodiv', + 'var slider_wppasrotate', + 'wppas_ga', + 'var blockClass', + 'tarteaucitron', + 'pw_brand_product_list', + 'tminusCountDown', + 'pysWooSelectContentData', + 'wpvq_ans89733', + '_isp_version', + 'price_range_data', + 'window.FeedbackCompanyWidgets', + 'woocs_current_currency', + 'woo_variation_swatches_options', + 'woocommerce_price_slider_params', + 'scriptParams', + 'form-adv-pagination', + 'borlabsCookiePrioritize', + 'urls_wpwidgetpolylang', + 'quickViewNonce', + 'frontendscripts_params', + 'nj-facebook-messenger', + 'var fb_mess_position', + 'init_particles_row_background_script', + 'setREVStartSize', + 'fl-node', + 'PPAccordion', + 'soliloquy_', + 'wprevpublicjs_script_vars', + 'DTGS_NONCE_FRONTEND', + 'et_animation_data', + 'archives-dropdown', + 'loftloaderCache', + 'SmartSliderSimple', + 'var nectarLove', + 'var incOpt', + 'RocketBrowserCompatibilityChecker', + 'RocketPreloadLinksConfig', + 'placementVersionId', + 'var useEdit', + 'var DTGS_NONCE_FRONTEND', + 'n2jQuery', + 'et_core_api_spam_recaptcha', + 'cnArgs', + '__CF$cv$params', + 'trustbox_settings', + 'aepro', + 'cdn.jst.ai', + 'w2dc_fields_in_categories', + 'aepc_pixel', + 'avadaWooCommerceVars', + 'var isb', + 'fcaPcPost', + 'csrf_token', + 'icwp_wpsf_vars_lpantibot', + 'wpvViewHead', + 'ed_school_plugin', + 'aps_comp_', + ]; + + $excluded_inline = array_merge( $defaults, $this->options->get( 'exclude_inline_js', [] ) ); + + /** + * Filters inline JS excluded from being combined + * + * @since 3.1 + * + * @param array $pattern Patterns to match. + */ + return apply_filters( 'rocket_excluded_inline_js_content', $excluded_inline ); + } + + /** + * Patterns of inline JS to move after the combined JS file + * + * @since 3.1.4 + * + * @return array + */ + protected function get_move_after_inline_scripts() { + $move_after_scripts = [ + 'map_fusion_map_', + 'ec:addProduct', + 'ec:addImpression', + 'clear_better_facebook_comments', + 'vc-row-destroy-equal-heights-', + 'dfd-icon-list-', + 'SFM_template', + 'WLTChangeState', + 'wlt_star_', + 'wlt_pop_distance_', + 'smart_list_tip', + 'gd-wgt-pagi-', + 'data-rf-id=', + 'tvc_po=', + 'scrapeazon', + 'startclock', + 'it_logo_field_owl-box_', + 'td_live_css_uid', + 'wpvl_paramReplace', + 'tdAjaxCount', + 'mec_skin_', + '_wca', + '_taboola', + 'fbq(\'trackCustom\'', + 'fbq(\'track\'', + 'data.token', + 'sharrre', + 'dfads_ajax_load_ads', + 'tie_postviews', + 'wmp_update', + 'h5ab-print-article', + 'gform_ajax_frame_', + 'gform_post_render', + 'mts_view_count', + 'act_css_tooltip', + 'window.SLB', + 'wpt_view_count', + 'var dateNow', + 'gallery_product_', + '.flo-block-slideshow-', + 'data=\'api-key=ct-', + 'ip_common_function()', + '("style#gsf-custom-css").append', + 'a3revWCDynamicGallery_', + '#owl-carousel-instagram-', + 'window.FlowFlowOpts', + 'jQuery(\'.td_uid_', + 'jQuery(".slider-', + '#dfd-vcard-widget-', + '#sf-instagram-widget-', + '.woocommerce-tabs-', + 'penci_megamenu__', + 'vc_prepareHoverBox', + 'wp-temp-form-div', + '_wswebinarsystem_already_', + '#views-extra-css").text', + 'fusetag.setTargeting', + 'hit.uptrendsdata.com', + 'callback:window.renderBadge', + 'test_run_nf_conditional_logic', + 'cb_nombre', + '$(\'.fl-node-', + 'function($){google_maps_', + '$("#myCarousel', + 'et_animation_data=', + 'current_url="', + 'CustomEvent.prototype=window.Event.prototype', + 'electro-wc-product-gallery', + 'woof_is_mobile', + 'jQuery(\'.videonextup', + 'wpp_params', + 'us.templateDirectoryUri=', + '.fat-gallery-item', + '.ratingbox', + 'user_rating.prototype.eraseCookie', + 'test_run_nf_conditional', + 'dpsp-networks-btns-wrapper', + 'pa_woo_product_info', + 'sharing_enabled_on_post_via_metabox', + '#product-search-field-', + 'GOTMLS_login_offset', + 'berocket_aapf_time_to_fix_products_style', + 'window.vc_googleMapsPointer', + 'sinceID_', + '#ut-background-video-ut-section', + '+window.comment_tab_width+', + 'dfd-button-hover-in', + 'wpseo-address-wrapper', + 'platform.stumbleupon.com', + '#woo_pp_ec_button_mini_cart', + '#supercarousel', + 'blockClass', + 'tdbMenuItem', + 'tdbSearchItem', + 'best_seller_badge', + 'jQuery(\'#product-top-bar', + 'fb_desc-', + 'FC_regenerate_captcha', + 'wp_post_blocks_vars.listed_posts=[', + 'captcha-hash', + 'mapdata={', + '.ywpc-char-', + ').countdowntimer(', + 'jQuery("#td_uid_', + 'find(\'#td_uid_', + ]; + + /** + * Filters inline JS to move after the combined JS file + * + * @since 3.1.4 + * + * @param array $move_after_scripts Patterns to match. + */ + return apply_filters( 'rocket_move_after_combine_js', $move_after_scripts ); + } + + /** + * Gets all localized scripts data to exclude them from combine. + * + * @since 3.1.3 + * + * @return array + */ + protected function get_localized_scripts() { + static $localized_scripts; + + if ( isset( $localized_scripts ) ) { + return $localized_scripts; + } + + $localized_scripts = []; + + foreach ( array_unique( wp_scripts()->queue ) as $item ) { + $data = wp_scripts()->print_extra_script( $item, false ); + + if ( empty( $data ) ) { + continue; + } + + $localized_scripts[] = $data; + } + + return $localized_scripts; + } + + /** + * Is this script a delayed script or not. + * + * @since 3.7 + * + * @param string $script_attributes Attributes beside the opening of script tag. + * + * @return bool True if it's a delayed script and false if not. + */ + private function is_delayed_script( $script_attributes ) { + return false !== strpos( $script_attributes, 'data-rocketlazyloadscript=' ); + } + +} diff --git a/wp-content/plugins/wp-rocket/inc/Engine/Optimization/Minify/JS/Minify.php b/wp-content/plugins/wp-rocket/inc/Engine/Optimization/Minify/JS/Minify.php new file mode 100644 index 0000000..ee80d0b --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/Engine/Optimization/Minify/JS/Minify.php @@ -0,0 +1,344 @@ +get_scripts( $html ); + + if ( empty( $scripts ) ) { + return $html; + } + + foreach ( $scripts as $script ) { + global $wp_scripts; + + $is_external_url = $this->is_external_file( $script['url'] ); + + if ( + ! $is_external_url + && + preg_match( '/[-.]min\.js/iU', $script['url'] ) + ) { + Logger::debug( + 'Script is already minified.', + [ + 'js minification process', + 'tag' => $script[0], + ] + ); + continue; + } + + if ( + $is_external_url + && + $this->is_excluded_external( $script['url'] ) + ) { + continue; + } + + if ( $this->is_minify_excluded_file( $script ) ) { + Logger::debug( + 'Script is excluded.', + [ + 'js minification process', + 'tag' => $script[0], + ] + ); + continue; + } + + // Don't minify jQuery included in WP core since it's already minified but without .min in the filename. + if ( ! empty( $wp_scripts->registered['jquery-core']->src ) && false !== strpos( $script['url'], $wp_scripts->registered['jquery-core']->src ) ) { + Logger::debug( + 'jQuery script is already minified.', + [ + 'js minification process', + 'tag' => $script[0], + ] + ); + continue; + } + + $integrity_validated = $this->local_cache->validate_integrity( $script ); + + if ( false === $integrity_validated ) { + Logger::debug( + 'Script integrity attribute not valid.', + [ + 'js minification process', + 'tag' => $script[0], + ] + ); + + continue; + } + + $script['final'] = $integrity_validated; + + $minify_url = $this->replace_url( strtok( $script['url'], '?' ) ); + + if ( ! $minify_url ) { + Logger::error( + 'Script minification failed.', + [ + 'js minification process', + 'tag' => $script[0], + ] + ); + continue; + } + + $html = $this->replace_script( $script, $minify_url, $html ); + } + + return $html; + } + + /** + * Get all script tags from HTML. + * + * @param string $html HTML content. + * @return array Array with script tags, empty array if no script tags found. + */ + private function get_scripts( $html ) { + $html_nocomments = $this->hide_comments( $html ); + $scripts = $this->find( ']+[\s\'"])?src\s*=\s*[\'"]\s*?(?[^\'"]+\.js(?:\?[^\'"]*)?)\s*?[\'"]([^>]+)?\/?>', $html_nocomments ); + + if ( ! $scripts ) { + Logger::debug( 'No ` + ID ), 'purge_cache_post-' . $post->ID ); + printf( '', esc_url( $url ), esc_html__( 'Clear cache', 'rocket' ) ); + } +} +add_action( 'post_submitbox_start', 'rocket_post_submitbox_start' ); + +/** + * Add "Cache options" metabox + * + * @since 2.5 + */ +function rocket_cache_options_meta_boxes() { + if ( current_user_can( 'rocket_manage_options' ) ) { + $cpts = get_post_types( + [ + 'public' => true, + ], + 'objects' + ); + unset( $cpts['attachment'] ); + + foreach ( $cpts as $cpt => $cpt_object ) { + $label = $cpt_object->labels->singular_name; + add_meta_box( 'rocket_post_exclude', sprintf( __( 'WP Rocket Options', 'rocket' ), $label ), 'rocket_display_cache_options_meta_boxes', $cpt, 'side', 'core' ); + } + } +} +add_action( 'add_meta_boxes', 'rocket_cache_options_meta_boxes' ); + +/** + * Displays some checkbox to de/activate some cache options + * + * @since 2.5 + */ +function rocket_display_cache_options_meta_boxes() { + if ( current_user_can( 'rocket_manage_options' ) ) { + global $post, $pagenow; + wp_nonce_field( 'rocket_box_option', '_rocketnonce', false, true ); + ?> + +
    + ID ) ); + + if ( isset( $rejected_uris[ $path ] ) ) { + $reject_current_uri = true; + } + } + ?> + > +
    + +
    +

    + __( 'LazyLoad for images', 'rocket' ), + 'lazyload_iframes' => __( 'LazyLoad for iframes/videos', 'rocket' ), + 'minify_css' => __( 'Minify/combine CSS', 'rocket' ), + 'minify_js' => __( 'Minify/combine JS', 'rocket' ), + 'cdn' => __( 'CDN', 'rocket' ), + 'async_css' => __( 'Optimize CSS Delivery', 'rocket' ), + 'defer_all_js' => __( 'Defer JS', 'rocket' ), + 'delay_js' => __( 'Delay JavaScript execution', 'rocket' ), + ]; + + foreach ( $fields as $field => $label ) { + $disabled = disabled( ! get_rocket_option( $field ), true, false ); + // translators: %s is the name of the option. + $title = $disabled ? ' title="' . esc_attr( sprintf( __( 'Activate first the %s option.', 'rocket' ), $label ) ) . '"' : ''; + $class = $disabled ? ' class="rkt-disabled"' : ''; + $checked = ! $disabled ? checked( ! get_post_meta( $post->ID, '_rocket_exclude_' . $field, true ), true, false ) : ''; + ?> + + + > +
    + + + +

    + ', '' ); + ?> +

    +
    + + ID . '_donotdeactivaterocket' ); + if ( current_user_can( 'rocket_manage_options' ) && $msgs ) { + + delete_transient( $current_user->ID . '_donotdeactivaterocket' ); + $errors = []; + + foreach ( $msgs as $msg ) { + switch ( $msg ) { + case 'wpconfig': + $errors['wpconfig'] = '

    ' . sprintf( + // translators: %1$s WP Rocket plugin name; %2$s = file name. + __( + '%1$s has not been deactivated due to missing writing permissions.
    +Make %2$s writeable and retry deactivation, or force deactivation now:', + 'rocket' + ), + WP_ROCKET_PLUGIN_NAME, + 'wp-config.php' + ) . '

    '; + break; + + case 'htaccess': + $errors['htaccess'] = '

    ' . sprintf( + // translators: %1$s WP Rocket plugin name; %2$s = file name. + __( + '%1$s has not been deactivated due to missing writing permissions.
    +Make %2$s writeable and retry deactivation, or force deactivation now:', + 'rocket' + ), + WP_ROCKET_PLUGIN_NAME, + '.htaccess' + ) . '

    '; + break; + } + + /** + * Filter the output messages for each bad deactivation attempt. + * + * @since 2.0.0 + * + * @param array $errors Contains the error messages to be filtered + * @param string $msg Contains the error type (wpconfig or htaccess) + */ + $errors = apply_filters( 'rocket_bad_deactivations', $errors, $msg ); + + } + + rocket_notice_html( + [ + 'status' => 'error', + 'dismissible' => '', + 'message' => implode( '', $errors ), + 'action' => 'force_deactivation', + ] + ); + } +} +add_action( 'admin_notices', 'rocket_bad_deactivations' ); + +/** + * This warning is displayed to inform the user that a plugin de/activation can be followed by a cache clear + * + * @since 1.3.0 + */ +function rocket_warning_plugin_modification() { + if ( current_user_can( 'rocket_manage_options' ) && rocket_valid_key() ) { + + $boxes = get_user_meta( get_current_user_id(), 'rocket_boxes', true ); + + if ( in_array( __FUNCTION__, (array) $boxes, true ) ) { + return; + } + + rocket_notice_html( + [ + 'status' => 'warning', + 'dismissible' => '', + // translators: %s is WP Rocket plugin name. + 'message' => sprintf( __( '%s: One or more plugins have been enabled or disabled, clear the cache if they affect the front end of your site.', 'rocket' ), WP_ROCKET_PLUGIN_NAME ), + 'action' => 'clear_cache', + 'dismiss_button' => __FUNCTION__, + ] + ); + } +} +add_action( 'admin_notices', 'rocket_warning_plugin_modification' ); + +/** + * This warning is displayed when some plugins may conflict with WP Rocket + * + * @since 1.3.0 + */ +function rocket_plugins_to_deactivate() { + $plugins = []; + $plugins_explanations = []; + + // Deactivate all plugins who can cause conflicts with WP Rocket. + $plugins = [ + 'w3-total-cache' => 'w3-total-cache/w3-total-cache.php', + 'wp-super-cache' => 'wp-super-cache/wp-cache.php', + 'litespeed-cache' => 'litespeed-cache/litespeed-cache.php', + 'quick-cache' => 'quick-cache/quick-cache.php', + 'hyper-cache' => 'hyper-cache/plugin.php', + 'hyper-cache-extended' => 'hyper-cache-extended/plugin.php', + 'wp-fast-cache' => 'wp-fast-cache/wp-fast-cache.php', + 'flexicache' => 'flexicache/wp-plugin.php', + 'wp-fastest-cache' => 'wp-fastest-cache/wpFastestCache.php', + 'lite-cache' => 'lite-cache/plugin.php', + 'gator-cache' => 'gator-cache/gator-cache.php', + 'cache-enabler' => 'cache-enabler/cache-enabler.php', + 'swift-performance-lite' => 'swift-performance-lite/performance.php', + 'swift-performance' => 'swift-performance/performance.php', + 'speed-booster-pack' => 'speed-booster-pack/speed-booster-pack.php', + 'wp-http-compression' => 'wp-http-compression/wp-http-compression.php', + 'wordpress-gzip-compression' => 'wordpress-gzip-compression/ezgz.php', + 'gzip-ninja-speed-compression' => 'gzip-ninja-speed-compression/gzip-ninja-speed.php', + 'speed-booster-pack' => 'speed-booster-pack/speed-booster-pack.php', + 'wp-performance-score-booster' => 'wp-performance-score-booster/wp-performance-score-booster.php', + 'remove-query-strings-from-static-resources' => 'remove-query-strings-from-static-resources/remove-query-strings.php', + 'query-strings-remover' => 'query-strings-remover/query-strings-remover.php', + 'wp-ffpc' => 'wp-ffpc/wp-ffpc.php', + 'far-future-expiry-header' => 'far-future-expiry-header/far-future-expiration.php', + 'combine-css' => 'combine-css/combine-css.php', + 'super-static-cache' => 'super-static-cache/super-static-cache.php', + 'wpcompressor' => 'wpcompressor/wpcompressor.php', + 'check-and-enable-gzip-compression' => 'check-and-enable-gzip-compression/richards-toolbox.php', + 'leverage-browser-caching-ninjas' => 'leverage-browser-caching-ninjas/leverage-browser-caching-ninja.php', + 'force-gzip' => 'force-gzip/force-gzip.php', + 'enable-gzip-compression' => 'enable-gzip-compression/enable-gzip-compression.php', + 'leverage-browser-caching' => 'leverage-browser-caching/leverage-browser-caching.php', + 'add-expires-headers' => 'add-expires-headers/add-expires-headers.php', + 'page-optimize' => 'page-optimize/page-optimize.php', + ]; + + if ( get_rocket_option( 'lazyload' ) ) { + $plugins['bj-lazy-load'] = 'bj-lazy-load/bj-lazy-load.php'; + $plugins['lazy-load'] = 'lazy-load/lazy-load.php'; + $plugins['jquery-image-lazy-loading'] = 'jquery-image-lazy-loading/jq_img_lazy_load.php'; + $plugins['advanced-lazy-load'] = 'advanced-lazy-load/advanced_lazyload.php'; + $plugins['crazy-lazy'] = 'crazy-lazy/crazy-lazy.php'; + $plugins['specify-image-dimensions'] = 'specify-image-dimensions/specify-image-dimensions.php'; + } + + if ( get_rocket_option( 'lazyload_iframes' ) ) { + $plugins['lazy-load-for-videos'] = 'lazy-load-for-videos/codeispoetry.php'; + } + + if ( get_rocket_option( 'minify_css' ) || get_rocket_option( 'minify_js' ) ) { + $plugins['wp-super-minify'] = 'wp-super-minify/wp-super-minify.php'; + $plugins['bwp-minify'] = 'bwp-minify/bwp-minify.php'; + $plugins['wp-minify'] = 'wp-minify/wp-minify.php'; + $plugins['scripts-gzip'] = 'scripts-gzip/scripts_gzip.php'; + $plugins['minqueue'] = 'minqueue/plugin.php'; + $plugins['dependency-minification'] = 'dependency-minification/dependency-minification.php'; + $plugins['fast-velocity-minify'] = 'fast-velocity-minify/fvm.php'; + } + + if ( get_rocket_option( 'minify_css' ) || get_rocket_option( 'minify_js' ) ) { + $plugins['async-js-and-css'] = 'async-js-and-css/asyncJSandCSS.php'; + $plugins['merge-minify-refresh'] = 'merge-minify-refresh/merge-minify-refresh.php'; + } + + if ( get_rocket_option( 'minify_js' ) ) { + $plugins['wp-js'] = 'wp-js/wp-js.php'; + $plugins['combine-js'] = 'combine-js/combine-js.php'; + $plugins['footer-javascript'] = 'footer-javascript/footer-javascript.php'; + $plugins['scripts-to-footerphp'] = 'scripts-to-footerphp/scripts-to-footer.php'; + } + + if ( get_rocket_option( 'do_cloudflare' ) ) { + $plugins['cloudflare'] = 'cloudflare/cloudflare.php'; + $plugins_explanations['cloudflare'] = __( 'WP Rocket Cloudflare Add-on provides similar functionalities. They can not be active at the same time.', 'rocket' ); + } + + if ( get_rocket_option( 'control_heartbeat' ) ) { + $plugins['heartbeat-control'] = 'heartbeat-control/heartbeat-control.php'; + } + + /** + * Filter the recommended plugins to deactivate to prevent conflicts + * + * @since 2.6.4 + * + * @param string $plugins List of recommended plugins to deactivate + */ + $plugins = apply_filters( 'rocket_plugins_to_deactivate', $plugins ); + + $plugins = array_filter( $plugins, 'is_plugin_active' ); + + if ( current_user_can( 'rocket_manage_options' ) + && count( $plugins ) + && rocket_valid_key() + ) { + + // translators: %s is WP Rocket plugin name. + $warning = '

    ' . sprintf( __( '%s: The following plugins are not compatible with this plugin and may cause unexpected results:', 'rocket' ), WP_ROCKET_PLUGIN_NAME ) . '

    '; + + $warning .= '
      '; + + foreach ( $plugins as $k => $plugin ) { + $plugin_data = get_plugin_data( WP_PLUGIN_DIR . DIRECTORY_SEPARATOR . $plugin ); + $warning .= '
    • ' . $plugin_data['Name'] . '' . ( isset( $plugins_explanations[ $k ] ) ? ' - ' . $plugins_explanations[ $k ] : '' ) . ' ' . __( 'Deactivate', 'rocket' ) . '
    • '; + } + + $warning .= '
    '; + + rocket_notice_html( + [ + 'status' => 'error', + 'dismissible' => '', + 'message' => $warning, + ] + ); + } +} +add_action( 'admin_notices', 'rocket_plugins_to_deactivate' ); + +/** + * Displays a warning if Rocket Footer JS plugin is active + * + * @since 3.2.3 + * @author Remy Perona + * + * @return void + */ +function rocket_warning_footer_js_plugin() { + $screen = get_current_screen(); + + if ( ! current_user_can( 'rocket_manage_options' ) ) { + return; + } + + if ( 'settings_page_wprocket' !== $screen->id ) { + return; + } + + if ( ! is_plugin_active( 'rocket-footer-js/rocket-footer-js.php' ) ) { + return; + } + + rocket_notice_html( + [ + 'status' => 'warning', + 'message' => __( 'WP Rocket Footer JS is not an official add-on. It prevents some options in WP Rocket from working correctly. Please deactivate it if you have problems.', 'rocket' ), + 'dismiss_button' => true, + ] + ); +} +add_action( 'admin_notices', 'rocket_warning_footer_js_plugin' ); + +/** + * Display a warning if Endurance Cache is not disabled + * + * @since 3.3.7 + * @author Remy Perona + * + * @return void + */ +function rocket_warning_endurance_cache() { + $screen = get_current_screen(); + + // This filter is documented in inc/admin-bar.php. + if ( ! current_user_can( apply_filters( 'rocket_capacity', 'manage_options' ) ) ) { + return; + } + + if ( 'settings_page_wprocket' !== $screen->id ) { + return; + } + + if ( ! class_exists( 'Endurance_Page_Cache' ) ) { + return; + } + + if ( 0 === (int) get_option( 'endurance_cache_level' ) ) { + return; + } + + rocket_notice_html( + [ + 'status' => 'error', + 'message' => sprintf( + // translators: %1$s = opening link tag, %2$s = closing link tag. + __( 'Endurance Cache is currently enabled, which will conflict with WP Rocket Cache. Please set the Endurance Cache cache level to Off (Level 0) on the %1$sSettings > General%2$s page to prevent any issues.', 'rocket' ), + '', + '' + ), + ] + ); +} +add_action( 'admin_notices', 'rocket_warning_endurance_cache' ); + +/** + * This warning is displayed when there is no permalink structure in the configuration. + * + * @since 1.0 + */ +function rocket_warning_using_permalinks() { + if ( current_user_can( 'rocket_manage_options' ) + && ! $GLOBALS['wp_rewrite']->using_permalinks() + && rocket_valid_key() + ) { + $message = sprintf( + /* translators: %1$s WP Rocket plugin name; %2$s = opening link; %3$s = closing link */ + __( '%1$s: A custom permalink structure is required for the plugin to work properly. %2$sGo to permalinks settings%3$s', 'rocket' ), + '' . WP_ROCKET_PLUGIN_NAME . '', + '', + '' + ); + + rocket_notice_html( + [ + 'status' => 'error', + 'dismissible' => '', + 'message' => $message, + ] + ); + } +} +add_action( 'admin_notices', 'rocket_warning_using_permalinks' ); + +/** + * This warning is displayed when the .htaccess file doesn't exist or isn't writeable + * + * @since 1.0 + */ +function rocket_warning_htaccess_permissions() { + global $is_apache; + $htaccess_file = get_home_path() . '.htaccess'; + + if ( ! current_user_can( 'rocket_manage_options' ) + || ( rocket_direct_filesystem()->is_writable( $htaccess_file ) ) + || ! $is_apache + // This filter is documented in inc/functions/htaccess.php. + || apply_filters( 'rocket_disable_htaccess', false ) + || ! rocket_valid_key() ) { + return; + } + + if ( rocket_check_htaccess_rules() ) { + return; + } + + $boxes = get_user_meta( get_current_user_id(), 'rocket_boxes', true ); + + if ( in_array( __FUNCTION__, (array) $boxes, true ) ) { + return; + } + + $message = sprintf( + // translators: %s = plugin name. + __( '%s could not modify the .htaccess file due to missing writing permissions.', 'rocket' ), + '' . WP_ROCKET_PLUGIN_NAME . '' + ); + + $message .= '
    ' . sprintf( + /* translators: This is a doc title! %1$s = opening link; %2$s = closing link */ + __( 'Troubleshoot: %1$sHow to make system files writeable%2$s', 'rocket' ), + /* translators: Documentation exists in EN, DE, FR, ES, IT; use loaclised URL if applicable */ + '', + '' + ); + + add_filter( 'rocket_htaccess_mod_rewrite', '__return_false', 42 ); + + $message .= '

    ' . __( 'Don’t worry, WP Rocket’s page caching and settings will still function correctly.', 'rocket' ) . '
    ' . __( 'For optimal performance, adding the following lines into your .htaccess is recommended (not required):', 'rocket' ) . '

    '; + + remove_filter( 'rocket_htaccess_mod_rewrite', '__return_false', 42 ); + + rocket_notice_html( + [ + 'status' => 'warning', + 'dismissible' => '', + 'message' => $message, + 'dismiss_button' => __FUNCTION__, + ] + ); +} +add_action( 'admin_notices', 'rocket_warning_htaccess_permissions' ); + +/** + * This warning is displayed when the config dir isn't writeable + * + * @since 2.0.2 + */ +function rocket_warning_config_dir_permissions() { + if ( current_user_can( 'rocket_manage_options' ) + && ( ! rocket_direct_filesystem()->is_writable( WP_ROCKET_CONFIG_PATH ) ) + && rocket_valid_key() ) { + + $boxes = get_user_meta( get_current_user_id(), 'rocket_boxes', true ); + + if ( in_array( __FUNCTION__, (array) $boxes, true ) ) { + return; + } + + $message = rocket_notice_writing_permissions( trim( str_replace( ABSPATH, '', WP_ROCKET_CONFIG_PATH ), '/' ) ); + + rocket_notice_html( + [ + 'status' => 'error', + 'dismissible' => '', + 'message' => $message, + ] + ); + + } +} +add_action( 'admin_notices', 'rocket_warning_config_dir_permissions' ); + +/** + * This warning is displayed when the cache dir isn't writeable + * + * @since 1.0 + */ +function rocket_warning_cache_dir_permissions() { + if ( current_user_can( 'rocket_manage_options' ) + && ( ! rocket_direct_filesystem()->is_writable( WP_ROCKET_CACHE_PATH ) ) + && rocket_valid_key() ) { + + $boxes = get_user_meta( get_current_user_id(), 'rocket_boxes', true ); + + if ( in_array( __FUNCTION__, (array) $boxes, true ) ) { + return; + } + + $message = rocket_notice_writing_permissions( trim( str_replace( ABSPATH, '', WP_ROCKET_CACHE_PATH ), '/' ) ); + + rocket_notice_html( + [ + 'status' => 'error', + 'dismissible' => '', + 'message' => $message, + ] + ); + } +} +add_action( 'admin_notices', 'rocket_warning_cache_dir_permissions' ); + +/** + * This warning is displayed when the minify cache dir isn't writeable + * + * @since 2.1 + */ +function rocket_warning_minify_cache_dir_permissions() { + if ( current_user_can( 'rocket_manage_options' ) + && ( ! rocket_direct_filesystem()->is_writable( WP_ROCKET_MINIFY_CACHE_PATH ) ) + && ( get_rocket_option( 'minify_css', false ) || get_rocket_option( 'minify_js', false ) ) + && rocket_valid_key() ) { + + $boxes = get_user_meta( get_current_user_id(), 'rocket_boxes', true ); + + if ( in_array( __FUNCTION__, (array) $boxes, true ) ) { + return; + } + + $message = rocket_notice_writing_permissions( trim( str_replace( ABSPATH, '', WP_ROCKET_MINIFY_CACHE_PATH ), '/' ) ); + + rocket_notice_html( + [ + 'status' => 'error', + 'dismissible' => '', + 'message' => $message, + ] + ); + } +} +add_action( 'admin_notices', 'rocket_warning_minify_cache_dir_permissions' ); + +/** + * This warning is displayed when the busting cache dir isn't writeable + * + * @since 2.9 + */ +function rocket_warning_busting_cache_dir_permissions() { + if ( current_user_can( 'rocket_manage_options' ) + && ( ! rocket_direct_filesystem()->is_writable( WP_ROCKET_CACHE_BUSTING_PATH ) ) + && rocket_valid_key() ) { + + $boxes = get_user_meta( get_current_user_id(), 'rocket_boxes', true ); + + if ( in_array( __FUNCTION__, (array) $boxes, true ) ) { + return; + } + + $message = rocket_notice_writing_permissions( trim( str_replace( ABSPATH, '', WP_ROCKET_CACHE_BUSTING_PATH ), '/' ) ); + + rocket_notice_html( + [ + 'status' => 'error', + 'dismissible' => '', + 'message' => $message, + ] + ); + } +} +add_action( 'admin_notices', 'rocket_warning_busting_cache_dir_permissions' ); + +/** + * Confirming notice when the site has been added + * + * @since 2.2 + */ +function rocket_thank_you_license() { + if ( '1' === get_rocket_option( 'license' ) ) { + $options = get_option( WP_ROCKET_SLUG ); + $options['license'] = time(); + $options['ignore'] = true; + update_option( WP_ROCKET_SLUG, $options ); + + $message = sprintf( + /* translators: %1$s = plugin name, %2$s + %3$s = opening links, %4$s = closing link */ + __( '%1$s is good to go! %2$sTest your load time%4$s, or visit your %3$ssettings%4$s.', 'rocket' ), + '' . WP_ROCKET_PLUGIN_NAME . '', + '', + '', + '' + ); + + rocket_notice_html( [ 'message' => $message ] ); + } +} +add_action( 'admin_notices', 'rocket_thank_you_license' ); + +/** + * This notice is displayed after purging OPcache + * + * @since 3.4.1 + * @author Soponar Cristina + */ +function rocket_opcache_purge_result() { + if ( ! current_user_can( 'rocket_purge_opcache' ) ) { + return; + } + + if ( ! is_admin() ) { + return; + } + + $user_id = get_current_user_id(); + $notice = get_transient( $user_id . '_opcache_purge_result' ); + if ( ! $notice ) { + return; + } + + delete_transient( $user_id . '_opcache_purge_result' ); + + rocket_notice_html( + [ + 'status' => $notice['result'], + 'message' => $notice['message'], + ] + ); +} +add_action( 'admin_notices', 'rocket_opcache_purge_result' ); + +/** + * Displays a notice for analytics opt-in + * + * @since 2.11 + * @author Remy Perona + */ +function rocket_analytics_optin_notice() { + + $screen = get_current_screen(); + + if ( ! current_user_can( 'rocket_manage_options' ) ) { + return; + } + + if ( 'settings_page_wprocket' !== $screen->id ) { + return; + } + + if ( 1 === (int) get_option( 'rocket_analytics_notice_displayed' ) ) { + return; + } + + if ( get_rocket_option( 'analytics_enabled' ) ) { + return; + } + + $analytics_notice = sprintf( + // Opening

    provided by rocket_notice_html(). + '%1$s
    %2$s

    ', + __( 'Would you allow WP Rocket to collect non-sensitive diagnostic data from this website?', 'rocket' ), + __( 'This would help us to improve WP Rocket for you in the future.', 'rocket' ) + ); + + $analytics_notice .= sprintf( + '

    ', + /* translators: button text, click will expand data collection preview */ + __( 'What info will we collect?', 'rocket' ) + ); + + $analytics_notice .= sprintf( + '

    %1$s

    %2$s
    ', + __( 'Below is a detailed view of all data WP Rocket will collect if granted permission. WP Rocket will never transmit any domain names or email addresses (except for license validation), IP addresses, or third-party API keys.', 'rocket' ), + rocket_data_collection_preview_table() + ); + + $analytics_notice .= sprintf( + '

    %2$s %4$s', + // Closing

    provided by rocket_notice_html(). + wp_nonce_url( admin_url( 'admin-post.php?action=rocket_analytics_optin&value=yes' ), 'analytics_optin' ), + /* translators: button text for data collection opt-in */ + __( 'Yes, allow', 'rocket' ), + wp_nonce_url( admin_url( 'admin-post.php?action=rocket_analytics_optin&value=no' ), 'analytics_optin' ), + /* translators: button text for data collection opt-in */ + __( 'No, thanks', 'rocket' ) + ); + + // Status should be as neutral as possible; nothing has happened yet. + rocket_notice_html( + [ + 'status' => 'info', + 'message' => $analytics_notice, + ] + ); +} +add_action( 'admin_notices', 'rocket_analytics_optin_notice' ); + +/** + * Displays a notice after analytics opt-in + * + * @since 2.11 + * @author Remy Perona + */ +function rocket_analytics_optin_thankyou_notice() { + $screen = get_current_screen(); + + if ( ! current_user_can( 'rocket_manage_options' ) ) { + return; + } + + if ( 'settings_page_wprocket' !== $screen->id ) { + return; + } + + $analytics_optin = get_transient( 'rocket_analytics_optin' ); + + if ( ! $analytics_optin ) { + return; + } + + $thankyou_message = sprintf( + // Opening

    provided by rocket_notice_html(). + '%s

    ', + __( 'Thank you!', 'rocket' ) + ); + + $thankyou_message .= sprintf( + '

    %1$s

    %2$s
    ', + __( 'WP Rocket now collects these metrics from your website:', 'rocket' ), + rocket_data_collection_preview_table() + ); + + // Closing

    provided by rocket_notice_html(). + $thankyou_message .= '

    '; + + rocket_notice_html( + [ + 'message' => $thankyou_message, + ] + ); + + delete_transient( 'rocket_analytics_optin' ); +} +add_action( 'admin_notices', 'rocket_analytics_optin_thankyou_notice' ); + +/** + * Displays a notice after clearing the cache + * + * @since 2.11 + * @author Remy Perona + */ +function rocket_clear_cache_notice() { + $cleared_cache = get_transient( 'rocket_clear_cache' ); + + if ( ! $cleared_cache ) { + return; + } + + delete_transient( 'rocket_clear_cache' ); + + $notice = ''; + + switch ( $cleared_cache ) { + case 'all': + if ( current_user_can( 'rocket_purge_cache' ) ) { + // translators: %s = plugin name. + $notice = sprintf( __( '%s: Cache cleared.', 'rocket' ), '' . WP_ROCKET_PLUGIN_NAME . '' ); + $notice .= ' (' . date_i18n( get_option( 'date_format' ) ) . ' @ ' . date_i18n( get_option( 'time_format' ) ) . ') '; + } + break; + case 'post': + if ( current_user_can( 'rocket_purge_posts' ) ) { + // translators: %s = plugin name. + $notice = sprintf( __( '%s: Post cache cleared.', 'rocket' ), '' . WP_ROCKET_PLUGIN_NAME . '' ); + $notice .= ' (' . date_i18n( get_option( 'date_format' ) ) . ' @ ' . date_i18n( get_option( 'time_format' ) ) . ') '; + } + break; + case 'term': + if ( current_user_can( 'rocket_purge_terms' ) ) { + // translators: %s = plugin name. + $notice = sprintf( __( '%s: Term cache cleared.', 'rocket' ), '' . WP_ROCKET_PLUGIN_NAME . '' ); + $notice .= ' (' . date_i18n( get_option( 'date_format' ) ) . ' @ ' . date_i18n( get_option( 'time_format' ) ) . ') '; + } + break; + case 'user': + if ( current_user_can( 'rocket_purge_users' ) ) { + // translators: %s = plugin name). + $notice = sprintf( __( '%s: User cache cleared.', 'rocket' ), '' . WP_ROCKET_PLUGIN_NAME . '' ); + $notice .= ' (' . date_i18n( get_option( 'date_format' ) ) . ' @ ' . date_i18n( get_option( 'time_format' ) ) . ') '; + } + break; + default: + break; + } + + if ( empty( $notice ) ) { + return; + } + + rocket_notice_html( + [ + 'message' => $notice, + ] + ); +} +add_action( 'admin_notices', 'rocket_clear_cache_notice' ); + +/** + * Outputs notice HTML + * + * @since 2.11 + * @author Remy Perona + * + * @param array $args An array of arguments used to determine the notice output. + * @return void + */ +function rocket_notice_html( $args ) { + $defaults = [ + 'status' => 'success', + 'dismissible' => 'is-dismissible', + 'message' => '', + 'action' => '', + 'dismiss_button' => false, + 'readonly_content' => '', + ]; + + $args = wp_parse_args( $args, $defaults ); + + switch ( $args['action'] ) { + case 'clear_cache': + $args['action'] = '' . __( 'Clear cache', 'rocket' ) . ''; + break; + case 'stop_preload': + $args['action'] = '' . __( 'Stop Preload', 'rocket' ) . ''; + break; + case 'force_deactivation': + /** + * Allow a "force deactivation" link to be printed, use at your own risks + * + * @since 2.0.0 + * + * @param bool $permit_force_deactivation true will print the link. + */ + $permit_force_deactivation = apply_filters( 'rocket_permit_force_deactivation', true ); + + // We add a link to permit "force deactivation", use at your own risks. + if ( $permit_force_deactivation ) { + global $status, $page, $s; + $plugin_file = 'wp-rocket/wp-rocket.php'; + $rocket_nonce = wp_create_nonce( 'force_deactivation' ); + + $args['action'] = '' . __( 'Force deactivation ', 'rocket' ) . ''; + } + break; + } + + ?> +

    + ' : '' ) . $args['message'] . ( $tag ? '

    ' : '' ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Dynamic content is properly escaped in the view. + ?> + +

    +
    +

    + +

    + + + + +

    + +
    + ' . WP_ROCKET_PLUGIN_NAME . '' + ); + + $message .= '
    ' . sprintf( + /* translators: %s = file/folder name */ + __( 'Affected file/folder: %s', 'rocket' ), + '' . $file . '' + ); + + $message .= '
    ' . sprintf( + /* translators: This is a doc title! %1$s = opening link; %2$s = closing link */ + __( 'Troubleshoot: %1$sHow to make system files writeable%2$s', 'rocket' ), + /* translators: Documentation exists in EN, DE, FR, ES, IT; use loaclised URL if applicable */ + '', + '' + ); + + return $message; +} diff --git a/wp-content/plugins/wp-rocket/inc/admin/upgrader.php b/wp-content/plugins/wp-rocket/inc/admin/upgrader.php new file mode 100644 index 0000000..562fae8 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/admin/upgrader.php @@ -0,0 +1,375 @@ + $secret_cache_key, + 'cache_mobile' => 1, + 'do_caching_mobile_files' => 0, + 'cache_webp' => 0, + 'cache_logged_user' => 0, + 'cache_ssl' => 1, + 'emoji' => 1, + 'embeds' => 0, + 'cache_reject_uri' => [], + 'cache_reject_cookies' => [], + 'cache_reject_ua' => [], + 'cache_query_strings' => [], + 'cache_purge_pages' => [], + 'purge_cron_interval' => 10, + 'purge_cron_unit' => 'HOUR_IN_SECONDS', + 'exclude_css' => [], + 'exclude_js' => [], + 'exclude_inline_js' => [], + 'defer_all_js' => 0, + 'defer_all_js_safe' => 1, + 'async_css' => 0, + 'critical_css' => '', + 'lazyload' => 0, + 'lazyload_iframes' => 0, + 'lazyload_youtube' => 0, + 'minify_css' => 0, + 'minify_css_key' => $minify_css_key, + 'minify_concatenate_css' => 0, + 'minify_js' => 0, + 'minify_js_key' => $minify_js_key, + 'minify_concatenate_js' => 0, + 'minify_google_fonts' => 1, + 'manual_preload' => 1, + 'sitemap_preload' => 0, + 'sitemap_preload_url_crawl' => '500000', + 'sitemaps' => [], + 'dns_prefetch' => 0, + 'preload_fonts' => [], + 'database_revisions' => 0, + 'database_auto_drafts' => 0, + 'database_trashed_posts' => 0, + 'database_spam_comments' => 0, + 'database_trashed_comments' => 0, + 'database_expired_transients' => 0, + 'database_all_transients' => 0, + 'database_optimize_tables' => 0, + 'schedule_automatic_cleanup' => 0, + 'automatic_cleanup_frequency' => 'daily', + 'cdn' => 0, + 'cdn_cnames' => [], + 'cdn_zone' => [], + 'cdn_reject_files' => [], + 'do_cloudflare' => 0, + 'cloudflare_email' => '', + 'cloudflare_api_key' => '', + 'cloudflare_zone_id' => '', + 'cloudflare_devmode' => 0, + 'cloudflare_protocol_rewrite' => 0, + 'cloudflare_auto_settings' => 0, + 'cloudflare_old_settings' => '', + 'control_heartbeat' => 0, + 'heartbeat_site_behavior' => 'reduce_periodicity', + 'heartbeat_admin_behavior' => 'reduce_periodicity', + 'heartbeat_editor_behavior' => 'reduce_periodicity', + 'varnish_auto_purge' => 0, + 'do_beta' => 0, + 'analytics_enabled' => 0, + 'google_analytics_cache' => 0, + 'facebook_pixel_cache' => 0, + 'sucury_waf_cache_sync' => 0, + 'sucury_waf_api_key' => '', + ] + ) + ); + rocket_dismiss_box( 'rocket_warning_plugin_modification' ); +} +add_action( 'wp_rocket_first_install', 'rocket_first_install' ); + +/** + * What to do when Rocket is updated, depending on versions + * + * @since 1.0 + * + * @param string $wp_rocket_version Latest WP Rocket version. + * @param string $actual_version Installed WP Rocket version. + */ +function rocket_new_upgrade( $wp_rocket_version, $actual_version ) { + if ( version_compare( $actual_version, '2.4.1', '<' ) ) { + delete_transient( 'rocket_ask_for_update' ); + } + + if ( version_compare( $actual_version, '2.8', '<' ) ) { + $options = get_option( WP_ROCKET_SLUG ); + $options['manual_preload'] = 1; + $options['automatic_preload'] = 1; + $options['sitemap_preload_url_crawl'] = '500000'; + + update_option( WP_ROCKET_SLUG, $options ); + } + + // Deactivate CloudFlare completely if PHP Version is lower than 5.4. + if ( version_compare( $actual_version, '2.8.16', '<' ) ) { + $options = get_option( WP_ROCKET_SLUG ); + $options['do_cloudflare'] = 0; + $options['cloudflare_email'] = ''; + $options['cloudflare_api_key'] = ''; + $options['cloudflare_devmode'] = 0; + $options['cloudflare_protocol_rewrite'] = 0; + $options['cloudflare_auto_settings'] = 0; + $options['cloudflare_old_settings'] = ''; + + update_option( WP_ROCKET_SLUG, $options ); + } + + // Disable minification options if they're active in Autoptimize. + if ( version_compare( $actual_version, '2.9.5', '<' ) ) { + if ( is_plugin_active( 'autoptimize/autoptimize.php' ) ) { + if ( 'on' === get_option( 'autoptimize_css' ) ) { + update_rocket_option( 'minify_css', 0 ); + } + + if ( 'on' === get_option( 'autoptimize_js' ) ) { + update_rocket_option( 'minify_js', 0 ); + } + } + } + + // Delete old transients. + if ( version_compare( $actual_version, '2.9.7', '<' ) ) { + delete_transient( 'rocket_check_licence_30' ); + delete_transient( 'rocket_check_licence_1' ); + } + + if ( version_compare( $actual_version, '2.11', '<' ) ) { + rocket_clean_minify(); + } + + if ( version_compare( $actual_version, '3.2', '<' ) ) { + // Default Heartbeat settings. + $options = get_option( WP_ROCKET_SLUG, [] ); + $options['heartbeat_site_behavior'] = 'reduce_periodicity'; + $options['heartbeat_admin_behavior'] = 'reduce_periodicity'; + $options['heartbeat_editor_behavior'] = 'reduce_periodicity'; + + if ( ! empty( $options['automatic_preload'] ) || ! empty( $options['sitemap_preload'] ) ) { + $options['manual_preload'] = 1; + } + + update_option( WP_ROCKET_SLUG, $options ); + rocket_generate_config_file(); + + // Create a .htaccess file in the log folder. + $handler = Logger::get_stream_handler(); + + if ( method_exists( $handler, 'create_htaccess_file' ) ) { + try { + $success = $handler->create_htaccess_file(); + } catch ( \Exception $e ) { + $success = false; + } + + if ( ! $success ) { + Logger::delete_log_file(); + } + } + } + + if ( version_compare( $actual_version, '3.2.0.1', '<' ) ) { + wp_safe_remote_get( esc_url( home_url() ) ); + } + + if ( version_compare( $actual_version, '3.3.6', '<' ) ) { + delete_site_transient( 'update_wprocket' ); + delete_site_transient( 'update_wprocket_response' ); + + if ( get_rocket_option( 'do_cloudflare' ) && get_rocket_option( 'cloudflare_auto_settings' ) ) { + if ( function_exists( 'set_rocket_cloudflare_browser_cache_ttl' ) ) { + set_rocket_cloudflare_browser_cache_ttl( '31536000' ); + } + } + } + + if ( rocket_is_ssl_website() ) { + if ( 1 !== (int) get_rocket_option( 'cache_ssl' ) ) { + update_rocket_option( 'cache_ssl', 1 ); + rocket_generate_config_file(); + } + } + + if ( version_compare( $actual_version, '3.4', '<' ) ) { + wp_clear_scheduled_hook( 'rocket_purge_time_event' ); + } + + if ( version_compare( $actual_version, '3.6', '<' ) ) { + rocket_clean_cache_busting(); + rocket_clean_domain(); + } + + if ( version_compare( $actual_version, '3.6.1', '<' ) ) { + rocket_generate_config_file(); + } + + if ( version_compare( $actual_version, '3.7', '<' ) ) { + rocket_clean_minify( 'css' ); + rocket_generate_advanced_cache_file(); + } +} +add_action( 'wp_rocket_upgrade', 'rocket_new_upgrade', 10, 2 ); diff --git a/wp-content/plugins/wp-rocket/inc/classes/Buffer/class-abstract-buffer.php b/wp-content/plugins/wp-rocket/inc/classes/Buffer/class-abstract-buffer.php new file mode 100644 index 0000000..0068ca9 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/classes/Buffer/class-abstract-buffer.php @@ -0,0 +1,160 @@ +tests = $tests; + } + + /** ----------------------------------------------------------------------------------------- */ + /** PROCESS ================================================================================= */ + /** ----------------------------------------------------------------------------------------- */ + + /** + * Launch the process if the tests succeed. + * This should be the first thing to use after initializing the class. + * + * @since 3.3 + * @access public + * @see $this->tests->can_init_process() + * @author Grégory Viguier + */ + abstract public function maybe_init_process(); + + /** + * Process the page buffer if the 2nd set of tests succeed. + * It should be used like this: + * ob_start( [ $this, 'maybe_process_buffer' ] ); + * + * @since 3.3 + * @access public + * @see $this->tests->can_process_buffer() + * @author Grégory Viguier + * + * @param string $buffer The buffer content. + * @return string The buffered content + */ + abstract public function maybe_process_buffer( $buffer ); + + /** ----------------------------------------------------------------------------------------- */ + /** LOG ===================================================================================== */ + /** ----------------------------------------------------------------------------------------- */ + + /** + * Log the last test "error". + * + * @since 3.3 + * @access protected + * @author Grégory Viguier + */ + protected function log_last_test_error() { + $error = $this->tests->get_last_error(); + + $this->log( $error['message'], $error['data'] ); + } + + /** + * Log events. + * + * @since 3.3 + * @access protected + * @author Grégory Viguier + * + * @param string $message A message to log. + * @param array $data Related data. + * @param string $type Event type to log. Possible values are 'info', 'error', and 'debug' (default). + */ + protected function log( $message, $data = [], $type = 'debug' ) { + $data = array_merge( + [ + $this->get_process_id(), + 'request_uri' => $this->tests->get_raw_request_uri(), + ], + $data + ); + + if ( isset( $data['cookies'] ) ) { + $data['cookies'] = Logger::remove_auth_cookies( $data['cookies'] ); + } + + switch ( $type ) { + case 'info': + Logger::info( $message, $data ); + break; + case 'error': + Logger::error( $message, $data ); + break; + default: + Logger::debug( $message, $data ); + } + } + + /** + * Get the process identifier. + * + * @since 3.3 + * @access public + * @author Grégory Viguier + * + * @return string + */ + public function get_process_id() { + return $this->process_id . ' - Thread #' . Logger::get_thread_id(); + } + + /** ----------------------------------------------------------------------------------------- */ + /** VARIOUS TOOLS =========================================================================== */ + /** ----------------------------------------------------------------------------------------- */ + + /** + * Tell if the page content is HTML. + * + * @since 3.3 + * @access protected + * @author Grégory Viguier + * + * @param string $buffer The buffer content. + * @return bool + */ + protected function is_html( $buffer ) { + return preg_match( '/<\/html>/i', $buffer ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/classes/Buffer/class-cache.php b/wp-content/plugins/wp-rocket/inc/classes/Buffer/class-cache.php new file mode 100644 index 0000000..5ae2515 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/classes/Buffer/class-cache.php @@ -0,0 +1,704 @@ +config = $config; + $this->cache_dir_path = rtrim( $args['cache_dir_path'], '/' ) . '/'; + + parent::__construct( $tests ); + + $this->log( 'CACHING PROCESS STARTED.', [], 'info' ); + } + + /** ----------------------------------------------------------------------------------------- */ + /** CACHE =================================================================================== */ + /** ----------------------------------------------------------------------------------------- */ + + /** + * Serve the cache file if it exists. If not, init the buffer. + * + * @since 3.3 + * @access public + * @author Grégory Viguier + */ + public function maybe_init_process() { + if ( ! $this->tests->can_init_process() ) { + $this->define_donotoptimize_true(); + $this->log_last_test_error(); + return; + } + + /** + * Serve the cache file if it exists. + */ + $cache_filepath = $this->get_cache_path(); + + $this->log( + 'Looking for cache file.', + [ + 'path' => $cache_filepath, + ] + ); + + $cache_filepath_gzip = $cache_filepath . '_gzip'; + $accept_encoding = $this->config->get_server_input( 'HTTP_ACCEPT_ENCODING' ); + $accept_gzip = $accept_encoding && false !== strpos( $accept_encoding, 'gzip' ); + + // Check if cache file exist. + if ( $accept_gzip && is_readable( $cache_filepath_gzip ) ) { + $this->serve_gzip_cache_file( $cache_filepath_gzip ); + } + + if ( is_readable( $cache_filepath ) ) { + $this->serve_cache_file( $cache_filepath ); + } + + // Maybe we're looking for a webp file. + $cache_filename = basename( $cache_filepath ); + + if ( strpos( $cache_filename, '-webp' ) !== false ) { + // We're looking for a webp file that doesn't exist: try to locate any `.no-webp` file. + $cache_dir_path = rtrim( dirname( $cache_filepath ), '/\\' ) . DIRECTORY_SEPARATOR; + + if ( file_exists( $cache_dir_path . '.no-webp' ) ) { + // We have a `.no-webp` file: try to deliver a non-webp cache file. + $cache_filepath = $cache_dir_path . str_replace( '-webp', '', $cache_filename ); + $cache_filepath_gzip = $cache_filepath . '_gzip'; + + $this->log( + 'Looking for non-webp cache file.', + [ + 'path' => $cache_filepath, + ] + ); + + // Try to deliver the non-webp version instead. + if ( $accept_gzip && is_readable( $cache_filepath_gzip ) ) { + $this->serve_gzip_cache_file( $cache_filepath_gzip ); + } + + if ( is_readable( $cache_filepath ) ) { + $this->serve_cache_file( $cache_filepath ); + } + } + } + + /** + * No cache file yet: launch caching process. + */ + $this->log( + 'Start buffer.', + [ + 'path' => $cache_filepath, + ] + ); + + ob_start( [ $this, 'maybe_process_buffer' ] ); + } + + /** + * Serve a cache file. + * + * @since 3.3 + * @access private + * @author Grégory Viguier + * + * @param string $cache_filepath Path to the cache file. + */ + private function serve_cache_file( $cache_filepath ) { + header( 'Last-Modified: ' . gmdate( 'D, d M Y H:i:s', filemtime( $cache_filepath ) ) . ' GMT' ); + + $if_modified_since = $this->get_if_modified_since(); + + // Checking if the client is validating his cache and if it is current. + if ( $if_modified_since && ( strtotime( $if_modified_since ) === @filemtime( $cache_filepath ) ) ) { + // Client's cache is current, so we just respond '304 Not Modified'. + header( $this->config->get_server_input( 'SERVER_PROTOCOL', '' ) . ' 304 Not Modified', true, 304 ); + header( 'Expires: ' . gmdate( 'D, d M Y H:i:s' ) . ' GMT' ); + header( 'Cache-Control: no-cache, must-revalidate' ); + + $this->log( + 'Serving `304` cache file.', + [ + 'path' => $cache_filepath, + 'modified' => $if_modified_since, + ], + 'info' + ); + exit; + } + + // Serve the cache if file isn't store in the client browser cache. + readfile( $cache_filepath ); + + $this->log( + 'Serving cache file.', + [ + 'path' => $cache_filepath, + 'modified' => $if_modified_since, + ], + 'info' + ); + exit; + } + + /** + * Serve a gzipped cache file. + * + * @since 3.3 + * @access private + * @author Grégory Viguier + * + * @param string $cache_filepath Path to the gzip cache file. + */ + private function serve_gzip_cache_file( $cache_filepath ) { + header( 'Last-Modified: ' . gmdate( 'D, d M Y H:i:s', filemtime( $cache_filepath ) ) . ' GMT' ); + + $if_modified_since = $this->get_if_modified_since(); + + // Checking if the client is validating his cache and if it is current. + if ( $if_modified_since && ( strtotime( $if_modified_since ) === @filemtime( $cache_filepath ) ) ) { + // Client's cache is current, so we just respond '304 Not Modified'. + header( $this->config->get_server_input( 'SERVER_PROTOCOL', '' ) . ' 304 Not Modified', true, 304 ); + header( 'Expires: ' . gmdate( 'D, d M Y H:i:s' ) . ' GMT' ); + header( 'Cache-Control: no-cache, must-revalidate' ); + + $this->log( + 'Serving `304` gzip cache file.', + [ + 'path' => $cache_filepath, + 'modified' => $if_modified_since, + ], + 'info' + ); + exit; + } + + // Serve the cache if file isn't store in the client browser cache. + readgzfile( $cache_filepath ); + + $this->log( + 'Serving gzip cache file.', + [ + 'path' => $cache_filepath, + 'modified' => $if_modified_since, + ], + 'info' + ); + exit; + } + + /** + * Maybe cache the page content. + * + * @since 3.3 + * @access public + * @author Grégory Viguier + * + * @param string $buffer The buffer content. + * @return string The buffered content. + */ + public function maybe_process_buffer( $buffer ) { + if ( ! $this->tests->can_process_buffer( $buffer ) ) { + $this->log_last_test_error(); + return $buffer; + } + + $footprint = ''; + $is_html = $this->is_html( $buffer ); + + if ( ! static::can_generate_caching_files() ) { + // Not allowed to generate cache files. + if ( $is_html ) { + $footprint = $this->get_rocket_footprint(); + } + + $this->log( + 'Page not cached by filter.', + [ + 'filter' => 'do_rocket_generate_caching_files', + ] + ); + return $buffer . $footprint; + } + + $webp_enabled = preg_match( '@@', $buffer, $webp_tag ); + $has_webp = ! empty( $webp_tag ) ? 'has' === $webp_tag[1] : false; + $cache_filepath = $this->get_cache_path( [ 'webp' => $has_webp ] ); + $cache_dir_path = dirname( $cache_filepath ); + + // Create cache folders. + rocket_mkdir_p( $cache_dir_path ); + + if ( $is_html ) { + $footprint = $this->get_rocket_footprint( time() ); + } + + // Webp request. + if ( $webp_enabled ) { + $buffer = str_replace( $webp_tag[0], '', $buffer ); + + if ( ! $has_webp ) { + // The buffer doesn’t contain webp files. + $cache_dir_path = rtrim( dirname( $cache_filepath ), '/\\' ); + + $this->maybe_create_nowebp_file( $cache_dir_path ); + } + } + + $this->write_cache_file( $cache_filepath, $buffer . $footprint ); + $this->maybe_create_nginx_mobile_file( $cache_dir_path ); + + // Send headers with the last modified time of the cache file. + if ( file_exists( $cache_filepath ) ) { + header( 'Last-Modified: ' . gmdate( 'D, d M Y H:i:s', filemtime( $cache_filepath ) ) . ' GMT' ); + } + + if ( $is_html ) { + $footprint = $this->get_rocket_footprint(); + } + + $this->log( + 'Page cached.', + [ + 'path' => $cache_filepath, + ], + 'info' + ); + + return $buffer . $footprint; + } + + /** + * Writes the cache file(s) + * + * @since 3.5 + * @author Remy Perona + * + * @param string $cache_filepath Absolute path to the cache file. + * @param string $content Content to write in the cache file. + * @return void + */ + private function write_cache_file( $cache_filepath, $content ) { + $gzip_filepath = $cache_filepath . '_gzip'; + $temp_filepath = $cache_filepath . '_temp'; + $temp_gzip_filepath = $gzip_filepath . '_temp'; + + if ( rocket_direct_filesystem()->exists( $temp_filepath ) ) { + return; + } + + // Save the cache file. + rocket_put_content( $temp_filepath, $content ); + rocket_direct_filesystem()->move( $temp_filepath, $cache_filepath, true ); + + if ( function_exists( 'gzencode' ) ) { + /** + * Filters the Gzip compression level to use for the cache file + * + * @param int $compression_level Compression level between 0 and 9. + */ + $compression_level = apply_filters( 'rocket_gzencode_level_compression', 6 ); + + rocket_put_content( $temp_gzip_filepath, gzencode( $content, $compression_level ) ); + rocket_direct_filesystem()->move( $temp_gzip_filepath, $gzip_filepath, true ); + } + } + + /** + * Get the path to the cache file. + * + * @since 3.3 + * @access public + * @author Grégory Viguier + * + * @param array $args { + * A list of arguments. + * + * @type bool $webp Set to false to prevent adding the part related to webp. + * } + * @return string + */ + public function get_cache_path( $args = [] ) { + $args = array_merge( + [ + 'webp' => true, + ], + $args + ); + $cookies = $this->tests->get_cookies(); + $request_uri_path = $this->get_request_cache_path( $cookies ); + $filename = 'index'; + + $filename = $this->maybe_mobile_filename( $filename ); + + // Rename the caching filename for SSL URLs. + if ( is_ssl() && $this->config->get_config( 'cache_ssl' ) ) { + $filename .= '-https'; + } + + if ( $args['webp'] ) { + $filename = $this->maybe_webp_filename( $filename ); + } + + $filename = $this->maybe_dynamic_cookies_filename( $filename, $cookies ); + + // Ensure proper formatting of the path. + $request_uri_path = preg_replace_callback( '/%[0-9A-F]{2}/', [ $this, 'reset_lowercase' ], $request_uri_path ); + // Directories in Windows can't contain question marks. + $request_uri_path = str_replace( '?', '#', $request_uri_path ); + // Limit filename max length to 255 characters. + $request_uri_path .= '/' . substr( $filename, 0, 250 ) . '.html'; + + return $request_uri_path; + } + + /** ----------------------------------------------------------------------------------------- */ + /** VARIOUS TOOLS =========================================================================== */ + /** ----------------------------------------------------------------------------------------- */ + /** + * Declares and sets value of constant preventing Optimizations. + * + * @since 3.3 + * @access private + * @author Grégory Viguier + */ + final private function define_donotoptimize_true() { + if ( ! defined( 'DONOTROCKETOPTIMIZE' ) ) { + define( 'DONOTROCKETOPTIMIZE', true ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + } + } + + /** + * Gets If-modified-since header value + * + * @since 3.3 + * @access private + * @author Remy Perona + * @return string + */ + private function get_if_modified_since() { + if ( function_exists( 'apache_request_headers' ) ) { + $headers = apache_request_headers(); + + return isset( $headers['If-Modified-Since'] ) ? $headers['If-Modified-Since'] : ''; + } + + return $this->config->get_server_input( 'HTTP_IF_MODIFIED_SINCE', '' ); + } + + /** + * Get WP Rocket footprint + * + * @since 3.0.5 White label footprint if WP_ROCKET_WHITE_LABEL_FOOTPRINT is defined. + * @since 2.0 + * + * @param int $time UNIX timestamp when the cache file was saved. + * @return string The footprint that will be printed + */ + private function get_rocket_footprint( $time = '' ) { + $footprint = defined( 'WP_ROCKET_WHITE_LABEL_FOOTPRINT' ) ? + "\n" . ''; + return $footprint; + } + + /** + * Create a hidden empty file for mobile detection on NGINX with the Rocket NGINX configuration. + * + * @param string $cache_dir_path Path to the current cache directory. + * @return void + */ + private function maybe_create_nginx_mobile_file( $cache_dir_path ) { + global $is_nginx; + + if ( ! $this->config->get_config( 'do_caching_mobile_files' ) ) { + return; + } + + if ( ! $is_nginx ) { + return; + } + + $nginx_mobile_detect = $cache_dir_path . '/.mobile-active'; + + if ( rocket_direct_filesystem()->exists( $nginx_mobile_detect ) ) { + return; + } + + rocket_direct_filesystem()->touch( $nginx_mobile_detect ); + } + + /** + * Create a hidden empty file when webp is enabled but the buffer doesn’t contain webp files. + * + * @since 3.4 + * @access private + * @author Grégory Viguier + * + * @param string $cache_dir_path Path to the current cache directory (without trailing slah). + */ + private function maybe_create_nowebp_file( $cache_dir_path ) { + $nowebp_filepath = $cache_dir_path . DIRECTORY_SEPARATOR . '.no-webp'; + + if ( rocket_direct_filesystem()->exists( $nowebp_filepath ) ) { + return; + } + + rocket_direct_filesystem()->touch( $nowebp_filepath ); + } + + /** + * Tell if generating cache files is allowed. + * + * @since 3.3 + * @access public + * @author Grégory Viguier + * + * @return bool + */ + public static function can_generate_caching_files() { + /** + * Allow to the generate the caching file. + * + * @since 2.5 + * + * @param bool True will force the cache file generation. + */ + return (bool) apply_filters( 'do_rocket_generate_caching_files', true ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + } + + /** + * Gets the base cache path for the current request + * + * @since 3.3 + * @author Remy Perona + * + * @param array $cookies Cookies for the current request. + * @return string + */ + private function get_request_cache_path( $cookies ) { + $host = $this->config->get_host(); + + if ( $this->config->get_config( 'url_no_dots' ) ) { + $host = str_replace( '.', '_', $host ); + } + + $request_uri = $this->tests->get_clean_request_uri(); + $cookie_hash = $this->config->get_config( 'cookie_hash' ); + $logged_in_cookie = $this->config->get_config( 'logged_in_cookie' ); + $logged_in_cookie_no_hash = str_replace( $cookie_hash, '', $logged_in_cookie ); + + // Get cache folder of host name. + if ( $logged_in_cookie && isset( $cookies[ $logged_in_cookie ] ) && ! $this->tests->has_rejected_cookie( $logged_in_cookie_no_hash ) ) { + if ( $this->config->get_config( 'common_cache_logged_users' ) ) { + return $this->cache_dir_path . $host . '-loggedin' . rtrim( $request_uri, '/' ); + } + + $user_key = explode( '|', $cookies[ $logged_in_cookie ] ); + $user_key = reset( $user_key ); + $user_key = $user_key . '-' . $this->config->get_config( 'secret_cache_key' ); + + // Get cache folder of host name. + return $this->cache_dir_path . $host . '-' . $user_key . rtrim( $request_uri, '/' ); + } + + return $this->cache_dir_path . $host . rtrim( $request_uri, '/' ); + } + + /** + * Modifies the filename if the request is from a mobile device. + * + * @since 3.3 + * @author Remy Perona + * + * @param string $filename Cache filename. + * @return string + */ + private function maybe_mobile_filename( $filename ) { + $cache_mobile_files_tablet = $this->config->get_config( 'cache_mobile_files_tablet' ); + + if ( ! ( $this->config->get_config( 'cache_mobile' ) && $this->config->get_config( 'do_caching_mobile_files' ) ) ) { + return $filename; + } + + if ( ! $cache_mobile_files_tablet ) { + return $filename; + } + + if ( ! class_exists( 'WP_Rocket_Mobile_Detect' ) ) { + return $filename; + } + + $detect = new \WP_Rocket_Mobile_Detect(); + + if ( $detect->isMobile() && ! $detect->isTablet() && 'desktop' === $cache_mobile_files_tablet || ( $detect->isMobile() || $detect->isTablet() ) && 'mobile' === $cache_mobile_files_tablet ) { + return $filename .= '-mobile'; + } + + return $filename; + } + + /** + * Modifies the filename if the request is WebP compatible + * + * @since 3.4 + * @author Remy Perona + * + * @param string $filename Cache filename. + * @return string + */ + private function maybe_webp_filename( $filename ) { + if ( ! $this->config->get_config( 'cache_webp' ) ) { + return $filename; + } + + /** + * Force WP Rocket to disable its webp cache. + * + * @since 3.4 + * @author Grégory Viguier + * + * @param bool $disable_webp_cache Set to true to disable the webp cache. + */ + $disable_webp_cache = apply_filters( 'rocket_disable_webp_cache', false ); + + if ( $disable_webp_cache ) { + return $filename; + } + + $http_accept = $this->config->get_server_input( 'HTTP_ACCEPT', '' ); + + if ( ! $http_accept && function_exists( 'apache_request_headers' ) ) { + $headers = apache_request_headers(); + $http_accept = isset( $headers['Accept'] ) ? $headers['Accept'] : ''; + } + + if ( ! $http_accept || false === strpos( $http_accept, 'webp' ) ) { + if ( preg_match( '#Firefox/(?[0-9]{2})#i', $this->config->get_server_input( 'HTTP_USER_AGENT' ), $matches ) ) { + if ( 66 <= (int) $matches['version'] ) { + return $filename . '-webp'; + } + } + + return $filename; + } + + return $filename . '-webp'; + } + + /** + * Modifies the filename if dynamic cookies are set + * + * @param string $filename Cache filename. + * @param array $cookies Cookies for the request. + * @return string + */ + private function maybe_dynamic_cookies_filename( $filename, $cookies ) { + $cache_dynamic_cookies = $this->config->get_config( 'cache_dynamic_cookies' ); + + if ( ! $cache_dynamic_cookies ) { + return $filename; + } + + foreach ( $cache_dynamic_cookies as $key => $cookie_name ) { + if ( is_array( $cookie_name ) ) { + if ( isset( $_COOKIE[ $key ] ) ) { + foreach ( $cookie_name as $cookie_key ) { + if ( '' !== $cookies[ $key ][ $cookie_key ] ) { + $cache_key = $cookies[ $key ][ $cookie_key ]; + $cache_key = preg_replace( '/[^a-z0-9_\-]/i', '-', $cache_key ); + $filename .= '-' . $cache_key; + } + } + } + continue; + } + + if ( isset( $cookies[ $cookie_name ] ) && '' !== $cookies[ $cookie_name ] ) { + $cache_key = $cookies[ $cookie_name ]; + $cache_key = preg_replace( '/[^a-z0-9_\-]/i', '-', $cache_key ); + $filename .= '-' . $cache_key; + } + } + + return $filename; + } + + /** + * Force lowercase on encoded url strings from different alphabets to prevent issues on some hostings. + * + * @since 3.3 + * @access protected + * @author Grégory Viguier + * + * @param array $matches Cache path. + * @return string Cache path in lowercase. + */ + protected function reset_lowercase( $matches ) { + return strtolower( $matches[0] ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/classes/Buffer/class-config.php b/wp-content/plugins/wp-rocket/inc/classes/Buffer/class-config.php new file mode 100644 index 0000000..41d984d --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/classes/Buffer/class-config.php @@ -0,0 +1,296 @@ +get_configs(); + return isset( $config[ $config_name ] ) ? $config[ $config_name ] : null; + } + + /** + * Get the whole current configuration. + * + * @since 3.3 + * @access public + * @author Grégory Viguier + * + * @return array|bool An array containing the configuration. False on failure. + */ + public function get_configs() { + if ( self::is_memoized( __FUNCTION__ ) ) { + return self::get_memoized( __FUNCTION__ ); + } + + $config_file_path = $this->get_config_file_path(); + + if ( ! $config_file_path['success'] ) { + return self::memoize( __FUNCTION__, [], false ); + } + + include $config_file_path['path']; + + $config = [ + 'cookie_hash' => '', + 'logged_in_cookie' => '', + 'common_cache_logged_users' => 0, + 'cache_mobile_files_tablet' => 'desktop', + 'cache_ssl' => 0, + 'cache_webp' => 0, + 'cache_mobile' => 0, + 'do_caching_mobile_files' => 0, + 'secret_cache_key' => '', + 'cache_reject_uri' => '', + 'cache_query_strings' => [], + 'cache_ignored_parameters' => [], + 'cache_reject_cookies' => '', + 'cache_reject_ua' => '', + 'cache_mandatory_cookies' => '', + 'cache_dynamic_cookies' => [], + 'url_no_dots' => 0, + ]; + + foreach ( $config as $entry_name => $entry_value ) { + $var_name = 'rocket_' . $entry_name; + + if ( isset( $$var_name ) ) { + $config[ $entry_name ] = $$var_name; + } + } + + return self::memoize( __FUNCTION__, [], $config ); + } + + /** + * Get the host, to use for config and cache file path. + * + * @since 3.3 + * @access public + * @author Grégory Viguier + * + * @return string + */ + public function get_host() { + if ( self::is_memoized( __FUNCTION__ ) ) { + return self::get_memoized( __FUNCTION__ ); + } + + $host = $this->get_server_input( 'HTTP_HOST', (string) time() ); + $host = preg_replace( '/:\d+$/', '', $host ); + $host = trim( strtolower( $host ), '.' ); + + return self::memoize( __FUNCTION__, [], rawurlencode( $host ) ); + } + + /** + * Get the path to an existing config file. + * + * @since 3.3 + * @access protected + * @author Grégory Viguier + * + * @return string|bool The path to the file. False if no file is found. + */ + public function get_config_file_path() { + if ( self::is_memoized( __FUNCTION__ ) ) { + return self::get_memoized( __FUNCTION__ ); + } + + $config_dir_real_path = realpath( self::$config_dir_path ) . DIRECTORY_SEPARATOR; + + $host = $this->get_host(); + + if ( realpath( self::$config_dir_path . $host . '.php' ) && 0 === stripos( realpath( self::$config_dir_path . $host . '.php' ), $config_dir_real_path ) ) { + $config_file_path = self::$config_dir_path . $host . '.php'; + return self::memoize( + __FUNCTION__, + [], + [ + 'success' => true, + 'path' => $config_file_path, + ] + ); + } + + $path = str_replace( '\\', '/', strtok( $this->get_server_input( 'REQUEST_URI', '' ), '?' ) ); + $path = preg_replace( '|(?<=.)/+|', '/', $path ); + $path = explode( '%2F', preg_replace( '/^(?:%2F)*(.*?)(?:%2F)*$/', '$1', rawurlencode( $path ) ) ); + + foreach ( $path as $p ) { + static $dir; + + if ( realpath( self::$config_dir_path . $host . '.' . $p . '.php' ) && 0 === stripos( realpath( self::$config_dir_path . $host . '.' . $p . '.php' ), $config_dir_real_path ) ) { + $config_file_path = self::$config_dir_path . $host . '.' . $p . '.php'; + return self::memoize( + __FUNCTION__, + [], + [ + 'success' => true, + 'path' => $config_file_path, + ] + ); + } + + if ( realpath( self::$config_dir_path . $host . '.' . $dir . $p . '.php' ) && 0 === stripos( realpath( self::$config_dir_path . $host . '.' . $dir . $p . '.php' ), $config_dir_real_path ) ) { + $config_file_path = self::$config_dir_path . $host . '.' . $dir . $p . '.php'; + return self::memoize( + __FUNCTION__, + [], + [ + 'success' => true, + 'path' => $config_file_path, + ] + ); + } + + $dir .= $p . '.'; + } + + return self::memoize( + __FUNCTION__, + [], + [ + 'success' => false, + 'path' => self::$config_dir_path . $host . implode( '/', $path ) . '.php', + ] + ); + } + + /** ----------------------------------------------------------------------------------------- */ + /** SPECIFIC CONFIG GETTERS ================================================================= */ + /** ----------------------------------------------------------------------------------------- */ + + /** + * Get rejected cookies as a regex pattern. + * `#` is used as pattern delimiter. + * + * @since 3.3 + * @access protected + * @author Grégory Viguier + * + * @return string + */ + public function get_rejected_cookies() { + $rejected_cookies = $this->get_config( 'cache_reject_cookies' ); + + if ( '' === $rejected_cookies ) { + return $rejected_cookies; + } + + return '#' . $rejected_cookies . '#'; + } + + /** + * Get mandatory cookies as a regex pattern. + * `#` is used as pattern delimiter. + * + * @since 3.3 + * @access protected + * @author Grégory Viguier + * + * @return string + */ + public function get_mandatory_cookies() { + $mandatory_cookies = $this->get_config( 'cache_mandatory_cookies' ); + + if ( '' === $mandatory_cookies ) { + return $mandatory_cookies; + } + + return '#' . $mandatory_cookies . '#'; + } + +} diff --git a/wp-content/plugins/wp-rocket/inc/classes/Buffer/class-optimization.php b/wp-content/plugins/wp-rocket/inc/classes/Buffer/class-optimization.php new file mode 100644 index 0000000..35dba23 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/classes/Buffer/class-optimization.php @@ -0,0 +1,110 @@ +log( 'OPTIMIZATION PROCESS STARTED.', [], 'info' ); + } + + /** ----------------------------------------------------------------------------------------- */ + /** CACHE =================================================================================== */ + /** ----------------------------------------------------------------------------------------- */ + + /** + * Do preliminary tests and maybe launch the buffer process. + * + * @since 3.3 + * @access public + * @author Grégory Viguier + */ + public function maybe_init_process() { + if ( ! $this->tests->can_init_process() ) { + $this->log_last_test_error(); + return; + } + + ob_start( [ $this, 'maybe_process_buffer' ] ); + } + + /** + * Maybe optimize the page content. + * + * @since 3.3 + * @access public + * @author Grégory Viguier + * + * @param string $buffer The buffer content. + * @return string The buffered content. + */ + public function maybe_process_buffer( $buffer ) { + /** + * Triggered before WP Rocket starts the optimization process. + * + * @since 3.4.2 + * @author Soponar Cristina + * + * @param string $buffer HTML content. + */ + do_action( 'rocket_before_maybe_process_buffer', $buffer ); + + if ( ! $this->is_html( $buffer ) ) { + return $buffer; + } + + if ( ! $this->tests->can_process_buffer( $buffer ) ) { + $this->log_last_test_error(); + return $buffer; + } + + /** + * This hook is used for: + * - Async CSS files + * - Defer JavaScript files + * - Minify/Combine HTML/CSS/JavaScript + * - CDN + * - LazyLoad + * + * @param string $buffer The page content. + */ + $buffer = (string) apply_filters( 'rocket_buffer', $buffer ); + + $this->log( 'Page optimized.', [], 'info' ); + + return $buffer; + } +} diff --git a/wp-content/plugins/wp-rocket/inc/classes/Buffer/class-tests.php b/wp-content/plugins/wp-rocket/inc/classes/Buffer/class-tests.php new file mode 100644 index 0000000..231ef87 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/classes/Buffer/class-tests.php @@ -0,0 +1,1122 @@ + 1, + 'ssl' => 1, + 'uri' => 1, + 'rejected_cookie' => 1, + 'mandatory_cookie' => 1, + 'user_agent' => 1, + 'mobile' => 1, + 'donotcachepage' => 1, + 'wp_404' => 1, + 'search' => 1, + ]; + + /** + * Information about the last "error". + * Here an "error" is a test failure. + * + * @var array { + * @type string $message A message. + * @type array $data Related data. + * } + * @since 3.3 + * @access private + * @author Grégory Viguier + */ + private $last_error = []; + + /** + * Constructor. + * + * @since 3.3 + * @access public + * @author Grégory Viguier + * + * @param Config $config Config instance. + * @param array $args { + * An array of arguments. + * + * @type array $cookies Values of $_COOKIE to use for the tests. Default is $_COOKIE. + * @type array $post Values of $_POST to use for the tests. Default is $_POST + * @type array $get Values of $_GET to use for the tests. Default is $_GET. + * @type array $tests List of complementary tests to perform. Optional. + * } + */ + public function __construct( Config $config, array $args = [] ) { + $this->config = $config; + + if ( ! empty( $args['tests'] ) ) { + $this->set_tests( (array) $args['tests'] ); + } + + // Provide fallback values. + if ( ! isset( $args['cookies'] ) && ! empty( $_COOKIE ) && is_array( $_COOKIE ) ) { + $args['cookies'] = $_COOKIE; + } + + if ( ! isset( $args['post'] ) && ! empty( $_POST ) && is_array( $_POST ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Missing + $args['post'] = $_POST; // phpcs:ignore WordPress.Security.NonceVerification.Missing + } + if ( ! isset( $args['get'] ) && ! empty( $_GET ) && is_array( $_GET ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Missing, WordPress.Security.NonceVerification.Recommended + $args['get'] = $_GET; // phpcs:ignore WordPress.Security.NonceVerification.Missing, WordPress.Security.NonceVerification.Recommended + } + + self::$cookies = ! empty( $args['cookies'] ) && is_array( $args['cookies'] ) ? $args['cookies'] : []; + self::$post = ! empty( $args['post'] ) && is_array( $args['post'] ) ? $args['post'] : []; + self::$get = ! empty( $args['get'] ) && is_array( $args['get'] ) ? $args['get'] : []; + + if ( self::$post ) { + self::$post = array_intersect_key( + // Limit self::$post to the values we need, to save a bit of memory. + self::$post, + [ + 'wp_customize' => '', + ] + ); + } + } + + /** ----------------------------------------------------------------------------------------- */ + /** TESTS =================================================================================== */ + /** ----------------------------------------------------------------------------------------- */ + + /** + * Tell if the process should be initiated. + * + * @since 3.3 + * @access public + * @author Grégory Viguier + * + * @return bool + */ + public function can_init_process() { + $this->last_error = []; + + // Don't process robots.txt && .htaccess files (it has happened sometimes with weird server configuration). + if ( $this->is_rejected_file() ) { + $this->set_error( 'Robots.txt or .htaccess file is excluded.' ); + return false; + } + + // Don't process disallowed file extensions (like php, xml, xsl). + if ( $this->is_rejected_extension() ) { + $this->set_error( 'PHP, XML, or XSL file is excluded.' ); + return false; + } + + // Don't cache if in admin or ajax. + if ( $this->is_admin() ) { + $this->set_error( 'Admin or AJAX URL is excluded.' ); + return false; + } + + // Don't process the customizer preview. + if ( $this->is_customizer_preview() ) { + $this->set_error( 'Customizer preview is excluded.' ); + return false; + } + + // Don't process without GET method. + if ( ! $this->is_allowed_request_method() ) { + $this->set_error( + 'Request method is not allowed. Page cannot be cached.', + [ + 'request_method' => $this->get_request_method(), + ] + ); + return false; + } + + if ( ! $this->has_test() ) { + $this->last_error = []; + return true; + } + + $config = $this->config->get_config_file_path(); + // Exit if no config file exists. + if ( ! $config['success'] ) { + $this->set_error( + 'No config file found.', + [ + 'config_path' => $config['path'], + ] + ); + return false; + } + + // Don’t process with query strings parameters, but the processed content is served if the visitor comes from an RSS feed, a Facebook action or Google Adsense tracking. + if ( $this->has_test( 'query_string' ) && ! $this->can_process_query_string() ) { + $this->set_error( 'Query string URL is excluded.' ); + return false; + } + + // Don't process SSL. + if ( $this->has_test( 'ssl' ) && ! $this->can_process_ssl() ) { + $this->set_error( 'SSL cache not applied to page.' ); + return false; + } + + // Don't process these pages. + if ( $this->has_test( 'uri' ) && ! $this->can_process_uri() ) { + $this->set_error( 'Page is excluded.' ); + return false; + } + + // Don't process page with these cookies. + if ( $this->has_test( 'rejected_cookie' ) && $this->has_rejected_cookie() ) { + $this->set_error( + 'Excluded cookie found.', + [ + 'excluded_cookies' => $this->has_rejected_cookie(), + ] + ); + return false; + } + + // Don't process page when these cookies don't exist. + if ( $this->has_test( 'mandatory_cookie' ) && ! $this->is_speed_tool() && is_array( $this->has_mandatory_cookie() ) ) { + $this->set_error( + 'Missing mandatory cookie: page not processed.', + [ + 'missing_cookies' => $this->has_mandatory_cookie(), + ] + ); + return false; + } + + // Don't process page with these user agents. + if ( $this->has_test( 'user_agent' ) && ! $this->can_process_user_agent() ) { + $this->set_error( + 'User Agent is excluded.', + [ + 'user_agent' => $this->config->get_server_input( 'HTTP_USER_AGENT' ), + ] + ); + return false; + } + + // Don't process if mobile detection is activated. + if ( $this->has_test( 'mobile' ) && ! $this->can_process_mobile() ) { + $this->set_error( + 'Mobile User Agent is excluded.', + [ + 'user_agent' => $this->config->get_server_input( 'HTTP_USER_AGENT' ), + ] + ); + return false; + } + + $this->last_error = []; + + return true; + } + + /** + * Tell if a test should be performed. + * + * @since 3.3 + * @access public + * @author Grégory Viguier + * + * @param string $test_name Identifier of the test. + * Possible values are: 'query_string', 'ssl', 'uri', 'rejected_cookie', 'mandatory_cookie', 'user_agent', 'mobile'. + * @return bool + */ + public function has_test( $test_name = '' ) { + if ( empty( $test_name ) ) { + return ! empty( $this->tests ); + } + + return isset( $this->tests[ $test_name ] ); + } + + /** + * Set the list of tests to perform. + * + * @since 3.3 + * @access public + * @author Grégory Viguier + * + * @param array $tests An array of test names. + */ + public function set_tests( array $tests ) { + $tests = array_flip( $tests ); + + array_merge( $this->tests, $tests ); + } + + /** + * Tell if the buffer should be processed. + * + * @since 3.3 + * @access public + * @author Grégory Viguier + * + * @param string $buffer The buffer content. + * @return bool + */ + public function can_process_buffer( $buffer ) { + $this->last_error = []; + + if ( ! function_exists( 'rocket_mkdir_p' ) ) { + // Uh? + $this->set_error( 'WP Rocket not found - page cannot be cached.' ); + return false; + } + + if ( strlen( $buffer ) <= 255 ) { + // Buffer length must be > 255 (IE does not read pages under 255 c). + $this->set_error( 'Buffer content under 255 caracters.' ); + return false; + } + + if ( http_response_code() !== 200 ) { + // Only cache 200. + $this->set_error( 'Page is not a 200 HTTP response and cannot be cached.' ); + return false; + } + + if ( $this->has_test( 'donotcachepage' ) && $this->has_donotcachepage() ) { + // Don't process templates that use the DONOTCACHEPAGE constant. + $this->set_error( 'DONOTCACHEPAGE is defined. Page cannot be cached.' ); + return false; + } + + if ( $this->has_test( 'wp_404' ) && $this->is_404() ) { + // Don't process WP 404 page. + $this->set_error( 'WP 404 page is excluded.' ); + return false; + } + + if ( $this->has_test( 'search' ) && $this->is_search() ) { + // Don't process search results. + $this->set_error( 'Search page is excluded.' ); + return false; + } + + $this->last_error = []; + + return true; + } + + /** ----------------------------------------------------------------------------------------- */ + /** SEPARATED TESTS ========================================================================= */ + /** ----------------------------------------------------------------------------------------- */ + + /** + * Tell if the current URI corresponds to a file that must not be processed. + * + * @since 3.3 + * @access public + * @author Grégory Viguier + * + * @return bool + */ + public function is_rejected_file() { + if ( self::is_memoized( __FUNCTION__ ) ) { + return self::get_memoized( __FUNCTION__ ); + } + + $request_uri = $this->get_request_uri_base(); + + if ( ! $request_uri ) { + return self::memoize( __FUNCTION__, [], false ); + } + + $files = [ + 'robots.txt', + '.htaccess', + ]; + + foreach ( $files as $file ) { + if ( false !== strpos( $request_uri, '/' . $file ) ) { + return self::memoize( __FUNCTION__, [], true ); + } + } + + return self::memoize( __FUNCTION__, [], false ); + } + + /** + * Tell if the current URI corresponds to a file extension that must not be processed. + * + * @since 3.3 + * @access public + * @author Grégory Viguier + * + * @return bool + */ + public function is_rejected_extension() { + if ( self::is_memoized( __FUNCTION__ ) ) { + return self::get_memoized( __FUNCTION__ ); + } + + $request_uri = $this->get_request_uri_base(); + + if ( ! $request_uri ) { + return self::memoize( __FUNCTION__, [], false ); + } + + if ( strtolower( $request_uri ) === '/index.php' ) { + // `index.php` is allowed. + return self::memoize( __FUNCTION__, [], false ); + } + + $extension = pathinfo( $request_uri, PATHINFO_EXTENSION ); + $extensions = [ + 'php' => 1, + 'xml' => 1, + 'xsl' => 1, + ]; + + $is_rejected = $extension && isset( $extensions[ $extension ] ); + + return self::memoize( __FUNCTION__, [], $is_rejected ); + } + + /** + * Tell if we're in the admin area (or ajax) or not. + * Test against ajax added in 2e3c0fa74246aa13b36835f132dfd55b90d4bf9e for whatever reason. + * + * @since 3.3 + * @access public + * @author Grégory Viguier + * + * @return bool + */ + public function is_admin() { + return is_admin() || ( defined( 'DOING_AJAX' ) && DOING_AJAX ); + } + + /** + * Tell if we're displaying a customizer preview. + * Test added in 769c7377e764a6a8decb4015a167b34043b4b462 for whatever reason. + * + * @since 3.3 + * @access public + * @author Grégory Viguier + * + * @return bool + */ + public function is_customizer_preview() { + return isset( self::$post['wp_customize'] ); + } + + /** + * Tell if the request method is allowed to be cached. + * + * @since 3.3 + * @access public + * @author Grégory Viguier + * + * @return bool + */ + public function is_allowed_request_method() { + $allowed = [ + 'GET' => 1, + 'HEAD' => 1, + ]; + + if ( isset( $allowed[ $this->get_request_method() ] ) ) { + return true; + } + + return false; + } + + /** ----------------------------------------------------------------------------------------- */ + /** SEPARATED TESTS THAT USE THE CONFIG FILE ================================================ */ + /** ----------------------------------------------------------------------------------------- */ + + /** + * Don't process with query string parameters, some parameters are allowed though. + * + * @since 3.3 + * @access public + * @author Grégory Viguier + * + * @return bool + */ + public function can_process_query_string() { + if ( self::is_memoized( __FUNCTION__ ) ) { + return self::get_memoized( __FUNCTION__ ); + } + + $params = $this->get_query_params(); + + if ( ! $params ) { + return self::memoize( __FUNCTION__, [], true ); + } + + // The page can be processed if at least one of these parameters is present. + $allowed_params = [ + 'lang' => 1, + 's' => 1, + 'permalink_name' => 1, + 'lp-variation-id' => 1, + ]; + + if ( array_intersect_key( $params, $allowed_params ) ) { + return self::memoize( __FUNCTION__, [], true ); + } + + // The page can be processed if at least one of these parameters is present. + $allowed_params = $this->config->get_config( 'cache_query_strings' ); + + if ( ! $allowed_params ) { + // We have query strings but none is in the list set by the user. + return self::memoize( __FUNCTION__, [], false ); + } + + $can = (bool) array_intersect_key( $params, array_flip( $allowed_params ) ); + + return self::memoize( __FUNCTION__, [], $can ); + } + + /** + * Process SSL only if set in the plugin settings. + * + * @since 3.3 + * @access public + * @author Grégory Viguier + * + * @return bool + */ + public function can_process_ssl() { + return ! $this->is_ssl() || $this->config->get_config( 'cache_ssl' ); + } + + /** + * Some URIs set in the plugin settings must not be processed. + * + * @since 3.3 + * @access public + * @author Grégory Viguier + * + * @return bool + */ + public function can_process_uri() { + if ( self::is_memoized( __FUNCTION__ ) ) { + return self::get_memoized( __FUNCTION__ ); + } + + // URIs not to cache. + $uri_pattern = $this->config->get_config( 'cache_reject_uri' ); + + if ( ! $uri_pattern ) { + return self::memoize( __FUNCTION__, [], true ); + } + + $can = ! preg_match( '#^(' . $uri_pattern . ')$#i', $this->get_clean_request_uri() ); + + return self::memoize( __FUNCTION__, [], $can ); + } + + /** + * Don't process if some cookies are present. + * + * @since 3.3 + * @access public + * @author Grégory Viguier + * + * @return bool|array + */ + public function has_rejected_cookie() { + if ( self::is_memoized( __FUNCTION__ ) ) { + return self::get_memoized( __FUNCTION__ ); + } + + if ( ! self::$cookies ) { + return self::memoize( __FUNCTION__, [], false ); + } + + $rejected_cookies = $this->config->get_rejected_cookies(); + + if ( ! $rejected_cookies ) { + return self::memoize( __FUNCTION__, [], false ); + } + + $excluded_cookies = []; + + foreach ( array_keys( self::$cookies ) as $cookie_name ) { + if ( preg_match( $rejected_cookies, $cookie_name ) ) { + $excluded_cookies[] = $cookie_name; + } + } + + if ( ! empty( $excluded_cookies ) ) { + return self::memoize( __FUNCTION__, [], $excluded_cookies ); + } + + return self::memoize( __FUNCTION__, [], false ); + } + + /** + * Don't process if some cookies are NOT present. + * + * @since 3.3 + * @access public + * @author Grégory Viguier + * + * @return bool|array + */ + public function has_mandatory_cookie() { + if ( self::is_memoized( __FUNCTION__ ) ) { + return self::get_memoized( __FUNCTION__ ); + } + + $mandatory_cookies = $this->config->get_mandatory_cookies(); + + if ( ! $mandatory_cookies ) { + return self::memoize( __FUNCTION__, [], true ); + } + + $missing_cookies = array_flip( explode( '|', $this->config->get_config( 'cache_mandatory_cookies' ) ) ); + + if ( ! self::$cookies ) { + return self::memoize( __FUNCTION__, [], $missing_cookies ); + } + + foreach ( array_keys( self::$cookies ) as $cookie_name ) { + if ( preg_match( $mandatory_cookies, $cookie_name ) ) { + unset( $missing_cookies[ $cookie_name ] ); + } + } + + if ( empty( $missing_cookies ) ) { + return self::memoize( __FUNCTION__, [], true ); + } + + return self::memoize( __FUNCTION__, [], array_flip( $missing_cookies ) ); + } + + /** + * Don't process if the user agent is in the forbidden list. + * + * @since 3.3 + * @access public + * @author Grégory Viguier + * + * @return bool + */ + public function can_process_user_agent() { + if ( self::is_memoized( __FUNCTION__ ) ) { + return self::get_memoized( __FUNCTION__ ); + } + + if ( ! $this->config->get_server_input( 'HTTP_USER_AGENT' ) ) { + return self::memoize( __FUNCTION__, [], true ); + } + + $rejected_uas = $this->config->get_config( 'cache_reject_ua' ); + + if ( ! $rejected_uas ) { + return self::memoize( __FUNCTION__, [], true ); + } + + $can = ! preg_match( '#' . $rejected_uas . '#', $this->config->get_server_input( 'HTTP_USER_AGENT' ) ); + + return self::memoize( __FUNCTION__, [], $can ); + } + + /** + * Don't process if the user agent is in the forbidden list. + * + * @since 3.3 + * @access public + * @author Grégory Viguier + * + * @return bool + */ + public function can_process_mobile() { + if ( self::is_memoized( __FUNCTION__ ) ) { + return self::get_memoized( __FUNCTION__ ); + } + + if ( ! $this->config->get_server_input( 'HTTP_USER_AGENT' ) ) { + return self::memoize( __FUNCTION__, [], true ); + } + + if ( $this->config->get_config( 'cache_mobile' ) ) { + return self::memoize( __FUNCTION__, [], true ); + } + + $uas = '2.0\ MMP|240x320|400X240|AvantGo|BlackBerry|Blazer|Cellphone|Danger|DoCoMo|Elaine/3.0|EudoraWeb|Googlebot-Mobile|hiptop|IEMobile|KYOCERA/WX310K|LG/U990|MIDP-2.|MMEF20|MOT-V|NetFront|Newt|Nintendo\ Wii|Nitro|Nokia|Opera\ Mini|Palm|PlayStation\ Portable|portalmmm|Proxinet|ProxiNet|SHARP-TQ-GX10|SHG-i900|Small|SonyEricsson|Symbian\ OS|SymbianOS|TS21i-10|UP.Browser|UP.Link|webOS|Windows\ CE|WinWAP|YahooSeeker/M1A1-R2D2|iPhone|iPod|Android|BlackBerry9530|LG-TU915\ Obigo|LGE\ VX|webOS|Nokia5800'; + + if ( preg_match( '#^.*(' . $uas . ').*#i', $this->config->get_server_input( 'HTTP_USER_AGENT' ) ) ) { + return self::memoize( __FUNCTION__, [], false ); + } + + $uas = 'w3c\ |w3c-|acs-|alav|alca|amoi|audi|avan|benq|bird|blac|blaz|brew|cell|cldc|cmd-|dang|doco|eric|hipt|htc_|inno|ipaq|ipod|jigs|kddi|keji|leno|lg-c|lg-d|lg-g|lge-|lg/u|maui|maxo|midp|mits|mmef|mobi|mot-|moto|mwbp|nec-|newt|noki|palm|pana|pant|phil|play|port|prox|qwap|sage|sams|sany|sch-|sec-|send|seri|sgh-|shar|sie-|siem|smal|smar|sony|sph-|symb|t-mo|teli|tim-|tosh|tsm-|upg1|upsi|vk-v|voda|wap-|wapa|wapi|wapp|wapr|webc|winw|winw|xda\ |xda-'; + + if ( preg_match( '#^(' . $uas . ').*#i', $this->config->get_server_input( 'HTTP_USER_AGENT' ) ) ) { + return self::memoize( __FUNCTION__, [], false ); + } + + return self::memoize( __FUNCTION__, [], true ); + } + + /** ----------------------------------------------------------------------------------------- */ + /** SEPARATED TESTS AFTER PAGE RESPONSE ===================================================== */ + /** ----------------------------------------------------------------------------------------- */ + + /** + * Tell if the constant DONOTCACHEPAGE is set and not overridden. + * When defined, the page must not be cached. + * + * @since 3.3 + * @access public + * @author Grégory Viguier + * + * @return bool + */ + public function has_donotcachepage() { + if ( ! defined( 'DONOTCACHEPAGE' ) || ! DONOTCACHEPAGE ) { + return false; + } + + /** + * At this point the constant DONOTCACHEPAGE is set to true. + * This filter allows to force the page caching. + * It prevents conflict with some plugins like Thrive Leads. + * + * @since 2.5 + * + * @param bool $override_donotcachepage True will force the page to be cached. + */ + return ! apply_filters( 'rocket_override_donotcachepage', false ); + } + + /** + * Tell if we're in the WP’s 404 page. + * + * @since 3.3 + * @access public + * @author Grégory Viguier + * + * @return bool + */ + public function is_404() { + return ! function_exists( 'is_404' ) || is_404(); + } + + /** + * Tell if we're in the WP’s search page. + * + * @since 3.3 + * @access public + * @author Grégory Viguier + * + * @return bool + */ + public function is_search() { + if ( function_exists( 'is_search' ) && ! is_search() ) { + return false; + } + + /** + * At this point we’re in the WP’s search page. + * This filter allows to cache search results. + * + * @since 2.3.8 + * + * @param bool $cache_search True will force caching search results. + */ + return ! apply_filters( 'rocket_cache_search', false ); + } + + /** ----------------------------------------------------------------------------------------- */ + /** $_SERVER ================================================================================ */ + /** ----------------------------------------------------------------------------------------- */ + + /** + * Get the IP address from which the user is viewing the current page. + * + * @since 3.3 + * @access public + * @author Grégory Viguier + */ + public function get_ip() { + if ( self::is_memoized( __FUNCTION__ ) ) { + return self::get_memoized( __FUNCTION__ ); + } + + $keys = [ + 'HTTP_CF_CONNECTING_IP', // CF = CloudFlare. + 'HTTP_CLIENT_IP', + 'HTTP_X_FORWARDED_FOR', + 'HTTP_X_FORWARDED', + 'HTTP_X_CLUSTER_CLIENT_IP', + 'HTTP_X_REAL_IP', + 'HTTP_FORWARDED_FOR', + 'HTTP_FORWARDED', + 'REMOTE_ADDR', + ]; + + foreach ( $keys as $key ) { + if ( ! $this->config->get_server_input( $key ) ) { + continue; + } + + $ip = explode( ',', $this->config->get_server_input( $key ) ); + $ip = end( $ip ); + + if ( false !== filter_var( $ip, FILTER_VALIDATE_IP ) ) { + return self::memoize( __FUNCTION__, [], $ip ); + } + } + + return self::memoize( __FUNCTION__, [], '0.0.0.0' ); + } + + /** + * Tell if the request comes from a speed test tool. + * + * @since 3.3 + * @access public + * @author Grégory Viguier + * + * @return bool + */ + public function is_speed_tool() { + if ( self::is_memoized( __FUNCTION__ ) ) { + return self::get_memoized( __FUNCTION__ ); + } + + $ips = [ + '208.70.247.157' => '', // GT Metrix - Vancouver 1. + '204.187.14.70' => '', // GT Metrix - Vancouver 2. + '204.187.14.71' => '', // GT Metrix - Vancouver 3. + '204.187.14.72' => '', // GT Metrix - Vancouver 4. + '204.187.14.73' => '', // GT Metrix - Vancouver 5. + '204.187.14.74' => '', // GT Metrix - Vancouver 6. + '204.187.14.75' => '', // GT Metrix - Vancouver 7. + '204.187.14.76' => '', // GT Metrix - Vancouver 8. + '204.187.14.77' => '', // GT Metrix - Vancouver 9. + '204.187.14.78' => '', // GT Metrix - Vancouver 10. + '199.10.31.194' => '', // GT Metrix - Vancouver 11. + '13.85.80.124' => '', // GT Metrix - Dallas 1. + '13.84.146.132' => '', // GT Metrix - Dallas 2. + '13.84.146.226' => '', // GT Metrix - Dallas 3. + '40.74.254.217' => '', // GT Metrix - Dallas 4. + '13.84.43.227' => '', // GT Metrix - Dallas 5. + '172.255.61.34' => '', // GT Metrix - London 1. + '172.255.61.35' => '', // GT Metrix - London 2. + '172.255.61.36' => '', // GT Metrix - London 3. + '172.255.61.37' => '', // GT Metrix - London 4. + '172.255.61.38' => '', // GT Metrix - London 5. + '172.255.61.39' => '', // GT Metrix - London 6. + '172.255.61.40' => '', // GT Metrix - London 7. + '13.70.66.20' => '', // GT Metrix - Sydney. + '191.235.85.154' => '', // GT Metrix - São Paulo 1. + '191.235.86.0' => '', // GT Metrix - São Paulo 2. + '52.66.75.147' => '', // GT Metrix - Mumbai. + '52.175.28.116' => '', // GT Metrix - Hong Kong. + ]; + + if ( isset( $ips[ $this->get_ip() ] ) ) { + return self::memoize( __FUNCTION__, [], true ); + } + + if ( ! $this->config->get_server_input( 'HTTP_USER_AGENT' ) ) { + return self::memoize( __FUNCTION__, [], false ); + } + + $user_agent = preg_match( '#PingdomPageSpeed|DareBoost|Google|PTST|Chrome-Lighthouse|WP Rocket#i', $this->config->get_server_input( 'HTTP_USER_AGENT' ) ); + + return self::memoize( __FUNCTION__, [], (bool) $user_agent ); + } + + /** + * Determines if SSL is used. + * This is basically a copy of the WP function, where $_SERVER is not used directly. + * + * @since 3.3 + * @access public + * @author Grégory Viguier + * + * @return bool True if SSL, otherwise false. + */ + public function is_ssl() { + if ( null !== $this->config->get_server_input( 'HTTPS' ) ) { + if ( 'on' === strtolower( $this->config->get_server_input( 'HTTPS' ) ) ) { + return true; + } + + if ( '1' === (string) $this->config->get_server_input( 'HTTPS' ) ) { + return true; + } + } elseif ( '443' === (string) $this->config->get_server_input( 'SERVER_PORT' ) ) { + return true; + } + return false; + } + + /** ----------------------------------------------------------------------------------------- */ + /** REQUEST URI AND METHOD ================================================================== */ + /** ----------------------------------------------------------------------------------------- */ + + /** + * Get the request URI. + * + * @since 3.3 + * @access public + * @author Grégory Viguier + * + * @return string + */ + public function get_raw_request_uri() { + if ( '' === $this->config->get_server_input( 'REQUEST_URI', '' ) ) { + return ''; + } + + return '/' . ltrim( $this->config->get_server_input( 'REQUEST_URI' ), '/' ); + } + + /** + * Get the request URI without the query strings. + * + * @since 3.3 + * @access public + * @author Grégory Viguier + * + * @return string + */ + public function get_request_uri_base() { + $request_uri = $this->get_raw_request_uri(); + + if ( ! $request_uri ) { + return ''; + } + + $request_uri = explode( '?', $request_uri ); + + return reset( $request_uri ); + } + + /** + * Get the request URI. The query string is sorted and some parameters are removed. + * + * @since 3.3 + * @access public + * @author Grégory Viguier + * + * @return string + */ + public function get_clean_request_uri() { + $request_uri = $this->get_request_uri_base(); + + if ( ! $request_uri ) { + return ''; + } + + $query_string = $this->get_query_string(); + + if ( ! $query_string ) { + return $request_uri; + } + + return $request_uri . '?' . $query_string; + } + + /** + * Get the request method. + * + * @since 3.3 + * @access public + * @author Grégory Viguier + * + * @return string + */ + public function get_request_method() { + if ( '' === $this->config->get_server_input( 'REQUEST_METHOD', '' ) ) { + return ''; + } + + return strtoupper( $this->config->get_server_input( 'REQUEST_METHOD' ) ); + } + + /** ----------------------------------------------------------------------------------------- */ + /** QUERY STRING ============================================================================ */ + /** ----------------------------------------------------------------------------------------- */ + + /** + * Get the query string as an array. Parameters are sorted and some are removed. + * + * @since 3.3 + * @access public + * @author Grégory Viguier + * + * @return array + */ + public function get_query_params() { + if ( ! self::$get ) { + return []; + } + + // Remove some parameters. + $params = array_diff_key( + self::$get, + $this->config->get_config( 'cache_ignored_parameters' ) + ); + + if ( $params ) { + ksort( $params ); + } + + return $params; + } + + /** + * Get the query string with sorted parameters, and some other removed. + * + * @since 3.3 + * @access public + * @author Grégory Viguier + * + * @return string + */ + public function get_query_string() { + return http_build_query( $this->get_query_params() ); + } + + /** ----------------------------------------------------------------------------------------- */ + /** PROPERTY GETTERS ======================================================================== */ + /** ----------------------------------------------------------------------------------------- */ + + /** + * Get the `cookies` property. + * + * @since 3.3 + * @access public + * @author Grégory Viguier + * + * @return array + */ + public function get_cookies() { + return self::$cookies; + } + + /** + * Get the `post` property. + * + * @since 3.3 + * @access public + * @author Grégory Viguier + * + * @return array + */ + public function get_post() { + return self::$post; + } + + /** + * Get the `get` property. + * + * @since 3.3 + * @access public + * @author Grégory Viguier + * + * @return array + */ + public function get_get() { + return self::$get; + } + + /** ----------------------------------------------------------------------------------------- */ + /** ERRORS ================================================================================== */ + /** ----------------------------------------------------------------------------------------- */ + + /** + * Set an "error". + * + * @since 3.3 + * @access protected + * @author Grégory Viguier + * + * @param string $message A message. + * @param array $data Related data. + */ + protected function set_error( $message, $data = [] ) { + $this->last_error = [ + 'message' => $message, + 'data' => (array) $data, + ]; + } + + /** + * Get the last "error". + * + * @since 3.3 + * @access public + * @author Grégory Viguier + * + * @return array + */ + public function get_last_error() { + return array_merge( + [ + 'message' => '', + 'data' => [], + ], + (array) $this->last_error + ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/classes/Cache/class-expired-cache-purge.php b/wp-content/plugins/wp-rocket/inc/classes/Cache/class-expired-cache-purge.php new file mode 100644 index 0000000..dfbf343 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/classes/Cache/class-expired-cache-purge.php @@ -0,0 +1,393 @@ +cache_path = $cache_path; + } + + /** + * Perform the event action. + * + * @since 3.4 + * @access public + * @author Grégory Viguier + * + * @param int $lifespan The cache lifespan in seconds. + */ + public function purge_expired_files( $lifespan ) { + if ( ! $lifespan ) { + // Uh? + return; + } + + $urls = get_rocket_i18n_uri(); + $file_age_limit = time() - $lifespan; + + /** + * Filter home URLs that will be searched for old cache files. + * + * @since 3.4 + * @author Grégory Viguier + * + * @param array $urls URLs that will be searched for old cache files. + * @param int $file_age_limit Timestamp of the maximum age files must have. + */ + $urls = apply_filters( 'rocket_automatic_cache_purge_urls', $urls, $file_age_limit ); + + if ( ! is_array( $urls ) ) { + // I saw what you did ಠ_ಠ. + $urls = get_rocket_i18n_uri(); + } + + $urls = array_filter( $urls, 'is_string' ); + $urls = array_filter( $urls ); + + if ( ! $urls ) { + return; + } + + $urls = array_unique( $urls ); + + if ( empty( $this->filesystem ) ) { + $this->filesystem = rocket_direct_filesystem(); + } + + $deleted = []; + $cache_enabled = Cache::can_generate_caching_files(); + + foreach ( $urls as $url ) { + /** + * Fires before purging a cache directory. + * + * @since 3.4 + * @author Grégory Viguier + * + * @param string $url The home url. + * @param int $file_age_limit Timestamp of the maximum age files must have. + */ + do_action( 'rocket_before_automatic_cache_purge_dir', $url, $file_age_limit ); + + $url_deleted = []; + + if ( $cache_enabled ) { + // Get the directory names. + $file = get_rocket_parse_url( $url ); + + /** This filter is documented in inc/front/htaccess.php */ + if ( apply_filters( 'rocket_url_no_dots', false ) ) { + $file['host'] = str_replace( '.', '_', $file['host'] ); + } + + $sub_dir = rtrim( $file['path'], '/' ); + $files = $this->get_cache_files_in_dir( $file ); + + foreach ( $files as $item ) { + $dir_path = $item->getPathname(); + $sub_dir_path = $dir_path . $sub_dir; + + // Time to cut old leaves. + $item_paths = $this->purge_dir( $sub_dir_path, $file_age_limit ); + + if ( $item_paths ) { + $url_deleted[] = [ + 'home_url' => $url, + 'home_path' => $sub_dir_path, + 'logged_in' => $dir_path !== $this->cache_path . $file['host'], + 'files' => $item_paths, + ]; + } + + if ( $this->is_dir_empty( $dir_path ) ) { + // If the folder is empty, remove it. + $this->filesystem->delete( $dir_path ); + } + } + + if ( $url_deleted ) { + $deleted = array_merge( $deleted, $url_deleted ); + } + } + + $args = [ + 'url' => $url, + 'lifespan' => $lifespan, + 'file_age_limit' => $file_age_limit, + ]; + + /** + * Fires after a cache directory is purged. + * + * @since 3.4 + * @author Grégory Viguier + * + * @param array $deleted { + * An array of arrays sharing the same home URL, described like: { + * @type string $home_url The home URL. This is the same as $args['url']. + * @type string $home_path Path to home. + * @type bool $logged_in True if the home path corresponds to a logged in user’s folder. + * @type array $files A list of paths of files that have been deleted. + * } + * Ex: + * [ + * [ + * 'home_url' => 'http://example.com/home1', + * 'home_path' => '/path-to/home1/wp-content/cache/wp-rocket/example.com/home1', + * 'logged_in' => false, + * 'files' => [ + * '/path-to/home1/wp-content/cache/wp-rocket/example.com/home1/deleted-page', + * '/path-to/home1/wp-content/cache/wp-rocket/example.com/home1/very-dead-page', + * ], + * ], + * [ + * 'home_url' => 'http://example.com/home1', + * 'home_path' => '/path-to/home1/wp-content/cache/wp-rocket/example.com-Greg-594d03f6ae698691165999/home1', + * 'logged_in' => true, + * 'files' => [ + * '/path-to/home1/wp-content/cache/wp-rocket/example.com-Greg-594d03f6ae698691165999/home1/how-to-prank-your-coworkers', + * '/path-to/home1/wp-content/cache/wp-rocket/example.com-Greg-594d03f6ae698691165999/home1/best-source-of-gifs', + * ], + * ], + * ] + * @param array $args { + * @type string $url The home url. + * @type int $lifespan Files lifespan in seconds. + * @type int $file_age_limit Timestamp of the maximum age files must have. This is basically `time() - $lifespan`. + * } + */ + do_action( 'rocket_after_automatic_cache_purge_dir', $url_deleted, $args ); + } + + $args = [ + 'lifespan' => $lifespan, + 'file_age_limit' => $file_age_limit, + ]; + + /** + * Fires after cache directories are purged. + * + * @since 3.4 + * @author Grégory Viguier + * + * @param array $deleted { + * An array of arrays, described like: { + * @type string $home_url The home URL. + * @type string $home_path Path to home. + * @type bool $logged_in True if the home path corresponds to a logged in user’s folder. + * @type array $files A list of paths of files that have been deleted. + * } + * Ex: + * [ + * [ + * 'home_url' => 'http://example.com/home1', + * 'home_path' => '/path-to/home1/wp-content/cache/wp-rocket/example.com/home1', + * 'logged_in' => false, + * 'files' => [ + * '/path-to/home1/wp-content/cache/wp-rocket/example.com/home1/deleted-page', + * '/path-to/home1/wp-content/cache/wp-rocket/example.com/home1/very-dead-page', + * ], + * ], + * [ + * 'home_url' => 'http://example.com/home1', + * 'home_path' => '/path-to/home1/wp-content/cache/wp-rocket/example.com-Greg-594d03f6ae698691165999/home1', + * 'logged_in' => true, + * 'files' => [ + * '/path-to/home1/wp-content/cache/wp-rocket/example.com-Greg-594d03f6ae698691165999/home1/how-to-prank-your-coworkers', + * '/path-to/home1/wp-content/cache/wp-rocket/example.com-Greg-594d03f6ae698691165999/home1/best-source-of-gifs', + * ], + * ], + * [ + * 'home_url' => 'http://example.com/home4', + * 'home_path' => '/path-to/home4/wp-content/cache/wp-rocket/example.com-Greg-71edg8d6af865569979569/home4', + * 'logged_in' => true, + * 'files' => [ + * '/path-to/home4/wp-content/cache/wp-rocket/example.com-Greg-71edg8d6af865569979569/home4/easter-eggs-in-code-your-best-opportunities', + * ], + * ], + * ] + * } + * @param array $args { + * @type int $lifespan Files lifespan in seconds. + * @type int $file_age_limit Timestamp of the maximum age files must have. This is basically `time() - $lifespan`. + * } + */ + do_action( 'rocket_after_automatic_cache_purge', $deleted, $args ); + } + + + /** ----------------------------------------------------------------------------------------- */ + /** TOOLS =================================================================================== */ + /** ----------------------------------------------------------------------------------------- */ + /** + * Get all cache files for the provided URL + * + * @since 3.4 + * @author Gregory Viguier + * + * @param array $file An array of the parsed URL parts. + * @return array|DirectoryIterator + */ + private function get_cache_files_in_dir( $file ) { + // Grab cache folders. + $host_pattern = '@^' . preg_quote( $file['host'], '@' ) . '@'; + $sub_dir = rtrim( $file['path'], '/' ); + + try { + $iterator = new \DirectoryIterator( $this->cache_path ); + } + catch ( \Exception $e ) { + return []; + } + + return new \CallbackFilterIterator( + $iterator, + function ( $current ) use ( $host_pattern, $sub_dir ) { + + if ( ! $current->isDir() || $current->isDot() ) { + // We look for folders only, and don't want '.' nor '..'. + return false; + } + + if ( ! preg_match( $host_pattern, $current->getFilename() ) ) { + // Not the right host. + return false; + } + + if ( '' !== $sub_dir && ! $this->filesystem->exists( $current->getPathname() . $sub_dir ) ) { + // Not the right path. + return false; + } + + return true; + } + ); + } + + /** + * Purge a folder from old files. + * + * @since 3.4 + * @access private + * @author Grégory Viguier + * + * @param string $dir_path Path to the folder to purge. + * @param int $file_age_limit Timestamp of the maximum age files must have. + * @return array A list of files that have been deleted. + */ + private function purge_dir( $dir_path, $file_age_limit ) { + $deleted = []; + + try { + $iterator = new \DirectoryIterator( $dir_path ); + } + catch ( \Exception $e ) { + return []; + } + + foreach ( $iterator as $item ) { + if ( $item->isDot() ) { + continue; + } + + if ( $item->isDir() ) { + /** + * A folder, let’s see what’s in there. + * Maybe there’s a dinosaur fossil or a hidden treasure. + */ + $dir_deleted = $this->purge_dir( $item->getPathname(), $file_age_limit ); + $deleted = array_merge( $deleted, $dir_deleted ); + + } elseif ( $item->isFile() && $item->getCTime() < $file_age_limit ) { + $file_path = $item->getPathname(); + + /** + * The file is older than our limit. + * This will also delete the file if `$item->getCTime()` fails. + */ + if ( ! $this->filesystem->delete( $file_path ) ) { + continue; + } + + /** + * A page can have mutiple cache files: + * index(-mobile)(-https)(-dynamic-cookie-key){0,*}.html(_gzip). + */ + $dir_path = dirname( $file_path ); + + if ( ! in_array( $dir_path, $deleted, true ) ) { + $deleted[] = $dir_path; + } + } + } + + if ( $this->is_dir_empty( $dir_path ) ) { + // If the folder is empty, remove it. + $this->filesystem->delete( $dir_path ); + } + + return $deleted; + } + + /** + * Tell if a folder is empty. + * + * @since 3.4 + * @access private + * @author Grégory Viguier + * + * @param string $dir_path Path to the folder to purge. + * @return bool True if empty. False if it contains files. + */ + private function is_dir_empty( $dir_path ) { + try { + $iterator = new \DirectoryIterator( $dir_path ); + } + catch ( \Exception $e ) { + return []; + } + + foreach ( $iterator as $item ) { + if ( $item->isDot() ) { + continue; + } + return false; + } + + return true; + } +} diff --git a/wp-content/plugins/wp-rocket/inc/classes/ServiceProvider/class-common-subscribers.php b/wp-content/plugins/wp-rocket/inc/classes/ServiceProvider/class-common-subscribers.php new file mode 100644 index 0000000..2464747 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/classes/ServiceProvider/class-common-subscribers.php @@ -0,0 +1,57 @@ +getContainer()->get( 'options' ); + + $this->getContainer()->share( 'db_optimization_subscriber', 'WP_Rocket\Subscriber\Admin\Database\Optimization_Subscriber' ) + ->withArgument( $this->getContainer()->get( 'db_optimization' ) ) + ->withArgument( $options ); + $this->getContainer()->add( 'expired_cache_purge', 'WP_Rocket\Cache\Expired_Cache_Purge' ) + ->withArgument( rocket_get_constant( 'WP_ROCKET_CACHE_PATH' ) ); + $this->getContainer()->share( 'expired_cache_purge_subscriber', 'WP_Rocket\Subscriber\Cache\Expired_Cache_Purge_Subscriber' ) + ->withArgument( $options ) + ->withArgument( $this->getContainer()->get( 'expired_cache_purge' ) ); + $this->getContainer()->share( 'webp_subscriber', 'WP_Rocket\Subscriber\Media\Webp_Subscriber' ) + ->withArgument( $options ) + ->withArgument( $this->getContainer()->get( 'options_api' ) ) + ->withArgument( $this->getContainer()->get( 'cdn_subscriber' ) ) + ->withArgument( $this->getContainer()->get( 'beacon' ) ); + $this->getContainer()->share( 'detect_missing_tags_subscriber', 'WP_Rocket\Subscriber\Tools\Detect_Missing_Tags_Subscriber' ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/classes/ServiceProvider/class-database.php b/wp-content/plugins/wp-rocket/inc/classes/ServiceProvider/class-database.php new file mode 100644 index 0000000..9b8e82a --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/classes/ServiceProvider/class-database.php @@ -0,0 +1,41 @@ +getContainer()->add( 'db_optimization_process', 'WP_Rocket\Admin\Database\Optimization_Process' ); + $this->getContainer()->add( 'db_optimization', 'WP_Rocket\Admin\Database\Optimization' ) + ->withArgument( $this->getContainer()->get( 'db_optimization_process' ) ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/classes/ServiceProvider/class-options.php b/wp-content/plugins/wp-rocket/inc/classes/ServiceProvider/class-options.php new file mode 100644 index 0000000..0b06b4c --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/classes/ServiceProvider/class-options.php @@ -0,0 +1,39 @@ +getContainer()->add( 'options', 'WP_Rocket\Admin\Options_Data' ) + ->withArgument( $this->getContainer()->get( 'options_api' )->get( 'settings', [] ) ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/classes/ServiceProvider/class-updater-subscribers.php b/wp-content/plugins/wp-rocket/inc/classes/ServiceProvider/class-updater-subscribers.php new file mode 100644 index 0000000..21a84d3 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/classes/ServiceProvider/class-updater-subscribers.php @@ -0,0 +1,74 @@ +getContainer()->add( 'plugin_updater_common_subscriber', 'WP_Rocket\Subscriber\Plugin\Updater_Api_Common_Subscriber' ) + ->withArgument( + [ + 'api_host' => $api_url['host'], + 'site_url' => home_url(), + 'plugin_version' => WP_ROCKET_VERSION, + 'settings_slug' => WP_ROCKET_SLUG, + 'settings_nonce_key' => WP_ROCKET_PLUGIN_SLUG, + 'plugin_options' => $this->getContainer()->get( 'options' ), + ] + ); + $this->getContainer()->add( 'plugin_information_subscriber', 'WP_Rocket\Subscriber\Plugin\Information_Subscriber' ) + ->withArgument( + [ + 'plugin_file' => WP_ROCKET_FILE, + 'api_url' => WP_ROCKET_WEB_INFO, + ] + ); + $this->getContainer()->add( 'plugin_updater_subscriber', 'WP_Rocket\Subscriber\Plugin\Updater_Subscriber' ) + ->withArgument( + [ + 'plugin_file' => WP_ROCKET_FILE, + 'plugin_version' => WP_ROCKET_VERSION, + 'vendor_url' => WP_ROCKET_WEB_MAIN, + 'api_url' => WP_ROCKET_WEB_CHECK, + 'icons' => [ + '2x' => WP_ROCKET_ASSETS_IMG_URL . 'icon-256x256.png', + '1x' => WP_ROCKET_ASSETS_IMG_URL . 'icon-128x128.png', + ], + ] + ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/classes/admin/Database/class-optimization-process.php b/wp-content/plugins/wp-rocket/inc/classes/admin/Database/class-optimization-process.php new file mode 100644 index 0000000..82cfc96 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/classes/admin/Database/class-optimization-process.php @@ -0,0 +1,172 @@ +get_col( "SELECT ID FROM $wpdb->posts WHERE post_type = 'revision'" ); + if ( $query ) { + $number = 0; + foreach ( $query as $id ) { + $number += wp_delete_post_revision( intval( $id ) ) instanceof \WP_Post ? 1 : 0; + } + + $this->count[ $item ] = $number; + } + break; + case 'database_auto_drafts': + $query = $wpdb->get_col( "SELECT ID FROM $wpdb->posts WHERE post_status = 'auto-draft'" ); + if ( $query ) { + $number = 0; + foreach ( $query as $id ) { + $number += wp_delete_post( intval( $id ), true ) instanceof \WP_Post ? 1 : 0; + } + + $this->count[ $item ] = $number; + } + break; + case 'database_trashed_posts': + $query = $wpdb->get_col( "SELECT ID FROM $wpdb->posts WHERE post_status = 'trash'" ); + if ( $query ) { + $number = 0; + foreach ( $query as $id ) { + $number += wp_delete_post( $id, true ) instanceof \WP_Post ? 1 : 0; + } + + $this->count[ $item ] = $number; + } + break; + case 'database_spam_comments': + $query = $wpdb->get_col( "SELECT comment_ID FROM $wpdb->comments WHERE comment_approved = 'spam'" ); + if ( $query ) { + $number = 0; + foreach ( $query as $id ) { + $number += (int) wp_delete_comment( intval( $id ), true ); + } + + $this->count[ $item ] = $number; + } + break; + case 'database_trashed_comments': + $query = $wpdb->get_col( "SELECT comment_ID FROM $wpdb->comments WHERE (comment_approved = 'trash' OR comment_approved = 'post-trashed')" ); + if ( $query ) { + $number = 0; + foreach ( $query as $id ) { + $number += (int) wp_delete_comment( intval( $id ), true ); + } + + $this->count[ $item ] = $number; + } + break; + case 'database_expired_transients': + $time = isset( $_SERVER['REQUEST_TIME'] ) ? (int) $_SERVER['REQUEST_TIME'] : time(); + $query = $wpdb->get_col( $wpdb->prepare( "SELECT option_name FROM $wpdb->options WHERE option_name LIKE %s AND option_value < %d", $wpdb->esc_like( '_transient_timeout' ) . '%', $time ) ); + + if ( $query ) { + $number = 0; + foreach ( $query as $transient ) { + $key = str_replace( '_transient_timeout_', '', $transient ); + $number += (int) delete_transient( $key ); + } + + $this->count[ $item ] = $number; + } + break; + case 'database_all_transients': + $query = $wpdb->get_col( $wpdb->prepare( "SELECT option_name FROM $wpdb->options WHERE option_name LIKE %s OR option_name LIKE %s", $wpdb->esc_like( '_transient_' ) . '%', $wpdb->esc_like( '_site_transient_' ) . '%' ) ); + if ( $query ) { + $number = 0; + foreach ( $query as $transient ) { + if ( strpos( $transient, '_site_transient_' ) !== false ) { + $number += (int) delete_site_transient( str_replace( '_site_transient_', '', $transient ) ); + } else { + $number += (int) delete_transient( str_replace( '_transient_', '', $transient ) ); + } + } + + $this->count[ $item ] = $number; + } + break; + case 'database_optimize_tables': + $query = $wpdb->get_results( "SELECT table_name, data_free FROM information_schema.tables WHERE table_schema = '" . DB_NAME . "' and Engine <> 'InnoDB' and data_free > 0" ); + if ( $query ) { + $number = 0; + foreach ( $query as $table ) { + $number += (int) $wpdb->query( "OPTIMIZE TABLE $table->table_name" ); + } + + $this->count[ $item ] = $number; + } + break; + } + + return false; + } + + /** + * Complete + */ + protected function complete() { + delete_transient( 'rocket_database_optimization_process' ); + set_transient( 'rocket_database_optimization_process_complete', $this->count ); + + parent::complete(); + } + +} diff --git a/wp-content/plugins/wp-rocket/inc/classes/admin/Database/class-optimization.php b/wp-content/plugins/wp-rocket/inc/classes/admin/Database/class-optimization.php new file mode 100644 index 0000000..c1bad47 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/classes/admin/Database/class-optimization.php @@ -0,0 +1,126 @@ +process = $process; + $this->options = [ + 'database_revisions' => __( 'Revisions', 'rocket' ), + 'database_auto_drafts' => __( 'Auto Drafts', 'rocket' ), + 'database_trashed_posts' => __( 'Trashed Posts', 'rocket' ), + 'database_spam_comments' => __( 'Spam Comments', 'rocket' ), + 'database_trashed_comments' => __( 'Trashed Comments', 'rocket' ), + 'database_expired_transients' => __( 'Expired transients', 'rocket' ), + 'database_all_transients' => __( 'Transients', 'rocket' ), + 'database_optimize_tables' => __( 'Tables', 'rocket' ), + ]; + } + + /** + * Get Database options + * + * @since 3.0.4 + * @author Remy Perona + * + * @return array + */ + public function get_options() { + return $this->options; + } + + /** + * Performs the database optimization + * + * @since 2.11 + * @author Remy Perona + * + * @param array $options WP Rocket Database options. + */ + public function process_handler( $options ) { + if ( method_exists( $this->process, 'cancel_process' ) ) { + $this->process->cancel_process(); + } + + array_map( [ $this->process, 'push_to_queue' ], $options ); + + $this->process->save()->dispatch(); + } + + /** + * Count the number of items concerned by the database cleanup + * + * @since 2.8 + * @author Remy Perona + * + * @param string $type Item type to count. + * @return int Number of items for this type + */ + public function count_cleanup_items( $type ) { + global $wpdb; + + $count = 0; + + switch ( $type ) { + case 'database_revisions': + $count = $wpdb->get_var( "SELECT COUNT(ID) FROM $wpdb->posts WHERE post_type = 'revision'" ); + break; + case 'database_auto_drafts': + $count = $wpdb->get_var( "SELECT COUNT(ID) FROM $wpdb->posts WHERE post_status = 'auto-draft'" ); + break; + case 'database_trashed_posts': + $count = $wpdb->get_var( "SELECT COUNT(ID) FROM $wpdb->posts WHERE post_status = 'trash'" ); + break; + case 'database_spam_comments': + $count = $wpdb->get_var( "SELECT COUNT(comment_ID) FROM $wpdb->comments WHERE comment_approved = 'spam'" ); + break; + case 'database_trashed_comments': + $count = $wpdb->get_var( "SELECT COUNT(comment_ID) FROM $wpdb->comments WHERE (comment_approved = 'trash' OR comment_approved = 'post-trashed')" ); + break; + case 'database_expired_transients': + $time = isset( $_SERVER['REQUEST_TIME'] ) ? (int) $_SERVER['REQUEST_TIME'] : time(); + $count = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(option_name) FROM $wpdb->options WHERE option_name LIKE %s AND option_value < %d", $wpdb->esc_like( '_transient_timeout' ) . '%', $time ) ); + break; + case 'database_all_transients': + $count = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(option_id) FROM $wpdb->options WHERE option_name LIKE %s OR option_name LIKE %s", $wpdb->esc_like( '_transient_' ) . '%', $wpdb->esc_like( '_site_transient_' ) . '%' ) ); + break; + case 'database_optimize_tables': + $count = $wpdb->get_var( "SELECT COUNT(table_name) FROM information_schema.tables WHERE table_schema = '" . DB_NAME . "' and Engine <> 'InnoDB' and data_free > 0" ); + break; + } + + return $count; + } +} diff --git a/wp-content/plugins/wp-rocket/inc/classes/admin/class-abstract-options.php b/wp-content/plugins/wp-rocket/inc/classes/admin/class-abstract-options.php new file mode 100644 index 0000000..f737032 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/classes/admin/class-abstract-options.php @@ -0,0 +1,63 @@ +get( $name ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/classes/admin/class-logs.php b/wp-content/plugins/wp-rocket/inc/classes/admin/class-logs.php new file mode 100644 index 0000000..ad352b1 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/classes/admin/class-logs.php @@ -0,0 +1,183 @@ + [ 'enable_debug', 10, 2 ], + 'admin_post_rocket_download_debug_file' => 'download_debug_file', + 'admin_post_rocket_delete_debug_file' => 'delete_debug_file', + ]; + } + + /** ----------------------------------------------------------------------------------------- */ + /** DEBUG ACTIVATION ======================================================================== */ + /** ----------------------------------------------------------------------------------------- */ + + /** + * Enable or disable the debug mode when settings are saved. + * + * @since 3.1.4 + * @access public + * @author Grégory Viguier + * + * @param array $newvalue An array of submitted options values. + * @param array $oldvalue An array of previous options values. + * @return array Updated submitted options values. + */ + public function enable_debug( $newvalue, $oldvalue ) { + if ( empty( $_POST ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Missing + return $newvalue; + } + + if ( ! empty( $newvalue['debug_enabled'] ) ) { + Logger::enable_debug(); + } else { + Logger::disable_debug(); + } + + unset( $newvalue['debug_enabled'] ); + + return $newvalue; + } + + /** ----------------------------------------------------------------------------------------- */ + /** ADMIN POST CALLBACKS ==================================================================== */ + /** ----------------------------------------------------------------------------------------- */ + + /** + * Download the log file. + * + * @since 3.1.4 + * @access public + * @author Grégory Viguier + */ + public function download_debug_file() { + if ( ! $this->verify_nonce( 'download_debug_file' ) ) { + wp_nonce_ays( '' ); + } + + if ( ! $this->current_user_can() ) { + $this->redirect(); + } + + $contents = Logger::get_log_file_contents(); + + if ( is_wp_error( $contents ) ) { + add_settings_error( 'general', $contents->get_error_code(), $contents->get_error_message(), 'error' ); + set_transient( 'settings_errors', get_settings_errors(), 30 ); + + $this->redirect( add_query_arg( 'settings-updated', 1, wp_get_referer() ) ); + } + + $file_name = Logger::get_log_file_path(); + $file_name = basename( $file_name, '.log' ) . Logger::get_log_file_extension(); + + nocache_headers(); + @header( 'Content-Type: text/x-log' ); + @header( 'Content-Disposition: attachment; filename="' . $file_name . '"' ); + @header( 'Content-Transfer-Encoding: binary' ); + @header( 'Content-Length: ' . strlen( $contents ) ); + @header( 'Connection: close' ); + echo $contents; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + exit(); + } + + /** + * Delete the log file. + * + * @since 3.1.4 + * @access public + * @author Grégory Viguier + */ + public function delete_debug_file() { + if ( ! $this->verify_nonce( 'delete_debug_file' ) ) { + wp_nonce_ays( '' ); + } + + if ( ! $this->current_user_can() ) { + $this->redirect(); + } + + if ( ! Logger::delete_log_file() ) { + add_settings_error( 'general', 'debug_file_not_deleted', __( 'The debug file could not be deleted.', 'rocket' ), 'error' ); + set_transient( 'settings_errors', get_settings_errors(), 30 ); + + $this->redirect( add_query_arg( 'settings-updated', 1, wp_get_referer() ) ); + } + + // Done. + $this->redirect(); + } + + + /** ----------------------------------------------------------------------------------------- */ + /** TOOLS =================================================================================== */ + /** ----------------------------------------------------------------------------------------- */ + + /** + * Verify the nonce sent in $_GET['_wpnonce']. + * + * @since 3.1.4 + * @access protected + * @author Grégory Viguier + * + * @param string $nonce_name The nonce name. + * @return bool + */ + protected function verify_nonce( $nonce_name ) { + return isset( $_GET['_wpnonce'] ) && wp_verify_nonce( $_GET['_wpnonce'], $nonce_name ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized, WordPress.Security.ValidatedSanitizedInput.MissingUnslash + } + + /** + * Tell if the current user can operate. + * + * @since 3.1.4 + * @access protected + * @author Grégory Viguier + * + * @return bool + */ + protected function current_user_can() { + return current_user_can( 'rocket_manage_options' ); + } + + /** + * Redirect the user. + * + * @since 3.1.4 + * @access protected + * @author Grégory Viguier + * + * @param string $redirect URL to redirect the user to. + */ + protected function redirect( $redirect = null ) { + if ( empty( $redirect ) ) { + $redirect = wp_get_referer(); + } + + wp_safe_redirect( esc_url_raw( $redirect ) ); + die(); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/classes/admin/class-options-data.php b/wp-content/plugins/wp-rocket/inc/classes/admin/class-options-data.php new file mode 100644 index 0000000..eb1e6e6 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/classes/admin/class-options-data.php @@ -0,0 +1,124 @@ +options = $options; + } + + /** + * Checks if the provided key exists in the option data array. + * + * @since 3.0 + * @author Remy Perona + * + * @param string $key key name. + * @return boolean true if it exists, false otherwise + */ + public function has( $key ) { + return isset( $this->options[ $key ] ); + } + + /** + * Gets the value associated with a specific key. + * + * @since 3.0 + * @author Remy Perona + * + * @param string $key key name. + * @param mixed $default default value to return if key doesn't exist. + * @return mixed + */ + public function get( $key, $default = '' ) { + /** + * Pre-filter any WP Rocket option before read + * + * @since 2.5 + * + * @param mixed $default The default value. + */ + $value = apply_filters( 'pre_get_rocket_option_' . $key, null, $default ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound + + if ( null !== $value ) { + return $value; + } + + if ( 'consumer_key' === $key && rocket_has_constant( 'WP_ROCKET_KEY' ) ) { + return WP_ROCKET_KEY; + } elseif ( 'consumer_email' === $key && rocket_has_constant( 'WP_ROCKET_EMAIL' ) ) { + return WP_ROCKET_EMAIL; + } + + if ( ! $this->has( $key ) ) { + return $default; + } + + /** + * Filter any WP Rocket option after read + * + * @since 2.5 + * + * @param mixed $default The default value. + */ + return apply_filters( 'get_rocket_option_' . $key, $this->options[ $key ], $default ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound + } + + /** + * Sets the value associated with a specific key. + * + * @since 3.0 + * @author Remy Perona + * + * @param string $key key name. + * @param mixed $value to set. + * @return void + */ + public function set( $key, $value ) { + $this->options[ $key ] = $value; + } + + /** + * Sets multiple values. + * + * @since 3.0 + * @author Remy Perona + * + * @param array $options An array of key/value pairs to set. + * @return void + */ + public function set_values( $options ) { + foreach ( $options as $key => $value ) { + $this->set( $key, $value ); + } + } + + /** + * Gets the option array. + * + * @since 3.0 + * @author Remy Perona + * + * @return array + */ + public function get_options() { + return $this->options; + } +} diff --git a/wp-content/plugins/wp-rocket/inc/classes/admin/class-options.php b/wp-content/plugins/wp-rocket/inc/classes/admin/class-options.php new file mode 100644 index 0000000..5da0bf7 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/classes/admin/class-options.php @@ -0,0 +1,95 @@ +prefix = $prefix; + } + + /** + * Gets the option name used to store the option in the WordPress database. + * + * @since 3.0 + * @author Remy Perona + * + * @param string $name Unprefixed name of the option. + * + * @return string Option name used to store it + */ + public function get_option_name( $name ) { + return $this->prefix . $name; + } + + /** + * Gets the option for the given name. Returns the default value if the value does not exist. + * + * @since 3.0 + * @author Remy Perona + * + * @param string $name Name of the option to get. + * @param mixed $default Default value to return if the value does not exist. + * + * @return mixed + */ + public function get( $name, $default = null ) { + $option = get_option( $this->get_option_name( $name ), $default ); + + if ( is_array( $default ) && ! is_array( $option ) ) { + $option = (array) $option; + } + + return $option; + } + + /** + * Sets the value of an option. Update the value if the option for the given name already exists. + * + * @since 3.0 + * @author Remy Perona + * @param string $name Name of the option to set. + * @param mixed $value Value to set for the option. + * + * @return void + */ + public function set( $name, $value ) { + update_option( $this->get_option_name( $name ), $value ); + } + + /** + * Deletes the option with the given name. + * + * @since 3.0 + * @author Remy Perona + * + * @param string $name Name of the option to delete. + * + * @return void + */ + public function delete( $name ) { + delete_option( $this->get_option_name( $name ) ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/classes/admin/deactivation/class-render.php b/wp-content/plugins/wp-rocket/inc/classes/admin/deactivation/class-render.php new file mode 100644 index 0000000..fb5d470 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/classes/admin/deactivation/class-render.php @@ -0,0 +1,30 @@ + wp_nonce_url( 'plugins.php?action=deactivate&plugin=' . rawurlencode( 'wp-rocket/wp-rocket.php' ), 'deactivate-plugin_wp-rocket/wp-rocket.php' ), + ]; + + echo $this->generate( 'form', $args ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Dynamic content is properly escaped in the view. + } +} diff --git a/wp-content/plugins/wp-rocket/inc/classes/busting/class-abstract-busting.php b/wp-content/plugins/wp-rocket/inc/classes/busting/class-abstract-busting.php new file mode 100644 index 0000000..6b0c49c --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/classes/busting/class-abstract-busting.php @@ -0,0 +1,135 @@ +busting_path . $this->filename; + + if ( \rocket_direct_filesystem()->exists( $path ) ) { + return true; + } + + return $this->refresh_save( $url ); + } + + /** + * Saves the content of the URL to bust to the busting file. + * + * @since 3.2 + * @access public + * @author Grégory Viguier + * + * @param string $url URL to get the content from. + * @return bool + */ + public function refresh_save( $url ) { + $path = $this->busting_path . $this->filename; + $content = $this->get_file_content( $url ); + + if ( ! $content ) { + // If a previous version is present, it is kept in place. + return false; + } + + if ( ! \rocket_direct_filesystem()->exists( $this->busting_path ) ) { + \rocket_mkdir_p( $this->busting_path ); + } + + if ( ! \rocket_put_content( $path, $content ) ) { + return false; + } + + return true; + } + + /** + * Gets the final URL for the cache busting file. + * + * @since 3.1 + * @author Remy Perona + * + * @return string + */ + protected function get_busting_url() { + // This filter is documented in inc/functions/minify.php. + return apply_filters( 'rocket_js_url', $this->busting_url . $this->filename ); + } + + /** + * Performs the replacement process. + * + * @since 3.1 + * @author Remy Perona + * + * @param string $html HTML content. + * @return string + */ + abstract public function replace_url( $html ); + + /** + * Searches for element(s) in the DOM + * + * @since 3.1 + * @author Remy Perona + * + * @param string $pattern Pattern to match. + * @param string $html HTML content. + * @return string + */ + abstract protected function find( $pattern, $html ); +} diff --git a/wp-content/plugins/wp-rocket/inc/classes/busting/class-facebook-pickles.php b/wp-content/plugins/wp-rocket/inc/classes/busting/class-facebook-pickles.php new file mode 100644 index 0000000..0a68481 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/classes/busting/class-facebook-pickles.php @@ -0,0 +1,1209 @@ +[a-zA-Z_-]+)'; + + /** + * Regex pattern to capture a version. + * + * @var string + * @since 3.2 + * @author Grégory Viguier + */ + const VERSION_CAPTURE = '(?[\d\.]+)'; + + /** + * Regex pattern to capture an app ID. + * + * @var string + * @since 3.2 + * @author Grégory Viguier + */ + const APP_ID_CAPTURE = '(?\d+)'; + + /** + * Cache busting files base path. + * + * @var string + * @since 3.2 + * @access private + * @author Grégory Viguier + */ + private $busting_path; + + /** + * Cache busting base URL. + * + * @var string + * @since 3.2 + * @access private + * @author Grégory Viguier + */ + private $busting_url; + + /** + * Main file URL (remote). + * %s is a locale like "en_US". + * + * @var string + * @since 3.2 + * @access private + * @author Grégory Viguier + */ + private $main_file_url = 'https://connect.facebook.net/%s/fbevents.js'; + + /** + * Main file name (local). + * %s is like "{{locale}}-{{version}}". + * + * @var string + * @since 3.2 + * @access private + * @author Grégory Viguier + */ + private $main_file_name = 'fbpix-events-%s.js'; + + /** + * Config file URL (remote). + * %d is an app ID (a number), %s is a version like "2.8.30". + * The "r" argument is the release segment: it is considered "stable". + * + * @var string + * @since 3.2 + * @access private + * @author Grégory Viguier + */ + private $config_file_url = 'https://connect.facebook.net/signals/config/%s?v=%s&r=stable'; + + /** + * Config file name (local). + * %s is like "{{app_id}}-{{version}}". + * + * @var string + * @since 3.2 + * @access private + * @author Grégory Viguier + */ + private $config_file_name = 'fbpix-config-%s.js'; + + /** + * Plugins file URL (remote). + * 1st %s is a plugin name like "identity", 2nd %s is a version like "2.8.30". + * + * @var string + * @since 3.2 + * @access private + * @author Grégory Viguier + */ + private $plugins_file_url = 'https://connect.facebook.net/signals/plugins/%s?v=%s'; + + /** + * Plugins file name (local). + * %s is like "{{plugin_name}}-{{version}}". + * + * @var string + * @since 3.2 + * @access private + * @author Grégory Viguier + */ + private $plugins_file_name = 'fbpix-plugin-%s.js'; + + /** + * Flag to track the replacement. + * + * @var bool + * @since 3.2 + * @access private + * @author Grégory Viguier + */ + private $is_replaced = false; + + /** + * Constructor. + * + * @since 3.2 + * @access public + * @author Grégory Viguier + * + * @param string $busting_path Path to the busting directory. + * @param string $busting_url URL of the busting directory. + */ + public function __construct( $busting_path, $busting_url ) { + /** Warning: all file names and script URLs are dynamic, and must be run through sprintf(). */ + $this->busting_path = $busting_path . 'facebook-tracking/'; + $this->busting_url = $busting_url . 'facebook-tracking/'; + } + + /** ----------------------------------------------------------------------------------------- */ + /** MAIN PROCESS ============================================================================ */ + /** ----------------------------------------------------------------------------------------- */ + + /** + * Perform the URL replacement process. + * + * @since 3.2 + * @access public + * @author Grégory Viguier + * + * @param string $html HTML contents. + * @return string HTML contents. + */ + public function replace_url( $html ) { + $this->is_replaced = false; + + $tags = $this->find_tags( $html ); + + if ( ! $tags ) { + return $html; + } + + Logger::info( + 'FACEBOOK PIXEL CACHING PROCESS STARTED.', + [ + 'fb pixel', + 'tag' => $tags['tag_to_search'], + ] + ); + + $all_files = []; + + /** + * Fetch the main file: https://connect.facebook.net/{{locale}}/fbevents.js. + */ + $version = $this->get_most_recent_local_version(); + $locale = $this->get_locale_from_url( $tags['tag_to_search'] ); + $main_file_url = $this->get_main_file_url( $locale ); + + if ( $version ) { + // At least 1 main file exists locally (but maybe not in the right locale). + $main_file_path = $this->get_busting_file_path( $locale, $version ); + $main_file_contents = $this->get_file_contents( $main_file_path, $main_file_url ); + } else { + // No cached files yet. + $main_file_contents = $this->get_remote_contents( $main_file_url ); + } + + if ( ! $main_file_contents ) { + return $html; + } + + /** + * Grab some data from the main file and the inline tag: app_id and version. + */ + $variables = $this->get_variables( $main_file_contents, $tags['tag_to_search'] ); + + if ( ! $variables ) { + return $html; + } + + if ( ! $version ) { + // The local file doesn't exist yet, so we couldn't get its version (and so, can't know its path yet) until we fetch a fresh copy. + $main_file_path = $this->get_busting_file_path( $locale, $variables['version'] ); + } + + $all_files[] = $main_file_path; + unset( $version ); + + /** + * Fetch the config file: https://connect.facebook.net/signals/config/{{app_id}}?v={{version}}&r={{release_segment​}}. + */ + $config_file_path = $this->get_config_file_path( $variables ); + + if ( ! $config_file_path ) { + return $html; + } + + $all_files[] = $config_file_path; + + /** + * Fetch all plugin files: https://connect.facebook.net/signals/plugins/{{pluginName}}.js?v={{version}}​. + */ + $plugin_file_paths = $this->get_plugin_file_paths( $variables ); + + if ( ! $plugin_file_paths ) { + return $html; + } + + $all_files = array_merge( $all_files, $plugin_file_paths ); + + /** + * Modify the main file contents. + */ + $busting_file_url = $this->get_busting_file_url( $locale, $variables['version'] ); + $busting_dir_url = dirname( $busting_file_url ) . '/'; + $main_file_contents = $this->replace_main_file_contents( $main_file_contents, $busting_dir_url ); + + if ( ! $main_file_contents ) { + return $html; + } + + /** + * Save all the changes to the main file. + */ + $updated = $this->update_file_contents( $main_file_path, $main_file_contents ); + + if ( ! $updated ) { + return $html; + } + + /** + * Finally, replace the main file URL by the local one in the inline script tag. + */ + $replace_tag = preg_replace( '@(?:https?:)?//connect\.facebook\.net/[a-zA-Z_-]+/fbevents\.js@i', $busting_file_url, $tags['tag_to_replace'], -1, $count ); + + if ( ! $count || false === strpos( $html, $tags['tag_to_replace'] ) ) { + Logger::error( 'The local file URL could not be replaced in the page contents.', [ 'fb pixel' ] ); + return $html; + } + + $html = str_replace( $tags['tag_to_replace'], $replace_tag, $html ); + + $this->is_replaced = true; + + /** + * Triggered once the Facebook pixel URL has been replaced in the page contents. + * + * @since 3.2 + * @author Grégory Viguier + * + * @param string $busting_file_url URL of the local main file. + * @param array $all_files An array of all file paths. + */ + do_action( 'rocket_after_facebook_pixel_url_replaced', $busting_file_url, $all_files ); + + Logger::info( + 'Facebook pixel caching process succeeded.', + [ + 'fb pixel', + 'files' => $all_files, + ] + ); + + return $html; + } + + /** + * Tell if the replacement was sucessful or not. + * + * @since 3.2 + * @access public + * @author Grégory Viguier + * + * @return bool + */ + public function is_replaced() { + return $this->is_replaced; + } + + /** ----------------------------------------------------------------------------------------- */ + /** GRAB/MANIPULATE DATA IN CONTENTS ======================================================== */ + /** ----------------------------------------------------------------------------------------- */ + + /** + * Search for elements in the DOM. + * + * @since 3.2 + * @access private + * @author Grégory Viguier + * + * @param string $html HTML contents. + * @return array|bool { + * An array on success, described as below. False if nothing is found. + * + * @type string $tag_to_replace The script tag that contains the facebook.net URL: this is the tag that will be replaced in the page HTML. + * @type string $tag_to_search It contains both app ID and facebook.net URL: this is what will be searched in for this data. + * + * When the app ID and the URL are in the same tag, $tag_to_replace and $tag_to_search are the same. + * } + */ + private function find_tags( $html ) { + preg_match_all( '@]*?>(.*)@Umsi', $html, $matches, PREG_SET_ORDER ); + + if ( empty( $matches ) ) { + return false; + } + + $tags = [ + 'app_id' => [], + 'url' => [], + 'both' => [], + ]; + + foreach ( $matches as $match ) { + list( $tag, $script ) = $match; + + if ( ! trim( $script ) ) { + continue; + } + + $has_app_id = false; + $has_url = false; + + if ( preg_match( '@fbq\s*\(\s*["\']init["\']\s*,\s*["\']' . self::APP_ID_CAPTURE . '["\']@', $script, $matches_init ) ) { + if ( (int) $matches_init['app_id'] > 0 ) { + $has_app_id = true; + } + } + + $has_url = (bool) $this->get_locale_from_url( $script ); + + if ( $has_app_id && $has_url ) { + // OK we have both. + $tags['both'] = $tag; + break; + } + + if ( $has_app_id ) { + $tags['app_id'] = $tag; + + if ( $tags['url'] ) { + // OK we have both. + break; + } + } elseif ( $has_url ) { + $tags['url'] = $tag; + + if ( $tags['app_id'] ) { + // OK we have both. + break; + } + } + } + + if ( ! empty( $tags['both'] ) ) { + return [ + 'tag_to_replace' => $tags['both'], + 'tag_to_search' => $tags['both'], + ]; + } + + if ( ! empty( $tags['app_id'] ) && ! empty( $tags['url'] ) ) { + return [ + 'tag_to_replace' => $tags['url'], + 'tag_to_search' => $tags['url'] . $tags['app_id'], + ]; + } + + return false; + } + + /** + * Get some values from the main file and the inline script contents. + * + * @since 3.2 + * @access private + * @author Grégory Viguier + * + * @param string $main_file_contents Main file contents. + * @param string $tag_contents Inline script contents. + * @return array|bool { + * An array of values. False on failure. + * + * @type string $app_id The app ID. + * @type string $version The file version. + * } + */ + private function get_variables( $main_file_contents = null, $tag_contents = null ) { + $variables = []; + + if ( isset( $tag_contents ) ) { + // Retrieve the app ID from the tag contents. + preg_match( '@fbq\s*\(\s*["\']init["\']\s*,\s*["\']' . self::APP_ID_CAPTURE . '["\']@', $tag_contents, $matches ); + + if ( empty( $matches['app_id'] ) ) { + Logger::error( 'The app ID could not be retrieved from the inline script contents.', [ 'fb pixel' ] ); + return false; + } + + $variables['app_id'] = $matches['app_id']; + } + + if ( isset( $main_file_contents ) ) { + // Retrieve the version from the main file contents. + preg_match( '@fbq\.version\s*=\s*["\']' . self::VERSION_CAPTURE . '["\']\s*;@', $main_file_contents, $matches ); + + if ( empty( $matches['version'] ) ) { + Logger::error( 'The version could not be retrieved from the main file contents.', [ 'fb pixel' ] ); + return false; + } + + $variables['version'] = $matches['version']; + } + + return $variables; + } + + /** + * Perform some replacements in the main file contents. Will be replaced: + * - the CDN_BASE_URL value, + * - the config file URL, + * - the plugins file URL. + * + * @since 3.2 + * @access private + * @author Grégory Viguier + * + * @param string $main_file_contents The file contents. + * @param string $busting_dir_url URL of the folder containing the files. + * @return string|bool The new contents on success. False on failure. + */ + private function replace_main_file_contents( $main_file_contents, $busting_dir_url ) { + /** + * Replace the CDN_BASE_URL value. + * From: CDN_BASE_URL:"https://connect.facebook.net/" + * To: CDN_BASE_URL:"https://example.com/wp-content/cache/busting/facebook-tracking/" + */ + $replacement = 'CDN_BASE_URL:"' . $busting_dir_url . '"'; + + if ( ! strpos( $main_file_contents, $replacement ) ) { + $main_file_contents = preg_replace( '@CDN_BASE_URL\s*:\s*["\'][^"\']+["\']@', $replacement, $main_file_contents, -1, $count ); + + if ( ! $count ) { + Logger::error( 'The CDN_BASE_URL could not be replaced in the main file contents.', [ 'fb pixel' ] ); + return false; + } + } + + /** + * Replace the config file URL (https://connect.facebook.net/signals/config/{{app_id}}?v={{version}}&r={{release_segment​}}). + * From: CDN_BASE_URL+"signals/config/"+a+"?v="+b+"&r="+c + * To: CDN_BASE_URL+"fbpix-config-"+a+"-"+b+".js" (the release segment is not taken into account, we consider it "stable") + */ + $replacement_pattern = $this->escape_file_name( $this->config_file_name ); + $replacement_pattern = sprintf( $replacement_pattern, '"\+[a-zA-Z._]+\+"\-"\+[a-zA-Z._]+\+"' ); + $replacement_pattern = 'CDN_BASE_URL\+"' . $replacement_pattern . '"'; + + if ( ! preg_match( '/' . $replacement_pattern . '/', $main_file_contents ) ) { + $pattern = '@CDN_BASE_URL\s*\+\s*["\']signals/config/["\']\s*\+\s*([a-zA-Z._]+)\s*\+\s*["\']\?v=["\']\s*\+\s*([a-zA-Z._]+)\s*\+\s*["\']&r=["\']\s*\+\s*[a-zA-Z._]+@'; + $replacement = 'CDN_BASE_URL+"' . sprintf( $this->config_file_name, '"+$1+"-"+$2+"' ) . '"'; + $main_file_contents = preg_replace( $pattern, $replacement, $main_file_contents, -1, $count ); + + if ( ! $count ) { + Logger::error( 'The config file URL could not be replaced in the main file contents.', [ 'fb pixel' ] ); + return false; + } + } + + /** + * Replace the plugins file URL (https://connect.facebook.net/signals/plugins/{{plugin_name}}.js?v={{version}}​). + * From: CDN_BASE_URL+"signals/plugins/"+b+".js?v="+a.version + * To : CDN_BASE_URL+"fbpix-plugin-"+b+"-"+a.version+".js" + */ + $replacement_pattern = $this->escape_file_name( $this->plugins_file_name ); + $replacement_pattern = sprintf( $replacement_pattern, '"\+[a-zA-Z._]+\+"-"\+[a-zA-Z._]+\+"' ); + $replacement_pattern = 'CDN_BASE_URL\+"' . $replacement_pattern . '"'; + + if ( ! preg_match( '/' . $replacement_pattern . '/', $main_file_contents ) ) { + $pattern = '@CDN_BASE_URL\s*\+\s*["\']signals/plugins/["\']\s*\+\s*([a-zA-Z._]+)\s*\+\s*["\']\.js\?v=["\']\s*\+\s*([a-zA-Z._]+)@'; + $replacement = 'CDN_BASE_URL+"' . sprintf( $this->plugins_file_name, '"+$1+"-"+$2+"' ) . '"'; + $main_file_contents = preg_replace( $pattern, $replacement, $main_file_contents, -1, $count ); + + if ( ! $count ) { + Logger::error( 'The plugins file URL could not be replaced in the main file contents.', [ 'fb pixel' ] ); + return false; + } + } + + return $main_file_contents; + } + + /** ----------------------------------------------------------------------------------------- */ + /** UPDATE/SAVE A LOCAL FILE ================================================================ */ + /** ----------------------------------------------------------------------------------------- */ + + /** + * Save the contents of a URL into a local file if it doesn't exist yet. + * + * @since 3.2 + * @access private + * @author Grégory Viguier + * + * @param string $url URL to get the contents from. + * @param string $path Path to the file that will store the URL contents. + * @return bool True on success. False on failure. + */ + private function maybe_save( $url, $path ) { + $filesystem = \rocket_direct_filesystem(); + + if ( $filesystem->exists( $path ) ) { + // If a previous version is present, keep it. + return true; + } + + return (bool) $this->save( $url, $path ); + } + + /** + * Save the contents of a URL into a local file. + * + * @since 3.2 + * @access private + * @author Grégory Viguier + * + * @param string $url URL to get the contents from. + * @param string $path Path to the file that will store the URL contents. + * @return string|bool The file contents on success. False on failure. + */ + private function save( $url, $path ) { + $contents = $this->get_remote_contents( $url ); + + if ( ! $contents ) { + // Error, we couldn't fetch the file contents. + return false; + } + + return $this->update_file_contents( $path, $contents ); + } + + /** + * Add new contents to a file. If the file doesn't exist, it is created. + * + * @since 3.2 + * @access private + * @author Grégory Viguier + * + * @param string $file_path Path to the file to update. + * @param string $file_contents New contents. + * @return string|bool The file contents on success. False on failure. + */ + private function update_file_contents( $file_path, $file_contents ) { + if ( ! \rocket_direct_filesystem()->exists( $this->busting_path ) ) { + \rocket_mkdir_p( $this->busting_path ); + } + + if ( ! \rocket_put_content( $file_path, $file_contents ) ) { + Logger::error( + 'Contents could not be written into file.', + [ + 'fb pixel', + 'path' => $file_path, + ] + ); + return false; + } + + /** + * Triggered once a file contents have been updated. + * + * @since 3.2 + * @author Grégory Viguier + * + * @param string $file_path Path to the file to update. + * @param string $file_contents The file contents. + */ + do_action( 'rocket_after_facebook_pixel_file_updated', $file_path, $file_contents ); + + return $file_contents; + } + + /** ----------------------------------------------------------------------------------------- */ + /** PUBLIC BULK ACTIONS ON LOCAL FILES ====================================================== */ + /** ----------------------------------------------------------------------------------------- */ + + /** + * Look for existing local files and update their contents if there's a new version available. + * Actually, if a more recent version exists on the FB side, it will delete all local files and hit the home page to recreate them. + * + * @since 3.2 + * @access public + * @author Grégory Viguier + * + * @return bool True on success. False on failure. + */ + public function refresh_all() { + // Get all local main files. + $main_files = $this->get_all_main_files(); + + if ( ! $main_files ) { + // No files (or there's an error). + return false !== $main_files; + } + + $updated = false; + + foreach ( $main_files as $local_main_file ) { + $remote_file_contents = $this->get_remote_contents( $this->get_main_file_url( $local_main_file['locale'] ) ); + + if ( ! $remote_file_contents ) { + continue; + } + + $variables = $this->get_variables( $remote_file_contents ); + + if ( ! $variables ) { + unset( $remote_file_contents, $variables ); + continue; + } + + if ( version_compare( $local_main_file['version'], $variables['version'] ) >= 0 ) { + unset( $remote_file_contents, $variables ); + continue; + } + + unset( $remote_file_contents ); + $updated = true; + break; + } + + if ( ! $updated ) { + return true; + } + + // Delete all local files. + $deleted = $this->delete_all(); + + // Purge all cache files (the URL of the new files changed). + \rocket_clean_domain(); + + // Preload the home page to recreate the files. + $home_url = user_trailingslashit( home_url(), 'home' ); + + wp_remote_get( + $home_url, + [ + 'user-agent' => 'WP Rocket/Homepage Preload', + 'sslverify' => apply_filters( 'https_local_ssl_verify', false ), // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound + ] + ); + + /** + * Triggered once the local files have been refreshed. + * + * @since 3.2 + * @author Grégory Viguier + * + * @param string $version The new version. + */ + do_action( 'rocket_after_facebook_pixel_files_refreshed', $variables['version'] ); + + return true; + } + + /** + * Delete all Facebook Pixel busting files. + * + * @since 3.2 + * @access public + * @author Grégory Viguier + * + * @return bool True on success. False on failure. + */ + public function delete_all() { + $filesystem = \rocket_direct_filesystem(); + $files = $this->get_all_files(); + + if ( ! $files ) { + // No files (or there's an error). + return false !== $files; + } + + $error_paths = []; + + foreach ( $files as $file_name ) { + if ( ! $filesystem->delete( $this->busting_path . $file_name, false, 'f' ) ) { + $error_paths[] = $this->busting_path . $file_name; + } + } + + if ( $error_paths ) { + Logger::error( + 'Local file(s) could not be deleted.', + [ + 'fb pixel', + 'paths' => $error_paths, + ] + ); + } + + /** + * Triggered once all local files have been deleted (or not). + * + * @since 3.2 + * @author Grégory Viguier + * + * @param array $files An array of file names. + * @param array $error_paths Paths to the files that couldn't be deleted. An empty array if everything is fine. + */ + do_action( 'rocket_after_facebook_pixel_files_deleted', $files, $error_paths ); + + return ! $error_paths; + } + + /** ----------------------------------------------------------------------------------------- */ + /** SCAN FOR LOCAL FILES ==================================================================== */ + /** ----------------------------------------------------------------------------------------- */ + + /** + * Get all cached files in the directory. + * + * @since 3.2 + * @access private + * @author Grégory Viguier + * + * @return array|bool A list of file names. False on failure. + */ + private function get_all_files() { + $filesystem = \rocket_direct_filesystem(); + $dir_path = rtrim( $this->busting_path, '\\/' ); + + if ( ! $filesystem->exists( $dir_path ) ) { + return []; + } + + if ( ! $filesystem->is_writable( $dir_path ) ) { + Logger::error( + 'Directory is not writable.', + [ + 'fb pixel', + 'path' => $dir_path, + ] + ); + return false; + } + + $dir = $filesystem->dirlist( $dir_path ); + + if ( false === $dir ) { + Logger::error( + 'Could not get the directory contents.', + [ + 'fb pixel', + 'path' => $dir_path, + ] + ); + return false; + } + + if ( ! $dir ) { + return []; + } + + $list = []; + + foreach ( $dir as $entry ) { + if ( 'f' !== $entry['type'] ) { + continue; + } + if ( preg_match( '@^fbpix-(?:config|events|plugin)-.+\.js$@', $entry['name'], $matches ) ) { + $list[ $entry['name'] ] = $entry['name']; + } + } + + return $list; + } + + /** + * Get all main files in the directory. + * + * @since 3.2 + * @access private + * @author Grégory Viguier + * + * @return array|bool { + * An array of file names (array keys) with following data as values. False on failure. + * + * @type string $locale The locale, like "en_US". + * @type string $version The file version. + * } + */ + private function get_all_main_files() { + $filesystem = \rocket_direct_filesystem(); + $dir_path = rtrim( $this->busting_path, '\\/' ); + + if ( ! $filesystem->exists( $dir_path ) ) { + return []; + } + + if ( ! $filesystem->is_writable( $dir_path ) ) { + Logger::error( + 'Directory is not writable.', + [ + 'fb pixel', + 'path' => $dir_path, + ] + ); + return false; + } + + $dir = $filesystem->dirlist( $dir_path ); + + if ( false === $dir ) { + Logger::error( + 'could not get the directory contents.', + [ + 'fb pixel', + 'path' => $dir_path, + ] + ); + return false; + } + + if ( ! $dir ) { + return []; + } + + $list = []; + $pattern = $this->escape_file_name( $this->main_file_name ); + $pattern = sprintf( $pattern, self::LOCALE_CAPTURE . '-' . self::VERSION_CAPTURE ); + + foreach ( $dir as $entry ) { + if ( 'f' !== $entry['type'] ) { + continue; + } + if ( preg_match( '@^' . $pattern . '$@', $entry['name'], $matches ) ) { + unset( $matches[0] ); + $list[ $entry['name'] ] = $matches; + } + } + + return $list; + } + + /** + * Get the most recent "version" of the main file cached locally. + * + * @since 3.2 + * @access private + * @author Grégory Viguier + * + * @return string|bool The version on success. False on failure. + */ + private function get_most_recent_local_version() { + $main_files = $this->get_all_main_files(); + + if ( ! $main_files ) { + return false; + } + + $version = false; + + foreach ( $main_files as $file_name => $data ) { + if ( ! $version || version_compare( $data['version'], $version ) > 0 ) { + $version = $data['version']; + } + } + + return $version; + } + + /** + * Get the oldest "version" of the main file cached locally. + * + * @since 3.2 + * @access private + * @author Grégory Viguier + * + * @return string|bool The version on success. False on failure. + */ + private function get_oldest_local_version() { + $main_files = $this->get_all_main_files(); + + if ( ! $main_files ) { + return false; + } + + $version = false; + + foreach ( $main_files as $file_name => $data ) { + if ( ! $version || version_compare( $data['version'], $version ) < 0 ) { + $version = $data['version']; + } + } + + return $version; + } + + /** ----------------------------------------------------------------------------------------- */ + /** REMOTE MAIN FILE ======================================================================== */ + /** ----------------------------------------------------------------------------------------- */ + + /** + * Get the remote Facebook Pixel URL. + * + * @since 3.2 + * @access public + * @author Grégory Viguier + * + * @param string $locale A locale string, like 'en_US'. + * @return string + */ + public function get_main_file_url( $locale ) { + return sprintf( $this->main_file_url, $locale ); + } + + /** + * Extract the locale from a URL to bust. + * + * @since 3.2 + * @access private + * @author Grégory Viguier + * + * @param string $url Any string containing the URL to bust. + * @return string|bool The locale on success. False on failure. + */ + private function get_locale_from_url( $url ) { + $pattern = '@//connect\.facebook\.net/' . self::LOCALE_CAPTURE . '/fbevents\.js@i'; + + if ( ! preg_match( $pattern, $url, $matches ) ) { + return false; + } + + return $matches['locale']; + } + + /** ----------------------------------------------------------------------------------------- */ + /** BUSTING FILE (aka: cached copy of the main file) ======================================== */ + /** ----------------------------------------------------------------------------------------- */ + + /** + * Get the local Facebook Pixel URL (the "main" file). + * + * @since 3.2 + * @access private + * @author Grégory Viguier + * + * @param string $locale A locale string, like 'en_US'. + * @param string $version The script version. + * @return string + */ + private function get_busting_file_url( $locale, $version ) { + $filename = $this->get_busting_file_name( $locale, $version ); + + // This filter is documented in inc/functions/minify.php. + return apply_filters( 'rocket_js_url', $this->busting_url . $filename ); + } + + /** + * Get the local Facebook Pixel file name. + * + * @since 3.2 + * @access private + * @author Grégory Viguier + * + * @param string $locale A locale string, like 'en_US'. + * @param string $version The script version. + * @return string + */ + private function get_busting_file_name( $locale, $version ) { + return sprintf( $this->main_file_name, $locale . '-' . $version ); + } + + /** + * Get the local Facebook Pixel file path. + * + * @since 3.2 + * @access private + * @author Grégory Viguier + * + * @param string $locale A locale string, like 'en_US'. + * @param string $version The script version. + * @return string + */ + private function get_busting_file_path( $locale, $version ) { + return $this->busting_path . $this->get_busting_file_name( $locale, $version ); + } + + /** ----------------------------------------------------------------------------------------- */ + /** CONFIG FILE ============================================================================= */ + /** ----------------------------------------------------------------------------------------- */ + + /** + * Get the path to the local "config" file. If the file doesn't exist, it is created by fetching its contents remotely, then saved locally. + * + * @since 3.2 + * @access private + * @see $this->get_variables() + * @author Grégory Viguier + * + * @param array $variables { + * An array of variable values. + * + * @type int $app_id The app ID. + * @type string $version The file version. + * } + * @return string|bool The file path on success. False on failure. + */ + private function get_config_file_path( $variables ) { + $config_file_url = sprintf( $this->config_file_url, $variables['app_id'], $variables['version'] ); + $config_file_name = sprintf( $this->config_file_name, $variables['app_id'] . '-' . $variables['version'] ); + $config_file_path = $this->busting_path . $config_file_name; + + if ( ! $this->maybe_save( $config_file_url, $config_file_path ) ) { + return false; + } + + return $config_file_path; + } + + /** ----------------------------------------------------------------------------------------- */ + /** PLUGIN FILES ============================================================================ */ + /** ----------------------------------------------------------------------------------------- */ + + /** + * Get the paths to all local "plugin" files. If the files don't exist, they are created by fetching their contents remotely, then saved locally. + * + * @since 3.2 + * @access private + * @see $this->get_variables() + * @author Grégory Viguier + * + * @param array $variables { + * An array of variable values. + * + * @type string $app_id The app ID. + * @type string $version The file version. + * } + * @return array|bool An array of file paths on success. False on failure. + */ + private function get_plugin_file_paths( $variables ) { + $paths = []; + $plugin_names = [ + 'identity', + 'microdata', + 'inferredEvents', + 'dwell', + 'sessions', + 'timespent', + 'ga2fbq', + ]; + + foreach ( $plugin_names as $plugin_name ) { + $plugin_file_url = sprintf( $this->plugins_file_url, $plugin_name, $variables['version'] ); + $plugin_file_name = sprintf( $this->plugins_file_name, $plugin_name . '-' . $variables['version'] ); + $plugin_file_path = $this->busting_path . $plugin_file_name; + + if ( ! $this->maybe_save( $plugin_file_url, $plugin_file_path ) ) { + return false; + } + + $paths[] = $plugin_file_path; + } + + return $paths; + } + + /** ----------------------------------------------------------------------------------------- */ + /** TOOLS =================================================================================== */ + /** ----------------------------------------------------------------------------------------- */ + + /** + * Get a file contents. If the file doesn't exist or is not writtable, new contents are fetched remotely. + * + * @since 3.2 + * @access private + * @author Grégory Viguier + * + * @param string $file_path Path to the file. + * @param string $file_url URL to the remote file. + * @return string|bool The contents on success, false on failure. + */ + private function get_file_contents( $file_path, $file_url = false ) { + $filesystem = \rocket_direct_filesystem(); + + if ( $filesystem->is_writable( $file_path ) ) { + // If a previous version is present, return its contents. + $contents = $filesystem->get_contents( $file_path ); + + if ( $contents ) { + return $contents; + } + + // In case the file is empty or we could not get its contents, try to get a fresh copy from remote location. + } + + if ( ! $file_url ) { + return false; + } + + return $this->get_remote_contents( $file_url ); + } + + /** + * Get the contents of a URL. + * + * @since 3.2 + * @access private + * @author Grégory Viguier + * + * @param string $url The URL to request. + * @return string|bool The contents on success. False on failure. + */ + private function get_remote_contents( $url ) { + try { + $response = wp_remote_get( $url ); + } catch ( \Exception $e ) { + Logger::error( + 'Remote file could not be fetched.', + [ + 'fb pixel', + 'url' => $url, + 'response' => $e->getMessage(), + ] + ); + return false; + } + + if ( is_wp_error( $response ) ) { + Logger::error( + 'Remote file could not be fetched.', + [ + 'fb pixel', + 'url' => $url, + 'response' => $response->get_error_message(), + ] + ); + return false; + } + + $contents = wp_remote_retrieve_body( $response ); + + if ( ! $contents ) { + Logger::error( + 'Remote file could not be fetched.', + [ + 'fb pixel', + 'url' => $url, + 'response' => $response, + ] + ); + return false; + } + + return $contents; + } + + /** + * Escape a file name, to be used in a regex pattern (delimiter is `/`). + * `%s` conversion specifications are protected. + * + * @since 3.2 + * @access private + * @author Grégory Viguier + * + * @param string $file_name The file name. + * @return string + */ + private function escape_file_name( $file_name ) { + $file_name = explode( '%s', $file_name ); + $file_name = array_map( 'preg_quote', $file_name ); + + return implode( '%s', $file_name ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/classes/busting/class-facebook-sdk.php b/wp-content/plugins/wp-rocket/inc/classes/busting/class-facebook-sdk.php new file mode 100644 index 0000000..3af8919 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/classes/busting/class-facebook-sdk.php @@ -0,0 +1,673 @@ +busting_path = $busting_path . 'facebook-tracking/'; + $this->busting_url = $busting_url . 'facebook-tracking/'; + } + + /** + * Perform the URL replacement process. + * + * @since 3.2 + * @access public + * @author Grégory Viguier + * + * @param string $html HTML contents. + * @return string HTML contents. + */ + public function replace_url( $html ) { + $this->is_replaced = false; + + $tag = $this->find( ']*?>(.*)<\/script>', $html ); + + if ( ! $tag ) { + return $html; + } + + Logger::info( + 'FACEBOOK SDK CACHING PROCESS STARTED.', + [ + 'fb sdk', + 'tag' => $tag, + ] + ); + + $locale = $this->get_locale_from_url( $tag ); + $remote_url = $this->get_url( $locale ); + + if ( ! $this->save( $remote_url ) ) { + return $html; + } + + $file_url = $this->get_busting_file_url( $locale ); + $replace_tag = preg_replace( '@(?:https?:)?//connect\.facebook\.net/[a-zA-Z_-]+/sdk\.js@i', $file_url, $tag, -1, $count ); + + if ( ! $count || false === strpos( $html, $tag ) ) { + Logger::error( 'The local file URL could not be replaced in the page contents.', [ 'fb sdk' ] ); + return $html; + } + + $html = str_replace( $tag, $replace_tag, $html ); + $file_path = $this->get_busting_file_path( $locale ); + $xfbml = $this->get_xfbml_from_url( $tag ); // Default value should be set to false. + $app_id = $this->get_appId_from_url( $tag ); // APP_ID is the only required value. + $url_version = $this->get_version_from_url( $tag ); + $version = false === $url_version ? 'v5.0' : $url_version; // If version is not available set it to the latest: v.5.0. + + if ( false !== $app_id ) { + // Add FB async init. + $fb_async_script = ''; + $html = str_replace( '', $fb_async_script . '', $html ); + } + + $this->is_replaced = true; + + /** + * Triggered once the Facebook SDK URL has been replaced in the page contents. + * + * @since 3.2 + * @author Grégory Viguier + * + * @param string $file_url URL of the local main file. + * @param string $file_path Path to the local file. + */ + do_action( 'rocket_after_facebook_sdk_url_replaced', $file_url, $file_path ); + + Logger::info( + 'Facebook SDK caching process succeeded.', + [ + 'fb sdk', + 'file' => $file_path, + ] + ); + + return $html; + } + + /** + * Tell if the replacement was sucessful or not. + * + * @since 3.2 + * @access public + * @author Grégory Viguier + * + * @return bool + */ + public function is_replaced() { + return $this->is_replaced; + } + + /** ----------------------------------------------------------------------------------------- */ + /** GRAB/MANIPULATE DATA IN CONTENTS ======================================================== */ + /** ----------------------------------------------------------------------------------------- */ + + /** + * Search for an element in the DOM. + * + * @since 3.2 + * @access private + * @author Grégory Viguier + * + * @param string $pattern Pattern to match. + * @param string $html HTML contents. + * @return string|bool The matched HTML on success. False if nothing is found. + */ + protected function find( $pattern, $html ) { + preg_match_all( '/' . $pattern . '/Umsi', $html, $matches, PREG_SET_ORDER ); + + if ( empty( $matches ) ) { + return false; + } + + foreach ( $matches as $match ) { + if ( trim( $match[1] ) && preg_match( '@//connect\.facebook\.net/[a-zA-Z_-]+/sdk\.js@i', $match[1] ) ) { + return $match[0]; + } + } + + return false; + } + + /** ----------------------------------------------------------------------------------------- */ + /** UPDATE/SAVE A LOCAL FILE ================================================================ */ + /** ----------------------------------------------------------------------------------------- */ + + /** + * Save the contents of a URL into a local file if it doesn't exist yet. + * + * @since 3.2 + * @access public + * @author Grégory Viguier + * + * @param string $url URL to get the contents from. + * @return bool True on success. False on failure. + */ + public function save( $url ) { + $locale = $this->get_locale_from_url( $url ); + $path = $this->get_busting_file_path( $locale ); + + if ( \rocket_direct_filesystem()->exists( $path ) ) { + // If a previous version is present, keep it. + return true; + } + + return $this->refresh_save( $url ); + } + + /** + * Save the contents of a URL into a local file. + * + * @since 3.2 + * @access public + * @author Grégory Viguier + * + * @param string $url URL to get the contents from. + * @return bool True on success. False on failure. + */ + public function refresh_save( $url ) { + $content = $this->get_file_content( $url ); + + if ( ! $content ) { + // Error, we couldn't fetch the file contents. + return false; + } + + $locale = $this->get_locale_from_url( $url ); + $path = $this->get_busting_file_path( $locale ); + + return (bool) $this->update_file_contents( $path, $content ); + } + + /** + * Add new contents to a file. If the file doesn't exist, it is created. + * + * @since 3.2 + * @access private + * @author Grégory Viguier + * + * @param string $file_path Path to the file to update. + * @param string $file_contents New contents. + * @return string|bool The file contents on success. False on failure. + */ + private function update_file_contents( $file_path, $file_contents ) { + if ( ! \rocket_direct_filesystem()->exists( $this->busting_path ) ) { + \rocket_mkdir_p( $this->busting_path ); + } + + if ( ! \rocket_put_content( $file_path, $file_contents ) ) { + Logger::error( + 'Contents could not be written into file.', + [ + 'fb sdk', + 'path' => $file_path, + ] + ); + return false; + } + + /** + * Triggered once a file contents have been updated. + * + * @since 3.2 + * @author Grégory Viguier + * + * @param string $file_path Path to the file to update. + * @param string $file_contents The file contents. + */ + do_action( 'rocket_after_facebook_sdk_file_updated', $file_path, $file_contents ); + + return $file_contents; + } + + /** ----------------------------------------------------------------------------------------- */ + /** PUBLIC BULK ACTIONS ON LOCAL FILES ====================================================== */ + /** ----------------------------------------------------------------------------------------- */ + + /** + * Look for existing local files and update their contents if there's a new version available. + * Actually, if a more recent version exists on the FB side, it will delete all local files and hit the home page to recreate them. + * + * @since 3.2 + * @access public + * @author Grégory Viguier + * + * @return bool True on success. False on failure. + */ + public function refresh() { + $files = $this->get_files(); + + if ( ! $files ) { + // No files (or there's an error). + return false !== $files; + } + + $error_paths = []; + $pattern = $this->escape_file_name( $this->filename ); + $pattern = sprintf( $pattern, '(?[a-zA-Z_-]+)' ); + + foreach ( $files as $file ) { + preg_match( '/^' . $pattern . '$/', $file, $matches ); + + $remote_url = $this->get_url( $matches['locale'] ); + + if ( ! $this->refresh_save( $remote_url ) ) { + $error_paths[] = $this->get_busting_file_path( $matches['locale'] ); + } + } + + if ( $error_paths ) { + Logger::error( + 'Local file(s) could not be updated.', + [ + 'fb sdk', + 'paths' => $error_paths, + ] + ); + } + + /** + * Triggered once all local files have been updated (or not). + * + * @since 3.2 + * @author Grégory Viguier + * + * @param array $files An array of file names. + * @param array $error_paths Paths to the files that couldn't be updated. An empty array if everything is fine. + */ + do_action( 'rocket_after_facebook_sdk_files_refresh', $files, $error_paths ); + + return ! $error_paths; + } + + /** + * Delete all Facebook SDK busting files. + * + * @since 3.2 + * @access public + * @author Grégory Viguier + * + * @return bool True on success. False on failure. + */ + public function delete() { + $filesystem = \rocket_direct_filesystem(); + $files = $this->get_files(); + + if ( ! $files ) { + // No files (or there's an error). + return false !== $files; + } + + $error_paths = []; + + foreach ( $files as $file_name ) { + if ( ! $filesystem->delete( $this->busting_path . $file_name, false, 'f' ) ) { + $error_paths[] = $this->busting_path . $file_name; + } + } + + if ( $error_paths ) { + Logger::error( + 'Local file(s) could not be deleted.', + [ + 'fb sdk', + 'paths' => $error_paths, + ] + ); + } + + /** + * Triggered once all local files have been deleted (or not). + * + * @since 3.2 + * @author Grégory Viguier + * + * @param array $files An array of file names. + * @param array $error_paths Paths to the files that couldn't be deleted. An empty array if everything is fine. + */ + do_action( 'rocket_after_facebook_sdk_files_deleted', $files, $error_paths ); + + return ! $error_paths; + } + + /** ----------------------------------------------------------------------------------------- */ + /** SCAN FOR LOCAL FILES ==================================================================== */ + /** ----------------------------------------------------------------------------------------- */ + + /** + * Get all cached files in the directory. + * + * @since 3.2 + * @access private + * @author Grégory Viguier + * + * @return array|bool A list of file names. False on failure. + */ + private function get_files() { + $filesystem = \rocket_direct_filesystem(); + $dir_path = rtrim( $this->busting_path, '\\/' ); + + if ( ! $filesystem->exists( $dir_path ) ) { + return []; + } + + if ( ! $filesystem->is_writable( $dir_path ) ) { + Logger::error( + 'Directory is not writable.', + [ + 'fb sdk', + 'path' => $dir_path, + ] + ); + return false; + } + + $dir = $filesystem->dirlist( $dir_path ); + + if ( false === $dir ) { + Logger::error( + 'Could not get the directory contents.', + [ + 'fb sdk', + 'path' => $dir_path, + ] + ); + return false; + } + + if ( ! $dir ) { + return []; + } + + $list = []; + $pattern = $this->escape_file_name( $this->filename ); + $pattern = sprintf( $pattern, '[a-zA-Z_-]+' ); + + foreach ( $dir as $entry ) { + if ( 'f' !== $entry['type'] ) { + continue; + } + if ( preg_match( '/^' . $pattern . '$/', $entry['name'], $matches ) ) { + $list[ $entry['name'] ] = $entry['name']; + } + } + + return $list; + } + + /** ----------------------------------------------------------------------------------------- */ + /** REMOTE SDK FILE ========================================================================= */ + /** ----------------------------------------------------------------------------------------- */ + + /** + * Get the remote Facebook SDK URL. + * + * @since 3.2 + * @access private + * @author Grégory Viguier + * + * @param string $locale A locale string, like 'en_US'. + * @return string + */ + public function get_url( $locale ) { + return sprintf( $this->url, $locale ); + } + + /** + * Extract the locale from a URL to bust. + * + * @since 3.2 + * @access private + * @author Grégory Viguier + * + * @param string $url Any string containing the URL to bust. + * @return string|bool The locale on success. False on failure. + */ + private function get_locale_from_url( $url ) { + $pattern = '@//connect\.facebook\.net/(?[a-zA-Z_-]+)/sdk\.js@i'; + + if ( ! preg_match( $pattern, $url, $matches ) ) { + return false; + } + + return $matches['locale']; + } + + /** + * Extract XFBML from a URL to bust. + * + * @since 3.4.3 + * @access private + * @author Soponar Cristina + * + * @param string $url Any string containing the URL to bust. + * @return string|bool The XFBML on success. False on failure. + */ + private function get_xfbml_from_url( $url ) { + $pattern = '@//connect\.facebook\.net/(?[a-zA-Z_-]+)/sdk\.js#(?:.+&)?xfbml=(?[0-9]+)@i'; + + if ( ! preg_match( $pattern, $url, $matches ) ) { + return false; + } + + return $matches['xfbml']; + } + + /** + * Extract appId from a URL to bust. + * + * @since 3.4.3 + * @access private + * @author Soponar Cristina + * + * @param string $url Any string containing the URL to bust. + * @return string|bool The appId on success. False on failure. + */ + private function get_appId_from_url( $url ) { + $pattern = '@//connect\.facebook\.net/(?[a-zA-Z_-]+)/sdk\.js#(?:.+&)?appId=(?[0-9]+)@i'; + + if ( ! preg_match( $pattern, $url, $matches ) ) { + return false; + } + + return $matches['appId']; + } + + /** + * Extract version from a URL to bust. + * + * @since 3.4.3 + * @access private + * @author Soponar Cristina + * + * @param string $url Any string containing the URL to bust. + * @return string|bool The version on success. False on failure. + */ + private function get_version_from_url( $url ) { + $pattern = '@//connect\.facebook\.net/(?[a-zA-Z_-]+)/sdk\.js#(?:.+&)?version=(?[a-zA-Z0-9.]+)@i'; + + if ( ! preg_match( $pattern, $url, $matches ) ) { + return false; + } + + return $matches['version']; + } + + /** ----------------------------------------------------------------------------------------- */ + /** BUSTING FILE ============================================================================ */ + /** ----------------------------------------------------------------------------------------- */ + + /** + * Get the local Facebook SDK URL. + * + * @since 3.2 + * @access private + * @author Grégory Viguier + * + * @param string $locale A locale string, like 'en_US'. + * @return string + */ + private function get_busting_file_url( $locale ) { + $filename = $this->get_busting_file_name( $locale ); + + // This filter is documented in inc/functions/minify.php. + return apply_filters( 'rocket_js_url', apply_filters( 'rocket_facebook_sdk_url', $this->busting_url . $filename ) ); + } + + /** + * Get the local Facebook SDK file name. + * + * @since 3.2 + * @access private + * @author Grégory Viguier + * + * @param string $locale A locale string, like 'en_US'. + * @return string + */ + private function get_busting_file_name( $locale ) { + return sprintf( $this->filename, $locale ); + } + + /** + * Get the local Facebook SDK file path. + * + * @since 3.2 + * @access private + * @author Grégory Viguier + * + * @param string $locale A locale string, like 'en_US'. + * @return string + */ + private function get_busting_file_path( $locale ) { + return $this->busting_path . $this->get_busting_file_name( $locale ); + } + + /** ----------------------------------------------------------------------------------------- */ + /** TOOLS =================================================================================== */ + /** ----------------------------------------------------------------------------------------- */ + + /** + * Get the contents of a URL. + * + * @since 3.2 + * @access protected + * @author Grégory Viguier + * + * @param string $url The URL to request. + * @return string|bool The contents on success. False on failure. + */ + protected function get_file_content( $url ) { + try { + $response = wp_remote_get( $url ); + } catch ( \Exception $e ) { + Logger::error( + 'Remote file could not be fetched.', + [ + 'fb sdk', + 'url' => $url, + 'response' => $e->getMessage(), + ] + ); + return false; + } + + if ( is_wp_error( $response ) ) { + Logger::error( + 'Remote file could not be fetched.', + [ + 'fb sdk', + 'url' => $url, + 'response' => $response->get_error_message(), + ] + ); + return false; + } + + $contents = wp_remote_retrieve_body( $response ); + + if ( ! $contents ) { + Logger::error( + 'Remote file could not be fetched.', + [ + 'fb sdk', + 'url' => $url, + 'response' => $response, + ] + ); + return false; + } + + return $contents; + } + + /** + * Escape a file name, to be used in a regex pattern (delimiter is `/`). + * `%s` conversion specifications are protected. + * + * @since 3.2 + * @access private + * @author Grégory Viguier + * + * @param string $file_name The file name. + * @return string + */ + private function escape_file_name( $file_name ) { + $file_name = explode( '%s', $file_name ); + $file_name = array_map( 'preg_quote', $file_name ); + + return implode( '%s', $file_name ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/classes/class-abstract-render.php b/wp-content/plugins/wp-rocket/inc/classes/class-abstract-render.php new file mode 100644 index 0000000..34ec1da --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/classes/class-abstract-render.php @@ -0,0 +1,147 @@ +template_path = $template_path; + } + + /** + * Renders the given template if it's readable. + * + * @since 3.0 + * @author Remy Perona + * + * @param string $template Template slug. + * @param array $data Data to pass to the template. + */ + public function generate( $template, $data = [] ) { + $template_path = $this->get_template_path( $template ); + + if ( ! rocket_direct_filesystem()->is_readable( $template_path ) ) { + return; + } + + ob_start(); + + include $template_path; + + return trim( ob_get_clean() ); + } + + /** + * Returns the path a specific template. + * + * @since 3.0 + * @author Remy Perona + * + * @param string $path Relative path to the template. + * @return string + */ + private function get_template_path( $path ) { + return $this->template_path . '/' . $path . '.php'; + } + + /** + * Displays the button template. + * + * @since 3.0 + * @author Remy Perona + * + * @param string $type Type of button (can be button or link). + * @param string $action Action to be performed. + * @param array $args Optional array of arguments to populate the button attributes. + * @return void + */ + public function render_action_button( $type, $action, $args = [] ) { + $default = [ + 'label' => '', + 'action' => '', + 'url' => '', + 'parameter' => '', + 'attributes' => '', + ]; + + $args = wp_parse_args( $args, $default ); + + if ( ! empty( $args['attributes'] ) ) { + $attributes = ''; + foreach ( $args['attributes'] as $key => $value ) { + $attributes .= ' ' . sanitize_key( $key ) . '="' . esc_attr( $value ) . '"'; + } + + $args['attributes'] = $attributes; + } + + if ( 'link' !== $type ) { + $args['action'] = $action; + echo $this->generate( 'buttons/button', $args ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Dynamic content is properly escaped in the view. + return; + } + + switch ( $action ) { + case 'ask_support': + case 'view_account': + $args['url'] = rocket_get_external_url( + 'ask_support' === $action ? 'support' : 'account', + [ + 'utm_source' => 'wp_plugin', + 'utm_medium' => 'wp_rocket', + ] + ); + break; + case 'purge_cache': + case 'preload': + case 'rocket_purge_opcache': + case 'rocket_purge_cloudflare': + case 'rocket_purge_sucuri': + case 'rocket_rollback': + case 'rocket_export': + case 'rocket_generate_critical_css': + case 'rocket_purge_rocketcdn': + $url = admin_url( 'admin-post.php?action=' . $action ); + + if ( ! empty( $args['parameters'] ) ) { + $url = add_query_arg( $args['parameters'], $url ); + } + + if ( 'purge_cache' === $action ) { + $action .= '_all'; + } + + $args['url'] = wp_nonce_url( $url, $action ); + break; + case 'documentation': + $args['url'] = get_rocket_documentation_url(); + break; + } + + echo $this->generate( 'buttons/link', $args ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Dynamic content is properly escaped in the view. + } +} diff --git a/wp-content/plugins/wp-rocket/inc/classes/class-wp-rocket-requirements-check.php b/wp-content/plugins/wp-rocket/inc/classes/class-wp-rocket-requirements-check.php new file mode 100644 index 0000000..fa59a64 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/classes/class-wp-rocket-requirements-check.php @@ -0,0 +1,251 @@ +$setting = $args[ $setting ]; + } + } + + $this->plugin_last_version = version_compare( PHP_VERSION, '5.3' ) >= 0 ? $this->plugin_last_version : '2.10.12'; + $this->options = get_option( 'wp_rocket_settings' ); + } + + /** + * Checks if all requirements are ok, if not, display a notice and the rollback + * + * @since 3.0 + * @author Remy Perona + * + * @return bool + */ + public function check() { + if ( ! $this->php_passes() || ! $this->wp_passes() ) { + + add_action( 'admin_notices', [ $this, 'notice' ] ); + add_action( 'admin_post_rocket_rollback', [ $this, 'rollback' ] ); + add_filter( 'http_request_args', [ $this, 'add_own_ua' ], 10, 2 ); + + return false; + } + + return true; + } + + /** + * Checks if the current PHP version is equal or superior to the required PHP version + * + * @since 3.0 + * @author Remy Perona + * + * @return bool + */ + private function php_passes() { + return version_compare( PHP_VERSION, $this->php_version ) >= 0; + } + + /** + * Checks if the current WordPress version is equal or superior to the required PHP version + * + * @since 3.0 + * @author Remy Perona + * + * @return bool + */ + private function wp_passes() { + global $wp_version; + + return version_compare( $wp_version, $this->wp_version ) >= 0; + } + + /** + * Warns if PHP or WP version are less than the defined values and offer rollback. + * + * @since 3.0 Updated minimum PHP version to 5.4 and minimum WordPress version to 4.2 + * @since 3.0 Moved to class + * @since 2.11 + * @author Remy Perona + */ + public function notice() { + if ( ! current_user_can( 'manage_options' ) ) { + return; + } + + // Translators: %1$s = Plugin name, %2$s = Plugin version. + $message = '

    ' . sprintf( __( 'To function properly, %1$s %2$s requires at least:', 'rocket' ), $this->plugin_name, $this->plugin_version ) . '

      '; + + if ( ! $this->php_passes() ) { + // Translators: %1$s = PHP version required. + $message .= '
    • ' . sprintf( __( 'PHP %1$s. To use this WP Rocket version, please ask your web host how to upgrade your server to PHP %1$s or higher.', 'rocket' ), $this->php_version ) . '
    • '; + } + + if ( ! $this->wp_passes() ) { + // Translators: %1$s = WordPress version required. + $message .= '
    • ' . sprintf( __( 'WordPress %1$s. To use this WP Rocket version, please upgrade WordPress to version %1$s or higher.', 'rocket' ), $this->wp_version ) . '
    • '; + } + + $message .= '

    ' . __( 'If you are not able to upgrade, you can rollback to the previous version by using the button below.', 'rocket' ) . '

    ' . + // Translators: %s = Previous plugin version. + sprintf( __( 'Re-install version %s', 'rocket' ), $this->plugin_last_version ) + . '

    '; + + echo '
    ' . wp_kses_post( $message ) . '
    '; + } + + /** + * Do the rollback + * + * @since 3.0 + * @author Remy Perona + */ + public function rollback() { + check_ajax_referer( 'rocket_rollback' ); + + if ( ! current_user_can( 'manage_options' ) ) { + wp_die(); + } + + $consumer_key = isset( $this->options['consumer_key'] ) ? $this->options['consumer_key'] : false; + + if ( ! $consumer_key && defined( 'WP_ROCKET_KEY' ) ) { + $consumer_key = WP_ROCKET_KEY; + } + + $plugin_transient = get_site_transient( 'update_plugins' ); + $plugin_folder = plugin_basename( dirname( $this->plugin_file ) ); + $plugin_file = basename( $this->plugin_file ); + $url = sprintf( 'https://wp-rocket.me/%s/wp-rocket_%s.zip', $consumer_key, $this->plugin_last_version ); + $temp_array = [ + 'slug' => $plugin_folder, + 'new_version' => $this->plugin_last_version, + 'url' => 'https://wp-rocket.me', + 'package' => $url, + ]; + + $temp_object = (object) $temp_array; + $plugin_transient->response[ $plugin_folder . '/' . $plugin_file ] = $temp_object; + set_site_transient( 'update_plugins', $plugin_transient ); + + require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'; + // translators: %s is the plugin name. + $title = sprintf( __( '%s Update Rollback', 'rocket' ), $this->plugin_name ); + $plugin = 'wp-rocket/wp-rocket.php'; + $nonce = 'upgrade-plugin_' . $plugin; + $url = 'update.php?action=upgrade-plugin&plugin=' . rawurlencode( $plugin ); + $upgrader_skin = new Plugin_Upgrader_Skin( compact( 'title', 'nonce', 'url', 'plugin' ) ); + $upgrader = new Plugin_Upgrader( $upgrader_skin ); + remove_filter( 'site_transient_update_plugins', 'rocket_check_update', 1 ); + $upgrader->upgrade( $plugin ); + wp_die( + '', + // translators: %s is the plugin name. + sprintf( esc_html__( '%s Update Rollback', 'rocket' ), esc_html( $this->plugin_name ) ), + [ + 'response' => 200, + ] + ); + } + + /** + * Filters the User Agent when doing a request to WP Rocket server + * + * @since 3.0 + * @author Remy Perona + * + * @param array $request Array of arguments associated with the request. + * @param string $url URL requested. + */ + public function add_own_ua( $request, $url ) { + if ( strpos( $url, 'wp-rocket.me' ) === false ) { + return $request; + } + + $consumer_key = isset( $this->options['consumer_key'] ) ? $this->options['consumer_key'] : false; + + if ( ! $consumer_key && defined( 'WP_ROCKET_KEY' ) ) { + $consumer_key = WP_ROCKET_KEY; + } + + $consumer_email = isset( $this->options['consumer_email'] ) ? $this->options['consumer_email'] : false; + + if ( ! $consumer_email && defined( 'WP_ROCKET_EMAIL' ) ) { + $consumer_email = WP_ROCKET_EMAIL; + } + + $request['user-agent'] = sprintf( '%s;WP-Rocket|%s%s|%s|%s|%s|;', $request['user-agent'], $this->plugin_version, '', $consumer_key, $consumer_email, esc_url( home_url() ) ); + + return $request; + } +} diff --git a/wp-content/plugins/wp-rocket/inc/classes/dependencies/.gitkeep b/wp-content/plugins/wp-rocket/inc/classes/dependencies/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/wp-content/plugins/wp-rocket/inc/classes/dependencies/mobiledetect/mobiledetectlib/Mobile_Detect.php b/wp-content/plugins/wp-rocket/inc/classes/dependencies/mobiledetect/mobiledetectlib/Mobile_Detect.php new file mode 100644 index 0000000..ca54969 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/classes/dependencies/mobiledetect/mobiledetectlib/Mobile_Detect.php @@ -0,0 +1,1477 @@ + + * @author Nick Ilyin + * Original author: Victor Stanciu + * + * @version 2.8.34 + */ +class WP_Rocket_Mobile_Detect +{ + /** + * Mobile detection type. + * + * @deprecated since version 2.6.9 + */ + const DETECTION_TYPE_MOBILE = 'mobile'; + + /** + * Extended detection type. + * + * @deprecated since version 2.6.9 + */ + const DETECTION_TYPE_EXTENDED = 'extended'; + + /** + * A frequently used regular expression to extract version #s. + * + * @deprecated since version 2.6.9 + */ + const VER = '([\w._\+]+)'; + + /** + * Top-level device. + */ + const MOBILE_GRADE_A = 'A'; + + /** + * Mid-level device. + */ + const MOBILE_GRADE_B = 'B'; + + /** + * Low-level device. + */ + const MOBILE_GRADE_C = 'C'; + + /** + * Stores the version number of the current release. + */ + const VERSION = '2.8.34'; + + /** + * A type for the version() method indicating a string return value. + */ + const VERSION_TYPE_STRING = 'text'; + + /** + * A type for the version() method indicating a float return value. + */ + const VERSION_TYPE_FLOAT = 'float'; + + /** + * A cache for resolved matches + * @var array + */ + protected $cache = array(); + + /** + * The User-Agent HTTP header is stored in here. + * @var string + */ + protected $userAgent = null; + + /** + * HTTP headers in the PHP-flavor. So HTTP_USER_AGENT and SERVER_SOFTWARE. + * @var array + */ + protected $httpHeaders = array(); + + /** + * CloudFront headers. E.g. CloudFront-Is-Desktop-Viewer, CloudFront-Is-Mobile-Viewer & CloudFront-Is-Tablet-Viewer. + * @var array + */ + protected $cloudfrontHeaders = array(); + + /** + * The matching Regex. + * This is good for debug. + * @var string + */ + protected $matchingRegex = null; + + /** + * The matches extracted from the regex expression. + * This is good for debug. + * + * @var string + */ + protected $matchesArray = null; + + /** + * The detection type, using self::DETECTION_TYPE_MOBILE or self::DETECTION_TYPE_EXTENDED. + * + * @deprecated since version 2.6.9 + * + * @var string + */ + protected $detectionType = self::DETECTION_TYPE_MOBILE; + + /** + * HTTP headers that trigger the 'isMobile' detection + * to be true. + * + * @var array + */ + protected static $mobileHeaders = array( + + 'HTTP_ACCEPT' => array('matches' => array( + // Opera Mini; @reference: http://dev.opera.com/articles/view/opera-binary-markup-language/ + 'application/x-obml2d', + // BlackBerry devices. + 'application/vnd.rim.html', + 'text/vnd.wap.wml', + 'application/vnd.wap.xhtml+xml' + )), + 'HTTP_X_WAP_PROFILE' => null, + 'HTTP_X_WAP_CLIENTID' => null, + 'HTTP_WAP_CONNECTION' => null, + 'HTTP_PROFILE' => null, + // Reported by Opera on Nokia devices (eg. C3). + 'HTTP_X_OPERAMINI_PHONE_UA' => null, + 'HTTP_X_NOKIA_GATEWAY_ID' => null, + 'HTTP_X_ORANGE_ID' => null, + 'HTTP_X_VODAFONE_3GPDPCONTEXT' => null, + 'HTTP_X_HUAWEI_USERID' => null, + // Reported by Windows Smartphones. + 'HTTP_UA_OS' => null, + // Reported by Verizon, Vodafone proxy system. + 'HTTP_X_MOBILE_GATEWAY' => null, + // Seen this on HTC Sensation. SensationXE_Beats_Z715e. + 'HTTP_X_ATT_DEVICEID' => null, + // Seen this on a HTC. + 'HTTP_UA_CPU' => array('matches' => array('ARM')), + ); + + /** + * List of mobile devices (phones). + * + * @var array + */ + protected static $phoneDevices = array( + 'iPhone' => '\biPhone\b|\biPod\b', // |\biTunes + 'BlackBerry' => 'BlackBerry|\bBB10\b|rim[0-9]+|\b(BBA100|BBB100|BBD100|BBE100|BBF100|STH100)\b-[0-9]+', + 'HTC' => 'HTC|HTC.*(Sensation|Evo|Vision|Explorer|6800|8100|8900|A7272|S510e|C110e|Legend|Desire|T8282)|APX515CKT|Qtek9090|APA9292KT|HD_mini|Sensation.*Z710e|PG86100|Z715e|Desire.*(A8181|HD)|ADR6200|ADR6400L|ADR6425|001HT|Inspire 4G|Android.*\bEVO\b|T-Mobile G1|Z520m|Android [0-9.]+; Pixel', + 'Nexus' => 'Nexus One|Nexus S|Galaxy.*Nexus|Android.*Nexus.*Mobile|Nexus 4|Nexus 5|Nexus 6', + // @todo: Is 'Dell Streak' a tablet or a phone? ;) + 'Dell' => 'Dell[;]? (Streak|Aero|Venue|Venue Pro|Flash|Smoke|Mini 3iX)|XCD28|XCD35|\b001DL\b|\b101DL\b|\bGS01\b', + 'Motorola' => 'Motorola|DROIDX|DROID BIONIC|\bDroid\b.*Build|Android.*Xoom|HRI39|MOT-|A1260|A1680|A555|A853|A855|A953|A955|A956|Motorola.*ELECTRIFY|Motorola.*i1|i867|i940|MB200|MB300|MB501|MB502|MB508|MB511|MB520|MB525|MB526|MB611|MB612|MB632|MB810|MB855|MB860|MB861|MB865|MB870|ME501|ME502|ME511|ME525|ME600|ME632|ME722|ME811|ME860|ME863|ME865|MT620|MT710|MT716|MT720|MT810|MT870|MT917|Motorola.*TITANIUM|WX435|WX445|XT300|XT301|XT311|XT316|XT317|XT319|XT320|XT390|XT502|XT530|XT531|XT532|XT535|XT603|XT610|XT611|XT615|XT681|XT701|XT702|XT711|XT720|XT800|XT806|XT860|XT862|XT875|XT882|XT883|XT894|XT901|XT907|XT909|XT910|XT912|XT928|XT926|XT915|XT919|XT925|XT1021|\bMoto E\b|XT1068|XT1092|XT1052', + 'Samsung' => '\bSamsung\b|SM-G950F|SM-G955F|SM-G9250|GT-19300|SGH-I337|BGT-S5230|GT-B2100|GT-B2700|GT-B2710|GT-B3210|GT-B3310|GT-B3410|GT-B3730|GT-B3740|GT-B5510|GT-B5512|GT-B5722|GT-B6520|GT-B7300|GT-B7320|GT-B7330|GT-B7350|GT-B7510|GT-B7722|GT-B7800|GT-C3010|GT-C3011|GT-C3060|GT-C3200|GT-C3212|GT-C3212I|GT-C3262|GT-C3222|GT-C3300|GT-C3300K|GT-C3303|GT-C3303K|GT-C3310|GT-C3322|GT-C3330|GT-C3350|GT-C3500|GT-C3510|GT-C3530|GT-C3630|GT-C3780|GT-C5010|GT-C5212|GT-C6620|GT-C6625|GT-C6712|GT-E1050|GT-E1070|GT-E1075|GT-E1080|GT-E1081|GT-E1085|GT-E1087|GT-E1100|GT-E1107|GT-E1110|GT-E1120|GT-E1125|GT-E1130|GT-E1160|GT-E1170|GT-E1175|GT-E1180|GT-E1182|GT-E1200|GT-E1210|GT-E1225|GT-E1230|GT-E1390|GT-E2100|GT-E2120|GT-E2121|GT-E2152|GT-E2220|GT-E2222|GT-E2230|GT-E2232|GT-E2250|GT-E2370|GT-E2550|GT-E2652|GT-E3210|GT-E3213|GT-I5500|GT-I5503|GT-I5700|GT-I5800|GT-I5801|GT-I6410|GT-I6420|GT-I7110|GT-I7410|GT-I7500|GT-I8000|GT-I8150|GT-I8160|GT-I8190|GT-I8320|GT-I8330|GT-I8350|GT-I8530|GT-I8700|GT-I8703|GT-I8910|GT-I9000|GT-I9001|GT-I9003|GT-I9010|GT-I9020|GT-I9023|GT-I9070|GT-I9082|GT-I9100|GT-I9103|GT-I9220|GT-I9250|GT-I9300|GT-I9305|GT-I9500|GT-I9505|GT-M3510|GT-M5650|GT-M7500|GT-M7600|GT-M7603|GT-M8800|GT-M8910|GT-N7000|GT-S3110|GT-S3310|GT-S3350|GT-S3353|GT-S3370|GT-S3650|GT-S3653|GT-S3770|GT-S3850|GT-S5210|GT-S5220|GT-S5229|GT-S5230|GT-S5233|GT-S5250|GT-S5253|GT-S5260|GT-S5263|GT-S5270|GT-S5300|GT-S5330|GT-S5350|GT-S5360|GT-S5363|GT-S5369|GT-S5380|GT-S5380D|GT-S5560|GT-S5570|GT-S5600|GT-S5603|GT-S5610|GT-S5620|GT-S5660|GT-S5670|GT-S5690|GT-S5750|GT-S5780|GT-S5830|GT-S5839|GT-S6102|GT-S6500|GT-S7070|GT-S7200|GT-S7220|GT-S7230|GT-S7233|GT-S7250|GT-S7500|GT-S7530|GT-S7550|GT-S7562|GT-S7710|GT-S8000|GT-S8003|GT-S8500|GT-S8530|GT-S8600|SCH-A310|SCH-A530|SCH-A570|SCH-A610|SCH-A630|SCH-A650|SCH-A790|SCH-A795|SCH-A850|SCH-A870|SCH-A890|SCH-A930|SCH-A950|SCH-A970|SCH-A990|SCH-I100|SCH-I110|SCH-I400|SCH-I405|SCH-I500|SCH-I510|SCH-I515|SCH-I600|SCH-I730|SCH-I760|SCH-I770|SCH-I830|SCH-I910|SCH-I920|SCH-I959|SCH-LC11|SCH-N150|SCH-N300|SCH-R100|SCH-R300|SCH-R351|SCH-R400|SCH-R410|SCH-T300|SCH-U310|SCH-U320|SCH-U350|SCH-U360|SCH-U365|SCH-U370|SCH-U380|SCH-U410|SCH-U430|SCH-U450|SCH-U460|SCH-U470|SCH-U490|SCH-U540|SCH-U550|SCH-U620|SCH-U640|SCH-U650|SCH-U660|SCH-U700|SCH-U740|SCH-U750|SCH-U810|SCH-U820|SCH-U900|SCH-U940|SCH-U960|SCS-26UC|SGH-A107|SGH-A117|SGH-A127|SGH-A137|SGH-A157|SGH-A167|SGH-A177|SGH-A187|SGH-A197|SGH-A227|SGH-A237|SGH-A257|SGH-A437|SGH-A517|SGH-A597|SGH-A637|SGH-A657|SGH-A667|SGH-A687|SGH-A697|SGH-A707|SGH-A717|SGH-A727|SGH-A737|SGH-A747|SGH-A767|SGH-A777|SGH-A797|SGH-A817|SGH-A827|SGH-A837|SGH-A847|SGH-A867|SGH-A877|SGH-A887|SGH-A897|SGH-A927|SGH-B100|SGH-B130|SGH-B200|SGH-B220|SGH-C100|SGH-C110|SGH-C120|SGH-C130|SGH-C140|SGH-C160|SGH-C170|SGH-C180|SGH-C200|SGH-C207|SGH-C210|SGH-C225|SGH-C230|SGH-C417|SGH-C450|SGH-D307|SGH-D347|SGH-D357|SGH-D407|SGH-D415|SGH-D780|SGH-D807|SGH-D980|SGH-E105|SGH-E200|SGH-E315|SGH-E316|SGH-E317|SGH-E335|SGH-E590|SGH-E635|SGH-E715|SGH-E890|SGH-F300|SGH-F480|SGH-I200|SGH-I300|SGH-I320|SGH-I550|SGH-I577|SGH-I600|SGH-I607|SGH-I617|SGH-I627|SGH-I637|SGH-I677|SGH-I700|SGH-I717|SGH-I727|SGH-i747M|SGH-I777|SGH-I780|SGH-I827|SGH-I847|SGH-I857|SGH-I896|SGH-I897|SGH-I900|SGH-I907|SGH-I917|SGH-I927|SGH-I937|SGH-I997|SGH-J150|SGH-J200|SGH-L170|SGH-L700|SGH-M110|SGH-M150|SGH-M200|SGH-N105|SGH-N500|SGH-N600|SGH-N620|SGH-N625|SGH-N700|SGH-N710|SGH-P107|SGH-P207|SGH-P300|SGH-P310|SGH-P520|SGH-P735|SGH-P777|SGH-Q105|SGH-R210|SGH-R220|SGH-R225|SGH-S105|SGH-S307|SGH-T109|SGH-T119|SGH-T139|SGH-T209|SGH-T219|SGH-T229|SGH-T239|SGH-T249|SGH-T259|SGH-T309|SGH-T319|SGH-T329|SGH-T339|SGH-T349|SGH-T359|SGH-T369|SGH-T379|SGH-T409|SGH-T429|SGH-T439|SGH-T459|SGH-T469|SGH-T479|SGH-T499|SGH-T509|SGH-T519|SGH-T539|SGH-T559|SGH-T589|SGH-T609|SGH-T619|SGH-T629|SGH-T639|SGH-T659|SGH-T669|SGH-T679|SGH-T709|SGH-T719|SGH-T729|SGH-T739|SGH-T746|SGH-T749|SGH-T759|SGH-T769|SGH-T809|SGH-T819|SGH-T839|SGH-T919|SGH-T929|SGH-T939|SGH-T959|SGH-T989|SGH-U100|SGH-U200|SGH-U800|SGH-V205|SGH-V206|SGH-X100|SGH-X105|SGH-X120|SGH-X140|SGH-X426|SGH-X427|SGH-X475|SGH-X495|SGH-X497|SGH-X507|SGH-X600|SGH-X610|SGH-X620|SGH-X630|SGH-X700|SGH-X820|SGH-X890|SGH-Z130|SGH-Z150|SGH-Z170|SGH-ZX10|SGH-ZX20|SHW-M110|SPH-A120|SPH-A400|SPH-A420|SPH-A460|SPH-A500|SPH-A560|SPH-A600|SPH-A620|SPH-A660|SPH-A700|SPH-A740|SPH-A760|SPH-A790|SPH-A800|SPH-A820|SPH-A840|SPH-A880|SPH-A900|SPH-A940|SPH-A960|SPH-D600|SPH-D700|SPH-D710|SPH-D720|SPH-I300|SPH-I325|SPH-I330|SPH-I350|SPH-I500|SPH-I600|SPH-I700|SPH-L700|SPH-M100|SPH-M220|SPH-M240|SPH-M300|SPH-M305|SPH-M320|SPH-M330|SPH-M350|SPH-M360|SPH-M370|SPH-M380|SPH-M510|SPH-M540|SPH-M550|SPH-M560|SPH-M570|SPH-M580|SPH-M610|SPH-M620|SPH-M630|SPH-M800|SPH-M810|SPH-M850|SPH-M900|SPH-M910|SPH-M920|SPH-M930|SPH-N100|SPH-N200|SPH-N240|SPH-N300|SPH-N400|SPH-Z400|SWC-E100|SCH-i909|GT-N7100|GT-N7105|SCH-I535|SM-N900A|SGH-I317|SGH-T999L|GT-S5360B|GT-I8262|GT-S6802|GT-S6312|GT-S6310|GT-S5312|GT-S5310|GT-I9105|GT-I8510|GT-S6790N|SM-G7105|SM-N9005|GT-S5301|GT-I9295|GT-I9195|SM-C101|GT-S7392|GT-S7560|GT-B7610|GT-I5510|GT-S7582|GT-S7530E|GT-I8750|SM-G9006V|SM-G9008V|SM-G9009D|SM-G900A|SM-G900D|SM-G900F|SM-G900H|SM-G900I|SM-G900J|SM-G900K|SM-G900L|SM-G900M|SM-G900P|SM-G900R4|SM-G900S|SM-G900T|SM-G900V|SM-G900W8|SHV-E160K|SCH-P709|SCH-P729|SM-T2558|GT-I9205|SM-G9350|SM-J120F|SM-G920F|SM-G920V|SM-G930F|SM-N910C|SM-A310F|GT-I9190|SM-J500FN|SM-G903F|SM-J330F', + 'LG' => '\bLG\b;|LG[- ]?(C800|C900|E400|E610|E900|E-900|F160|F180K|F180L|F180S|730|855|L160|LS740|LS840|LS970|LU6200|MS690|MS695|MS770|MS840|MS870|MS910|P500|P700|P705|VM696|AS680|AS695|AX840|C729|E970|GS505|272|C395|E739BK|E960|L55C|L75C|LS696|LS860|P769BK|P350|P500|P509|P870|UN272|US730|VS840|VS950|LN272|LN510|LS670|LS855|LW690|MN270|MN510|P509|P769|P930|UN200|UN270|UN510|UN610|US670|US740|US760|UX265|UX840|VN271|VN530|VS660|VS700|VS740|VS750|VS910|VS920|VS930|VX9200|VX11000|AX840A|LW770|P506|P925|P999|E612|D955|D802|MS323|M257)|LM-G710', + 'Sony' => 'SonyST|SonyLT|SonyEricsson|SonyEricssonLT15iv|LT18i|E10i|LT28h|LT26w|SonyEricssonMT27i|C5303|C6902|C6903|C6906|C6943|D2533', + 'Asus' => 'Asus.*Galaxy|PadFone.*Mobile', + 'NokiaLumia' => 'Lumia [0-9]{3,4}', + // http://www.micromaxinfo.com/mobiles/smartphones + // Added because the codes might conflict with Acer Tablets. + 'Micromax' => 'Micromax.*\b(A210|A92|A88|A72|A111|A110Q|A115|A116|A110|A90S|A26|A51|A35|A54|A25|A27|A89|A68|A65|A57|A90)\b', + // @todo Complete the regex. + 'Palm' => 'PalmSource|Palm', // avantgo|blazer|elaine|hiptop|plucker|xiino ; + 'Vertu' => 'Vertu|Vertu.*Ltd|Vertu.*Ascent|Vertu.*Ayxta|Vertu.*Constellation(F|Quest)?|Vertu.*Monika|Vertu.*Signature', // Just for fun ;) + // http://www.pantech.co.kr/en/prod/prodList.do?gbrand=VEGA (PANTECH) + // Most of the VEGA devices are legacy. PANTECH seem to be newer devices based on Android. + 'Pantech' => 'PANTECH|IM-A850S|IM-A840S|IM-A830L|IM-A830K|IM-A830S|IM-A820L|IM-A810K|IM-A810S|IM-A800S|IM-T100K|IM-A725L|IM-A780L|IM-A775C|IM-A770K|IM-A760S|IM-A750K|IM-A740S|IM-A730S|IM-A720L|IM-A710K|IM-A690L|IM-A690S|IM-A650S|IM-A630K|IM-A600S|VEGA PTL21|PT003|P8010|ADR910L|P6030|P6020|P9070|P4100|P9060|P5000|CDM8992|TXT8045|ADR8995|IS11PT|P2030|P6010|P8000|PT002|IS06|CDM8999|P9050|PT001|TXT8040|P2020|P9020|P2000|P7040|P7000|C790', + // http://www.fly-phone.com/devices/smartphones/ ; Included only smartphones. + 'Fly' => 'IQ230|IQ444|IQ450|IQ440|IQ442|IQ441|IQ245|IQ256|IQ236|IQ255|IQ235|IQ245|IQ275|IQ240|IQ285|IQ280|IQ270|IQ260|IQ250', + // http://fr.wikomobile.com + 'Wiko' => 'KITE 4G|HIGHWAY|GETAWAY|STAIRWAY|DARKSIDE|DARKFULL|DARKNIGHT|DARKMOON|SLIDE|WAX 4G|RAINBOW|BLOOM|SUNSET|GOA(?!nna)|LENNY|BARRY|IGGY|OZZY|CINK FIVE|CINK PEAX|CINK PEAX 2|CINK SLIM|CINK SLIM 2|CINK +|CINK KING|CINK PEAX|CINK SLIM|SUBLIM', + 'iMobile' => 'i-mobile (IQ|i-STYLE|idea|ZAA|Hitz)', + // Added simvalley mobile just for fun. They have some interesting devices. + // http://www.simvalley.fr/telephonie---gps-_22_telephonie-mobile_telephones_.html + 'SimValley' => '\b(SP-80|XT-930|SX-340|XT-930|SX-310|SP-360|SP60|SPT-800|SP-120|SPT-800|SP-140|SPX-5|SPX-8|SP-100|SPX-8|SPX-12)\b', + // Wolfgang - a brand that is sold by Aldi supermarkets. + // http://www.wolfgangmobile.com/ + 'Wolfgang' => 'AT-B24D|AT-AS50HD|AT-AS40W|AT-AS55HD|AT-AS45q2|AT-B26D|AT-AS50Q', + 'Alcatel' => 'Alcatel', + 'Nintendo' => 'Nintendo (3DS|Switch)', + // http://en.wikipedia.org/wiki/Amoi + 'Amoi' => 'Amoi', + // http://en.wikipedia.org/wiki/INQ + 'INQ' => 'INQ', + 'OnePlus' => 'ONEPLUS', + // @Tapatalk is a mobile app; http://support.tapatalk.com/threads/smf-2-0-2-os-and-browser-detection-plugin-and-tapatalk.15565/#post-79039 + 'GenericPhone' => 'Tapatalk|PDA;|SAGEM|\bmmp\b|pocket|\bpsp\b|symbian|Smartphone|smartfon|treo|up.browser|up.link|vodafone|\bwap\b|nokia|Series40|Series60|S60|SonyEricsson|N900|MAUI.*WAP.*Browser', + ); + + /** + * List of tablet devices. + * + * @var array + */ + protected static $tabletDevices = array( + // @todo: check for mobile friendly emails topic. + 'iPad' => 'iPad|iPad.*Mobile', + // Removed |^.*Android.*Nexus(?!(?:Mobile).)*$ + // @see #442 + // @todo Merge NexusTablet into GoogleTablet. + 'NexusTablet' => 'Android.*Nexus[\s]+(7|9|10)', + // https://en.wikipedia.org/wiki/Pixel_C + 'GoogleTablet' => 'Android.*Pixel C', + 'SamsungTablet' => 'SAMSUNG.*Tablet|Galaxy.*Tab|SC-01C|GT-P1000|GT-P1003|GT-P1010|GT-P3105|GT-P6210|GT-P6800|GT-P6810|GT-P7100|GT-P7300|GT-P7310|GT-P7500|GT-P7510|SCH-I800|SCH-I815|SCH-I905|SGH-I957|SGH-I987|SGH-T849|SGH-T859|SGH-T869|SPH-P100|GT-P3100|GT-P3108|GT-P3110|GT-P5100|GT-P5110|GT-P6200|GT-P7320|GT-P7511|GT-N8000|GT-P8510|SGH-I497|SPH-P500|SGH-T779|SCH-I705|SCH-I915|GT-N8013|GT-P3113|GT-P5113|GT-P8110|GT-N8010|GT-N8005|GT-N8020|GT-P1013|GT-P6201|GT-P7501|GT-N5100|GT-N5105|GT-N5110|SHV-E140K|SHV-E140L|SHV-E140S|SHV-E150S|SHV-E230K|SHV-E230L|SHV-E230S|SHW-M180K|SHW-M180L|SHW-M180S|SHW-M180W|SHW-M300W|SHW-M305W|SHW-M380K|SHW-M380S|SHW-M380W|SHW-M430W|SHW-M480K|SHW-M480S|SHW-M480W|SHW-M485W|SHW-M486W|SHW-M500W|GT-I9228|SCH-P739|SCH-I925|GT-I9200|GT-P5200|GT-P5210|GT-P5210X|SM-T311|SM-T310|SM-T310X|SM-T210|SM-T210R|SM-T211|SM-P600|SM-P601|SM-P605|SM-P900|SM-P901|SM-T217|SM-T217A|SM-T217S|SM-P6000|SM-T3100|SGH-I467|XE500|SM-T110|GT-P5220|GT-I9200X|GT-N5110X|GT-N5120|SM-P905|SM-T111|SM-T2105|SM-T315|SM-T320|SM-T320X|SM-T321|SM-T520|SM-T525|SM-T530NU|SM-T230NU|SM-T330NU|SM-T900|XE500T1C|SM-P605V|SM-P905V|SM-T337V|SM-T537V|SM-T707V|SM-T807V|SM-P600X|SM-P900X|SM-T210X|SM-T230|SM-T230X|SM-T325|GT-P7503|SM-T531|SM-T330|SM-T530|SM-T705|SM-T705C|SM-T535|SM-T331|SM-T800|SM-T700|SM-T537|SM-T807|SM-P907A|SM-T337A|SM-T537A|SM-T707A|SM-T807A|SM-T237|SM-T807P|SM-P607T|SM-T217T|SM-T337T|SM-T807T|SM-T116NQ|SM-T116BU|SM-P550|SM-T350|SM-T550|SM-T9000|SM-P9000|SM-T705Y|SM-T805|GT-P3113|SM-T710|SM-T810|SM-T815|SM-T360|SM-T533|SM-T113|SM-T335|SM-T715|SM-T560|SM-T670|SM-T677|SM-T377|SM-T567|SM-T357T|SM-T555|SM-T561|SM-T713|SM-T719|SM-T813|SM-T819|SM-T580|SM-T355Y?|SM-T280|SM-T817A|SM-T820|SM-W700|SM-P580|SM-T587|SM-P350|SM-P555M|SM-P355M|SM-T113NU|SM-T815Y|SM-T585|SM-T285|SM-T825|SM-W708|SM-T835|SM-T830|SM-T837V|SM-T720|SM-T510|SM-T387V', // SCH-P709|SCH-P729|SM-T2558|GT-I9205 - Samsung Mega - treat them like a regular phone. + // http://docs.aws.amazon.com/silk/latest/developerguide/user-agent.html + 'Kindle' => 'Kindle|Silk.*Accelerated|Android.*\b(KFOT|KFTT|KFJWI|KFJWA|KFOTE|KFSOWI|KFTHWI|KFTHWA|KFAPWI|KFAPWA|WFJWAE|KFSAWA|KFSAWI|KFASWI|KFARWI|KFFOWI|KFGIWI|KFMEWI)\b|Android.*Silk/[0-9.]+ like Chrome/[0-9.]+ (?!Mobile)', + // Only the Surface tablets with Windows RT are considered mobile. + // http://msdn.microsoft.com/en-us/library/ie/hh920767(v=vs.85).aspx + 'SurfaceTablet' => 'Windows NT [0-9.]+; ARM;.*(Tablet|ARMBJS)', + // http://shopping1.hp.com/is-bin/INTERSHOP.enfinity/WFS/WW-USSMBPublicStore-Site/en_US/-/USD/ViewStandardCatalog-Browse?CatalogCategoryID=JfIQ7EN5lqMAAAEyDcJUDwMT + 'HPTablet' => 'HP Slate (7|8|10)|HP ElitePad 900|hp-tablet|EliteBook.*Touch|HP 8|Slate 21|HP SlateBook 10', + // Watch out for PadFone, see #132. + // http://www.asus.com/de/Tablets_Mobile/Memo_Pad_Products/ + 'AsusTablet' => '^.*PadFone((?!Mobile).)*$|Transformer|TF101|TF101G|TF300T|TF300TG|TF300TL|TF700T|TF700KL|TF701T|TF810C|ME171|ME301T|ME302C|ME371MG|ME370T|ME372MG|ME172V|ME173X|ME400C|Slider SL101|\bK00F\b|\bK00C\b|\bK00E\b|\bK00L\b|TX201LA|ME176C|ME102A|\bM80TA\b|ME372CL|ME560CG|ME372CG|ME302KL| K010 | K011 | K017 | K01E |ME572C|ME103K|ME170C|ME171C|\bME70C\b|ME581C|ME581CL|ME8510C|ME181C|P01Y|PO1MA|P01Z|\bP027\b|\bP024\b|\bP00C\b', + 'BlackBerryTablet' => 'PlayBook|RIM Tablet', + 'HTCtablet' => 'HTC_Flyer_P512|HTC Flyer|HTC Jetstream|HTC-P715a|HTC EVO View 4G|PG41200|PG09410', + 'MotorolaTablet' => 'xoom|sholest|MZ615|MZ605|MZ505|MZ601|MZ602|MZ603|MZ604|MZ606|MZ607|MZ608|MZ609|MZ615|MZ616|MZ617', + 'NookTablet' => 'Android.*Nook|NookColor|nook browser|BNRV200|BNRV200A|BNTV250|BNTV250A|BNTV400|BNTV600|LogicPD Zoom2', + // http://www.acer.ro/ac/ro/RO/content/drivers + // http://www.packardbell.co.uk/pb/en/GB/content/download (Packard Bell is part of Acer) + // http://us.acer.com/ac/en/US/content/group/tablets + // http://www.acer.de/ac/de/DE/content/models/tablets/ + // Can conflict with Micromax and Motorola phones codes. + 'AcerTablet' => 'Android.*; \b(A100|A101|A110|A200|A210|A211|A500|A501|A510|A511|A700|A701|W500|W500P|W501|W501P|W510|W511|W700|G100|G100W|B1-A71|B1-710|B1-711|A1-810|A1-811|A1-830)\b|W3-810|\bA3-A10\b|\bA3-A11\b|\bA3-A20\b|\bA3-A30', + // http://eu.computers.toshiba-europe.com/innovation/family/Tablets/1098744/banner_id/tablet_footerlink/ + // http://us.toshiba.com/tablets/tablet-finder + // http://www.toshiba.co.jp/regza/tablet/ + 'ToshibaTablet' => 'Android.*(AT100|AT105|AT200|AT205|AT270|AT275|AT300|AT305|AT1S5|AT500|AT570|AT700|AT830)|TOSHIBA.*FOLIO', + // http://www.nttdocomo.co.jp/english/service/developer/smart_phone/technical_info/spec/index.html + // http://www.lg.com/us/tablets + 'LGTablet' => '\bL-06C|LG-V909|LG-V900|LG-V700|LG-V510|LG-V500|LG-V410|LG-V400|LG-VK810\b', + 'FujitsuTablet' => 'Android.*\b(F-01D|F-02F|F-05E|F-10D|M532|Q572)\b', + // Prestigio Tablets http://www.prestigio.com/support + 'PrestigioTablet' => 'PMP3170B|PMP3270B|PMP3470B|PMP7170B|PMP3370B|PMP3570C|PMP5870C|PMP3670B|PMP5570C|PMP5770D|PMP3970B|PMP3870C|PMP5580C|PMP5880D|PMP5780D|PMP5588C|PMP7280C|PMP7280C3G|PMP7280|PMP7880D|PMP5597D|PMP5597|PMP7100D|PER3464|PER3274|PER3574|PER3884|PER5274|PER5474|PMP5097CPRO|PMP5097|PMP7380D|PMP5297C|PMP5297C_QUAD|PMP812E|PMP812E3G|PMP812F|PMP810E|PMP880TD|PMT3017|PMT3037|PMT3047|PMT3057|PMT7008|PMT5887|PMT5001|PMT5002', + // http://support.lenovo.com/en_GB/downloads/default.page?# + 'LenovoTablet' => 'Lenovo TAB|Idea(Tab|Pad)( A1|A10| K1|)|ThinkPad([ ]+)?Tablet|YT3-850M|YT3-X90L|YT3-X90F|YT3-X90X|Lenovo.*(S2109|S2110|S5000|S6000|K3011|A3000|A3500|A1000|A2107|A2109|A1107|A5500|A7600|B6000|B8000|B8080)(-|)(FL|F|HV|H|)|TB-X103F|TB-X304X|TB-X304F|TB-X304L|TB-X505F|TB-X505L|TB-X505X|TB-X605F|TB-X605L|TB-8703F|TB-8703X|TB-8703N|TB-8704N|TB-8704F|TB-8704X|TB-8704V|TB-7304F|TB-7304I|TB-7304X|Tab2A7-10F|Tab2A7-20F|TB2-X30L|YT3-X50L|YT3-X50F|YT3-X50M|YT-X705F|YT-X703F|YT-X703L|YT-X705L|YT-X705X|TB2-X30F|TB2-X30L|TB2-X30M|A2107A-F|A2107A-H|TB3-730F|TB3-730M|TB3-730X|TB-7504F|TB-7504X', + // http://www.dell.com/support/home/us/en/04/Products/tab_mob/tablets + 'DellTablet' => 'Venue 11|Venue 8|Venue 7|Dell Streak 10|Dell Streak 7', + // http://www.yarvik.com/en/matrix/tablets/ + 'YarvikTablet' => 'Android.*\b(TAB210|TAB211|TAB224|TAB250|TAB260|TAB264|TAB310|TAB360|TAB364|TAB410|TAB411|TAB420|TAB424|TAB450|TAB460|TAB461|TAB464|TAB465|TAB467|TAB468|TAB07-100|TAB07-101|TAB07-150|TAB07-151|TAB07-152|TAB07-200|TAB07-201-3G|TAB07-210|TAB07-211|TAB07-212|TAB07-214|TAB07-220|TAB07-400|TAB07-485|TAB08-150|TAB08-200|TAB08-201-3G|TAB08-201-30|TAB09-100|TAB09-211|TAB09-410|TAB10-150|TAB10-201|TAB10-211|TAB10-400|TAB10-410|TAB13-201|TAB274EUK|TAB275EUK|TAB374EUK|TAB462EUK|TAB474EUK|TAB9-200)\b', + 'MedionTablet' => 'Android.*\bOYO\b|LIFE.*(P9212|P9514|P9516|S9512)|LIFETAB', + 'ArnovaTablet' => '97G4|AN10G2|AN7bG3|AN7fG3|AN8G3|AN8cG3|AN7G3|AN9G3|AN7dG3|AN7dG3ST|AN7dG3ChildPad|AN10bG3|AN10bG3DT|AN9G2', + // http://www.intenso.de/kategorie_en.php?kategorie=33 + // @todo: http://www.nbhkdz.com/read/b8e64202f92a2df129126bff.html - investigate + 'IntensoTablet' => 'INM8002KP|INM1010FP|INM805ND|Intenso Tab|TAB1004', + // IRU.ru Tablets http://www.iru.ru/catalog/soho/planetable/ + 'IRUTablet' => 'M702pro', + 'MegafonTablet' => 'MegaFon V9|\bZTE V9\b|Android.*\bMT7A\b', + // http://www.e-boda.ro/tablete-pc.html + 'EbodaTablet' => 'E-Boda (Supreme|Impresspeed|Izzycomm|Essential)', + // http://www.allview.ro/produse/droseries/lista-tablete-pc/ + 'AllViewTablet' => 'Allview.*(Viva|Alldro|City|Speed|All TV|Frenzy|Quasar|Shine|TX1|AX1|AX2)', + // http://wiki.archosfans.com/index.php?title=Main_Page + // @note Rewrite the regex format after we add more UAs. + 'ArchosTablet' => '\b(101G9|80G9|A101IT)\b|Qilive 97R|Archos5|\bARCHOS (70|79|80|90|97|101|FAMILYPAD|)(b|c|)(G10| Cobalt| TITANIUM(HD|)| Xenon| Neon|XSK| 2| XS 2| PLATINUM| CARBON|GAMEPAD)\b', + // http://www.ainol.com/plugin.php?identifier=ainol&module=product + 'AinolTablet' => 'NOVO7|NOVO8|NOVO10|Novo7Aurora|Novo7Basic|NOVO7PALADIN|novo9-Spark', + 'NokiaLumiaTablet' => 'Lumia 2520', + // @todo: inspect http://esupport.sony.com/US/p/select-system.pl?DIRECTOR=DRIVER + // Readers http://www.atsuhiro-me.net/ebook/sony-reader/sony-reader-web-browser + // http://www.sony.jp/support/tablet/ + 'SonyTablet' => 'Sony.*Tablet|Xperia Tablet|Sony Tablet S|SO-03E|SGPT12|SGPT13|SGPT114|SGPT121|SGPT122|SGPT123|SGPT111|SGPT112|SGPT113|SGPT131|SGPT132|SGPT133|SGPT211|SGPT212|SGPT213|SGP311|SGP312|SGP321|EBRD1101|EBRD1102|EBRD1201|SGP351|SGP341|SGP511|SGP512|SGP521|SGP541|SGP551|SGP621|SGP641|SGP612|SOT31|SGP771|SGP611|SGP612|SGP712', + // http://www.support.philips.com/support/catalog/worldproducts.jsp?userLanguage=en&userCountry=cn&categoryid=3G_LTE_TABLET_SU_CN_CARE&title=3G%20tablets%20/%20LTE%20range&_dyncharset=UTF-8 + 'PhilipsTablet' => '\b(PI2010|PI3000|PI3100|PI3105|PI3110|PI3205|PI3210|PI3900|PI4010|PI7000|PI7100)\b', + // db + http://www.cube-tablet.com/buy-products.html + 'CubeTablet' => 'Android.*(K8GT|U9GT|U10GT|U16GT|U17GT|U18GT|U19GT|U20GT|U23GT|U30GT)|CUBE U8GT', + // http://www.cobyusa.com/?p=pcat&pcat_id=3001 + 'CobyTablet' => 'MID1042|MID1045|MID1125|MID1126|MID7012|MID7014|MID7015|MID7034|MID7035|MID7036|MID7042|MID7048|MID7127|MID8042|MID8048|MID8127|MID9042|MID9740|MID9742|MID7022|MID7010', + // http://www.match.net.cn/products.asp + 'MIDTablet' => 'M9701|M9000|M9100|M806|M1052|M806|T703|MID701|MID713|MID710|MID727|MID760|MID830|MID728|MID933|MID125|MID810|MID732|MID120|MID930|MID800|MID731|MID900|MID100|MID820|MID735|MID980|MID130|MID833|MID737|MID960|MID135|MID860|MID736|MID140|MID930|MID835|MID733|MID4X10', + // http://www.msi.com/support + // @todo Research the Windows Tablets. + 'MSITablet' => 'MSI \b(Primo 73K|Primo 73L|Primo 81L|Primo 77|Primo 93|Primo 75|Primo 76|Primo 73|Primo 81|Primo 91|Primo 90|Enjoy 71|Enjoy 7|Enjoy 10)\b', + // @todo http://www.kyoceramobile.com/support/drivers/ + // 'KyoceraTablet' => null, + // @todo http://intexuae.com/index.php/category/mobile-devices/tablets-products/ + // 'IntextTablet' => null, + // http://pdadb.net/index.php?m=pdalist&list=SMiT (NoName Chinese Tablets) + // http://www.imp3.net/14/show.php?itemid=20454 + 'SMiTTablet' => 'Android.*(\bMID\b|MID-560|MTV-T1200|MTV-PND531|MTV-P1101|MTV-PND530)', + // http://www.rock-chips.com/index.php?do=prod&pid=2 + 'RockChipTablet' => 'Android.*(RK2818|RK2808A|RK2918|RK3066)|RK2738|RK2808A', + // http://www.fly-phone.com/devices/tablets/ ; http://www.fly-phone.com/service/ + 'FlyTablet' => 'IQ310|Fly Vision', + // http://www.bqreaders.com/gb/tablets-prices-sale.html + 'bqTablet' => 'Android.*(bq)?.*\b(Elcano|Curie|Edison|Maxwell|Kepler|Pascal|Tesla|Hypatia|Platon|Newton|Livingstone|Cervantes|Avant|Aquaris ([E|M]10|M8))\b|Maxwell.*Lite|Maxwell.*Plus', + // http://www.huaweidevice.com/worldwide/productFamily.do?method=index&directoryId=5011&treeId=3290 + // http://www.huaweidevice.com/worldwide/downloadCenter.do?method=index&directoryId=3372&treeId=0&tb=1&type=software (including legacy tablets) + 'HuaweiTablet' => 'MediaPad|MediaPad 7 Youth|IDEOS S7|S7-201c|S7-202u|S7-101|S7-103|S7-104|S7-105|S7-106|S7-201|S7-Slim|M2-A01L|BAH-L09|BAH-W09|AGS-L09|CMR-AL19', + // Nec or Medias Tab + 'NecTablet' => '\bN-06D|\bN-08D', + // Pantech Tablets: http://www.pantechusa.com/phones/ + 'PantechTablet' => 'Pantech.*P4100', + // Broncho Tablets: http://www.broncho.cn/ (hard to find) + 'BronchoTablet' => 'Broncho.*(N701|N708|N802|a710)', + // http://versusuk.com/support.html + 'VersusTablet' => 'TOUCHPAD.*[78910]|\bTOUCHTAB\b', + // http://www.zync.in/index.php/our-products/tablet-phablets + 'ZyncTablet' => 'z1000|Z99 2G|z930|z990|z909|Z919|z900', // Removed "z999" because of https://github.com/serbanghita/Mobile-Detect/issues/717 + // http://www.positivoinformatica.com.br/www/pessoal/tablet-ypy/ + 'PositivoTablet' => 'TB07STA|TB10STA|TB07FTA|TB10FTA', + // https://www.nabitablet.com/ + 'NabiTablet' => 'Android.*\bNabi', + 'KoboTablet' => 'Kobo Touch|\bK080\b|\bVox\b Build|\bArc\b Build', + // French Danew Tablets http://www.danew.com/produits-tablette.php + 'DanewTablet' => 'DSlide.*\b(700|701R|702|703R|704|802|970|971|972|973|974|1010|1012)\b', + // Texet Tablets and Readers http://www.texet.ru/tablet/ + 'TexetTablet' => 'NaviPad|TB-772A|TM-7045|TM-7055|TM-9750|TM-7016|TM-7024|TM-7026|TM-7041|TM-7043|TM-7047|TM-8041|TM-9741|TM-9747|TM-9748|TM-9751|TM-7022|TM-7021|TM-7020|TM-7011|TM-7010|TM-7023|TM-7025|TM-7037W|TM-7038W|TM-7027W|TM-9720|TM-9725|TM-9737W|TM-1020|TM-9738W|TM-9740|TM-9743W|TB-807A|TB-771A|TB-727A|TB-725A|TB-719A|TB-823A|TB-805A|TB-723A|TB-715A|TB-707A|TB-705A|TB-709A|TB-711A|TB-890HD|TB-880HD|TB-790HD|TB-780HD|TB-770HD|TB-721HD|TB-710HD|TB-434HD|TB-860HD|TB-840HD|TB-760HD|TB-750HD|TB-740HD|TB-730HD|TB-722HD|TB-720HD|TB-700HD|TB-500HD|TB-470HD|TB-431HD|TB-430HD|TB-506|TB-504|TB-446|TB-436|TB-416|TB-146SE|TB-126SE', + // Avoid detecting 'PLAYSTATION 3' as mobile. + 'PlaystationTablet' => 'Playstation.*(Portable|Vita)', + // http://www.trekstor.de/surftabs.html + 'TrekstorTablet' => 'ST10416-1|VT10416-1|ST70408-1|ST702xx-1|ST702xx-2|ST80208|ST97216|ST70104-2|VT10416-2|ST10216-2A|SurfTab', + // http://www.pyleaudio.com/Products.aspx?%2fproducts%2fPersonal-Electronics%2fTablets + 'PyleAudioTablet' => '\b(PTBL10CEU|PTBL10C|PTBL72BC|PTBL72BCEU|PTBL7CEU|PTBL7C|PTBL92BC|PTBL92BCEU|PTBL9CEU|PTBL9CUK|PTBL9C)\b', + // http://www.advandigital.com/index.php?link=content-product&jns=JP001 + // because of the short codenames we have to include whitespaces to reduce the possible conflicts. + 'AdvanTablet' => 'Android.* \b(E3A|T3X|T5C|T5B|T3E|T3C|T3B|T1J|T1F|T2A|T1H|T1i|E1C|T1-E|T5-A|T4|E1-B|T2Ci|T1-B|T1-D|O1-A|E1-A|T1-A|T3A|T4i)\b ', + // http://www.danytech.com/category/tablet-pc + 'DanyTechTablet' => 'Genius Tab G3|Genius Tab S2|Genius Tab Q3|Genius Tab G4|Genius Tab Q4|Genius Tab G-II|Genius TAB GII|Genius TAB GIII|Genius Tab S1', + // http://www.galapad.net/product.html + 'GalapadTablet' => 'Android.*\bG1\b(?!\))', + // http://www.micromaxinfo.com/tablet/funbook + 'MicromaxTablet' => 'Funbook|Micromax.*\b(P250|P560|P360|P362|P600|P300|P350|P500|P275)\b', + // http://www.karbonnmobiles.com/products_tablet.php + 'KarbonnTablet' => 'Android.*\b(A39|A37|A34|ST8|ST10|ST7|Smart Tab3|Smart Tab2)\b', + // http://www.myallfine.com/Products.asp + 'AllFineTablet' => 'Fine7 Genius|Fine7 Shine|Fine7 Air|Fine8 Style|Fine9 More|Fine10 Joy|Fine11 Wide', + // http://www.proscanvideo.com/products-search.asp?itemClass=TABLET&itemnmbr= + 'PROSCANTablet' => '\b(PEM63|PLT1023G|PLT1041|PLT1044|PLT1044G|PLT1091|PLT4311|PLT4311PL|PLT4315|PLT7030|PLT7033|PLT7033D|PLT7035|PLT7035D|PLT7044K|PLT7045K|PLT7045KB|PLT7071KG|PLT7072|PLT7223G|PLT7225G|PLT7777G|PLT7810K|PLT7849G|PLT7851G|PLT7852G|PLT8015|PLT8031|PLT8034|PLT8036|PLT8080K|PLT8082|PLT8088|PLT8223G|PLT8234G|PLT8235G|PLT8816K|PLT9011|PLT9045K|PLT9233G|PLT9735|PLT9760G|PLT9770G)\b', + // http://www.yonesnav.com/products/products.php + 'YONESTablet' => 'BQ1078|BC1003|BC1077|RK9702|BC9730|BC9001|IT9001|BC7008|BC7010|BC708|BC728|BC7012|BC7030|BC7027|BC7026', + // http://www.cjshowroom.com/eproducts.aspx?classcode=004001001 + // China manufacturer makes tablets for different small brands (eg. http://www.zeepad.net/index.html) + 'ChangJiaTablet' => 'TPC7102|TPC7103|TPC7105|TPC7106|TPC7107|TPC7201|TPC7203|TPC7205|TPC7210|TPC7708|TPC7709|TPC7712|TPC7110|TPC8101|TPC8103|TPC8105|TPC8106|TPC8203|TPC8205|TPC8503|TPC9106|TPC9701|TPC97101|TPC97103|TPC97105|TPC97106|TPC97111|TPC97113|TPC97203|TPC97603|TPC97809|TPC97205|TPC10101|TPC10103|TPC10106|TPC10111|TPC10203|TPC10205|TPC10503', + // http://www.gloryunion.cn/products.asp + // http://www.allwinnertech.com/en/apply/mobile.html + // http://www.ptcl.com.pk/pd_content.php?pd_id=284 (EVOTAB) + // @todo: Softwiner tablets? + // aka. Cute or Cool tablets. Not sure yet, must research to avoid collisions. + 'GUTablet' => 'TX-A1301|TX-M9002|Q702|kf026', // A12R|D75A|D77|D79|R83|A95|A106C|R15|A75|A76|D71|D72|R71|R73|R77|D82|R85|D92|A97|D92|R91|A10F|A77F|W71F|A78F|W78F|W81F|A97F|W91F|W97F|R16G|C72|C73E|K72|K73|R96G + // http://www.pointofview-online.com/showroom.php?shop_mode=product_listing&category_id=118 + 'PointOfViewTablet' => 'TAB-P506|TAB-navi-7-3G-M|TAB-P517|TAB-P-527|TAB-P701|TAB-P703|TAB-P721|TAB-P731N|TAB-P741|TAB-P825|TAB-P905|TAB-P925|TAB-PR945|TAB-PL1015|TAB-P1025|TAB-PI1045|TAB-P1325|TAB-PROTAB[0-9]+|TAB-PROTAB25|TAB-PROTAB26|TAB-PROTAB27|TAB-PROTAB26XL|TAB-PROTAB2-IPS9|TAB-PROTAB30-IPS9|TAB-PROTAB25XXL|TAB-PROTAB26-IPS10|TAB-PROTAB30-IPS10', + // http://www.overmax.pl/pl/katalog-produktow,p8/tablety,c14/ + // @todo: add more tests. + 'OvermaxTablet' => 'OV-(SteelCore|NewBase|Basecore|Baseone|Exellen|Quattor|EduTab|Solution|ACTION|BasicTab|TeddyTab|MagicTab|Stream|TB-08|TB-09)|Qualcore 1027', + // http://hclmetablet.com/India/index.php + 'HCLTablet' => 'HCL.*Tablet|Connect-3G-2.0|Connect-2G-2.0|ME Tablet U1|ME Tablet U2|ME Tablet G1|ME Tablet X1|ME Tablet Y2|ME Tablet Sync', + // http://www.edigital.hu/Tablet_es_e-book_olvaso/Tablet-c18385.html + 'DPSTablet' => 'DPS Dream 9|DPS Dual 7', + // http://www.visture.com/index.asp + 'VistureTablet' => 'V97 HD|i75 3G|Visture V4( HD)?|Visture V5( HD)?|Visture V10', + // http://www.mijncresta.nl/tablet + 'CrestaTablet' => 'CTP(-)?810|CTP(-)?818|CTP(-)?828|CTP(-)?838|CTP(-)?888|CTP(-)?978|CTP(-)?980|CTP(-)?987|CTP(-)?988|CTP(-)?989', + // MediaTek - http://www.mediatek.com/_en/01_products/02_proSys.php?cata_sn=1&cata1_sn=1&cata2_sn=309 + 'MediatekTablet' => '\bMT8125|MT8389|MT8135|MT8377\b', + // Concorde tab + 'ConcordeTablet' => 'Concorde([ ]+)?Tab|ConCorde ReadMan', + // GoClever Tablets - http://www.goclever.com/uk/products,c1/tablet,c5/ + 'GoCleverTablet' => 'GOCLEVER TAB|A7GOCLEVER|M1042|M7841|M742|R1042BK|R1041|TAB A975|TAB A7842|TAB A741|TAB A741L|TAB M723G|TAB M721|TAB A1021|TAB I921|TAB R721|TAB I720|TAB T76|TAB R70|TAB R76.2|TAB R106|TAB R83.2|TAB M813G|TAB I721|GCTA722|TAB I70|TAB I71|TAB S73|TAB R73|TAB R74|TAB R93|TAB R75|TAB R76.1|TAB A73|TAB A93|TAB A93.2|TAB T72|TAB R83|TAB R974|TAB R973|TAB A101|TAB A103|TAB A104|TAB A104.2|R105BK|M713G|A972BK|TAB A971|TAB R974.2|TAB R104|TAB R83.3|TAB A1042', + // Modecom Tablets - http://www.modecom.eu/tablets/portal/ + 'ModecomTablet' => 'FreeTAB 9000|FreeTAB 7.4|FreeTAB 7004|FreeTAB 7800|FreeTAB 2096|FreeTAB 7.5|FreeTAB 1014|FreeTAB 1001 |FreeTAB 8001|FreeTAB 9706|FreeTAB 9702|FreeTAB 7003|FreeTAB 7002|FreeTAB 1002|FreeTAB 7801|FreeTAB 1331|FreeTAB 1004|FreeTAB 8002|FreeTAB 8014|FreeTAB 9704|FreeTAB 1003', + // Vonino Tablets + 'VoninoTablet' => '\b(Argus[ _]?S|Diamond[ _]?79HD|Emerald[ _]?78E|Luna[ _]?70C|Onyx[ _]?S|Onyx[ _]?Z|Orin[ _]?HD|Orin[ _]?S|Otis[ _]?S|SpeedStar[ _]?S|Magnet[ _]?M9|Primus[ _]?94[ _]?3G|Primus[ _]?94HD|Primus[ _]?QS|Android.*\bQ8\b|Sirius[ _]?EVO[ _]?QS|Sirius[ _]?QS|Spirit[ _]?S)\b', + // ECS Tablets - http://www.ecs.com.tw/ECSWebSite/Product/Product_Tablet_List.aspx?CategoryID=14&MenuID=107&childid=M_107&LanID=0 + 'ECSTablet' => 'V07OT2|TM105A|S10OT1|TR10CS1', + // Storex Tablets - http://storex.fr/espace_client/support.html + // @note: no need to add all the tablet codes since they are guided by the first regex. + 'StorexTablet' => 'eZee[_\']?(Tab|Go)[0-9]+|TabLC7|Looney Tunes Tab', + // Generic Vodafone tablets. + 'VodafoneTablet' => 'SmartTab([ ]+)?[0-9]+|SmartTabII10|SmartTabII7|VF-1497|VFD 1400', + // French tablets - Essentiel B http://www.boulanger.fr/tablette_tactile_e-book/tablette_tactile_essentiel_b/cl_68908.htm?multiChoiceToDelete=brand&mc_brand=essentielb + // Aka: http://www.essentielb.fr/ + 'EssentielBTablet' => 'Smart[ \']?TAB[ ]+?[0-9]+|Family[ \']?TAB2', + // Ross & Moor - http://ross-moor.ru/ + 'RossMoorTablet' => 'RM-790|RM-997|RMD-878G|RMD-974R|RMT-705A|RMT-701|RME-601|RMT-501|RMT-711', + // i-mobile http://product.i-mobilephone.com/Mobile_Device + 'iMobileTablet' => 'i-mobile i-note', + // http://www.tolino.de/de/vergleichen/ + 'TolinoTablet' => 'tolino tab [0-9.]+|tolino shine', + // AudioSonic - a Kmart brand + // http://www.kmart.com.au/webapp/wcs/stores/servlet/Search?langId=-1&storeId=10701&catalogId=10001&categoryId=193001&pageSize=72¤tPage=1&searchCategory=193001%2b4294965664&sortBy=p_MaxPrice%7c1 + 'AudioSonicTablet' => '\bC-22Q|T7-QC|T-17B|T-17P\b', + // AMPE Tablets - http://www.ampe.com.my/product-category/tablets/ + // @todo: add them gradually to avoid conflicts. + 'AMPETablet' => 'Android.* A78 ', + // Skk Mobile - http://skkmobile.com.ph/product_tablets.php + 'SkkTablet' => 'Android.* (SKYPAD|PHOENIX|CYCLOPS)', + // Tecno Mobile (only tablet) - http://www.tecno-mobile.com/index.php/product?filterby=smart&list_order=all&page=1 + 'TecnoTablet' => 'TECNO P9|TECNO DP8D', + // JXD (consoles & tablets) - http://jxd.hk/products.asp?selectclassid=009008&clsid=3 + 'JXDTablet' => 'Android.* \b(F3000|A3300|JXD5000|JXD3000|JXD2000|JXD300B|JXD300|S5800|S7800|S602b|S5110b|S7300|S5300|S602|S603|S5100|S5110|S601|S7100a|P3000F|P3000s|P101|P200s|P1000m|P200m|P9100|P1000s|S6600b|S908|P1000|P300|S18|S6600|S9100)\b', + // i-Joy tablets - http://www.i-joy.es/en/cat/products/tablets/ + 'iJoyTablet' => 'Tablet (Spirit 7|Essentia|Galatea|Fusion|Onix 7|Landa|Titan|Scooby|Deox|Stella|Themis|Argon|Unique 7|Sygnus|Hexen|Finity 7|Cream|Cream X2|Jade|Neon 7|Neron 7|Kandy|Scape|Saphyr 7|Rebel|Biox|Rebel|Rebel 8GB|Myst|Draco 7|Myst|Tab7-004|Myst|Tadeo Jones|Tablet Boing|Arrow|Draco Dual Cam|Aurix|Mint|Amity|Revolution|Finity 9|Neon 9|T9w|Amity 4GB Dual Cam|Stone 4GB|Stone 8GB|Andromeda|Silken|X2|Andromeda II|Halley|Flame|Saphyr 9,7|Touch 8|Planet|Triton|Unique 10|Hexen 10|Memphis 4GB|Memphis 8GB|Onix 10)', + // http://www.intracon.eu/tablet + 'FX2Tablet' => 'FX2 PAD7|FX2 PAD10', + // http://www.xoro.de/produkte/ + // @note: Might be the same brand with 'Simply tablets' + 'XoroTablet' => 'KidsPAD 701|PAD[ ]?712|PAD[ ]?714|PAD[ ]?716|PAD[ ]?717|PAD[ ]?718|PAD[ ]?720|PAD[ ]?721|PAD[ ]?722|PAD[ ]?790|PAD[ ]?792|PAD[ ]?900|PAD[ ]?9715D|PAD[ ]?9716DR|PAD[ ]?9718DR|PAD[ ]?9719QR|PAD[ ]?9720QR|TelePAD1030|Telepad1032|TelePAD730|TelePAD731|TelePAD732|TelePAD735Q|TelePAD830|TelePAD9730|TelePAD795|MegaPAD 1331|MegaPAD 1851|MegaPAD 2151', + // http://www1.viewsonic.com/products/computing/tablets/ + 'ViewsonicTablet' => 'ViewPad 10pi|ViewPad 10e|ViewPad 10s|ViewPad E72|ViewPad7|ViewPad E100|ViewPad 7e|ViewSonic VB733|VB100a', + // https://www.verizonwireless.com/tablets/verizon/ + 'VerizonTablet' => 'QTAQZ3|QTAIR7|QTAQTZ3|QTASUN1|QTASUN2|QTAXIA1', + // http://www.odys.de/web/internet-tablet_en.html + 'OdysTablet' => 'LOOX|XENO10|ODYS[ -](Space|EVO|Xpress|NOON)|\bXELIO\b|Xelio10Pro|XELIO7PHONETAB|XELIO10EXTREME|XELIOPT2|NEO_QUAD10', + // http://www.captiva-power.de/products.html#tablets-en + 'CaptivaTablet' => 'CAPTIVA PAD', + // IconBIT - http://www.iconbit.com/products/tablets/ + 'IconbitTablet' => 'NetTAB|NT-3702|NT-3702S|NT-3702S|NT-3603P|NT-3603P|NT-0704S|NT-0704S|NT-3805C|NT-3805C|NT-0806C|NT-0806C|NT-0909T|NT-0909T|NT-0907S|NT-0907S|NT-0902S|NT-0902S', + // http://www.teclast.com/topic.php?channelID=70&topicID=140&pid=63 + 'TeclastTablet' => 'T98 4G|\bP80\b|\bX90HD\b|X98 Air|X98 Air 3G|\bX89\b|P80 3G|\bX80h\b|P98 Air|\bX89HD\b|P98 3G|\bP90HD\b|P89 3G|X98 3G|\bP70h\b|P79HD 3G|G18d 3G|\bP79HD\b|\bP89s\b|\bA88\b|\bP10HD\b|\bP19HD\b|G18 3G|\bP78HD\b|\bA78\b|\bP75\b|G17s 3G|G17h 3G|\bP85t\b|\bP90\b|\bP11\b|\bP98t\b|\bP98HD\b|\bG18d\b|\bP85s\b|\bP11HD\b|\bP88s\b|\bA80HD\b|\bA80se\b|\bA10h\b|\bP89\b|\bP78s\b|\bG18\b|\bP85\b|\bA70h\b|\bA70\b|\bG17\b|\bP18\b|\bA80s\b|\bA11s\b|\bP88HD\b|\bA80h\b|\bP76s\b|\bP76h\b|\bP98\b|\bA10HD\b|\bP78\b|\bP88\b|\bA11\b|\bA10t\b|\bP76a\b|\bP76t\b|\bP76e\b|\bP85HD\b|\bP85a\b|\bP86\b|\bP75HD\b|\bP76v\b|\bA12\b|\bP75a\b|\bA15\b|\bP76Ti\b|\bP81HD\b|\bA10\b|\bT760VE\b|\bT720HD\b|\bP76\b|\bP73\b|\bP71\b|\bP72\b|\bT720SE\b|\bC520Ti\b|\bT760\b|\bT720VE\b|T720-3GE|T720-WiFi', + // Onda - http://www.onda-tablet.com/buy-android-onda.html?dir=desc&limit=all&order=price + 'OndaTablet' => '\b(V975i|Vi30|VX530|V701|Vi60|V701s|Vi50|V801s|V719|Vx610w|VX610W|V819i|Vi10|VX580W|Vi10|V711s|V813|V811|V820w|V820|Vi20|V711|VI30W|V712|V891w|V972|V819w|V820w|Vi60|V820w|V711|V813s|V801|V819|V975s|V801|V819|V819|V818|V811|V712|V975m|V101w|V961w|V812|V818|V971|V971s|V919|V989|V116w|V102w|V973|Vi40)\b[\s]+|V10 \b4G\b', + 'JaytechTablet' => 'TPC-PA762', + 'BlaupunktTablet' => 'Endeavour 800NG|Endeavour 1010', + // http://www.digma.ru/support/download/ + // @todo: Ebooks also (if requested) + 'DigmaTablet' => '\b(iDx10|iDx9|iDx8|iDx7|iDxD7|iDxD8|iDsQ8|iDsQ7|iDsQ8|iDsD10|iDnD7|3TS804H|iDsQ11|iDj7|iDs10)\b', + // http://www.evolioshop.com/ro/tablete-pc.html + // http://www.evolio.ro/support/downloads_static.html?cat=2 + // @todo: Research some more + 'EvolioTablet' => 'ARIA_Mini_wifi|Aria[ _]Mini|Evolio X10|Evolio X7|Evolio X8|\bEvotab\b|\bNeura\b', + // @todo http://www.lavamobiles.com/tablets-data-cards + 'LavaTablet' => 'QPAD E704|\bIvoryS\b|E-TAB IVORY|\bE-TAB\b', + // http://www.breezetablet.com/ + 'AocTablet' => 'MW0811|MW0812|MW0922|MTK8382|MW1031|MW0831|MW0821|MW0931|MW0712', + // http://www.mpmaneurope.com/en/products/internet-tablets-14/android-tablets-14/ + 'MpmanTablet' => 'MP11 OCTA|MP10 OCTA|MPQC1114|MPQC1004|MPQC994|MPQC974|MPQC973|MPQC804|MPQC784|MPQC780|\bMPG7\b|MPDCG75|MPDCG71|MPDC1006|MP101DC|MPDC9000|MPDC905|MPDC706HD|MPDC706|MPDC705|MPDC110|MPDC100|MPDC99|MPDC97|MPDC88|MPDC8|MPDC77|MP709|MID701|MID711|MID170|MPDC703|MPQC1010', + // https://www.celkonmobiles.com/?_a=categoryphones&sid=2 + 'CelkonTablet' => 'CT695|CT888|CT[\s]?910|CT7 Tab|CT9 Tab|CT3 Tab|CT2 Tab|CT1 Tab|C820|C720|\bCT-1\b', + // http://www.wolderelectronics.com/productos/manuales-y-guias-rapidas/categoria-2-miTab + 'WolderTablet' => 'miTab \b(DIAMOND|SPACE|BROOKLYN|NEO|FLY|MANHATTAN|FUNK|EVOLUTION|SKY|GOCAR|IRON|GENIUS|POP|MINT|EPSILON|BROADWAY|JUMP|HOP|LEGEND|NEW AGE|LINE|ADVANCE|FEEL|FOLLOW|LIKE|LINK|LIVE|THINK|FREEDOM|CHICAGO|CLEVELAND|BALTIMORE-GH|IOWA|BOSTON|SEATTLE|PHOENIX|DALLAS|IN 101|MasterChef)\b', + 'MediacomTablet' => 'M-MPI10C3G|M-SP10EG|M-SP10EGP|M-SP10HXAH|M-SP7HXAH|M-SP10HXBH|M-SP8HXAH|M-SP8MXA', + // http://www.mi.com/en + 'MiTablet' => '\bMI PAD\b|\bHM NOTE 1W\b', + // http://www.nbru.cn/index.html + 'NibiruTablet' => 'Nibiru M1|Nibiru Jupiter One', + // http://navroad.com/products/produkty/tablety/ + // http://navroad.com/products/produkty/tablety/ + 'NexoTablet' => 'NEXO NOVA|NEXO 10|NEXO AVIO|NEXO FREE|NEXO GO|NEXO EVO|NEXO 3G|NEXO SMART|NEXO KIDDO|NEXO MOBI', + // http://leader-online.com/new_site/product-category/tablets/ + // http://www.leader-online.net.au/List/Tablet + 'LeaderTablet' => 'TBLT10Q|TBLT10I|TBL-10WDKB|TBL-10WDKBO2013|TBL-W230V2|TBL-W450|TBL-W500|SV572|TBLT7I|TBA-AC7-8G|TBLT79|TBL-8W16|TBL-10W32|TBL-10WKB|TBL-W100', + // http://www.datawind.com/ubislate/ + 'UbislateTablet' => 'UbiSlate[\s]?7C', + // http://www.pocketbook-int.com/ru/support + 'PocketBookTablet' => 'Pocketbook', + // http://www.kocaso.com/product_tablet.html + 'KocasoTablet' => '\b(TB-1207)\b', + // http://global.hisense.com/product/asia/tablet/Sero7/201412/t20141215_91832.htm + 'HisenseTablet' => '\b(F5281|E2371)\b', + // http://www.tesco.com/direct/hudl/ + 'Hudl' => 'Hudl HT7S3|Hudl 2', + // http://www.telstra.com.au/home-phone/thub-2/ + 'TelstraTablet' => 'T-Hub2', + 'GenericTablet' => 'Android.*\b97D\b|Tablet(?!.*PC)|BNTV250A|MID-WCDMA|LogicPD Zoom2|\bA7EB\b|CatNova8|A1_07|CT704|CT1002|\bM721\b|rk30sdk|\bEVOTAB\b|M758A|ET904|ALUMIUM10|Smartfren Tab|Endeavour 1010|Tablet-PC-4|Tagi Tab|\bM6pro\b|CT1020W|arc 10HD|\bTP750\b|\bQTAQZ3\b|WVT101|TM1088|KT107' + ); + + /** + * List of mobile Operating Systems. + * + * @var array + */ + protected static $operatingSystems = array( + 'AndroidOS' => 'Android', + 'BlackBerryOS' => 'blackberry|\bBB10\b|rim tablet os', + 'PalmOS' => 'PalmOS|avantgo|blazer|elaine|hiptop|palm|plucker|xiino', + 'SymbianOS' => 'Symbian|SymbOS|Series60|Series40|SYB-[0-9]+|\bS60\b', + // @reference: http://en.wikipedia.org/wiki/Windows_Mobile + 'WindowsMobileOS' => 'Windows CE.*(PPC|Smartphone|Mobile|[0-9]{3}x[0-9]{3})|Windows Mobile|Windows Phone [0-9.]+|WCE;', + // @reference: http://en.wikipedia.org/wiki/Windows_Phone + // http://wifeng.cn/?r=blog&a=view&id=106 + // http://nicksnettravels.builttoroam.com/post/2011/01/10/Bogus-Windows-Phone-7-User-Agent-String.aspx + // http://msdn.microsoft.com/library/ms537503.aspx + // https://msdn.microsoft.com/en-us/library/hh869301(v=vs.85).aspx + 'WindowsPhoneOS' => 'Windows Phone 10.0|Windows Phone 8.1|Windows Phone 8.0|Windows Phone OS|XBLWP7|ZuneWP7|Windows NT 6.[23]; ARM;', + 'iOS' => '\biPhone.*Mobile|\biPod|\biPad|AppleCoreMedia', + // https://en.wikipedia.org/wiki/IPadOS + 'iPadOS' => 'CPU OS 13', + // http://en.wikipedia.org/wiki/MeeGo + // @todo: research MeeGo in UAs + 'MeeGoOS' => 'MeeGo', + // http://en.wikipedia.org/wiki/Maemo + // @todo: research Maemo in UAs + 'MaemoOS' => 'Maemo', + 'JavaOS' => 'J2ME/|\bMIDP\b|\bCLDC\b', // '|Java/' produces bug #135 + 'webOS' => 'webOS|hpwOS', + 'badaOS' => '\bBada\b', + 'BREWOS' => 'BREW', + ); + + /** + * List of mobile User Agents. + * + * IMPORTANT: This is a list of only mobile browsers. + * Mobile Detect 2.x supports only mobile browsers, + * it was never designed to detect all browsers. + * The change will come in 2017 in the 3.x release for PHP7. + * + * @var array + */ + protected static $browsers = array( + //'Vivaldi' => 'Vivaldi', + // @reference: https://developers.google.com/chrome/mobile/docs/user-agent + 'Chrome' => '\bCrMo\b|CriOS|Android.*Chrome/[.0-9]* (Mobile)?', + 'Dolfin' => '\bDolfin\b', + 'Opera' => 'Opera.*Mini|Opera.*Mobi|Android.*Opera|Mobile.*OPR/[0-9.]+$|Coast/[0-9.]+', + 'Skyfire' => 'Skyfire', + 'Edge' => 'Mobile Safari/[.0-9]* Edge', + 'IE' => 'IEMobile|MSIEMobile', // |Trident/[.0-9]+ + 'Firefox' => 'fennec|firefox.*maemo|(Mobile|Tablet).*Firefox|Firefox.*Mobile|FxiOS', + 'Bolt' => 'bolt', + 'TeaShark' => 'teashark', + 'Blazer' => 'Blazer', + // @reference: http://developer.apple.com/library/safari/#documentation/AppleApplications/Reference/SafariWebContent/OptimizingforSafarioniPhone/OptimizingforSafarioniPhone.html#//apple_ref/doc/uid/TP40006517-SW3 + 'Safari' => 'Version.*Mobile.*Safari|Safari.*Mobile|MobileSafari', + // http://en.wikipedia.org/wiki/Midori_(web_browser) + //'Midori' => 'midori', + //'Tizen' => 'Tizen', + 'WeChat' => '\bMicroMessenger\b', + 'UCBrowser' => 'UC.*Browser|UCWEB', + 'baiduboxapp' => 'baiduboxapp', + 'baidubrowser' => 'baidubrowser', + // https://github.com/serbanghita/Mobile-Detect/issues/7 + 'DiigoBrowser' => 'DiigoBrowser', + // http://www.puffinbrowser.com/index.php + // https://github.com/serbanghita/Mobile-Detect/issues/752 + // 'Puffin' => 'Puffin', + // http://mercury-browser.com/index.html + 'Mercury' => '\bMercury\b', + // http://en.wikipedia.org/wiki/Obigo_Browser + 'ObigoBrowser' => 'Obigo', + // http://en.wikipedia.org/wiki/NetFront + 'NetFront' => 'NF-Browser', + // @reference: http://en.wikipedia.org/wiki/Minimo + // http://en.wikipedia.org/wiki/Vision_Mobile_Browser + 'GenericBrowser' => 'NokiaBrowser|OviBrowser|OneBrowser|TwonkyBeamBrowser|SEMC.*Browser|FlyFlow|Minimo|NetFront|Novarra-Vision|MQQBrowser|MicroMessenger', + // @reference: https://en.wikipedia.org/wiki/Pale_Moon_(web_browser) + 'PaleMoon' => 'Android.*PaleMoon|Mobile.*PaleMoon', + ); + + /** + * Utilities. + * + * @var array + */ + protected static $utilities = array( + // Experimental. When a mobile device wants to switch to 'Desktop Mode'. + // http://scottcate.com/technology/windows-phone-8-ie10-desktop-or-mobile/ + // https://github.com/serbanghita/Mobile-Detect/issues/57#issuecomment-15024011 + // https://developers.facebook.com/docs/sharing/best-practices + 'Bot' => 'Googlebot|facebookexternalhit|Google-AMPHTML|s~amp-validator|AdsBot-Google|Google Keyword Suggestion|Facebot|YandexBot|YandexMobileBot|bingbot|ia_archiver|AhrefsBot|Ezooms|GSLFbot|WBSearchBot|Twitterbot|TweetmemeBot|Twikle|PaperLiBot|Wotbox|UnwindFetchor|Exabot|MJ12bot|YandexImages|TurnitinBot|Pingdom|contentkingapp', + 'MobileBot' => 'Googlebot-Mobile|AdsBot-Google-Mobile|YahooSeeker/M1A1-R2D2', + 'DesktopMode' => 'WPDesktop', + 'TV' => 'SonyDTV|HbbTV', // experimental + 'WebKit' => '(webkit)[ /]([\w.]+)', + // @todo: Include JXD consoles. + 'Console' => '\b(Nintendo|Nintendo WiiU|Nintendo 3DS|Nintendo Switch|PLAYSTATION|Xbox)\b', + 'Watch' => 'SM-V700', + ); + + /** + * All possible HTTP headers that represent the + * User-Agent string. + * + * @var array + */ + protected static $uaHttpHeaders = array( + // The default User-Agent string. + 'HTTP_USER_AGENT', + // Header can occur on devices using Opera Mini. + 'HTTP_X_OPERAMINI_PHONE_UA', + // Vodafone specific header: http://www.seoprinciple.com/mobile-web-community-still-angry-at-vodafone/24/ + 'HTTP_X_DEVICE_USER_AGENT', + 'HTTP_X_ORIGINAL_USER_AGENT', + 'HTTP_X_SKYFIRE_PHONE', + 'HTTP_X_BOLT_PHONE_UA', + 'HTTP_DEVICE_STOCK_UA', + 'HTTP_X_UCBROWSER_DEVICE_UA' + ); + + /** + * The individual segments that could exist in a User-Agent string. VER refers to the regular + * expression defined in the constant self::VER. + * + * @var array + */ + protected static $properties = array( + + // Build + 'Mobile' => 'Mobile/[VER]', + 'Build' => 'Build/[VER]', + 'Version' => 'Version/[VER]', + 'VendorID' => 'VendorID/[VER]', + + // Devices + 'iPad' => 'iPad.*CPU[a-z ]+[VER]', + 'iPhone' => 'iPhone.*CPU[a-z ]+[VER]', + 'iPod' => 'iPod.*CPU[a-z ]+[VER]', + //'BlackBerry' => array('BlackBerry[VER]', 'BlackBerry [VER];'), + 'Kindle' => 'Kindle/[VER]', + + // Browser + 'Chrome' => array('Chrome/[VER]', 'CriOS/[VER]', 'CrMo/[VER]'), + 'Coast' => array('Coast/[VER]'), + 'Dolfin' => 'Dolfin/[VER]', + // @reference: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/User-Agent/Firefox + 'Firefox' => array('Firefox/[VER]', 'FxiOS/[VER]'), + 'Fennec' => 'Fennec/[VER]', + // http://msdn.microsoft.com/en-us/library/ms537503(v=vs.85).aspx + // https://msdn.microsoft.com/en-us/library/ie/hh869301(v=vs.85).aspx + 'Edge' => 'Edge/[VER]', + 'IE' => array('IEMobile/[VER];', 'IEMobile [VER]', 'MSIE [VER];', 'Trident/[0-9.]+;.*rv:[VER]'), + // http://en.wikipedia.org/wiki/NetFront + 'NetFront' => 'NetFront/[VER]', + 'NokiaBrowser' => 'NokiaBrowser/[VER]', + 'Opera' => array( ' OPR/[VER]', 'Opera Mini/[VER]', 'Version/[VER]' ), + 'Opera Mini' => 'Opera Mini/[VER]', + 'Opera Mobi' => 'Version/[VER]', + 'UCBrowser' => array( 'UCWEB[VER]', 'UC.*Browser/[VER]' ), + 'MQQBrowser' => 'MQQBrowser/[VER]', + 'MicroMessenger' => 'MicroMessenger/[VER]', + 'baiduboxapp' => 'baiduboxapp/[VER]', + 'baidubrowser' => 'baidubrowser/[VER]', + 'SamsungBrowser' => 'SamsungBrowser/[VER]', + 'Iron' => 'Iron/[VER]', + // @note: Safari 7534.48.3 is actually Version 5.1. + // @note: On BlackBerry the Version is overwriten by the OS. + 'Safari' => array( 'Version/[VER]', 'Safari/[VER]' ), + 'Skyfire' => 'Skyfire/[VER]', + 'Tizen' => 'Tizen/[VER]', + 'Webkit' => 'webkit[ /][VER]', + 'PaleMoon' => 'PaleMoon/[VER]', + + // Engine + 'Gecko' => 'Gecko/[VER]', + 'Trident' => 'Trident/[VER]', + 'Presto' => 'Presto/[VER]', + 'Goanna' => 'Goanna/[VER]', + + // OS + 'iOS' => ' \bi?OS\b [VER][ ;]{1}', + 'Android' => 'Android [VER]', + 'BlackBerry' => array('BlackBerry[\w]+/[VER]', 'BlackBerry.*Version/[VER]', 'Version/[VER]'), + 'BREW' => 'BREW [VER]', + 'Java' => 'Java/[VER]', + // @reference: http://windowsteamblog.com/windows_phone/b/wpdev/archive/2011/08/29/introducing-the-ie9-on-windows-phone-mango-user-agent-string.aspx + // @reference: http://en.wikipedia.org/wiki/Windows_NT#Releases + 'Windows Phone OS' => array( 'Windows Phone OS [VER]', 'Windows Phone [VER]'), + 'Windows Phone' => 'Windows Phone [VER]', + 'Windows CE' => 'Windows CE/[VER]', + // http://social.msdn.microsoft.com/Forums/en-US/windowsdeveloperpreviewgeneral/thread/6be392da-4d2f-41b4-8354-8dcee20c85cd + 'Windows NT' => 'Windows NT [VER]', + 'Symbian' => array('SymbianOS/[VER]', 'Symbian/[VER]'), + 'webOS' => array('webOS/[VER]', 'hpwOS/[VER];'), + ); + + /** + * Construct an instance of this class. + * + * @param array $headers Specify the headers as injection. Should be PHP _SERVER flavored. + * If left empty, will use the global _SERVER['HTTP_*'] vars instead. + * @param string $userAgent Inject the User-Agent header. If null, will use HTTP_USER_AGENT + * from the $headers array instead. + */ + public function __construct( + array $headers = null, + $userAgent = null + ) { + $this->setHttpHeaders($headers); + $this->setUserAgent($userAgent); + } + + /** + * Get the current script version. + * This is useful for the demo.php file, + * so people can check on what version they are testing + * for mobile devices. + * + * @return string The version number in semantic version format. + */ + public static function getScriptVersion() + { + return self::VERSION; + } + + /** + * Set the HTTP Headers. Must be PHP-flavored. This method will reset existing headers. + * + * @param array $httpHeaders The headers to set. If null, then using PHP's _SERVER to extract + * the headers. The default null is left for backwards compatibility. + */ + public function setHttpHeaders($httpHeaders = null) + { + // use global _SERVER if $httpHeaders aren't defined + if (!is_array($httpHeaders) || !count($httpHeaders)) { + $httpHeaders = $_SERVER; + } + + // clear existing headers + $this->httpHeaders = array(); + + // Only save HTTP headers. In PHP land, that means only _SERVER vars that + // start with HTTP_. + foreach ($httpHeaders as $key => $value) { + if (substr($key, 0, 5) === 'HTTP_') { + $this->httpHeaders[$key] = $value; + } + } + + // In case we're dealing with CloudFront, we need to know. + $this->setCfHeaders($httpHeaders); + } + + /** + * Retrieves the HTTP headers. + * + * @return array + */ + public function getHttpHeaders() + { + return $this->httpHeaders; + } + + /** + * Retrieves a particular header. If it doesn't exist, no exception/error is caused. + * Simply null is returned. + * + * @param string $header The name of the header to retrieve. Can be HTTP compliant such as + * "User-Agent" or "X-Device-User-Agent" or can be php-esque with the + * all-caps, HTTP_ prefixed, underscore seperated awesomeness. + * + * @return string|null The value of the header. + */ + public function getHttpHeader($header) + { + // are we using PHP-flavored headers? + if (strpos($header, '_') === false) { + $header = str_replace('-', '_', $header); + $header = strtoupper($header); + } + + // test the alternate, too + $altHeader = 'HTTP_' . $header; + + //Test both the regular and the HTTP_ prefix + if (isset($this->httpHeaders[$header])) { + return $this->httpHeaders[$header]; + } elseif (isset($this->httpHeaders[$altHeader])) { + return $this->httpHeaders[$altHeader]; + } + + return null; + } + + public function getMobileHeaders() + { + return self::$mobileHeaders; + } + + /** + * Get all possible HTTP headers that + * can contain the User-Agent string. + * + * @return array List of HTTP headers. + */ + public function getUaHttpHeaders() + { + return self::$uaHttpHeaders; + } + + + /** + * Set CloudFront headers + * http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/header-caching.html#header-caching-web-device + * + * @param array $cfHeaders List of HTTP headers + * + * @return boolean If there were CloudFront headers to be set + */ + public function setCfHeaders($cfHeaders = null) { + // use global _SERVER if $cfHeaders aren't defined + if (!is_array($cfHeaders) || !count($cfHeaders)) { + $cfHeaders = $_SERVER; + } + + // clear existing headers + $this->cloudfrontHeaders = array(); + + // Only save CLOUDFRONT headers. In PHP land, that means only _SERVER vars that + // start with cloudfront-. + $response = false; + foreach ($cfHeaders as $key => $value) { + if (substr(strtolower($key), 0, 16) === 'http_cloudfront_') { + $this->cloudfrontHeaders[strtoupper($key)] = $value; + $response = true; + } + } + + return $response; + } + + /** + * Retrieves the cloudfront headers. + * + * @return array + */ + public function getCfHeaders() + { + return $this->cloudfrontHeaders; + } + + /** + * @param string $userAgent + * @return string + */ + private function prepareUserAgent($userAgent) { + $userAgent = trim($userAgent); + $userAgent = substr($userAgent, 0, 500); + return $userAgent; + } + + /** + * Set the User-Agent to be used. + * + * @param string $userAgent The user agent string to set. + * + * @return string|null + */ + public function setUserAgent($userAgent = null) + { + // Invalidate cache due to #375 + $this->cache = array(); + + if (false === empty($userAgent)) { + return $this->userAgent = $this->prepareUserAgent($userAgent); + } else { + $this->userAgent = null; + foreach ($this->getUaHttpHeaders() as $altHeader) { + if (false === empty($this->httpHeaders[$altHeader])) { // @todo: should use getHttpHeader(), but it would be slow. (Serban) + $this->userAgent .= $this->httpHeaders[$altHeader] . " "; + } + } + + if (!empty($this->userAgent)) { + return $this->userAgent = $this->prepareUserAgent($this->userAgent); + } + } + + if (count($this->getCfHeaders()) > 0) { + return $this->userAgent = 'Amazon CloudFront'; + } + return $this->userAgent = null; + } + + /** + * Retrieve the User-Agent. + * + * @return string|null The user agent if it's set. + */ + public function getUserAgent() + { + return $this->userAgent; + } + + /** + * Set the detection type. Must be one of self::DETECTION_TYPE_MOBILE or + * self::DETECTION_TYPE_EXTENDED. Otherwise, nothing is set. + * + * @deprecated since version 2.6.9 + * + * @param string $type The type. Must be a self::DETECTION_TYPE_* constant. The default + * parameter is null which will default to self::DETECTION_TYPE_MOBILE. + */ + public function setDetectionType($type = null) + { + if ($type === null) { + $type = self::DETECTION_TYPE_MOBILE; + } + + if ($type !== self::DETECTION_TYPE_MOBILE && $type !== self::DETECTION_TYPE_EXTENDED) { + return; + } + + $this->detectionType = $type; + } + + public function getMatchingRegex() + { + return $this->matchingRegex; + } + + public function getMatchesArray() + { + return $this->matchesArray; + } + + /** + * Retrieve the list of known phone devices. + * + * @return array List of phone devices. + */ + public static function getPhoneDevices() + { + return self::$phoneDevices; + } + + /** + * Retrieve the list of known tablet devices. + * + * @return array List of tablet devices. + */ + public static function getTabletDevices() + { + return self::$tabletDevices; + } + + /** + * Alias for getBrowsers() method. + * + * @return array List of user agents. + */ + public static function getUserAgents() + { + return self::getBrowsers(); + } + + /** + * Retrieve the list of known browsers. Specifically, the user agents. + * + * @return array List of browsers / user agents. + */ + public static function getBrowsers() + { + return self::$browsers; + } + + /** + * Retrieve the list of known utilities. + * + * @return array List of utilities. + */ + public static function getUtilities() + { + return self::$utilities; + } + + /** + * Method gets the mobile detection rules. This method is used for the magic methods $detect->is*(). + * + * @deprecated since version 2.6.9 + * + * @return array All the rules (but not extended). + */ + public static function getMobileDetectionRules() + { + static $rules; + + if (!$rules) { + $rules = array_merge( + self::$phoneDevices, + self::$tabletDevices, + self::$operatingSystems, + self::$browsers + ); + } + + return $rules; + + } + + /** + * Method gets the mobile detection rules + utilities. + * The reason this is separate is because utilities rules + * don't necessary imply mobile. This method is used inside + * the new $detect->is('stuff') method. + * + * @deprecated since version 2.6.9 + * + * @return array All the rules + extended. + */ + public function getMobileDetectionRulesExtended() + { + static $rules; + + if (!$rules) { + // Merge all rules together. + $rules = array_merge( + self::$phoneDevices, + self::$tabletDevices, + self::$operatingSystems, + self::$browsers, + self::$utilities + ); + } + + return $rules; + } + + /** + * Retrieve the current set of rules. + * + * @deprecated since version 2.6.9 + * + * @return array + */ + public function getRules() + { + if ($this->detectionType == self::DETECTION_TYPE_EXTENDED) { + return self::getMobileDetectionRulesExtended(); + } else { + return self::getMobileDetectionRules(); + } + } + + /** + * Retrieve the list of mobile operating systems. + * + * @return array The list of mobile operating systems. + */ + public static function getOperatingSystems() + { + return self::$operatingSystems; + } + + /** + * Check the HTTP headers for signs of mobile. + * This is the fastest mobile check possible; it's used + * inside isMobile() method. + * + * @return bool + */ + public function checkHttpHeadersForMobile() + { + + foreach ($this->getMobileHeaders() as $mobileHeader => $matchType) { + if (isset($this->httpHeaders[$mobileHeader])) { + if (is_array($matchType['matches'])) { + foreach ($matchType['matches'] as $_match) { + if (strpos($this->httpHeaders[$mobileHeader], $_match) !== false) { + return true; + } + } + + return false; + } else { + return true; + } + } + } + + return false; + + } + + /** + * Magic overloading method. + * + * @method boolean is[...]() + * @param string $name + * @param array $arguments + * @return mixed + * @throws BadMethodCallException when the method doesn't exist and doesn't start with 'is' + */ + public function __call($name, $arguments) + { + // make sure the name starts with 'is', otherwise + if (substr($name, 0, 2) !== 'is') { + throw new BadMethodCallException("No such method exists: $name"); + } + + $this->setDetectionType(self::DETECTION_TYPE_MOBILE); + + $key = substr($name, 2); + + return $this->matchUAAgainstKey($key); + } + + /** + * Find a detection rule that matches the current User-agent. + * + * @param null $userAgent deprecated + * @return boolean + */ + protected function matchDetectionRulesAgainstUA($userAgent = null) + { + // Begin general search. + foreach ($this->getRules() as $_regex) { + if (empty($_regex)) { + continue; + } + + if ($this->match($_regex, $userAgent)) { + return true; + } + } + + return false; + } + + /** + * Search for a certain key in the rules array. + * If the key is found then try to match the corresponding + * regex against the User-Agent. + * + * @param string $key + * + * @return boolean + */ + protected function matchUAAgainstKey($key) + { + // Make the keys lowercase so we can match: isIphone(), isiPhone(), isiphone(), etc. + $key = strtolower($key); + if (false === isset($this->cache[$key])) { + + // change the keys to lower case + $_rules = array_change_key_case($this->getRules()); + + if (false === empty($_rules[$key])) { + $this->cache[$key] = $this->match($_rules[$key]); + } + + if (false === isset($this->cache[$key])) { + $this->cache[$key] = false; + } + } + + return $this->cache[$key]; + } + + /** + * Check if the device is mobile. + * Returns true if any type of mobile device detected, including special ones + * @param null $userAgent deprecated + * @param null $httpHeaders deprecated + * @return bool + */ + public function isMobile($userAgent = null, $httpHeaders = null) + { + + if ($httpHeaders) { + $this->setHttpHeaders($httpHeaders); + } + + if ($userAgent) { + $this->setUserAgent($userAgent); + } + + // Check specifically for cloudfront headers if the useragent === 'Amazon CloudFront' + if ($this->getUserAgent() === 'Amazon CloudFront') { + $cfHeaders = $this->getCfHeaders(); + if(array_key_exists('HTTP_CLOUDFRONT_IS_MOBILE_VIEWER', $cfHeaders) && $cfHeaders['HTTP_CLOUDFRONT_IS_MOBILE_VIEWER'] === 'true') { + return true; + } + } + + $this->setDetectionType(self::DETECTION_TYPE_MOBILE); + + if ($this->checkHttpHeadersForMobile()) { + return true; + } else { + return $this->matchDetectionRulesAgainstUA(); + } + + } + + /** + * Check if the device is a tablet. + * Return true if any type of tablet device is detected. + * + * @param string $userAgent deprecated + * @param array $httpHeaders deprecated + * @return bool + */ + public function isTablet($userAgent = null, $httpHeaders = null) + { + // Check specifically for cloudfront headers if the useragent === 'Amazon CloudFront' + if ($this->getUserAgent() === 'Amazon CloudFront') { + $cfHeaders = $this->getCfHeaders(); + if(array_key_exists('HTTP_CLOUDFRONT_IS_TABLET_VIEWER', $cfHeaders) && $cfHeaders['HTTP_CLOUDFRONT_IS_TABLET_VIEWER'] === 'true') { + return true; + } + } + + $this->setDetectionType(self::DETECTION_TYPE_MOBILE); + + foreach (self::$tabletDevices as $_regex) { + if ($this->match($_regex, $userAgent)) { + return true; + } + } + + return false; + } + + /** + * This method checks for a certain property in the + * userAgent. + * @todo: The httpHeaders part is not yet used. + * + * @param string $key + * @param string $userAgent deprecated + * @param string $httpHeaders deprecated + * @return bool|int|null + */ + public function is($key, $userAgent = null, $httpHeaders = null) + { + // Set the UA and HTTP headers only if needed (eg. batch mode). + if ($httpHeaders) { + $this->setHttpHeaders($httpHeaders); + } + + if ($userAgent) { + $this->setUserAgent($userAgent); + } + + $this->setDetectionType(self::DETECTION_TYPE_EXTENDED); + + return $this->matchUAAgainstKey($key); + } + + /** + * Some detection rules are relative (not standard), + * because of the diversity of devices, vendors and + * their conventions in representing the User-Agent or + * the HTTP headers. + * + * This method will be used to check custom regexes against + * the User-Agent string. + * + * @param $regex + * @param string $userAgent + * @return bool + * + * @todo: search in the HTTP headers too. + */ + public function match($regex, $userAgent = null) + { + $match = (bool) preg_match(sprintf('#%s#is', $regex), (false === empty($userAgent) ? $userAgent : $this->userAgent), $matches); + // If positive match is found, store the results for debug. + if ($match) { + $this->matchingRegex = $regex; + $this->matchesArray = $matches; + } + + return $match; + } + + /** + * Get the properties array. + * + * @return array + */ + public static function getProperties() + { + return self::$properties; + } + + /** + * Prepare the version number. + * + * @todo Remove the error supression from str_replace() call. + * + * @param string $ver The string version, like "2.6.21.2152"; + * + * @return float + */ + public function prepareVersionNo($ver) + { + $ver = str_replace(array('_', ' ', '/'), '.', $ver); + $arrVer = explode('.', $ver, 2); + + if (isset($arrVer[1])) { + $arrVer[1] = @str_replace('.', '', $arrVer[1]); // @todo: treat strings versions. + } + + return (float) implode('.', $arrVer); + } + + /** + * Check the version of the given property in the User-Agent. + * Will return a float number. (eg. 2_0 will return 2.0, 4.3.1 will return 4.31) + * + * @param string $propertyName The name of the property. See self::getProperties() array + * keys for all possible properties. + * @param string $type Either self::VERSION_TYPE_STRING to get a string value or + * self::VERSION_TYPE_FLOAT indicating a float value. This parameter + * is optional and defaults to self::VERSION_TYPE_STRING. Passing an + * invalid parameter will default to the this type as well. + * + * @return string|float The version of the property we are trying to extract. + */ + public function version($propertyName, $type = self::VERSION_TYPE_STRING) + { + if (empty($propertyName)) { + return false; + } + + // set the $type to the default if we don't recognize the type + if ($type !== self::VERSION_TYPE_STRING && $type !== self::VERSION_TYPE_FLOAT) { + $type = self::VERSION_TYPE_STRING; + } + + $properties = self::getProperties(); + + // Check if the property exists in the properties array. + if (true === isset($properties[$propertyName])) { + + // Prepare the pattern to be matched. + // Make sure we always deal with an array (string is converted). + $properties[$propertyName] = (array) $properties[$propertyName]; + + foreach ($properties[$propertyName] as $propertyMatchString) { + + $propertyPattern = str_replace('[VER]', self::VER, $propertyMatchString); + + // Identify and extract the version. + preg_match(sprintf('#%s#is', $propertyPattern), $this->userAgent, $match); + + if (false === empty($match[1])) { + $version = ($type == self::VERSION_TYPE_FLOAT ? $this->prepareVersionNo($match[1]) : $match[1]); + + return $version; + } + + } + + } + + return false; + } + + /** + * Retrieve the mobile grading, using self::MOBILE_GRADE_* constants. + * + * @return string One of the self::MOBILE_GRADE_* constants. + */ + public function mobileGrade() + { + $isMobile = $this->isMobile(); + + if ( + // Apple iOS 4-7.0 – Tested on the original iPad (4.3 / 5.0), iPad 2 (4.3 / 5.1 / 6.1), iPad 3 (5.1 / 6.0), iPad Mini (6.1), iPad Retina (7.0), iPhone 3GS (4.3), iPhone 4 (4.3 / 5.1), iPhone 4S (5.1 / 6.0), iPhone 5 (6.0), and iPhone 5S (7.0) + $this->is('iOS') && $this->version('iPad', self::VERSION_TYPE_FLOAT) >= 4.3 || + $this->is('iOS') && $this->version('iPhone', self::VERSION_TYPE_FLOAT) >= 4.3 || + $this->is('iOS') && $this->version('iPod', self::VERSION_TYPE_FLOAT) >= 4.3 || + + // Android 2.1-2.3 - Tested on the HTC Incredible (2.2), original Droid (2.2), HTC Aria (2.1), Google Nexus S (2.3). Functional on 1.5 & 1.6 but performance may be sluggish, tested on Google G1 (1.5) + // Android 3.1 (Honeycomb) - Tested on the Samsung Galaxy Tab 10.1 and Motorola XOOM + // Android 4.0 (ICS) - Tested on a Galaxy Nexus. Note: transition performance can be poor on upgraded devices + // Android 4.1 (Jelly Bean) - Tested on a Galaxy Nexus and Galaxy 7 + ( $this->version('Android', self::VERSION_TYPE_FLOAT)>2.1 && $this->is('Webkit') ) || + + // Windows Phone 7.5-8 - Tested on the HTC Surround (7.5), HTC Trophy (7.5), LG-E900 (7.5), Nokia 800 (7.8), HTC Mazaa (7.8), Nokia Lumia 520 (8), Nokia Lumia 920 (8), HTC 8x (8) + $this->version('Windows Phone OS', self::VERSION_TYPE_FLOAT) >= 7.5 || + + // Tested on the Torch 9800 (6) and Style 9670 (6), BlackBerry® Torch 9810 (7), BlackBerry Z10 (10) + $this->is('BlackBerry') && $this->version('BlackBerry', self::VERSION_TYPE_FLOAT) >= 6.0 || + // Blackberry Playbook (1.0-2.0) - Tested on PlayBook + $this->match('Playbook.*Tablet') || + + // Palm WebOS (1.4-3.0) - Tested on the Palm Pixi (1.4), Pre (1.4), Pre 2 (2.0), HP TouchPad (3.0) + ( $this->version('webOS', self::VERSION_TYPE_FLOAT) >= 1.4 && $this->match('Palm|Pre|Pixi') ) || + // Palm WebOS 3.0 - Tested on HP TouchPad + $this->match('hp.*TouchPad') || + + // Firefox Mobile 18 - Tested on Android 2.3 and 4.1 devices + ( $this->is('Firefox') && $this->version('Firefox', self::VERSION_TYPE_FLOAT) >= 18 ) || + + // Chrome for Android - Tested on Android 4.0, 4.1 device + ( $this->is('Chrome') && $this->is('AndroidOS') && $this->version('Android', self::VERSION_TYPE_FLOAT) >= 4.0 ) || + + // Skyfire 4.1 - Tested on Android 2.3 device + ( $this->is('Skyfire') && $this->version('Skyfire', self::VERSION_TYPE_FLOAT) >= 4.1 && $this->is('AndroidOS') && $this->version('Android', self::VERSION_TYPE_FLOAT) >= 2.3 ) || + + // Opera Mobile 11.5-12: Tested on Android 2.3 + ( $this->is('Opera') && $this->version('Opera Mobi', self::VERSION_TYPE_FLOAT) >= 11.5 && $this->is('AndroidOS') ) || + + // Meego 1.2 - Tested on Nokia 950 and N9 + $this->is('MeeGoOS') || + + // Tizen (pre-release) - Tested on early hardware + $this->is('Tizen') || + + // Samsung Bada 2.0 - Tested on a Samsung Wave 3, Dolphin browser + // @todo: more tests here! + $this->is('Dolfin') && $this->version('Bada', self::VERSION_TYPE_FLOAT) >= 2.0 || + + // UC Browser - Tested on Android 2.3 device + ( ($this->is('UC Browser') || $this->is('Dolfin')) && $this->version('Android', self::VERSION_TYPE_FLOAT) >= 2.3 ) || + + // Kindle 3 and Fire - Tested on the built-in WebKit browser for each + ( $this->match('Kindle Fire') || + $this->is('Kindle') && $this->version('Kindle', self::VERSION_TYPE_FLOAT) >= 3.0 ) || + + // Nook Color 1.4.1 - Tested on original Nook Color, not Nook Tablet + $this->is('AndroidOS') && $this->is('NookTablet') || + + // Chrome Desktop 16-24 - Tested on OS X 10.7 and Windows 7 + $this->version('Chrome', self::VERSION_TYPE_FLOAT) >= 16 && !$isMobile || + + // Safari Desktop 5-6 - Tested on OS X 10.7 and Windows 7 + $this->version('Safari', self::VERSION_TYPE_FLOAT) >= 5.0 && !$isMobile || + + // Firefox Desktop 10-18 - Tested on OS X 10.7 and Windows 7 + $this->version('Firefox', self::VERSION_TYPE_FLOAT) >= 10.0 && !$isMobile || + + // Internet Explorer 7-9 - Tested on Windows XP, Vista and 7 + $this->version('IE', self::VERSION_TYPE_FLOAT) >= 7.0 && !$isMobile || + + // Opera Desktop 10-12 - Tested on OS X 10.7 and Windows 7 + $this->version('Opera', self::VERSION_TYPE_FLOAT) >= 10 && !$isMobile + ){ + return self::MOBILE_GRADE_A; + } + + if ( + $this->is('iOS') && $this->version('iPad', self::VERSION_TYPE_FLOAT)<4.3 || + $this->is('iOS') && $this->version('iPhone', self::VERSION_TYPE_FLOAT)<4.3 || + $this->is('iOS') && $this->version('iPod', self::VERSION_TYPE_FLOAT)<4.3 || + + // Blackberry 5.0: Tested on the Storm 2 9550, Bold 9770 + $this->is('Blackberry') && $this->version('BlackBerry', self::VERSION_TYPE_FLOAT) >= 5 && $this->version('BlackBerry', self::VERSION_TYPE_FLOAT)<6 || + + //Opera Mini (5.0-6.5) - Tested on iOS 3.2/4.3 and Android 2.3 + ($this->version('Opera Mini', self::VERSION_TYPE_FLOAT) >= 5.0 && $this->version('Opera Mini', self::VERSION_TYPE_FLOAT) <= 7.0 && + ($this->version('Android', self::VERSION_TYPE_FLOAT) >= 2.3 || $this->is('iOS')) ) || + + // Nokia Symbian^3 - Tested on Nokia N8 (Symbian^3), C7 (Symbian^3), also works on N97 (Symbian^1) + $this->match('NokiaN8|NokiaC7|N97.*Series60|Symbian/3') || + + // @todo: report this (tested on Nokia N71) + $this->version('Opera Mobi', self::VERSION_TYPE_FLOAT) >= 11 && $this->is('SymbianOS') + ){ + return self::MOBILE_GRADE_B; + } + + if ( + // Blackberry 4.x - Tested on the Curve 8330 + $this->version('BlackBerry', self::VERSION_TYPE_FLOAT) <= 5.0 || + // Windows Mobile - Tested on the HTC Leo (WinMo 5.2) + $this->match('MSIEMobile|Windows CE.*Mobile') || $this->version('Windows Mobile', self::VERSION_TYPE_FLOAT) <= 5.2 || + + // Tested on original iPhone (3.1), iPhone 3 (3.2) + $this->is('iOS') && $this->version('iPad', self::VERSION_TYPE_FLOAT) <= 3.2 || + $this->is('iOS') && $this->version('iPhone', self::VERSION_TYPE_FLOAT) <= 3.2 || + $this->is('iOS') && $this->version('iPod', self::VERSION_TYPE_FLOAT) <= 3.2 || + + // Internet Explorer 7 and older - Tested on Windows XP + $this->version('IE', self::VERSION_TYPE_FLOAT) <= 7.0 && !$isMobile + ){ + return self::MOBILE_GRADE_C; + } + + // All older smartphone platforms and featurephones - Any device that doesn't support media queries + // will receive the basic, C grade experience. + return self::MOBILE_GRADE_C; + } +} diff --git a/wp-content/plugins/wp-rocket/inc/classes/dependencies/wp-media/background-processing/composer.json b/wp-content/plugins/wp-rocket/inc/classes/dependencies/wp-media/background-processing/composer.json new file mode 100644 index 0000000..67ce817 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/classes/dependencies/wp-media/background-processing/composer.json @@ -0,0 +1,46 @@ +{ + "name": "wp-media/background-processing", + "description": "Async & Background Tasks Processing", + "homepage": "https://github.com/wp-media/background-processing", + "license": "GPL-2.0+", + "authors": [ + { + "name": "WP Media", + "email": "contact@wp-media.me", + "homepage": "https://wp-media.me" + } + ], + "type": "library", + "config": { + "sort-packages": true + }, + "support": { + "issues": "https://github.com/wp-media/background-processing/issues", + "source": "https://github.com/wp-media/background-processing" + }, + "require-dev": { + "php": "^5.6 || ^7", + "brain/monkey": "^2.0", + "dealerdirect/phpcodesniffer-composer-installer": "^0.5.0", + "phpcompatibility/phpcompatibility-wp": "^2.0", + "phpunit/phpunit": "^5.7 || ^7", + "wp-coding-standards/wpcs": "^2", + "wp-media/phpunit": "^1.0" + }, + "autoload": { + "classmap": [ "" ] + }, + "autoload-dev": {}, + "scripts": { + "test-unit": "\"vendor/bin/wpmedia-phpunit\" unit path=Tests/Unit", + "test-integration": "\"vendor/bin/wpmedia-phpunit\" integration path=Tests/Integration/", + "run-tests": [ + "@test-unit", + "@test-integration" + ], + "install-codestandards": "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin::run", + "phpcs": "phpcs --basepath=.", + "phpcs-changed": "./bin/phpcs-changed.sh", + "phpcs:fix": "phpcbf" + } +} diff --git a/wp-content/plugins/wp-rocket/inc/classes/dependencies/wp-media/background-processing/wp-async-request.php b/wp-content/plugins/wp-rocket/inc/classes/dependencies/wp-media/background-processing/wp-async-request.php new file mode 100644 index 0000000..bdff83e --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/classes/dependencies/wp-media/background-processing/wp-async-request.php @@ -0,0 +1,181 @@ +identifier = $this->prefix . '_' . $this->action; + + add_action( 'wp_ajax_' . $this->identifier, array( $this, 'maybe_handle' ) ); + add_action( 'wp_ajax_nopriv_' . $this->identifier, array( $this, 'maybe_handle' ) ); + } + + /** + * Set data used during the request + * + * @param array $data Data. + * + * @return $this + */ + public function data( $data ) { + $this->data = $data; + + return $this; + } + + /** + * Dispatch the async request + * + * @return array|WP_Error + */ + public function dispatch() { + $url = add_query_arg( $this->get_query_args(), $this->get_query_url() ); + $args = $this->get_post_args(); + + return wp_remote_post( esc_url_raw( $url ), $args ); + } + + /** + * Get query args + * + * @return array + */ + protected function get_query_args() { + if ( property_exists( $this, 'query_args' ) ) { + return $this->query_args; + } + + $args = array( + 'action' => $this->identifier, + 'nonce' => wp_create_nonce( $this->identifier ), + ); + + /** + * Filters the post arguments used during an async request. + * + * @param array $url + */ + return apply_filters( $this->identifier . '_query_args', $args ); + } + + /** + * Get query URL + * + * @return string + */ + protected function get_query_url() { + if ( property_exists( $this, 'query_url' ) ) { + return $this->query_url; + } + + $url = admin_url( 'admin-ajax.php' ); + + /** + * Filters the post arguments used during an async request. + * + * @param string $url + */ + return apply_filters( $this->identifier . '_query_url', $url ); + } + + /** + * Get post args + * + * @return array + */ + protected function get_post_args() { + if ( property_exists( $this, 'post_args' ) ) { + return $this->post_args; + } + + $args = array( + 'timeout' => 0.01, + 'blocking' => false, + 'body' => $this->data, + 'cookies' => $_COOKIE, + 'sslverify' => apply_filters( 'https_local_ssl_verify', false ), + ); + + /** + * Filters the post arguments used during an async request. + * + * @param array $args + */ + return apply_filters( $this->identifier . '_post_args', $args ); + } + + /** + * Maybe handle + * + * Check for correct nonce and pass to handler. + */ + public function maybe_handle() { + // Don't lock up other requests while processing + session_write_close(); + + check_ajax_referer( $this->identifier, 'nonce' ); + + $this->handle(); + + wp_die(); + } + + /** + * Handle + * + * Override this method to perform any actions required + * during the async request. + */ + abstract protected function handle(); + +} diff --git a/wp-content/plugins/wp-rocket/inc/classes/dependencies/wp-media/background-processing/wp-background-process.php b/wp-content/plugins/wp-rocket/inc/classes/dependencies/wp-media/background-processing/wp-background-process.php new file mode 100644 index 0000000..f54eb56 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/classes/dependencies/wp-media/background-processing/wp-background-process.php @@ -0,0 +1,520 @@ +cron_hook_identifier = $this->identifier . '_cron'; + $this->cron_interval_identifier = $this->identifier . '_cron_interval'; + + add_action( $this->cron_hook_identifier, array( $this, 'handle_cron_healthcheck' ) ); + add_filter( 'cron_schedules', array( $this, 'schedule_cron_healthcheck' ) ); + } + + /** + * Dispatch + * + * @access public + * @return void + */ + public function dispatch() { + // Schedule the cron healthcheck. + $this->schedule_event(); + + // Perform remote post. + return parent::dispatch(); + } + + /** + * Push to queue + * + * @param mixed $data Data. + * + * @return $this + */ + public function push_to_queue( $data ) { + $this->data[] = $data; + + return $this; + } + + /** + * Save queue + * + * @return $this + */ + public function save() { + $key = $this->generate_key(); + + if ( ! empty( $this->data ) ) { + update_site_option( $key, $this->data ); + } + + return $this; + } + + /** + * Update queue + * + * @param string $key Key. + * @param array $data Data. + * + * @return $this + */ + public function update( $key, $data ) { + if ( ! empty( $data ) ) { + update_site_option( $key, $data ); + } + + return $this; + } + + /** + * Delete queue + * + * @param string $key Key. + * + * @return $this + */ + public function delete( $key ) { + delete_site_option( $key ); + + return $this; + } + + /** + * Generate key + * + * Generates a unique key based on microtime. Queue items are + * given a unique key so that they can be merged upon save. + * + * @param int $length Length. + * + * @return string + */ + protected function generate_key( $length = 64 ) { + $unique = md5( microtime() . rand() ); + $prepend = $this->identifier . '_batch_'; + + return substr( $prepend . $unique, 0, $length ); + } + + /** + * Maybe process queue + * + * Checks whether data exists within the queue and that + * the process is not already running. + */ + public function maybe_handle() { + // Don't lock up other requests while processing + session_write_close(); + + if ( $this->is_process_running() ) { + // Background process already running. + wp_die(); + } + + if ( $this->is_queue_empty() ) { + // No data to process. + wp_die(); + } + + check_ajax_referer( $this->identifier, 'nonce' ); + + $this->handle(); + + wp_die(); + } + + /** + * Is queue empty + * + * @return bool + */ + protected function is_queue_empty() { + global $wpdb; + + $table = $wpdb->options; + $column = 'option_name'; + + if ( is_multisite() ) { + $table = $wpdb->sitemeta; + $column = 'meta_key'; + } + + $key = $wpdb->esc_like( $this->identifier . '_batch_' ) . '%'; + + $count = $wpdb->get_var( $wpdb->prepare( " + SELECT COUNT(*) + FROM {$table} + WHERE {$column} LIKE %s + ", $key ) ); + + return ( $count > 0 ) ? false : true; + } + + /** + * Is process running + * + * Check whether the current process is already running + * in a background process. + */ + protected function is_process_running() { + if ( get_site_transient( $this->identifier . '_process_lock' ) ) { + // Process already running. + return true; + } + + return false; + } + + /** + * Is process cancelled + * + * Check whether the current process is cancelled + * in a background process. + */ + protected function is_process_cancelled() { + if ( ! \rocket_direct_filesystem()->exists( WP_ROCKET_CACHE_ROOT_PATH . '.' . $this->identifier . '_process_cancelled' ) ) { + return false; + } + + return true; + } + + /** + * Lock process + * + * Lock the process so that multiple instances can't run simultaneously. + * Override if applicable, but the duration should be greater than that + * defined in the time_exceeded() method. + */ + protected function lock_process() { + $this->start_time = time(); // Set start time of current process. + + $lock_duration = ( property_exists( $this, 'queue_lock_time' ) ) ? $this->queue_lock_time : 60; // 1 minute + $lock_duration = apply_filters( $this->identifier . '_queue_lock_time', $lock_duration ); + + set_site_transient( $this->identifier . '_process_lock', microtime(), $lock_duration ); + } + + /** + * Unlock process + * + * Unlock the process so that other instances can spawn. + * + * @return $this + */ + protected function unlock_process() { + delete_site_transient( $this->identifier . '_process_lock' ); + + return $this; + } + + /** + * Get batch + * + * @return stdClass Return the first batch from the queue + */ + protected function get_batch() { + global $wpdb; + + $table = $wpdb->options; + $column = 'option_name'; + $key_column = 'option_id'; + $value_column = 'option_value'; + + if ( is_multisite() ) { + $table = $wpdb->sitemeta; + $column = 'meta_key'; + $key_column = 'meta_id'; + $value_column = 'meta_value'; + } + + $key = $wpdb->esc_like( $this->identifier . '_batch_' ) . '%'; + + $query = $wpdb->get_row( $wpdb->prepare( " + SELECT * + FROM {$table} + WHERE {$column} LIKE %s + ORDER BY {$key_column} ASC + LIMIT 1 + ", $key ) ); + + $batch = new stdClass(); + $batch->key = $query->$column; + $batch->data = maybe_unserialize( $query->$value_column ); + + return $batch; + } + + /** + * Handle + * + * Pass each queue item to the task handler, while remaining + * within server memory and time limit constraints. + */ + protected function handle() { + $this->lock_process(); + + do { + $batch = $this->get_batch(); + + foreach ( $batch->data as $key => $value ) { + $task = $this->task( $value ); + + if ( false !== $task ) { + $batch->data[ $key ] = $task; + } else { + unset( $batch->data[ $key ] ); + } + + if ( $this->time_exceeded() || $this->memory_exceeded() || $this->is_process_cancelled() ) { + // Batch limits reached. + break; + } + } + + // Update or delete current batch. + if ( ! empty( $batch->data ) && ! $this->is_process_cancelled() ) { + $this->update( $batch->key, $batch->data ); + } else { + $this->delete( $batch->key ); + } + } while ( ! $this->time_exceeded() && ! $this->memory_exceeded() && ! $this->is_queue_empty() && ! $this->is_process_cancelled() ); + + $this->unlock_process(); + + // Start next batch or complete process. + if ( ! $this->is_queue_empty() ) { + $this->dispatch(); + } else { + $this->complete(); + } + + wp_die(); + } + + /** + * Memory exceeded + * + * Ensures the batch process never exceeds 90% + * of the maximum WordPress memory. + * + * @return bool + */ + protected function memory_exceeded() { + $memory_limit = $this->get_memory_limit() * 0.9; // 90% of max memory + $current_memory = memory_get_usage( true ); + $return = false; + + if ( $current_memory >= $memory_limit ) { + $return = true; + } + + return apply_filters( $this->identifier . '_memory_exceeded', $return ); + } + + /** + * Get memory limit + * + * @return int + */ + protected function get_memory_limit() { + if ( function_exists( 'ini_get' ) ) { + $memory_limit = ini_get( 'memory_limit' ); + } else { + // Sensible default. + $memory_limit = '128M'; + } + + if ( ! $memory_limit || -1 === intval( $memory_limit ) ) { + // Unlimited, set to 32GB. + $memory_limit = '32000M'; + } + + return wp_convert_hr_to_bytes( $memory_limit ); + } + + /** + * Time exceeded. + * + * Ensures the batch never exceeds a sensible time limit. + * A timeout limit of 30s is common on shared hosting. + * + * @return bool + */ + protected function time_exceeded() { + $finish = $this->start_time + apply_filters( $this->identifier . '_default_time_limit', 20 ); // 20 seconds + $return = false; + + if ( time() >= $finish ) { + $return = true; + } + + return apply_filters( $this->identifier . '_time_exceeded', $return ); + } + + /** + * Complete. + * + * Override if applicable, but ensure that the below actions are + * performed, or, call parent::complete(). + */ + protected function complete() { + // Unschedule the cron healthcheck. + $this->clear_scheduled_event(); + + \rocket_direct_filesystem()->delete( WP_ROCKET_CACHE_ROOT_PATH . '.' . $this->identifier . '_process_cancelled' ); + } + + /** + * Schedule cron healthcheck + * + * @param mixed $schedules Schedules. + * + * @return mixed + */ + public function schedule_cron_healthcheck( $schedules ) { + $interval = apply_filters( $this->identifier . '_cron_interval', 5 ); + + if ( property_exists( $this, 'cron_interval' ) ) { + $interval = apply_filters( $this->identifier . '_cron_interval', $this->cron_interval ); + } + + // Adds every 5 minutes to the existing schedules. + $schedules[ $this->identifier . '_cron_interval' ] = array( + 'interval' => MINUTE_IN_SECONDS * $interval, + 'display' => sprintf( __( 'Every %d Minutes' ), $interval ), + ); + + return $schedules; + } + + /** + * Handle cron healthcheck + * + * Restart the background process if not already running + * and data exists in the queue. + */ + public function handle_cron_healthcheck() { + if ( $this->is_process_running() ) { + // Background process already running. + exit; + } + + if ( $this->is_queue_empty() ) { + // No data to process. + $this->clear_scheduled_event(); + exit; + } + + $this->handle(); + + exit; + } + + /** + * Schedule event + */ + protected function schedule_event() { + if ( ! wp_next_scheduled( $this->cron_hook_identifier ) ) { + wp_schedule_event( time(), $this->cron_interval_identifier, $this->cron_hook_identifier ); + } + } + + /** + * Clear scheduled event + */ + protected function clear_scheduled_event() { + $timestamp = wp_next_scheduled( $this->cron_hook_identifier ); + + if ( $timestamp ) { + wp_unschedule_event( $timestamp, $this->cron_hook_identifier ); + } + } + + /** + * Cancel Process + * + * Stop processing queue items, clear cronjob and delete batch. + * + */ + public function cancel_process() { + if ( ! $this->is_queue_empty() ) { + $batch = $this->get_batch(); + $this->delete( $batch->key ); + $this->unlock_process(); + wp_clear_scheduled_hook( $this->cron_hook_identifier ); + + \rocket_direct_filesystem()->touch( WP_ROCKET_CACHE_ROOT_PATH . '.' . $this->identifier . '_process_cancelled' ); + } + + } + + /** + * Task + * + * Override this method to perform any actions required on each + * queue item. Return the modified item for further processing + * in the next pass through. Or, return false to remove the + * item from the queue. + * + * @param mixed $item Queue item to iterate over. + * + * @return mixed + */ + abstract protected function task( $item ); + +} diff --git a/wp-content/plugins/wp-rocket/inc/classes/event-management/class-event-manager.php b/wp-content/plugins/wp-rocket/inc/classes/event-management/class-event-manager.php new file mode 100644 index 0000000..9204a66 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/classes/event-management/class-event-manager.php @@ -0,0 +1,135 @@ + + */ +class Event_Manager { + /** + * Adds a callback to a specific hook of the WordPress plugin API. + * + * @uses add_filter() + * + * @param string $hook_name Name of the hook. + * @param callable $callback Callback function. + * @param int $priority Priority. + * @param int $accepted_args Number of arguments. + */ + public function add_callback( $hook_name, $callback, $priority = 10, $accepted_args = 1 ) { + add_filter( $hook_name, $callback, $priority, $accepted_args ); + } + + /** + * Add an event subscriber. + * + * The event manager registers all the hooks that the given subscriber + * wants to register with the WordPress Plugin API. + * + * @param Subscriber_Interface $subscriber Subscriber_Interface implementation. + */ + public function add_subscriber( Subscriber_Interface $subscriber ) { + if ( $subscriber instanceof Event_Manager_Aware_Subscriber_Interface ) { + $subscriber->set_event_manager( $this ); + } + + $events = $subscriber->get_subscribed_events(); + + if ( empty( $events ) ) { + return; + } + + foreach ( $subscriber->get_subscribed_events() as $hook_name => $parameters ) { + $this->add_subscriber_callback( $subscriber, $hook_name, $parameters ); + } + } + + /** + * Checks the WordPress plugin API to see if the given hook has + * the given callback. The priority of the callback will be returned + * or false. If no callback is given will return true or false if + * there's any callbacks registered to the hook. + * + * @uses has_filter() + * + * @param string $hook_name Hook name. + * @param mixed $callback Callback. + * + * @return bool|int + */ + public function has_callback( $hook_name, $callback = false ) { + return has_filter( $hook_name, $callback ); + } + + /** + * Removes the given callback from the given hook. The WordPress plugin API only + * removes the hook if the callback and priority match a registered hook. + * + * @uses remove_filter() + * + * @param string $hook_name Hook name. + * @param callable $callback Callback. + * @param int $priority Priority. + * + * @return bool + */ + public function remove_callback( $hook_name, $callback, $priority = 10 ) { + return remove_filter( $hook_name, $callback, $priority ); + } + + /** + * Remove an event subscriber. + * + * The event manager removes all the hooks that the given subscriber + * wants to register with the WordPress Plugin API. + * + * @param Subscriber_Interface $subscriber Subscriber_Interface implementation. + */ + public function remove_subscriber( Subscriber_Interface $subscriber ) { + foreach ( $subscriber->get_subscribed_events() as $hook_name => $parameters ) { + $this->remove_subscriber_callback( $subscriber, $hook_name, $parameters ); + } + } + + /** + * Adds the given subscriber's callback to a specific hook + * of the WordPress plugin API. + * + * @param Subscriber_Interface $subscriber Subscriber_Interface implementation. + * @param string $hook_name Hook name. + * @param mixed $parameters Parameters, can be a string, an array or a multidimensional array. + */ + private function add_subscriber_callback( Subscriber_Interface $subscriber, $hook_name, $parameters ) { + if ( is_string( $parameters ) ) { + $this->add_callback( $hook_name, [ $subscriber, $parameters ] ); + } elseif ( is_array( $parameters ) && count( $parameters ) !== count( $parameters, COUNT_RECURSIVE ) ) { + foreach ( $parameters as $parameter ) { + $this->add_subscriber_callback( $subscriber, $hook_name, $parameter ); + } + } elseif ( is_array( $parameters ) && isset( $parameters[0] ) ) { + $this->add_callback( $hook_name, [ $subscriber, $parameters[0] ], isset( $parameters[1] ) ? $parameters[1] : 10, isset( $parameters[2] ) ? $parameters[2] : 1 ); + } + } + + /** + * Removes the given subscriber's callback to a specific hook + * of the WordPress plugin API. + * + * @param Subscriber_Interface $subscriber Subscriber_Interface implementation. + * @param string $hook_name Hook name. + * @param mixed $parameters Parameters, can be a string, an array or a multidimensional array. + */ + private function remove_subscriber_callback( Subscriber_Interface $subscriber, $hook_name, $parameters ) { + if ( is_string( $parameters ) ) { + $this->remove_callback( $hook_name, [ $subscriber, $parameters ] ); + } elseif ( is_array( $parameters ) && count( $parameters ) !== count( $parameters, COUNT_RECURSIVE ) ) { + foreach ( $parameters as $parameter ) { + $this->remove_subscriber_callback( $subscriber, $hook_name, $parameter ); + } + } elseif ( is_array( $parameters ) && isset( $parameters[0] ) ) { + $this->remove_callback( $hook_name, [ $subscriber, $parameters[0] ], isset( $parameters[1] ) ? $parameters[1] : 10 ); + } + } +} diff --git a/wp-content/plugins/wp-rocket/inc/classes/event-management/event-manager-aware-subscriber-interface.php b/wp-content/plugins/wp-rocket/inc/classes/event-management/event-manager-aware-subscriber-interface.php new file mode 100644 index 0000000..cfa12ce --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/classes/event-management/event-manager-aware-subscriber-interface.php @@ -0,0 +1,14 @@ + + */ +interface Subscriber_Interface { + /** + * Returns an array of events that this subscriber wants to listen to. + * + * The array key is the event name. The value can be: + * + * * The method name + * * An array with the method name and priority + * * An array with the method name, priority and number of accepted arguments + * + * For instance: + * + * * array('hook_name' => 'method_name') + * * array('hook_name' => array('method_name', $priority)) + * * array('hook_name' => array('method_name', $priority, $accepted_args)) + * * array('hook_name' => array(array('method_name_1', $priority_1, $accepted_args_1)), array('method_name_2', $priority_2, $accepted_args_2))) + * + * @return array + */ + public static function get_subscribed_events(); +} diff --git a/wp-content/plugins/wp-rocket/inc/classes/interfaces/class-render-interface.php b/wp-content/plugins/wp-rocket/inc/classes/interfaces/class-render-interface.php new file mode 100644 index 0000000..1e4cb46 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/classes/interfaces/class-render-interface.php @@ -0,0 +1,21 @@ +addTitle( $record['level_name'], $record['level'] ); + $output .= ''; + + $output .= $this->addRow( 'Message', (string) $record['message'] ); + $output .= $this->addRow( 'Time', $record['datetime']->format( $this->dateFormat ) ); // phpcs:ignore WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase + + if ( $record['context'] ) { + $embedded_table = '
    '; + + foreach ( $record['context'] as $key => $value ) { + $embedded_table .= $this->addRow( $key, $this->convertToString( $value ) ); + } + + $embedded_table .= '
    '; + $output .= $this->addRow( 'Context', $embedded_table, false ); + } + + if ( $record['extra'] ) { + $embedded_table = ''; + + foreach ( $record['extra'] as $key => $value ) { + $embedded_table .= $this->addRow( $key, $this->convertToString( $value ) ); + } + + $embedded_table .= '
    '; + $output .= $this->addRow( 'Extra', $embedded_table, false ); + } + + return $output . ''; + } +} diff --git a/wp-content/plugins/wp-rocket/inc/classes/logger/class-logger.php b/wp-content/plugins/wp-rocket/inc/classes/logger/class-logger.php new file mode 100644 index 0000000..416d8be --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/classes/logger/class-logger.php @@ -0,0 +1,557 @@ +debug( $message, $context ) : null; + } + + /** + * Adds a log record at the INFO level. + * + * @since 3.1.4 + * @access public + * @author Grégory Viguier + * + * @param string $message The log message. + * @param array $context The log context. + * @return bool|null Whether the record has been processed. + */ + public static function info( $message, array $context = [] ) { + return static::debug_enabled() ? static::get_logger()->info( $message, $context ) : null; + } + + /** + * Adds a log record at the NOTICE level. + * + * @since 3.1.4 + * @access public + * @author Grégory Viguier + * + * @param string $message The log message. + * @param array $context The log context. + * @return bool|null Whether the record has been processed. + */ + public static function notice( $message, array $context = [] ) { + return static::debug_enabled() ? static::get_logger()->notice( $message, $context ) : null; + } + + /** + * Adds a log record at the WARNING level. + * + * @since 3.1.4 + * @access public + * @author Grégory Viguier + * + * @param string $message The log message. + * @param array $context The log context. + * @return bool|null Whether the record has been processed. + */ + public static function warning( $message, array $context = [] ) { + return static::debug_enabled() ? static::get_logger()->warning( $message, $context ) : null; + } + + /** + * Adds a log record at the ERROR level. + * + * @since 3.1.4 + * @access public + * @author Grégory Viguier + * + * @param string $message The log message. + * @param array $context The log context. + * @return bool|null Whether the record has been processed. + */ + public static function error( $message, array $context = [] ) { + return static::debug_enabled() ? static::get_logger()->error( $message, $context ) : null; + } + + /** + * Adds a log record at the CRITICAL level. + * + * @since 3.1.4 + * @access public + * @author Grégory Viguier + * + * @param string $message The log message. + * @param array $context The log context. + * @return bool|null Whether the record has been processed. + */ + public static function critical( $message, array $context = [] ) { + return static::debug_enabled() ? static::get_logger()->critical( $message, $context ) : null; + } + + /** + * Adds a log record at the ALERT level. + * + * @since 3.1.4 + * @access public + * @author Grégory Viguier + * + * @param string $message The log message. + * @param array $context The log context. + * @return bool|null Whether the record has been processed. + */ + public static function alert( $message, array $context = [] ) { + return static::debug_enabled() ? static::get_logger()->alert( $message, $context ) : null; + } + + /** + * Adds a log record at the EMERGENCY level. + * + * @since 3.1.4 + * @access public + * @author Grégory Viguier + * + * @param string $message The log message. + * @param array $context The log context. + * @return bool|null Whether the record has been processed. + */ + public static function emergency( $message, array $context = [] ) { + return static::debug_enabled() ? static::get_logger()->emergency( $message, $context ) : null; + } + + /** + * Get the logger instance. + * + * @since 3.1.4 + * @access public + * @author Grégory Viguier + * + * @return Logger A Logger instance. + */ + public static function get_logger() { + $logger_name = static::LOGGER_NAME; + $log_level = Monologger::DEBUG; + + if ( Registry::hasLogger( $logger_name ) ) { + return Registry::$logger_name(); + } + + /** + * File handler. + * HTML formatter is used. + */ + $handler = new StreamHandler( static::get_log_file_path(), $log_level ); + $formatter = new HtmlFormatter(); + + $handler->setFormatter( $formatter ); + + /** + * Thanks to the processors, add data to each log: + * - `debug_backtrace()` (exclude this class and Abstract_Buffer). + */ + $trace_processor = new IntrospectionProcessor( $log_level, [ get_called_class(), 'Abstract_Buffer' ] ); + + // Create the logger. + $logger = new Monologger( $logger_name, [ $handler ], [ $trace_processor ] ); + + // Store the logger. + Registry::addLogger( $logger ); + + return $logger; + } + + + /** ----------------------------------------------------------------------------------------- */ + /** LOG FILE ================================================================================ */ + /** ----------------------------------------------------------------------------------------- */ + + /** + * Get the path to the log file. + * + * @since 3.1.4 + * @access public + * @author Grégory Viguier + * + * @return string + */ + public static function get_log_file_path() { + if ( defined( 'WP_ROCKET_DEBUG_LOG_FILE' ) && WP_ROCKET_DEBUG_LOG_FILE && is_string( WP_ROCKET_DEBUG_LOG_FILE ) ) { + // Make sure the file uses a ".log" extension. + return preg_replace( '/\.[^.]*$/', '', WP_ROCKET_DEBUG_LOG_FILE ) . '.log'; + } + + return WP_CONTENT_DIR . '/wp-rocket-config/' . static::LOG_FILE_NAME; + } + + /** + * Get the log file contents. + * + * @since 3.1.4 + * @access public + * @author Grégory Viguier + * + * @return string|object The file contents on success. A WP_Error object on failure. + */ + public static function get_log_file_contents() { + $filesystem = \rocket_direct_filesystem(); + $file_path = static::get_log_file_path(); + + if ( ! $filesystem->exists( $file_path ) ) { + return new \WP_Error( 'no_file', __( 'The log file does not exist.', 'rocket' ) ); + } + + $contents = $filesystem->get_contents( $file_path ); + + if ( false === $contents ) { + return new \WP_Error( 'file_not_read', __( 'The log file could not be read.', 'rocket' ) ); + } + + return $contents; + } + + /** + * Get the log file size and number of entries. + * + * @since 3.1.4 + * @access public + * @author Grégory Viguier + * + * @return array|object An array of statistics on success. A WP_Error object on failure. + */ + public static function get_log_file_stats() { + $formatter = static::get_stream_formatter(); + + if ( ! $formatter ) { + return new \WP_Error( 'no_stream_formatter', __( 'The logs are not saved into a file.', 'rocket' ) ); + } + + $filesystem = \rocket_direct_filesystem(); + $file_path = static::get_log_file_path(); + + if ( ! $filesystem->exists( $file_path ) ) { + return new \WP_Error( 'no_file', __( 'The log file does not exist.', 'rocket' ) ); + } + + $contents = $filesystem->get_contents( $file_path ); + + if ( false === $contents ) { + return new \WP_Error( 'file_not_read', __( 'The log file could not be read.', 'rocket' ) ); + } + + if ( $formatter instanceof HtmlFormatter ) { + $entries = preg_split( '@

    size( $file_path ); + $decimals = $bytes > pow( 1024, 3 ) ? 1 : 0; + $bytes = @size_format( $bytes, $decimals ); + $bytes = str_replace( ' ', ' ', $bytes ); // Non-breaking space character. + + return compact( 'entries', 'bytes' ); + } + + /** + * Get the log file extension related to the formatter in use. This can be used when the file is downloaded. + * + * @since 3.1.4 + * @access public + * @author Grégory Viguier + * + * @return string The corresponding file extension with the heading dot. + */ + public static function get_log_file_extension() { + $formatter = static::get_stream_formatter(); + + if ( ! $formatter ) { + return '.log'; + } + + if ( $formatter instanceof HtmlFormatter ) { + return '.html'; + } + + if ( $formatter instanceof LineFormatter ) { + return '.txt'; + } + + return '.log'; + } + + /** + * Delete the log file. + * + * @since 3.1.4 + * @access public + * @author Grégory Viguier + * + * @return bool True on success. False on failure. + */ + public static function delete_log_file() { + $filesystem = \rocket_direct_filesystem(); + $file_path = static::get_log_file_path(); + + if ( ! $filesystem->exists( $file_path ) ) { + return true; + } + + $filesystem->put_contents( $file_path, '' ); + $filesystem->delete( $file_path, false, 'f' ); + + return ! $filesystem->exists( $file_path ); + } + + /** + * Get the handler used for the log file. + * + * @since 3.2 + * @access public + * @author Grégory Viguier + * + * @return object|bool The formatter object on success. False on failure. + */ + public static function get_stream_handler() { + $handlers = static::get_logger()->getHandlers(); + + if ( ! $handlers ) { + return false; + } + + foreach ( $handlers as $_handler ) { + if ( $_handler instanceof MonoStreamHandler ) { + $handler = $_handler; + break; + } + } + + if ( empty( $handler ) ) { + return false; + } + + return $handler; + } + + /** + * Get the formatter used for the log file. + * + * @since 3.1.4 + * @access public + * @author Grégory Viguier + * + * @return object|bool The formatter object on success. False on failure. + */ + public static function get_stream_formatter() { + $handler = static::get_stream_handler(); + + if ( empty( $handler ) ) { + return false; + } + + return $handler->getFormatter(); + } + + + /** ----------------------------------------------------------------------------------------- */ + /** CONSTANT ================================================================================ */ + /** ----------------------------------------------------------------------------------------- */ + + /** + * Tell if debug is enabled. + * + * @since 3.1.4 + * @access public + * @author Grégory Viguier + * + * @return bool + */ + public static function debug_enabled() { + return defined( 'WP_ROCKET_DEBUG' ) && WP_ROCKET_DEBUG; + } + + /** + * Enable debug mode by adding a constant in the `wp-config.php` file. + * + * @since 3.1.4 + * @access public + * @author Grégory Viguier + */ + public static function enable_debug() { + static::define_debug( true ); + } + + /** + * Disable debug mode by removing the constant in the `wp-config.php` file. + * + * @since 3.1.4 + * @access public + * @author Grégory Viguier + */ + public static function disable_debug() { + static::define_debug( false ); + } + + /** + * Enable or disable debug mode by adding or removing a constant in the `wp-config.php` file. + * + * @since 3.1.4 + * @access public + * @author Grégory Viguier + * + * @param bool $enable True to enable debug, false to disable. + */ + public static function define_debug( $enable ) { + if ( $enable && static::debug_enabled() ) { + // Debug is already enabled. + return; + } + + if ( ! $enable && ! static::debug_enabled() ) { + // Debug is already disabled. + return; + } + + // Get the path to the file. + $file_path = \rocket_find_wpconfig_path(); + + if ( ! $file_path ) { + // Couldn't get the path to the file. + return; + } + + // Get the content of the file. + $filesystem = \rocket_direct_filesystem(); + $content = $filesystem->get_contents( $file_path ); + + if ( false === $content ) { + // Cound't get the content of the file. + return; + } + + // Remove previous value. + $placeholder = '## WP_ROCKET_DEBUG placeholder ##'; + $content = preg_replace( '@^[\t ]*define\s*\(\s*["\']WP_ROCKET_DEBUG["\'].*$@miU', $placeholder, $content ); + $content = preg_replace( "@\n$placeholder@", '', $content ); + + if ( $enable ) { + // Add the constant. + $define = "define( 'WP_ROCKET_DEBUG', true ); // Added by WP Rocket.\r\n"; + $content = preg_replace( '@<\?php\s*@i', "put_contents( $file_path, $content, $chmod ); + } + + + /** ----------------------------------------------------------------------------------------- */ + /** TOOLS =================================================================================== */ + /** ----------------------------------------------------------------------------------------- */ + + /** + * Get the thread identifier. + * + * @since 3.3 + * @access public + * @author Grégory Viguier + * + * @return string + */ + public static function get_thread_id() { + if ( ! isset( self::$thread_id ) ) { + self::$thread_id = uniqid( '', true ); + } + + return self::$thread_id; + } + + /** + * Remove cookies related to WP auth. + * + * @since 3.1.4 + * @access public + * @author Grégory Viguier + * + * @param array $cookies An array of cookies. + * @return array + */ + public static function remove_auth_cookies( $cookies = [] ) { + if ( ! $cookies || ! is_array( $cookies ) ) { + $cookies = $_COOKIE; + } + + unset( $cookies['wordpress_test_cookie'] ); + + if ( ! $cookies ) { + return []; + } + + $pattern = strtolower( '@^WordPress(?:user|pass|_sec|_logged_in)?_@' ); // Trolling PHPCS. + + foreach ( $cookies as $cookie_name => $value ) { + if ( preg_match( $pattern, $cookie_name ) ) { + $cookies[ $cookie_name ] = 'Value removed by WP Rocket.'; + } + } + + return $cookies; + } +} diff --git a/wp-content/plugins/wp-rocket/inc/classes/logger/class-stream-handler.php b/wp-content/plugins/wp-rocket/inc/classes/logger/class-stream-handler.php new file mode 100644 index 0000000..317d762 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/classes/logger/class-stream-handler.php @@ -0,0 +1,154 @@ +create_htaccess_file(); + } + + /** + * Create a .htaccess file in the log folder, to prevent direct access and directory listing. + * + * @since 3.2 + * @access protected + * @throws \UnexpectedValueException When the .htaccess file could not be created. + * @author Grégory Viguier + * + * @return bool True if the file exists or has been created. False on failure. + */ + public function create_htaccess_file() { + if ( $this->htaccess_exists ) { + return true; + } + + if ( $this->has_error ) { + return false; + } + + $dir = $this->get_dir_from_stream( $this->url ); + + if ( ! $dir || ! is_dir( $dir ) ) { + $this->has_error = true; + return false; + } + + $file_path = $dir . '/.htaccess'; + + if ( file_exists( $file_path ) ) { + $this->htaccess_exists = true; + return true; + } + + $this->error_message = null; + + set_error_handler( [ $this, 'custom_error_handler' ] ); // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_set_error_handler + + $file_resource = fopen( $file_path, 'a' ); // phpcs:ignore WordPress.WP.AlternativeFunctions.file_system_read_fopen + + restore_error_handler(); + + if ( ! is_resource( $file_resource ) ) { + $this->has_error = true; + throw new \UnexpectedValueException( sprintf( 'The file "%s" could not be opened: ' . $this->error_message, $file_path ) ); + } + + $new_content = "\nOrder allow,deny\nDeny from all\n\nOptions -Indexes"; + + fwrite( $file_resource, $new_content ); // phpcs:ignore WordPress.WP.AlternativeFunctions.file_system_read_fwrite + fclose( $file_resource ); // phpcs:ignore WordPress.WP.AlternativeFunctions.file_system_read_fclose + @chmod( $file_path, 0644 ); + + $this->htaccess_exists = true; + + return true; + } + + /** + * Temporary error handler that "cleans" the error messages. + * + * @since 3.2 + * @access private + * @see parent::customErrorHandler() + * @author Grégory Viguier + * + * @param int $code Error code. + * @param string $msg Error message. + */ + private function custom_error_handler( $code, $msg ) { + $this->error_message = preg_replace( '{^(fopen|mkdir)\(.*?\): }', '', $msg ); + } + + /** + * A dirname() that also works for streams, by removing the protocol. + * + * @since 3.2 + * @access private + * @see parent::getDirFromStream() + * @author Grégory Viguier + * + * @param string $stream Path to a file. + * @return null|string + */ + private function get_dir_from_stream( $stream ) { + $pos = strpos( $stream, '://' ); + + if ( false === $pos ) { + return dirname( $stream ); + } + + if ( 'file://' === substr( $stream, 0, 7 ) ) { + return dirname( substr( $stream, 7 ) ); + } + } +} diff --git a/wp-content/plugins/wp-rocket/inc/classes/subscriber/Cache/class-expired-cache-purge-subscriber.php b/wp-content/plugins/wp-rocket/inc/classes/subscriber/Cache/class-expired-cache-purge-subscriber.php new file mode 100644 index 0000000..def9030 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/classes/subscriber/Cache/class-expired-cache-purge-subscriber.php @@ -0,0 +1,226 @@ +options = $options; + $this->purge = $purge; + } + + /** + * {@inheritdoc} + */ + public static function get_subscribed_events() { + return [ + 'init' => 'schedule_event', + 'rocket_deactivation' => 'unschedule_event', + static::EVENT_NAME => 'purge_expired_files', + 'cron_schedules' => 'custom_cron_schedule', + 'update_option_' . WP_ROCKET_SLUG => [ 'clean_expired_cache_scheduled_event', 10, 2 ], + ]; + } + + /** + * Clean expired cache scheduled event when Lifespan is changed to minutes. + * + * @since 3.4.3 + * @author Soponar Cristina + * + * @param array $old_value An array of previous values for the settings. + * @param array $value An array of submitted values for the settings. + */ + public function clean_expired_cache_scheduled_event( $old_value, $value ) { + if ( empty( $value['purge_cron_unit'] ) ) { + return; + } + + $old_value['purge_cron_unit'] = isset( $old_value['purge_cron_unit'] ) ? $old_value['purge_cron_unit'] : ''; + + $unit_list = [ 'HOUR_IN_SECONDS', 'DAY_IN_SECONDS' ]; + // Bail out if the cron unit is changed from hours to days. + // Allow clean scheduled event when is changed from Minutes to Hours or Days, or the other way around. + $allow_clear_event = false; + if ( in_array( $old_value['purge_cron_unit'], $unit_list, true ) && 'MINUTE_IN_SECONDS' === $value['purge_cron_unit'] ) { + $allow_clear_event = true; + } + if ( in_array( $value['purge_cron_unit'], $unit_list, true ) && 'MINUTE_IN_SECONDS' === $old_value['purge_cron_unit'] ) { + $allow_clear_event = true; + } + // Allow if interval is changed when unit is set to minutes. + if ( + 'MINUTE_IN_SECONDS' === $old_value['purge_cron_unit'] + && + 'MINUTE_IN_SECONDS' === $value['purge_cron_unit'] + && + $old_value['purge_cron_interval'] !== $value['purge_cron_interval'] + ) { + $allow_clear_event = true; + } + + // Bail out if the cron unit is not changed from minutes to hours / days or other way around. + if ( ! $allow_clear_event ) { + return; + } + $this->unschedule_event(); + } + + /** + * Adds a custom cron schedule based on purge lifespan interval. + * + * @since 3.4.3 + * @access public + * @author Soponar Cristina + * + * @param array $schedules An array of non-default cron schedules. + */ + public function custom_cron_schedule( $schedules ) { + $schedules['rocket_expired_cache_cron_interval'] = [ + 'interval' => $this->get_interval(), + 'display' => __( 'WP Rocket Expired Cache Interval', 'rocket' ), + ]; + + return $schedules; + } + + /** ----------------------------------------------------------------------------------------- */ + /** HOOK CALLBACKS ========================================================================== */ + /** ----------------------------------------------------------------------------------------- */ + + /** + * Scheduling the cron event. + * If the task is not programmed, it is automatically added. + * + * @since 3.4 + * @access public + * @author Grégory Viguier + */ + public function schedule_event() { + if ( $this->get_cache_lifespan() && ! wp_next_scheduled( static::EVENT_NAME ) ) { + $interval = $this->get_interval(); + wp_schedule_event( time() + $interval, 'rocket_expired_cache_cron_interval', static::EVENT_NAME ); + } + } + + /** + * Gets the interval when the scheduled clean cache purge needs to run. + * If Minutes option is selected, then the interval will be set to minutes. + * If Hours / Days options are selected, then it will be set to 1 hour. + * + * @since 3.4.3 + * @access private + * @author Soponar Cristina + * + * @return int $interval Interval time in seconds. + */ + private function get_interval() { + $unit = $this->options->get( 'purge_cron_unit' ); + $lifespan = $this->options->get( 'purge_cron_interval', 10 ); + $interval = HOUR_IN_SECONDS; + + if ( ! $unit || ! defined( $unit ) ) { + $unit = 'HOUR_IN_SECONDS'; + } + if ( 'MINUTE_IN_SECONDS' === $unit ) { + $interval = $lifespan * MINUTE_IN_SECONDS; + } + return $interval; + } + + /** + * Unschedule the event. + * + * @since 3.4 + * @access public + * @author Grégory Viguier + */ + public function unschedule_event() { + wp_clear_scheduled_hook( static::EVENT_NAME ); + } + + /** + * Perform the event action. + * + * @since 3.4 + * @access public + * @author Grégory Viguier + */ + public function purge_expired_files() { + $this->purge->purge_expired_files( $this->get_cache_lifespan() ); + } + + /** + * Get the cache lifespan in seconds. + * If no value is filled in the settings, return 0. It means the purge is disabled. + * If the value from the settings is filled but invalid, fallback to the initial value (10 hours). + * + * @since 3.4 + * @access public + * @author Grégory Viguier + * + * @return int The cache lifespan in seconds. + */ + public function get_cache_lifespan() { + $lifespan = $this->options->get( 'purge_cron_interval' ); + + if ( ! $lifespan ) { + return 0; + } + + $unit = $this->options->get( 'purge_cron_unit' ); + + if ( $lifespan < 0 || ! $unit || ! defined( $unit ) ) { + return 10 * HOUR_IN_SECONDS; + } + + return $lifespan * constant( $unit ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/classes/subscriber/Media/class-webp-subscriber.php b/wp-content/plugins/wp-rocket/inc/classes/subscriber/Media/class-webp-subscriber.php new file mode 100644 index 0000000..55a5321 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/classes/subscriber/Media/class-webp-subscriber.php @@ -0,0 +1,847 @@ +options_data = $options_data; + $this->options_api = $options_api; + $this->cdn_subscriber = $cdn_subscriber; + $this->beacon = $beacon; + + if ( ! isset( $server ) && ! empty( $_SERVER ) && is_array( $_SERVER ) ) { + $server = $_SERVER; + } + + $this->server = $server && is_array( $server ) ? $server : []; + } + + /** + * {@inheritdoc} + */ + public static function get_subscribed_events() { + return [ + 'rocket_buffer' => [ 'convert_to_webp', 16 ], + 'rocket_cache_webp_setting_field' => [ + [ 'maybe_disable_setting_field' ], + [ 'webp_section_description' ], + ], + 'rocket_disable_webp_cache' => 'maybe_disable_webp_cache', + 'rocket_third_party_webp_change' => 'sync_webp_cache_with_third_party_plugins', + 'rocket_homepage_preload_url_request_args' => 'add_accept_header', + 'rocket_preload_after_purge_cache_request_args' => 'add_accept_header', + 'rocket_preload_url_request_args' => 'add_accept_header', + 'rocket_partial_preload_url_request_args' => 'add_accept_header', + ]; + } + + /** ----------------------------------------------------------------------------------------- */ + /** HOOKS =================================================================================== */ + /** ----------------------------------------------------------------------------------------- */ + + /** + * Converts images extension to WebP if the file exists. + * + * @since 3.4 + * @access public + * @author Remy Perona + * @author Grégory Viguier + * + * @param string $html HTML content. + * @return string + */ + public function convert_to_webp( $html ) { + if ( ! $this->options_data->get( 'cache_webp' ) ) { + return $html; + } + + /** This filter is documented in inc/classes/buffer/class-cache.php */ + if ( apply_filters( 'rocket_disable_webp_cache', false ) ) { + return $html; + } + + // Only to supporting browsers. + $http_accept = isset( $this->server['HTTP_ACCEPT'] ) ? $this->server['HTTP_ACCEPT'] : ''; + + if ( ! $http_accept && function_exists( 'apache_request_headers' ) ) { + $headers = apache_request_headers(); + $http_accept = isset( $headers['Accept'] ) ? $headers['Accept'] : ''; + } + + if ( ! $http_accept || false === strpos( $http_accept, 'webp' ) ) { + $user_agent = isset( $this->server['HTTP_USER_AGENT'] ) ? $this->server['HTTP_USER_AGENT'] : ''; + + if ( $user_agent && preg_match( '#Firefox/(?[0-9]{2,})#i', $this->server['HTTP_USER_AGENT'], $matches ) ) { + if ( 66 >= (int) $matches['version'] ) { + return $html; + } + } else { + return $html; + } + } + + $extensions = $this->get_extensions(); + $attribute_names = $this->get_attribute_names(); + + if ( ! $extensions || ! $attribute_names ) { + return $html . ''; + } + + $extensions = implode( '|', $extensions ); + $attribute_names = implode( '|', $attribute_names ); + + if ( ! preg_match_all( '@["\'\s](?(?:data-(?:[a-z0-9_-]+-)?)?(?:' . $attribute_names . '))\s*=\s*["\']\s*(?(?:https?:/)?/[^"\']+\.(?:' . $extensions . ')[^"\']*?)\s*["\']@is', $html, $attributes, PREG_SET_ORDER ) ) { + return $html . ''; + } + + if ( ! isset( $this->filesystem ) ) { + $this->filesystem = \rocket_direct_filesystem(); + } + + $has_hebp = false; + + foreach ( $attributes as $attribute ) { + if ( preg_match( '@srcset$@i', strtolower( $attribute['name'] ) ) ) { + /** + * This is a srcset attribute, with probably multiple URLs. + */ + $new_value = $this->srcset_to_webp( $attribute['value'], $extensions ); + } else { + /** + * A single URL attibute. + */ + $new_value = $this->url_to_webp( $attribute['value'], $extensions ); + } + + if ( ! $new_value ) { + // No webp here. + continue; + } + + // Replace in content. + $has_hebp = true; + $new_attr = preg_replace( '@' . $attribute['name'] . '\s*=\s*["\'][^"\']+["\']@s', $attribute['name'] . '="' . $new_value . '"', $attribute[0] ); + $html = str_replace( $attribute[0], $new_attr, $html ); + } + + /** + * Tell if the page contains webp files. + * + * @since 3.4 + * @author Grégory Viguier + * + * @param bool $has_hebp True if the page contains webp files. False otherwise. + * @param string $html The page’s html contents. + */ + $has_hebp = apply_filters( 'rocket_page_has_hebp_files', $has_hebp, $html ); + + // Tell the cache process if some URLs have been replaced. + if ( $has_hebp ) { + $html .= ''; + } else { + $html .= ''; + } + + return $html; + } + + /** + * Modifies the WebP section description of WP Rocket settings. + * + * @since 3.4 + * @access public + * @author Remy Perona + * @author Grégory Viguier + * + * @param array $cache_webp_field Section description. + * @return string + */ + public function webp_section_description( $cache_webp_field ) { + $webp_beacon = $this->beacon->get_suggest( 'webp' ); + $webp_plugins = $this->get_webp_plugins(); + $serving = []; + $serving_not_compatible = []; + $creating = []; + + if ( $webp_plugins ) { + $is_using_cdn = $this->is_using_cdn(); + + foreach ( $webp_plugins as $plugin ) { + if ( $plugin->is_serving_webp() ) { + if ( $is_using_cdn && ! $plugin->is_serving_webp_compatible_with_cdn() ) { + // Serving WebP using a method not compatible with CDN. + $serving_not_compatible[ $plugin->get_id() ] = $plugin->get_name(); + } else { + // Serving WebP when no CDN or with a method compatible with CDN. + $serving[ $plugin->get_id() ] = $plugin->get_name(); + } + } + if ( $plugin->is_converting_to_webp() ) { + // Generating WebP. + $creating[ $plugin->get_id() ] = $plugin->get_name(); + } + } + } + + if ( $serving ) { + // 5, 8. + $cache_webp_field['helper'] = sprintf( + // Translators: %1$s = plugin name(s), %2$s = opening tag, %3$s = closing tag. + esc_html( _n( 'You are using %1$s to serve WebP images so you do not need to enable this option. If you prefer to have WP Rocket serve WebP for you instead, please disable them from serving in %1$s. %2$sMore info%3$s', 'You are using %1$s to serve WebP images so you do not need to enable this option. If you prefer to have WP Rocket serve WebP for you instead, please disable them from serving in %1$s. %2$sMore info%3$s', count( $serving ), 'rocket' ) ), + esc_html( wp_sprintf_l( '%l', $serving ) ), + '', + '' + ); + + return $cache_webp_field; + } + + /** This filter is documented in inc/classes/buffer/class-cache.php */ + if ( apply_filters( 'rocket_disable_webp_cache', false ) ) { + $cache_webp_field['helper'] = esc_html__( 'WebP cache is disabled by filter.', 'rocket' ); + + return $cache_webp_field; + } + + if ( $serving_not_compatible ) { + if ( ! $this->options_data->get( 'cache_webp' ) ) { + // 6. + $cache_webp_field['helper'] = sprintf( + // Translators: %1$s = plugin name(s), %2$s = opening tag, %3$s = closing tag. + esc_html( _n( 'You are using %1$s to convert images to WebP. If you want WP Rocket to serve them for you, activate this option. %2$sMore info%3$s', 'You are using %1$s to convert images to WebP. If you want WP Rocket to serve them for you, activate this option. %2$sMore info%3$s', count( $serving_not_compatible ), 'rocket' ) ), + esc_html( wp_sprintf_l( '%l', $serving_not_compatible ) ), + '', + '' + ); + + return $cache_webp_field; + } + + // 7. + $cache_webp_field['helper'] = sprintf( + // Translators: %1$s = plugin name(s), %2$s = opening tag, %3$s = closing tag. + esc_html( _n( 'You are using %1$s to convert images to WebP. WP Rocket will create separate cache files to serve your WebP images. %2$sMore info%3$s', 'You are using %1$s to convert images to WebP. WP Rocket will create separate cache files to serve your WebP images. %2$sMore info%3$s', count( $serving_not_compatible ), 'rocket' ) ), + esc_html( wp_sprintf_l( '%l', $serving_not_compatible ) ), + '', + '' + ); + + return $cache_webp_field; + } + + if ( $creating ) { + if ( ! $this->options_data->get( 'cache_webp' ) ) { + // 3. + $cache_webp_field['helper'] = sprintf( + // Translators: %1$s = plugin name(s), %2$s = opening tag, %3$s = closing tag. + esc_html( _n( 'You are using %1$s to convert images to WebP. If you want WP Rocket to serve them for you, activate this option. %2$sMore info%3$s', 'You are using %1$s to convert images to WebP. If you want WP Rocket to serve them for you, activate this option. %2$sMore info%3$s', count( $creating ), 'rocket' ) ), + esc_html( wp_sprintf_l( '%l', $creating ) ), + '', + '' + ); + + return $cache_webp_field; + } + + // 4. + $cache_webp_field['helper'] = sprintf( + // Translators: %1$s = plugin name(s), %2$s = opening tag, %3$s = closing tag. + esc_html( _n( 'You are using %1$s to convert images to WebP. WP Rocket will create separate cache files to serve your WebP images. %2$sMore info%3$s', 'You are using %1$s to convert images to WebP. WP Rocket will create separate cache files to serve your WebP images. %2$sMore info%3$s', count( $creating ), 'rocket' ) ), + esc_html( wp_sprintf_l( '%l', $creating ) ), + '', + '' + ); + + return $cache_webp_field; + } + + if ( ! $this->options_data->get( 'cache_webp' ) ) { + // 1. + if ( rocket_valid_key() && ! \Imagify_Partner::has_imagify_api_key() ) { + $imagify_link = ''; + } else { + // The Imagify page is not displayed. + $imagify_link = ''; + } + + $cache_webp_field['container_class'][] = 'wpr-field--parent'; + $cache_webp_field['helper'] = sprintf( + // Translators: %1$s = opening tag, %2$s = closing tag. + esc_html__( 'You don’t seem to be using a method to create and serve WebP that we are auto-compatible with. If you are not using WebP do not enable this option. %1$sMore info%2$s', 'rocket' ), + '', + '' + ); + $cache_webp_field['warning'] = [ + 'title' => __( 'We have not detected any compatible WebP plugin!', 'rocket' ), + 'description' => sprintf( + // Translators: %1$s and %2$s = opening tags, %3$s = closing tag. + esc_html__( 'If you activate this option WP Rocket will create separate cache files to serve WebP images. Any WebP images you have on your site will be served from these files to compatible browsers. If you don’t already have WebP images on your site consider using %1$sImagify%3$s or another supported plugin. %2$sMore info%3$s', 'rocket' ), + $imagify_link, + '', + '' + ), + 'button_label' => esc_html__( 'Enable WebP caching', 'rocket' ), + ]; + + return $cache_webp_field; + } + + // 2. + $cache_webp_field['helper'] = esc_html__( 'WP Rocket will create separate cache files to serve your WebP images.', 'rocket' ); + + return $cache_webp_field; + } + + /** + * Disable 'cache_webp' setting field if another plugin serves WebP. + * + * @since 3.4 + * @access public + * @author Grégory Viguier + * + * @param array $cache_webp_field Data to be added to the setting field. + * @return array + */ + public function maybe_disable_setting_field( $cache_webp_field ) { + /** This filter is documented in inc/classes/buffer/class-cache.php */ + if ( ! apply_filters( 'rocket_disable_webp_cache', false ) ) { + return $cache_webp_field; + } + + foreach ( [ 'input_attr', 'container_class' ] as $attr ) { + if ( ! isset( $cache_webp_field[ $attr ] ) || ! is_array( $cache_webp_field[ $attr ] ) ) { + $cache_webp_field[ $attr ] = []; + } + } + + $cache_webp_field['input_attr']['disabled'] = 1; + $cache_webp_field['container_class'][] = 'wpr-isDisabled'; + $cache_webp_field['container_class'][] = 'wpr-isParent'; + + return $cache_webp_field; + } + + /** + * Disable the WebP cache if a WebP plugin is in use. + * + * @since 3.4 + * @access public + * @author Grégory Viguier + * + * @param bool $disable_webp_cache True to allow WebP cache (default). False otherwise. + * @return bool + */ + public function maybe_disable_webp_cache( $disable_webp_cache ) { + return ! $disable_webp_cache && $this->get_plugins_serving_webp() ? true : (bool) $disable_webp_cache; + } + + /** + * When a 3rd party plugin enables or disables its webp feature, disable or enable WPR feature accordingly. + * + * @since 3.4 + * @access public + * @author Grégory Viguier + */ + public function sync_webp_cache_with_third_party_plugins() { + if ( $this->options_data->get( 'cache_webp' ) && $this->get_plugins_serving_webp() ) { + // Disable the cache webp option. + $this->options_data->set( 'cache_webp', 0 ); + $this->options_api->set( 'settings', $this->options_data->get_options() ); + } + rocket_generate_config_file(); + } + + /** + * Add WebP to the HTTP_ACCEPT headers on preload request when the WebP option is active + * + * @since 3.4 + * @author Remy Perona + * + * @param array $args Arguments for the request. + * @return array + */ + public function add_accept_header( $args ) { + if ( ! $this->options_data->get( 'cache_webp' ) ) { + return $args; + } + + $args['headers']['Accept'] = 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8'; + $args['headers']['HTTP_ACCEPT'] = 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8'; + + return $args; + } + + /** ----------------------------------------------------------------------------------------- */ + /** TOOLS =================================================================================== */ + /** ----------------------------------------------------------------------------------------- */ + + /** + * Get the list of file extensions that may have a webp version. + * + * @since 3.4 + * @access private + * @author Grégory Viguier + * + * @return array + */ + private function get_extensions() { + $extensions = [ 'jpg', 'jpeg', 'jpe', 'png', 'gif' ]; + + /** + * Filter the list of file extensions that may have a webp version. + * + * @since 3.4 + * @author Grégory Viguier + * + * @param array $extensions An array of file extensions. + */ + $extensions = apply_filters( 'rocket_file_extensions_for_webp', $extensions ); + $extensions = array_filter( + (array) $extensions, + function( $extension ) { + return $extension && is_string( $extension ); + } + ); + + return array_unique( $extensions ); + } + + /** + * Get the names of the HTML attributes where WP Rocket must search for image files. + * + * @since 3.4 + * @access private + * @author Grégory Viguier + * + * @return array + */ + private function get_attribute_names() { + $attributes = [ 'href', 'src', 'srcset', 'content' ]; + + /** + * Filter the names of the HTML attributes where WP Rocket must search for image files. + * Don't prepend new names with `data-`, WPR will do it. For example if you want to add `data-foo-bar`, you only need to add `foo-bar` or `bar` to the list. + * + * @since 3.4 + * @author Grégory Viguier + * + * @param array $attributes An array of HTML attribute names. + */ + $attributes = apply_filters( 'rocket_attributes_for_webp', $attributes ); + $attributes = array_filter( + (array) $attributes, + function( $attributes ) { + return $attributes && is_string( $attributes ); + } + ); + + return array_unique( $attributes ); + } + + /** + * Convert a URL to an absolute path. + * + * @since 3.4 + * @access private + * @author Grégory Viguier + * + * @param string $url URL to convert. + * @return string|bool + */ + private function url_to_path( $url ) { + static $hosts, $site_host, $subdir_levels; + + $url_host = wp_parse_url( $url, PHP_URL_HOST ); + + // Relative path. + if ( null === $url_host ) { + if ( ! isset( $subdir_levels ) ) { + $subdir_levels = substr_count( preg_replace( '@^https?://@', '', site_url() ), '/' ); + } + + if ( $subdir_levels ) { + $url = ltrim( $url, '/' ); + $url = explode( '/', $url ); + array_splice( $url, 0, $subdir_levels ); + $url = implode( '/', $url ); + } + + $url = site_url( $url ); + } + + // CDN. + if ( ! isset( $hosts ) ) { + $hosts = $this->cdn_subscriber->get_cdn_hosts( [], [ 'all', 'images' ] ); + $hosts = array_flip( $hosts ); + } + + if ( isset( $hosts[ $url_host ] ) ) { + if ( ! isset( $site_host ) ) { + $site_host = wp_parse_url( site_url( '/' ), PHP_URL_HOST ); + } + if ( $site_host ) { + $url = preg_replace( '@^(https?://)' . $url_host . '/@', '$1' . $site_host . '/', $url ); + } + } + + // URL to path. + $url = preg_replace( '@^https?:@', '', $url ); + $paths = $this->get_url_to_path_associations(); + + if ( ! $paths ) { + // Uh? + return false; + } + + foreach ( $paths as $asso_url => $asso_path ) { + if ( 0 === strpos( $url, $asso_url ) ) { + $file = str_replace( $asso_url, $asso_path, $url ); + break; + } + } + + if ( empty( $file ) ) { + return false; + } + + /** This filter is documented in inc/functions/formatting.php. */ + return (string) apply_filters( 'rocket_url_to_path', $file, $url ); + } + + /** + * Add a webp extension to a URL. + * + * @since 3.4 + * @access private + * @author Grégory Viguier + * + * @param string $url A URL (I see you're very surprised). + * @param string $extensions Allowed image extensions. + * @return string|bool The same URL with a webp extension if the file exists. False if the webp image doesn't exist. + */ + private function url_to_webp( $url, $extensions ) { + if ( ! preg_match( '@^(?.+\.(?' . $extensions . '))(?(?:\?.*)?)$@i', $url, $src_url ) ) { + // Probably something like "image.jpg.webp". + return false; + } + + $src_path = $this->url_to_path( $src_url['src'] ); + + if ( ! $src_path ) { + return false; + } + + $src_path_webp = preg_replace( '@\.' . $src_url['extension'] . '$@', '.webp', $src_path ); + + if ( $this->filesystem->exists( $src_path_webp ) ) { + // File name: image.jpg => image.webp. + return preg_replace( '@\.' . $src_url['extension'] . '$@', '.webp', $src_url['src'] ) . $src_url['query']; + } + + if ( $this->filesystem->exists( $src_path . '.webp' ) ) { + // File name: image.jpg => image.jpg.webp. + return $src_url['src'] . '.webp' . $src_url['query']; + } + + return false; + } + + /** + * Add webp extension to URLs in a srcset attribute. + * + * @since 3.4 + * @access private + * @author Grégory Viguier + * + * @param array|string $srcset_values Value of a srcset attribute. + * @param string $extensions Allowed image extensions. + * @return string|bool An array similar to $srcset_values, with webp extensions when the files exist. False if no images have webp versions. + */ + private function srcset_to_webp( $srcset_values, $extensions ) { + if ( ! $srcset_values ) { + return false; + } + + if ( ! is_array( $srcset_values ) ) { + $srcset_values = explode( ',', $srcset_values ); + } + + $has_webp = false; + + foreach ( $srcset_values as $i => $srcset_value ) { + $srcset_value = preg_split( '/\s+/', trim( $srcset_value ) ); + + if ( count( $srcset_value ) > 2 ) { + // Not a good idea to have space characters in file name. + $descriptor = array_pop( $srcset_value ); + $srcset_value = [ + 'url' => implode( ' ', $srcset_value ), + 'descriptor' => $descriptor, + ]; + } else { + $srcset_value = [ + 'url' => $srcset_value[0], + 'descriptor' => ! empty( $srcset_value[1] ) ? $srcset_value[1] : '1x', + ]; + } + + $url_webp = $this->url_to_webp( $srcset_value['url'], $extensions ); + + if ( ! $url_webp ) { + $srcset_values[ $i ] = implode( ' ', $srcset_value ); + continue; + } + + $srcset_values[ $i ] = $url_webp . ' ' . $srcset_value['descriptor']; + $has_webp = true; + } + + if ( ! $has_webp ) { + return false; + } + + return implode( ',', $srcset_values ); + } + + /** + * Get a list of URL/path associations. + * URLs are schema-less, starting by a double slash. + * + * @since 3.4 + * @access private + * @author Grégory Viguier + * + * @return array A list of URLs as keys and paths as values. + */ + private function get_url_to_path_associations() { + static $list; + + if ( isset( $list ) ) { + return $list; + } + + $content_url = preg_replace( '@^https?:@', '', content_url( '/' ) ); + $content_dir = trailingslashit( rocket_get_constant( 'WP_CONTENT_DIR' ) ); + $list = [ $content_url => $content_dir ]; + + /** + * Filter the list of URL/path associations. + * The URLs with the most levels must come first. + * + * @since 3.4 + * @author Grégory Viguier + * + * @param array $list The list of URL/path associations. URLs are schema-less, starting by a double slash. + */ + $list = apply_filters( 'rocket_url_to_path_associations', $list ); + $list = array_filter( + $list, + function( $path, $url ) { + return $path && $url && is_string( $path ) && is_string( $url ); + }, + ARRAY_FILTER_USE_BOTH + ); + + if ( $list ) { + $list = array_unique( $list ); + } + + return $list; + } + + /** + * Get a list of plugins that serve webp images on frontend. + * If the CDN is used, this won't list plugins that use a technique not compatible with CDN. + * + * @since 3.4 + * @access private + * @author Grégory Viguier + * + * @return array The WebP plugin names. + */ + private function get_plugins_serving_webp() { + $webp_plugins = $this->get_webp_plugins(); + + if ( ! $webp_plugins ) { + // Somebody probably messed up. + return []; + } + + $checks = []; + $is_using_cdn = $this->is_using_cdn(); + + foreach ( $webp_plugins as $plugin ) { + if ( $is_using_cdn && $plugin->is_serving_webp_compatible_with_cdn() ) { + $checks[ $plugin->get_id() ] = $plugin->get_name(); + } elseif ( ! $is_using_cdn && $plugin->is_serving_webp() ) { + $checks[ $plugin->get_id() ] = $plugin->get_name(); + } + } + + return $checks; + } + + /** + * Get a list of active plugins that convert and/or serve webp images. + * + * @since 3.4 + * @access private + * @author Grégory Viguier + * + * @return array An array of Webp_Interface objects. + */ + private function get_webp_plugins() { + /** + * Add Webp plugins. + * + * @since 3.4 + * @author Grégory Viguier + * + * @param array $webp_plugins An array of Webp_Interface objects. + */ + $webp_plugins = (array) apply_filters( 'rocket_webp_plugins', [] ); + + if ( ! $webp_plugins ) { + // Somebody probably messed up. + return []; + } + + foreach ( $webp_plugins as $i => $plugin ) { + if ( ! is_a( $plugin, '\WP_Rocket\Subscriber\Third_Party\Plugins\Images\Webp\Webp_Interface' ) ) { + unset( $webp_plugins[ $i ] ); + continue; + } + if ( ! $this->is_plugin_active( $plugin->get_basename() ) ) { + unset( $webp_plugins[ $i ] ); + continue; + } + } + + return $webp_plugins; + } + + /** + * Tell if a plugin is active. + * + * @since 3.4 + * @access public + * @see \plugin_basename() + * @author Grégory Viguier + * + * @param string $plugin_basename A plugin basename. + * @return bool + */ + private function is_plugin_active( $plugin_basename ) { + if ( \doing_action( 'deactivate_' . $plugin_basename ) ) { + return false; + } + + if ( \doing_action( 'activate_' . $plugin_basename ) ) { + return true; + } + + return \rocket_is_plugin_active( $plugin_basename ); + } + + /** + * Tell if WP Rocket uses a CDN for images. + * + * @since 3.4 + * @access private + * @author Grégory Viguier + * + * @return bool + */ + private function is_using_cdn() { + // Don't use `$this->options_data->get( 'cdn' )` here, we need an up-to-date value when the CDN option changes. + $use = get_rocket_option( 'cdn' ) && $this->cdn_subscriber->get_cdn_hosts( [], [ 'all', 'images' ] ); + /** + * Filter whether WP Rocket is using a CDN for webp images. + * + * @since 3.4 + * @author Grégory Viguier + * + * @param bool $use True if WP Rocket is using a CDN for webp images. False otherwise. + */ + return (bool) apply_filters( 'rocket_webp_is_using_cdn', $use ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/classes/subscriber/Optimization/class-buffer-subscriber.php b/wp-content/plugins/wp-rocket/inc/classes/subscriber/Optimization/class-buffer-subscriber.php new file mode 100644 index 0000000..2dbddcf --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/classes/subscriber/Optimization/class-buffer-subscriber.php @@ -0,0 +1,49 @@ +optimizer = $optimizer; + } + + /** + * {@inheritdoc} + */ + public static function get_subscribed_events() { + return [ + 'template_redirect' => [ 'start_content_process', 2 ], + ]; + } + + /** + * Start buffering the page content and apply optimizations if we can. + * + * @since 3.3 + * @access public + * @author Grégory Viguier + */ + public function start_content_process() { + return $this->optimizer->maybe_init_process(); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/classes/subscriber/Optimization/class-dequeue-jquery-migrate-subscriber.php b/wp-content/plugins/wp-rocket/inc/classes/subscriber/Optimization/class-dequeue-jquery-migrate-subscriber.php new file mode 100644 index 0000000..ec16fff --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/classes/subscriber/Optimization/class-dequeue-jquery-migrate-subscriber.php @@ -0,0 +1,85 @@ +options = $options; + } + + /** + * {@inheritdoc} + */ + public static function get_subscribed_events() { + return [ + 'wp_default_scripts' => [ 'dequeue_jquery_migrate' ], + ]; + } + + /** + * Dequeue jquery migrate + * + * @since 3.5 + * @author Soponar Cristina + * + * @param WP_Scripts $scripts WP_Scripts instance. + * @return bool|void + */ + public function dequeue_jquery_migrate( $scripts ) { + if ( ! $this->is_allowed() ) { + return false; + } + + if ( ! empty( $scripts->registered['jquery'] ) ) { + $jquery_dependencies = $scripts->registered['jquery']->deps; + $scripts->registered['jquery']->deps = array_diff( $jquery_dependencies, [ 'jquery-migrate' ] ); + } + } + + /** + * Check if dequeue jquery migrate option is enabled + * + * @since 3.5 + * @author Soponar Cristina + * + * @return boolean + */ + protected function is_allowed() { + if ( rocket_get_constant( 'DONOTROCKETOPTIMIZE', false ) ) { + return false; + } + + if ( ! $this->options->get( 'dequeue_jquery_migrate' ) ) { + return false; + } + + return true; + } +} diff --git a/wp-content/plugins/wp-rocket/inc/classes/subscriber/Plugin/class-information-subscriber.php b/wp-content/plugins/wp-rocket/inc/classes/subscriber/Plugin/class-information-subscriber.php new file mode 100644 index 0000000..702024c --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/classes/subscriber/Plugin/class-information-subscriber.php @@ -0,0 +1,161 @@ +plugin_slug = $this->get_plugin_slug( $args['plugin_file'] ); + } + if ( isset( $args['api_url'] ) ) { + $this->api_url = $args['api_url']; + } + } + + /** + * {@inheritdoc} + */ + public static function get_subscribed_events() { + return [ + 'plugins_api' => [ 'exclude_rocket_from_wp_info', 10, 3 ], + 'plugins_api_result' => [ 'add_rocket_info', 10, 3 ], + ]; + } + + /** ----------------------------------------------------------------------------------------- */ + /** PLUGIN INFO ============================================================================= */ + /** ----------------------------------------------------------------------------------------- */ + + /** + * Don’t ask for plugin info to the repository. + * + * @since 3.3.6 + * @access public + * @see plugins_api() + * @author Grégory Viguier + * + * @param false|object|array $bool The result object or array. Default false. + * @param string $action The type of information being requested from the Plugin Install API. + * @param object $args Plugin API arguments. + * @return false|object|array Empty object if slug is WP Rocket, default value otherwise. + */ + public function exclude_rocket_from_wp_info( $bool, $action, $args ) { + if ( ! $this->is_requesting_rocket_info( $action, $args ) ) { + return $bool; + } + return new \stdClass(); + } + + /** + * Insert WP Rocket plugin info. + * + * @since 3.3.6 + * @access public + * @see plugins_api() + * @author Grégory Viguier + * + * @param object|\WP_Error $res Response object or WP_Error. + * @param string $action The type of information being requested from the Plugin Install API. + * @param object $args Plugin API arguments. + * @return object|\WP_Error Updated response object or WP_Error. + */ + public function add_rocket_info( $res, $action, $args ) { + if ( ! $this->is_requesting_rocket_info( $action, $args ) || empty( $res->external ) ) { + return $res; + } + + $request = wp_remote_post( + $this->api_url, + [ + 'timeout' => 30, + 'action' => 'plugin_information', + 'request' => maybe_serialize( $args ), + ] + ); + + if ( is_wp_error( $request ) ) { + return $this->get_request_error( $request->get_error_message() ); + } + + $res = maybe_unserialize( wp_remote_retrieve_body( $request ) ); + $code = wp_remote_retrieve_response_code( $request ); + + if ( 200 !== $code || ! ( is_object( $res ) || is_array( $res ) ) ) { + return $this->get_request_error( wp_remote_retrieve_body( $request ) ); + } + + return $res; + } + + /** ----------------------------------------------------------------------------------------- */ + /** TOOLS =================================================================================== */ + /** ----------------------------------------------------------------------------------------- */ + + /** + * Tell if requesting WP Rocket plugin info. + * + * @since 3.3.6 + * @access private + * @author Grégory Viguier + * + * @param string $action The type of information being requested from the Plugin Install API. + * @param object $args Plugin API arguments. + * @return bool + */ + private function is_requesting_rocket_info( $action, $args ) { + return ( 'query_plugins' === $action || 'plugin_information' === $action ) && isset( $args->slug ) && $args->slug === $this->plugin_slug; + } +} diff --git a/wp-content/plugins/wp-rocket/inc/classes/subscriber/Plugin/class-updater-api-common-subscriber.php b/wp-content/plugins/wp-rocket/inc/classes/subscriber/Plugin/class-updater-api-common-subscriber.php new file mode 100644 index 0000000..46798f6 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/classes/subscriber/Plugin/class-updater-api-common-subscriber.php @@ -0,0 +1,189 @@ +$setting = $args[ $setting ]; + } + } + } + + /** + * {@inheritdoc} + */ + public static function get_subscribed_events() { + return [ + 'http_request_args' => [ 'maybe_set_rocket_user_agent', 10, 2 ], + ]; + } + + /** ----------------------------------------------------------------------------------------- */ + /** HOOKS =================================================================================== */ + /** ----------------------------------------------------------------------------------------- */ + + /** + * Force our user agent header when we hit our URLs. + * + * @since 3.3.6 + * @access public + * + * @param array $request An array of request arguments. + * @param string $url Requested URL. + * @return array An array of requested arguments + */ + public function maybe_set_rocket_user_agent( $request, $url ) { + if ( ! is_string( $url ) ) { + return $request; + } + + if ( $this->api_host && strpos( $url, $this->api_host ) !== false ) { + $request['user-agent'] = sprintf( '%s;%s', $request['user-agent'], $this->get_rocket_user_agent() ); + } + + return $request; + } + + /** ----------------------------------------------------------------------------------------- */ + /** TOOLS =================================================================================== */ + /** ----------------------------------------------------------------------------------------- */ + + /** + * Get the user agent to use when requesting the API. + * + * @since 3.3.6 + * @access protected + * @author Grégory Viguier + * + * @return string WP Rocket user agent + */ + public function get_rocket_user_agent() { + $consumer_key = $this->get_current_option( 'consumer_key' ); + $consumer_email = $this->get_current_option( 'consumer_email' ); + $bonus = $this->plugin_options && $this->plugin_options->get( 'do_beta' ) ? '+' : ''; + $php_version = preg_replace( '@^(\d+\.\d+).*@', '\1', phpversion() ); + + return sprintf( 'WP-Rocket|%s%s|%s|%s|%s|%s;', $this->plugin_version, $bonus, $consumer_key, $consumer_email, esc_url( $this->site_url ), $php_version ); + } + + /** + * Get a plugin option. If the value is currently being posted through the settings page, it is returned instead of the one stored in the database. + * + * @since 3.3.6 + * @access protected + * @author Grégory Viguier + * + * @param string $field_name Name of a plugin option. + * @return string + */ + protected function get_current_option( $field_name ) { + if ( current_user_can( 'rocket_manage_options' ) && wp_verify_nonce( filter_input( INPUT_POST, '_wpnonce' ), $this->settings_nonce_key . '-options' ) ) { + $posted = filter_input( INPUT_POST, $this->settings_slug, FILTER_DEFAULT, FILTER_REQUIRE_ARRAY ); + + if ( ! empty( $posted[ $field_name ] ) && is_string( $posted[ $field_name ] ) ) { + // The value has been posted through the settings page. + return sanitize_text_field( $posted[ $field_name ] ); + } + } + + if ( ! $this->plugin_options ) { + return ''; + } + + $option_value = $this->plugin_options->get( $field_name ); + + if ( $option_value && is_string( $option_value ) ) { + return $option_value; + } + + return ''; + } +} diff --git a/wp-content/plugins/wp-rocket/inc/classes/subscriber/Plugin/class-updater-subscriber.php b/wp-content/plugins/wp-rocket/inc/classes/subscriber/Plugin/class-updater-subscriber.php new file mode 100644 index 0000000..1edabb2 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/classes/subscriber/Plugin/class-updater-subscriber.php @@ -0,0 +1,435 @@ +$setting = $args[ $setting ]; + } + } + } + + /** + * {@inheritdoc} + */ + public static function get_subscribed_events() { + return [ + 'http_request_args' => [ 'exclude_rocket_from_wp_updates', 5, 2 ], + 'pre_set_site_transient_update_plugins' => 'maybe_add_rocket_update_data', + 'deleted_site_transient' => 'maybe_delete_rocket_update_data_cache', + 'wp_rocket_loaded' => 'maybe_force_check', + 'auto_update_plugin' => [ 'disable_auto_updates', 10, 2 ], + ]; + } + + /** ----------------------------------------------------------------------------------------- */ + /** PLUGIN UPDATE DATA ====================================================================== */ + /** ----------------------------------------------------------------------------------------- */ + + /** + * When WP checks plugin versions against the latest versions hosted on WordPress.org, remove WPR from the list. + * + * @since 3.3.6 + * @see wp_update_plugins() + * + * @param array $request An array of HTTP request arguments. + * @param string $url The request URL. + * @return array Updated array of HTTP request arguments. + */ + public function exclude_rocket_from_wp_updates( $request, $url ) { + if ( ! is_string( $url ) ) { + return $request; + } + + if ( ! preg_match( '@^https?://api.wordpress.org/plugins/update-check(/|\?|$)@', $url ) || empty( $request['body']['plugins'] ) ) { + // Not a plugin update request. Stop immediately. + return $request; + } + + /** + * Depending on the API version, the data can have several forms: + * - Can be serialized or JSON encoded, + * - Can be an object of arrays or an object of objects. + */ + $is_serialized = is_serialized( $request['body']['plugins'] ); + $basename = plugin_basename( $this->plugin_file ); + $edited = false; + + if ( $is_serialized ) { + $plugins = maybe_unserialize( $request['body']['plugins'] ); + } else { + $plugins = json_decode( $request['body']['plugins'] ); + } + + if ( ! empty( $plugins->plugins ) ) { + if ( is_object( $plugins->plugins ) ) { + if ( isset( $plugins->plugins->$basename ) ) { + unset( $plugins->plugins->$basename ); + $edited = true; + } + } elseif ( is_array( $plugins->plugins ) ) { + if ( isset( $plugins->plugins[ $basename ] ) ) { + unset( $plugins->plugins[ $basename ] ); + $edited = true; + } + } + } + + if ( ! empty( $plugins->active ) ) { + $active_is_object = is_object( $plugins->active ); + + if ( $active_is_object || is_array( $plugins->active ) ) { + foreach ( $plugins->active as $key => $plugin_basename ) { + if ( $plugin_basename !== $basename ) { + continue; + } + if ( $active_is_object ) { + unset( $plugins->active->$key ); + } else { + unset( $plugins->active[ $key ] ); + } + $edited = true; + break; + } + } + } + + if ( $edited ) { + if ( $is_serialized ) { + $request['body']['plugins'] = maybe_serialize( $plugins ); + } else { + $request['body']['plugins'] = wp_json_encode( $plugins ); + } + } + + return $request; + } + + /** + * Add WPR update data to the "WP update" transient. + * + * @since 3.3.6 + * + * @param \stdClass $transient_value New value of site transient. + * @return \stdClass + */ + public function maybe_add_rocket_update_data( $transient_value ) { + if ( defined( 'WP_INSTALLING' ) ) { + return $transient_value; + } + + // Get the remote version data. + $remote_data = $this->get_cached_latest_version_data(); + + if ( is_wp_error( $remote_data ) ) { + return $transient_value; + } + + // Make sure the transient value is well formed. + if ( ! is_object( $transient_value ) ) { + $transient_value = new \stdClass(); + } + + if ( empty( $transient_value->response ) ) { + $transient_value->response = []; + } + + if ( empty( $transient_value->checked ) ) { + $transient_value->checked = []; + } + + // If a newer version is available, add the update. + if ( version_compare( $this->plugin_version, $remote_data->new_version, '<' ) ) { + $transient_value->response[ $remote_data->plugin ] = $remote_data; + } + + $transient_value->checked[ $remote_data->plugin ] = $this->plugin_version; + + return $transient_value; + } + + /** + * Delete WPR update data cache when the "WP update" transient is deleted. + * + * @since 3.3.6 + * + * @param string $transient_name Deleted transient name. + */ + public function maybe_delete_rocket_update_data_cache( $transient_name ) { + if ( 'update_plugins' === $transient_name ) { + $this->delete_rocket_update_data_cache(); + } + } + + /** + * If the `rocket_force_update` query arg is set, force WP to refresh the list of plugins to update. + * + * @since 3.3.6 + */ + public function maybe_force_check() { + if ( is_string( filter_input( INPUT_GET, 'rocket_force_update' ) ) ) { + delete_site_transient( 'update_plugins' ); + } + } + + /** + * Disable auto-updates for WP Rocket + * + * @since 3.7.5 + * + * @param bool|null $update Whether to update. The value of null is internally used to detect whether nothing has hooked into this filter. + * @param object $item The update offer. + * @return bool|null + */ + public function disable_auto_updates( $update, $item ) { + if ( 'wp-rocket/wp-rocket.php' === $item->plugin ) { + return false; + } + + return $update; + } + + /** ----------------------------------------------------------------------------------------- */ + /** TOOLS =================================================================================== */ + /** ----------------------------------------------------------------------------------------- */ + + /** + * Get the latest WPR update data from our server. + * + * @since 3.3.6 + * + * @return \stdClass|\WP_Error { + * A \WP_Error object on failure. An object on success: + * + * @type string $slug The plugin slug. + * @type string $plugin The plugin base name. + * @type string $new_version The plugin new version. + * @type string $url URL to the plugin provider. + * @type string $package URL to the zip file of the new version. + * @type array $icons { + * A list of plugin’s icon URLs. + * + * @type string $2x URL to the High-DPI size (png or jpg). Optional. + * @type string $1x URL to the normal icon size (png or jpg). Mandatory. + * @type string $svg URL to the svg version of the icon. Optional. + * } + * } + */ + public function get_latest_version_data() { + $request = wp_remote_get( + $this->api_url, + [ + 'timeout' => 30, + ] + ); + + if ( is_wp_error( $request ) ) { + return $this->get_request_error( + [ + 'error_code' => $request->get_error_code(), + 'response' => $request->get_error_message(), + ] + ); + } + + $res = trim( wp_remote_retrieve_body( $request ) ); + $code = wp_remote_retrieve_response_code( $request ); + + if ( 200 !== $code ) { + /** + * If the response doesn’t have a status 200: it is an error, or there is no new update. + */ + return $this->get_request_error( + [ + 'http_code' => $code, + 'response' => $res, + ] + ); + } + + /** + * This will match: + * - `2.3.4.5-beta1||1.2.3.4-beta2||||||||||||||||||||||||||||||||`: expired license. + * - `2.3.4.5-beta1|https://wp-rocket.me/i-should-write-a-funny-thing-here/wp-rocket_1.2.3.4-beta2.zip|1.2.3.4-beta2`: valid license. + */ + if ( ! preg_match( '@^(?\d+(?:\.\d+){1,3}[^|]*)\|(?(?:http.+\.zip)?)\|(?\d+(?:\.\d+){1,3}[^|]*)(?:\|+)?$@', $res, $match ) ) { + /** + * If the response doesn’t have the right format, it is an error. + */ + return $this->get_request_error( $res ); + } + + $obj = new \stdClass(); + + $obj->slug = $this->get_plugin_slug( $this->plugin_file ); + $obj->plugin = plugin_basename( $this->plugin_file ); + $obj->new_version = $match['user_version']; + $obj->url = $this->vendor_url; + $obj->package = $match['package']; + $obj->tested = WP_ROCKET_WP_VERSION_TESTED; + + if ( $this->icons && ! empty( $this->icons['1x'] ) ) { + $obj->icons = $this->icons; + } + + return $obj; + } + + /** + * Get the cached version of the latest WPR update data. + * + * @since 3.3.6 + * + * @return \stdClass|\WP_Error { + * A \WP_Error object on failure. An object on success: + * + * @type string $slug The plugin slug. + * @type string $plugin The plugin base name. + * @type string $new_version The plugin new version. + * @type string $url URL to the plugin provider. + * @type string $package URL to the zip file of the new version. + * @type array $icons { + * A list of plugin’s icon URLs. + * + * @type string $2x URL to the High-DPI size (png or jpg). Optional. + * @type string $1x URL to the normal icon size (png or jpg). Mandatory. + * @type string $svg URL to the svg version of the icon. Optional. + * } + * } + */ + public function get_cached_latest_version_data() { + static $response; + + if ( isset( $response ) ) { + // "force update" won’t bypass the static cache: only one http request by page load. + return $response; + } + + $force_update = is_string( filter_input( INPUT_GET, 'rocket_force_update' ) ); + + if ( ! $force_update ) { + // No "force update": try to get the result from a transient. + $response = get_site_transient( $this->cache_transient_name ); + + if ( $response && is_object( $response ) ) { + // Got something in cache. + return $response; + } + } + + // Get fresh data. + $response = $this->get_latest_version_data(); + $cache_duration = 12 * HOUR_IN_SECONDS; + + if ( is_wp_error( $response ) ) { + $error_data = $response->get_error_data(); + + if ( ! empty( $error_data['error_code'] ) ) { + // `wp_remote_get()` returned an internal error ('error_code' contains a WP_Error code ). + $cache_duration = HOUR_IN_SECONDS; + } elseif ( ! empty( $error_data['http_code'] ) && $error_data['http_code'] >= 400 ) { + // We got a 4xx or 5xx HTTP error. + $cache_duration = 2 * HOUR_IN_SECONDS; + } + } + + set_site_transient( $this->cache_transient_name, $response, $cache_duration ); + + return $response; + } + + /** + * Delete WP Rocket update data cache. + * + * @since 3.3.6 + */ + public function delete_rocket_update_data_cache() { + delete_site_transient( $this->cache_transient_name ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/classes/subscriber/Tools/class-detect-missing-tags-subscriber.php b/wp-content/plugins/wp-rocket/inc/classes/subscriber/Tools/class-detect-missing-tags-subscriber.php new file mode 100644 index 0000000..2a9fbc7 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/classes/subscriber/Tools/class-detect-missing-tags-subscriber.php @@ -0,0 +1,202 @@ +, wp_footer() and tags are missing. + * + * @since 3.4.2 + * @author Soponar Cristina + */ +class Detect_Missing_Tags_Subscriber implements Subscriber_Interface { + + /** + * Return an array of events that this subscriber wants to listen to. + * + * @since 3.4.2 + * @author Soponar Cristina + * + * @return array + */ + public static function get_subscribed_events() { + return [ + 'admin_notices' => 'rocket_notice_missing_tags', + 'rocket_before_maybe_process_buffer' => 'maybe_missing_tags', + 'wp_rocket_upgrade' => 'delete_transient_after_upgrade', + ]; + } + + /** + * Check if there is a missing or tag + * + * @since 3.4.2 + * @author Soponar Cristina + * + * @param string $html HTML content. + */ + public function maybe_missing_tags( $html ) { + // If there is a redirect the content is empty and can display a false positive notice. + if ( strlen( $html ) <= 255 ) { + return; + } + // If the http response is not 200 do not report missing tags. + if ( http_response_code() !== 200 ) { + return; + } + // If content type is not HTML do not report missing tags. + if ( empty( $_SERVER['content_type'] ) || false === strpos( wp_unslash( $_SERVER['content_type'] ), 'text/html' ) ) { // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized + return; + } + // If the content does not contain HTML Doctype, do not report missing tags. + if ( false === stripos( $html, ', or wp_footer() )', + [ + 'maybe_missing_tags', + 'URI' => $this->get_raw_request_uri(), + ] + ); + + // Remove all comments before testing tags. If or tags are commented this will identify it as a missing tag. + $html = preg_replace( '//', '', $html ); + $missing_tags = []; + if ( false === strpos( $html, '' ) ) { + $missing_tags[] = ''; + Logger::debug( + 'Not found closing tag.', + [ + 'maybe_missing_tags', + 'URI' => $this->get_raw_request_uri(), + ] + ); + } + + if ( false === strpos( $html, '' ) ) { + $missing_tags[] = ''; + Logger::debug( + 'Not found closing tag.', + [ + 'maybe_missing_tags', + 'URI' => $this->get_raw_request_uri(), + ] + ); + } + + if ( did_action( 'wp_footer' ) === 0 ) { + $missing_tags[] = 'wp_footer()'; + Logger::debug( + 'wp_footer() function did not run.', + [ + 'maybe_missing_tags', + 'URI' => $this->get_raw_request_uri(), + ] + ); + } + + if ( ! $missing_tags ) { + return; + } + + $transient = get_transient( 'rocket_notice_missing_tags' ); + $transient = is_array( $transient ) ? $transient : []; + $missing_tags = array_unique( array_merge( $transient, $missing_tags ) ); + + if ( count( $transient ) === count( $missing_tags ) ) { + return; + } + + // Prevent saving the transient if the notice is dismissed. + $boxes = get_user_meta( get_current_user_id(), 'rocket_boxes', true ); + if ( in_array( 'rocket_notice_missing_tags', (array) $boxes, true ) ) { + return; + } + + set_transient( 'rocket_notice_missing_tags', $missing_tags ); + } + + /** + * This notice is displayed if there is a missing required tag or function: , or wp_footer() + * + * @since 3.4.2 + * @author Soponar Cristina + */ + public function rocket_notice_missing_tags() { + $screen = get_current_screen(); + + if ( ! current_user_can( 'rocket_manage_options' ) || 'settings_page_wprocket' !== $screen->id ) { + return; + } + + $boxes = get_user_meta( get_current_user_id(), 'rocket_boxes', true ); + if ( in_array( __FUNCTION__, (array) $boxes, true ) ) { + return; + } + + $notice = get_transient( 'rocket_notice_missing_tags' ); + if ( empty( $notice ) || ! is_array( $notice ) ) { + return; + } + + foreach ( $notice as $i => $tag ) { + $notice[ $i ] = '' . esc_html( $tag ) . ''; + } + + $msg = '' . __( 'WP Rocket: ', 'rocket' ) . ''; + $msg .= sprintf( + /* translators: %1$s = missing tags; */ + esc_html( _n( 'Failed to detect the following requirement in your theme: closing %1$s.', 'Failed to detect the following requirements in your theme: closing %1$s.', count( $notice ), 'rocket' ) ), + // translators: Documentation exists in EN, FR. + wp_sprintf_l( '%l', $notice ) + ); + $msg .= ' ' . sprintf( + /* translators: %1$s = opening link; %2$s = closing link */ + __( 'Read the %1$sdocumentation%2$s for further guidance.', 'rocket' ), + // translators: Documentation exists in EN, FR; use localized URL if applicable. + '', + '' + ); + + \rocket_notice_html( + [ + 'status' => 'info', + 'dismissible' => '', + 'message' => $msg, + 'dismiss_button' => __FUNCTION__, + ] + ); + } + + /** + * Get the request URI. + * + * @since 3.4.2 + * @author Soponar Cristina + * + * @return string + */ + public function get_raw_request_uri() { + if ( ! isset( $_SERVER['REQUEST_URI'] ) ) { + return ''; + } + + if ( '' === $_SERVER['REQUEST_URI'] ) { + return ''; + } + + return '/' . esc_html( ltrim( wp_unslash( $_SERVER['REQUEST_URI'] ), '/' ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized + } + + /** + * Deletes the transient storing the missing tags when updating the plugin + * + * @since 3.4.2.2 + * @author Soponar Cristina + */ + public function delete_transient_after_upgrade() { + delete_transient( 'rocket_notice_missing_tags' ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/classes/subscriber/admin/Database/class-optimization-subscriber.php b/wp-content/plugins/wp-rocket/inc/classes/subscriber/admin/Database/class-optimization-subscriber.php new file mode 100644 index 0000000..5132fa7 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/classes/subscriber/admin/Database/class-optimization-subscriber.php @@ -0,0 +1,265 @@ +optimize = $optimize; + $this->options = $options; + } + + /** + * Return an array of events that this subscriber wants to listen to. + * + * @since 3.3 + * @author Remy Perona + * + * @return array + */ + public static function get_subscribed_events() { + return [ + 'cron_schedules' => 'add_cron_schedule', + 'init' => 'database_optimization_scheduled', + 'rocket_database_optimization_time_event' => 'cron_optimize', + 'pre_update_option_' . WP_ROCKET_SLUG => 'save_optimize', + 'admin_notices' => [ + [ 'notice_process_running' ], + [ 'notice_process_complete' ], + ], + ]; + } + + /** + * Add a new interval for the cron job. + * This adds a weekly/monthly interval for database optimization. + * + * @since 3.4 + * @access public + * @author Grégory Viguier + * + * @param array $schedules An array of intervals used by cron jobs. + * @return array Updated array of intervals. + */ + public function add_cron_schedule( $schedules ) { + if ( ! $this->options->get( 'schedule_automatic_cleanup', false ) ) { + return $schedules; + } + + switch ( $this->options->get( 'automatic_cleanup_frequency', 'weekly' ) ) { + case 'weekly': + $schedules['weekly'] = [ + 'interval' => 604800, + 'display' => __( 'weekly', 'rocket' ), + ]; + break; + case 'monthly': + $schedules['monthly'] = [ + 'interval' => 2592000, + 'display' => __( 'monthly', 'rocket' ), + ]; + break; + } + + return $schedules; + } + + /** + * Plans database optimization cron + * If the task is not programmed, it is automatically triggered + * + * @since 2.8 + * @author Remy Perona + * + * @see process_handler() + */ + public function database_optimization_scheduled() { + if ( ! $this->options->get( 'schedule_automatic_cleanup', false ) ) { + return; + } + + if ( ! wp_next_scheduled( 'rocket_database_optimization_time_event' ) ) { + wp_schedule_event( time(), $this->options->get( 'automatic_cleanup_frequency', 'weekly' ), 'rocket_database_optimization_time_event' ); + } + } + + /** + * Database Optimization cron callback + * + * @since 3.0.4 + * @author Remy Perona + */ + public function cron_optimize() { + $items = array_filter( array_keys( $this->optimize->get_options() ), [ $this->options, 'get' ] ); + + if ( empty( $items ) ) { + return; + } + + $this->optimize->process_handler( $items ); + } + + /** + * Launches the database optimization when the settings are saved with optimize button + * + * @since 2.8 + * @author Remy Perona + * + * @see process_handler() + * + * @param array $value The new, unserialized option value. + * @return array + */ + public function save_optimize( $value ) { + if ( empty( $_POST ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Missing + return $value; + } + + if ( empty( $value ) || ! isset( $value['submit_optimize'] ) ) { + return $value; + } + + unset( $value['submit_optimize'] ); + + if ( ! current_user_can( 'rocket_manage_options' ) ) { + return $value; + } + + $items = []; + $db_options = $this->optimize->get_options(); + + foreach ( $value as $key => $option_value ) { + if ( isset( $db_options[ $key ] ) && 1 === $option_value ) { + $items[] = $key; + } + } + + if ( empty( $items ) ) { + return $value; + } + + $this->optimize->process_handler( $items ); + + return $value; + } + + /** + * This notice is displayed after launching the database optimization process + * + * @since 2.11 + * @author Remy Perona + */ + public function notice_process_running() { + $screen = get_current_screen(); + + if ( ! current_user_can( 'rocket_manage_options' ) ) { + return; + } + + if ( 'settings_page_wprocket' !== $screen->id ) { + return; + } + + $notice = get_transient( 'rocket_database_optimization_process' ); + + if ( ! $notice ) { + return; + } + + \rocket_notice_html( + [ + 'status' => 'info', + 'message' => esc_html__( 'Database optimization process is running', 'rocket' ), + ] + ); + } + + /** + * This notice is displayed when the database optimization process is complete + * + * @since 2.11 + * @author Remy Perona + */ + public function notice_process_complete() { + $screen = get_current_screen(); + + if ( ! current_user_can( 'rocket_manage_options' ) ) { + return; + } + + if ( 'settings_page_wprocket' !== $screen->id ) { + return; + } + + $optimized = get_transient( 'rocket_database_optimization_process_complete' ); + + if ( false === $optimized ) { + return; + } + + $db_options = $this->optimize->get_options(); + delete_transient( 'rocket_database_optimization_process_complete' ); + + $message = esc_html__( 'Database optimization process is complete. Everything was already optimized!', 'rocket' ); + + if ( ! empty( $optimized ) ) { + $message = esc_html__( 'Database optimization process is complete. List of optimized items below:', 'rocket' ); + } + + if ( ! empty( $optimized ) ) { + $message .= '
      '; + foreach ( $optimized as $key => $number ) { + $message .= '
    • ' . + /* translators: %1$d = number of items optimized, %2$s = type of optimization */ + sprintf( esc_html__( '%1$d %2$s optimized.', 'rocket' ), $number, $db_options[ $key ] ) + . '
    • '; + } + $message .= '
    '; + } + + \rocket_notice_html( + [ + 'message' => $message, + ] + ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/classes/subscriber/third-party/Hostings/class-litespeed-subscriber.php b/wp-content/plugins/wp-rocket/inc/classes/subscriber/third-party/Hostings/class-litespeed-subscriber.php new file mode 100644 index 0000000..5992516 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/classes/subscriber/third-party/Hostings/class-litespeed-subscriber.php @@ -0,0 +1,121 @@ + 'litespeed_clean_domain', + 'before_rocket_clean_file' => 'litespeed_clean_file', + 'before_rocket_clean_home' => [ 'litespeed_clean_home', 10, 2 ], + ]; + } + + /** + * Purge Litespeed all domain. + * + * @since 3.4.1 + * @author Soponar Cristina + */ + public function litespeed_clean_domain() { + $this->litespeed_header_purge_all(); + } + + /** + * Purge a specific page + * + * @since 3.4.1 + * @author Soponar Cristina + * + * @param string $url The url to purge. + */ + public function litespeed_clean_file( $url ) { + $this->litespeed_header_purge_url( trailingslashit( $url ) ); + } + + /** + * Purge the homepage and its pagination + * + * @since 3.4.1 + * @author Soponar Cristina + * + * @param string $root The path of home cache file. + * @param string $lang The current lang to purge. + */ + public function litespeed_clean_home( $root, $lang ) { + $home_url = trailingslashit( get_rocket_i18n_home_url( $lang ) ); + $home_pagination_url = $home_url . trailingslashit( $GLOBALS['wp_rewrite']->pagination_base ); + + $this->litespeed_header_purge_url( $home_url ); + $this->litespeed_header_purge_url( $home_pagination_url ); + } + + /** + * Purge Litespeed URL + * + * @since 3.4.1 + * @author Soponar Cristina + * + * @param string $url The URL to purge. + * @return void + */ + public function litespeed_header_purge_url( $url ) { + if ( headers_sent() ) { + Logger::debug( + 'X-LiteSpeed Headers already sent', + [ 'headers_sent' ] + ); + return; + } + + $parse_url = get_rocket_parse_url( $url ); + $path = rtrim( $parse_url['path'], '/' ); + $private_prefix = 'X-LiteSpeed-Purge: ' . $path; + + Logger::debug( + 'X-LiteSpeed', + [ + 'litespeed_header_purge_url', + 'path' => $private_prefix, + ] + ); + + @header( $private_prefix ); + } + + /** + * Purge Litespeed Cache + * + * @since 3.4.1 + * @author Soponar Cristina + * + * @return void + */ + public function litespeed_header_purge_all() { + if ( headers_sent() ) { + return; + } + $private_prefix = 'X-LiteSpeed-Purge: *'; + @header( $private_prefix ); + } + +} diff --git a/wp-content/plugins/wp-rocket/inc/classes/subscriber/third-party/plugins/Images/Webp/class-ewww-subscriber.php b/wp-content/plugins/wp-rocket/inc/classes/subscriber/third-party/plugins/Images/Webp/class-ewww-subscriber.php new file mode 100644 index 0000000..47d3bb4 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/classes/subscriber/third-party/plugins/Images/Webp/class-ewww-subscriber.php @@ -0,0 +1,390 @@ +options = $options; + } + + /** + * {@inheritdoc} + */ + public static function get_subscribed_events() { + return [ + 'rocket_webp_plugins' => 'register', + 'wp_rocket_loaded' => 'load_hooks', + ]; + } + + /** ----------------------------------------------------------------------------------------- */ + /** HOOKS =================================================================================== */ + /** ----------------------------------------------------------------------------------------- */ + + /** + * Launch filters. + * + * @since 3.4 + * @access public + * @author Grégory Viguier + */ + public function load_hooks() { + if ( ! $this->options->get( 'cache_webp' ) ) { + return; + } + + /** + * Every time EWWW is (de)activated, we must "sync" our webp cache option. + */ + if ( did_action( 'activate_' . $this->get_basename() ) ) { + $this->plugin_activation(); + } + if ( did_action( 'deactivate_' . $this->get_basename() ) ) { + $this->plugin_deactivation(); + } + add_action( 'activate_' . $this->get_basename(), [ $this, 'plugin_activation' ], 20 ); + add_action( 'deactivate_' . $this->get_basename(), [ $this, 'plugin_deactivation' ], 20 ); + + if ( ! function_exists( 'ewww_image_optimizer_get_option' ) ) { + return; + } + + /** + * Since Rocket already updates the config file after updating its options, there is no need to do it again if the CDN or zone options change. + * Sadly, we can’t monitor EWWW options accurately to update our config file. + */ + + add_filter( 'rocket_cdn_cnames', [ $this, 'maybe_remove_images_cnames' ], 1000, 2 ); + add_filter( 'rocket_allow_cdn_images', [ $this, 'maybe_remove_images_from_cdn_dropdown' ] ); + + $option_names = [ + 'ewww_image_optimizer_exactdn', + 'ewww_image_optimizer_webp_for_cdn', + ]; + + foreach ( $option_names as $option_name ) { + if ( $this->is_active_for_network() ) { + add_filter( 'add_site_option_' . $option_name, [ $this, 'trigger_webp_change' ] ); + add_filter( 'update_site_option_' . $option_name, [ $this, 'trigger_webp_change' ] ); + add_filter( 'delete_site_option_' . $option_name, [ $this, 'trigger_webp_change' ] ); + } else { + add_filter( 'add_option_' . $option_name, [ $this, 'trigger_webp_change' ] ); + add_filter( 'update_option_' . $option_name, [ $this, 'trigger_webp_change' ] ); + add_filter( 'delete_option_' . $option_name, [ $this, 'trigger_webp_change' ] ); + } + } + } + + /** + * Remove CDN hosts for images if EWWW uses ExactDN. + * + * @since 3.4 + * @access public + * @author Grégory Viguier + * + * @param array $hosts List of CDN URLs. + * @param array $zones List of zones. Default is [ 'all' ]. + * @return array + */ + public function maybe_remove_images_cnames( $hosts, $zones ) { + if ( ! $hosts ) { + return $hosts; + } + if ( ! ewww_image_optimizer_get_option( 'ewww_image_optimizer_exactdn' ) ) { + return $hosts; + } + // EWWW uses ExactDN: WPR CDN should be disabled for images. + if ( ! in_array( 'images', $zones, true ) ) { + // Not asking for images. + return $hosts; + } + if ( ! array_diff( $zones, [ 'all', 'images' ] ) ) { + // This is clearly for images: return an empty list of hosts. + return []; + } + + // We also want other things, like js and css: let's only remove the hosts for 'images'. + $cdn_urls = $this->options->get( 'cdn_cnames', [] ); + + if ( ! $cdn_urls ) { + return $hosts; + } + + // Separate image hosts from the other ones. + $image_hosts = []; + $other_hosts = []; + $cdn_zones = $this->options->get( 'cdn_zone', [] ); + + foreach ( $cdn_urls as $k => $urls ) { + if ( ! in_array( $cdn_zones[ $k ], $zones, true ) ) { + continue; + } + + $urls = explode( ',', $urls ); + $urls = array_map( 'trim', $urls ); + + if ( 'images' === $cdn_zones[ $k ] ) { + foreach ( $urls as $url ) { + $image_hosts[] = $url; + } + } else { + foreach ( $urls as $url ) { + $other_hosts[] = $url; + } + } + } + + // Make sure the image hosts are not also used for other things (duplicate). + $image_hosts = array_diff( $image_hosts, $other_hosts ); + + // Then remove the remaining from the final list. + return array_diff( $hosts, $image_hosts ); + } + + /** + * Maybe remove the images option from the CDN dropdown. + * + * @since 3.4 + * @access public + * @author Grégory Viguier + * + * @param bool $allow true to add the option, false otherwise. + * @return bool + */ + public function maybe_remove_images_from_cdn_dropdown( $allow ) { + if ( ! $allow ) { + return $allow; + } + if ( ! ewww_image_optimizer_get_option( 'ewww_image_optimizer_exactdn' ) ) { + return $allow; + } + + // EWWW uses ExactDN: WPR CDN should be disabled for images. + return false; + } + + /** ----------------------------------------------------------------------------------------- */ + /** PUBLIC TOOLS ============================================================================ */ + /** ----------------------------------------------------------------------------------------- */ + + /** + * Get the plugin name. + * + * @since 3.4 + * @access public + * @author Grégory Viguier + * + * @return string + */ + public function get_name() { + return 'EWWW'; + } + + /** + * Get the plugin identifier. + * + * @since 3.4 + * @access public + * @author Grégory Viguier + * + * @return string + */ + public function get_id() { + return 'ewww'; + } + + /** + * Tell if the plugin converts images to webp. + * + * @since 3.4 + * @access public + * @author Grégory Viguier + * + * @return bool + */ + public function is_converting_to_webp() { + if ( ! function_exists( 'ewww_image_optimizer_get_option' ) ) { + // No EWWW, no webp. + return false; + } + + return (bool) ewww_image_optimizer_get_option( 'ewww_image_optimizer_webp' ); + } + + /** + * Tell if the plugin serves webp images on frontend. + * + * @since 3.4 + * @access public + * @author Grégory Viguier + * + * @return bool + */ + public function is_serving_webp() { + if ( ! function_exists( 'ewww_image_optimizer_get_option' ) ) { + // No EWWW, no webp. + return false; + } + + if ( ewww_image_optimizer_get_option( 'ewww_image_optimizer_exactdn' ) ) { + // EWWW uses ExactDN (WPR CDN should be disabled for images). + return true; + } + + if ( ewww_image_optimizer_get_option( 'ewww_image_optimizer_webp_for_cdn' ) ) { + // EWWW uses JS to rewrite file extensions. + return true; + } + + // Decide if rewrite rules are used. + if ( ! function_exists( 'ewww_image_optimizer_webp_rewrite_verify' ) ) { + // Uh? + return false; + } + + if ( ! function_exists( 'get_home_path' ) ) { + require_once ABSPATH . 'wp-admin/includes/file.php'; + } + + if ( ! function_exists( 'extract_from_markers' ) ) { + require_once ABSPATH . 'wp-admin/includes/misc.php'; + } + + /** + * This function returns null if rules are present and valid. Otherwise it returns rules to be inserted. + * Note: this also returns null if WP Fastest Cache rules for webp are found in the file. + * + * @see ewww_image_optimizer_wpfc_webp_enabled() + */ + $use_rewrite_rules = ! ewww_image_optimizer_webp_rewrite_verify(); + + /** + * Filter wether EWW is using rewrite rules for webp. + * + * @since 3.4 + * @author Grégory Viguier + * + * @param bool $use_rewrite_rules True when EWWW uses rewrite rules. False otherwise. + */ + return (bool) apply_filters( 'rocket_webp_ewww_use_rewrite_rules', $use_rewrite_rules ); + } + + /** + * Tell if the plugin uses a CDN-compatible technique to serve webp images on frontend. + * + * @since 3.4 + * @access public + * @author Grégory Viguier + * + * @return bool + */ + public function is_serving_webp_compatible_with_cdn() { + if ( ! function_exists( 'ewww_image_optimizer_get_option' ) ) { + // No EWWW, no webp. + return false; + } + + if ( ewww_image_optimizer_get_option( 'ewww_image_optimizer_exactdn' ) ) { + // EWWW uses ExactDN. + return true; + } + + if ( ewww_image_optimizer_get_option( 'ewww_image_optimizer_webp_for_cdn' ) ) { + // EWWW uses JS to rewrite file extensions. + return true; + } + + // At this point, the plugin is using rewrite rules or nothing. + return false; + } + + /** + * Get the plugin basename. + * + * @since 3.4 + * @access public + * @author Grégory Viguier + * + * @return bool + */ + public function get_basename() { + if ( empty( $this->plugin_basename ) ) { + $this->plugin_basename = rocket_has_constant( 'EWWW_IMAGE_OPTIMIZER_PLUGIN_FILE' ) + ? plugin_basename( rocket_get_constant( 'EWWW_IMAGE_OPTIMIZER_PLUGIN_FILE' ) ) + : 'ewww-image-optimizer/ewww-image-optimizer.php'; + } + + return $this->plugin_basename; + } + + /** ----------------------------------------------------------------------------------------- */ + /** PRIVATE TOOLS =========================================================================== */ + /** ----------------------------------------------------------------------------------------- */ + + /** + * Tell if EWWW is active for network. + * + * @since 3.4 + * @access private + * @author Grégory Viguier + * + * @return bool + */ + private function is_active_for_network() { + static $is; + + if ( isset( $is ) ) { + return $is; + } + + if ( ! is_multisite() ) { + $is = false; + return $is; + } + + if ( ! function_exists( 'is_plugin_active_for_network' ) ) { + require_once ABSPATH . 'wp-admin/includes/plugin.php'; + } + + $is = is_plugin_active_for_network( $this->get_basename() ) && ! get_site_option( 'ewww_image_optimizer_allow_multisite_override' ); + + return $is; + } +} diff --git a/wp-content/plugins/wp-rocket/inc/classes/subscriber/third-party/plugins/Images/Webp/class-imagify-subscriber.php b/wp-content/plugins/wp-rocket/inc/classes/subscriber/third-party/plugins/Images/Webp/class-imagify-subscriber.php new file mode 100644 index 0000000..d8b60d4 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/classes/subscriber/third-party/plugins/Images/Webp/class-imagify-subscriber.php @@ -0,0 +1,435 @@ +is_serving_webp(). + * + * @var bool + * @access private + * @author Grégory Viguier + */ + private $tmp_is_serving_webp; + + /** + * Constructor. + * + * @since 3.4 + * @access public + * @author Grégory Viguier + * + * @param Options_Data $options Options instance. + */ + public function __construct( Options_Data $options ) { + $this->options = $options; + } + + /** + * Returns an array of events that this subscriber wants to listen to. + * + * @since 3.4 + * @access public + * @author Grégory Viguier + * + * @return array + */ + public static function get_subscribed_events() { + return [ + 'rocket_webp_plugins' => 'register', + 'wp_rocket_loaded' => 'load_hooks', + ]; + } + + /** ----------------------------------------------------------------------------------------- */ + /** HOOKS =================================================================================== */ + /** ----------------------------------------------------------------------------------------- */ + + /** + * Launch filters. + * + * @since 3.4 + * @access public + * @author Grégory Viguier + */ + public function load_hooks() { + if ( ! $this->options->get( 'cache_webp' ) ) { + return; + } + + /** + * Every time Imagify is (de)activated, we must "sync" our webp cache option. + */ + add_action( 'imagify_activation', [ $this, 'plugin_activation' ], 20 ); + add_action( 'imagify_deactivation', [ $this, 'plugin_deactivation' ], 20 ); + + if ( ! rocket_has_constant( 'IMAGIFY_VERSION' ) ) { + return; + } + + /** + * Since Rocket already updates the config file after updating its options, there is no need to do it again if the CDN or zone options change. + */ + + /** + * Every time Imagify’s option changes, we must "sync" our webp cache option. + */ + $option_name = $this->get_option_name_to_serve_webp(); + + if ( $this->is_active_for_network() ) { + add_filter( 'add_site_option_' . $option_name, [ $this, 'sync_on_network_option_add' ], 10, 3 ); + add_filter( 'update_site_option_' . $option_name, [ $this, 'sync_on_network_option_update' ], 10, 4 ); + add_filter( 'pre_delete_site_option_' . $option_name, [ $this, 'store_option_value_before_network_delete' ], 10, 2 ); + add_filter( 'delete_site_option_' . $option_name, [ $this, 'sync_on_network_option_delete' ], 10, 2 ); + return; + } + + add_filter( 'add_option_' . $option_name, [ $this, 'sync_on_option_add' ], 10, 2 ); + add_filter( 'update_option_' . $option_name, [ $this, 'sync_on_option_update' ], 10, 2 ); + add_filter( 'delete_option', [ $this, 'store_option_value_before_delete' ] ); + add_filter( 'delete_option_' . $option_name, [ $this, 'sync_on_option_delete' ] ); + } + + /** + * Maybe deactivate webp cache after Imagify network option has been successfully added. + * + * @since 3.4 + * @access public + * @author Grégory Viguier + * + * @param string $option Name of the network option. + * @param mixed $value Value of the network option. + * @param int $network_id ID of the network. + */ + public function sync_on_network_option_add( $option, $value, $network_id ) { + if ( get_current_network_id() === $network_id && ! empty( $value['display_webp'] ) ) { + $this->trigger_webp_change(); + } + } + + /** + * Maybe activate or deactivate webp cache after Imagify network option has been modified. + * + * @since 3.4 + * @access public + * @author Grégory Viguier + * + * @param string $option Name of the network option. + * @param mixed $value Current value of the network option. + * @param mixed $old_value Old value of the network option. + * @param int $network_id ID of the network. + */ + public function sync_on_network_option_update( $option, $value, $old_value, $network_id ) { + if ( get_current_network_id() === $network_id ) { + $this->sync_on_option_update( $old_value, $value ); + } + } + + /** + * Store the Imagify network option value before it is deleted. + * + * @since 3.4 + * @access public + * @author Grégory Viguier + * + * @param string $option Option name. + * @param int $network_id ID of the network. + */ + public function store_option_value_before_network_delete( $option, $network_id ) { + if ( get_current_network_id() === $network_id ) { + $this->tmp_is_serving_webp = $this->is_serving_webp(); + } + } + + /** + * Maybe activate webp cache after Imagify network option has been deleted. + * + * @since 3.4 + * @access public + * @author Grégory Viguier + * + * @param string $option Name of the network option. + * @param int $network_id ID of the network. + */ + public function sync_on_network_option_delete( $option, $network_id ) { + if ( get_current_network_id() === $network_id && false !== $this->tmp_is_serving_webp ) { + $this->trigger_webp_change(); + } + } + + /** + * Maybe deactivate webp cache after Imagify option has been successfully added. + * + * @since 3.4 + * @access public + * @author Grégory Viguier + * + * @param string $option Name of the option to add. + * @param mixed $value Value of the option. + */ + public function sync_on_option_add( $option, $value ) { + if ( ! empty( $value['display_webp'] ) ) { + $this->trigger_webp_change(); + } + } + + /** + * Maybe activate or deactivate webp cache after Imagify option has been modified. + * + * @since 3.4 + * @access public + * @author Grégory Viguier + * + * @param mixed $old_value The old option value. + * @param mixed $value The new option value. + */ + public function sync_on_option_update( $old_value, $value ) { + $old_display = ! empty( $old_value['display_webp'] ); + $display = ! empty( $value['display_webp'] ); + + if ( $old_display !== $display || $old_value['display_webp_method'] !== $value['display_webp_method'] ) { + $this->trigger_webp_change(); + } + } + + /** + * Store the Imagify option value before it is deleted. + * + * @since 3.4 + * @access public + * @author Grégory Viguier + * + * @param string $option Name of the option to delete. + */ + public function store_option_value_before_delete( $option ) { + if ( $this->get_option_name_to_serve_webp() === $option ) { + $this->tmp_is_serving_webp = $this->is_serving_webp(); + } + } + + /** + * Maybe activate webp cache after Imagify option has been deleted. + * + * @since 3.4 + * @access public + * @author Grégory Viguier + * + * @param string $option Name of the deleted option. + */ + public function sync_on_option_delete( $option ) { + if ( false !== $this->tmp_is_serving_webp ) { + $this->trigger_webp_change(); + } + } + + /** ----------------------------------------------------------------------------------------- */ + /** PUBLIC TOOLS ============================================================================ */ + /** ----------------------------------------------------------------------------------------- */ + + /** + * Get the plugin name. + * + * @since 3.4 + * @access public + * @author Grégory Viguier + * + * @return string + */ + public function get_name() { + return 'Imagify'; + } + + /** + * Get the plugin identifier. + * + * @since 3.4 + * @access public + * @author Grégory Viguier + * + * @return string + */ + public function get_id() { + return 'imagify'; + } + + /** + * Tell if the plugin converts images to webp. + * + * @since 3.4 + * @access public + * @author Grégory Viguier + * + * @return bool + */ + public function is_converting_to_webp() { + if ( ! function_exists( 'get_imagify_option' ) ) { + // No Imagify, no webp. + return false; + } + + return (bool) get_imagify_option( 'convert_to_webp' ); + } + + /** + * Tell if the plugin serves webp images on frontend. + * + * @since 3.4 + * @access public + * @author Grégory Viguier + * + * @return bool + */ + public function is_serving_webp() { + if ( ! function_exists( 'get_imagify_option' ) ) { + // No Imagify, no webp. + return false; + } + + return (bool) get_imagify_option( 'display_webp' ); + } + + /** + * Tell if the plugin uses a CDN-compatible technique to serve webp images on frontend. + * + * @since 3.4 + * @access public + * @author Grégory Viguier + * + * @return bool + */ + public function is_serving_webp_compatible_with_cdn() { + if ( ! $this->is_serving_webp() ) { + return false; + } + + return 'rewrite' !== get_imagify_option( 'display_webp_method' ); + } + + /** + * Get the plugin basename. + * + * @since 3.4 + * @access public + * @author Grégory Viguier + * + * @return bool + */ + public function get_basename() { + if ( empty( $this->plugin_basename ) ) { + $this->plugin_basename = rocket_has_constant( 'IMAGIFY_FILE' ) + ? plugin_basename( rocket_get_constant( 'IMAGIFY_FILE' ) ) + : 'imagify/imagify.php'; + } + + return $this->plugin_basename; + } + + /** ----------------------------------------------------------------------------------------- */ + /** PRIVATE TOOLS =========================================================================== */ + /** ----------------------------------------------------------------------------------------- */ + + /** + * Get the name of the Imagify’s "serve webp" option. + * + * @since 3.4 + * @access private + * @author Grégory Viguier + * + * @return string + */ + private function get_option_name_to_serve_webp() { + if ( ! empty( $this->plugin_option_name_to_serve_webp ) ) { + return $this->plugin_option_name_to_serve_webp; + } + + $default = 'imagify_settings'; + + if ( ! class_exists( '\Imagify_Options' ) || ! method_exists( '\Imagify_Options', 'get_instance' ) ) { + $this->plugin_option_name_to_serve_webp = $default; + return $this->plugin_option_name_to_serve_webp; + } + + $instance = \Imagify_Options::get_instance(); + + if ( ! method_exists( $instance, 'get_option_name' ) ) { + $this->plugin_option_name_to_serve_webp = $default; + return $this->plugin_option_name_to_serve_webp; + } + + $this->plugin_option_name_to_serve_webp = $instance->get_option_name(); + + return $this->plugin_option_name_to_serve_webp; + } + + /** + * Tell if Imagify is active for network. + * + * @since 3.4 + * @access private + * @author Grégory Viguier + * + * @return bool + */ + private function is_active_for_network() { + static $is; + + if ( isset( $is ) ) { + return $is; + } + + if ( function_exists( 'imagify_is_active_for_network' ) ) { + $is = imagify_is_active_for_network(); + return $is; + } + + if ( ! is_multisite() ) { + $is = false; + return $is; + } + + if ( ! function_exists( 'is_plugin_active_for_network' ) ) { + require_once ABSPATH . 'wp-admin/includes/plugin.php'; + } + + $is = is_plugin_active_for_network( $this->get_basename() ); + + return $is; + } +} diff --git a/wp-content/plugins/wp-rocket/inc/classes/subscriber/third-party/plugins/Images/Webp/class-optimus-subscriber.php b/wp-content/plugins/wp-rocket/inc/classes/subscriber/third-party/plugins/Images/Webp/class-optimus-subscriber.php new file mode 100644 index 0000000..fa51837 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/classes/subscriber/third-party/plugins/Images/Webp/class-optimus-subscriber.php @@ -0,0 +1,152 @@ + 'register', + ]; + } + + /** ----------------------------------------------------------------------------------------- */ + /** HOOKS =================================================================================== */ + /** ----------------------------------------------------------------------------------------- */ + + /** + * Register the plugin. + * + * @since 3.4 + * @access public + * @author Grégory Viguier + * + * @param array $webp_plugins An array of Webp_Interface objects. + * @return array + */ + public function register( $webp_plugins ) { + $webp_plugins[] = $this; + return $webp_plugins; + } + + /** ----------------------------------------------------------------------------------------- */ + /** PUBLIC TOOLS ============================================================================ */ + /** ----------------------------------------------------------------------------------------- */ + + /** + * Get the plugin name. + * + * @since 3.4 + * @access public + * @author Grégory Viguier + * + * @return string + */ + public function get_name() { + return 'Optimus'; + } + + /** + * Get the plugin identifier. + * + * @since 3.4 + * @access public + * @author Grégory Viguier + * + * @return string + */ + public function get_id() { + return 'optimus'; + } + + /** + * Tell if the plugin converts images to webp. + * + * @since 3.4 + * @access public + * @author Grégory Viguier + * + * @return bool + */ + public function is_converting_to_webp() { + if ( class_exists( '\Optimus' ) && method_exists( '\Optimus', 'get_options' ) ) { + $options = \Optimus::get_options(); + } else { + $options = get_option( 'optimus' ); + } + + return ! empty( $options['webp_convert'] ); + } + + /** + * Tell if the plugin serves webp images on frontend. + * + * @since 3.4 + * @access public + * @author Grégory Viguier + * + * @return bool + */ + public function is_serving_webp() { + return false; + } + + /** + * Tell if the plugin uses a CDN-compatible technique to serve webp images on frontend. + * + * @since 3.4 + * @access public + * @author Grégory Viguier + * + * @return bool + */ + public function is_serving_webp_compatible_with_cdn() { + return false; + } + + /** + * Get the plugin basename. + * + * @since 3.4 + * @access public + * @author Grégory Viguier + * + * @return bool + */ + public function get_basename() { + if ( empty( $this->plugin_basename ) ) { + $this->plugin_basename = defined( 'OPTIMUS_FILE' ) ? plugin_basename( OPTIMUS_FILE ) : 'optimus/optimus.php'; + } + + return $this->plugin_basename; + } +} diff --git a/wp-content/plugins/wp-rocket/inc/classes/subscriber/third-party/plugins/Images/Webp/class-shortpixel-subscriber.php b/wp-content/plugins/wp-rocket/inc/classes/subscriber/third-party/plugins/Images/Webp/class-shortpixel-subscriber.php new file mode 100644 index 0000000..045f9bb --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/classes/subscriber/third-party/plugins/Images/Webp/class-shortpixel-subscriber.php @@ -0,0 +1,294 @@ +is_serving_webp(). + * + * @var bool + * @access private + * @author Grégory Viguier + */ + private $tmp_is_serving_webp; + + /** + * Constructor. + * + * @since 3.4 + * @access public + * @author Grégory Viguier + * + * @param Options_Data $options Options instance. + */ + public function __construct( Options_Data $options ) { + $this->options = $options; + } + + /** + * Returns an array of events that this subscriber wants to listen to. + * + * @since 3.4 + * @access public + * @author Grégory Viguier + * + * @return array + */ + public static function get_subscribed_events() { + return [ + 'rocket_webp_plugins' => 'register', + 'wp_rocket_loaded' => 'load_hooks', + ]; + } + + /** ----------------------------------------------------------------------------------------- */ + /** HOOKS =================================================================================== */ + /** ----------------------------------------------------------------------------------------- */ + + /** + * Launch filters. + * + * @since 3.4 + * @access public + * @author Grégory Viguier + */ + public function load_hooks() { + if ( ! $this->options->get( 'cache_webp' ) ) { + return; + } + + /** + * Every time ShortPixel is (de)activated, we must "sync" our webp cache option. + */ + if ( did_action( 'activate_' . $this->get_basename() ) ) { + $this->plugin_activation(); + } + if ( did_action( 'deactivate_' . $this->get_basename() ) ) { + $this->plugin_deactivation(); + } + add_action( 'activate_' . $this->get_basename(), [ $this, 'plugin_activation' ], 20 ); + add_action( 'deactivate_' . $this->get_basename(), [ $this, 'plugin_deactivation' ], 20 ); + + if ( ! defined( 'SHORTPIXEL_IMAGE_OPTIMISER_VERSION' ) ) { + return; + } + + /** + * Since Rocket already updates the config file after updating its options, there is no need to do it again if the CDN or zone options change. + */ + + /** + * Every time ShortPixel’s option changes, we must "sync" our webp cache option. + */ + $option_name = $this->plugin_option_name_to_serve_webp; + + add_filter( 'add_option_' . $option_name, [ $this, 'sync_on_option_add' ], 10, 2 ); + add_filter( 'update_option_' . $option_name, [ $this, 'sync_on_option_update' ], 10, 2 ); + add_filter( 'delete_option', [ $this, 'store_option_value_before_delete' ] ); + add_filter( 'delete_option_' . $option_name, [ $this, 'sync_on_option_delete' ] ); + } + + /** + * Maybe deactivate webp cache after ShortPixel option has been successfully added. + * + * @since 3.4 + * @access public + * @author Grégory Viguier + * + * @param string $option Name of the option to add. + * @param mixed $value Value of the option. + */ + public function sync_on_option_add( $option, $value ) { + if ( $value ) { + $this->trigger_webp_change(); + } + } + + /** + * Maybe activate or deactivate webp cache after ShortPixel option has been modified. + * + * @since 3.4 + * @access public + * @author Grégory Viguier + * + * @param mixed $old_value The old option value. + * @param mixed $value The new option value. + */ + public function sync_on_option_update( $old_value, $value ) { + /** + * 0 = Don’t serve webp. + * 1 = + buffer + * 2 = + hooks + * 3 = .htaccess + */ + $old_value = $old_value > 0; + $value = $value > 0; + + if ( $old_value !== $value ) { + $this->trigger_webp_change(); + } + } + + /** + * Store the ShortPixel option value before it is deleted. + * + * @since 3.4 + * @access public + * @author Grégory Viguier + * + * @param string $option Name of the option to delete. + */ + public function store_option_value_before_delete( $option ) { + if ( $this->plugin_option_name_to_serve_webp === $option ) { + $this->tmp_is_serving_webp = $this->is_serving_webp(); + } + } + + /** + * Maybe activate webp cache after ShortPixel option has been deleted. + * + * @since 3.4 + * @access public + * @author Grégory Viguier + */ + public function sync_on_option_delete() { + if ( false !== $this->tmp_is_serving_webp ) { + $this->trigger_webp_change(); + } + } + + /** ----------------------------------------------------------------------------------------- */ + /** PUBLIC TOOLS ============================================================================ */ + /** ----------------------------------------------------------------------------------------- */ + + /** + * Get the plugin name. + * + * @since 3.4 + * @access public + * @author Grégory Viguier + * + * @return string + */ + public function get_name() { + return 'ShortPixel'; + } + + /** + * Get the plugin identifier. + * + * @since 3.4 + * @access public + * @author Grégory Viguier + * + * @return string + */ + public function get_id() { + return 'shortpixel'; + } + + /** + * Tell if the plugin converts images to webp. + * + * @since 3.4 + * @access public + * @author Grégory Viguier + * + * @return bool + */ + public function is_converting_to_webp() { + return (bool) get_option( 'wp-short-create-webp' ); + } + + /** + * Tell if the plugin serves webp images on frontend. + * + * @since 3.4 + * @access public + * @author Grégory Viguier + * + * @return bool + */ + public function is_serving_webp() { + return (bool) get_option( $this->plugin_option_name_to_serve_webp ); + } + + /** + * Tell if the plugin uses a CDN-compatible technique to serve webp images on frontend. + * + * @since 3.4 + * @access public + * @author Grégory Viguier + * + * @return bool + */ + public function is_serving_webp_compatible_with_cdn() { + $display = (int) get_option( $this->plugin_option_name_to_serve_webp ); + + if ( ! $display ) { + // The option is not enabled, no webp. + return false; + } + + if ( 3 === $display ) { + // The option is set to "rewrite rules". + return false; + } + + return true; + } + + /** + * Get the plugin basename. + * + * @since 3.4 + * @access public + * @author Grégory Viguier + * + * @return bool + */ + public function get_basename() { + if ( empty( $this->plugin_basename ) ) { + $this->plugin_basename = defined( 'SHORTPIXEL_PLUGIN_FILE' ) ? plugin_basename( SHORTPIXEL_PLUGIN_FILE ) : 'shortpixel-image-optimiser/wp-shortpixel.php'; + } + + return $this->plugin_basename; + } +} diff --git a/wp-content/plugins/wp-rocket/inc/classes/subscriber/third-party/plugins/Images/Webp/trait-webp-common.php b/wp-content/plugins/wp-rocket/inc/classes/subscriber/third-party/plugins/Images/Webp/trait-webp-common.php new file mode 100644 index 0000000..1623cef --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/classes/subscriber/third-party/plugins/Images/Webp/trait-webp-common.php @@ -0,0 +1,69 @@ +is_serving_webp() ) { + $this->trigger_webp_change(); + } + } + + /** + * On plugin deactivation, activate Rocket webp cache if the plugin is serving webp. + * + * @since 3.4 + * @access public + * @author Grégory Viguier + */ + public function plugin_deactivation() { + if ( $this->is_serving_webp() ) { + $this->trigger_webp_change(); + } + } + + /** + * Trigger an action when the webp feature is enabled/disabled in a third party plugin. + * + * @since 3.4 + * @access public + * @author Grégory Viguier + */ + public function trigger_webp_change() { + /** + * Trigger an action when the webp feature is enabled/disabled in a third party plugin. + * + * @since 3.4 + * @author Grégory Viguier + */ + do_action( 'rocket_third_party_webp_change' ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/classes/subscriber/third-party/plugins/Images/Webp/webp-interface.php b/wp-content/plugins/wp-rocket/inc/classes/subscriber/third-party/plugins/Images/Webp/webp-interface.php new file mode 100644 index 0000000..a54ba89 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/classes/subscriber/third-party/plugins/Images/Webp/webp-interface.php @@ -0,0 +1,77 @@ + 1, + 'do_caching_mobile_files' => 1, + ]; + + /** + * Cache the value of self::is_mobile_plugin_active(). + * + * @since 3.2 + * @access protected + * @author Grégory Viguier + * + * @var array An array of arrays of booleans. + * First level of keys corresponds to the network ID. Second level of keys corresponds to the blog ID. + */ + protected static $is_mobile_active = []; + + /** + * Returns an array of events that this subscriber wants to listen to. + * + * @since 3.2 + * @access public + * @author Grégory Viguier + * + * @return array + */ + public static function get_subscribed_events() { + // In case a mobile plugin has already been activated. + $do = []; + $undo = []; + $plugin_events = []; + + if ( ! function_exists( '\is_plugin_active' ) ) { + include_once ABSPATH . 'wp-admin/includes/plugin.php'; + } + + foreach ( static::get_mobile_plugins() as $plugin => $plugin_data ) { + if ( \did_action( 'activate_' . $plugin ) && + ! isset( $plugin_data['is_active_callback'] ) ) { + $do[] = $plugin; + } + + if ( \did_action( 'activate_' . $plugin ) && + isset( $plugin_data['is_active_callback'] ) && + call_user_func( $plugin_data['is_active_callback'] ) ) { + $do[] = $plugin; + } + + if ( \did_action( 'deactivate_' . $plugin ) ) { + $undo[] = $plugin; + } + + if ( \is_plugin_active( $plugin ) ) { + if ( isset( $plugin_data['activation_hook'] ) ) { + $plugin_events[ $plugin_data['activation_hook'] ] = 'maybe_update_mobile_cache_activation_plugin_hook'; + } + if ( isset( $plugin_data['deactivation_hook'] ) ) { + $plugin_events[ $plugin_data['deactivation_hook'] ] = 'maybe_update_mobile_cache_activation_plugin_hook'; + } + } + } + + if ( array_diff( $do, $undo ) || array_diff( $undo, $do ) ) { + static::update_mobile_cache_activation(); + } + + // Register events. + $events = [ + // Plugin activation/deactivation. + 'add_option_active_plugins' => [ 'add_option_callback', 10, 2 ], + 'update_option_active_plugins' => [ 'update_option_callback', 10, 2 ], + 'delete_option_active_plugins' => 'delete_option_callback', + 'add_site_option_active_sitewide_plugins' => [ 'add_site_option_callback', 10, 3 ], + 'update_site_option_active_sitewide_plugins' => [ 'update_site_option_callback', 10, 4 ], + 'delete_site_option_active_sitewide_plugins' => [ 'delete_site_option_callback', 10, 2 ], + // WPR settings (`get_option()`). + 'option_' . WP_ROCKET_SLUG => 'mobile_options_filter', + ]; + + foreach ( static::$options as $option => $value ) { + // WPR settings (`get_rocket_option()`). + $events[ 'pre_get_rocket_option_' . $option ] = 'is_mobile_plugin_active_callback'; + } + + $events = array_merge( $events, $plugin_events ); + + return $events; + } + + /** ----------------------------------------------------------------------------------------- */ + /** HOOK CALLBACKS ========================================================================== */ + /** ----------------------------------------------------------------------------------------- */ + + /** + * Callback triggered after the option `active_plugins` is created. + * This should normally never be triggered. + * + * @since 3.2 + * @access public + * @author Grégory Viguier + * + * @param string $option Name of the option to add. + * @param mixed $value Value of the option. + */ + public function add_option_callback( $option, $value ) { + $this->maybe_update_mobile_cache_activation( $value, [] ); + } + + /** + * Callback triggered after the option `active_plugins` is updated. + * + * @since 3.2 + * @access public + * @author Grégory Viguier + * + * @param mixed $old_value The old option value. + * @param mixed $value Value of the option. + */ + public function update_option_callback( $old_value, $value ) { + $this->maybe_update_mobile_cache_activation( $value, $old_value ); + } + + /** + * Callback triggered after the option `active_plugins` is deleted. + * Very low probability to be triggered. + * + * @since 3.2 + * @access public + * @author Grégory Viguier + */ + public function delete_option_callback() { + static::update_mobile_cache_activation(); + } + + /** + * Callback triggered after the option `active_sitewide_plugins` is created. + * This should normally never be triggered. + * + * @since 3.2 + * @access public + * @author Grégory Viguier + * + * @param string $option Name of the option to add. + * @param mixed $value Value of the option. + * @param int $network_id ID of the network. + */ + public function add_site_option_callback( $option, $value, $network_id ) { + if ( get_current_network_id() === $network_id ) { + $this->maybe_update_mobile_cache_activation( $value, [] ); + } + } + + /** + * Callback triggered after the option `active_sitewide_plugins` is updated. + * + * @since 3.2 + * @access public + * @author Grégory Viguier + * + * @param string $option Name of the option to add. + * @param mixed $value Value of the option. + * @param mixed $old_value The old option value. + * @param int $network_id ID of the network. + */ + public function update_site_option_callback( $option, $value, $old_value, $network_id ) { + if ( get_current_network_id() === $network_id ) { + $this->maybe_update_mobile_cache_activation( $value, $old_value ); + } + } + + /** + * Callback triggered after the option `active_sitewide_plugins` is deleted. + * Very low probability to be triggered. + * + * @since 3.2 + * @access public + * @author Grégory Viguier + * + * @param string $option Name of the option to add. + * @param int $network_id ID of the network. + */ + public function delete_site_option_callback( $option, $network_id ) { + if ( get_current_network_id() === $network_id ) { + static::update_mobile_cache_activation(); + } + } + + /** + * Enable mobile caching when a mobile plugin is activated, or revert it back to its previous state when a mobile plugin is deactivated. + * + * @since 3.2 + * @access public + * @author Grégory Viguier + * + * @param mixed $value The new option value. + * @param mixed $old_value The old option value. + */ + public function maybe_update_mobile_cache_activation( $value, $old_value ) { + $plugins = static::get_mobile_plugins(); + $plugins = array_keys( $plugins ); + $value = array_intersect( $plugins, (array) $value ); + $old_value = array_intersect( $plugins, (array) $old_value ); + + if ( $value !== $old_value ) { + static::update_mobile_cache_activation(); + } + } + + /** + * Enables mobile caching when a mobile plugin option is activated, or reverts it back to its previous state when a mobile plugin option is deactivated. + * + * @since 3.4.2 + * @access public + * @author Soponar Cristina + * + * @return void + */ + public function maybe_update_mobile_cache_activation_plugin_hook() { + $is_mobile_plugin_active = static::is_mobile_plugin_active(); + static::reset_class_cache(); + $is_new_mobile_plugin_active = static::is_mobile_plugin_active(); + if ( $is_mobile_plugin_active !== $is_new_mobile_plugin_active ) { + static::update_mobile_cache_activation(); + } + } + + /** + * Forces the values for the mobile options if a mobile plugin is active. + * + * @since 3.2 + * @access public + * @author Grégory Viguier + * + * @param array $values Option values. + * @return array + */ + public function mobile_options_filter( $values ) { + if ( static::is_mobile_plugin_active() ) { + return array_merge( (array) $values, static::$options ); + } + + return $values; + } + + /** + * Forces the value for a mobile option if a mobile plugin is active. + * + * @since 3.2 + * @access public + * @author Grégory Viguier + * + * @param int|null $value Option value. + * @return int|null + */ + public function is_mobile_plugin_active_callback( $value ) { + if ( static::is_mobile_plugin_active() ) { + return 1; + } + + return $value; + } + + /** ----------------------------------------------------------------------------------------- */ + /** MAIN HELPERS ============================================================================ */ + /** ----------------------------------------------------------------------------------------- */ + + /** + * Update the config file and the advanced cache file. + * + * @since 3.2 + * @access public + * @author Grégory Viguier + */ + public static function update_mobile_cache_activation() { + // Reset class cache. + static::reset_class_cache(); + + // Update the config file. + rocket_generate_config_file(); + // Update the advanced cache file. + rocket_generate_advanced_cache_file(); + // Flush htaccess file. + flush_rocket_htaccess(); + } + + /** + * Reset `is_mobile_plugin_active()` cache. + * + * @since 3.2 + * @access public + * @author Grégory Viguier + */ + public static function reset_class_cache() { + // Reset class cache. + unset( static::$is_mobile_active[ get_current_network_id() ][ get_current_blog_id() ] ); + } + + /** + * Get the concerned plugins. + * + * @since 3.2 + * @access public + * @author Grégory Viguier + * + * @return array + */ + public static function get_mobile_plugins() { + return [ + 'jetpack/jetpack.php' => [ + 'is_active_callback' => function() { + if ( ! class_exists( 'Jetpack' ) ) { + return false; + } + return \Jetpack::is_active() && \Jetpack::is_module_active( 'minileven' ); + }, + 'activation_hook' => 'jetpack_activate_module_minileven', + 'deactivation_hook' => 'jetpack_deactivate_module_minileven', + ], + 'wptouch/wptouch.php' => [], + 'wiziapp-create-your-own-native-iphone-app/wiziapp.php' => [], + 'wordpress-mobile-pack/wordpress-mobile-pack.php' => [], + 'wp-mobilizer/wp-mobilizer.php' => [], + 'wp-mobile-edition/wp-mobile-edition.php' => [], + 'device-theme-switcher/dts_controller.php' => [], + 'wp-mobile-detect/wp-mobile-detect.php' => [], + 'easy-social-share-buttons3/easy-social-share-buttons3.php' => [], + ]; + } + + /** + * Tell if a mobile plugin is active. + * + * @since 3.2 + * @access public + * @author Grégory Viguier + * + * @return bool True if a mobile plugin in the list is active, false otherwise. + */ + public static function is_mobile_plugin_active() { + $network_id = get_current_network_id(); + $blog_id = get_current_blog_id(); + + if ( isset( static::$is_mobile_active[ $network_id ][ $blog_id ] ) ) { + return static::$is_mobile_active[ $network_id ][ $blog_id ]; + } + + if ( ! function_exists( '\is_plugin_active' ) ) { + include_once ABSPATH . 'wp-admin/includes/plugin.php'; + } + + if ( ! isset( static::$is_mobile_active[ $network_id ] ) ) { + static::$is_mobile_active[ $network_id ] = []; + } + + foreach ( static::get_mobile_plugins() as $mobile_plugin => $mobile_plugin_data ) { + if ( \is_plugin_active( $mobile_plugin ) && + isset( $mobile_plugin_data['is_active_callback'] ) && + call_user_func( $mobile_plugin_data['is_active_callback'] ) ) { + static::$is_mobile_active[ $network_id ][ $blog_id ] = true; + return true; + } + if ( \is_plugin_active( $mobile_plugin ) && + ! isset( $mobile_plugin_data['is_active_callback'] ) ) { + static::$is_mobile_active[ $network_id ][ $blog_id ] = true; + return true; + } + } + + static::$is_mobile_active[ $network_id ][ $blog_id ] = false; + return false; + } +} diff --git a/wp-content/plugins/wp-rocket/inc/classes/subscriber/third-party/plugins/class-ngg-subscriber.php b/wp-content/plugins/wp-rocket/inc/classes/subscriber/third-party/plugins/class-ngg-subscriber.php new file mode 100644 index 0000000..96ac57c --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/classes/subscriber/third-party/plugins/class-ngg-subscriber.php @@ -0,0 +1,44 @@ + 'deactivate_resource_manager', + ]; + } + + /** + * Deactivate NGG Resource Manager to prevent conflict with WP Rocket output buffering + * + * @since 3.3.1 + * @author Remy Perona + * + * @return bool + */ + public function deactivate_resource_manager() { + return false; + } +} diff --git a/wp-content/plugins/wp-rocket/inc/classes/subscriber/third-party/plugins/class-syntaxhighlighter-subscriber.php b/wp-content/plugins/wp-rocket/inc/classes/subscriber/third-party/plugins/class-syntaxhighlighter-subscriber.php new file mode 100644 index 0000000..72597a4 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/classes/subscriber/third-party/plugins/class-syntaxhighlighter-subscriber.php @@ -0,0 +1,69 @@ + 'exclude_defer_js_syntaxhighlighter_scripts', + 'rocket_exclude_js' => 'exclude_minify_js_syntaxhighlighter_scripts', + ]; + } + + /** + * Adds SyntaxHighlighter scripts to defer JS exclusion + * + * @since 3.3.1 + * @author Remy Perona + * + * @param array $excluded_scripts Array of scripts to exclude. + * @return array + */ + public function exclude_defer_js_syntaxhighlighter_scripts( $excluded_scripts ) { + return array_merge( + $excluded_scripts, + [ + 'syntaxhighlighter/syntaxhighlighter3/scripts/(.*).js', + 'syntaxhighlighter/syntaxhighlighter2/scripts/(.*).js', + ] + ); + } + + /** + * Adds SyntaxHighlighter scripts to minify/combine JS exclusion + * + * @since 3.3.1 + * @author Remy Perona + * + * @param array $excluded_scripts Array of scripts to exclude. + * @return array + */ + public function exclude_minify_js_syntaxhighlighter_scripts( $excluded_scripts ) { + return array_merge( + $excluded_scripts, + [ + rocket_clean_exclude_file( plugins_url( 'syntaxhighlighter/syntaxhighlighter3/scripts/(.*).js' ) ), + rocket_clean_exclude_file( plugins_url( 'syntaxhighlighter/syntaxhighlighter2/scripts/(.*).js' ) ), + ] + ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/classes/subscriber/third-party/plugins/ecommerce/class-bigcommerce-subscriber.php b/wp-content/plugins/wp-rocket/inc/classes/subscriber/third-party/plugins/ecommerce/class-bigcommerce-subscriber.php new file mode 100644 index 0000000..11919d4 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/classes/subscriber/third-party/plugins/ecommerce/class-bigcommerce-subscriber.php @@ -0,0 +1,169 @@ +event_manager = $event_manager; + } + + /** + * {@inheritdoc} + */ + public static function get_subscribed_events() { + $events = [ + 'activate_bigcommerce/bigcommerce.php' => [ 'activate_bigcommerce', 11 ], + 'deactivate_bigcommerce/bigcommerce.php' => [ 'deactivate_bigcommerce', 11 ], + ]; + + if ( function_exists( 'bigcommerce_init' ) ) { + $events['update_option_bigcommerce_login_page_id'] = [ 'after_update_single_option', 10, 2 ]; + $events['update_option_bigcommerce_account_page_id'] = [ 'after_update_single_option', 10, 2 ]; + $events['update_option_bigcommerce_address_page_id'] = [ 'after_update_single_option', 10, 2 ]; + $events['update_option_bigcommerce_orders_page_id'] = [ 'after_update_single_option', 10, 2 ]; + $events['update_option_bigcommerce_cart_page_id'] = [ 'after_update_single_option', 10, 2 ]; + $events['update_option_bigcommerce_checkout_page_id'] = [ 'after_update_single_option', 10, 2 ]; + + $events['shutdown'] = 'maybe_update_config'; + $events['transition_post_status'] = [ 'maybe_exclude_page', 10, 3 ]; + $events['rocket_cache_reject_uri'] = [ + [ 'exclude_pages' ], + ]; + } + + return $events; + } + + /** + * Add exclusions when activating the BigCommerce plugin + * + * @since 3.3.7 + * @author Rémy Perona + */ + public function activate_bigcommerce() { + $this->event_manager->add_callback( 'rocket_cache_reject_uri', [ $this, 'exclude_pages' ] ); + + // Update .htaccess file rules. + flush_rocket_htaccess(); + + // Regenerate the config file. + rocket_generate_config_file(); + } + + /** + * Remove exclusions when deactivating the BigCommerce plugin + * + * @since 3.3.7 + * @author Rémy Perona + */ + public function deactivate_woocommerce() { + $this->event_manager->remove_callback( 'rocket_cache_reject_uri', [ $this, 'exclude_pages' ] ); + + // Update .htaccess file rules. + flush_rocket_htaccess(); + + // Regenerate the config file. + rocket_generate_config_file(); + } + + /** + * Maybe regenerate the htaccess & config file if a BigCommerce page is published + * + * @since 3.3.7 + * @author Remy Perona + * + * @param string $new_status New post status. + * @param string $old_status Old post status. + * @param WP_Post $post Post object. + * @return bool + */ + public function maybe_exclude_page( $new_status, $old_status, $post ) { + if ( 'publish' === $old_status || 'publish' !== $new_status ) { + return false; + } + + if ( get_option( 'bigcommerce_login_page_id' ) !== $post->ID && get_option( 'bigcommerce_account_page_id' ) !== $post->ID && get_option( 'bigcommerce_address_page_id' ) !== $post->ID && get_option( 'bigcommerce_orders_page_id' ) !== $post->ID && get_option( 'bigcommerce_cart_page_id' ) !== $post->ID && get_option( 'bigcommerce_checkout_page_id' ) !== $post->ID ) { + return false; + } + + // Update .htaccess file rules. + flush_rocket_htaccess(); + + // Regenerate the config file. + rocket_generate_config_file(); + + return true; + } + + /** + * Exclude BigCommerce login, cart, checkout, account, address and orders pages from caching + * + * @since 3.3.7 + * + * @param array $urls An array of excluded pages. + * @return array + */ + public function exclude_pages( $urls ) { + $checkout_urls = $this->exclude_page( get_option( 'bigcommerce_checkout_page_id' ) ); + $cart_urls = $this->exclude_page( get_option( 'bigcommerce_cart_page_id' ) ); + $account_urls = $this->exclude_page( get_option( 'bigcommerce_account_page_id' ) ); + $login_urls = $this->exclude_page( get_option( 'bigcommerce_login_page_id' ) ); + $address_urls = $this->exclude_page( get_option( 'bigcommerce_address_page_id' ) ); + $orders_urls = $this->exclude_page( get_option( 'bigcommerce_orders_page_id' ) ); + + return array_merge( $urls, $checkout_urls, $cart_urls, $account_urls, $login_urls, $address_urls, $orders_urls ); + } + + /** + * Excludes BigCommerce checkout page from cache + * + * @since 3.3.7 + * @author Remy Perona + * + * @param int $page_id ID of page to exclude. + * @param string $post_type Post type of the page. + * @param string $pattern Pattern to use for the exclusion. + * @return array + */ + private function exclude_page( $page_id, $post_type = 'page', $pattern = '' ) { + $urls = []; + + if ( ! $page_id ) { + return $urls; + } + + if ( $page_id <= 0 || (int) get_option( 'page_on_front' ) === $page_id ) { + return $urls; + } + + if ( 'publish' !== get_post_status( $page_id ) ) { + return $urls; + } + + $urls = get_rocket_i18n_translated_post_urls( $page_id, $post_type, $pattern ); + + return $urls; + } +} diff --git a/wp-content/plugins/wp-rocket/inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php b/wp-content/plugins/wp-rocket/inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php new file mode 100644 index 0000000..2a40270 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php @@ -0,0 +1,395 @@ +options = $options; + } + + /** + * {@inheritdoc} + */ + public static function get_subscribed_events() { + return [ + 'after_rocket_clean_domain' => 'maybe_clean_firewall_cache', + 'after_rocket_clean_post' => 'maybe_clean_firewall_cache', + 'after_rocket_clean_term' => 'maybe_clean_firewall_cache', + 'after_rocket_clean_user' => 'maybe_clean_firewall_cache', + 'after_rocket_clean_home' => 'maybe_clean_firewall_cache', + 'after_rocket_clean_files' => 'maybe_clean_firewall_cache', + 'admin_post_rocket_purge_sucuri' => 'do_admin_post_rocket_purge_sucuri', + 'admin_notices' => 'maybe_print_notice', + ]; + } + + /** ----------------------------------------------------------------------------------------- */ + /** HOOK CALLBACKS ========================================================================== */ + /** ----------------------------------------------------------------------------------------- */ + + /** + * Clear Sucuri firewall cache. + * + * @since 3.2 + * @access public + * @author Grégory Viguier + */ + public function maybe_clean_firewall_cache() { + static $done = false; + + if ( $done ) { + return; + } + + $done = true; + + if ( ! $this->options->get( 'sucury_waf_cache_sync', 0 ) ) { + return; + } + + $this->clean_firewall_cache(); + } + + /** + * Ajax callback to empty Sucury cache. + * + * @since 3.2 + * @access public + * @author Grégory Viguier + */ + public function do_admin_post_rocket_purge_sucuri() { + if ( empty( $_GET['_wpnonce'] ) || ! wp_verify_nonce( $_GET['_wpnonce'], 'rocket_purge_sucuri' ) ) { // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized, WordPress.Security.ValidatedSanitizedInput.MissingUnslash + wp_nonce_ays( '' ); + } + + if ( ! current_user_can( 'rocket_purge_sucuri_cache' ) ) { + wp_nonce_ays( '' ); + } + + $purged = $this->clean_firewall_cache(); + + if ( is_wp_error( $purged ) ) { + $purged_result = [ + 'result' => 'error', + /* translators: %s is the error message returned by the API. */ + 'message' => sprintf( __( 'Sucuri cache purge error: %s', 'rocket' ), $purged->get_error_message() ), + ]; + } else { + $purged_result = [ + 'result' => 'success', + 'message' => __( 'The Sucuri cache is being cleared. Note that it may take up to two minutes for it to be fully flushed.', 'rocket' ), + ]; + } + + set_transient( get_current_user_id() . '_sucuri_purge_result', $purged_result ); + + wp_safe_redirect( esc_url_raw( wp_get_referer() ) ); + die(); + } + + /** + * Print an admin notice if the cache failed to be cleared. + * + * @since 3.2 + * @access public + * @author Grégory Viguier + */ + public function maybe_print_notice() { + if ( ! current_user_can( 'rocket_purge_sucuri_cache' ) ) { + return; + } + + if ( ! is_admin() ) { + return; + } + + $user_id = get_current_user_id(); + + $notice = get_transient( $user_id . '_sucuri_purge_result' ); + + if ( ! $notice ) { + return; + } + + delete_transient( $user_id . '_sucuri_purge_result' ); + + rocket_notice_html( + [ + 'status' => $notice['result'], + 'message' => $notice['message'], + ] + ); + } + + /** ----------------------------------------------------------------------------------------- */ + /** TOOLS =================================================================================== */ + /** ----------------------------------------------------------------------------------------- */ + + /** + * Tell if a API key is well formatted. + * + * @since 3.2.3 + * @access public + * @author Grégory Viguier + * + * @param string $api_key An API kay. + * @return array|bool An array with the keys 'k' and 's' (required by the API) if valid. False otherwise. + */ + public static function is_api_key_valid( $api_key ) { + if ( '' !== $api_key && preg_match( '@^(?[a-z0-9]{32})/(?[a-z0-9]{32})$@', $api_key, $matches ) ) { + return $matches; + } + + return false; + } + + /** + * Clear Sucuri firewall cache. + * + * @since 3.2 + * @access private + * @author Grégory Viguier + * + * @return bool|object True on success. A WP_Error object on failure. + */ + private function clean_firewall_cache() { + $api_key = $this->get_api_key(); + + if ( is_wp_error( $api_key ) ) { + return $api_key; + } + + $response = $this->request_api( + [ + 'a' => 'clear_cache', + 'k' => $api_key['k'], + 's' => $api_key['s'], + ] + ); + + if ( is_wp_error( $response ) ) { + return $response; + } + + Logger::info( + 'Sucuri firewall cache cleared.', + [ + 'sucuri firewall cache', + ] + ); + + return true; + } + + /** + * Get the API key. + * + * @since 3.2 + * @access private + * @author Grégory Viguier + * + * @return array|object An array with the keys 'k' and 's', required by the API. A WP_Error object if no key or invalid key. + */ + private function get_api_key() { + $api_key = trim( $this->options->get( 'sucury_waf_api_key', '' ) ); + + if ( ! $api_key ) { + Logger::error( + 'API key was not found.', + [ + 'sucuri firewall cache', + ] + ); + return new \WP_Error( 'no_sucuri_api_key', __( 'Sucuri firewall API key was not found.', 'rocket' ) ); + } + + $matches = self::is_api_key_valid( $api_key ); + + if ( ! $matches ) { + Logger::error( + 'API key is invalid.', + [ + 'sucuri firewall cache', + ] + ); + return new \WP_Error( 'invalid_sucuri_api_key', __( 'Sucuri firewall API key is invalid.', 'rocket' ) ); + } + + return [ + 'k' => $matches['k'], + 's' => $matches['s'], + ]; + } + + /** + * Request against the API. + * + * @since 3.2 + * @access private + * @author Grégory Viguier + * + * @param array $params Parameters to send. + * @return array|object The response data on success. A WP_Error object on failure. + */ + private function request_api( $params = [] ) { + $params['time'] = time(); + $params = $this->build_query( $params ); + $url = sprintf( static::API_URL, $params ); + + try { + /** + * Filters the arguments for the Sucuri API request + * + * @since 3.3.4 + * @author Soponar Cristina + * + * @param array $args Arguments for the request. + */ + $args = apply_filters( + 'rocket_sucuri_api_request_args', + [ + 'timeout' => 5, + 'redirection' => 5, + 'httpversion' => '1.1', + 'blocking' => true, + /** This filter is documented in wp-includes/class-wp-http-streams.php */ + 'sslverify' => apply_filters( 'https_ssl_verify', true ), // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound + ] + ); + + $response = wp_remote_get( $url, $args ); + } catch ( \Exception $e ) { + Logger::error( + 'Error when contacting the API.', + [ + 'sucuri firewall cache', + 'url' => $url, + 'response' => $e->getMessage(), + ] + ); + return new \WP_Error( 'error_sucuri_api', __( 'Error when contacting Sucuri firewall API.', 'rocket' ) ); + } + + if ( is_wp_error( $response ) ) { + Logger::error( + 'Error when contacting the API.', + [ + 'sucuri firewall cache', + 'url' => $url, + 'response' => $response->get_error_message(), + ] + ); + /* translators: %s is an error message. */ + return new \WP_Error( 'wp_error_sucuri_api', sprintf( __( 'Error when contacting Sucuri firewall API. Error message was: %s', 'rocket' ), $response->get_error_message() ) ); + } + + $contents = wp_remote_retrieve_body( $response ); + + if ( ! $contents ) { + Logger::error( + 'Could not get a response from the API.', + [ + 'sucuri firewall cache', + 'url' => $url, + 'response' => $response, + ] + ); + return new \WP_Error( 'sucuri_api_no_response', __( 'Could not get a response from the Sucuri firewall API.', 'rocket' ) ); + } + + $data = @json_decode( $contents, true ); + + if ( ! $data || ! is_array( $data ) ) { + Logger::error( + 'Invalid response from the API.', + [ + 'sucuri firewall cache', + 'url' => $url, + 'response_body' => $contents, + ] + ); + return new \WP_Error( 'sucuri_api_invalid_response', __( 'Got an invalid response from the Sucuri firewall API.', 'rocket' ) ); + } + + if ( empty( $data['status'] ) ) { + Logger::error( + 'The action failed.', + [ + 'sucuri firewall cache', + 'url' => $url, + 'response_data' => $data, + ] + ); + if ( empty( $data['messages'] ) || ! is_array( $data['messages'] ) ) { + return new \WP_Error( 'sucuri_api_error_status', __( 'The Sucuri firewall API returned an unknown error.', 'rocket' ) ); + } + /* translators: %s is an error message. */ + $message = _n( 'The Sucuri firewall API returned the following error: %s', 'The Sucuri firewall API returned the following errors: %s', count( $data['messages'] ), 'rocket' ); + $message = sprintf( $message, '
    ' . implode( '
    ', $data['messages'] ) ); + return new \WP_Error( 'sucuri_api_error_status', $message ); + } + + return $data; + } + + /** + * An i18n-firendly alternative to the built-in PHP method `http_build_query()`. + * + * @param array|object $params An array or object containing properties. + * @return string A URL-encoded string. + */ + private function build_query( $params ) { + if ( ! $params ) { + return ''; + } + + $params = (array) $params; + + foreach ( $params as $param => $value ) { + $params[ $param ] = $param . '=' . rawurlencode( (string) $value ); + } + + return implode( '&', $params ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/classes/traits/trait-config-updater.php b/wp-content/plugins/wp-rocket/inc/classes/traits/trait-config-updater.php new file mode 100644 index 0000000..f14c27b --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/classes/traits/trait-config-updater.php @@ -0,0 +1,65 @@ +flush_htaccess(); + $this->generate_config_file(); + } + } + + /** + * Sets the htaccess update request + * + * @since 3.1 + * @author Remy Perona + * + * @return void + */ + protected function flush_htaccess() { + wp_cache_set( 'rocket_flush_htaccess', 1 ); + } + + /** + * Sets WP Rocket config file update request + * + * @since 3.1 + * @author Remy Perona + * + * @return void + */ + protected function generate_config_file() { + wp_cache_set( 'rocket_generate_config_file', 1 ); + } + + /** + * Performs the files update if requested + * + * @since 3.1 + * @author Remy Perona + * + * @return void + */ + public function maybe_update_config() { + if ( wp_cache_get( 'rocket_flush_htaccess' ) ) { + flush_rocket_htaccess(); + wp_cache_delete( 'rocket_flush_htaccess' ); + } + + if ( wp_cache_get( 'rocket_generate_config_file' ) ) { + \rocket_generate_config_file(); + wp_cache_delete( 'rocket_generate_config_file' ); + } + } +} diff --git a/wp-content/plugins/wp-rocket/inc/classes/traits/trait-memoize.php b/wp-content/plugins/wp-rocket/inc/classes/traits/trait-memoize.php new file mode 100644 index 0000000..65697fd --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/classes/traits/trait-memoize.php @@ -0,0 +1,94 @@ + $data, + ]; + } + + Logger::debug( + 'Error when contacting the API.', + array_merge( [ 'Plugin Information' ], $data ) + ); + + return new \WP_Error( + $this->request_error_id, + sprintf( + // translators: %s is an URL. + __( 'An unexpected error occurred. Something may be wrong with WP-Rocket.me or this server’s configuration. If you continue to have problems, contact support.', 'rocket' ), + $this->get_support_url() + ), + $data + ); + } + + /** + * Get support URL. + * + * @since 3.3.6 + * @access protected + * @author Grégory Viguier + * + * @return string + */ + protected function get_support_url() { + return rocket_get_external_url( + 'support', + [ + 'utm_source' => 'wp_plugin', + 'utm_medium' => 'wp_rocket', + ] + ); + } + + /** + * Get a plugin slug, given its full path. + * + * @since 3.3.6 + * @access protected + * @author Grégory Viguier + * + * @param string $plugin_file Full path to the plugin. + * @return string + */ + protected function get_plugin_slug( $plugin_file ) { + $plugin_file = trim( $plugin_file, '/' ); + $plugin_slug = explode( '/', $plugin_file ); + $plugin_slug = end( $plugin_slug ); + $plugin_slug = str_replace( '.php', '', $plugin_slug ); + + return $plugin_slug; + } +} diff --git a/wp-content/plugins/wp-rocket/inc/common/admin-bar.php b/wp-content/plugins/wp-rocket/inc/common/admin-bar.php new file mode 100644 index 0000000..dbf04b8 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/common/admin-bar.php @@ -0,0 +1,379 @@ +add_menu( + [ + 'id' => 'wp-rocket', + 'title' => WP_ROCKET_PLUGIN_NAME, + 'href' => current_user_can( 'rocket_manage_options' ) ? admin_url( 'options-general.php?page=' . WP_ROCKET_PLUGIN_SLUG ) : false, + ] + ); + } + + if ( current_user_can( 'rocket_manage_options' ) ) { + /** + * Settings. + */ + $wp_admin_bar->add_menu( + [ + 'parent' => 'wp-rocket', + 'id' => 'rocket-settings', + 'title' => __( 'Settings', 'rocket' ), + 'href' => admin_url( 'options-general.php?page=' . WP_ROCKET_PLUGIN_SLUG ), + ] + ); + } + + if ( current_user_can( 'rocket_purge_cache' ) ) { + /** + * Purge Cache. + */ + $action = 'purge_cache'; + + if ( rocket_valid_key() ) { + $i18n_plugin = rocket_has_i18n(); + + if ( $i18n_plugin ) { + // Parent. + $wp_admin_bar->add_menu( + [ + 'parent' => 'wp-rocket', + 'id' => 'purge-all', + 'title' => __( 'Clear cache', 'rocket' ), + ] + ); + + // Add submenu for each active langs. + switch ( $i18n_plugin ) { + case 'wpml': + $langlinks = get_rocket_wpml_langs_for_admin_bar(); + break; + case 'qtranslate': + $langlinks = get_rocket_qtranslate_langs_for_admin_bar(); + break; + case 'qtranslate-x': + $langlinks = get_rocket_qtranslate_langs_for_admin_bar( 'x' ); + break; + case 'polylang': + $langlinks = get_rocket_polylang_langs_for_admin_bar(); + break; + default: + $langlinks = []; + } + + if ( $langlinks ) { + foreach ( $langlinks as $lang ) { + $wp_admin_bar->add_menu( + [ + 'parent' => 'purge-all', + 'id' => 'purge-all-' . $lang['code'], + 'title' => $lang['flag'] . ' ' . $lang['anchor'], + 'href' => wp_nonce_url( admin_url( 'admin-post.php?action=' . $action . '&type=all&lang=' . $lang['code'] . $referer ), $action . '_all' ), + ] + ); + } + + if ( 'wpml' !== $i18n_plugin ) { + // Add subemnu "All langs" (the one for WPML is already printed). + $wp_admin_bar->add_menu( + [ + 'parent' => 'purge-all', + 'id' => 'purge-all-all', + 'title' => '
    ' . __( 'All languages', 'rocket' ) . '
    ', + 'href' => wp_nonce_url( admin_url( 'admin-post.php?action=' . $action . '&type=all&lang=all' . $referer ), $action . '_all' ), + ] + ); + } + } + } else { + // Purge All. + $wp_admin_bar->add_menu( + [ + 'parent' => 'wp-rocket', + 'id' => 'purge-all', + 'title' => __( 'Clear cache', 'rocket' ), + 'href' => wp_nonce_url( admin_url( 'admin-post.php?action=' . $action . '&type=all' . $referer ), $action . '_all' ), + ] + ); + } + + if ( is_admin() ) { + /** + * Purge a post. + */ + if ( $post && 'post.php' === $pagenow && isset( $_GET['action'], $_GET['post'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended + $wp_admin_bar->add_menu( + [ + 'parent' => 'wp-rocket', + 'id' => 'purge-post', + 'title' => __( 'Clear this post', 'rocket' ), + 'href' => wp_nonce_url( admin_url( 'admin-post.php?action=' . $action . '&type=post-' . $post->ID . $referer ), $action . '_post-' . $post->ID ), + ] + ); + + } + } else { + /** + * Purge this URL (frontend). + */ + $wp_admin_bar->add_menu( + [ + 'parent' => 'wp-rocket', + 'id' => 'purge-url', + 'title' => __( 'Purge this URL', 'rocket' ), + 'href' => wp_nonce_url( admin_url( 'admin-post.php?action=' . $action . '&type=url' . $referer ), $action . '_url' ), + ] + ); + } + } + } + + if ( current_user_can( 'rocket_purge_opcache' ) ) { + /** + * Purge OPCache content if OPcache is active. + */ + $opcache_enabled = filter_var( ini_get( 'opcache.enable' ), FILTER_VALIDATE_BOOLEAN ); + $restrict_api = ini_get( 'opcache.restrict_api' ); + $can_restrict_api = true; + if ( $restrict_api && strpos( __FILE__, $restrict_api ) !== 0 ) { + $can_restrict_api = false; + } + + if ( function_exists( 'opcache_reset' ) && $opcache_enabled && $can_restrict_api ) { + $action = 'rocket_purge_opcache'; + + $wp_admin_bar->add_menu( + [ + 'parent' => 'wp-rocket', + 'id' => 'purge-opcache', + 'title' => __( 'Purge OPcache', 'rocket' ), + 'href' => wp_nonce_url( admin_url( 'admin-post.php?action=' . $action . $referer ), $action ), + ] + ); + } + } + + if ( current_user_can( 'rocket_purge_cloudflare_cache' ) ) { + /** + * Purge CloudFlare cache if CloudFlare is active. + */ + if ( get_rocket_option( 'do_cloudflare', 0 ) ) { + $action = 'rocket_purge_cloudflare'; + + $wp_admin_bar->add_menu( + [ + 'parent' => 'wp-rocket', + 'id' => 'purge-cloudflare', + 'title' => __( 'Clear Cloudflare cache', 'rocket' ), + 'href' => wp_nonce_url( admin_url( 'admin-post.php?action=' . $action . $referer ), $action ), + ] + ); + } + } + + if ( current_user_can( 'rocket_purge_sucuri_cache' ) ) { + /** + * Purge Sucuri cache if Sucuri is active. + */ + if ( get_rocket_option( 'sucury_waf_cache_sync', 0 ) ) { + $action = 'rocket_purge_sucuri'; + + $wp_admin_bar->add_menu( + [ + 'parent' => 'wp-rocket', + 'id' => 'purge-sucuri', + 'title' => __( 'Purge Sucuri cache', 'rocket' ), + 'href' => wp_nonce_url( admin_url( 'admin-post.php?action=' . $action . $referer ), $action ), + ] + ); + } + } + + if ( current_user_can( 'rocket_preload_cache' ) ) { + /** + * Cache Preload. + */ + $action = 'preload'; + + // Go robot gogo! + if ( get_rocket_option( 'manual_preload', 0 ) ) { + $i18n_plugin = rocket_has_i18n(); + + if ( $i18n_plugin ) { + // Parent. + $wp_admin_bar->add_menu( + [ + 'parent' => 'wp-rocket', + 'id' => 'preload-cache', + 'title' => __( 'Preload cache', 'rocket' ), + ] + ); + + // Add submenu for each active langs. + if ( ! isset( $langlinks ) ) { + switch ( $i18n_plugin ) { + case 'wpml': + $langlinks = get_rocket_wpml_langs_for_admin_bar(); + break; + case 'qtranslate': + $langlinks = get_rocket_qtranslate_langs_for_admin_bar(); + break; + case 'qtranslate-x': + $langlinks = get_rocket_qtranslate_langs_for_admin_bar( 'x' ); + break; + case 'polylang': + $langlinks = get_rocket_polylang_langs_for_admin_bar(); + break; + default: + $langlinks = []; + } + } + + if ( $langlinks ) { + foreach ( $langlinks as $lang ) { + $wp_admin_bar->add_menu( + [ + 'parent' => 'preload-cache', + 'id' => 'preload-cache-' . $lang['code'], + 'title' => $lang['flag'] . ' ' . $lang['anchor'], + 'href' => wp_nonce_url( admin_url( 'admin-post.php?action=' . $action . '&lang=' . $lang['code'] . $referer ), $action ), + ] + ); + } + + if ( 'wpml' !== $i18n_plugin ) { + // Add subemnu "All langs" (the one for WPML is already printed). + $wp_admin_bar->add_menu( + [ + 'parent' => 'preload-cache', + 'id' => 'preload-cache-all', + 'title' => '
    ' . __( 'All languages', 'rocket' ) . '
    ', + 'href' => wp_nonce_url( admin_url( 'admin-post.php?action=' . $action . '&lang=all' . $referer ), $action ), + ] + ); + } + } + } else { + // Preload All. + $wp_admin_bar->add_menu( + [ + 'parent' => 'wp-rocket', + 'id' => 'preload-cache', + 'title' => __( 'Preload cache', 'rocket' ), + 'href' => wp_nonce_url( admin_url( 'admin-post.php?action=' . $action . $referer ), $action ), + ] + ); + } + } + } + + /** + * Fires when adding WP Rocket admin bar items + * + * @since 3.6 + * + * @param WP_Admin_Bar $wp_admin_bar WP_Admin_Bar instance, passed by reference. + */ + do_action( 'rocket_admin_bar_items', $wp_admin_bar ); + + if ( current_user_can( 'rocket_manage_options' ) ) { + $rocketcdn_status = get_transient( 'rocketcdn_status' ); + + if ( isset( $rocketcdn_status['subscription_active'] ) && 'running' === $rocketcdn_status['subscription_active'] ) { + $wp_admin_bar->add_menu( + [ + 'parent' => 'wp-rocket', + 'id' => 'purge-cdn-cache', + 'title' => __( 'Purge RocketCDN cache', 'rocket' ), + 'href' => wp_nonce_url( admin_url( 'admin-post.php?action=rocket_purge_rocketcdn' . $referer ), 'rocket_purge_rocketcdn' ), + ] + ); + } + + /** + * Go to WP Rocket Documentation. + */ + $wp_admin_bar->add_menu( + [ + 'parent' => 'wp-rocket', + 'id' => 'docs', + 'title' => __( 'Documentation', 'rocket' ), + 'href' => get_rocket_documentation_url(), + ] + ); + + /** + * Go to WP Rocket FAQ. + */ + $wp_admin_bar->add_menu( + [ + 'parent' => 'wp-rocket', + 'id' => 'faq', + 'title' => __( 'FAQ', 'rocket' ), + 'href' => get_rocket_faq_url(), + ] + ); + + /** + * Go to WP Rocket Support. + */ + $wp_admin_bar->add_menu( + [ + 'parent' => 'wp-rocket', + 'id' => 'support', + 'title' => __( 'Support', 'rocket' ), + 'href' => rocket_get_external_url( + 'support', + [ + 'utm_source' => 'wp_plugin', + 'utm_medium' => 'wp_rocket', + ] + ), + ] + ); + } +} +add_action( 'admin_bar_menu', 'rocket_admin_bar', PHP_INT_MAX - 10 ); diff --git a/wp-content/plugins/wp-rocket/inc/common/cloudflare-flexible-ssl.php b/wp-content/plugins/wp-rocket/inc/common/cloudflare-flexible-ssl.php new file mode 100644 index 0000000..cb54060 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/common/cloudflare-flexible-ssl.php @@ -0,0 +1,111 @@ + true, + 'result' => (object) [], + ]; + + $cf_ips_values->result->ipv4_cidrs = [ + '103.21.244.0/22', + '103.22.200.0/22', + '103.31.4.0/22', + '104.16.0.0/12', + '108.162.192.0/18', + '131.0.72.0/22', + '141.101.64.0/18', + '162.158.0.0/15', + '172.64.0.0/13', + '173.245.48.0/20', + '188.114.96.0/20', + '190.93.240.0/20', + '197.234.240.0/22', + '198.41.128.0/17', + ]; + + $cf_ips_values->result->ipv6_cidrs = [ + '2400:cb00::/32', + '2405:8100::/32', + '2405:b500::/32', + '2606:4700::/32', + '2803:f800::/32', + '2c0f:f248::/32', + '2a06:98c0::/29', + ]; + } + + if ( strpos( $original_ip, ':' ) === false ) { + $cf_ip_ranges = $cf_ips_values->result->ipv4_cidrs; + foreach ( $cf_ip_ranges as $range ) { + if ( rocket_ipv4_in_range( $original_ip, $range ) ) { + return true; + } + } + } else { + $cf_ip_ranges = $cf_ips_values->result->ipv6_cidrs; + $ipv6 = get_rocket_ipv6_full( $original_ip ); + foreach ( $cf_ip_ranges as $range ) { + if ( rocket_ipv6_in_range( $ipv6, $range ) ) { + return true; + } + } + } + + return false; +} + +/** + * Fixes Cloudflare Flexible SSL redirect loop + * + * @since 3.4.1 + * @author Soponar Cristina + */ +function rocket_fix_cf_flexible_ssl() { + $is_cf = rocket_is_cloudflare(); + if ( $is_cf ) { + // Fixes Flexible SSL. + if ( isset( $_SERVER['HTTP_X_FORWARDED_PROTO'] ) && 'https' === $_SERVER['HTTP_X_FORWARDED_PROTO'] ) { + $_SERVER['HTTPS'] = 'on'; + } + } +} diff --git a/wp-content/plugins/wp-rocket/inc/common/purge.php b/wp-content/plugins/wp-rocket/inc/common/purge.php new file mode 100644 index 0000000..dba000c --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/common/purge.php @@ -0,0 +1,631 @@ +post_type && (int) get_option( 'page_for_posts' ) > 0 ) { + $purge_urls[] = get_permalink( get_option( 'page_for_posts' ) ); + } + + // Add Post Type archive. + $post_type = $post->post_type; + if ( 'post' !== $post_type ) { + $post_type_archive = get_post_type_archive_link( $post_type ); + if ( $post_type_archive ) { + // Rename the caching filename for SSL URLs. + $filename = 'index'; + if ( is_ssl() ) { + $filename .= '-https'; + } + + $post_type_archive = trailingslashit( $post_type_archive ); + $purge_urls[] = $post_type_archive . $filename . '.html'; + $purge_urls[] = $post_type_archive . $filename . '.html_gzip'; + $purge_urls[] = $post_type_archive . $filename . $GLOBALS['wp_rewrite']->pagination_base; + } + } + + // Add next post. + $next_post = get_adjacent_post( false, '', false ); + if ( $next_post ) { + $purge_urls[] = get_permalink( $next_post ); + } + + // Add next post in same category. + $next_in_same_cat_post = get_adjacent_post( true, '', false ); + if ( $next_in_same_cat_post && $next_in_same_cat_post !== $next_post ) { + $purge_urls[] = get_permalink( $next_in_same_cat_post ); + } + + // Add previous post. + $previous_post = get_adjacent_post( false, '', true ); + if ( $previous_post ) { + $purge_urls[] = get_permalink( $previous_post ); + } + + // Add previous post in same category. + $previous_in_same_cat_post = get_adjacent_post( true, '', true ); + if ( $previous_in_same_cat_post && $previous_in_same_cat_post !== $previous_post ) { + $purge_urls[] = get_permalink( $previous_in_same_cat_post ); + } + + // Add urls page to purge every time a post is save. + $cache_purge_pages = get_rocket_option( 'cache_purge_pages' ); + if ( $cache_purge_pages ) { + global $blog_id; + + $home_url = get_option( 'home' ); + + if ( ! empty( $blog_id ) && is_multisite() ) { + switch_to_blog( $blog_id ); + $home_url = get_option( 'home' ); + restore_current_blog(); + } + + $home_parts = get_rocket_parse_url( $home_url ); + $home_url = "{$home_parts['scheme']}://{$home_parts['host']}"; + $cache_path = rocket_get_constant( 'WP_ROCKET_CACHE_PATH' ) . $home_parts['host']; + + foreach ( $cache_purge_pages as $page ) { + // Check if it contains regex pattern. + if ( strstr( $page, '*' ) ) { + $matches_files = _rocket_get_recursive_dir_files_by_regex( '#' . $page . '#i' ); + foreach ( $matches_files as $file ) { + // Convert path to URL. + $purge_urls[] = str_replace( $cache_path, untrailingslashit( $home_url ), $file->getPath() ); + } + continue; + } + $purge_urls[] = trailingslashit( $home_url ) . $page; + } + } + + // Add the author page. + $purge_urls[] = get_author_posts_url( $post->post_author ); + + // Add all parents. + $parents = get_post_ancestors( $post_id ); + if ( (bool) $parents ) { + foreach ( $parents as $parent_id ) { + $purge_urls[] = get_permalink( $parent_id ); + } + } + + return array_flip( array_flip( $purge_urls ) ); +} + +/** + * Update cache when a post is updated or commented + * + * @since 3.0.5 Don't purge for attachment post type + * @since 2.8 Only add post type archive if post type is not post + * @since 2.6 Purge the page defined in "Posts page" option + * @since 2.5.5 Don't cache for auto-draft post status + * @since 1.3.2 Add wp_update_comment_count to purge cache when a comment is added/updated/deleted + * @since 1.3.0 Compatibility with WPML + * @since 1.3.0 Add 2 hooks : before_rocket_clean_post, after_rocket_clean_post + * @since 1.3.0 Purge all parents of the post and the author page + * @since 1.2.2 Add wp_trash_post and delete_post to purge cache when a post is trashed or deleted + * @since 1.1.3 Use clean_post_cache instead of transition_post_status, transition_comment_status and preprocess_comment + * @since 1.0 + * + * @param int $post_id The post ID. + * @param WP_Post $post WP_Post object. + */ +function rocket_clean_post( $post_id, $post = null ) { + static $done = []; + + if ( isset( $done[ $post_id ] ) ) { + return; + } + + $done[ $post_id ] = 1; + + if ( defined( 'DOING_AUTOSAVE' ) ) { + return; + } + + $purge_urls = []; + + // Get all post infos if the $post object was not supplied. + if ( is_null( $post ) ) { + $post = get_post( $post_id ); + } + + // Return if $post is not an object. + if ( ! is_object( $post ) ) { + return; + } + + // No purge for specific conditions. + if ( 'auto-draft' === $post->post_status || 'draft' === $post->post_status || empty( $post->post_type ) || 'nav_menu_item' === $post->post_type || 'attachment' === $post->post_type ) { + return; + } + + // Don't purge if post's post type is not public or not publicly queryable. + $post_type = get_post_type_object( $post->post_type ); + if ( ! is_object( $post_type ) || true !== $post_type->public ) { + return; + } + + // Get the post language. + $i18n_plugin = rocket_has_i18n(); + $lang = false; + + if ( 'wpml' === $i18n_plugin && ! rocket_is_plugin_active( 'woocommerce-multilingual/wpml-woocommerce.php' ) ) { + // WPML. + $lang = $GLOBALS['sitepress']->get_language_for_element( $post_id, 'post_' . get_post_type( $post_id ) ); + } elseif ( 'polylang' === $i18n_plugin && function_exists( 'pll_get_post_language' ) ) { + // Polylang. + $lang = pll_get_post_language( $post_id ); + } + + $purge_urls = rocket_get_purge_urls( $post_id, $post ); + + /** + * Fires before cache files related with the post are deleted + * + * @since 1.3.0 + * + * @param WP_Post $post The post object + * @param array $purge_urls URLs cache files to remove + * @param string $lang The post language + */ + do_action( 'before_rocket_clean_post', $post, $purge_urls, $lang ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + + /** + * Filter URLs cache files to remove + * + * @since 1.0 + * + * @param array $purge_urls List of URLs cache files to remove + */ + $purge_urls = apply_filters( 'rocket_post_purge_urls', $purge_urls, $post ); + + // Purge all files. + rocket_clean_files( $purge_urls ); + + // Never forget to purge homepage and their pagination. + rocket_clean_home( $lang ); + + // Purge home feeds (blog & comments). + rocket_clean_home_feeds(); + + /** + * Fires after cache files related with the post are deleted + * + * @since 1.3.0 + * + * @param WP_Post $post The post object + * @param array $purge_urls URLs cache files to remove + * @param string $lang The post language + */ + do_action( 'after_rocket_clean_post', $post, $purge_urls, $lang ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals +} +add_action( 'wp_trash_post', 'rocket_clean_post' ); +add_action( 'delete_post', 'rocket_clean_post' ); +add_action( 'clean_post_cache', 'rocket_clean_post' ); +add_action( 'wp_update_comment_count', 'rocket_clean_post' ); + +/** + * Purge WP Rocket cache when post status is changed from publish to draft. + * + * @since 3.4.3 + * + * @param int $post_id The post ID. + * @param array $post_data Array of unslashed post data. + */ +function rocket_clean_post_cache_on_status_change( $post_id, $post_data ) { + if ( 'publish' !== get_post_field( 'post_status', $post_id ) || 'draft' !== $post_data['post_status'] ) { + return; + } + + $purge_urls = []; + $post = get_post( $post_id ); + + // Return if $post is not an object. + if ( ! is_object( $post ) ) { + return; + } + // Get the post language. + $i18n_plugin = rocket_has_i18n(); + $lang = false; + + if ( 'wpml' === $i18n_plugin && ! rocket_is_plugin_active( 'woocommerce-multilingual/wpml-woocommerce.php' ) ) { + // WPML. + $lang = $GLOBALS['sitepress']->get_language_for_element( $post_id, 'post_' . get_post_type( $post_id ) ); + } elseif ( 'polylang' === $i18n_plugin && function_exists( 'pll_get_post_language' ) ) { + // Polylang. + $lang = pll_get_post_language( $post_id ); + } + + $purge_urls = rocket_get_purge_urls( $post_id, $post ); + + /** + * Filter URLs cache files to remove + * + * @since 1.0 + * + * @param array $purge_urls List of URLs cache files to remove + */ + $purge_urls = apply_filters( 'rocket_post_purge_urls', $purge_urls, $post ); + + /** + * Fires before cache files related with the post are deleted + * + * @since 1.3.0 + * + * @param WP_Post $post The post object + * @param array $purge_urls URLs cache files to remove + * @param string $lang The post language + */ + do_action( 'before_rocket_clean_post', $post, $purge_urls, $lang ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound + + // Purge all files. + rocket_clean_files( $purge_urls ); + + // Never forget to purge homepage and their pagination. + rocket_clean_home( $lang ); + + // Purge home feeds (blog & comments). + rocket_clean_home_feeds(); + + /** + * Fires after cache files related with the post are deleted + * + * @since 1.3.0 + * + * @param WP_Post $post The post object + * @param array $purge_urls URLs cache files to remove + * @param string $lang The post language + */ + do_action( 'after_rocket_clean_post', $post, $purge_urls, $lang ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound +} +add_action( 'pre_post_update', 'rocket_clean_post_cache_on_status_change', 10, 2 ); + +/** + * Add pattern to clean files of connected users + * + * @since 2.0 + * + * @param array $urls An array of URLs to clean. + * @return array An array of pattern to use for clearing the cache + */ +function rocket_clean_files_users( $urls ) { + $pattern_urls = []; + foreach ( $urls as $url ) { + $parse_url = get_rocket_parse_url( $url ); + $pattern_urls[] = $parse_url['scheme'] . '://' . $parse_url['host'] . '*' . $parse_url['path']; + } + return $pattern_urls; +} +add_filter( 'rocket_clean_files', 'rocket_clean_files_users' ); + +/** + * Return all translated version of a post when qTranslate is used. + * Use the "rocket_post_purge_urls" filter to insert URLs of traduction post. + * + * @since 1.3.5 + * + * @param array $urls An array of URLs to clean. + * @return array Updated array of URLs to clean + */ +function rocket_post_purge_urls_for_qtranslate( $urls ) { + global $q_config; + + if ( ! $urls ) { + return []; + } + + $i18n_plugin = rocket_has_i18n(); + + if ( 'qtranslate' !== $i18n_plugin && 'qtranslate-x' !== $i18n_plugin ) { + return $urls; + } + + // Get all languages. + $enabled_languages = $q_config['enabled_languages']; + + // Remove default language. + $enabled_languages = array_diff( $enabled_languages, [ $q_config['default_language'] ] ); + + // Add translate URLs. + foreach ( $urls as $url ) { + foreach ( $enabled_languages as $lang ) { + if ( 'qtranslate' === $i18n_plugin ) { + $urls[] = qtrans_convertURL( $url, $lang, true ); + } elseif ( 'qtranslate-x' === $i18n_plugin ) { + $urls[] = qtranxf_convertURL( $url, $lang, true ); + } + } + } + + return $urls; +} +add_filter( 'rocket_post_purge_urls', 'rocket_post_purge_urls_for_qtranslate' ); + +/** + * Purge Cache file System in Admin Bar + * + * @since 1.3.0 Compatibility with WPML + * @since 1.0 + */ +function do_admin_post_rocket_purge_cache() { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + if ( isset( $_GET['type'], $_GET['_wpnonce'] ) ) { + $type_raw = sanitize_key( $_GET['type'] ); + $type_array = explode( '-', $type_raw ); + + $type = $type_array[0]; + $id = isset( $type_array[1] ) && is_numeric( $type_array[1] ) ? absint( $type_array[1] ) : 0; + $taxonomy = isset( $_GET['taxonomy'] ) ? sanitize_title( wp_unslash( $_GET['taxonomy'] ) ) : ''; + $url = ''; + + if ( ! wp_verify_nonce( sanitize_key( $_GET['_wpnonce'] ), 'purge_cache_' . $type_raw ) ) { + wp_nonce_ays( '' ); + return; + } + + if ( ! current_user_can( 'rocket_purge_cache' ) ) { + return; + } + + switch ( $type ) { + + // Clear all cache domain. + case 'all': + set_transient( 'rocket_clear_cache', 'all', HOUR_IN_SECONDS ); + // Remove all cache files. + $lang = isset( $_GET['lang'] ) && 'all' !== $_GET['lang'] ? sanitize_key( $_GET['lang'] ) : ''; + // Remove all cache files. + rocket_clean_domain( $lang ); + + if ( '' === $lang ) { + // Remove all minify cache files. + rocket_clean_minify(); + + // Generate a new random key for minify cache file. + $options = get_option( WP_ROCKET_SLUG ); + $options['minify_css_key'] = create_rocket_uniqid(); + $options['minify_js_key'] = create_rocket_uniqid(); + remove_all_filters( 'update_option_' . WP_ROCKET_SLUG ); + update_option( WP_ROCKET_SLUG, $options ); + } + + if ( get_rocket_option( 'manual_preload' ) && ( ! defined( 'WP_ROCKET_DEBUG' ) || ! WP_ROCKET_DEBUG ) ) { + $home_url = get_rocket_i18n_home_url( $lang ); + + /** + * Filters the arguments for the preload request being triggered after clearing the cache. + * + * @since 3.4 + * + * @param array $args Request arguments. + */ + $args = (array) apply_filters( + 'rocket_preload_after_purge_cache_request_args', + [ + 'blocking' => false, + 'timeout' => 0.01, + 'user-agent' => 'WP Rocket/Homepage_Preload_After_Purge_Cache', + 'sslverify' => apply_filters( 'https_local_ssl_verify', false ), // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + ] + ); + + wp_safe_remote_get( $home_url, $args ); + + /** + * Fires after automatically preloading the homepage, which occurs after purging the cache. + * + * @since 3.5 + * + * @param string $home_url URL to the homepage being preloaded. + * @param string $lang The lang of the homepage. + * @param array $args Arguments used for the preload request. + */ + do_action( 'rocket_after_preload_after_purge_cache', $home_url, $lang, $args ); + } + + rocket_dismiss_box( 'rocket_warning_plugin_modification' ); + break; + + // Clear terms, homepage and other files associated at current post in back-end. + case 'post': + rocket_clean_post( $id ); + set_transient( 'rocket_clear_cache', 'post', HOUR_IN_SECONDS ); + break; + + // Clear a specific term. + case 'term': + rocket_clean_term( $id, $taxonomy ); + set_transient( 'rocket_clear_cache', 'term', HOUR_IN_SECONDS ); + break; + + // Clear a specific user. + case 'user': + rocket_clean_user( $id ); + set_transient( 'rocket_clear_cache', 'user', HOUR_IN_SECONDS ); + break; + + // Clear cache file of the current page in front-end. + case 'url': + $url = wp_get_referer(); + + if ( 0 !== strpos( $url, 'http' ) ) { + $parse_url = get_rocket_parse_url( untrailingslashit( home_url() ) ); + $url = $parse_url['scheme'] . '://' . $parse_url['host'] . $url; + } + + if ( home_url( '/' ) === $url ) { + rocket_clean_home(); + } else { + rocket_clean_files( $url ); + } + break; + + default: + wp_nonce_ays( '' ); + return; + } + + /** + * Fires after the cache is cleared. + * + * @since 3.6 + * + * @param string $type Type of cache clearance: 'all', 'post', 'term', 'user', 'url'. + * @param int $id The post ID, term ID, or user ID being cleared. 0 when $type is not 'post', 'term', or 'user'. + * @param string $taxonomy The taxonomy the term being cleared belong to. '' when $type is not 'term'. + * @param string $url The URL being cleared. '' when $type is not 'url'. + */ + do_action( 'rocket_purge_cache', $type, $id, $taxonomy, $url ); + + wp_safe_redirect( esc_url_raw( wp_get_referer() ) ); + rocket_get_constant( 'WP_ROCKET_IS_TESTING', false ) ? wp_die() : exit; + } +} +add_action( 'admin_post_purge_cache', 'do_admin_post_rocket_purge_cache' ); + +/** + * Purge OPCache content in Admin Bar + * + * @since 2.7 + */ +function do_admin_post_rocket_purge_opcache() { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + if ( ! isset( $_GET['_wpnonce'] ) || ! wp_verify_nonce( sanitize_key( $_GET['_wpnonce'] ), 'rocket_purge_opcache' ) ) { + wp_nonce_ays( '' ); + } + + if ( ! current_user_can( 'rocket_purge_opcache' ) ) { + return; + } + + $reset_opcache = rocket_reset_opcache(); + + if ( ! $reset_opcache ) { + $op_purge_result = [ + 'result' => 'error', + 'message' => __( 'OPcache purge failed.', 'rocket' ), + ]; + } else { + $op_purge_result = [ + 'result' => 'success', + 'message' => __( 'OPcache successfully purged', 'rocket' ), + ]; + } + + set_transient( get_current_user_id() . '_opcache_purge_result', $op_purge_result ); + + wp_safe_redirect( esc_url_raw( wp_get_referer() ) ); + die(); +} +add_action( 'admin_post_rocket_purge_opcache', 'do_admin_post_rocket_purge_opcache' ); + +/** + * Clean the cache when the current theme is updated. + * + * @param WP_Upgrader $wp_upgrader WP_Upgrader instance. + * @param array $hook_extra Array of bulk item update data. + */ +function rocket_clean_cache_theme_update( $wp_upgrader, $hook_extra ) { + if ( 'update' !== $hook_extra['action'] ) { + return; + } + + if ( 'theme' !== $hook_extra['type'] ) { + return; + } + + if ( ! is_array( $hook_extra['themes'] ) ) { + return; + } + + $current_theme = wp_get_theme(); + $themes = [ + $current_theme->get_template(), // Parent theme. + $current_theme->get_stylesheet(), // Child theme. + ]; + + // Bail out if the current theme or its parent is not updating. + if ( empty( array_intersect( $hook_extra['themes'], $themes ) ) ) { + return; + } + + rocket_clean_domain(); +} +add_action( 'upgrader_process_complete', 'rocket_clean_cache_theme_update', 10, 2 ); // When a theme is updated. + +/** + * Purge WP Rocket cache on Slug / Permalink change. + * + * @since 3.4.2 + * + * @param int $post_id The post ID. + * @param array $post_data Array of unslashed post data. + */ +function rocket_clean_post_cache_on_slug_change( $post_id, $post_data ) { + // Bail out if the post status is draft, pending or auto-draft. + if ( in_array( get_post_field( 'post_status', $post_id ), [ 'draft', 'pending', 'auto-draft' ], true ) ) { + return; + } + $post_name = get_post_field( 'post_name', $post_id ); + // Bail out if the slug hasn't changed. + if ( $post_name === $post_data['post_name'] ) { + return; + } + // Bail out if the old slug has changed, but is empty. + if ( empty( $post_name ) ) { + return; + } + rocket_clean_files( get_the_permalink( $post_id ) ); +} +add_action( 'pre_post_update', 'rocket_clean_post_cache_on_slug_change', PHP_INT_MAX, 2 ); diff --git a/wp-content/plugins/wp-rocket/inc/compat.php b/wp-content/plugins/wp-rocket/inc/compat.php new file mode 100644 index 0000000..5179522 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/compat.php @@ -0,0 +1,3 @@ +base ) ) { + return; + } + + $boxes = get_user_meta( $GLOBALS['current_user']->ID, 'rocket_boxes', true ); + + if ( defined( 'IMAGIFY_VERSION' ) || in_array( __FUNCTION__, (array) $boxes, true ) || 1 === get_option( 'wp_rocket_dismiss_imagify_notice' ) || ! current_user_can( 'manage_options' ) ) { + return; + } + + $imagify_plugin = 'imagify/imagify.php'; + $is_imagify_installed = rocket_is_plugin_installed( $imagify_plugin ); + + $action_url = $is_imagify_installed ? + rocket_get_plugin_activation_link( $imagify_plugin ) + : + wp_nonce_url( add_query_arg( + array( + 'action' => 'install-plugin', + 'plugin' => 'imagify', + ), + admin_url( 'update.php' ) + ), 'install-plugin_imagify' ); + + $details_url = add_query_arg( + array( + 'tab' => 'plugin-information', + 'plugin' => 'imagify', + 'TB_iframe' => true, + 'width' => 722, + 'height' => 949, + ), + admin_url( 'plugin-install.php' ) + ); + + $classes = $is_imagify_installed ? '' : ' install-now'; + $cta_txt = $is_imagify_installed ? esc_html__( 'Activate Imagify', 'rocket' ) : esc_html__( 'Install Imagify for Free', 'rocket' ); + + $dismiss_url = wp_nonce_url( + admin_url( 'admin-post.php?action=rocket_ignore&box=' . __FUNCTION__ ), + 'rocket_ignore_' . __FUNCTION__ + ); + ?> + +
    + + + +

    + +

    +

    + + +
    + +

    +
    + + cancel_process(); + } + + delete_transient( 'rocket_sitemap_preload_running' ); + delete_transient( 'rocket_sitemap_preload_complete' ); + run_rocket_sitemap_preload(); + } + } +endif; + +if ( ! function_exists( 'do_rocket_bot_cache_json' ) ) : + /** + * Run WP Rocket Bot when a post is added, updated or deleted + * + * @since 1.3.2 + * @deprecated 3.2 + */ + function do_rocket_bot_cache_json() { + _deprecated_function( __FUNCTION__, '3.2' ); + return false; + } +endif; + +if ( ! function_exists( 'rocket_process_sitemap' ) ) { + /** + * Processes the sitemaps recursively + * + * @since 2.8 + * @author Remy Perona + * + * @param string $sitemap_url URL of the sitemap. + * @param array $urls An array of URLs. + * @return array Empty array or array containing URLs + */ + function rocket_process_sitemap( $sitemap_url, $urls = array() ) { + _deprecated_function( __FUNCTION__, '3.2' ); + $tmp_urls = array(); + + /** + * Filters the arguments for the sitemap preload request + * + * @since 2.10.8 + * @author Remy Perona + * + * @param array $args Arguments for the request. + */ + $args = apply_filters( 'rocket_preload_sitemap_request_args', array( + 'user-agent' => 'WP Rocket/Sitemaps', + 'sslverify' => apply_filters( 'https_local_ssl_verify', true ), + ) ); + + $sitemap = wp_remote_get( esc_url( $sitemap_url ), $args ); + + if ( is_wp_error( $sitemap ) ) { + return array(); + } + + $xml_data = wp_remote_retrieve_body( $sitemap ); + + if ( empty( $xml_data ) ) { + return array(); + } + + libxml_use_internal_errors( true ); + + $xml = simplexml_load_string( $xml_data ); + + if ( false === $xml ) { + libxml_clear_errors(); + return array(); + } + + $url_count = count( $xml->url ); + + if ( $url_count > 0 ) { + for ( $i = 0; $i < $url_count; $i++ ) { + $page_url = (string) $xml->url[ $i ]->loc; + $tmp_urls[] = $page_url; + } + } else { + // Sub sitemap? + $sitemap_children = count( $xml->sitemap ); + if ( $sitemap_children > 0 ) { + for ( $i = 0; $i < $sitemap_children; $i++ ) { + $sub_sitemap_url = (string) $xml->sitemap[ $i ]->loc; + $urls = rocket_process_sitemap( $sub_sitemap_url, $urls ); + } + } + } + + $urls = array_merge( $urls, $tmp_urls ); + return $urls; + } +} + +if ( ! function_exists( 'rocket_sitemap_preload_complete' ) ) { + /** + * This notice is displayed after the sitemap preload is complete + * + * @since 2.11 + * @deprecated 3.2 + * @author Remy Perona + */ + function rocket_sitemap_preload_complete() { + _deprecated_function( __FUNCTION__, '3.2' ); + $screen = get_current_screen(); + + /** This filter is documented in inc/admin-bar.php */ + if ( ! current_user_can( apply_filters( 'rocket_capacity', 'manage_options' ) ) ) { + return; + } + + if ( 'settings_page_wprocket' !== $screen->id ) { + return; + } + + $result = get_transient( 'rocket_sitemap_preload_complete' ); + if ( false === $result ) { + return; + } + + delete_transient( 'rocket_sitemap_preload_complete' ); + + rocket_notice_html( array( + // translators: %d is the number of pages preloaded. + 'message' => sprintf( __( 'Sitemap preload: %d pages have been cached.', 'rocket' ), $result ), + ) ); + } +} + +if ( ! function_exists( 'rocket_sitemap_preload_running' ) ) { + /** + * This notice is displayed when the sitemap preload is running + * + * @since 2.11 + * @deprecated 3.2 + * @author Remy Perona + */ + function rocket_sitemap_preload_running() { + _deprecated_function( __FUNCTION__, '3.2' ); + $screen = get_current_screen(); + + // This filter is documented in inc/admin-bar.php. + if ( ! current_user_can( apply_filters( 'rocket_capacity', 'manage_options' ) ) ) { + return; + } + + if ( 'settings_page_wprocket' !== $screen->id ) { + return; + } + + $running = get_transient( 'rocket_sitemap_preload_running' ); + if ( false === $running ) { + return; + } + + rocket_notice_html( array( + // translators: %d = Number of pages preloaded. + 'message' => sprintf( __( 'Sitemap preload: %d uncached pages have now been preloaded. (refresh to see progress)', 'rocket' ), $running ), + ) ); + } +} + +if ( ! function_exists( 'run_rocket_bot_after_clean_post' ) ) { + /** + * Actions to be done after the purge cache files of a post + * By Default, this hook call the WP Rocket Bot (cache json) + * + * @deprecated 3.2 + * @since 1.3.0 + * + * @param object $post The post object. + * @param array $purge_urls An array of URLs to clean. + * @param string $lang The language to clean. + */ + function run_rocket_bot_after_clean_post( $post, $purge_urls, $lang ) { + _deprecated_function( __FUNCTION__, '3.2' ); + // Run robot only if post is published. + if ( 'publish' !== $post->post_status ) { + return false; + } + + // Add Homepage URL to $purge_urls for bot crawl. + array_push( $purge_urls, get_rocket_i18n_home_url( $lang ) ); + + // Add default WordPress feeds (posts & comments). + array_push( $purge_urls, get_feed_link() ); + array_push( $purge_urls, get_feed_link( 'comments_' ) ); + + // Get the author page. + $purge_author = array( get_author_posts_url( $post->post_author ) ); + + // Get all dates archive page. + $purge_dates = get_rocket_post_dates_urls( $post->ID ); + + // Remove dates archives page and author page to preload cache. + $purge_urls = array_diff( $purge_urls, $purge_dates, $purge_author ); + + // Create json file and run WP Rocket Bot. + $json_encode_urls = '["' . implode( '","', array_filter( $purge_urls ) ) . '"]'; + if ( rocket_put_content( WP_ROCKET_PATH . 'cache.json', $json_encode_urls ) ) { + global $do_rocket_bot_cache_json; + $do_rocket_bot_cache_json = true; + } + } +} + +if ( ! function_exists( 'run_rocket_bot_after_clean_term' ) ) { + /** + * Actions to be done after the purge cache files of a term + * By Default, this hook call the WP Rocket Bot (cache json) + * + * @deprecated 3.2 + * @since 2.6.8 + * + * @param object $post The post object. + * @param array $purge_urls An array of URLs to clean. + * @param string $lang The language to clean. + */ + function run_rocket_bot_after_clean_term( $post, $purge_urls, $lang ) { + _deprecated_function( __FUNCTION__, '3.2' ); + // Add Homepage URL to $purge_urls for bot crawl. + array_push( $purge_urls, get_rocket_i18n_home_url( $lang ) ); + + // Create json file and run WP Rocket Bot. + $json_encode_urls = '["' . implode( '","', array_filter( $purge_urls ) ) . '"]'; + if ( rocket_put_content( WP_ROCKET_PATH . 'cache.json', $json_encode_urls ) ) { + global $do_rocket_bot_cache_json; + $do_rocket_bot_cache_json = true; + } + } +} + +if ( ! function_exists( 'rocket_clean_directory_for_default_language_on_wpml' ) ) { + /** + * Conflict with WPML: Clear the homepage when the "Use directory for default language" option is activated. + * + * @since 2.6.8 + * @deprecated 3.2.4 + */ + function rocket_clean_directory_for_default_language_on_wpml() { + _deprecated_function( __FUNCTION__, '3.2.4' ); + $option = get_option( 'icl_sitepress_settings' ); + + if ( 1 === $option['language_negotiation_type'] && $option['urls']['directory_for_default_language'] ) { + rocket_clean_files( home_url() ); + } + } +} + +if ( ! function_exists( 'rocket_fetch_and_cache_busting' ) ) { + /** + * Fetch and save the cache busting file content + * + * @since 2.10 + * @deprecated 3.2.5 + * @author Remy Perona + * + * @param string $src Original URL of the asset. + * @param array $cache_busting_paths Paths used to generated the cache busting file. + * @param string $abspath_src Absolute path to the asset. + * @param string $current_filter Current filter value. + * @return bool true if successful, false otherwise + */ + function rocket_fetch_and_cache_busting( $src, $cache_busting_paths, $abspath_src, $current_filter ) { + _deprecated_function( __FUNCTION__, '3.2.5' ); + if ( wp_is_stream( $src ) ) { + $response = wp_remote_get( $src ); + $content = wp_remote_retrieve_body( $response ); + } else { + $content = rocket_direct_filesystem()->get_contents( $src ); + } + + if ( ! $content ) { + return false; + } + + if ( 'style_loader_src' === $current_filter ) { + /** + * Filters the Document Root path to use during CSS minification to rewrite paths + * + * @since 2.7 + * + * @param string The Document Root path. + */ + $document_root = apply_filters( 'rocket_min_documentRoot', wp_normalize_path( dirname( $_SERVER['SCRIPT_FILENAME'] ) ) ); + + // Rewrite import/url in CSS content to add the absolute path to the file. + $content = Minify_CSS_UriRewriter::rewrite( $content, dirname( $abspath_src ), $document_root ); + } + + if ( ! rocket_direct_filesystem()->is_dir( $cache_busting_paths['bustingpath'] ) ) { + rocket_mkdir_p( $cache_busting_paths['bustingpath'] ); + } + + rocket_mkdir_p( dirname( $cache_busting_paths['filepath'] ) ); + + return rocket_put_content( $cache_busting_paths['filepath'], $content ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/deprecated/3.3.php b/wp-content/plugins/wp-rocket/inc/deprecated/3.3.php new file mode 100644 index 0000000..08adbf6 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/deprecated/3.3.php @@ -0,0 +1,874 @@ +get_rocket_footprint()' ); + $footprint = defined( 'WP_ROCKET_WHITE_LABEL_FOOTPRINT' ) ? + "\n" . ''; + return $footprint; + } +endif; + +if ( ! function_exists( 'rocket_lazyload_script' ) ) : +/** + * Add lazyload options to the footer + * + * @deprecated 3.3 + * @since 2.11 load options in the footer and add filter for the treshold + * @since 1.3.5 It's possible to exclude LazyLoad process by used do_rocket_lazyload filter + * @since 1.1.0 This code is insert in head with inline script for more performance + * @since 1.0 + */ +function rocket_lazyload_script() { + _deprecated_function( __FUNCTION__ . '()', '3.3', '\RocketLazyload\Assets::insertLazyloadScript()' ); + if ( ( defined( 'DONOTROCKETOPTIMIZE' ) && DONOTROCKETOPTIMIZE ) ) { + return; + } + + if ( ( ! get_rocket_option( 'lazyload' ) && ! get_rocket_option( 'lazyload_iframes' ) ) || ( ! apply_filters( 'do_rocket_lazyload', true ) && ! apply_filters( 'do_rocket_lazyload_iframes', true ) ) ) { + return; + } + + $suffix = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min'; + $elements = []; + + if ( get_rocket_option( 'lazyload' ) ) { + $elements[] = 'img'; + } + + if ( get_rocket_option( 'lazyload_iframes' ) ) { + $elements[] = 'iframe'; + } + + /** + * Filters the threshold at which lazyload is triggered + * + * @since 2.11 + * @author Remy Perona + * + * @param int $threshold Threshold value. + */ + $threshold = apply_filters( 'rocket_lazyload_threshold', 300 ); + + echo ''; + + if ( get_rocket_option( 'lazyload_youtube' ) ) { + /** + * Filters the resolution of the YouTube thumbnail + * + * @since 2.11.5 + * @author Arun Basil Lal + * + * @param string $thumbnail_resolution The resolution of the thumbnail. Accepted values: default, mqdefault, sddefault, hqdefault, maxresdefault + */ + $thumbnail_resolution = apply_filters( 'rocket_youtube_thumbnail_resolution', 'hqdefault' ); + + echo <<function lazyLoadThumb(e){var t='',a='
    ';return t.replace("ID",e)+a}function lazyLoadYoutubeIframe(){var e=document.createElement("iframe"),t="https://www.youtube.com/embed/ID?autoplay=1";t+=0===this.dataset.query.length?'':'&'+this.dataset.query;e.setAttribute("src",t.replace("ID",this.dataset.id)),e.setAttribute("frameborder","0"),e.setAttribute("allowfullscreen","1"),this.parentNode.replaceChild(e,this)}document.addEventListener("DOMContentLoaded",function(){var e,t,a=document.getElementsByClassName("rll-youtube-player");for(t=0;t +HTML; + } +} +endif; + +if ( ! function_exists( 'rocket_lazyload_enqueue' ) ) : +/** + * Enqueue the CSS code for Youtube lazyload styling + * + * @deprecated 3.3 + * @since 2.11 + * @author Remy Perona + */ +function rocket_lazyload_enqueue() { + _deprecated_function( __FUNCTION__ . '()', '3.3', '\RocketLazyload\Assets::insertYoutubeThumbnailCSS()' ); + if ( ( defined( 'DONOTROCKETOPTIMIZE' ) && DONOTROCKETOPTIMIZE ) ) { + return; + } + + if ( ( ! get_rocket_option( 'lazyload_iframes' ) ) || ( ! apply_filters( 'do_rocket_lazyload', true ) && ! apply_filters( 'do_rocket_lazyload_iframes', true ) ) ) { + return; + } + + if ( get_rocket_option( 'lazyload_youtube' ) ) { + $css = '.rll-youtube-player{position:relative;padding-bottom:56.23%;height:0;overflow:hidden;max-width:100%;background:#000;margin:5px}.rll-youtube-player iframe{position:absolute;top:0;left:0;width:100%;height:100%;z-index:100;background:0 0}.rll-youtube-player img{bottom:0;display:block;left:0;margin:auto;max-width:100%;width:100%;position:absolute;right:0;top:0;border:none;height:auto;cursor:pointer;-webkit-transition:.4s all;-moz-transition:.4s all;transition:.4s all}.rll-youtube-player img:hover{-webkit-filter:brightness(75%)}.rll-youtube-player .play{height:72px;width:72px;left:50%;top:50%;margin-left:-36px;margin-top:-36px;position:absolute;background:url(' . WP_ROCKET_FRONT_URL . 'img/youtube.png) no-repeat;cursor:pointer}'; + + wp_register_style( 'rocket-lazyload', false ); + wp_enqueue_style( 'rocket-lazyload' ); + wp_add_inline_style( 'rocket-lazyload', $css ); + } +} +endif; + +if ( ! function_exists( 'rocket_lazyload_images' ) ) : +/** + * Replace Gravatar, thumbnails, images in post content and in widget text by LazyLoad + * + * @deprecated 3.3 + * @since 2.6 Add the get_image_tag filter + * @since 2.2 Better regex pattern in a replace_callback + * @since 1.3.5 It's possible to exclude LazyLoad process by used do_rocket_lazyload filter + * @since 1.2.0 It's possible to not lazyload an image with data-no-lazy attribute + * @since 1.1.0 Don't lazyload if the thumbnail has already been run through previously + * @since 1.0.1 Add priority of hooks at maximum later with PHP_INT_MAX + * @since 1.0 + * + * @param string $html HTML content. + * @return string Modified HTML content + */ +function rocket_lazyload_images( $html ) { + _deprecated_function( __FUNCTION__ . '()', '3.3', '\RocketLazyload\Images::lazyloadImages()' ); + // Don't LazyLoad if process is stopped for these reasons. + if ( ! get_rocket_option( 'lazyload' ) || ! apply_filters( 'do_rocket_lazyload', true ) || is_feed() || is_preview() || ( defined( 'REST_REQUEST' ) && REST_REQUEST ) || ( defined( 'DONOTROCKETOPTIMIZE' ) && DONOTROCKETOPTIMIZE ) || empty( $html ) || ( defined( 'DONOTLAZYLOAD' ) && DONOTLAZYLOAD ) || wp_script_is( 'twentytwenty-twentytwenty', 'enqueued' ) ) { + return $html; + } + + $html = preg_replace_callback( '#]*) src=("(?:[^"]+)"|\'(?:[^\']+)\'|(?:[^ >]+))([^>]*)>#', 'rocket_lazyload_replace_callback', $html ); + + return $html; +} +endif; + +if ( ! function_exists( 'rocket_lazyload_replace_callback' ) ) : +/** + * Used to check if we have to LazyLoad this or not + * + * @deprecated 3.3 + * @since 2.5.5 Don't apply LazyLoad on images from WP Retina x2 + * @since 2.5 Don't apply LazyLoad on all images from LayerSlider + * @since 2.4.2 Don't apply LazyLoad on all images from Media Grid + * @since 2.3.11 Don't apply LazyLoad on all images from Timthumb + * @since 2.3.10 Don't apply LazyLoad on all images from Revolution Slider & Justified Image Grid + * @since 2.3.8 Don't apply LazyLoad on captcha from Really Simple CAPTCHA + * @since 2.2 + * + * @param array $matches Images matching the regex. + * @return string Modified HTML content + */ +function rocket_lazyload_replace_callback( $matches ) { + _deprecated_function( __FUNCTION__ . '()', '3.3', '\RocketLazyload\Images::lazyloadImages()' ); + // Don't apply LazyLoad on images from WP Retina x2. + if ( function_exists( 'wr2x_picture_rewrite' ) ) { + if ( wr2x_get_retina( trailingslashit( ABSPATH ) . wr2x_get_pathinfo_from_image_src( trim( $matches[2], '"' ) ) ) ) { + return $matches[0]; + } + } + + /** + * Filters the attributes used to prevent lazylad from being applied + * + * @since 2.11 + * @author Remy Perona + * + * @param array $excluded_attributes An array of excluded attributes. + */ + $excluded_attributes = apply_filters( + 'rocket_lazyload_excluded_attributes', array( + 'data-src=', + 'data-no-lazy=', + 'data-lazy-original=', + 'data-lazy-src=', + 'data-lazysrc=', + 'data-lazyload=', + 'data-bgposition=', + 'data-envira-src=', + 'fullurl=', + 'lazy-slider-img=', + 'data-srcset=', + 'class="ls-l', + 'class="ls-bg', + ) + ); + + /** + * Filters the src used to prevent lazylad from being applied + * + * @since 2.11 + * @author Remy Perona + * + * @param array $excluded_src An array of excluded src. + */ + $excluded_src = apply_filters( + 'rocket_lazyload_excluded_src', array( + '/wpcf7_captcha/', + 'timthumb.php?src', + ) + ); + + if ( rocket_is_excluded_lazyload( $matches[1] . $matches[3], $excluded_attributes ) || rocket_is_excluded_lazyload( $matches[2], $excluded_src ) ) { + return $matches[0]; + } + + /** + * Filter the LazyLoad placeholder on src attribute + * + * @since 1.1 + * + * @param string $placeholder Placeholder that will be printed. + */ + $placeholder = apply_filters( 'rocket_lazyload_placeholder', 'data:image/gif;base64,R0lGODdhAQABAPAAAP///wAAACwAAAAAAQABAEACAkQBADs=' ); + + $html = sprintf( '', $matches[1], $matches[2], $matches[3], $placeholder ); + + $html_noscript = sprintf( '', $matches[1], $matches[2], $matches[3] ); + + /** + * Filter the LazyLoad HTML output + * + * @since 1.0.2 + * + * @param array $html Output that will be printed + */ + $html = apply_filters( 'rocket_lazyload_html', $html, true ); + + return $html . $html_noscript; +} +endif; + +if ( ! function_exists( 'rocket_is_excluded_lazyload' ) ) : +/** + * Determine if the current image should be excluded from lazyload + * + * @deprecated 3.3 + * @since 1.1 + * @author Remy Perona + * + * @param string $string String to search. + * @param array $excluded_values Array of excluded values to search in the string. + * @return bool True if one of the excluded values was found, false otherwise + */ +function rocket_is_excluded_lazyload( $string, $excluded_values ) { + _deprecated_function( __FUNCTION__ . '()', '3.3', '\RocketLazyload\Images::isExcluded()' ); + foreach ( $excluded_values as $excluded_value ) { + if ( strpos( $string, $excluded_value ) !== false ) { + return true; + } + } + + return false; +} +endif; + +if ( ! function_exists( 'rocket_lazyload_smilies' ) ) : +/** + * Replace WordPress smilies by Lazy Load + * + * @since 3.3 + * @since 2.0 New system for replace smilies by Lazy Load + * @since 1.3.5 It's possible to exclude LazyLoad process by used do_rocket_lazyload filter + * @since 1.1.0 Don't lazy-load if the thumbnail has already been run through previously + * @since 1.0.1 Add priority of hooks at maximum later with PHP_INT_MAX + * @since 1.0 + */ +function rocket_lazyload_smilies() { + _deprecated_function( __FUNCTION__ . '()', '3.3', '\WP_Rocket\Subscriber\Optimization\Lazyload_Subscriber::lazyload_smilies()' ); + if ( ! get_rocket_option( 'lazyload' ) || ! apply_filters( 'do_rocket_lazyload', true, 'smilies' ) || ( defined( 'DONOTROCKETOPTIMIZE' ) && DONOTROCKETOPTIMIZE ) || ( defined( 'DONOTLAZYLOAD' ) && DONOTLAZYLOAD ) ) { + return; + } + + remove_filter( 'the_content', 'convert_smilies' ); + remove_filter( 'the_excerpt', 'convert_smilies' ); + remove_filter( 'comment_text', 'convert_smilies', 20 ); + + add_filter( 'the_content', 'rocket_convert_smilies' ); + add_filter( 'the_excerpt', 'rocket_convert_smilies' ); + add_filter( 'comment_text', 'rocket_convert_smilies', 20 ); +} +endif; + +if ( ! function_exists( 'rocket_convert_smilies' ) ) : +/** + * Convert text equivalent of smilies to images. + * + * @source convert_smilies() in /wp-includes/formattings.php + * @since 2.0 + * @deprecated 3.3 + * @param string $text Text to process. + * @return string Modified text + */ +function rocket_convert_smilies( $text ) { + _deprecated_function( __FUNCTION__ . '()', '3.3', '\RocketLazyload\Image::convertSmilies()' ); + global $wp_smiliessearch; + + if ( ! get_option( 'use_smilies' ) || empty( $wp_smiliessearch ) ) { + return $text; + } + + $output = ''; + // HTML loop taken from texturize function, could possible be consolidated. + $textarr = preg_split( '/(<.*>)/U', $text, -1, PREG_SPLIT_DELIM_CAPTURE ); // capture the tags as well as in between. + $stop = count( $textarr );// loop stuff. + + // Ignore proessing of specific tags. + $tags_to_ignore = 'code|pre|style|script|textarea'; + $ignore_block_element = ''; + + for ( $i = 0; $i < $stop; $i++ ) { + $content = $textarr[ $i ]; + + // If we're in an ignore block, wait until we find its closing tag. + if ( '' === $ignore_block_element && preg_match( '/^<(' . $tags_to_ignore . ')>/', $content, $matches ) ) { + $ignore_block_element = $matches[1]; + } + + // If it's not a tag and not in ignore block. + if ( '' === $ignore_block_element && strlen( $content ) > 0 && '<' !== $content[0] ) { + $content = preg_replace_callback( $wp_smiliessearch, 'rocket_translate_smiley', $content ); + } + + // did we exit ignore block. + if ( '' !== $ignore_block_element && '' === $content ) { + $ignore_block_element = ''; + } + + $output .= $content; + } + + return $output; +} +endif; + +if ( ! function_exists( 'rocket_translate_smiley' ) ) : +/** + * Convert one smiley code to the icon graphic file equivalent. + * + * @source translate_smiley() in /wp-includes/formattings.php + * @since 2.0 + * @deprecated 3.3 + * + * @param array $matches An array of matching content. + * @return string HTML code for smiley + */ +function rocket_translate_smiley( $matches ) { + _deprecated_function( __FUNCTION__ . '()', '3.3', '\RocketLazyload\Image::translateSmiley()' ); + global $wpsmiliestrans; + + if ( count( $matches ) === 0 ) { + return ''; + } + + $smiley = trim( reset( $matches ) ); + $img = $wpsmiliestrans[ $smiley ]; + + $matches = array(); + $ext = preg_match( '/\.([^.]+)$/', $img, $matches ) ? strtolower( $matches[1] ) : false; + $image_exts = array( 'jpg', 'jpeg', 'jpe', 'gif', 'png' ); + + // Don't convert smilies that aren't images - they're probably emoji. + if ( ! in_array( $ext, $image_exts, true ) ) { + return $img; + } + + /** + * Filter the Smiley image URL before it's used in the image element. + * + * @since 2.9.0 + * + * @param string $smiley_url URL for the smiley image. + * @param string $img Filename for the smiley image. + * @param string $site_url Site URL, as returned by site_url(). + */ + $src_url = apply_filters( 'smilies_src', includes_url( "images/smilies/$img" ), $img, site_url() ); + + // Don't LazyLoad if process is stopped for these reasons. + if ( is_feed() || is_preview() ) { + return sprintf( ' %s ', esc_url( $src_url ), esc_attr( $smiley ) ); + } + + /** This filter is documented in inc/front/lazyload.php */ + $placeholder = apply_filters( 'rocket_lazyload_placeholder', 'data:image/gif;base64,R0lGODdhAQABAPAAAP///wAAACwAAAAAAQABAEACAkQBADs=' ); + + return sprintf( ' %s ', $placeholder, esc_url( $src_url ), esc_attr( $smiley ) ); +} +endif; + +if ( ! function_exists( 'rocket_lazyload_iframes' ) ) : +/** + * Replace iframes by LazyLoad + * + * @deprecated 3.3 + * @since 2.6 + * + * @param string $html HTML content. + * @return string Modified HTML content + */ +function rocket_lazyload_iframes( $html ) { + _deprecated_function( __FUNCTION__ . '()', '3.3', '\RocketLazyload\Iframe::lazyloadIframes()' ); + // Don't LazyLoad if process is stopped for these reasons. + if ( ! get_rocket_option( 'lazyload_iframes' ) || ! apply_filters( 'do_rocket_lazyload_iframes', true ) || is_feed() || is_preview() || ( defined( 'REST_REQUEST' ) && REST_REQUEST ) || empty( $html ) || ( defined( 'DONOTROCKETOPTIMIZE' ) && DONOTROCKETOPTIMIZE ) || ( defined( 'DONOTLAZYLOAD' ) && DONOTLAZYLOAD ) ) { + return $html; + } + + preg_match_all( '@\s.+)>.*@iUs', $html, $matches, PREG_SET_ORDER ); + + if ( empty( $matches ) ) { + return $html; + } + + foreach ( $matches as $iframe ) { + // Don't mess with the Gravity Forms ajax iframe. + if ( strpos( $iframe[0], 'gform_ajax_frame' ) ) { + continue; + } + + // Don't lazyload if iframe has data-no-lazy attribute. + if ( strpos( $iframe[0], 'data-no-lazy=' ) ) { + continue; + } + + // Don't lazyload if iframe is google recaptcha fallback. + if ( strpos( $iframe[0], 'recaptcha/api/fallback' ) ) { + continue; + } + + // Given the previous regex pattern, $iframe['atts'] starts with a whitespace character. + if ( ! preg_match( '@\ssrc\s*=\s*(\'|")(?.*)\1@iUs', $iframe['atts'], $atts ) ) { + continue; + } + + $iframe['src'] = trim( $atts['src'] ); + + if ( '' === $iframe['src'] ) { + continue; + } + + if ( get_rocket_option( 'lazyload_youtube' ) ) { + $youtube_id = rocket_lazyload_get_youtube_id_from_url( $iframe['src'] ); + + if ( $youtube_id ) { + $query = wp_parse_url( htmlspecialchars_decode( $iframe['src'] ), PHP_URL_QUERY ); + + /** + * Filter the LazyLoad HTML output on Youtube iframes + * + * @since 2.11 + * + * @param array $html Output that will be printed. + */ + $youtube_lazyload = apply_filters( 'rocket_lazyload_youtube_html', '
    ' ); + $youtube_lazyload .= ''; + + $html = str_replace( $iframe[0], $youtube_lazyload, $html ); + continue; + } + } + + /** + * Filter the LazyLoad placeholder on src attribute + * + * @since 2.11 + * + * @param string $placeholder placeholder that will be printed. + */ + $placeholder = apply_filters( 'rocket_lazyload_placeholder', 'about:blank' ); + + $placeholder_atts = str_replace( $iframe['src'], $placeholder, $iframe['atts'] ); + $iframe_lazyload = str_replace( $iframe['atts'], $placeholder_atts . ' data-rocket-lazyload="fitvidscompatible" data-lazy-src="' . esc_url( $iframe['src'] ) . '"', $iframe[0] ); + + /** + * Filter the LazyLoad HTML output on iframes + * + * @since 2.11 + * + * @param array $html Output that will be printed. + */ + $iframe_lazyload = apply_filters( 'rocket_lazyload_iframe_html', $iframe_lazyload ); + $iframe_lazyload .= ''; + + $html = str_replace( $iframe[0], $iframe_lazyload, $html ); + } + + return $html; +} +endif; + +if ( ! function_exists( 'rocket_deactivate_lazyload_on_specific_posts' ) ) : +/** + * Check if we need to exclude LazyLoad on specific posts + * + * @since 3.3 + * @since 2.5 + */ +function rocket_deactivate_lazyload_on_specific_posts() { + _deprecated_function( __FUNCTION__ . '()', '3.3', '\WP_Rocket\Subscriber\Optimization\Lazyload_Subscriber::deactivate_lazyload_on_specific_posts()' ); + if ( is_rocket_post_excluded_option( 'lazyload' ) ) { + add_filter( 'do_rocket_lazyload', '__return_false' ); + } + + if ( is_rocket_post_excluded_option( 'lazyload_iframes' ) ) { + add_filter( 'do_rocket_lazyload_iframes', '__return_false' ); + } +} +endif; + +if ( ! function_exists( 'rocket_lazyload_on_srcset' ) ) : +/** + * Compatibility with images with srcset attribute + * + * @author Remy Perona + * + * @since 3.3 + * @since 2.8 Also add sizes to the data-lazy-* attributes to prevent error in W3C validator + * @since 2.7 + * + * @param string $html HTML content. + * @return string Modified HTML content + */ +function rocket_lazyload_on_srcset( $html ) { + _deprecated_function( __FUNCTION__ . '()', '3.3', '\RocketLazyload\Image:lazyloadResponsiveAttributes()' ); + if ( preg_match( '/srcset=("(?:[^"]+)"|\'(?:[^\']+)\'|(?:[^ >]+))/i', $html ) ) { + $html = str_replace( 'srcset=', 'data-lazy-srcset=', $html ); + } + + if ( preg_match( '/sizes=("(?:[^"]+)"|\'(?:[^\']+)\'|(?:[^ >]+))/i', $html ) ) { + $html = str_replace( 'sizes=', 'data-lazy-sizes=', $html ); + } + + return $html; +} +endif; + +if ( ! function_exists( 'rocket_lazyload_get_youtube_id_from_url' ) ) : +/** + * Gets youtube video ID from URL + * + * @author Remy Perona + * @deprecated 3.3 + * @since 2.11 + * + * @param string $url URL to parse. + * @return string Youtube video id or false if none found. + */ +function rocket_lazyload_get_youtube_id_from_url( $url ) { + _deprecated_function( __FUNCTION__ . '()', '3.3', '\RocketLazyload\Iframe:getYoutubeIDFromURL()' ); + $pattern = '#^(?:https?:)?(?://)?(?:www\.)?(?:youtu\.be|youtube\.com|youtube-nocookie\.com)/(?:embed/|v/|watch/?\?v=)([\w-]{11})#iU'; + $result = preg_match( $pattern, $url, $matches ); + + if ( ! $result ) { + return false; + } + + if ( 'videoseries' === $matches[1] ) { + return false; + } + + return $matches[1]; +} +endif; + +if ( ! function_exists( 'rocket_user_agent' ) ) : + /** + * Add Rocket informations into USER_AGENT + * + * @since 1.1.0 + * @deprecated 3.3.6 + * + * @param string $user_agent User Agent value. + * @return string WP Rocket user agent + */ + function rocket_user_agent( $user_agent ) { + _deprecated_function( __FUNCTION__ . '()', '3.3.6', '\WP_Rocket\Subscriber\Plugin\Updater_Api_Common_Subscriber->get_rocket_user_agent()' ); + + $consumer_key = ''; + if ( isset( $_POST[ WP_ROCKET_SLUG ]['consumer_key'] ) ) { + $consumer_key = $_POST[ WP_ROCKET_SLUG ]['consumer_key']; + } elseif ( '' !== (string) get_rocket_option( 'consumer_key' ) ) { + $consumer_key = (string) get_rocket_option( 'consumer_key' ); + } + + $consumer_email = ''; + if ( isset( $_POST[ WP_ROCKET_SLUG ]['consumer_email'] ) ) { + $consumer_email = $_POST[ WP_ROCKET_SLUG ]['consumer_email']; + } elseif ( '' !== (string) get_rocket_option( 'consumer_email' ) ) { + $consumer_email = (string) get_rocket_option( 'consumer_email' ); + } + + $bonus = ! get_rocket_option( 'do_beta' ) ? '' : '+'; + $php_version = preg_replace( '@^(\d\.\d+).*@', '\1', phpversion() ); + $new_ua = sprintf( '%s;WP-Rocket|%s%s|%s|%s|%s|%s;', $user_agent, WP_ROCKET_VERSION, $bonus, $consumer_key, $consumer_email, esc_url( home_url() ), $php_version ); + + return $new_ua; + } +endif; + +if ( ! function_exists( 'rocket_add_own_ua' ) ) : + /** + * Force our user agent header when we hit our urls + * + * @since 2.4 + * @deprecated 3.3.6 + * + * @param array $request An array of request arguments. + * @param string $url Requested URL. + * @return array An array of requested arguments + */ + function rocket_add_own_ua( $request, $url ) { + _deprecated_function( __FUNCTION__ . '()', '3.3.6', '\WP_Rocket\Subscriber\Plugin\Updater_Api_Common_Subscriber->maybe_set_rocket_user_agent()' ); + + if ( ! is_string( $url ) ) { + return $request; + } + + if ( strpos( $url, 'wp-rocket.me' ) !== false ) { + $request['user-agent'] = rocket_user_agent( $request['user-agent'] ); + } + return $request; + } +endif; + +if ( ! function_exists( 'rocket_updates_exclude' ) ) : + /** + * Excludes WP Rocket from WP updates + * + * @since 1.0 + * @deprecated 3.3.6 + * + * @param array $request An array of HTTP request arguments. + * @param string $url The request URL. + * @return array Updated array of HTTP request arguments. + */ + function rocket_updates_exclude( $request, $url ) { + _deprecated_function( __FUNCTION__ . '()', '3.3.6', '\WP_Rocket\Subscriber\Plugin\Updater_Subscriber->exclude_rocket_from_wp_updates()' ); + + if ( ! is_string( $url ) ) { + return $request; + } + + if ( 0 !== strpos( $url, 'http://api.wordpress.org/plugins/update-check' ) || ! isset( $request['body']['plugins'] ) ) { + return $request; // Not a plugin update request. Stop immediately. + } + + $plugins = maybe_unserialize( $request['body']['plugins'] ); + + if ( isset( $plugins->plugins[ plugin_basename( WP_ROCKET_FILE ) ], $plugins->active[ array_search( plugin_basename( WP_ROCKET_FILE ), $plugins->active, true ) ] ) ) { + unset( $plugins->plugins[ plugin_basename( WP_ROCKET_FILE ) ] ); + unset( $plugins->active[ array_search( plugin_basename( WP_ROCKET_FILE ), $plugins->active, true ) ] ); + } + + $request['body']['plugins'] = maybe_serialize( $plugins ); + return $request; + } +endif; + +if ( ! function_exists( 'rocket_force_info' ) ) : + /** + * Hack the returned object + * + * @since 1.0 + * @deprecated 3.3.6 + * + * @param false|object|array $bool The result object or array. Default false. + * @param string $action The type of information being requested from the Plugin Install API. + * @param object $args Plugin API arguments. + * @return false|object|array Empty object if slug is WP Rocket, default value otherwise + */ + function rocket_force_info( $bool, $action, $args ) { + _deprecated_function( __FUNCTION__ . '()', '3.3.6', '\WP_Rocket\Subscriber\Plugin\Information_Subscriber->exclude_rocket_from_wp_info()' ); + + if ( 'plugin_information' === $action && 'wp-rocket' === $args->slug ) { + return new stdClass(); + } + return $bool; + } +endif; + +if ( ! function_exists( 'rocket_force_info_result' ) ) : + /** + * Hack the returned result with our content + * + * @since 1.0 + * @deprecated 3.3.6 + * + * @param object|WP_Error $res Response object or WP_Error. + * @param string $action The type of information being requested from the Plugin Install API. + * @param object $args Plugin API arguments. + * @return object|WP_Error Updated response object or WP_Error + */ + function rocket_force_info_result( $res, $action, $args ) { + _deprecated_function( __FUNCTION__ . '()', '3.3.6', '\WP_Rocket\Subscriber\Plugin\Information_Subscriber->add_rocket_info()' ); + + if ( 'plugin_information' === $action && isset( $args->slug ) && 'wp-rocket' === $args->slug && isset( $res->external ) && $res->external ) { + + $request = wp_remote_post( + WP_ROCKET_WEB_INFO, array( + 'timeout' => 30, + 'action' => 'plugin_information', + 'request' => serialize( $args ), + ) + ); + + if ( is_wp_error( $request ) ) { + // translators: %s is an URL. + $res = new WP_Error( 'plugins_api_failed', sprintf( __( 'An unexpected error occurred. Something may be wrong with WP-Rocket.me or this server’s configuration. If you continue to have problems, contact support.', 'rocket' ), rocket_get_external_url( 'support', array( + 'utm_source' => 'wp_plugin', + 'utm_medium' => 'wp_rocket', + ) ) ), $request->get_error_message() ); + } else { + $res = maybe_unserialize( wp_remote_retrieve_body( $request ) ); + + if ( ! is_object( $res ) && ! is_array( $res ) ) { + // translators: %s is an URL. + $res = new WP_Error( 'plugins_api_failed', sprintf( __( 'An unexpected error occurred. Something may be wrong with WP-Rocket.me or this server’s configuration. If you continue to have problems, contact support.', 'rocket' ), rocket_get_external_url( 'support', array( + 'utm_source' => 'wp_plugin', + 'utm_medium' => 'wp_rocket', + ) ) ), wp_remote_retrieve_body( $request ) ); + } + } + } + + return $res; + } +endif; + +if ( ! function_exists( 'rocket_check_update' ) ) : + /** + * When WP sets the update_plugins site transient, we set our own transient, then see rocket_add_response_to_updates + * + * @since 2.6.5 + * @deprecated 3.3.6 + * + * @param Object $value Site transient object. + */ + function rocket_check_update( $value ) { + _deprecated_function( __FUNCTION__ . '()', '3.3.6', '\WP_Rocket\Subscriber\Plugin\Updater_Subscriber->maybe_add_rocket_update_data()' ); + + $timer_update_wprocket = (int) get_site_transient( 'update_wprocket' ); + $temp_object = get_site_transient( 'update_wprocket_response' ); + if ( ( ! isset( $_GET['rocket_force_update'] ) || defined( 'WP_INSTALLING' ) ) && + ( 12 * HOUR_IN_SECONDS ) > ( time() - $timer_update_wprocket ) // retry in 12 hours. + ) { + if ( is_object( $value ) && false !== $temp_object ) { + if ( version_compare( $temp_object->new_version, WP_ROCKET_VERSION ) > 0 ) { + $value->response[ $temp_object->plugin ] = $temp_object; + } else { + delete_site_transient( 'update_wprocket_response' ); + } + } + return $value; + } + + if ( isset( $_GET['rocket_force_update'] ) ) { + $_SERVER['REQUEST_URI'] = remove_query_arg( 'rocket_force_update' ); + } + + $plugin_folder = plugin_basename( dirname( WP_ROCKET_FILE ) ); + $plugin_file = basename( WP_ROCKET_FILE ); + $version = true; + if ( ! $value ) { + $value = new stdClass(); + $value->last_checked = time(); + } + + $response = wp_remote_get( + WP_ROCKET_WEB_CHECK, array( + 'timeout' => 30, + ) + ); + if ( ! is_a( $response, 'WP_Error' ) && 200 === $response['response']['code'] && strlen( $response['body'] ) > 32 ) { + + set_site_transient( 'update_wprocket', time() ); + + list( $version, $url ) = explode( '|', $response['body'] ); + if ( version_compare( $version, WP_ROCKET_VERSION ) <= 0 ) { + return $value; + } + + $temp_array = array( + 'slug' => $plugin_folder, + 'plugin' => $plugin_folder . '/' . $plugin_file, + 'new_version' => $version, + 'url' => 'https://wp-rocket.me', + 'package' => $url, + ); + + $temp_object = (object) $temp_array; + $value->response[ $plugin_folder . '/' . $plugin_file ] = $temp_object; + + set_site_transient( 'update_wprocket_response', $temp_object ); + } else { + set_site_transient( 'update_wprocket', ( time() + ( 11 * HOUR_IN_SECONDS ) ) ); // retry in 1 hour in case of error.. + } + return $value; + } +endif; + +if ( ! function_exists( 'rocket_reset_check_update_timer' ) ) : + /** + * When WP deletes the update_plugins site transient or updates the plugins, we delete our own transients to avoid another 12 hours waiting + * + * @since 2.6.8 + * @deprecated 3.3.6 + * + * @param string $transient Transient name. + * @param object $value Transient object. + */ + function rocket_reset_check_update_timer( $transient = 'update_plugins', $value = null ) { + _deprecated_function( __FUNCTION__ . '()', '3.3.6' ); + + // $value used by setted. + if ( 'update_plugins' === $transient ) { + if ( is_null( $value ) || is_object( $value ) && ! isset( $value->response ) ) { + delete_site_transient( 'update_wprocket' ); + } + } + } +endif; diff --git a/wp-content/plugins/wp-rocket/inc/deprecated/3.4.php b/wp-content/plugins/wp-rocket/inc/deprecated/3.4.php new file mode 100644 index 0000000..825b0d1 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/deprecated/3.4.php @@ -0,0 +1,719 @@ + __( 'Choose a domain from the list', 'rocket' ), + ); + + if ( is_wp_error( $cf_api_instance ) ) { + return $domains; + } + + try { + $cf_zone_instance = new Cloudflare\Zone( $cf_api_instance ); + $cf_zones = $cf_zone_instance->zones( null, 'active', null, 50 ); + $cf_zones_list = $cf_zones->result; + + if ( ! (bool) $cf_zones_list ) { + $domains[] = __( 'No domain available in your Cloudflare account', 'rocket' ); + + return $domains; + } + + foreach ( $cf_zones_list as $cf_zone ) { + $domains[ $cf_zone->name ] = $cf_zone->name; + } + + return $domains; + } catch ( Exception $e ) { + return $domains; + } +} + + +/** + * Get CNAMES hosts + * + * @since 2.3 + * @deprecated 3.4 + * + * @param string $zones CNAMES zones. + * @return array $hosts CNAMES hosts + */ +function get_rocket_cnames_host( $zones = array( 'all' ) ) { + _deprecated_function( __FUNCTION__ . '()', '3.4', '\WP_Rocket\Subscriber\CDN\CDNSubscriber::get_cdn_hosts()' ); + $hosts = array(); + + $cnames = get_rocket_cdn_cnames( $zones ); + if ( $cnames ) { + foreach ( $cnames as $cname ) { + $cname = rocket_add_url_protocol( $cname ); + $hosts[] = rocket_extract_url_component( $cname, PHP_URL_HOST ); + } + } + + return $hosts; +} + +/** + * Apply CDN on CSS properties (background, background-image, @import, src:url (fonts)) + * + * @since 2.6 + * @since 3.4 + * + * @param string $buffer file content. + * @return string modified file content + */ +function rocket_cdn_css_properties( $buffer ) { + _deprecated_function( __FUNCTION__ . '()', '3.4', '\WP_Rocket\Subscriber\CDN\CDN::rewrite_css_properties()' ); + + $zone = array( + 'all', + 'images', + 'css_and_js', + 'css', + ); + $cnames = get_rocket_cdn_cnames( $zone ); + + /** + * Filters the application of the CDN on CSS properties + * + * @since 2.6 + * + * @param bool true to apply CDN to properties, false otherwise + */ + $do_rocket_cdn_css_properties = apply_filters( 'do_rocket_cdn_css_properties', true ); + + if ( ! get_rocket_option( 'cdn' ) || ! $cnames || ! $do_rocket_cdn_css_properties ) { + return $buffer; + } + + preg_match_all( '/url\((?![\'"]?data)([^\)]+)\)/i', $buffer, $matches ); + + if ( is_array( $matches ) ) { + $i = 0; + foreach ( $matches[1] as $url ) { + $url = trim( $url, " \t\n\r\0\x0B\"'" ); + /** + * Filters the URL of the CSS property + * + * @since 2.8 + * + * @param string $url URL of the CSS property + */ + $url = get_rocket_cdn_url( apply_filters( 'rocket_cdn_css_properties_url', $url ), $zone ); + $property = str_replace( $matches[1][ $i ], $url, $matches[0][ $i ] ); + $buffer = str_replace( $matches[0][ $i ], $property, $buffer ); + + $i++; + } + } + + return $buffer; +} + +/** + * Apply CDN on custom data attributes. + * + * @since 2.5.5 + * @deprecated 3.4 + * + * @param string $html Original Output. + * @return string $html Output that will be printed + */ +function rocket_add_cdn_on_custom_attr( $html ) { + _deprecated_function( __FUNCTION__ . '()', '3.4' ); + if ( preg_match( '/(data-lazy-src|data-lazyload|data-src|data-retina)=[\'"]?([^\'"\s>]+)[\'"]/i', $html, $matches ) ) { + $html = str_replace( $matches[2], get_rocket_cdn_url( $matches[2], array( 'all', 'images' ) ), $html ); + } + + return $html; +} + + +/** + * Replace URL by CDN of all thumbnails and smilies. + * + * @since 2.1 + * @deprecated 3.4 + * + * @param string $url URL of the file to replace the domain with the CDN. + * @return string modified URL + */ +function rocket_cdn_file( $url ) { + _deprecated_function( __FUNCTION__ . '()', '3.4' ); + if ( defined( 'DONOTROCKETOPTIMIZE' ) && DONOTROCKETOPTIMIZE ) { + return $url; + } + + if ( defined( 'XMLRPC_REQUEST' ) && XMLRPC_REQUEST ) { + return $url; + } + + $ext = pathinfo( $url, PATHINFO_EXTENSION ); + + if ( is_admin() || 'php' === $ext ) { + return $url; + } + + $filter = current_filter(); + + $rejected_files = get_rocket_cdn_reject_files(); + if ( 'template_directory_uri' === $filter && ! empty( $rejected_files ) ) { + return $url; + } + + switch ( $filter ) { + case 'wp_get_attachment_url': + case 'wp_calculate_image_srcset': + $zone = array( 'all', 'images' ); + break; + case 'smilies_src': + $zone = array( 'all', 'images' ); + break; + case 'stylesheet_uri': + case 'wp_minify_css_url': + case 'wp_minify_js_url': + case 'bwp_get_minify_src': + $zone = array( 'all', 'css_and_js', $ext ); + break; + default: + $zone = array( 'all', $ext ); + break; + } + + $cnames = get_rocket_cdn_cnames( $zone ); + if ( $cnames ) { + $url = get_rocket_cdn_url( $url, $zone ); + } + + return $url; +} + +/** + * Replace URL by CDN of images displayed using wp_get_attachment_image_src + * + * @since 2.9.2 + * @deprecated 3.4 + * @author Remy Perona + * @source https://github.com/wp-media/wp-rocket/issues/271#issuecomment-269849927 + * + * @param array $image An array containing the src, width and height of the image. + * @return array Array with updated src URL + */ +function rocket_cdn_attachment_image_src( $image ) { + _deprecated_function( __FUNCTION__ . '()', '3.4' ); + if ( defined( 'DONOTROCKETOPTIMIZE' ) && DONOTROCKETOPTIMIZE ) { + return $image; + } + + if ( ! (bool) $image ) { + return $image; + } + + if ( is_admin() || is_preview() || is_feed() ) { + return $image; + } + + $zones = array( 'all', 'images' ); + + if ( ! (bool) get_rocket_cdn_cnames( $zones ) ) { + return $image; + } + + $image[0] = get_rocket_cdn_url( $image[0], $zones ); + + return $image; +} + +/** + * Replace srcset URLs by CDN URLs for WP responsive images + * + * @since WP 4.4 + * @since 2.6.14 + * @deprecated 3.4 + * @author Remy Perona + * + * @param array $sources multidimensional array containing srcset images urls. + * @return array $sources + */ +function rocket_add_cdn_on_srcset( $sources ) { + _deprecated_function( __FUNCTION__ . '()', '3.4' ); + if ( defined( 'DONOTROCKETOPTIMIZE' ) && DONOTROCKETOPTIMIZE ) { + return $sources; + } + + if ( (bool) $sources ) { + foreach ( $sources as $width => $data ) { + $sources[ $width ]['url'] = rocket_cdn_file( $data['url'] ); + } + } + return $sources; +} + +/** + * Replace URL by CDN of all images display in a post content or a widget text. + * + * @since 2.1 + * @deprecated 3.4 + * + * @param string $html HTML content to parse. + * @return string modified HTML content + */ +function rocket_cdn_images( $html ) { + _deprecated_function( __FUNCTION__ . '()', '3.4' ); + // Don't use CDN if the image is in admin, a feed or in a post preview. + if ( is_admin() || is_feed() || is_preview() || empty( $html ) || defined( 'DONOTROCKETOPTIMIZE' ) && DONOTROCKETOPTIMIZE ) { + return $html; + } + + $zone = array( 'all', 'images' ); + $cnames = get_rocket_cdn_cnames( $zone ); + + if ( $cnames ) { + + $cnames = array_flip( $cnames ); + $wp_content_dirname = wp_parse_url( content_url(), PHP_URL_PATH ); + + $custom_media_uploads_dirname = ''; + $uploads_info = wp_upload_dir(); + + if ( ! empty( $uploads_info['baseurl'] ) ) { + $custom_media_uploads_dirname = '|' . trailingslashit( wp_parse_url( $uploads_info['baseurl'], PHP_URL_PATH ) ); + } + + // Get all images of the content. + preg_match_all( '#]+?)src=([\'"\\\]*)([^\'"\s\\\>]+)([\'"\\\]*)([^>]*)>#i', $html, $images_match ); + + foreach ( $images_match[3] as $k => $image_url ) { + + $parse_url = get_rocket_parse_url( $image_url ); + $path = trim( $parse_url['path'] ); + $host = $parse_url['host']; + + if ( empty( $path ) || ! preg_match( '#(' . $wp_content_dirname . $custom_media_uploads_dirname . '|wp-includes)#', $path ) ) { + continue; + } + + if ( isset( $cnames[ $host ] ) ) { + continue; + } + + // Image path is relative, apply the host to it. + if ( empty( $host ) ) { + $image_url = home_url( '/' ) . ltrim( $image_url, '/' ); + $host = rocket_extract_url_component( $image_url, PHP_URL_HOST ); + } + + // Check if the link isn't external. + if ( rocket_extract_url_component( home_url(), PHP_URL_HOST ) !== $host ) { + continue; + } + + // Check if the URL isn't a DATA-URI. + if ( false !== strpos( $image_url, 'data:image' ) ) { + continue; + } + + $html = str_replace( + $images_match[0][ $k ], + /** + * Filter the image HTML output with the CDN link + * + * @since 2.5.5 + * + * @param array $html Output that will be printed. + */ + apply_filters( + 'rocket_cdn_images_html', + sprintf( + '', + trim( $images_match[1][ $k ] ), + 'src=' . $images_match[2][ $k ] . get_rocket_cdn_url( $image_url, $zone ) . $images_match[4][ $k ], + trim( $images_match[5][ $k ] ) + ) + ), + $html + ); + } + } + + return $html; +} + +/** + * Replace URL by CDN of all inline styles containing url() + * + * @since 2.9 + * @deprecated 3.4 + * @author Remy Perona + * + * @param string $html HTML content of the page. + * @return string modified HTML content + */ +function rocket_cdn_inline_styles( $html ) { + _deprecated_function( __FUNCTION__ . '()', '3.4' ); + if ( is_preview() || empty( $html ) || defined( 'DONOTROCKETOPTIMIZE' ) && DONOTROCKETOPTIMIZE ) { + return $html; + } + + $zone = array( + 'all', + 'images', + ); + + $cnames = get_rocket_cdn_cnames( $zone ); + if ( $cnames ) { + preg_match_all( '/url\((?![\'\"]?data)[\"\']?([^\)\"\']+)[\"\']?\)/i', $html, $matches ); + + if ( (bool) $matches ) { + foreach ( $matches[1] as $k => $url ) { + $url = str_replace( array( ' ', '\t', '\n', '\r', '\0', '\x0B', '"', "'", '"', ''' ), '', $url ); + + if ( '#' === substr( $url, 0, 1 ) ) { + continue; + } + + $url = get_rocket_cdn_url( $url, $zone ); + $property = str_replace( $matches[1][ $k ], $url, $matches[0][ $k ] ); + $html = str_replace( $matches[0][ $k ], $property, $html ); + } + } + } + + return $html; +} + +/** + * Replace URL by CDN for custom files + * + * @since 2.9 + * @deprecated 3.4 + * @author Remy Perona + * + * @param string $html HTML content of the page. + * @return string modified HTML content + */ +function rocket_cdn_custom_files( $html ) { + _deprecated_function( __FUNCTION__ . '()', '3.4' ); + if ( is_preview() || empty( $html ) || defined( 'DONOTROCKETOPTIMIZE' ) && DONOTROCKETOPTIMIZE ) { + return $html; + } + + $image_types = [ + 'jpg', + 'jpeg', + 'jpe', + 'png', + 'gif', + 'webp', + 'bmp', + 'tiff', + ]; + + $other_types = [ + 'mp3', + 'ogg', + 'mp4', + 'm4v', + 'avi', + 'mov', + 'flv', + 'swf', + 'webm', + 'pdf', + 'doc', + 'docx', + 'txt', + 'zip', + 'tar', + 'bz2', + 'tgz', + 'rar', + ]; + + $zones = array_filter( array_unique( get_rocket_option( 'cdn_zone', [] ) ) ); + + if ( empty( $zones ) ) { + return $html; + } + + if ( ! in_array( 'all', $zones, true ) && ! in_array( 'images', $zones, true ) ) { + return $html; + } + + $cdn_zones = []; + $file_types = []; + + if ( in_array( 'images', $zones, true ) ) { + $cdn_zones[] = 'images'; + $file_types = array_merge( $file_types, $image_types ); + } + + if ( in_array( 'all', $zones, true ) ) { + $cdn_zones[] = 'all'; + $file_types = array_merge( $file_types, $image_types, $other_types ); + } + + $cnames = get_rocket_cdn_cnames( $cdn_zones ); + + if ( empty( $cnames ) ) { + return $html; + } + + /** + * Filters the filetypes allowed for the CDN + * + * @since 2.9 + * @author Remy Perona + * + * @param array $filetypes Array of file types. + */ + $file_types = apply_filters( 'rocket_cdn_custom_filetypes', $file_types ); + $file_types = implode( '|', $file_types ); + + preg_match_all( '#]+?href=[\'"]?([^"\'>]+\.(?:' . $file_types . '))[\'"]?[^>]*>#i', $html, $matches ); + + if ( ! (bool) $matches ) { + return $html; + } + + foreach ( $matches[1] as $key => $url ) { + $url = trim( $url, " \t\n\r\0\x0B\"'" ); + $url = get_rocket_cdn_url( $url, $cdn_zones ); + $src = str_replace( $matches[1][ $key ], $url, $matches[0][ $key ] ); + $html = str_replace( $matches[0][ $key ], $src, $html ); + } + + return $html; +} + +/** + * Replace URL by CDN of all scripts and styles enqueues with WordPress functions + * + * @since 2.9 Only add protocol if $src is an absolute url + * @since 2.1 + * @deprecated 3.4 + * + * @param string $src URL of the file. + * @return string modified URL + */ +function rocket_cdn_enqueue( $src ) { + _deprecated_function( __FUNCTION__ . '()', '3.4' ); + // Don't use CDN if in admin, in login page, in register page or in a post preview. + if ( is_admin() || is_preview() || in_array( $GLOBALS['pagenow'], array( 'wp-login.php', 'wp-register.php' ), true ) || defined( 'DONOTROCKETOPTIMIZE' ) && DONOTROCKETOPTIMIZE ) { + return $src; + } + + if ( rocket_extract_url_component( $src, PHP_URL_HOST ) !== '' ) { + $src = rocket_add_url_protocol( $src ); + } + + $zone = array( 'all', 'css_and_js' ); + + // Add only CSS zone. + if ( 'style_loader_src' === current_filter() ) { + $zone[] = 'css'; + } + + // Add only JS zone. + if ( 'script_loader_src' === current_filter() ) { + $zone[] = 'js'; + } + + $cnames = get_rocket_cdn_cnames( $zone ); + if ( $cnames ) { + // Check if the path isn't empty. + if ( trim( rocket_extract_url_component( $src, PHP_URL_PATH ), '/' ) !== '' ) { + $src = get_rocket_cdn_url( $src, $zone ); + } + } + + return $src; +} + +/** + * Get all files we don't allow to get in CDN. + * + * @since 2.5 + * @deprecated 3.4 + * + * @return string A pipe-separated list of rejected files. + */ +function get_rocket_cdn_reject_files() { + _deprecated_function( __FUNCTION__ . '()', '3.4', '\WP_Rocket\Subscriber\CDN\CDN::get_excluded_files()' ); + + $files = get_rocket_option( 'cdn_reject_files', [] ); + + /** + * Filter the rejected files. + * + * @since 2.5 + * + * @param array $files List of rejected files. + */ + $files = (array) apply_filters( 'rocket_cdn_reject_files', $files ); + $files = array_filter( $files ); + $files = array_flip( array_flip( $files ) ); + + return implode( '|', $files ); +} + +/** + * Conflict with Envira Gallery: changes the URL argument if using WP Rocket CDN and Envira + * + * @since 2.6.5 + * @since 3.4 + * + * @param array $args An array of arguments. + * @return array Updated array of arguments + */ +function rocket_cdn_resize_image_args_on_envira_gallery( $args ) { + _deprecated_function( __FUNCTION__ . '()', '3.4' ); + if ( ! isset( $args['url'] ) || (int) get_rocket_option( 'cdn' ) === 0 ) { + return $args; + } + + $cnames_host = array_flip( get_rocket_cnames_host() ); + $url_host = rocket_extract_url_component( $args['url'], PHP_URL_HOST ); + $home_host = rocket_extract_url_component( home_url(), PHP_URL_HOST ); + + if ( isset( $cnames_host[ $url_host ] ) ) { + $args['url'] = str_replace( $url_host, $home_host , $args['url'] ); + } + + return $args; +} + +/** + * Conflict with Envira Gallery: changes the resized URL if using WP Rocket CDN and Envira + * + * @since 2.6.5 + * @since 3.4 + * + * @param string $url Resized image URL. + * @return string Resized image URL using the CDN URL + */ +function rocket_cdn_resized_url_on_envira_gallery( $url ) { + _deprecated_function( __FUNCTION__ . '()', '3.4' ); + if ( (int) get_rocket_option( 'cdn' ) === 0 ) { + return $url; + } + + $url = get_rocket_cdn_url( $url, array( 'all', 'images' ) ); + return $url; +} + +/** + * Apply CDN settings to Beaver Builder parallax. + * + * @since 3.2.1 + * @deprecated 3.4 + * @author Grégory Viguier + * + * @param array $attrs HTML attributes. + * @return array + */ +function rocket_beaver_builder_add_cdn_to_parallax( $attrs ) { + _deprecated_function( __FUNCTION__ . '()', '3.4' ); + + if ( ! empty( $attrs['data-parallax-image'] ) ) { + $attrs['data-parallax-image'] = get_rocket_cdn_url( $attrs['data-parallax-image'], [ 'all', 'images' ] ); + } + + return $attrs; +} + +if ( class_exists( 'WR2X_Admin' ) ) : + /** + * Conflict with WP Retina x2: Apply CDN on srcset attribute. + * + * @since 2.9.1 Use global $wr2x_admin + * @since 2.5.5 + * @deprecated 3.4 + * + * @param string $url URL of the image. + * @return string Updated URL with CDN + */ + function rocket_cdn_on_images_from_wp_retina_x2( $url ) { + _deprecated_function( __FUNCTION__ . '()', '3.4' ); + + global $wr2x_admin; + + if ( ! method_exists( $wr2x_admin, 'is_pro' ) || ! $wr2x_admin->is_pro() ) { + return $url; + } + + $cdn_domain = get_option( 'wr2x_cdn_domain' ); + + if ( ! empty( $cdn_domain ) ) { + return $url; + } + + return get_rocket_cdn_url( $url, array( 'all', 'images' ) ); + } +endif; + +/** + * Conflict with Avada theme and WP Rocket CDN + * + * @since 2.6.1 + * @deprecated 3.4 + * + * @param array $vars An array of variables. + * @param string $handle Name of the avada resource. + * @return array updated array of variables + */ +function rocket_fix_cdn_for_avada_theme( $vars, $handle ) { + _deprecated_function( __FUNCTION__ . '()', '3.4' ); + if ( 'avada-dynamic' === $handle && get_rocket_option( 'cdn' ) ) { + $src = get_rocket_cdn_url( get_template_directory_uri() . '/assets/less/theme/dynamic.less' ); + $vars['template-directory'] = sprintf( '~"%s"', dirname( dirname( dirname( dirname( $src ) ) ) ) ); + $vars['lessurl'] = sprintf( '~"%s"', dirname( $src ) ); + } + return $vars; +} + +/** + * Conflict with Aqua Resizer & IrishMiss Framework: Apply CDN without blank src!! + * + * @since 2.5.8 Add compatibility with IrishMiss Framework + * @since 2.5.5 + * @deprecated 3.4 + */ +function rocket_cdn_on_aqua_resizer() { + _deprecated_function( __FUNCTION__ . '()', '3.4' ); + + if ( function_exists( 'aq_resize' ) || function_exists( 'miss_display_image' ) ) { + remove_filter( 'wp_get_attachment_url' , 'rocket_cdn_file', PHP_INT_MAX ); + add_filter( 'rocket_lazyload_html', 'rocket_add_cdn_on_custom_attr' ); + } +} + +/** + * Conflict with Revolution Slider & Master Slider: Apply CDN on data-lazyload|data-src attribute. + * + * @since 2.5.5 + * @deprecated 3.4 + */ +function rocket_cdn_on_sliders_with_lazyload() { + _deprecated_function( __FUNCTION__ . '()', '3.4' ); + + if ( class_exists( 'RevSliderFront' ) || class_exists( 'Master_Slider' ) ) { + add_filter( 'rocket_cdn_images_html', 'rocket_add_cdn_on_custom_attr' ); + } +} + diff --git a/wp-content/plugins/wp-rocket/inc/deprecated/3.5.php b/wp-content/plugins/wp-rocket/inc/deprecated/3.5.php new file mode 100644 index 0000000..cb70bd2 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/deprecated/3.5.php @@ -0,0 +1,911 @@ +', + '' + ) + ); + } + + if ( ! isset( $cf_zone_id ) || empty( $cf_zone_id ) ) { + $msg = __( 'Missing Cloudflare Zone ID.', 'rocket' ); + + $msg .= ' ' . sprintf( + /* translators: %1$s = opening link; %2$s = closing link */ + __( 'Read the %1$sdocumentation%2$s for further guidance.', 'rocket' ), + // translators: Documentation exists in EN, FR; use localized URL if applicable. + '', + '' + ); + + return new WP_Error( 'cloudflare_no_zone_id', $msg ); + } + + if ( $basic_validation ) { + return true; + } + + try { + $cf_api_instance = new Cloudflare\Api( $cf_email, $cf_api_key ); + $cf_zone = $cf_api_instance->get( 'zones/' . $cf_zone_id ); + + if ( ! isset( $cf_zone->success ) || empty( $cf_zone->success ) ) { + foreach ( $cf_zone->errors as $error ) { + if ( 6003 === $error->code ) { + $msg = __( 'Incorrect Cloudflare email address or API key.', 'rocket' ); + + $msg .= ' ' . sprintf( + /* translators: %1$s = opening link; %2$s = closing link */ + __( 'Read the %1$sdocumentation%2$s for further guidance.', 'rocket' ), + // translators: Documentation exists in EN, FR; use localized URL if applicable. + '', + '' + ); + + return new WP_Error( 'cloudflare_invalid_auth', $msg ); + } + } + $msg = __( 'Incorrect Cloudflare Zone ID.', 'rocket' ); + + $msg .= ' ' . sprintf( + /* translators: %1$s = opening link; %2$s = closing link */ + __( 'Read the %1$sdocumentation%2$s for further guidance.', 'rocket' ), + // translators: Documentation exists in EN, FR; use localized URL if applicable. + '', + '' + ); + return new WP_Error( 'cloudflare_invalid_auth', $msg ); + } + + if ( true === $cf_zone->success ) { + $zone_found = false; + $site_url = get_site_url(); + + if ( function_exists( 'domain_mapping_siteurl' ) ) { + $site_url = domain_mapping_siteurl( $site_url ); + } + + if ( ! empty( $cf_zone->result ) ) { + $parsed_url = wp_parse_url( $site_url ); + if ( false !== strpos( strtolower( $parsed_url['host'] ), $cf_zone->result->name ) ) { + $zone_found = true; + } + } + + if ( ! $zone_found ) { + $msg = __( 'It looks like your domain is not set up on Cloudflare.', 'rocket' ); + + $msg .= ' ' . sprintf( + /* translators: %1$s = opening link; %2$s = closing link */ + __( 'Read the %1$sdocumentation%2$s for further guidance.', 'rocket' ), + // translators: Documentation exists in EN, FR; use localized URL if applicable. + '', + '' + ); + + return new WP_Error( 'cloudflare_wrong_zone_id', $msg ); + } + + return true; + } + } catch ( Exception $e ) { + $msg = __( 'Incorrect Cloudflare email address or API key.', 'rocket' ); + + $msg .= ' ' . sprintf( + /* translators: %1$s = opening link; %2$s = closing link */ + __( 'Read the %1$sdocumentation%2$s for further guidance.', 'rocket' ), + // translators: Documentation exists in EN, FR; use localized URL if applicable. + '', + '' + ); + + return new WP_Error( 'cloudflare_invalid_auth', $msg ); + } +} + +/** + * Get a Cloudflare\Api instance + * + * @since 2.8.21 + * @deprecated 3.5 + * @author Soponar Cristina + * + * @return Object Cloudflare\Api instance if crendentials are set, WP_Error otherwise + */ +function get_rocket_cloudflare_api_instance() { + _deprecated_function( __FUNCTION__ . '()', '3.5' ); + if ( ! function_exists( 'curl_init' ) || ! function_exists( 'curl_exec' ) ) { + return new WP_Error( 'curl_disabled', __( 'Curl is disabled on your server. Please ask your host to enable it. This is required for the Cloudflare Add-on to work correctly.', 'rocket' ) ); + } + + $cf_email = get_rocket_option( 'cloudflare_email', null ); + $cf_api_key = ( defined( 'WP_ROCKET_CF_API_KEY' ) ) ? WP_ROCKET_CF_API_KEY : get_rocket_option( 'cloudflare_api_key', null ); + + if ( ! isset( $cf_email, $cf_api_key ) ) { + return new WP_Error( + 'cloudflare_credentials_empty', + sprintf( + /* translators: %1$s = opening link; %2$s = closing link */ + __( 'Cloudflare email and API key are not set. Read the %1$sdocumentation%2$s for further guidance.', 'rocket' ), + // translators: Documentation exists in EN, FR; use localized URL if applicable. + '', + '' + ) + ); + } + return new Cloudflare\Api( $cf_email, $cf_api_key ); +} + +/** + * Get a Cloudflare\Api instance & the zone_id corresponding to the domain + * + * @since 2.8.21 Get the zone ID from the options + * @since 2.8.18 Add try/catch to prevent fatal error Uncaugh Exception + * @since 2.8.16 Update to Cloudflare API v4 + * @since 2.5 + * @deprecated 3.5 + * + * @return Object Cloudflare instance & zone_id if credentials are correct, WP_Error otherwise + */ +function get_rocket_cloudflare_instance() { + _deprecated_function( __FUNCTION__ . '()', '3.5', '\WP_Rocket\Subscriber\Tools\Cloudflare_Subscriber::get_instance()' ); + $cf_email = get_rocket_option( 'cloudflare_email', null ); + $cf_api_key = ( defined( 'WP_ROCKET_CF_API_KEY' ) ) ? WP_ROCKET_CF_API_KEY : get_rocket_option( 'cloudflare_api_key', null ); + $cf_zone_id = get_rocket_option( 'cloudflare_zone_id', null ); + $is_api_keys_valid_cf = rocket_is_api_keys_valid_cloudflare( $cf_email, $cf_api_key, $cf_zone_id, true ); + + if ( is_wp_error( $is_api_keys_valid_cf ) ) { + return $is_api_keys_valid_cf; + } + + $cf_api_instance = get_rocket_cloudflare_api_instance(); + + $cf_instance = (object) [ + 'auth' => $cf_api_instance, + 'zone_id' => $cf_zone_id, + ]; + + return $cf_instance; +} + + +/** + * Test the connection with Cloudflare + * + * @since 2.9 + * @deprecated 3.5 + * @author Remy Perona + * + * @throws Exception If the connection to Cloudflare failed. + * @return Object True if connection is successful, WP_Error otherwise + */ +function rocket_cloudflare_valid_auth() { + _deprecated_function( __FUNCTION__ . '()', '3.5' ); + $cf_api_instance = get_rocket_cloudflare_api_instance(); + if ( is_wp_error( $cf_api_instance ) ) { + return $cf_api_instance; + } + + try { + $cf_zone_instance = new Cloudflare\Zone( $cf_api_instance ); + $cf_zones = $cf_zone_instance->zones(); + + if ( ! isset( $cf_zones->success ) || empty( $cf_zones->success ) ) { + throw new Exception( __( 'Connection to Cloudflare failed', 'rocket' ) ); + } + + if ( true === $cf_zones->success ) { + return true; + } + } catch ( Exception $e ) { + return new WP_Error( 'cloudflare_invalid_auth', $e->getMessage() ); + } +} + + + +/** + * Get all the current Cloudflare settings for a given domain. + * + * @since 2.8.16 Update to Cloudflare API v4 + * @since 2.5 + * @deprecated 3.5 + * + * @return mixed bool|Array Array of Cloudflare settings, false if any error connection to Cloudflare + */ +function get_rocket_cloudflare_settings() { + _deprecated_function( __FUNCTION__ . '()', '3.5', '\WP_Rocket\Subscriber\Tools\Cloudflare_Subscriber::get_settings()' ); +} + + +/** + * Set the Cloudflare Development mode. + * + * @since 2.9 Now returns a value + * @since 2.8.16 Update to Cloudflare API v4 + * @since 2.5 + * @deprecated 3.5 + * + * @param string $mode Value for Cloudflare development mode. + * @throws Exception If any error occurs when doing the API request. + * @return mixed Object|String Mode value if the update is successful, WP_Error otherwise + */ +function set_rocket_cloudflare_devmode( $mode ) { + _deprecated_function( __FUNCTION__ . '()', '3.5', '\WP_Rocket\Subscriber\Tools\Cloudflare_Subscriber::set_devmode()' ); +} + + +/** + * Set the Cloudflare Caching level. + * + * @since 2.9 Now returns a value + * @since 2.8.16 Update to Cloudflare API v4 + * @since 2.5 + * @deprecated 3.5 + * + * @param string $mode Value for Cloudflare caching level. + * @throws Exception If any error occurs when doing the API request. + * @return mixed Object|String Mode value if the update is successful, WP_Error otherwise + */ +function set_rocket_cloudflare_cache_level( $mode ) { + _deprecated_function( __FUNCTION__ . '()', '3.5', '\WP_Rocket\Subscriber\Tools\Cloudflare_Subscriber::set_cache_level()' ); +} + +/** + * Set the Cloudflare Minification. + * + * @since 2.9 Now returns a value + * @since 2.8.16 Update to Cloudflare API v4 + * @since 2.5 + * @deprecated 3.5 + * + * @param string $mode Value for Cloudflare minification. + * @throws Exception If any error occurs when doing the API request. + * @return mixed Object|String Mode value if the update is successful, WP_Error otherwise + */ +function set_rocket_cloudflare_minify( $mode ) { + _deprecated_function( __FUNCTION__ . '()', '3.5', '\WP_Rocket\Subscriber\Tools\Cloudflare_Subscriber::set_minify()' ); +} + + +/** + * Set the Cloudflare Rocket Loader. + * + * @since 2.9 Now returns value + * @since 2.8.16 Update to Cloudflare API v4 + * @since 2.5 + * @deprecated 3.5 + * + * @param string $mode Value for Cloudflare Rocket Loader. + * @throws Exception If any error occurs when doing the API request. + * @return mixed Object|String Mode value if the update is successful, WP_Error otherwise + */ +function set_rocket_cloudflare_rocket_loader( $mode ) { + _deprecated_function( __FUNCTION__ . '()', '3.5', '\WP_Rocket\Subscriber\Tools\Cloudflare_Subscriber::set_rocket_loader()' ); +} + + +/** + * Set the Browser Cache TTL in Cloudflare. + * + * @since 2.9 Now returns value + * @since 2.8.16 + * @deprecated 3.5 + * + * @param string $mode Value for Cloudflare browser cache TTL. + * @throws Exception If any error occurs when doing the API request. + * @return mixed Object|String Mode value if the update is successful, WP_Error otherwise + */ +function set_rocket_cloudflare_browser_cache_ttl( $mode ) { + _deprecated_function( __FUNCTION__ . '()', '3.5', '\WP_Rocket\Subscriber\Tools\Cloudflare_Subscriber::set_browser_cache_ttl()' ); +} + + +/** + * Purge Cloudflare cache. + * + * @since 2.9 Now returns value + * @since 2.8.16 Update to Cloudflare API v4 + * @since 2.5 + * @deprecated 3.5 + * + * @throws Exception If any error occurs when doing the API request. + * @return mixed Object|bool true if the purge is successful, WP_Error otherwise + */ +function rocket_purge_cloudflare() { + _deprecated_function( __FUNCTION__ . '()', '3.5', '\WP_Rocket\Subscriber\Tools\Cloudflare_Subscriber::purge_cloudflare()' ); +} + +/** + * Get Cloudflare IPs. + * + * @since 2.8.21 Save IPs in a transient to prevent calling the API everytime + * @since 2.8.16 + * @deprecated 3.5 + * + * @author Remy Perona + * + * @throws Exception If any error occurs when doing the API request. + * @return Object Result of API request if successful, WP_Error otherwise + */ +function rocket_get_cloudflare_ips() { + _deprecated_function( __FUNCTION__ . '()', '3.5', '\WP_Rocket\Subscriber\Tools\Cloudflare_Subscriber::get_cloudflare_ips()' ); + $cf_instance = get_rocket_cloudflare_api_instance(); + if ( is_wp_error( $cf_instance ) ) { + return $cf_instance; + } + + $cf_ips = get_transient( 'rocket_cloudflare_ips' ); + if ( false === $cf_ips ) { + try { + $cf_ips_instance = new Cloudflare\IPs( $cf_instance ); + $cf_ips = $cf_ips_instance->ips(); + + if ( ! isset( $cf_ips->success ) || ! $cf_ips->success ) { + throw new Exception( 'Error connecting to Cloudflare' ); + } + + set_transient( 'rocket_cloudflare_ips', $cf_ips, 2 * WEEK_IN_SECONDS ); + } catch ( Exception $e ) { + $cf_ips = (object) [ + 'success' => true, + 'result' => (object) [], + ]; + + $cf_ips->result->ipv4_cidrs = [ + '103.21.244.0/22', + '103.22.200.0/22', + '103.31.4.0/22', + '104.16.0.0/12', + '108.162.192.0/18', + '131.0.72.0/22', + '141.101.64.0/18', + '162.158.0.0/15', + '172.64.0.0/13', + '173.245.48.0/20', + '188.114.96.0/20', + '190.93.240.0/20', + '197.234.240.0/22', + '198.41.128.0/17', + ]; + + $cf_ips->result->ipv6_cidrs = [ + '2400:cb00::/32', + '2405:8100::/32', + '2405:b500::/32', + '2606:4700::/32', + '2803:f800::/32', + '2c0f:f248::/32', + '2a06:98c0::/29', + ]; + + set_transient( 'rocket_cloudflare_ips', $cf_ips, 2 * WEEK_IN_SECONDS ); + return $cf_ips; + } + } + + return $cf_ips; +} + +/** + * Set Real IP from CloudFlare + * + * @since 2.8.16 Uses CloudFlare API v4 to get CloudFlare IPs + * @since 2.5.4 + * + * @deprecated 3.5 + * + * @source cloudflare.php - https://wordpress.org/plugins/cloudflare/ + */ +function rocket_set_real_ip_cloudflare() { + _deprecated_function( __FUNCTION__ . '()', '3.5', '\WP_Rocket\Subscriber\Tools\Cloudflare_Subscriber::set_real_ip()' ); + global $is_cf; + + $is_cf = ( isset( $_SERVER['HTTP_CF_CONNECTING_IP'] ) ) ? true : false; + + if ( ! $is_cf ) { + return; + } + + // only run this logic if the REMOTE_ADDR is populated, to avoid causing notices in CLI mode. + if ( isset( $_SERVER['REMOTE_ADDR'] ) ) { + $cf_ips_values = rocket_get_cloudflare_ips(); + + if ( is_wp_error( $cf_ips_values ) || ! isset( $cf_ips_values->success ) || ! $cf_ips_values->success ) { + return; + } + + if ( strpos( $_SERVER['REMOTE_ADDR'], ':' ) === false ) { + $cf_ip_ranges = $cf_ips_values->result->ipv4_cidrs; + + // IPV4: Update the REMOTE_ADDR value if the current REMOTE_ADDR value is in the specified range. + foreach ( $cf_ip_ranges as $range ) { + if ( rocket_ipv4_in_range( $_SERVER['REMOTE_ADDR'], $range ) ) { + if ( $_SERVER['HTTP_CF_CONNECTING_IP'] ) { + $_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_CF_CONNECTING_IP']; + } + break; + } + } + } + else { + $cf_ip_ranges = $cf_ips_values->result->ipv6_cidrs; + + $ipv6 = get_rocket_ipv6_full( $_SERVER['REMOTE_ADDR'] ); + foreach ( $cf_ip_ranges as $range ) { + if ( rocket_ipv6_in_range( $ipv6, $range ) ) { + if ( $_SERVER['HTTP_CF_CONNECTING_IP'] ) { + $_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_CF_CONNECTING_IP']; + } + break; + } + } + } + } + + // Let people know that the CF WP plugin is turned on. + if ( ! headers_sent() ) { + header( 'X-CF-Powered-By: WP Rocket ' . WP_ROCKET_VERSION ); + } +} + +/** + * This notice is displayed after purging the CloudFlare cache + * + * @since 2.9 + * @author Remy Perona + * + * @deprecated 3.5 + * + */ +function rocket_cloudflare_purge_result() { + _deprecated_function( __FUNCTION__ . '()', '3.5', '\WP_Rocket\Subscriber\Tools\Cloudflare_Subscriber::maybe_print_notice()' ); + global $current_user; + if ( ! current_user_can( 'rocket_purge_cloudflare_cache' ) ) { + return; + } + + if ( ! is_admin() ) { + return; + } + + $notice = get_transient( $current_user->ID . '_cloudflare_purge_result' ); + if ( ! $notice ) { + return; + } + + delete_transient( $current_user->ID . '_cloudflare_purge_result' ); + + rocket_notice_html( [ + 'status' => $notice['result'], + 'message' => $notice['message'], + ] ); +} + +/** + * Purge CloudFlare cache + * + * @since 2.5 + * + * @deprecated 3.5 + * + */ +function do_admin_post_rocket_purge_cloudflare() { + _deprecated_function( __FUNCTION__ . '()', '3.5', '\WP_Rocket\Subscriber\Tools\Cloudflare_Subscriber::do_purge_cloudflare()' ); + if ( ! isset( $_GET['_wpnonce'] ) || ! wp_verify_nonce( $_GET['_wpnonce'], 'rocket_purge_cloudflare' ) ) { + wp_nonce_ays( '' ); + } + + if ( ! current_user_can( 'rocket_purge_cloudflare_cache' ) ) { + return; + } + + // Purge CloudFlare. + $cf_purge = rocket_purge_cloudflare(); + + if ( is_wp_error( $cf_purge ) ) { + $cf_purge_result = [ + 'result' => 'error', + // translators: %s = CloudFare API return message. + 'message' => sprintf( __( 'WP Rocket: %s', 'rocket' ), $cf_purge->get_error_message() ), + ]; + } else { + $cf_purge_result = [ + 'result' => 'success', + 'message' => __( 'WP Rocket: Cloudflare cache successfully purged.', 'rocket' ), + ]; + } + + set_transient( get_current_user_id() . '_cloudflare_purge_result', $cf_purge_result ); + + wp_safe_redirect( esc_url_raw( wp_get_referer() ) ); + die(); +} + +/** + * This notice is displayed after modifying the CloudFlare settings + * + * @since 2.9 + * @author Remy Perona + * + * @deprecated 3.5 + */ +function rocket_cloudflare_update_settings() { + _deprecated_function( __FUNCTION__ . '()', '3.5', '\WP_Rocket\Subscriber\Tools\Cloudflare_Subscriber::maybe_print_update_settings_notice()' ); + global $current_user; + $screen = get_current_screen(); + + if ( ! current_user_can( 'rocket_manage_options' ) ) { + return; + } + + if ( 'settings_page_wprocket' !== $screen->id ) { + return; + } + + $notices = get_transient( $current_user->ID . '_cloudflare_update_settings' ); + if ( $notices ) { + $errors = ''; + $success = ''; + delete_transient( $current_user->ID . '_cloudflare_update_settings' ); + foreach ( $notices as $notice ) { + if ( 'error' === $notice['result'] ) { + $errors .= $notice['message'] . '
    '; + } elseif ( 'success' === $notice['result'] ) { + $success .= $notice['message'] . '
    '; + } + } + + if ( ! empty( $success ) ) { + rocket_notice_html( [ + 'message' => $success, + ] ); + } + + if ( ! empty( $errors ) ) { + rocket_notice_html( [ + 'status' => 'error', + 'message' => $success, + ] ); + } + } +} + +/** + * Purge all the domain + * + * @since 2.6.8 + * @deprecated 3.5 + * + * @param string $root The path of home cache file. + * @param string $lang The current lang to purge. + * @param string $url The home url. + */ +function rocket_varnish_clean_domain( $root, $lang, $url ) { + _deprecated_function( __FUNCTION__ . '()', '3.5', 'WP_Rocket\Subscriber\Addons\Varnish\VarnishSubscriber::clean_domain()' ); + rocket_varnish_http_purge( trailingslashit( $url ) . '?vregex' ); +} + +/** + * Purge a specific page + * + * @since 2.6.8 + * @deprecated 3.5 + * + * @param string $url The url to purge. + */ +function rocket_varnish_clean_file( $url ) { + _deprecated_function( __FUNCTION__ . '()', '3.5', 'WP_Rocket\Subscriber\Addons\Varnish\VarnishSubscriber::clean_file()' ); + rocket_varnish_http_purge( trailingslashit( $url ) . '?vregex' ); +} + +/** + * Purge the homepage and its pagination + * + * @since 2.6.8 + * @deprecated 3.5 + * + * @param string $root The path of home cache file. + * @param string $lang The current lang to purge. + */ +function rocket_varnish_clean_home( $root, $lang ) { + _deprecated_function( __FUNCTION__ . '()', '3.5', 'WP_Rocket\Subscriber\Addons\Varnish\VarnishSubscriber::clean_home()' ); + $home_url = trailingslashit( get_rocket_i18n_home_url( $lang ) ); + $home_pagination_url = $home_url . trailingslashit( $GLOBALS['wp_rewrite']->pagination_base ) . '?vregex'; + + rocket_varnish_http_purge( $home_url ); + rocket_varnish_http_purge( $home_pagination_url ); +} + +/** + * Sets the Varnish IP to localhost if Cloudflare is active + * + * @since 3.3.5 + * @deprecated 3.5 + * @author Remy Perona + * + * @return string + */ +function rocket_varnish_proxy_host() { + _deprecated_function( __FUNCTION__ . '()', '3.5', 'WP_Rocket\Subscriber\Addons\Cloudflare\CloudflareSubscriber::set_varnish_localhost()' ); + return 'localhost'; +} + +/** + * Sets the Host header to the website domain if Cloudflare is active + * + * @since 3.3.5 + * @deprecated 3.5 + * @author Remy Perona + * + * @return string + */ +function rocket_varnish_proxy_request_host() { + _deprecated_function( __FUNCTION__ . '()', '3.5', 'WP_Rocket\Subscriber\Addons\Cloudflare\CloudflareSubscriber::set_varnish_purge_request_host()' ); + return wp_parse_url( home_url(), PHP_URL_HOST ); +} + +/** + * Send data to Varnish + * + * @since 2.6.8 + * @deprecated 3.5 + * + * @param string $url The URL to purge. + * @return void + */ +function rocket_varnish_http_purge( $url ) { + _deprecated_function( __FUNCTION__ . '()', '3.5', 'WP_Rocket\Addons\Varnish\Varnish::purge()' ); + $parse_url = get_rocket_parse_url( $url ); + + $varnish_x_purgemethod = 'default'; + $regex = ''; + + if ( 'vregex' === $parse_url['query'] ) { + $varnish_x_purgemethod = 'regex'; + $regex = '.*'; + } + + /** + * Filter the Varnish IP to call + * + * @since 2.6.8 + * @param string The Varnish IP + */ + $varnish_ip = apply_filters( 'rocket_varnish_ip', '' ); + + if ( defined( 'WP_ROCKET_VARNISH_IP' ) && ! $varnish_ip ) { + $varnish_ip = WP_ROCKET_VARNISH_IP; + } + + /** + * Filter the HTTP protocol (scheme) + * + * @since 2.7.3 + * @param string The HTTP protocol + */ + $scheme = apply_filters( 'rocket_varnish_http_purge_scheme', 'http' ); + + $parse_url['host'] = ( $varnish_ip ) ? $varnish_ip : $parse_url['host']; + $purgeme = $scheme . '://' . $parse_url['host'] . $parse_url['path'] . $regex; + + wp_remote_request( + $purgeme, + array( + 'method' => 'PURGE', + 'blocking' => false, + 'redirection' => 0, + /** + * Filters the headers to send with the Varnish purge request + * + * @since 3.1 + * @author Remy Perona + * + * @param array $headers Headers to send. + */ + 'headers' => apply_filters( + 'rocket_varnish_purge_headers', + [ + /** + * Filters the host value passed in the request headers + * + * @since 2.8.15 + * @param string The host + */ + 'host' => apply_filters( 'rocket_varnish_purge_request_host', $parse_url['host'] ), + 'X-Purge-Method' => $varnish_x_purgemethod, + ] + ), + ) + ); +} + +/** + * Display a warning notice if WP Rocket scheduled events are not running properly + * + * @since 3.5.4 deprecated + * @since 3.3.7 + * @author Remy Perona + * + * @return void + */ +function rocket_warning_cron() { + _deprecated_function( __FUNCTION__ . '()', '3.5.4', 'WP_Rocket\Engine\Admin\HealthCheck::missed_cron()' ); + $screen = get_current_screen(); + + // This filter is documented in inc/admin-bar.php. + if ( ! current_user_can( apply_filters( 'rocket_capacity', 'manage_options' ) ) ) { + return; + } + + if ( 'settings_page_wprocket' !== $screen->id ) { + return; + } + + $boxes = get_user_meta( get_current_user_id(), 'rocket_boxes', true ); + + if ( in_array( __FUNCTION__, (array) $boxes, true ) ) { + return; + } + + if ( 0 === (int) get_rocket_option( 'purge_cron_interval' ) && 0 === get_rocket_option( 'async_css' ) && 0 === get_rocket_option( 'manual_preload' ) && 0 === get_rocket_option( 'schedule_automatic_cleanup' ) ) { + return; + } + + $events = [ + 'rocket_purge_time_event' => 'Scheduled Cache Purge', + 'rocket_database_optimization_time_event' => 'Scheduled Database Optimization', + 'rocket_database_optimization_cron_interval' => 'Database Optimization Process', + 'rocket_preload_cron_interval' => 'Preload', + 'rocket_critical_css_generation_cron_interval' => 'Critical Path CSS Generation Process', + ]; + + foreach ( $events as $event => $description ) { + $timestamp = wp_next_scheduled( $event ); + + if ( false === $timestamp ) { + unset( $events[ $event ] ); + continue; + } + + if ( $timestamp - time() > 0 ) { + unset( $events[ $event ] ); + continue; + } + } + + if ( empty( $events ) ) { + return; + } + + $message = '

    ' . _n( 'The following scheduled event failed to run. This may indicate the CRON system is not running properly, which can prevent some WP Rocket features from working as intended:', 'The following scheduled events failed to run. This may indicate the CRON system is not running properly, which can prevent some WP Rocket features from working as intended:', count( $events ), 'rocket' ) . '

    '; + + $message .= '
      '; + + foreach ( $events as $description ) { + $message .= '
    • ' . $description . '
    • '; + } + + $message .= '
    '; + $message .= '

    ' . __( 'Please contact your host to check if CRON is working.', 'rocket' ) . '

    '; + + rocket_notice_html( + [ + 'status' => 'warning', + 'dismissible' => '', + 'message' => $message, + 'dismiss_button' => __FUNCTION__, + ] + ); +} + +/** + * Add a link "Purge this cache" in the taxonomy edit area + * + * @since 3.5.5 deprecated + * @since 1.0 + * + * @param array $actions An array of row action links. + * @param object $term The term object. + * @return array Updated array of row action links + */ +function rocket_tag_row_actions( $actions, $term ) { + _deprecated_function( __FUNCTION__ . '()', '3.5.5', 'WP_Rocket\Engine\Cache\AdminSubscriber::add_purge_term_link()' ); + global $taxnow; + + if ( ! current_user_can( 'rocket_purge_terms' ) ) { + return $actions; + } + + $url = wp_nonce_url( admin_url( 'admin-post.php?action=purge_cache&type=term-' . $term->term_id . '&taxonomy=' . $taxnow ), 'purge_cache_term-' . $term->term_id ); + $actions['rocket_purge'] = sprintf( '%s', $url, __( 'Clear this cache', 'rocket' ) ); + + return $actions; +} \ No newline at end of file diff --git a/wp-content/plugins/wp-rocket/inc/deprecated/3.6.php b/wp-content/plugins/wp-rocket/inc/deprecated/3.6.php new file mode 100644 index 0000000..ed644ab --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/deprecated/3.6.php @@ -0,0 +1,1134 @@ += 0 ) {\n\n"; + + // Class autoloader. + $autoloader = rocket_direct_filesystem()->get_contents( rocket_get_constant( 'WP_ROCKET_INC_PATH' ) . 'process-autoloader.php' ); + + if ( $autoloader ) { + $autoloader = preg_replace( '@^<\?php\s*@', '', $autoloader ); + $autoloader = str_replace( [ "\n", "\n\t\n" ], [ "\n\t", "\n\n" ], trim( $autoloader ) ); + $autoloader = str_replace( 'WP_ROCKET_PATH', "'" . rocket_get_constant( 'WP_ROCKET_PATH' ) . "'", $autoloader ); + + $buffer .= "\t$autoloader\n\n"; + } + + // Initialize the Cache class and process. + $buffer .= "\t" . 'if ( ! class_exists( \'\WP_Rocket\Buffer\Cache\' ) ) { + if ( ! defined( \'DONOTROCKETOPTIMIZE\' ) ) { + define( \'DONOTROCKETOPTIMIZE\', true ); // WPCS: prefix ok. + } + return; + } + + $rocket_config_class = new \WP_Rocket\Buffer\Config( + [ + \'config_dir_path\' => \'' . rocket_get_constant( 'WP_ROCKET_CONFIG_PATH' ) . '\', + ] + ); + + ( new \WP_Rocket\Buffer\Cache( + new \WP_Rocket\Buffer\Tests( + $rocket_config_class + ), + $rocket_config_class, + [ + \'cache_dir_path\' => \'' . rocket_get_constant( 'WP_ROCKET_CACHE_PATH' ) . '\', + ] + ) )->maybe_init_process();' . "\n"; + $buffer .= "} else {\n"; + // Add a constant to provent include issue. + $buffer .= "\tdefine( 'WP_ROCKET_ADVANCED_CACHE_PROBLEM', true );\n"; + $buffer .= "}\n"; + + /** + * Filter the content of advanced-cache.php file. + * + * @since 2.1 + * + * @param string $buffer The content that will be printed in advanced-cache.php. + */ + return (string) apply_filters( 'rocket_advanced_cache_file', $buffer ); +} + +/** + * This warning is displayed when the advanced-cache.php file isn't writeable + * + * @since 3.6 deprecated + * @since 2.0 + */ +function rocket_warning_advanced_cache_permissions() { + _deprecated_function( __FUNCTION__ . '()', '3.6', '\WP_Rocket\Engine\Cache\AdvancedCache::notice_permissions()' ); + + $advanced_cache_file = WP_CONTENT_DIR . '/advanced-cache.php'; + + if ( current_user_can( 'rocket_manage_options' ) + && ! rocket_direct_filesystem()->is_writable( $advanced_cache_file ) + && ( ! defined( 'WP_ROCKET_ADVANCED_CACHE' ) || ! WP_ROCKET_ADVANCED_CACHE ) + && rocket_valid_key() ) { + + $boxes = get_user_meta( get_current_user_id(), 'rocket_boxes', true ); + + if ( in_array( __FUNCTION__, (array) $boxes, true ) ) { + return; + } + + $message = rocket_notice_writing_permissions( basename( WP_CONTENT_DIR ) . '/advanced-cache.php' ); + + rocket_notice_html( + [ + 'status' => 'error', + 'dismissible' => '', + 'message' => $message, + 'dismiss_button' => __FUNCTION__, + 'readonly_content' => get_rocket_advanced_cache_file(), + ] + ); + } +} + +/** + * This warning is displayed when the advanced-cache.php file isn't ours + * + * @since 3.6 Deprecated + * @since 2.2 + */ +function rocket_warning_advanced_cache_not_ours() { + _deprecated_function( __FUNCTION__ . '()', '3.6', '\WP_Rocket\Engine\Cache\AdvancedCache::notice_content_not_ours()' ); + + if ( ! ( 'plugins.php' === $GLOBALS['pagenow'] && isset( $_GET['activate'] ) ) // phpcs:ignore WordPress.Security.NonceVerification.Recommended + && current_user_can( 'rocket_manage_options' ) + && ! defined( 'WP_ROCKET_ADVANCED_CACHE' ) + && ( defined( 'WP_CACHE' ) && WP_CACHE ) + && get_rocket_option( 'version' ) === WP_ROCKET_VERSION + && rocket_valid_key() ) { + + $message = rocket_notice_writing_permissions( basename( WP_CONTENT_DIR ) . '/advanced-cache.php' ); + + rocket_notice_html( + [ + 'status' => 'error', + 'dismissible' => '', + 'message' => $message, + ] + ); + } +} + +/** + * Exclude fusion styles from cache busting to prevent cache dir issues + * + * @deprecated 3.6 + * @author Remy Perona + * + * @param array $excluded_files An array of excluded files. + * @return array + */ +function rocket_exclude_avada_dynamic_css( $excluded_files ) { + _deprecated_function( __FUNCTION__ . '()', '3.6' ); + + $upload_dir = wp_upload_dir(); + + $excluded_files[] = rocket_clean_exclude_file( $upload_dir['baseurl'] . '/fusion-styles/(.*)' ); + + return $excluded_files; +} + +/** + * Excludes Uncode JS files from remove query strings + * + * @deprecated 3.6 + * @since 3.3.3 + * @author Remy Perona + * + * @param array $exclude_busting Array of CSS and JS filepaths to be excluded. + * @return array + */ +function rocket_exclude_busting_uncode( $exclude_busting ) { + _deprecated_function( __FUNCTION__ . '()', '3.6' ); + + // CSS files. + $exclude_busting[] = rocket_clean_exclude_file( get_template_directory_uri() . '/library/css/style.css' ); + $exclude_busting[] = rocket_clean_exclude_file( get_template_directory_uri() . '/library/css/uncode-icons.css' ); + $exclude_busting[] = rocket_clean_exclude_file( get_template_directory_uri() . '/library/css/style-custom.css' ); + + // JS files. + $exclude_busting[] = rocket_clean_exclude_file( get_template_directory_uri() . '/library/js/init.js' ); + $exclude_busting[] = rocket_clean_exclude_file( get_template_directory_uri() . '/library/js/min/init.min.js' ); + $exclude_busting[] = rocket_clean_exclude_file( get_template_directory_uri() . '/library/js/app.js' ); + $exclude_busting[] = rocket_clean_exclude_file( get_template_directory_uri() . '/library/js/app.min.js' ); + $exclude_busting[] = rocket_clean_exclude_file( get_template_directory_uri() . '/library/js/plugins.js' ); + $exclude_busting[] = rocket_clean_exclude_file( get_template_directory_uri() . '/library/js/plugins.min.js' ); + return $exclude_busting; +} + +/** + * Purge the cache when the beaver builder layout is updated to update the minified files content & URL + * + * @deprecated 3.6 + * @since 2.9 Also clear the cache busting folder + * @since 2.8.6 + */ +function rocket_beaver_builder_clean_domain() { + _deprecated_function( __FUNCTION__ . '()', '3.6', 'WP_Rocket\ThirdParty\Plugins\PageBuilder\BeaverBuilder::purge_cache' ); + rocket_clean_minify(); + rocket_clean_domain(); +} + +/** + * Returns paths used for cache busting + * + * @since 2.9 + * @deprecated 3.6 + * @author Remy Perona + * + * @param string $filename name of the cache busting file. + * @param string $extension file extension. + * @return array Array of paths used for cache busting + */ +function rocket_get_cache_busting_paths( $filename, $extension ) { + _deprecated_function( __FUNCTION__ . '()', '3.6' ); + $blog_id = get_current_blog_id(); + $cache_busting_path = WP_ROCKET_CACHE_BUSTING_PATH . $blog_id; + $filename = rocket_realpath( rtrim( str_replace( [ ' ', '%20' ], '-', $filename ) ) ); + $cache_busting_filepath = $cache_busting_path . $filename; + $cache_busting_url = WP_ROCKET_CACHE_BUSTING_URL . $blog_id . $filename; + + switch ( $extension ) { + case 'css': + /** This filter is documented in inc/functions/minify.php */ + $cache_busting_url = apply_filters( 'rocket_css_url', $cache_busting_url ); + break; + case 'js': + /** This filter is documented in inc/functions/minify.php */ + $cache_busting_url = apply_filters( 'rocket_js_url', $cache_busting_url ); + break; + } + + return [ + 'bustingpath' => $cache_busting_path, + 'filepath' => $cache_busting_filepath, + 'url' => $cache_busting_url, + ]; +} + +/** + * Caches SCCSS code & remove the default enqueued URL + * + * @since 2.9 + * @deprecated 3.6 + * + * @author Remy Perona + */ +function rocket_cache_sccss() { + _deprecated_function( __FUNCTION__ . '()', '3.6', '\WP_Rocket\ThirdParty\Plugins\SimpleCustomCss::cache_sccss()' ); + $sccss = rocket_get_cache_busting_paths( 'sccss.css', 'css' ); + + if ( ! file_exists( $sccss['filepath'] ) ) { + rocket_sccss_create_cache_file( $sccss['bustingpath'], $sccss['filepath'] ); + } + + if ( file_exists( $sccss['filepath'] ) ) { + wp_enqueue_style( 'scss', $sccss['url'], '', filemtime( $sccss['filepath'] ) ); + remove_action( 'wp_enqueue_scripts', 'sccss_register_style', 99 ); + } +} + +/** + * Deletes & recreates cache for SCCSS code + * + * @since 2.9 + * @deprecated 3.6 + * + * @author Remy Perona + */ +function rocket_delete_sccss_cache_file() { + _deprecated_function( __FUNCTION__ . '()', '3.6', '\WP_Rocket\ThirdParty\Plugins\SimpleCustomCss::update_cache_file()' ); + $sccss = rocket_get_cache_busting_paths( 'sccss.css', 'css' ); + + array_map( 'unlink', glob( $sccss['bustingpath'] . 'sccss*.css' ) ); + rocket_clean_domain(); + rocket_sccss_create_cache_file( $sccss['bustingpath'], $sccss['filepath'] ); +} + +/** + * Returns the filename for SCSSS cache file + * + * @since 2.9 + * @deprecated 3.6 + * + * @author Remy Perona + * + * @param string $filename filename. + * @return string filename + */ +function rocket_sccss_cache_busting_filename( $filename ) { + _deprecated_function( __FUNCTION__ . '()', '3.6' ); + if ( false !== strpos( $filename, 'sccss' ) ) { + return preg_replace( '/(?:.*)(sccss(?:.*))/i', '$1', $filename ); + } + + return $filename; +} + +/** + * Creates the cache file for SCCSS code + * + * @since 2.9 + * @deprecated 3.6 + * + * @author Remy Perona + * + * @param string $cache_busting_path Path to the cache busting directory. + * @param string $cache_sccss_filepath Path to the sccss cache file. + */ +function rocket_sccss_create_cache_file( $cache_busting_path, $cache_sccss_filepath ) { + _deprecated_function( __FUNCTION__ . '()', '3.6', '\WP_Rocket\ThirdParty\Plugins\SimpleCustomCss::create_cache_file()' ); + $options = get_option( 'sccss_settings' ); + $raw_content = isset( $options['sccss-content'] ) ? $options['sccss-content'] : ''; + $content = wp_kses( $raw_content, [ '\'', '\"' ] ); + $content = str_replace( '>', '>', $content ); + + if ( ! rocket_direct_filesystem()->is_dir( $cache_busting_path ) ) { + rocket_mkdir_p( $cache_busting_path ); + } + + rocket_put_content( $cache_sccss_filepath, $content ); +} + +/** + * This warning is displayed when the wp-config.php file isn't writable + * + * @since 3.6.1 deprecated + * @since 2.0 + */ +function rocket_warning_wp_config_permissions() { + _deprecated_function( __FUNCTION__ . '()', '3.6.1', '\WP_Rocket\Engine\Cache\WPCache::notice_wp_config_permissions()' ); + $config_file = rocket_find_wpconfig_path(); + + if ( ! ( 'plugins.php' === $GLOBALS['pagenow'] && isset( $_GET['activate'] ) ) // phpcs:ignore WordPress.Security.NonceVerification.Recommended + + && current_user_can( 'rocket_manage_options' ) + && ( ! rocket_direct_filesystem()->is_writable( $config_file ) && ( ! defined( 'WP_CACHE' ) || ! WP_CACHE ) ) + && rocket_valid_key() ) { + + $boxes = get_user_meta( get_current_user_id(), 'rocket_boxes', true ); + + if ( in_array( __FUNCTION__, (array) $boxes, true ) ) { + return; + } + + $message = rocket_notice_writing_permissions( 'wp-config.php' ); + + rocket_notice_html( + [ + 'status' => 'error', + 'dismissible' => '', + 'message' => $message, + 'dismiss_button' => __FUNCTION__, + 'readonly_content' => '/** Enable Cache by ' . WP_ROCKET_PLUGIN_NAME . " */\r\ndefine( 'WP_CACHE', true );\r\n", + ] + ); + } +} + +/** + * Try to find the correct wp-config.php file, support one level up in file tree. + * + * @since 3.6 deprecated + * @since 2.1 + * + * @return string|bool The path of wp-config.php file or false if not found. + */ +function rocket_find_wpconfig_path() { + _deprecated_function( __FUNCTION__ . '()', '3.6.1', '\WP_Rocket\Engine\Cache\WPCache::find_wpconfig_path()' ); + /** + * Filter the wp-config's filename. + * + * @since 2.11 + * + * @param string $filename The WP Config filename, without the extension. + */ + $config_file_name = apply_filters( 'rocket_wp_config_name', 'wp-config' ); + $abspath = rocket_get_constant( 'ABSPATH' ); + $config_file = "{$abspath}{$config_file_name}.php"; + $filesystem = rocket_direct_filesystem(); + + if ( + $filesystem->exists( $config_file ) + && + $filesystem->is_writable( $config_file ) + ) { + return $config_file; + } + + $abspath_parent = dirname( $abspath ) . DIRECTORY_SEPARATOR; + $config_file_alt = "{$abspath_parent}{$config_file_name}.php"; + + if ( + $filesystem->exists( $config_file_alt ) + && + $filesystem->is_writable( $config_file_alt ) + && + ! $filesystem->exists( "{$abspath_parent}wp-settings.php" ) + ) { + return $config_file_alt; + } + + // No writable file found. + return false; +} + +/** + * Define WP_CACHE to true if it's not defined yet. + * + * @since 3.6.1 deprecated + * @since 2.6 + */ +function rocket_maybe_set_wp_cache_define() { + _deprecated_function( __FUNCTION__ . '()', '3.6.1', '\WP_Rocket\Engine\Cache\WPCache::maybe_set_wp_cache()' ); + + if ( defined( 'WP_CACHE' ) && ! WP_CACHE ) { + set_rocket_wp_cache_define( true ); + } +} + +/** + * Get all dates archives urls associated to a specific post. + * + * @since 3.6.1 deprecated + * @since 1.0 + * + * @param int $post_id The post ID. + * + * @return array $urls List of dates URLs on success; else, an empty []. + */ +function get_rocket_post_dates_urls( $post_id ) { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + _deprecated_function( __FUNCTION__ . '()', '3.6.1', '\WP_Rocket\Engine\Cache\Purge::purge_dates_archives()' ); + $time = get_the_time( 'Y-m-d', $post_id ); + if ( empty( $time ) ) { + return []; + } + + // Extract and prep the year, month, and day. + $date = explode( '-', $time ); + $year = trailingslashit( get_year_link( $date[0] ) ); + $month = trailingslashit( get_month_link( $date[0], $date[1] ) ); + + $urls = [ + "{$year}index.html", + "{$year}index.html_gzip", + $year . $GLOBALS['wp_rewrite']->pagination_base, + "{$month}index.html", + "{$month}index.html_gzip", + $month . $GLOBALS['wp_rewrite']->pagination_base, + get_day_link( $date[0], $date[1], $date[2] ), + ]; + + /** + * Filter the list of dates URLs. + * + * @since 1.1.0 + * + * @param array $urls List of dates URLs. + */ + return (array) apply_filters( 'rocket_post_dates_urls', $urls ); +} + +/** + * Added or set the value of the WP_CACHE constant + * + * @since 3.6.1 deprecated + * @since 2.0 + * + * @param bool $turn_it_on The value of WP_CACHE constant. + * @return void + */ +function set_rocket_wp_cache_define( $turn_it_on ) { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + _deprecated_function( __FUNCTION__ . '()', '3.6.1', '\WP_Rocket\Engine\Cache\WPCache::set_wp_cache_constant()' ); + // If WP_CACHE is already define, return to get a coffee. + if ( ! rocket_valid_key() || ( $turn_it_on && defined( 'WP_CACHE' ) && WP_CACHE ) ) { + return; + } + + if ( defined( 'IS_PRESSABLE' ) && IS_PRESSABLE ) { + return; + } + + // Get path of the config file. + $config_file_path = rocket_find_wpconfig_path(); + if ( ! $config_file_path ) { + return; + } + + $filesystem = rocket_direct_filesystem(); + + // Get content of the config file. + $config_file_contents = $filesystem->get_contents( $config_file_path ); + + // Get the value of WP_CACHE constant. + $turn_it_on = $turn_it_on ? 'true' : 'false'; + + /** + * Filter allow to change the value of WP_CACHE constant + * + * @since 2.1 + * + * @param string $turn_it_on The value of WP_CACHE constant. + */ + $turn_it_on = apply_filters( 'set_rocket_wp_cache_define', $turn_it_on ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + + // Get WP_CACHE constant define. + $constant = "define('WP_CACHE', $turn_it_on); // Added by WP Rocket"; + + // Lets find out if the constant WP_CACHE is defined or not. + $wp_cache_found = preg_match( '/^define\(\s*\'WP_CACHE\',(.*)\)/m', $config_file_contents, $matches ); + + if ( ! $wp_cache_found ) { + $config_file_contents = preg_replace( '/(<\?php)/i', "public || 'product_shipping_class' === $taxonomy->name ) { + continue; + } + + // Get the terms related to post. + $terms = get_the_terms( $post_id, $taxonomy->name ); + + if ( empty( $terms ) ) { + continue; + } + foreach ( $terms as $term ) { + $term_url = get_term_link( $term->slug, $taxonomy->name ); + if ( ! is_wp_error( $term_url ) ) { + $urls[] = $term_url; + } + if ( ! is_taxonomy_hierarchical( $taxonomy->name ) ) { + continue; + } + $ancestors = (array) get_ancestors( $term->term_id, $taxonomy->name ); + foreach ( $ancestors as $ancestor ) { + $ancestor_object = get_term( $ancestor, $taxonomy->name ); + if ( ! $ancestor_object instanceof WP_Term ) { + continue; + } + $ancestor_term_url = get_term_link( $ancestor_object->slug, $taxonomy->name ); + if ( ! is_wp_error( $ancestor_term_url ) ) { + $urls[] = $ancestor_term_url; + } + } + } + } + + /** + * Filter the list of taxonomies URLs + * + * @since 1.1.0 + * + * @param array $urls List of taxonomies URLs + */ + return apply_filters( 'rocket_post_terms_urls', $urls ); +} + +/** + * Rules to serve gzip compressed CSS & JS files if they exists and client accepts gzip + * + * @since 3.6.0.3 deprecated + * @since 3.6.0.2 Update rules used to prevent content encoding issue + * @since 3.6 + * @author Remy Perona + * + * @return string + */ +function rocket_get_compressed_assets_rules() { + _deprecated_function( __FUNCTION__ . '()', '3.6.0.3' ); + + $rules = << + RewriteCond %{HTTP:Accept-Encoding} gzip + RewriteCond %{REQUEST_FILENAME}\.gz -f + RewriteRule \.(css|js)$ %{REQUEST_URI}.gz [L] + + # Prevent mod_deflate double gzip + RewriteRule \.gz$ - [E=no-gzip:1] + + + + # Serve correct content types + + # (1) + RemoveType gz + + # Serve correct content types + AddType text/css css.gz + AddType text/javascript js.gz + + # Serve correct content charset + AddCharset utf-8 .css.gz \ + .js.gz + + + # Force proxies to cache gzipped and non-gzipped files separately + Header append Vary Accept-Encoding + + + # Serve correct encoding type + AddEncoding gzip .gz + + +HTACCESS; + + return apply_filters( 'rocket_htaccess_compressed_assets', $rules ); +} + +/** + * Get list of CSS files to be excluded from async CSS. + * + * @since 3.6.2 deprecated + * @since 2.10 + * @author Remy Perona + * + * @return array An array of URLs for the CSS files to be excluded. + */ +function get_rocket_exclude_async_css() { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + _deprecated_function( __FUNCTION__ . '()', '3.6.2', '\WP_Rocket\Engine\CriticalPath\CriticalCSS::get_exclude_async_css()' ); + /** + * Filter list of async CSS files + * + * @since 2.10 + * @author Remy Perona + * + * @param array $exclude_async_css An array of URLs for the CSS files to be excluded. + */ + $exclude_async_css = (array) apply_filters( 'rocket_exclude_async_css', [] ); + $exclude_async_css = array_filter( $exclude_async_css ); + $exclude_async_css = array_flip( array_flip( $exclude_async_css ) ); + + return $exclude_async_css; +} + +/** + * Changes the text on the Varnish one-click block. + * + * @deprecated 3.6.1 + * @since 3.0 + * + * @param array $settings Field settings data. + * + * @return array modified field settings data. + */ +function rocket_wpengine_varnish_field( $settings ) { + _deprecated_function( __FUNCTION__ . '()', '3.6.1', '\WP_Rocket\ThirdParty\Hostings\WPEngine::varnish_addon_title' ); + $settings['varnish_auto_purge']['title'] = sprintf( + // Translators: %s = Hosting name. + __( 'Your site is hosted on %s, we have enabled Varnish auto-purge for compatibility.', 'rocket' ), + 'WP Engine' + ); + + return $settings; +} + +/** + * Conflict with WP Engine caching system. + * + * @deprecated 3.6.1 + * @since 2.6.4 + * + */ +function rocket_stop_generate_caching_files_on_wpengine() { + _deprecated_function( __FUNCTION__ . '()', '3.6.1' ); + add_filter( 'do_rocket_generate_caching_files', '__return_false' ); +} + +/** + * Run WP Rocket preload bot after purged the Varnish cache via WP Engine Hosting. + * + * @deprecated 3.6.1 + * @since 2.6.4 + */ +function rocket_run_rocket_bot_after_wpengine() { + _deprecated_function( __FUNCTION__ . '()', '3.6.1', '\WP_Rocket\ThirdParty\Hostings\WPEngine::run_rocket_bot_after_wpengine' ); + if ( wpe_param( 'purge-all' ) && defined( 'PWP_NAME' ) && check_admin_referer( PWP_NAME . '-config' ) ) { + // Preload cache. + run_rocket_bot(); + run_rocket_sitemap_preload(); + } +} + +/** + * Call the cache server to purge the cache with WP Engine hosting. + * + * @deprecated 3.6.1 + * @since 2.6.4 + */ +function rocket_clean_wpengine() { + _deprecated_function( __FUNCTION__ . '()', '3.6.1', '\WP_Rocket\ThirdParty\Hostings\WPEngine::clean_wpengine' ); + if ( method_exists( 'WpeCommon', 'purge_memcached' ) ) { + WpeCommon::purge_memcached(); + } + + if ( method_exists( 'WpeCommon', 'purge_varnish_cache' ) ) { + WpeCommon::purge_varnish_cache(); + } +} + +/** + * Gets WP Engine CDN Domain. + * + * @deprecated 3.6.1 + * @since 2.8.6 + * + * return string $cdn_domain the WP Engine CDN Domain. + */ +function rocket_get_wp_engine_cdn_domain() { + _deprecated_function( __FUNCTION__ . '()', '3.6.1' ); + global $wpe_netdna_domains, $wpe_netdna_domains_secure; + + $cdn_domain = ''; + $is_ssl = ''; + + if ( isset( $_SERVER['HTTPS'] ) ) { + $is_ssl = sanitize_text_field( wp_unslash( $_SERVER['HTTPS'] ) ); + } + + if ( preg_match( '/^[oO][fF]{2}$/', $is_ssl ) ) { + $is_ssl = false; // have seen this! + } + + $native_schema = $is_ssl ? 'https' : 'http'; + + $domains = $wpe_netdna_domains; + // Determine the CDN, if any. + if ( $is_ssl ) { + $domains = $wpe_netdna_domains_secure; + } + + $wpengine = WpeCommon::instance(); + $cdn_domain = $wpengine->get_cdn_domain( $domains, home_url(), $is_ssl ); + + if ( ! empty( $cdn_domain ) ) { + $cdn_domain = $native_schema . '://' . $cdn_domain; + } + + return $cdn_domain; +} + +/** + * Add WP Rocket footprint on Buffer. + * + * @deprecated 3.6.1 + * @since 3.3.2 + * + * @param string $buffer HTML content. + * + * @return string HTML with WP Rocket footprint. + */ +function rocket_wpengine_add_footprint( $buffer ) { + _deprecated_function( __FUNCTION__ . '()', '3.6.1', '\WP_Rocket\ThirdParty\Hostings\WPEngine::add_footprint' ); + if ( ! preg_match( '/<\/html>/i', $buffer ) ) { + return $buffer; + } + + $footprint = defined( 'WP_ROCKET_WHITE_LABEL_FOOTPRINT' ) + ? "\n" . ''; + + return $buffer . $footprint; +} + +/** + * Tell WP what to do when plugin is deactivated. + * + * @since 3.6.3 deprecated + * @since 1.0 + */ +function rocket_deactivation() { + _deprecated_function( __FUNCTION__ . '()', '3.6.3', '\WP_Rocket\Engine\Deactivation\Deactivation::deactivate_plugin' ); + global $is_apache; + + $filesystem = rocket_direct_filesystem(); + $wp_cache = new WPCache( $filesystem ); + + if ( ! isset( $_GET['rocket_nonce'] ) || ! wp_verify_nonce( sanitize_key( $_GET['rocket_nonce'] ), 'force_deactivation' ) ) { + $causes = []; + + // .htaccess problem. + if ( $is_apache && ! $filesystem->is_writable( get_home_path() . '.htaccess' ) ) { + $causes[] = 'htaccess'; + } + + // wp-config problem. + if ( + ! $wp_cache->find_wpconfig_path() + && + // This filter is documented in inc/Engine/Cache/WPCache.php. + (bool) apply_filters( 'rocket_set_wp_cache_constant', true ) + ) { + $causes[] = 'wpconfig'; + } + + if ( count( $causes ) ) { + set_transient( get_current_user_id() . '_donotdeactivaterocket', $causes ); + wp_safe_redirect( wp_get_referer() ); + die(); + } + } + + // Delete config files. + rocket_delete_config_file(); + + if ( ! count( glob( WP_ROCKET_CONFIG_PATH . '*.php' ) ) ) { + // Delete All WP Rocket rules of the .htaccess file. + flush_rocket_htaccess( true ); + + // Remove WP_CACHE constant in wp-config.php. + $wp_cache->set_wp_cache_constant( false ); + + // Delete content of advanced-cache.php. + rocket_put_content( WP_CONTENT_DIR . '/advanced-cache.php', '' ); + } + + // Update customer key & licence. + wp_remote_get( + WP_ROCKET_WEB_API . 'pause-licence.php', + [ + 'blocking' => false, + ] + ); + + // Delete transients. + delete_transient( 'rocket_check_licence_30' ); + delete_transient( 'rocket_check_licence_1' ); + delete_site_transient( 'update_wprocket_response' ); + + // Unschedule WP Cron events. + wp_clear_scheduled_hook( 'rocket_facebook_tracking_cache_update' ); + wp_clear_scheduled_hook( 'rocket_google_tracking_cache_update' ); + wp_clear_scheduled_hook( 'rocket_cache_dir_size_check' ); + + /** + * WP Rocket deactivation. + * + * @since 3.1.5 + * @author Grégory Viguier + */ + do_action( 'rocket_deactivation' ); + + ( new Capabilities_Subscriber() )->remove_rocket_capabilities(); +} + +/** + * Tell WP what to do when plugin is activated. + * + * @since 3.6.3 + * @since 1.1.0 + */ +function rocket_activation() { + _deprecated_function( __FUNCTION__ . '()', '3.6.3', '\WP_Rocket\Engine\Activation\Activation::deactivate_plugin' ); + ( new Capabilities_Subscriber() )->add_rocket_capabilities(); + + $filesystem = rocket_direct_filesystem(); + $wp_cache = new WPCache( $filesystem ); + + // Last constants. + define( 'WP_ROCKET_PLUGIN_NAME', 'WP Rocket' ); + define( 'WP_ROCKET_PLUGIN_SLUG', sanitize_key( WP_ROCKET_PLUGIN_NAME ) ); + + if ( defined( 'SUNRISE' ) && SUNRISE === 'on' && function_exists( 'domain_mapping_siteurl' ) ) { + require WP_ROCKET_INC_PATH . 'domain-mapping.php'; + } + + require WP_ROCKET_FUNCTIONS_PATH . 'options.php'; + require WP_ROCKET_FUNCTIONS_PATH . 'formatting.php'; + require WP_ROCKET_FUNCTIONS_PATH . 'i18n.php'; + require WP_ROCKET_FUNCTIONS_PATH . 'htaccess.php'; + + if ( class_exists( 'WPaaS\Plugin' ) ) { + require WP_ROCKET_3RD_PARTY_PATH . 'hosting/godaddy.php'; + } + if ( defined( 'O2SWITCH_VARNISH_PURGE_KEY' ) ) { + require WP_ROCKET_3RD_PARTY_PATH . 'hosting/o2switch.php'; + } + + if ( rocket_valid_key() ) { + // Add All WP Rocket rules of the .htaccess file. + flush_rocket_htaccess(); + + // Add WP_CACHE constant in wp-config.php. + $wp_cache->set_wp_cache_constant( true ); + } + + // Create the cache folders (wp-rocket & min). + rocket_init_cache_dir(); + + // Create the config folder (wp-rocket-config). + rocket_init_config_dir(); + + // Create advanced-cache.php file. + rocket_generate_advanced_cache_file( new AdvancedCache( WP_ROCKET_PATH . 'views/cache/', $filesystem ) ); + + /** + * WP Rocket activation. + * + * @since 3.1.5 + * @author Grégory Viguier + */ + do_action( 'rocket_activation' ); + + // Update customer key & licence. + wp_remote_get( + WP_ROCKET_WEB_API . 'activate-licence.php', + [ + 'blocking' => false, + ] + ); + + wp_remote_get( + home_url(), + [ + 'timeout' => 0.01, + 'blocking' => false, + 'user-agent' => 'WP Rocket/Homepage Preload', + 'sslverify' => apply_filters( 'https_local_ssl_verify', false ), // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound + ] + ); +} + +/** + * Excludes Divi's Salvatorre script from JS minification + * + * Exclude it to prevent an error after minification/concatenation + * + * @since 3.6.3 deprecated + * @since 2.9 + * @author Remy Perona + * + * @param Array $excluded_js An array of JS paths to be excluded. + * @return Array the updated array of paths + */ +function rocket_exclude_js_divi( $excluded_js ) { + _deprecated_function( __FUNCTION__ . '()', '3.6.3', '\WP_Rocket\ThirdParty\Themes\Divi::exclude_js' ); + if ( defined( 'ET_BUILDER_URI' ) ) { + $excluded_js[] = str_replace( home_url(), '', ET_BUILDER_URI ) . '/scripts/salvattore.min.js'; + } + + return $excluded_js; +} + +/** + * Changes the text on the Varnish one-click block. + * + * @since 3.1 + * + * @param array $settings Field settings data. + * + * @return array modified field settings data. + */ +function rocket_o2switch_varnish_field( $settings ) { + _deprecated_function( __FUNCTION__ . '()', '3.6.3', '\WP_Rocket\ThirdParty\Hostings\O2Switch::varnish_addon_title' ); + // Translators: %s = Hosting name. + $settings['varnish_auto_purge']['title'] = sprintf( __( 'Your site is hosted on %s, we have enabled Varnish auto-purge for compatibility.', 'rocket' ), 'o2switch' ); + + return $settings; +} + +/** + * Purge all the domain. + * + * @since 3.1 + * + * @param string $root The path of home cache file. + * @param string $lang The current lang to purge. + * @param string $url The home url. + */ +function rocket_o2switch_varnish_clean_domain( $root, $lang, $url ) { + _deprecated_function( __FUNCTION__ . '()', '3.6.3', '\WP_Rocket\ThirdParty\Hostings\O2Switch::varnish_clean_domain' ); + rocket_o2switch_varnish_http_purge( trailingslashit( $url ) . '?vregex' ); +} + +/** + * Purge a specific page. + * + * @since 3.1 + * + * @param string $url The url to purge. + */ +function rocket_o2switch_varnish_clean_file( $url ) { + _deprecated_function( __FUNCTION__ . '()', '3.6.3', '\WP_Rocket\ThirdParty\Hostings\O2Switch::varnish_clean_file' ); + rocket_o2switch_varnish_http_purge( trailingslashit( $url ) . '?vregex' ); +} + +/** + * Purge the homepage and its pagination. + * + * @since 3.1 + * + * @param string $root The path of home cache file. + * @param string $lang The current lang to purge. + */ +function rocket_o2switch_varnish_clean_home( $root, $lang ) { + _deprecated_function( __FUNCTION__ . '()', '3.6.3', '\WP_Rocket\ThirdParty\Hostings\O2Switch::varnish_clean_home' ); + $home_url = trailingslashit( get_rocket_i18n_home_url( $lang ) ); + $home_pagination_url = $home_url . trailingslashit( $GLOBALS['wp_rewrite']->pagination_base ) . '?vregex'; + + rocket_o2switch_varnish_http_purge( $home_url ); + rocket_o2switch_varnish_http_purge( $home_pagination_url ); +} + +/** + * Send data to Varnish. + * + * @since 3.1 + * + * @param string $url The URL to purge. + */ +function rocket_o2switch_varnish_http_purge( $url ) { + _deprecated_function( __FUNCTION__ . '()', '3.6.3', '\WP_Rocket\ThirdParty\Hostings\O2Switch::varnish_http_purge' ); + $parse_url = get_rocket_parse_url( $url ); + + // This filter is documented in inc/functions/varnish.php. + $headers = apply_filters( + 'rocket_varnish_purge_headers', + [ + /** + * Filters the host value passed in the request headers + * + * @since 2.8.15 + * @param string The host + */ + 'host' => apply_filters( 'rocket_varnish_purge_request_host', $parse_url['host'] ), + 'X-VC-Purge-Key' => O2SWITCH_VARNISH_PURGE_KEY, + ] + ); + + if ( 'vregex' === $parse_url['query'] ) { + $headers['X-Purge-Regex'] = '.*'; + } + + /** + * Filter the Varnish IP to call + * + * @since 2.6.8 + * + * @param string The Varnish IP + */ + $varnish_ip = apply_filters( 'rocket_varnish_ip', [] ); + + if ( defined( 'WP_ROCKET_VARNISH_IP' ) && ! $varnish_ip ) { + $varnish_ip = WP_ROCKET_VARNISH_IP; + } + + /** + * Filter the HTTP protocol (scheme) + * + * @since 2.7.3 + * + * @param string The HTTP protocol + */ + $scheme = apply_filters( 'rocket_varnish_http_purge_scheme', $parse_url['scheme'] ); + + $parse_url['host'] = ( $varnish_ip ) ? $varnish_ip : $parse_url['host']; + $purgeme = $scheme . '://' . $parse_url['host'] . $parse_url['path']; + + wp_remote_request( + $purgeme, + [ + 'method' => 'PURGE', + 'blocking' => false, + 'redirection' => 0, + 'headers' => $headers, + ] + ); +} + +/** + * Remove expiration on HTML to prevent issue with Varnish cache. + * + * @since 3.1 + * + * @param string $rules htaccess rules. + * + * @return string Updated htaccess rules. + */ +function rocket_o2switch_remove_html_expire( $rules ) { + _deprecated_function( __FUNCTION__ . '()', '3.6.3', '\WP_Rocket\ThirdParty\Hostings\O2Switch::remove_html_expire' ); + $rules = preg_replace( '@\s*#\s*Your document html@', '', $rules ); + $rules = preg_replace( '@\s*ExpiresByType text/html\s*"access plus \d+ (seconds|minutes|hour|week|month|year)"@', '', $rules ); + + return $rules; +} diff --git a/wp-content/plugins/wp-rocket/inc/deprecated/3.7.php b/wp-content/plugins/wp-rocket/inc/deprecated/3.7.php new file mode 100644 index 0000000..1ff6151 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/deprecated/3.7.php @@ -0,0 +1,340 @@ +public_query_vars = array_diff( + $wp->public_query_vars, + [ + 'embed', + ] + ); + + // Remove the oembed/1.0/embed REST route. + add_filter( 'rest_endpoints', 'rocket_disable_embeds_remove_embed_endpoint' ); + + // Disable handling of internal embeds in oembed/1.0/proxy REST route. + add_filter( 'oembed_response_data', 'rocket_disable_embeds_filter_oembed_response_data' ); + + // Turn off oEmbed auto discovery. + add_filter( 'embed_oembed_discover', '__return_false' ); + + // Don't filter oEmbed results. + remove_filter( 'oembed_dataparse', 'wp_filter_oembed_result', 10 ); + + // Remove oEmbed discovery links. + remove_action( 'wp_head', 'wp_oembed_add_discovery_links' ); + + // Remove oEmbed-specific JavaScript from the front-end and back-end. + remove_action( 'wp_head', 'wp_oembed_add_host_js' ); + add_filter( 'tiny_mce_plugins', 'rocket_disable_embeds_tiny_mce_plugin' ); + + // Remove all embeds rewrite rules. + add_filter( 'rewrite_rules_array', 'rocket_disable_embeds_rewrites' ); + + // Remove filter of the oEmbed result before any HTTP requests are made. + remove_filter( 'pre_oembed_result', 'wp_filter_pre_oembed_result', 10 ); + + // Load block editor JavaScript. + add_action( 'enqueue_block_editor_assets', 'rocket_disable_embeds_enqueue_block_editor_assets' ); + + // Remove wp-embed dependency of wp-edit-post script handle. + add_action( 'wp_default_scripts', 'rocket_disable_embeds_remove_script_dependencies' ); +} + +/** + * Removes the 'wpembed' TinyMCE plugin. + * + * @since 3.7 Deprecated. + * @since 2.10 + * + * @param array $plugins List of TinyMCE plugins. + * + * @return array The modified list. + * + * @deprecated + */ +function rocket_disable_embeds_tiny_mce_plugin( $plugins ) { + _deprecated_function( __FUNCTION__ . '()', '3.7' ); + return array_diff( $plugins, [ 'wpembed' ] ); +} + +/** + * Remove all rewrite rules related to embeds. + * + * @since 3.7 Deprecated. + * @since 2.10 + * + * @param array $rules WordPress rewrite rules. + * + * @return array Rewrite rules without embeds rules. + * + * @deprecated + */ +function rocket_disable_embeds_rewrites( $rules ) { + _deprecated_function( __FUNCTION__ . '()', '3.7' ); + if ( empty( $rules ) ) { + return $rules; + } + + foreach ( $rules as $rule => $rewrite ) { + if ( false !== strpos( $rewrite, 'embed=true' ) ) { + unset( $rules[ $rule ] ); + } + } + + return $rules; +} + +/** + * Removes the oembed/1.0/embed REST route. + * + * @since 3.6 Deprecated. + * @since 3.3.3 + * + * @param array $endpoints Registered REST API endpoints. + * + * @return array Filtered REST API endpoints. + * + * @deprecated + */ +function rocket_disable_embeds_remove_embed_endpoint( $endpoints ) { + _deprecated_function( __FUNCTION__ . '()', '3.7' ); + unset( $endpoints['/oembed/1.0/embed'] ); + + return $endpoints; +} + +/** + * Disables sending internal oEmbed response data in proxy endpoint. + * + * @since 3.7 Deprecated. + * @since 3.3.3 + * + * @param array $data The response data. + * + * @return array|false Response data or false if in a REST API context. + * + * @deprecated + */ +function rocket_disable_embeds_filter_oembed_response_data( $data ) { + _deprecated_function( __FUNCTION__ . '()', '3.7' ); + if ( defined( 'REST_REQUEST' ) && REST_REQUEST ) { + return false; + } + + return $data; +} + +/** + * Enqueues JavaScript for the block editor. + * + * This is used to unregister the `core-embed/wordpress` block type. + * + * @since 3.7 Deprecated. + * @since 3.3.3 + * + * @deprecated + */ +function rocket_disable_embeds_enqueue_block_editor_assets() { + _deprecated_function( __FUNCTION__ . '()', '3.7' ); + wp_enqueue_script( + 'rocket-disable-embeds', + WP_ROCKET_ASSETS_JS_URL . 'editor/editor.js', + [ + 'wp-edit-post', + 'wp-editor', + 'wp-dom', + ], + WP_ROCKET_VERSION, + true + ); +} + +/** + * Removes wp-embed dependency of core packages. + * + * @since 3.7 deprecated + * @since 3.3.3 + * + * @param \WP_Scripts $scripts WP_Scripts instance, passed by reference. + * + * @deprecated + */ +function rocket_disable_embeds_remove_script_dependencies( $scripts ) { + _deprecated_function( __FUNCTION__ . '()', '3.7' ); + if ( ! empty( $scripts->registered['wp-edit-post'] ) ) { + $scripts->registered['wp-edit-post']->deps = array_diff( + $scripts->registered['wp-edit-post']->deps, + [ 'wp-embed' ] + ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/deprecated/DeprecatedClassTrait.php b/wp-content/plugins/wp-rocket/inc/deprecated/DeprecatedClassTrait.php new file mode 100644 index 0000000..8dac02b --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/deprecated/DeprecatedClassTrait.php @@ -0,0 +1,93 @@ +deprecated since version %2$s! Use %3$s instead.', 'rocket' ), + '' . static::class . '', + '' . $version . '', + '' . $replacement . '' + ); + } else { + /** + * Without replacement. + */ + $message = sprintf( + /* translators: 1: PHP class name, 2: version number. */ + __( 'The called class %1$s is deprecated since version %2$s!', 'rocket' ), + '' . static::class . '', + '' . $version . '' + ); + } + } elseif ( ! empty( $replacement ) ) { + /** + * With replacement. + */ + $message = sprintf( + 'The called class %1$s is deprecated since version %2$s! Use %3$s instead.', + '' . static::class . '', + '' . $version . '', + '' . $replacement . '' + ); + } else { + /** + * Without replacement. + */ + $message = sprintf( + 'The called class %1$s is deprecated since version %2$s!', + '' . static::class . '', + '' . $version . '' + ); + } + + call_user_func( 'trigger_error', $message ); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/deprecated/Engine/Optimization/QueryString/Remove.php b/wp-content/plugins/wp-rocket/inc/deprecated/Engine/Optimization/QueryString/Remove.php new file mode 100644 index 0000000..a3f1def --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/deprecated/Engine/Optimization/QueryString/Remove.php @@ -0,0 +1,365 @@ +options = $options; + $this->busting_path = $busting_path . get_current_blog_id() . '/'; + $this->busting_url = $busting_url . get_current_blog_id() . '/'; + } + + /** + * Returns a regex-ready string with the excluded filepaths for the Remove Query Strings option + * + * @since 3.3.3 + * @author Remy Perona + * + * @return string + */ + protected function get_excluded_files() { + static $excluded_files; + + if ( isset( $excluded_files ) ) { + return $excluded_files; + } + + /** + * Filters files to exclude from cache busting + * + * @since 2.9.3 + * @author Remy Perona + * + * @param array $excluded_files An array of filepath to exclude. + */ + $excluded_files = apply_filters( 'rocket_exclude_cache_busting', [] ); + + if ( empty( $excluded_files ) ) { + $excluded_files = ''; + + return $excluded_files; + } + + foreach ( $excluded_files as $i => $excluded_file ) { + // Escape character for future use in regex pattern. + $excluded_files[ $i ] = str_replace( '#', '\#', $excluded_file ); + } + + $excluded_files = implode( '|', $excluded_files ); + + return $excluded_files; + } + + /** + * Remove query strings for CSS files that have one + * + * @since 3.1 + * @author Remy Perona + * + * @param string $html HTML content. + * @return string + */ + public function remove_query_strings_css( $html ) { + $html_nocomments = preg_replace( '//Uis', '', $html ); + $styles = $this->find( ']+[\s\'"])?href\s*=\s*[\'"]\s*?([^\'"]+\.css(?:\?[^\'"]*)?)\s*?[\'"]([^>]+)?\/?>', $html_nocomments ); + + if ( ! $styles ) { + return $html; + } + + foreach ( $styles as $style ) { + $url = $style[2]; + + $url = $this->can_replace( $url ); + + if ( ! $url ) { + continue; + } + + $optimized_url = $this->replace_url( $url, 'css' ); + + if ( ! $optimized_url ) { + continue; + } + + $replace_style = str_replace( $style[2], $optimized_url, $style[0] ); + $html = str_replace( $style[0], $replace_style, $html ); + } + + return $html; + } + + /** + * Remove query strings for JS files that have one + * + * @since 3.1 + * @author Remy Perona + * + * @param string $html HTML content. + * @return string + */ + public function remove_query_strings_js( $html ) { + $html_nocomments = $this->hide_comments( $html ); + $scripts = $this->find( ']+[\s\'"])?src\s*=\s*[\'"]\s*?([^\'"]+\.js(?:\?[^\'"]*)?)\s*?[\'"]([^>]+)?\/?>', $html_nocomments ); + + if ( ! $scripts ) { + return $html; + } + + foreach ( $scripts as $script ) { + $url = $script[2]; + + $url = $this->can_replace( $url ); + + if ( ! $url ) { + continue; + } + + $optimized_url = $this->replace_url( $url, 'js' ); + + if ( ! $optimized_url ) { + continue; + } + + $replace_script = str_replace( $script[2], $optimized_url, $script[0] ); + $html = str_replace( $script[0], $replace_script, $html ); + } + + return $html; + } + + /** + * Gets the CDN zones. + * + * @since 3.1 + * @author Remy Perona + * + * @return array + */ + public function get_zones() { + return [ 'all', 'css_and_js', 'css', 'js' ]; + } + + /** + * Determines if we can optimize + * + * @since 3.1 + * @author Remy Perona + * + * @return boolean + */ + public function is_allowed() { + if ( rocket_get_constant( 'DONOTROCKETOPTIMIZE' ) ) { + return false; + } + + if ( ! $this->options->get( 'remove_query_strings' ) ) { + return false; + } + + return true; + } + + /** + * Determines if we can perform the remove query string on that URL + * + * @since 3.1 + * @author Remy Perona + * + * @param string $url source URL. + * @return bool\string + */ + protected function can_replace( $url ) { + $parsed_url = get_rocket_parse_url( $url ); + + if ( empty( $parsed_url['query'] ) ) { + return false; + } + + $version = get_bloginfo( 'version' ); + + if ( false !== strpos( $url, 'ver=' . $version ) ) { + $url = rtrim( str_replace( [ 'ver=' . $version, '?&', '&&' ], [ '', '?', '&' ], $url ), '?&' ); + } + + if ( $this->is_external_file( $url ) ) { + return false; + } + + if ( $this->is_excluded( $url ) ) { + return false; + } + + return $url; + } + + /** + * Determines if the URL is excluded + * + * @since 3.1 + * @author Remy Perona + * + * @param string $url source URL. + * @return bool + */ + protected function is_excluded( $url ) { + $excluded_files = $this->get_excluded_files(); + + if ( ! empty( $excluded_files ) && preg_match( '#^' . $excluded_files . '$#', rocket_clean_exclude_file( $url ) ) ) { + return true; + } + + return false; + } + + /** + * Replaces the original URL with the cache busting URL + * + * @since 3.1 + * @author Remy Perona + * + * @param string $url source URL. + * @param string $extension file extension. + * @return bool|string + */ + protected function replace_url( $url, $extension ) { + $query = wp_parse_url( $url, PHP_URL_QUERY ); + + if ( empty( $query ) ) { + return $url; + } + + // This filter is documented in /inc/classes/optimization/class-abstract-optimization.php. + $internal_url = apply_filters( 'rocket_asset_url', $url, $this->get_zones() ); + $parsed_url = get_rocket_parse_url( $internal_url ); + $relative_src = ltrim( $parsed_url['path'] . '?' . $parsed_url['query'], '/' ); + $filename = preg_replace( '/\.(' . $extension . ')\?(?:timestamp|ver)=([^&]+)(?:.*)/', '-$2.$1', $relative_src ); + + if ( $relative_src === $filename ) { + return $url; + } + + $busting_file = $this->busting_path . $filename; + $busting_url = $this->get_busting_url( $filename, $extension, $url ); + + if ( rocket_direct_filesystem()->is_readable( $busting_file ) ) { + return $busting_url; + } + + $file = $this->get_file_path( $url ); + + if ( ! $file ) { + return false; + } + + $busting_content = $this->get_file_content( $file ); + + if ( ! $busting_content ) { + return false; + } + + if ( 'css' === $extension ) { + $busting_content = $this->rewrite_paths( $file, $busting_file, $busting_content ); + } + + if ( ! $this->write_file( $busting_content, $busting_file ) ) { + return false; + } + + return $busting_url; + } + + /** + * Gets the cache busting URL + * + * @since 3.1 + * @author Remy Perona + * + * @param string $filename Cache busting filename. + * @param string $extension File extension. + * @param string $original_url Original URL for the file. + * @return string + */ + protected function get_busting_url( $filename, $extension, $original_url ) { + $url = $this->busting_url . $filename; + + switch ( $extension ) { + case 'css': + // This filter is documented in inc/classes/optimization/css/class-abstract-css-optimization.php. + $url = apply_filters( 'rocket_css_url', $url, $original_url ); + break; + case 'js': + // This filter is documented in inc/classes/optimization/css/class-abstract-js-optimization.php. + $url = apply_filters( 'rocket_js_url', $url, $original_url ); + break; + } + + return $url; + } +} diff --git a/wp-content/plugins/wp-rocket/inc/deprecated/Engine/Optimization/QueryString/RemoveSubscriber.php b/wp-content/plugins/wp-rocket/inc/deprecated/Engine/Optimization/QueryString/RemoveSubscriber.php new file mode 100644 index 0000000..933356c --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/deprecated/Engine/Optimization/QueryString/RemoveSubscriber.php @@ -0,0 +1,86 @@ +remove_query_string = $remove_query_string; + } + + /** + * Return an array of events that this subscriber wants to listen to. + * + * @since 3.1 + * @author Remy Perona + * + * @return array + */ + public static function get_subscribed_events() { + return [ + 'rocket_buffer' => [ 'process', 30 ], + ]; + } + + /** + * Filters the HTML to fetch static files with a query string and remove it + * + * @since 3.1 + * @author Remy Perona + * + * @param string $html HTML content. + * @return string + */ + public function process( $html ) { + if ( ! $this->is_allowed() ) { + return $html; + } + + $html = $this->remove_query_string->remove_query_strings_css( $html ); + $html = $this->remove_query_string->remove_query_strings_js( $html ); + + return $html; + } + + /** + * Checks if is allowed to remove query strings for static files. + * + * @since 3.1 + * @author Remy Perona + * + * @return bool + */ + protected function is_allowed() { + return $this->remove_query_string->is_allowed(); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/deprecated/deprecated.php b/wp-content/plugins/wp-rocket/inc/deprecated/deprecated.php new file mode 100644 index 0000000..663cebd --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/deprecated/deprecated.php @@ -0,0 +1,3290 @@ +#iU', $buffer, $tags_match ); + + if ( ! isset( $tags_match[0] ) ) { + return $buffer; + } + + foreach ( $tags_match[0] as $i => $tag ) { + // Strip query args. + $url = strtok( $tags_match[1][ $i ], '?' ); + + $deferred_js_files = array_flip( get_rocket_deferred_js_files() ); + + // Check if this file should be deferred. + if ( isset( $deferred_js_files[ $url ] ) ) { + $deferred_tag = str_replace( '>', ' defer>', $tag ); + $buffer = str_replace( $tag, $deferred_tag, $buffer ); + } + } + + return $buffer; +} + +/** + * Used to display the defered module on settings form + * + * @since 1.1.0 + * @deprecated 2.11 + */ +function rocket_defered_module() { + _deprecated_function( __FUNCTION__, '2.11' ); + ?> +
    + JS files with Deferred Loading JavaScript', 'rocket' ); ?> + +
    + + $_url ) { + ?> + +

    + + + + + +

    + + + + +

    + + + +

    + + + + +
    + + + +
    + +

    + + + + + +

    + +
    + + +

    + +task() + * @author Remy Perona + * + * @param string $type Type of optimization to perform. + */ +function rocket_database_optimize( $type ) { + _deprecated_function( __FUNCTION__, '2.11', 'Rocket_Background_Database_Optimisation->task()' ); +} + +/** + * Launches the database optimization from admin + * + * @since 2.8 + * @deprecated 2.11 + * @see Rocket_Database_Optimisation->optimize() + * @author Remy Perona + */ +function rocket_optimize_database() { + _deprecated_function( __FUNCTION__, '2.11', 'Rocket_Database_Optimisation->optimize()' ); +} + +/** + * Count the number of items concerned by the database cleanup + * + * @since 2.8 + * @deprecated 2.11 + * @see Rocket_Database_Optimisation->count_cleanup_items() + * @author Remy Perona + * + * @param string $type Item type to count. + * @return int Number of items for this type + */ +function rocket_database_count_cleanup_items( $type ) { + _deprecated_function( __FUNCTION__, '2.11', 'Rocket_Database_Optimisation->count_cleanup_items()' ); + + return 0; +} + +/** + * Planning database optimization cron + * If the task is not programmed, it is automatically triggered + * + * @since 2.8 + * @deprecated 2.11 + * @see Rocket_Database_Optimisation->database_optimization_scheduled() + * @author Remy Perona + */ +function rocket_database_optimization_scheduled() { + _deprecated_function( __FUNCTION__, '2.11', 'Rocket_Database_Optimisation->database_optimization_scheduled()' ); +} + +/** + * Performs the database optimization + * + * @since 2.8 + * @deprecated 2.11 + * @see Rocket_Database_Optimisation->process_handler() + * @author Remy Perona + */ +function do_rocket_database_optimization() { + _deprecated_function( __FUNCTION__, '2.11', 'Rocket_Database_Optimisation->process_handler()' ); +} + +if ( ! function_exists( 'rocket_define_donotminify_constants' ) ) { + /** + * Declare and set value to DONOTMINIFYCSS & DONOTMINIFYJS constant + * + * @since 2.6.2 + * @deprecated 2.11 + * @see rocket_define_donotoptimize_constant() + * + * @param bool $value true or false. + */ + function rocket_define_donotminify_constants( $value ) { + _deprecated_function( __FUNCTION__, '2.11', 'rocket_define_donotoptimize_constant' ); + + if ( ! defined( 'DONOTMINIFYCSS' ) ) { + define( 'DONOTMINIFYCSS', (bool) $value ); + } + if ( ! defined( 'DONOTMINIFYJS' ) ) { + define( 'DONOTMINIFYJS', (bool) $value ); + } + } +} + +if ( ! function_exists( 'rocket_define_donotasync_css_constant' ) ) { + /** + * Declare and set value to DONOTMASYNCCSS constant + * + * @since 2.10 + * @deprecated 2.11 + * @see rocket_define_donotoptimize_constant() + * @author Remy Perona + * + * @param bool $value true or false. + */ + function rocket_define_donotasync_css_constant( $value ) { + _deprecated_function( __FUNCTION__, '2.11', 'rocket_define_donotoptimize_constant' ); + + if ( ! defined( 'DONOTASYNCCSS' ) ) { + define( 'DONOTASYNCCSS', (bool) $value ); + } + } +} + +/** + * Defer loading of CSS files + * + * @since 2.10 + * @deprecated 2.11 + * @see Rocket_Critical_CSS->async_css() + * @author Remy Perona + * + * @param string $buffer HTML code. + * @return string Updated HTML code + */ +function rocket_async_css( $buffer ) { + _deprecated_function( __FUNCTION__, '2.11', 'Rocket_Critical_CSS->async_css()' ); + + return $buffer; +} + +/** + * Insert critical CSS in the + * + * @since 2.10 + * @deprecated 2.11 + * @see Rocket_Critical_CSS->insert_critical_css() + * @author Remy Perona + */ +function rocket_insert_critical_css() { + _deprecated_function( __FUNCTION__, '2.11', 'Rocket_Critical_CSS->insert_critical_css()' ); +} + +/** + * Insert loadCSS script in + * + * @since 2.10 + * @deprecated 2.11 + * @see WP_Rocket\Engine\CriticalPath\CriticalCSSSubscriber->insert_load_css() + * @author Remy Perona + */ +function rocket_insert_load_css() { + _deprecated_function( __FUNCTION__, '2.11', 'WP_Rocket\Engine\CriticalPath\CriticalCSSSubscriber->insert_load_css()' ); +} + +if ( ! function_exists( 'rocket_lazyload_async_script' ) ) { + /** + * Add tags to the lazyload script to async and prevent concatenation + * + * @since 2.11 + * @deprecated 2.11.2 + * @author Remy Perona + * + * @param string $tag HTML for the script. + * @param string $handle Handle for the script. + * + * @return string Updated HTML + */ + function rocket_lazyload_async_script( $tag, $handle ) { + _deprecated_function( __FUNCTION__, '2.11.2' ); + + return $tag; + } +} + +if ( ! function_exists( 'is_rocket_cdn_on_ssl' ) ) { + /** + * Check if we need to disable CDN on SSL pages + * + * @since 2.5 + * @deprecated 3.0 + * + * @return bool True if option is activated + */ + function is_rocket_cdn_on_ssl() { + _deprecated_function( __FUNCTION__, '3.0' ); + return is_ssl() && get_rocket_option( 'cdn_ssl', 0 ) ? false : true; + } +} + +if ( ! function_exists( 'is_rocket_cache_ssl' ) ) { + /** + * Check if we need to cache SSL requests of the website (if available) + * + * @since 1.0 + * @deprecated 3.0 + * + * @return bool True if option is activated + */ + function is_rocket_cache_ssl() { + _deprecated_function( __FUNCTION__, '3.0' ); + return false; + } +} + +if ( ! function_exists( 'rocket_reset_white_label_values_action' ) ) { + /** + * Reset White Label values to WP Rocket default values + * + * @since 2.1 + * @deprecated 3.0 + */ + function rocket_reset_white_label_values_action() { + _deprecated_function( __FUNCTION__, '3.0' ); + if ( isset( $_GET['_wpnonce'] ) && wp_verify_nonce( $_GET['_wpnonce'], 'rocket_resetwl' ) ) { + rocket_reset_white_label_values( true ); + } + wp_safe_redirect( add_query_arg( 'page', 'wprocket', remove_query_arg( 'page', wp_get_referer() ) ) ); + die(); + } +} + +if ( ! function_exists( 'rocket_white_label' ) ) { + /** + * White Label the plugin, if you need to + * + * @since 2.1 + * @deprecated 3.0 + * + * @param array $plugins An array of plugins installed. + * @return array Updated array of plugins installed + */ + function rocket_white_label( $plugins ) { + _deprecated_function( __FUNCTION__, '3.0' ); + $white_label_description = get_rocket_option( 'wl_description' ); + // We change the plugin's header. + $plugins['wp-rocket/wp-rocket.php'] = array( + 'Name' => get_rocket_option( 'wl_plugin_name' ), + 'PluginURI' => get_rocket_option( 'wl_plugin_URI' ), + 'Version' => isset( $plugins['wp-rocket/wp-rocket.php']['Version'] ) ? $plugins['wp-rocket/wp-rocket.php']['Version'] : '', + 'Description' => reset( ( $white_label_description ) ), + 'Author' => get_rocket_option( 'wl_author' ), + 'AuthorURI' => get_rocket_option( 'wl_author_URI' ), + 'TextDomain' => isset( $plugins['wp-rocket/wp-rocket.php']['TextDomain'] ) ? $plugins['wp-rocket/wp-rocket.php']['TextDomain'] : '', + 'DomainPath' => isset( $plugins['wp-rocket/wp-rocket.php']['DomainPath'] ) ? $plugins['wp-rocket/wp-rocket.php']['DomainPath'] : '', + ); + + // if white label, remove our names from contributors. + if ( rocket_is_white_label() ) { + remove_filter( 'plugin_row_meta', 'rocket_plugin_row_meta', 10, 2 ); + } + + return $plugins; + } +} + +if ( ! function_exists( 'rocket_is_white_label' ) ) { + /** + * Is this version White Labeled? + * + * @since 2.1 + * @deprecated 3.0 + */ + function rocket_is_white_label() { + _deprecated_function( __FUNCTION__, '3.0' ); + $options = ''; + $names = array( + 'wl_plugin_name', + 'wl_plugin_URI', + 'wl_description', + 'wl_author', + 'wl_author_URI', + ); + + foreach ( $names as $value ) { + $option = get_rocket_option( $value ); + $options .= ! is_array( $option ) ? $option : reset( ( $option ) ); + } + + return '7ddca92d3d48d4da715a90ebcb3ec1f0' !== md5( $options ); + } +} + +if ( ! function_exists( 'rocket_reset_white_label_values' ) ) { + /** + * Reset white label options + * + * @since 2.1 + * @deprecated 3.0 + * + * @param bool $hack_post true if we need to modify the $_POST content, false otherwise. + * @return void + */ + function rocket_reset_white_label_values( $hack_post ) { + _deprecated_function( __FUNCTION__, '3.0' ); + // White Label default values - !!! DO NOT TRANSLATE !!! + $options = get_option( WP_ROCKET_SLUG ); + $options['wl_plugin_name'] = 'WP Rocket'; + $options['wl_plugin_slug'] = 'wprocket'; + $options['wl_plugin_URI'] = 'https://wp-rocket.me'; + $options['wl_description'] = array( 'The best WordPress performance plugin.' ); + $options['wl_author'] = 'WP Media'; + $options['wl_author_URI'] = 'https://wp-media.me'; + + if ( $hack_post ) { + // hack $_POST to force refresh of files, sorry. + $_POST['page'] = 'wprocket'; + } + + update_option( WP_ROCKET_SLUG, $options ); + } +} + +if ( ! function_exists( 'rocket_check_no_empty_name' ) ) { + /** + * When you're doing an update, the constant does not contain yet your option or any value, reset and redirect! + * + * @since 2.1 + * @deprecated 3.0 + */ + function rocket_check_no_empty_name() { + _deprecated_function( __FUNCTION__, '3.0' ); + $wl_plugin_name = trim( get_rocket_option( 'wl_plugin_name' ) ); + + if ( empty( $wl_plugin_name ) ) { + wp_safe_redirect( $_SERVER['REQUEST_URI'] ); + die(); + } + } +} + +if ( ! function_exists( 'rocket_correct_capability_for_options_page' ) ) { + /** + * Fix the capability for our capacity filter hook + * + * @since 2.6 + * @deprecated 3.0 + * @see WP_Rocket\Engine\Settings\Page->required_capability() + * + * @param string $capability Capacity to access WP Rocket options. + * @return string Updated capacity + */ + function rocket_correct_capability_for_options_page( $capability ) { + _deprecated_function( __FUNCTION__, '3.0', 'WP_Rocket\Engine\Settings\Page->required_compatibility()' ); + /** This filter is documented in inc/admin-bar.php */ + return apply_filters( 'rocket_capacity', 'manage_options' ); + } +} + +if ( ! function_exists( 'rocket_admin_menu' ) ) { + /** + * Add submenu in menu "Settings" + * + * @since 1.0 + * @deprecated 3.0 + * @see WP_Rocket\Engine\Settings\Page->add_admin_page() + */ + function rocket_admin_menu() { + _deprecated_function( __FUNCTION__, '3.0', 'WP_Rocket\Engine\Settings\Page->add_admin_page()' ); + add_options_page( WP_ROCKET_PLUGIN_NAME, WP_ROCKET_PLUGIN_NAME, apply_filters( 'rocket_capacity', 'manage_options' ), WP_ROCKET_PLUGIN_SLUG, 'rocket_display_options' ); + } +} + +if ( ! function_exists( 'rocket_include' ) ) { + /** + * Used to include a file in any tab + * + * @since 2.2 + * @deprecated 3.0 + * + * @param array $args An array of arguments to include the file. + */ + function rocket_include( $args ) { + _deprecated_function( __FUNCTION__, '3.0' ); + include_once dirname( __FILE__ ) . '/' . str_replace( '..', '', $args['file'] ) . '.inc.php'; + } +} + +if ( ! function_exists( 'rocket_register_setting' ) ) { + /** + * Tell to WordPress to be confident with our setting, we are clean! + * + * @since 1.0 + * @deprecated 3.0 + * @see WP_Rocket\Engine\Settings\Page->configure() + */ + function rocket_register_setting() { + _deprecated_function( __FUNCTION__, '3.0', 'WP_Rocket\Engine\Settings\Page->configure()' ); + register_setting( 'wp_rocket', WP_ROCKET_SLUG, 'rocket_settings_callback' ); + } +} + +if ( ! function_exists( 'rocket_settings_callback' ) ) { + /** + * Used to clean and sanitize the settings fields + * + * @since 1.0 + * + * @param array $inputs An array of values submitted by the settings form. + */ + function rocket_settings_callback( $inputs ) { + _deprecated_function( __FUNCTION__, '3.0', 'WP_Rocket\Engine\Admin\Settings\Settings->sanitize_callback()' ); + if ( isset( $_GET['action'] ) && 'purge_cache' === $_GET['action'] ) { + return $inputs; + } + + /* + * Option : Minification CSS & JS + */ + $inputs['minify_css'] = ! empty( $inputs['minify_css'] ) ? 1 : 0; + $inputs['minify_js'] = ! empty( $inputs['minify_js'] ) ? 1 : 0; + + // Option: mobile cache. + if ( rocket_is_mobile_plugin_active() ) { + $inputs['cache_mobile'] = 1; + $inputs['do_caching_mobile_files'] = 1; + } + + if ( empty( $inputs['lazyload_iframes'] ) ) { + $inputs['lazyload_youtube'] = 0; + } + + /* + * Option : Purge delay + */ + $inputs['purge_cron_interval'] = isset( $inputs['purge_cron_interval'] ) ? (int) $inputs['purge_cron_interval'] : get_rocket_option( 'purge_cron_interval' ); + $inputs['purge_cron_unit'] = isset( $inputs['purge_cron_unit'] ) ? $inputs['purge_cron_unit'] : get_rocket_option( 'purge_cron_unit' ); + + if ( $inputs['purge_cron_interval'] < 10 && 'MINUTE_IN_SECONDS' === $inputs['purge_cron_unit'] ) { + $inputs['purge_cron_interval'] = 10; + } + + /* + * Option : Remove query strings + */ + $inputs['remove_query_strings'] = ! empty( $inputs['remove_query_strings'] ) ? 1 : 0; + + /* + * Option : Prefetch DNS requests + */ + if ( ! empty( $inputs['dns_prefetch'] ) ) { + if ( ! is_array( $inputs['dns_prefetch'] ) ) { + $inputs['dns_prefetch'] = explode( "\n", $inputs['dns_prefetch'] ); + } + $inputs['dns_prefetch'] = array_map( 'trim', $inputs['dns_prefetch'] ); + $inputs['dns_prefetch'] = array_map( 'esc_url', $inputs['dns_prefetch'] ); + $inputs['dns_prefetch'] = (array) array_filter( $inputs['dns_prefetch'] ); + $inputs['dns_prefetch'] = array_unique( $inputs['dns_prefetch'] ); + } else { + $inputs['dns_prefetch'] = array(); + } + + /* + * Option : Empty the cache of the following pages when updating an article + */ + if ( ! empty( $inputs['cache_purge_pages'] ) ) { + if ( ! is_array( $inputs['cache_purge_pages'] ) ) { + $inputs['cache_purge_pages'] = explode( "\n", $inputs['cache_purge_pages'] ); + } + $inputs['cache_purge_pages'] = array_map( 'trim', $inputs['cache_purge_pages'] ); + $inputs['cache_purge_pages'] = array_map( 'esc_url', $inputs['cache_purge_pages'] ); + $inputs['cache_purge_pages'] = array_map( 'rocket_clean_exclude_file', $inputs['cache_purge_pages'] ); + $inputs['cache_purge_pages'] = (array) array_filter( $inputs['cache_purge_pages'] ); + $inputs['cache_purge_pages'] = array_unique( $inputs['cache_purge_pages'] ); + } else { + $inputs['cache_purge_pages'] = array(); + } + + /* + * Option : Never cache the following pages + */ + if ( ! empty( $inputs['cache_reject_uri'] ) ) { + if ( ! is_array( $inputs['cache_reject_uri'] ) ) { + $inputs['cache_reject_uri'] = explode( "\n", $inputs['cache_reject_uri'] ); + } + $inputs['cache_reject_uri'] = array_map( 'trim', $inputs['cache_reject_uri'] ); + $inputs['cache_reject_uri'] = array_map( 'esc_url', $inputs['cache_reject_uri'] ); + $inputs['cache_reject_uri'] = array_map( 'rocket_clean_exclude_file', $inputs['cache_reject_uri'] ); + $inputs['cache_reject_uri'] = (array) array_filter( $inputs['cache_reject_uri'] ); + $inputs['cache_reject_uri'] = array_unique( $inputs['cache_reject_uri'] ); + } else { + $inputs['cache_reject_uri'] = array(); + } + + /* + * Option : Don't cache pages that use the following cookies + */ + if ( ! empty( $inputs['cache_reject_cookies'] ) ) { + if ( ! is_array( $inputs['cache_reject_cookies'] ) ) { + $inputs['cache_reject_cookies'] = explode( "\n", $inputs['cache_reject_cookies'] ); + } + $inputs['cache_reject_cookies'] = array_map( 'trim', $inputs['cache_reject_cookies'] ); + $inputs['cache_reject_cookies'] = array_map( 'rocket_sanitize_key', $inputs['cache_reject_cookies'] ); + $inputs['cache_reject_cookies'] = (array) array_filter( $inputs['cache_reject_cookies'] ); + $inputs['cache_reject_cookies'] = array_unique( $inputs['cache_reject_cookies'] ); + } else { + $inputs['cache_reject_cookies'] = array(); + } + + /* + * Option : Cache pages that use the following query strings (GET parameters) + */ + if ( ! empty( $inputs['cache_query_strings'] ) ) { + if ( ! is_array( $inputs['cache_query_strings'] ) ) { + $inputs['cache_query_strings'] = explode( "\n", $inputs['cache_query_strings'] ); + } + $inputs['cache_query_strings'] = array_map( 'trim', $inputs['cache_query_strings'] ); + $inputs['cache_query_strings'] = array_map( 'rocket_sanitize_key', $inputs['cache_query_strings'] ); + $inputs['cache_query_strings'] = (array) array_filter( $inputs['cache_query_strings'] ); + $inputs['cache_query_strings'] = array_unique( $inputs['cache_query_strings'] ); + } else { + $inputs['cache_query_strings'] = array(); + } + + /* + * Option : Never send cache pages for these user agents + */ + if ( ! empty( $inputs['cache_reject_ua'] ) ) { + if ( ! is_array( $inputs['cache_reject_ua'] ) ) { + $inputs['cache_reject_ua'] = explode( "\n", $inputs['cache_reject_ua'] ); + } + $inputs['cache_reject_ua'] = array_map( 'trim', $inputs['cache_reject_ua'] ); + $inputs['cache_reject_ua'] = array_map( 'rocket_sanitize_ua', $inputs['cache_reject_ua'] ); + $inputs['cache_reject_ua'] = (array) array_filter( $inputs['cache_reject_ua'] ); + $inputs['cache_reject_ua'] = array_unique( $inputs['cache_reject_ua'] ); + } else { + $inputs['cache_reject_ua'] = array(); + } + + /* + * Option : CSS files to exclude of the minification + */ + if ( ! empty( $inputs['exclude_css'] ) ) { + if ( ! is_array( $inputs['exclude_css'] ) ) { + $inputs['exclude_css'] = explode( "\n", $inputs['exclude_css'] ); + } + $inputs['exclude_css'] = array_map( 'trim', $inputs['exclude_css'] ); + $inputs['exclude_css'] = array_map( 'rocket_clean_exclude_file', $inputs['exclude_css'] ); + $inputs['exclude_css'] = array_map( 'rocket_sanitize_css', $inputs['exclude_css'] ); + $inputs['exclude_css'] = (array) array_filter( $inputs['exclude_css'] ); + $inputs['exclude_css'] = array_unique( $inputs['exclude_css'] ); + } else { + $inputs['exclude_css'] = array(); + } + + /* + * Option : JS files to exclude of the minification + */ + if ( ! empty( $inputs['exclude_js'] ) ) { + if ( ! is_array( $inputs['exclude_js'] ) ) { + $inputs['exclude_js'] = explode( "\n", $inputs['exclude_js'] ); + } + $inputs['exclude_js'] = array_map( 'trim', $inputs['exclude_js'] ); + $inputs['exclude_js'] = array_map( 'rocket_clean_exclude_file', $inputs['exclude_js'] ); + $inputs['exclude_js'] = array_map( 'rocket_sanitize_js', $inputs['exclude_js'] ); + $inputs['exclude_js'] = (array) array_filter( $inputs['exclude_js'] ); + $inputs['exclude_js'] = array_unique( $inputs['exclude_js'] ); + } else { + $inputs['exclude_js'] = array(); + } + + // Option: Async CSS. + $inputs['async_css'] = ! empty( $inputs['async_css'] ) ? 1 : 0; + + // Option: Critical CSS. + $inputs['critical_css'] = ! empty( $inputs['critical_css'] ) ? str_replace( array( '' ), '', wp_kses( $inputs['critical_css'], array( "\'", '\"' ) ) ) : ''; + + /* + * Option : JS files to exclude from defer JS + */ + if ( ! empty( $inputs['exclude_defer_js'] ) ) { + if ( ! is_array( $inputs['exclude_defer_js'] ) ) { + $inputs['exclude_defer_js'] = explode( "\n", $inputs['exclude_defer_js'] ); + } + $inputs['exclude_defer_js'] = array_map( 'trim', $inputs['exclude_defer_js'] ); + $inputs['exclude_defer_js'] = array_unique( $inputs['exclude_defer_js'] ); + $inputs['exclude_defer_js'] = array_map( 'rocket_sanitize_js', $inputs['exclude_defer_js'] ); + $inputs['exclude_defer_js'] = array_filter( $inputs['exclude_defer_js'] ); + } else { + $inputs['exclude_defer_js'] = array(); + } + + /** + * Database options + */ + $inputs['database_revisions'] = ! empty( $inputs['database_revisions'] ) ? 1 : 0; + $inputs['database_auto_drafts'] = ! empty( $inputs['database_auto_drafts'] ) ? 1 : 0; + $inputs['database_trashed_posts'] = ! empty( $inputs['database_trashed_posts'] ) ? 1 : 0; + $inputs['database_spam_comments'] = ! empty( $inputs['database_spam_comments'] ) ? 1 : 0; + $inputs['database_trashed_comments'] = ! empty( $inputs['database_trashed_comments'] ) ? 1 : 0; + $inputs['database_expired_transients'] = ! empty( $inputs['database_expired_transients'] ) ? 1 : 0; + $inputs['database_all_transients'] = ! empty( $inputs['database_all_transients'] ) ? 1 : 0; + $inputs['database_optimize_tables'] = ! empty( $inputs['database_optimize_tables'] ) ? 1 : 0; + $inputs['schedule_automatic_cleanup'] = ! empty( $inputs['schedule_automatic_cleanup'] ) ? 1 : 0; + $inputs['automatic_cleanup_frequency'] = ! empty( $inputs['automatic_cleanup_frequency'] ) ? $inputs['automatic_cleanup_frequency'] : ''; + + if ( 1 !== $inputs['schedule_automatic_cleanup'] && ( 'daily' !== $inputs['automatic_cleanup_frequency'] || 'weekly' !== $inputs['automatic_cleanup_frequency'] || 'monthly' !== $inputs['automatic_cleanup_frequency'] ) ) { + unset( $inputs['automatic_cleanup_frequency'] ); + } + + /** + * Options: Activate bot preload + */ + $inputs['manual_preload'] = ! empty( $inputs['manual_preload'] ) ? 1 : 0; + $inputs['automatic_preload'] = ! empty( $inputs['automatic_preload'] ) ? 1 : 0; + + /* + * Option: activate sitemap preload + */ + $inputs['sitemap_preload'] = ! empty( $inputs['sitemap_preload'] ) ? 1 : 0; + + /* + * Option : XML sitemaps URLs + */ + if ( ! empty( $inputs['sitemaps'] ) ) { + if ( ! is_array( $inputs['sitemaps'] ) ) { + $inputs['sitemaps'] = explode( "\n", $inputs['sitemaps'] ); + } + $inputs['sitemaps'] = array_map( 'trim', $inputs['sitemaps'] ); + $inputs['sitemaps'] = array_map( 'rocket_sanitize_xml', $inputs['sitemaps'] ); + $inputs['sitemaps'] = (array) array_filter( $inputs['sitemaps'] ); + $inputs['sitemaps'] = array_unique( $inputs['sitemaps'] ); + } else { + $inputs['sitemaps'] = array(); + } + + /* + * Option : CloudFlare Domain + */ + if ( ! empty( $inputs['cloudflare_domain'] ) ) { + $inputs['cloudflare_domain'] = rocket_get_domain( $inputs['cloudflare_domain'] ); + } else { + $inputs['cloudflare_domain'] = ''; + } + + $inputs['cloudflare_devmode'] = ( isset( $inputs['cloudflare_devmode'] ) && is_numeric( $inputs['cloudflare_devmode'] ) ) ? (int) $inputs['cloudflare_devmode'] : 0; + $inputs['cloudflare_auto_settings'] = ( isset( $inputs['cloudflare_auto_settings'] ) && is_numeric( $inputs['cloudflare_auto_settings'] ) ) ? (int) $inputs['cloudflare_auto_settings'] : 0; + + /* + * Option : CloudFlare + */ + if ( defined( 'WP_ROCKET_CF_API_KEY' ) ) { + $inputs['cloudflare_api_key'] = get_rocket_option( 'cloudflare_api_key' ); + } + + /* + * Option : CDN + */ + $inputs['cdn_cnames'] = isset( $inputs['cdn_cnames'] ) ? array_unique( array_filter( $inputs['cdn_cnames'] ) ) : array(); + + if ( ! $inputs['cdn_cnames'] ) { + $inputs['cdn_zone'] = array(); + } else { + $total_cdn_cnames = max( array_keys( $inputs['cdn_cnames'] ) ); + for ( $i = 0; $i <= $total_cdn_cnames; $i++ ) { + if ( ! isset( $inputs['cdn_cnames'][ $i ] ) ) { + unset( $inputs['cdn_zone'][ $i ] ); + } else { + $inputs['cdn_zone'][ $i ] = isset( $inputs['cdn_zone'][ $i ] ) ? $inputs['cdn_zone'][ $i ] : 'all'; + } + } + + $inputs['cdn_cnames'] = array_values( $inputs['cdn_cnames'] ); + $inputs['cdn_cnames'] = array_map( 'untrailingslashit', $inputs['cdn_cnames'] ); + ksort( $inputs['cdn_zone'] ); + $inputs['cdn_zone'] = array_values( $inputs['cdn_zone'] ); + } + + /* + * Option : Files to exclude of the CDN process + */ + if ( ! empty( $inputs['cdn_reject_files'] ) ) { + if ( ! is_array( $inputs['cdn_reject_files'] ) ) { + $inputs['cdn_reject_files'] = explode( "\n", $inputs['cdn_reject_files'] ); + } + $inputs['cdn_reject_files'] = array_map( 'trim', $inputs['cdn_reject_files'] ); + $inputs['cdn_reject_files'] = array_map( 'rocket_clean_exclude_file', $inputs['cdn_reject_files'] ); + $inputs['cdn_reject_files'] = (array) array_filter( $inputs['cdn_reject_files'] ); + $inputs['cdn_reject_files'] = array_unique( $inputs['cdn_reject_files'] ); + } else { + $inputs['cdn_reject_files'] = array(); + } + + /* + * Option: Support + */ + $fake_options = array( + 'support_summary', + 'support_description', + 'support_documentation_validation', + ); + + foreach ( $fake_options as $option ) { + if ( isset( $inputs[ $option ] ) ) { + unset( $inputs[ $option ] ); + } + } + + if ( isset( $_FILES['import'] ) && 0 !== $_FILES['import']['size'] && $settings = rocket_handle_settings_import( $_FILES['import'], 'wp-rocket', $inputs ) ) { + $inputs = $settings; + } + + if ( ! rocket_valid_key() ) { + $checked = rocket_check_key(); + } + + if ( isset( $checked ) && is_array( $checked ) ) { + $inputs['consumer_key'] = $checked['consumer_key']; + $inputs['consumer_email'] = $checked['consumer_email']; + $inputs['secret_key'] = $checked['secret_key']; + } + + if ( rocket_valid_key() && ! empty( $inputs['secret_key'] ) && ! isset( $inputs['ignore'] ) ) { + unset( $inputs['ignore'] ); + add_settings_error( 'general', 'settings_updated', __( 'Settings saved.', 'rocket' ), 'updated' ); + } + + return apply_filters( 'rocket_inputs_sanitize', $inputs ); + } +} + +if ( ! function_exists( 'rocket_import_upload_form' ) ) { + /** + * Outputs the form used by the importers to accept the data to be imported + * + * @since 2.2 + * @deprecated 3.0 + * + * @see WP_Rocket\Admin\Render->render_import_form(); + */ + function rocket_import_upload_form() { + _deprecated_function( __FUNCTION__, '3.0', 'WP_Rocket\Admin\Render->render_import_form()' ); + /** + * Filter the maximum allowed upload size for import files. + * + * @since (WordPress) 2.3.0 + * + * @see wp_max_upload_size() + * + * @param int $max_upload_size Allowed upload size. Default 1 MB. + */ + $bytes = apply_filters( 'import_upload_size_limit', wp_max_upload_size() ); // Filter from WP Core. + $size = size_format( $bytes ); + $upload_dir = wp_upload_dir(); + if ( ! empty( $upload_dir['error'] ) ) { + ?> +

    +

    + +

    + +
    + + +

    + ', + sanitize_html_class( $args['name'] ), + sanitize_html_class( $args['type'] ), + isset( $args['parent'] ) ? 'fieldparent-' . sanitize_html_class( $args['parent'] ) : '' + ); + } + + switch ( $args['type'] ) { + case 'number': + case 'email': + case 'text': + $value = get_rocket_option( $args['name'] ); + if ( false === $value ) { + $value = $default; + } + + $value = esc_attr( $value ); + $number_options = 'number' === $args['type'] ? ' min="0" class="small-text"' : ''; + $autocomplete = in_array( $args['name'], array( 'consumer_key', 'consumer_email' ), true ) ? ' autocomplete="off"' : ''; + $disabled = ( 'consumer_key' === $args['name'] && defined( 'WP_ROCKET_KEY' ) ) || ( 'consumer_email' === $args['name'] && defined( 'WP_ROCKET_EMAIL' ) ) ? ' disabled="disabled"' : $readonly; + ?> + + + + + + + + + + + + + + + + + + + + + + + + + + + render(); + + break; + + case 'helper_description': + $description = isset( $args['description'] ) ? sprintf( '

    %3$s %4$s

    ', $class, $parent, _x( 'Note:', 'screen-reader-text', 'rocket' ), $args['description'] ) : ''; + echo apply_filters( 'rocket_help', $description, $args['name'], 'description' ); + + break; + + case 'helper_performance': + $description = isset( $args['description'] ) ? sprintf( '

    %3$s %4$s

    ', $class, $parent, _x( 'Performance tip:', 'screen-reader-text', 'rocket' ), $args['description'] ) : ''; + echo apply_filters( 'rocket_help', $description, $args['name'], 'description' ); + + break; + + case 'helper_detection': + $description = isset( $args['description'] ) ? sprintf( '

    %3$s %4$s

    ', $class, $parent, _x( 'Third-party feature detected:', 'screen-reader-text', 'rocket' ), $args['description'] ) : ''; + echo apply_filters( 'rocket_help', $description, $args['name'], 'description' ); + + break; + + case 'helper_help': + $description = isset( $args['description'] ) ? sprintf( '

    %3$s

    ', $class, $parent, $args['description'] ) : ''; + echo apply_filters( 'rocket_help', $description, $args['name'], 'help' ); + + break; + + case 'helper_warning': + $description = isset( $args['description'] ) ? sprintf( '

    %3$s %4$s

    ', $class, $parent, _x( 'Warning:', 'screen-reader-text', 'rocket' ), $args['description'] ) : ''; + echo apply_filters( 'rocket_help', $description, $args['name'], 'warning' ); + + break; + + case 'helper_panel_description': + $description = isset( $args['description'] ) ? sprintf( '

    %3$s

    ', $class, $parent, $args['description'] ) : ''; + echo $description; + + break; + + case 'rocket_export_form': + ?> + + '; + } + } + + } +} + +if ( ! function_exists( 'rocket_cnames_module' ) ) { + /** + * Used to display the CNAMES module on settings form + * + * @since 2.1 + */ + function rocket_cnames_module() { + _deprecated_function( __FUNCTION__, '3.0' ); + ?> + + +
    + + $_url ) { + ?> + +

    + + + + + + +

    + + + +

    + + + + + +

    + + + +
    + +
    + +

    + + + + + + +

    + +
    + +

    + +
    + + ' . $help['description'] . '

    '; + } + if ( ! empty( $desc ) ) { + $desc = sprintf( '

    %2$s %3$s

    ', $class, _x( 'Note:', 'screen-reader-text', 'rocket' ), $desc['description'] ); + } + if ( ! empty( $warning ) ) { + $warning = sprintf( + '

    %2$s %3$s

    ', + $class, + _x( 'Warning:', 'screen-reader-text', 'rocket' ), + $warning['description'] + ); + } + ?> +
    + ' . wp_kses_post( $button['button_label'] ) . ''; + } else { + echo ''; + } + ?> + + + + + + +
    + ' . $args['description'] . '

    '; + ?> +
    + + +
    + = 0 ? 'h1' : 'h2'; + ?> + +
    + + <> > +
    + + +
    + +
    +
    +
    +
    +
    +
    +
    >
    + +
    + +
    +
    + +
    + + +
    + +
    + render_hidden_fields()' ); + if ( ! is_array( $fields ) ) { + return; + } + + foreach ( $fields as $field ) { + echo ''; + } + } +} + +if ( ! function_exists( 'wp_ajax_rocket_new_ticket_support' ) ) { + /** + * Open a ticket support. + * + * @since 2.6 + * @deprecated 3.0 + */ + function wp_ajax_rocket_new_ticket_support() { + _deprecated_function( __FUNCTION__, '3.0' ); + // rocket_capability is a typo (should have been rocket_capacity). + if ( ! isset( $_POST['_wpnonce'], $_POST['summary'], $_POST['description'] ) || ! wp_verify_nonce( $_POST['_wpnonce'], 'wp_rocket-options' ) || + ! current_user_can( apply_filters_deprecated( 'rocket_capability', array( 'manage_options' ), '2.8.9', 'rocket_capacity' ) ) || + ! current_user_can( apply_filters( 'rocket_capacity', 'manage_options' ) ) + ) { + return; + } + + $response = wp_remote_post( + WP_ROCKET_WEB_API . 'support/new-ticket.php', + array( + 'timeout' => 10, + 'body' => array( + 'data' => array( + 'user_email' => defined( 'WP_ROCKET_EMAIL' ) ? sanitize_email( WP_ROCKET_EMAIL ) : '', + 'user_key' => defined( 'WP_ROCKET_KEY' ) ? sanitize_key( WP_ROCKET_KEY ) : '', + 'user_website' => home_url(), + 'wp_version' => $GLOBALS['wp_version'], + 'wp_active_plugins' => rocket_get_active_plugins(), + 'wp_rocket_version' => WP_ROCKET_VERSION, + 'wp_rocket_options' => get_option( WP_ROCKET_SLUG ), + 'support_summary' => $_POST['summary'], + 'support_description' => $_POST['description'], + ), + ), + ) + ); + + if ( ! is_wp_error( $response ) ) { + wp_send_json( wp_remote_retrieve_body( $response ) ); + } else { + wp_send_json( + array( + 'msg' => 'BAD_SERVER', + ) + ); + } + } +} + +if ( ! function_exists( 'wp_ajax_rocket_helpscout_live_search' ) ) { + /** + * Documentation suggestions based on the summary input from the new ticket support form. + * + * @since 2.6 + * @deprecated 3.0 + */ + function wp_ajax_rocket_helpscout_live_search() { + _deprecated_function( __FUNCTION__, '3.0' ); + if ( current_user_can( apply_filters( 'rocket_capability', 'manage_options' ) ) ) { + $query = filter_input( INPUT_POST, 'query' ); + $response = wp_remote_post( + WP_ROCKET_WEB_MAIN . 'tools/wp-rocket/helpscout/livesearch.php', + array( + 'timeout' => 10, + 'body' => array( + 'query' => esc_html( wp_strip_all_tags( $query, true ) ), + 'lang' => get_locale(), + ), + ) + ); + + if ( ! is_wp_error( $response ) ) { + wp_send_json( wp_remote_retrieve_body( $response ) ); + } + } + } +} + +if ( ! function_exists( 'rocket_php_warning' ) ) { + /** + * Warns if PHP version is less than 5.3 and offers to rollback. + * + * @since 2.11 + * @deprecated 3.0 + * @see WP_Rocket_Requirements_check::notice(); + * @author Remy Perona + */ + function rocket_php_warning() { + _deprecated_function( __FUNCTION__, '3.0', 'WP_Rocket_Requirements_check::notice()' ); + + if ( version_compare( PHP_VERSION, '5.3' ) >= 0 ) { + return; + } + /** This filter is documented in inc/admin-bar.php */ + if ( ! current_user_can( apply_filters( 'rocket_capacity', 'manage_options' ) ) ) { + return; + } + // Translators: %1$s = Plugin name, %2$s = Plugin version, %3$s = PHP version required. + echo '

    ' . sprintf( __( '%1$s %2$s requires at least PHP %3$s to function properly. To use this version, please ask your web host how to upgrade your server to PHP %3$s or higher. If you are not able to upgrade, you can rollback to the previous version by using the button below.', 'rocket' ), WP_ROCKET_PLUGIN_NAME, WP_ROCKET_VERSION, '5.3' ) . '

    +

    ' . + // Translators: %s = Previous plugin version. + sprintf( __( 'Re-install version %s', 'rocket' ), WP_ROCKET_LASTVERSION ) + . '

    '; + } +} + +if ( ! function_exists( 'rocket_get_home_path' ) ) { + /** + * Get the absolute filesystem path to the root of the WordPress installation. + * + * @since 2.11.7 copy function get_home_path() from WP core. + * @since 2.11.5 + * @deprecated 3.0 + * + * @author Chris Williams + * + * @return string Full filesystem path to the root of the WordPress installation. + */ + function rocket_get_home_path() { + _deprecated_function( __FUNCTION__, '3.0' ); + $home = set_url_scheme( get_option( 'home' ), 'http' ); + $siteurl = set_url_scheme( get_option( 'siteurl' ), 'http' ); + $home_path = ABSPATH; + + if ( ! empty( $home ) && 0 !== strcasecmp( $home, $siteurl ) ) { + $wp_path_rel_to_home = str_ireplace( $home, '', $siteurl ); /* $siteurl - $home */ + $pos = strripos( str_replace( '\\', '/', $_SERVER['SCRIPT_FILENAME'] ), trailingslashit( $wp_path_rel_to_home ) ); + $home_path = substr( $_SERVER['SCRIPT_FILENAME'], 0, $pos ); + $home_path = trailingslashit( $home_path ); + } + + return str_replace( '\\', '/', $home_path ); + } +} + +if ( ! function_exists( 'rocket_clean_cache_after_woocommerce_save_product_variation' ) ) { + /** + * Clean product cache on variation update + * + * @since 2.9 + * @deprecated 3.1 + * @see WP_Rocket\Third_Party\Plugins\Ecommerce\WooCommerce::clean_cache_after_woocommerce_save_product_variation() + * @author Remy Perona + * + * @param int $variation_id ID of the variation. + */ + function rocket_clean_cache_after_woocommerce_save_product_variation( $variation_id ) { + _deprecated_function( __FUNCTION__, '3.1', 'WP_Rocket\Third_Party\Plugins\Ecommerce\WooCommerce::clean_cache_after_woocommerce_save_product_variation()' ); + $product_id = wp_get_post_parent_id( $variation_id ); + if ( $product_id ) { + rocket_clean_post( $product_id ); + } + } +} + +if ( ! function_exists( 'rocket_cache_v_query_string' ) ) { + /** + * Automatically cache v query string when WC geolocation with cache compatibility option is active + * + * @since 2.8.6 + * @deprecated 3.1 + * @see WP_Rocket\Third_Party\Plugins\Ecommerce\WooCommerce::cache_geolocation_query_string() + * @author Rémy Perona + * + * @param array $query_strings list of query strings to cache. + * @return array Updated list of query strings to cache + */ + function rocket_cache_v_query_string( $query_strings ) { + _deprecated_function( __FUNCTION__, '3.1', 'WP_Rocket\Third_Party\Plugins\Ecommerce\WooCommerce::cache_geolocation_query_string()' ); + if ( 'geolocation_ajax' === get_option( 'woocommerce_default_customer_address' ) ) { + $query_strings[] = 'v'; + } + + return $query_strings; + } +} + +if ( ! function_exists( 'rocket_exclude_woocommerce_pages' ) ) { + /** + * Exclude WooCommerce cart, checkout and account pages from caching + * + * @since 2.11 Moved to 3rd party + * @since 2.4 + * @deprecated 3.1 + * @see WP_Rocket\Third_Party\Plugins\Ecommerce\WooCommerce::exclude_pages() + * + * @param array $urls An array of excluded pages. + * @return array Updated array of excluded pages + */ + function rocket_exclude_woocommerce_pages( $urls ) { + _deprecated_function( __FUNCTION__, '3.1', 'WP_Rocket\Third_Party\Plugins\Ecommerce\WooCommerce::exclude_pages()' ); + if ( function_exists( 'WC' ) && function_exists( 'wc_get_page_id' ) ) { + if ( wc_get_page_id( 'checkout' ) && wc_get_page_id( 'checkout' ) !== -1 && wc_get_page_id( 'checkout' ) !== (int) get_option( 'page_on_front' ) ) { + $checkout_urls = get_rocket_i18n_translated_post_urls( wc_get_page_id( 'checkout' ), 'page', '(.*)' ); + $urls = array_merge( $urls, $checkout_urls ); + } + + if ( wc_get_page_id( 'cart' ) && wc_get_page_id( 'cart' ) !== -1 && wc_get_page_id( 'cart' ) !== (int) get_option( 'page_on_front' ) ) { + $cart_urls = get_rocket_i18n_translated_post_urls( wc_get_page_id( 'cart' ) ); + $urls = array_merge( $urls, $cart_urls ); + } + + if ( wc_get_page_id( 'myaccount' ) && wc_get_page_id( 'myaccount' ) !== -1 && wc_get_page_id( 'myaccount' ) !== (int) get_option( 'page_on_front' ) ) { + $cart_urls = get_rocket_i18n_translated_post_urls( wc_get_page_id( 'myaccount' ), 'page', '(.*)' ); + $urls = array_merge( $urls, $cart_urls ); + } + } + + return $urls; + } +} + +if ( ! function_exists( 'rocket_activate_woocommerce' ) ) { + /** + * Add query string to exclusion when activating the plugin + * + * @since 2.8.6 + * @deprecated 3.1 + * @see WP_Rocket\Third_Party\Plugins\Ecommerce\WooCommerce::activate_woocommerce() + * @author Rémy Perona + */ + function rocket_activate_woocommerce() { + _deprecated_function( __FUNCTION__, '3.1', 'WP_Rocket\Third_Party\Plugins\Ecommerce\WooCommerce::activate_woocommerce()' ); + add_filter( 'rocket_cache_reject_uri', 'rocket_exclude_woocommerce_pages' ); + add_filter( 'rocket_cache_query_strings', 'rocket_cache_v_query_string' ); + + // Update .htaccess file rules. + flush_rocket_htaccess(); + + // Regenerate the config file. + rocket_generate_config_file(); + } +} + +if ( ! function_exists( 'rocket_deactivate_woocommerce' ) ) { + /** + * Remove query string from exclusion when deactivating the plugin + * + * @since 2.8.6 + * @deprecated 3.1 + * @see WP_Rocket\Third_Party\Plugins\Ecommerce\WooCommerce::deactivate_woocommerce() + * @author Rémy Perona + */ + function rocket_deactivate_woocommerce() { + _deprecated_function( __FUNCTION__, '3.1', 'WP_Rocket\Third_Party\Plugins\Ecommerce\WooCommerce::deactivate_woocommerce()' ); + remove_filter( 'rocket_cache_reject_uri', 'rocket_exclude_woocommerce_pages' ); + remove_filter( 'rocket_cache_query_strings', 'rocket_cache_v_query_string' ); + + // Update .htaccess file rules. + flush_rocket_htaccess(); + + // Regenerate the config file. + rocket_generate_config_file(); + } +} + +if ( ! function_exists( 'rocket_exclude_wc_rest_api' ) ) { + /** + * Exclude WooCommerce REST API URL from cache + * + * @since 2.6.5 + * @deprecated 3.1 + * @see WP_Rocket\Third_Party\Plugins\Ecommerce\WooCommerce::exclude_wc_rest_api() + * + * @param array $uri URLs to exclude from cache. + * @return array Updated list of URLs to exclude from cache + */ + function rocket_exclude_wc_rest_api( $uri ) { + _deprecated_function( __FUNCTION__, '3.1', 'WP_Rocket\Third_Party\Plugins\Ecommerce\WooCommerce::exclude_wc_rest_api()' ); + /** + * By default, don't cache the WooCommerce REST API. + * + * @since 2.6.5 + * + * @param bool false will force to cache the WooCommerce REST API + */ + $rocket_cache_reject_wc_rest_api = apply_filters( 'rocket_cache_reject_wc_rest_api', true ); + + // Exclude WooCommerce REST API. + if ( $rocket_cache_reject_wc_rest_api ) { + $uri[] = rocket_clean_exclude_file( home_url( '/wc-api/v(.*)' ) ); + } + + return $uri; + } +} + +if ( ! function_exists( 'rocket_minify_process' ) ) { + /** + * Launch WP Rocket minification process (HTML, CSS and JavaScript) + * + * @since 2.10 New process for minification without concatenation + * @since 1.3.0 This process is called via the new filter rocket_buffer + * @since 1.1.6 Minify inline CSS and JavaScript + * @since 1.0 + * @deprecated 3.1 + * + * @param string $buffer HTML content. + * @return string Modified HTML content + */ + function rocket_minify_process( $buffer ) { + _deprecated_function( __FUNCTION__, '3.1' ); + + $enable_css = get_rocket_option( 'minify_css' ); + $enable_js = get_rocket_option( 'minify_js' ); + $enable_google_fonts = get_rocket_option( 'minify_google_fonts' ); + + if ( $enable_css || $enable_js || $enable_google_fonts ) { + list( $buffer, $conditionals ) = rocket_extract_ie_conditionals( $buffer ); + } + + // Minify JavaScript. + if ( $enable_js && ( ! defined( 'DONOTROCKETOPTIMIZE' ) || ! DONOTROCKETOPTIMIZE ) && ( ! defined( 'DONOTMINIFYJS' ) || ! DONOTMINIFYJS ) && ! is_rocket_post_excluded_option( 'minify_js' ) ) { + $buffer = rocket_minify_files( $buffer, 'js' ); + } + + // Minify CSS. + if ( $enable_css && ( ! defined( 'DONOTROCKETOPTIMIZE' ) || ! DONOTROCKETOPTIMIZE ) && ( ! defined( 'DONOTMINIFYCSS' ) || ! DONOTMINIFYCSS ) && ! is_rocket_post_excluded_option( 'minify_css' ) ) { + $buffer = rocket_minify_files( $buffer, 'css' ); + } + + // Concatenate Google Fonts. + if ( $enable_google_fonts ) { + $buffer = rocket_concatenate_google_fonts( $buffer ); + } + + if ( $enable_css || $enable_js || $enable_google_fonts ) { + $buffer = rocket_inject_ie_conditionals( $buffer, $conditionals ); + } + + return $buffer; + } +} + +if ( ! function_exists( 'rocket_minify_html' ) ) { + /** + * Minifies inline HTML + * + * @since 2.10 Do the HTML minification independently and hook it later to prevent conflicts + * @since 1.1.12 + * @deprecated 3.1 + * + * @param string $buffer HTML content. + * @return string Updated HTML content + */ + function rocket_minify_html( $buffer ) { + _deprecated_function( __FUNCTION__, '3.1' ); + + if ( ! get_rocket_option( 'minify_html' ) || is_rocket_post_excluded_option( 'minify_html' ) ) { + return $buffer; + } + + $html_options = array( + 'cssMinifier' => 'rocket_minify_inline_css', + ); + + /** + * Filter options of minify inline HTML + * + * @since 1.1.12 + * + * @param array $html_options Options of minify inline HTML. + */ + $html_options = apply_filters( 'rocket_minify_html_options', $html_options ); + + return Minify_HTML::minify( $buffer, $html_options ); + } +} + +if ( ! function_exists( 'rocket_fix_ssl_minify' ) ) { + /** + * Fix issue with SSL and minification + * + * @since 2.3 + * @deprecated 3.1 + * + * @param string $url An url to filter to set the scheme to https if needed. + * @return string Updated URL + */ + function rocket_fix_ssl_minify( $url ) { + _deprecated_function( __FUNCTION__, '3.1' ); + + if ( is_ssl() && false === strpos( $url, 'https://' ) && ! in_array( rocket_extract_url_component( $url, PHP_URL_HOST ), get_rocket_cnames_host( array( 'all', 'css_js', 'css', 'js' ) ), true ) ) { + $url = str_replace( 'http://', 'https://', $url ); + } + + return $url; + } +} + +if ( ! function_exists( 'rocket_minify_i18n_multidomain' ) ) { + /** + * Compatibility with multilingual plugins & multidomain configuration + * + * @since 2.6.13 Regression Fix: Apply CDN on minified CSS and JS files by checking the CNAME host + * @since 2.6.8 + * @deprecated 3.1 + * + * @param string $url Minified file URL. + * @return string Updated minified file URL + */ + function rocket_minify_i18n_multidomain( $url ) { + _deprecated_function( __FUNCTION__, '3.1' ); + + if ( ! rocket_has_i18n() ) { + return $url; + } + + $url_host = rocket_extract_url_component( $url, PHP_URL_HOST ); + $zone = array( 'all', 'css_and_js' ); + $current_filter = current_filter(); + + // Add only CSS zone. + if ( 'rocket_css_url' === $current_filter ) { + $zone[] = 'css'; + } + + // Add only JS zone. + if ( 'rocket_js_url' === $current_filter ) { + $zone[] = 'js'; + } + + $cnames = get_rocket_cdn_cnames( $zone ); + $cnames = array_map( 'rocket_remove_url_protocol' , $cnames ); + + if ( $url_host !== $_SERVER['HTTP_HOST'] && in_array( $_SERVER['HTTP_HOST'], get_rocket_i18n_host(), true ) && ! in_array( $url_host, $cnames, true ) ) { + $url = str_replace( $url_host, $_SERVER['HTTP_HOST'], $url ); + } + + return $url; + } +} + +if ( ! function_exists( 'rocket_get_js_enqueued_in_head' ) ) { + /** + * Get all src for JS files already enqueued in head + * + * @since 2.10 + * @deprecated 3.1 + * @author Remy Perona + */ + function rocket_get_js_enqueued_in_head() { + _deprecated_function( __FUNCTION__, '3.1' ); + + global $wp_scripts, $rocket_js_enqueued_in_head; + + if ( ! (bool) $wp_scripts->done ) { + return; + } + + foreach ( $wp_scripts->done as $handle ) { + if ( ! empty( $wp_scripts->registered[ $handle ]->src ) ) { + $rocket_js_enqueued_in_head[] = str_replace( '#', '\#', rocket_clean_exclude_file( $wp_scripts->registered[ $handle ]->src ) ); + } + } + } +} + +if ( ! function_exists( 'get_rocket_exclude_files' ) ) { + /** + * Get all files to exclude from minification/concatenation. + * + * @since 2.11 + * @deprecated 3.1 + * @author Remy Perona + * + * @param string $extension Type of files to exclude. + * @return array Array of excluded files. + */ + function get_rocket_exclude_files( $extension ) { + _deprecated_function( __FUNCTION__, '3.1' ); + + if ( 'css' === $extension ) { + $excluded_files = get_rocket_option( 'exclude_css', array() ); + /** + * Filters CSS files to exclude from minification/concatenation. + * + * @since 2.6 + * + * @param array $excluded_files List of excluded CSS files. + */ + $excluded_files = apply_filters( 'rocket_exclude_css', $excluded_files ); + } elseif ( 'js' === $extension ) { + global $wp_scripts; + + $excluded_files = get_rocket_option( 'exclude_js', array() ); + + if ( get_rocket_option( 'defer_all_js', 0 ) && get_rocket_option( 'defer_all_js_safe', 0 ) ) { + $excluded_files[] = rocket_clean_exclude_file( site_url( $wp_scripts->registered['jquery-core']->src ) ); + } + + /** + * Filter JS files to exclude from minification/concatenation. + * + * @since 2.6 + * + * @param array $js_files List of excluded JS files. + */ + $excluded_files = apply_filters( 'rocket_exclude_js', $excluded_files ); + } + + return $excluded_files; + } +} + +if ( ! function_exists( 'rocket_concatenate_google_fonts' ) ) { + /** + * Concatenates Google Fonts tags (http://fonts.googleapis.com/css?...) + * + * @since 2.3 + * @deprecated 3.1 + * + * @param string $buffer HTML content. + * @return string Modified HTML content + */ + function rocket_concatenate_google_fonts( $buffer ) { + _deprecated_function( __FUNCTION__, '3.1' ); + + // Get all Google Fonts CSS files. + $buffer_without_comments = preg_replace( '//Uis', '', $buffer ); + preg_match_all( '/])+)?(?:\s+href\s*=\s*([\'"])((?:https?:)?\/\/fonts\.googleapis\.com\/css(?:(?!\1).)+)\1)(?:\s+[^>]*)?>/iU', $buffer_without_comments, $matches ); + + if ( ! $matches[2] || 1 === count( $matches ) ) { + return $buffer; + } + + $fonts = array(); + $subsets = array(); + + foreach ( $matches[2] as $k => $font ) { + // Get fonts name. + $font = str_replace( array( '%7C', '%7c' ), '|', $font ); + $font = explode( 'family=', $font ); + $font = ( isset( $font[1] ) ) ? explode( '&', $font[1] ) : array(); + + // Add font to the collection. + $fonts = array_merge( $fonts, explode( '|', reset( $font ) ) ); + + // Add subset to collection. + $subset = ( is_array( $font ) ) ? end( $font ) : ''; + if ( false !== strpos( $subset, 'subset=' ) ) { + $subset = explode( 'subset=', $subset ); + $subsets = array_merge( $subsets, explode( ',', $subset[1] ) ); + } + + // Delete the Google Fonts tag. + $buffer = str_replace( $matches[0][ $k ], '', $buffer ); + } + + // Concatenate fonts tag. + $subsets = ( $subsets ) ? '&subset=' . implode( ',', array_filter( array_unique( $subsets ) ) ) : ''; + $fonts = implode( '|', array_filter( array_unique( $fonts ) ) ); + $fonts = str_replace( '|', '%7C', $fonts ); + + if ( ! empty( $fonts ) ) { + $fonts = ''; + $buffer = preg_replace( '//U', '' . $fonts, $buffer, 1 ); + } + + return $buffer; + } +} + +if ( ! function_exists( 'rocket_minify_inline_css' ) ) { + /** + * Minifies inline CSS + * + * @since 1.1.6 + * @deprecated 3.1 + * + * @param string $css HTML content. + * @return string Updated HTML content + */ + function rocket_minify_inline_css( $css ) { + _deprecated_function( __FUNCTION__, '3.1' ); + + $minify = new Minify\CSS( $css ); + return $minify->minify(); + } +} + +if ( ! function_exists( 'rocket_minify_inline_js' ) ) { + /** + * Minifies inline JavaScript + * + * @since 1.1.6 + * @deprecated 3.1 + * + * @param string $js HTML content. + * @return string Updated HTML content + */ + function rocket_minify_inline_js( $js ) { + _deprecated_function( __FUNCTION__, '3.1' ); + + $minify = new Minify\JS( $js ); + return $minify->minify(); + } +} + +if ( ! function_exists( 'rocket_extract_ie_conditionals' ) ) { + /** + * Extracts IE conditionals tags and replace them with placeholders + * + * @since 1.0 + * @deprecated 3.1 + * + * @param string $buffer HTML content. + * @return string Updated HTML content + */ + function rocket_extract_ie_conditionals( $buffer ) { + _deprecated_function( __FUNCTION__, '3.1' ); + + preg_match_all( '//is', $buffer, $conditionals_match ); + $buffer = preg_replace( '//is', '{{WP_ROCKET_CONDITIONAL}}', $buffer ); + + $conditionals = array(); + foreach ( $conditionals_match[0] as $conditional ) { + $conditionals[] = $conditional; + } + + return array( $buffer, $conditionals ); + } +} + +if ( ! function_exists( 'rocket_inject_ie_conditionals' ) ) { + /** + * Replaces WP Rocket placeholders with IE condtional tags + * + * @since 1.0 + * @deprecated 3.1 + * + * @param string $buffer HTML content. + * @param array $conditionals An array of HTML conditional tags. + * @return string Updated HTML content + */ + function rocket_inject_ie_conditionals( $buffer, $conditionals ) { + _deprecated_function( __FUNCTION__, '3.1' ); + + foreach ( $conditionals as $conditional ) { + if ( false !== strpos( $buffer, '{{WP_ROCKET_CONDITIONAL}}' ) ) { + $buffer = preg_replace( '/{{WP_ROCKET_CONDITIONAL}}/', $conditional, $buffer, 1 ); + } else { + break; + } + } + return $buffer; + } +} + +if ( ! function_exists( 'rocket_minify_files' ) ) { + /** + * Parses the buffer to minify the CSS and JS files + * + * @since 2.11 + * @since 2.1 + * @deprecated 3.1 + * + * @param string $buffer HTML output. + * @param string $extension Type of files to minify. + * @return string Updated HTML output. + */ + function rocket_minify_files( $buffer, $extension ) { + _deprecated_function( __FUNCTION__, '3.1' ); + + global $wp_scripts, $rocket_js_enqueued_in_head; + if ( 'css' === $extension ) { + $concatenate = get_rocket_option( 'minify_concatenate_css', false ) ? true : false; + // Get all css files with this regex. + preg_match_all( apply_filters( 'rocket_minify_css_regex_pattern', '//iU' ), $buffer, $tags_match, PREG_SET_ORDER ); + } + + if ( 'js' === $extension ) { + $js_files_in_head = ''; + $concatenate = get_rocket_option( 'minify_concatenate_js', false ) ? true : false; + if ( $rocket_js_enqueued_in_head && is_array( $rocket_js_enqueued_in_head ) ) { + $js_files_in_head = implode( '|', $rocket_js_enqueued_in_head ); + } + + // Get all js files with this regex. + preg_match_all( apply_filters( 'rocket_minify_js_regex_pattern', '#]+?src=[\'|"]([^\'|"]+\.js?.+)[\'|"].*>(?:<\/script>)#iU' ), $buffer, $tags_match, PREG_SET_ORDER ); + } + + $original_buffer = $buffer; + $files = array(); + $excluded_files = array(); + $external_js_files = array(); + + foreach ( $tags_match as $tag ) { + // Don't minify external files. + if ( is_rocket_external_file( $tag[1], $extension ) ) { + if ( 'js' === $extension && $concatenate ) { + $host = rocket_extract_url_component( $tag[1], PHP_URL_HOST ); + $excluded_external_js = get_rocket_minify_excluded_external_js(); + if ( ! isset( $excluded_external_js[ $host ] ) ) { + $external_js_files[] = $tag[0]; + } + } + continue; + } + + // Don't minify excluded files. + if ( is_rocket_minify_excluded_file( $tag, $extension ) ) { + if ( $concatenate && 'js' === $extension && get_rocket_option( 'defer_all_js' ) && get_rocket_option( 'defer_all_js_safe' ) && false !== strpos( $tag[1], $wp_scripts->registered['jquery-core']->src ) ) { + if ( get_rocket_option( 'remove_query_strings' ) ) { + $external_js_files['jquery-cache-busting'] = str_replace( $tag[1], get_rocket_browser_cache_busting( $tag[1], 'script_loader_src' ), $tag[0] ); + $buffer = str_replace( $tag[0], $external_js_files['jquery-cache-busting'], $buffer ); + } else { + $external_js_files[] = $tag[0]; + } + + continue; + } + + $excluded_files[] = $tag; + continue; + } + + if ( $concatenate ) { + if ( 'js' === $extension ) { + $file_path = rocket_clean_exclude_file( $tag[1] ); + + if ( ! empty( $js_files_in_head ) && preg_match( '#(' . $js_files_in_head . ')#', $file_path ) ) { + $files['header'][] = strtok( $tag[1], '?' ); + } else { + $files['footer'][] = strtok( $tag[1], '?' ); + } + } else { + $files[] = strtok( $tag[1], '?' ); + } + + $buffer = str_replace( $tag[0], '', $buffer ); + continue; + } + + // Don't minify if file is already minified. + if ( preg_match( '/(?:-|\.)min.' . $extension . '/iU', $tag[1] ) ) { + $excluded_files[] = $tag; + continue; + } + + // Don't minify jQuery included in WP core since it's already minified but without .min in the filename. + if ( ! empty( $wp_scripts->registered['jquery-core']->src ) && false !== strpos( $tag[1], $wp_scripts->registered['jquery-core']->src ) ) { + $excluded_files[] = $tag; + continue; + } + + $files[] = $tag; + } + + if ( get_rocket_option( 'remove_query_strings' ) ) { + foreach ( $excluded_files as $tag ) { + if ( 'css' === $extension ) { + $tag_cache_busting = str_replace( $tag[1], get_rocket_browser_cache_busting( $tag[1], 'style_loader_src' ), $tag[0] ); + } + + if ( 'js' === $extension ) { + $tag_cache_busting = str_replace( $tag[1], get_rocket_browser_cache_busting( $tag[1], 'script_loader_src' ), $tag[0] ); + } + + $buffer = str_replace( $tag[0], $tag_cache_busting, $buffer ); + } + } + + if ( empty( $files ) ) { + return $buffer; + } + + if ( ! $concatenate ) { + foreach ( $files as $tag ) { + $minify_url = get_rocket_minify_url( $tag[1], $extension ); + + if ( ! $minify_url ) { + continue; + } + + $minify_tag = str_replace( $tag[1], $minify_url, $tag[0] ); + + if ( 'css' === $extension ) { + $minify_tag = str_replace( $tag[2], ' data-minify="1" ' . $tag[2], $minify_tag ); + } + + if ( 'js' === $extension ) { + $minify_tag = str_replace( '>', ' data-minify="1">', $minify_tag ); + } + + $buffer = str_replace( $tag[0], $minify_tag, $buffer ); + } + + return $buffer; + } + + if ( 'js' === $extension ) { + $minify_header_url = get_rocket_minify_url( $files['header'], $extension ); + $minify_url = get_rocket_minify_url( $files['footer'], $extension ); + + if ( ! $minify_header_url && ! $minify_url ) { + return $original_buffer; + } + + foreach ( $external_js_files as $external_js_file ) { + $buffer = str_replace( $external_js_file, '', $buffer ); + } + + $minify_header_tag = ''; + $buffer = preg_replace( '//U', '' . implode( '', $external_js_files ) . $minify_header_tag, $buffer, 1 ); + + $minify_tag = ''; + return str_replace( '', $minify_tag . '', $buffer ); + + } + + if ( 'css' === $extension ) { + $minify_url = get_rocket_minify_url( $files, $extension ); + + if ( ! $minify_url ) { + return $original_buffer; + } + + $minify_tag = ''; + return preg_replace( '//U', '' . $minify_tag, $buffer, 1 ); + } + } +} + +if ( ! function_exists( 'is_rocket_external_file' ) ) { + /** + * Determines if the file is external + * + * @since 2.11 + * @deprecated 3.1 + * @author Remy Perona + * + * @param string $url URL of the file. + * @param string $extension File extension. + * @return bool True if external, false otherwise + */ + function is_rocket_external_file( $url, $extension ) { + _deprecated_function( __FUNCTION__, '3.1' ); + + $file = get_rocket_parse_url( $url ); + $wp_content = get_rocket_parse_url( WP_CONTENT_URL ); + $hosts = get_rocket_cnames_host( array( 'all', 'css_and_js', $extension ) ); + $hosts[] = $wp_content['host']; + $langs = get_rocket_i18n_uri(); + + // Get host for all langs. + if ( $langs ) { + foreach ( $langs as $lang ) { + $hosts[] = rocket_extract_url_component( $lang, PHP_URL_HOST ); + } + } + + $hosts_index = array_flip( array_unique( $hosts ) ); + + // URL has domain and domain is not part of the internal domains. + if ( isset( $file['host'] ) && ! empty( $file['host'] ) && ! isset( $hosts_index[ $file['host'] ] ) ) { + return true; + } + + // URL has no domain and doesn't contain the WP_CONTENT path or wp-includes. + if ( ! isset( $file['host'] ) && ! preg_match( '#(' . $wp_content['path'] . '|wp-includes)#', $file['path'] ) ) { + return true; + } + + return false; + } +} + +if ( ! function_exists( 'is_rocket_minify_excluded_file' ) ) { + /** + * Determines if it is a file excluded from minification + * + * @since 2.11 + * @deprecated 3.1 + * @author Remy Perona + * + * @param array $tag Array containing the matches from the regex. + * @param string $extension File extension. + * @return bool True if it is a file excluded, false otherwise + */ + function is_rocket_minify_excluded_file( $tag, $extension ) { + _deprecated_function( __FUNCTION__, '3.1' ); + + // File should not be minified. + if ( false !== strpos( $tag[0], 'data-minify=' ) || false !== strpos( $tag[0], 'data-no-minify=' ) ) { + return true; + } + + if ( 'css' === $extension ) { + // CSS file media attribute is not all or screen. + if ( false !== strpos( $tag[0], 'media=' ) && ! preg_match( '/media=["\'](?:["\']|[^"\']*?(all|screen)[^"\']*?["\'])/iU', $tag[0] ) ) { + return true; + } + + if ( false !== strpos( $tag[0], 'only screen and' ) ) { + return true; + } + } + + $file_path = rocket_extract_url_component( $tag[1], PHP_URL_PATH ); + + // File extension is not .css or .js. + if ( pathinfo( $file_path, PATHINFO_EXTENSION ) !== $extension ) { + return true; + } + + $excluded_files = get_rocket_exclude_files( $extension ); + + if ( ! empty( $excluded_files ) ) { + foreach ( $excluded_files as $i => $excluded_file ) { + $excluded_files[ $i ] = str_replace( '#', '\#', $excluded_file ); + } + + $excluded_files = implode( '|', $excluded_files ); + + // File is excluded from minification/concatenation. + if ( preg_match( '#^(' . $excluded_files . ')$#', $file_path ) ) { + return true; + } + } + + return false; + } +} + +if ( ! function_exists( 'get_rocket_minify_url' ) ) { + /** + * Creates the minify URL if the minification is successful + * + * @since 2.11 + * @deprecated 3.1 + * @author Remy Perona + * + * @param string|array $files Original file(s) URL(s). + * @param string $extension File(s) extension. + * @return string|bool The minify URL if successful, false otherwise + */ + function get_rocket_minify_url( $files, $extension ) { + _deprecated_function( __FUNCTION__, '3.1' ); + + if ( empty( $files ) ) { + return false; + } + + $hosts = get_rocket_cnames_host( array( 'all', 'css_and_js', $extension ) ); + $hosts['home'] = rocket_extract_url_component( home_url(), PHP_URL_HOST ); + $hosts_index = array_flip( $hosts ); + $minify_key = get_rocket_option( 'minify_' . $extension . '_key', create_rocket_uniqid() ); + + if ( is_string( $files ) ) { + $file = get_rocket_parse_url( $files ); + $file_path = rocket_url_to_path( strtok( $files, '?' ), $hosts_index ); + $unique_id = md5( $files . $minify_key ); + $filename = preg_replace( '/\.(' . $extension . ')$/', '-' . $unique_id . '.' . $extension, ltrim( rocket_realpath( $file['path'] ), '/' ) ); + } else { + foreach ( $files as $file ) { + $file_path[] = rocket_url_to_path( $file, $hosts_index ); + } + + $files_hash = implode( ',', $files ); + $filename = md5( $files_hash . $minify_key ) . '.' . $extension; + } + + $minified_file = WP_ROCKET_MINIFY_CACHE_PATH . get_current_blog_id() . '/' . $filename; + + if ( ! file_exists( $minified_file ) ) { + $minified_content = rocket_minify( $file_path, $extension ); + + if ( ! $minified_content ) { + return false; + } + + $minify_filepath = rocket_write_minify_file( $minified_content, $minified_file ); + + if ( ! $minify_filepath ) { + return false; + } + } + + $minify_url = get_rocket_cdn_url( WP_ROCKET_MINIFY_CACHE_URL . get_current_blog_id() . '/' . $filename, array( 'all', 'css_and_js', $extension ) ); + + if ( 'css' === $extension ) { + /** + * Filters CSS file URL with CDN hostname + * + * @since 2.1 + * + * @param string $minify_url Minified file URL. + */ + return apply_filters( 'rocket_css_url', $minify_url ); + } + + if ( 'js' === $extension ) { + /** + * Filters JavaScript file URL with CDN hostname + * + * @since 2.1 + * + * @param string $minify_url Minified file URL. + */ + return apply_filters( 'rocket_js_url', $minify_url ); + + } + } +} + +if ( ! function_exists( 'rocket_minify' ) ) { + /** + * Minifies the content + * + * @since 2.11 + * @deprecated 3.1 + * @author Remy Perona + * + * @param string|array $files File(s) to minify. + * @param string $extension File(s) extension. + * @return string|bool Minified content, false if empty + */ + function rocket_minify( $files, $extension ) { + _deprecated_function( __FUNCTION__, '3.1' ); + + if ( 'css' === $extension ) { + $minify = new Minify\CSS(); + } elseif ( 'js' === $extension ) { + $minify = new Minify\JS(); + } + + $files = (array) $files; + + foreach ( $files as $file ) { + $file_content = rocket_direct_filesystem()->get_contents( $file ); + if ( 'css' === $extension ) { + /** + * Filters the Document Root path to use during CSS minification to rewrite paths + * + * @since 2.7 + * + * @param string The Document Root path. + */ + $document_root = apply_filters( 'rocket_min_documentRoot', ABSPATH ); + + $file_content = rocket_cdn_css_properties( Minify_CSS_UriRewriter::rewrite( $file_content, dirname( $file ), $document_root ) ); + } + + $minify->add( $file_content ); + } + + $minified_content = $minify->minify(); + + if ( empty( $minified_content ) ) { + return false; + } + + return $minified_content; + } +} + +if ( ! function_exists( 'rocket_write_minify_file' ) ) { + /** + * Writes the minified content to a file + * + * @since 2.11 + * @deprecated 3.1 + * @author Remy Perona + * + * @param string $content Minified content. + * @param string $minified_file Path to the minified file to write in. + * @return bool True if successful, false otherwise + */ + function rocket_write_minify_file( $content, $minified_file ) { + _deprecated_function( __FUNCTION__, '3.1' ); + + if ( file_exists( $minified_file ) ) { + return true; + } + + if ( ! rocket_mkdir_p( dirname( $minified_file ) ) ) { + return false; + } + + return rocket_put_content( $minified_file, $content ); + } +} + +if ( ! function_exists( 'get_rocket_minify_excluded_external_js' ) ) { + /** + * Get all JS externals files to exclude of the minification process + * + * @since 2.6 + * @deprecated 3.1 + * + * @return array Array of excluded external JS + */ + function get_rocket_minify_excluded_external_js() { + _deprecated_function( __FUNCTION__, '3.1' ); + + /** + * Filters JS externals files to exclude from the minification process (do not move into the header) + * + * @since 2.2 + * + * @param array $hostnames Hostname of JS files to exclude. + */ + $excluded_external_js = apply_filters( + 'rocket_minify_excluded_external_js', array( + 'forms.aweber.com', + 'video.unrulymedia.com', + 'gist.github.com', + 'stats.wp.com', + 'stats.wordpress.com', + 'www.statcounter.com', + 'widget.rafflecopter.com', + 'widget-prime.rafflecopter.com', + 'widget.supercounters.com', + 'releases.flowplayer.org', + 'tools.meetaffiliate.com', + 'c.ad6media.fr', + 'cdn.stickyadstv.com', + 'www.smava.de', + 'contextual.media.net', + 'app.getresponse.com', + 'ap.lijit.com', + 'adserver.reklamstore.com', + 's0.wp.com', + 'wprp.zemanta.com', + 'files.bannersnack.com', + 'smarticon.geotrust.com', + 'js.gleam.io', + 'script.ioam.de', + 'ir-na.amazon-adsystem.com', + 'web.ventunotech.com', + 'verify.authorize.net', + 'ads.themoneytizer.com', + 'embed.finanzcheck.de', + 'imagesrv.adition.com', + 'js.juicyads.com', + 'form.jotformeu.com', + 'speakerdeck.com', + 'content.jwplatform.com', + 'ads.investingchannel.com', + 'app.ecwid.com', + 'www.industriejobs.de', + 's.gravatar.com', + 'cdn.jsdelivr.net', + 'cdnjs.cloudflare.com', + 'code.jquery.com', + ) + ); + + return array_flip( $excluded_external_js ); + } +} + +if ( ! function_exists( 'rocket_cache_dynamic_resource' ) ) { + /** + * Create a static file for dynamically generated CSS/JS from PHP + * + * @since 2.9 + * @deprecated 3.1 + * @author Remy Perona + * + * @param string $src dynamic CSS/JS file URL. + * @return string URL of the generated static file + */ + function rocket_cache_dynamic_resource( $src ) { + _deprecated_function( __FUNCTION__, '3.1' ); + global $pagenow; + + if ( defined( 'DONOTROCKETOPTIMIZE' ) && DONOTROCKETOPTIMIZE ) { + return $src; + } + + if ( is_user_logged_in() && ! get_rocket_option( 'cache_logged_user' ) ) { + return $src; + } + + if ( 'wp-login.php' === $pagenow ) { + return $src; + } + + if ( false === strpos( $src, '.php' ) ) { + return $src; + } + + /** + * Filters files to exclude from static dynamic resources + * + * @since 2.9.3 + * @author Remy Perona + * + * @param array $excluded_files An array of filepath to exclude. + */ + $excluded_files = apply_filters( 'rocket_exclude_static_dynamic_resources', array() ); + $excluded_files[] = '/wp-admin/admin-ajax.php'; + $excluded_files = array_flip( $excluded_files ); + + if ( isset( $excluded_files[ rocket_clean_exclude_file( $src ) ] ) ) { + return $src; + } + + $full_src = ( substr( $src, 0, 2 ) === '//' ) ? rocket_add_url_protocol( $src ) : $src; + + $current_filter = current_filter(); + + switch ( $current_filter ) { + case 'script_loader_src': + $extension = 'js'; + $minify_key = get_rocket_option( 'minify_js_key' ); + break; + case 'style_loader_src': + $extension = 'css'; + $minify_key = get_rocket_option( 'minify_css_key' ); + break; + } + + $hosts = get_rocket_cnames_host( array( 'all', 'css_and_js', $extension ) ); + $hosts[] = rocket_extract_url_component( home_url(), PHP_URL_HOST ); + $hosts_index = array_flip( $hosts ); + $file = get_rocket_parse_url( $full_src ); + $file['query'] = remove_query_arg( 'ver', $file['query'] ); + + if ( $file['query'] ) { + return $src; + } + + if ( '' === $file['host'] ) { + $full_src = home_url() . $src; + } + + if ( strpos( $full_src, '://' ) !== false && ! isset( $hosts_index[ $file['host'] ] ) ) { + return $src; + } + + $relative_src = ltrim( $file['path'], '/' ); + $abspath_src = rocket_url_to_path( strtok( $full_src, '?' ), $hosts_index ); + + /* + * Filters the dynamic resource cache filename + * + * @since 2.9 + * @author Remy Perona + * + * @param string $filename filename for the cache file + */ + $cache_dynamic_resource_filename = apply_filters( 'rocket_dynamic_resource_cache_filename', preg_replace( '/\.(php)$/', '-' . $minify_key . '.' . $extension, $relative_src ) ); + $cache_busting_paths = rocket_get_cache_busting_paths( $cache_dynamic_resource_filename, $extension ); + + if ( file_exists( $cache_busting_paths['filepath'] ) && is_readable( $cache_busting_paths['filepath'] ) ) { + return $cache_busting_paths['url']; + } + + if ( rocket_fetch_and_cache_busting( $full_src, $cache_busting_paths, $abspath_src, $current_filter ) ) { + return $cache_busting_paths['url']; + } + + return $src; + } +} + +if ( ! function_exists( 'rocket_browser_cache_busting' ) ) { + /** + * Wrapper for get_rocket_browser_cache_busting except when minification is active. + * + * @since 2.9 + * @deprecated 3.1 + * @author Remy Perona + * + * @param string $src CSS/JS file URL. + * @return string updated CSS/JS file URL. + */ + function rocket_browser_cache_busting( $src ) { + _deprecated_function( __FUNCTION__, '3.1' ); + $current_filter = current_filter(); + + if ( 'style_loader_src' === $current_filter && get_rocket_option( 'minify_css' ) && ( ! defined( 'DONOTMINIFYCSS' ) || ! DONOTMINIFYCSS ) && ! is_rocket_post_excluded_option( 'minify_css' ) ) { + return $src; + } + + if ( 'script_loader_src' === $current_filter && get_rocket_option( 'minify_js' ) && ( ! defined( 'DONOTMINIFYJS' ) || ! DONOTMINIFYJS ) && ! is_rocket_post_excluded_option( 'minify_js' ) ) { + return $src; + } + + return get_rocket_browser_cache_busting( $src, $current_filter ); + } +} + +if ( ! function_exists( 'get_rocket_browser_cache_busting' ) ) { + /** + * Create a cache busting file with the version in the filename + * + * @since 2.9 + * @deprecated 3.1 + * @author Remy Perona + * + * @param string $src CSS/JS file URL. + * @param string $current_filter Current WordPress filter. + * @return string updated CSS/JS file URL + */ + function get_rocket_browser_cache_busting( $src, $current_filter = '' ) { + _deprecated_function( __FUNCTION__, '3.1' ); + global $pagenow; + + if ( defined( 'DONOTROCKETOPTIMIZE' ) && DONOTROCKETOPTIMIZE ) { + return $src; + } + + if ( ! get_rocket_option( 'remove_query_strings' ) ) { + return $src; + } + + if ( is_user_logged_in() && ! get_rocket_option( 'cache_logged_user', 0 ) ) { + return $src; + } + + if ( 'wp-login.php' === $pagenow ) { + return $src; + } + + if ( false === strpos( $src, '.css' ) && false === strpos( $src, '.js' ) ) { + return $src; + } + + if ( false !== strpos( $src, 'ver=' . $GLOBALS['wp_version'] ) ) { + $src = rtrim( str_replace( array( 'ver=' . $GLOBALS['wp_version'], '?&', '&&' ), array( '', '?', '&' ), $src ), '?&' ); + } + + /** + * Filters files to exclude from cache busting + * + * @since 2.9.3 + * @author Remy Perona + * + * @param array $excluded_files An array of filepath to exclude. + */ + $excluded_files = apply_filters( 'rocket_exclude_cache_busting', array() ); + $excluded_files = implode( '|', $excluded_files ); + + if ( preg_match( '#^(' . $excluded_files . ')$#', rocket_clean_exclude_file( $src ) ) ) { + return $src; + } + + if ( empty( $current_filter ) ) { + $current_filter = current_filter(); + } + + $full_src = ( substr( $src, 0, 2 ) === '//' ) ? rocket_add_url_protocol( $src ) : $src; + + switch ( $current_filter ) { + case 'script_loader_src': + $extension = 'js'; + break; + case 'style_loader_src': + $extension = 'css'; + break; + } + + $hosts = get_rocket_cnames_host( array( 'all', 'css_and_js', $extension ) ); + $hosts['home'] = rocket_extract_url_component( home_url(), PHP_URL_HOST ); + $hosts_index = array_flip( $hosts ); + $file = get_rocket_parse_url( $full_src ); + + if ( '' === $file['host'] ) { + $full_src = home_url() . $src; + } + + if ( false !== strpos( $full_src, '://' ) && ! isset( $hosts_index[ $file['host'] ] ) ) { + return $src; + } + + if ( empty( $file['query'] ) ) { + return $src; + } + + $relative_src = ltrim( $file['path'] . '?' . $file['query'], '/' ); + $abspath_src = rocket_url_to_path( strtok( $full_src, '?' ), $hosts_index ); + $cache_busting_filename = preg_replace( '/\.(js|css)\?(?:timestamp|ver)=([^&]+)(?:.*)/', '-$2.$1', $relative_src ); + + if ( $cache_busting_filename === $relative_src ) { + return $src; + } + + /* + * Filters the cache busting filename + * + * @since 2.9 + * @author Remy Perona + * + * @param string $filename filename for the cache busting file + */ + $cache_busting_filename = apply_filters( 'rocket_cache_busting_filename', $cache_busting_filename ); + $cache_busting_paths = rocket_get_cache_busting_paths( $cache_busting_filename, $extension ); + + if ( file_exists( $cache_busting_paths['filepath'] ) && is_readable( $cache_busting_paths['filepath'] ) ) { + return $cache_busting_paths['url']; + } + + if ( rocket_fetch_and_cache_busting( $abspath_src, $cache_busting_paths, $abspath_src, $current_filter ) ) { + return $cache_busting_paths['url']; + } + + return $src; + } +} + +if ( ! function_exists( 'rocket_dns_prefetch_buffer' ) ) { + /** + * Inserts html code for domain names to DNS prefetch in the buffer before creating the cache file + * + * @since 2.0 + * @deprecated 3.1 + * @author Jonathan Buttigieg + * + * @param String $buffer HTML content. + * @return String Updated buffer + */ + function rocket_dns_prefetch_buffer( $buffer ) { + _deprecated_function( __FUNCTION__, '3.1' ); + $dns_link_tags = ''; + $domains = rocket_get_dns_prefetch_domains(); + + if ( (bool) $domains ) { + foreach ( $domains as $domain ) { + $dns_link_tags .= ''; + } + } + + $old_ie_conditional_tag = ''; + + /** + * Allow to print an empty IE conditional tag to speed up old IE versions to load CSS & JS files + * + * @since 2.6.5 + * + * @param bool true will print the IE conditional tag + */ + if ( apply_filters( 'do_rocket_old_ie_prefetch_conditional_tag', true ) ) { + $old_ie_conditional_tag = ''; + } + + // Insert all DNS prefecth tags in head. + $buffer = preg_replace( '//', '' . $old_ie_conditional_tag . $dns_link_tags, $buffer, 1 ); + + return $buffer; + } +} diff --git a/wp-content/plugins/wp-rocket/inc/deprecated/subscriber/admin/Optimization/class-minify-html-subscriber.php b/wp-content/plugins/wp-rocket/inc/deprecated/subscriber/admin/Optimization/class-minify-html-subscriber.php new file mode 100644 index 0000000..8d1de45 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/deprecated/subscriber/admin/Optimization/class-minify-html-subscriber.php @@ -0,0 +1,113 @@ +options = $options; + } + + /** + * Return an array of events that this subscriber wants to listen to. + * + * @since 3.1 + * @author Remy Perona + * + * @return array + */ + public static function get_subscribed_events() { + return [ + 'rocket_buffer' => [ 'process', 14 ], + ]; + } + + /** + * Minifies HTML + * + * @since 3.1 + * @author Remy Perona + * + * @param string $html HTML content. + * @return string + */ + public function process( $html ) { + if ( defined( 'DONOTROCKETOPTIMIZE' ) && DONOTROCKETOPTIMIZE ) { + return $html; + } + + if ( ! $this->options->get( 'minify_html' ) || \is_rocket_post_excluded_option( 'minify_html' ) ) { + return $html; + } + + $html_options = [ + 'cssMinifier' => [ $this, 'minify_inline_css' ], + ]; + + /** + * Filter options of minify inline HTML + * + * @since 1.1.12 + * + * @param array $html_options Options of minify inline HTML. + */ + $html_options = apply_filters( 'rocket_minify_html_options', $html_options ); + + return \Minify_HTML::minify( $html, $html_options ); + } + + /** + * Minifies inline CSS + * + * @since 1.1.6 + * + * @param string $css HTML content. + * @return string + */ + public function minify_inline_css( $css ) { + $minify = new Minify\CSS( $css ); + return $minify->minify(); + } + + /** + * Minifies inline JavaScript + * + * @since 1.1.6 + * + * @param string $javascript HTML content. + * @return string + */ + public function minify_inline_js( $javascript ) { + $minify = new Minify\JS( $javascript ); + return $minify->minify(); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/deprecated/subscriber/admin/Settings/class-beacon-subscriber.php b/wp-content/plugins/wp-rocket/inc/deprecated/subscriber/admin/Settings/class-beacon-subscriber.php new file mode 100644 index 0000000..ec73b94 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/deprecated/subscriber/admin/Settings/class-beacon-subscriber.php @@ -0,0 +1,58 @@ +beacon = $beacon; + } + + /** + * Return an array of events that this subscriber wants to listen to. + * + * @since 3.2 + * @author Remy Perona + * + * @return array + */ + public static function get_subscribed_events() { + return [ + 'admin_print_footer_scripts-settings_page_wprocket' => 'insert_script', + ]; + } + + /** + * Insert HelpScout Beacon script + * + * @since 3.0 + * @author Remy Perona + * + * @return void + */ + public function insert_script() { + echo $this->beacon->insert_script(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Dynamic content is properly escaped in the view. + } +} diff --git a/wp-content/plugins/wp-rocket/inc/deprecated/vendors/classes/class-minify-html.php b/wp-content/plugins/wp-rocket/inc/deprecated/vendors/classes/class-minify-html.php new file mode 100644 index 0000000..3c6aff5 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/deprecated/vendors/classes/class-minify-html.php @@ -0,0 +1,308 @@ + + */ +class Minify_HTML +{ + use DeprecatedClassTrait; + + /** + * @var boolean + */ + protected $_jsCleanComments = true; + + /** + * "Minify" an HTML page + * + * @param string $html + * + * @param array $options + * + * 'cssMinifier' : (optional) callback function to process content of STYLE + * elements. + * + * 'jsMinifier' : (optional) callback function to process content of SCRIPT + * elements. Note: the type attribute is ignored. + * + * 'xhtml' : (optional boolean) should content be treated as XHTML1.0? If + * unset, minify will sniff for an XHTML doctype. + * + * @return string + */ + public static function minify($html, $options = array()) + { + $min = new self($html, $options); + + return $min->process(); + } + + /** + * Create a minifier object + * + * @param string $html + * + * @param array $options + * + * 'cssMinifier' : (optional) callback function to process content of STYLE + * elements. + * + * 'jsMinifier' : (optional) callback function to process content of SCRIPT + * elements. Note: the type attribute is ignored. + * + * 'jsCleanComments' : (optional) whether to remove HTML comments beginning and end of script block + * + * 'xhtml' : (optional boolean) should content be treated as XHTML1.0? If + * unset, minify will sniff for an XHTML doctype. + */ + public function __construct($html, $options = array()) + { + self::deprecated_class( '3.7' ); + + $this->_html = str_replace("\r\n", "\n", trim($html)); + if (isset($options['xhtml'])) { + $this->_isXhtml = (bool)$options['xhtml']; + } + if (isset($options['cssMinifier'])) { + $this->_cssMinifier = $options['cssMinifier']; + } + if (isset($options['jsMinifier'])) { + $this->_jsMinifier = $options['jsMinifier']; + } + if (isset($options['jsCleanComments'])) { + $this->_jsCleanComments = (bool)$options['jsCleanComments']; + } + } + + /** + * Minify the markeup given in the constructor + * + * @return string + */ + public function process() + { + if ($this->_isXhtml === null) { + $this->_isXhtml = (false !== strpos($this->_html, '_replacementHash = 'MINIFYHTML' . md5($_SERVER['REQUEST_TIME']); + $this->_placeholders = array(); + + // replace SCRIPTs (and minify) with placeholders + // preg_replace_callback - on errors the return is NULL + // On big scripts PREG_BACKTRACK_LIMIT_ERROR is reached and causes the empty page + $pregJs = preg_replace_callback( + '/(\\s*)]*?>)([\\s\\S]*?)<\\/script>(\\s*)/i' + ,array($this, '_removeScriptCB') + ,$this->_html); + + if ( isset($pregJs) && ! empty( $pregJs ) ) { + $this->_html = $pregJs; + } + + // replace STYLEs (and minify) with placeholders + // preg_replace_callback - on errors the return is NULL + // On big scripts PREG_BACKTRACK_LIMIT_ERROR is reached and causes the empty page + $pregCSS = preg_replace_callback( + '/\\s*]*>)([\\s\\S]*?)<\\/style>\\s*/i' + ,array($this, '_removeStyleCB') + ,$this->_html); + + if ( isset( $pregCSS ) && ! empty( $pregCSS ) ) { + $this->_html = $pregCSS; + } + + // remove HTML comments (not containing IE conditional comments). + $this->_html = preg_replace_callback( + '//' + ,array($this, '_commentCB') + ,$this->_html); + + // replace PREs with placeholders + $this->_html = preg_replace_callback('/\\s*]*?>[\\s\\S]*?<\\/pre>)\\s*/i' + ,array($this, '_removePreCB') + ,$this->_html); + + // replace TEXTAREAs with placeholders + $this->_html = preg_replace_callback( + '/\\s*]*?>[\\s\\S]*?<\\/textarea>)\\s*/i' + ,array($this, '_removeTextareaCB') + ,$this->_html); + + // trim each line. + // @todo take into account attribute values that span multiple lines. + // Fixed attribute values which span on multiple lines. Causes double spaces " " + $this->_html = preg_replace('/^\s+|\s+$/m', ' ', $this->_html); + // Fixed double spaces. Replaced with a single space + $this->_html = preg_replace('/\s+/', ' ', $this->_html); + + // remove ws around block/undisplayed elements + $this->_html = preg_replace('/\\s+(<\\/?(?:area|article|aside|base(?:font)?|blockquote|body' + .'|canvas|caption|center|col(?:group)?|dd|dir|div|dl|dt|fieldset|figcaption|figure|footer|form' + .'|frame(?:set)?|h[1-6]|head|header|hgroup|hr|html|legend|li|link|main|map|menu|meta|nav' + .'|ol|opt(?:group|ion)|output|p|param|section|t(?:able|body|head|d|h||r|foot|itle)' + .'|ul|video)\\b[^>]*>)/i', '$1', $this->_html); + + // remove ws outside of all elements + $this->_html = preg_replace_callback( + '/>([^<]+)_html); + + // fill placeholders + $this->_html = str_replace( + array_keys($this->_placeholders) + ,array_values($this->_placeholders) + ,$this->_html + ); + // issue 229: multi-pass to catch scripts that didn't get replaced in textareas + $this->_html = str_replace( + array_keys($this->_placeholders) + ,array_values($this->_placeholders) + ,$this->_html + ); + + return $this->_html; + } + + protected function _commentCB($m) + { + return + ( + false !== strpos($m[1], 'fwp-loop') + || + false !== strpos($m[1], 'ngg_resource_manager_marker') + || + 0 === strpos($m[1], '[') + || + false !== strpos($m[1], '_replacementHash . count($this->_placeholders) . '%'; + $this->_placeholders[$placeholder] = $content; + + return $placeholder; + } + + protected $_isXhtml = null; + protected $_replacementHash = null; + protected $_placeholders = array(); + protected $_cssMinifier = null; + protected $_jsMinifier = null; + + protected function _outsideTagCB($m) + { + return '>' . preg_replace('/^\\s+|\\s+$/', ' ', $m[1]) . '<'; + } + + protected function _removePreCB($m) + { + return $this->_reservePlace("_reservePlace("\\s*$)/u', '', $css); + + // remove CDATA section markers + $data = $this->_removeCdata($css); + + // minify + $minifier = $this->_cssMinifier + ? $this->_cssMinifier + : 'trim'; + $css = call_user_func($minifier, $data['content']); + + return $this->_reservePlace( $data['cdata'] + ? "{$openStyle}/* */" + : "{$openStyle}{$css}" + ); + } + + protected function _removeScriptCB($m) + { + $openScript = "_jsCleanComments) { + $js = preg_replace('/(?:^\\s*\\s*$)/u', '', $js); + } + + // remove CDATA section markers + $data = $this->_removeCdata($js); + + // minify + $minifier = $this->_jsMinifier + ? $this->_jsMinifier + : 'trim'; + $js = call_user_func($minifier, $data['content']); + + return $this->_reservePlace($data['cdata'] + ? "{$ws1}{$openScript}/* */{$ws2}" + : "{$ws1}{$openScript}{$js}{$ws2}" + ); + } + + protected function _removeCdata($str) + { + $data = array(); + + if ( false !== strpos( $str, ' */' ), '', $str ); + $data['cdata'] = true; + + } else { + $data['content'] = $str; + $data['cdata'] = false; + } + + return $data; + } + +} diff --git a/wp-content/plugins/wp-rocket/inc/domain-mapping.php b/wp-content/plugins/wp-rocket/inc/domain-mapping.php new file mode 100644 index 0000000..423fb61 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/domain-mapping.php @@ -0,0 +1,57 @@ +/Uis', '', $buffer ); + // Get all JS files with this regex. + preg_match_all( '#]+[\s\'"])?src\s*=\s*[\'"]\s*?([^\'"]+\.js(?:\?[^\'"]*)?)\s*?[\'"]([^>]+)?\/?>#iU', $buffer_nocomments, $tags_match ); + + if ( ! isset( $tags_match[0] ) ) { + return $buffer; + } + + $exclude_defer_js = implode( '|', get_rocket_exclude_defer_js() ); + + foreach ( $tags_match[0] as $i => $tag ) { + // Check if this file should be deferred. + if ( preg_match( '#(' . $exclude_defer_js . ')#i', $tags_match[2][ $i ] ) ) { + continue; + } + + // Don't add defer if already async. + if ( false !== strpos( $tags_match[1][ $i ], 'async' ) || false !== strpos( $tags_match[3][ $i ], 'async' ) ) { + continue; + } + + // Don't add defer if already defer. + if ( false !== strpos( $tags_match[1][ $i ], 'defer' ) || false !== strpos( $tags_match[3][ $i ], 'defer' ) ) { + continue; + } + + $deferred_tag = str_replace( '>', ' defer>', $tag ); + $buffer = str_replace( $tag, $deferred_tag, $buffer ); + } + + return $buffer; +} +add_filter( 'rocket_buffer', 'rocket_defer_js', 24 ); diff --git a/wp-content/plugins/wp-rocket/inc/front/dns-prefetch.php b/wp-content/plugins/wp-rocket/inc/front/dns-prefetch.php new file mode 100644 index 0000000..ca8a6ad --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/front/dns-prefetch.php @@ -0,0 +1,35 @@ +](?!(height|width)=))*+>/i', $buffer, $images_match ); + + foreach ( $images_match[0] as $image ) { + + // Don't touch lazy-load file (no conflit with Photon (Jetpack)). + if ( strpos( $image, 'data-lazy-original' ) || strpos( $image, 'data-no-image-dimensions' ) ) { + continue; + } + + $tmp = $image; + + // Get link of the file. + preg_match( '/src=[\'"]([^\'"]+)/', $image, $src_match ); + + // Get infos of the URL. + $image_url = wp_parse_url( $src_match[1] ); + + // Check if the link isn't external. + if ( empty( $image_url['host'] ) || rocket_remove_url_protocol( home_url() ) === $image_url['host'] ) { + // Get image attributes. + $sizes = getimagesize( ABSPATH . $image_url['path'] ); + } else { + /** + * Filter distant images dimensions attributes + * + * @since 2.2 + * + * @param bool Do the job or not + */ + if ( ini_get( 'allow_url_fopen' ) && apply_filters( 'rocket_specify_image_dimensions_for_distant', false ) ) { + // Get image attributes. + $sizes = getimagesize( $image_url['scheme'] . '://' . $image_url['host'] . $image_url['path'] ); + } + } + + if ( ! empty( $sizes ) ) { + // Add width and width attribute. + $image = str_replace( ' 1, + 'utm_medium' => 1, + 'utm_campaign' => 1, + 'utm_expid' => 1, + 'fb_action_ids' => 1, + 'fb_action_types' => 1, + 'fb_source' => 1, + 'fbclid' => 1, + 'campaignid' => 1, + 'adgroupid' => 1, + 'adid' => 1, + 'gclid' => 1, + 'age-verified' => 1, + 'ao_noptimize' => 1, + 'usqp' => 1, + 'cn-reloaded' => 1, + '_ga' => 1, +]; + +$rocket_params = []; + +if ( ! empty( $_GET ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended + $rocket_params = array_diff_key( $_GET, $rocket_remove_query_strings ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended + + if ( ! empty( $rocket_params ) ) { + ksort( $rocket_params ); + + $rocket_request_uri .= http_build_query( $rocket_params ); + } +} + +$rocket_ignore_query_strings = [ + 'lang' => 1, + 's' => 1, + 'permalink_name' => 1, + 'lp-variation-id' => 1, +]; + +if ( ! empty( $rocket_params ) + && ( ! (bool) array_intersect_key( $rocket_params, $rocket_ignore_query_strings ) ) + && ( ! isset( $rocket_cache_query_strings ) || ! array_intersect( array_keys( $rocket_params ), $rocket_cache_query_strings ) ) +) { + rocket_define_donotoptimize_constant( true ); + + return; +} + +// Don't cache SSL. +if ( empty( $rocket_cache_ssl ) && is_ssl() ) { + rocket_define_donotoptimize_constant( true ); + + return; +} + +// Don't cache these pages. +if ( isset( $rocket_cache_reject_uri ) && preg_match( '#^(' . $rocket_cache_reject_uri . ')$#', $rocket_request_uri ) ) { + rocket_define_donotoptimize_constant( true ); + + return; +} + +// Don't cache page with these cookies. +if ( isset( $rocket_cache_reject_cookies ) && preg_match( '#(' . $rocket_cache_reject_cookies . ')#', var_export( $_COOKIE, true ) ) ) { // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_var_export + rocket_define_donotoptimize_constant( true ); + + return; +} + +$rocket_ip = rocket_get_ip(); +$rocket_allowed_ips = [ + '208.70.247.157' => '', // GT Metrix - Vancouver 1. + '204.187.14.70' => '', // GT Metrix - Vancouver 2. + '204.187.14.71' => '', // GT Metrix - Vancouver 3. + '204.187.14.72' => '', // GT Metrix - Vancouver 4. + '204.187.14.73' => '', // GT Metrix - Vancouver 5. + '204.187.14.74' => '', // GT Metrix - Vancouver 6. + '204.187.14.75' => '', // GT Metrix - Vancouver 7. + '204.187.14.76' => '', // GT Metrix - Vancouver 8. + '204.187.14.77' => '', // GT Metrix - Vancouver 9. + '204.187.14.78' => '', // GT Metrix - Vancouver 10. + '199.10.31.194' => '', // GT Metrix - Vancouver 11. + '13.85.80.124' => '', // GT Metrix - Dallas 1. + '13.84.146.132' => '', // GT Metrix - Dallas 2. + '13.84.146.226' => '', // GT Metrix - Dallas 3. + '40.74.254.217' => '', // GT Metrix - Dallas 4. + '13.84.43.227' => '', // GT Metrix - Dallas 5. + '172.255.61.34' => '', // GT Metrix - London 1. + '172.255.61.35' => '', // GT Metrix - London 2. + '172.255.61.36' => '', // GT Metrix - London 3. + '172.255.61.37' => '', // GT Metrix - London 4. + '172.255.61.38' => '', // GT Metrix - London 5. + '172.255.61.39' => '', // GT Metrix - London 6. + '172.255.61.40' => '', // GT Metrix - London 7. + '13.70.66.20' => '', // GT Metrix - Sydney. + '191.235.85.154' => '', // GT Metrix - São Paulo 1. + '191.235.86.0' => '', // GT Metrix - São Paulo 2. + '52.66.75.147' => '', // GT Metrix - Mumbai. + '52.175.28.116' => '', // GT Metrix - Hong Kong. +]; + +// Don't cache page when these cookies don't exist. +if ( ( ! isset( $rocket_allowed_ips[ $rocket_ip ] ) && ( isset( $_SERVER['HTTP_USER_AGENT'] ) ) && ! preg_match( '#(PingdomPageSpeed|DareBoost|Google|PTST|WP Rocket)#i', $_SERVER['HTTP_USER_AGENT'] ) ) && isset( $rocket_cache_mandatory_cookies ) && ! preg_match( '#(' . $rocket_cache_mandatory_cookies . ')#', var_export( $_COOKIE, true ) ) ) { // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized, WordPress.Security.ValidatedSanitizedInput.MissingUnslash, WordPress.PHP.DevelopmentFunctions.error_log_var_export + rocket_define_donotoptimize_constant( true ); + + return; +} + +// Don't cache page with these user agents. +if ( isset( $rocket_cache_reject_ua, $_SERVER['HTTP_USER_AGENT'] ) && ! empty( $rocket_cache_reject_ua ) && preg_match( '#(' . $rocket_cache_reject_ua . ')#', $_SERVER['HTTP_USER_AGENT'] ) ) { // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized, WordPress.Security.ValidatedSanitizedInput.MissingUnslash + rocket_define_donotoptimize_constant( true ); + + return; +} + +// Don't cache if mobile detection is activated. +if ( ! isset( $rocket_cache_mobile ) && isset( $_SERVER['HTTP_USER_AGENT'] ) && ( preg_match( '#^.*(2.0\ MMP|240x320|400X240|AvantGo|BlackBerry|Blazer|Cellphone|Danger|DoCoMo|Elaine/3.0|EudoraWeb|Googlebot-Mobile|hiptop|IEMobile|KYOCERA/WX310K|LG/U990|MIDP-2.|MMEF20|MOT-V|NetFront|Newt|Nintendo\ Wii|Nitro|Nokia|Opera\ Mini|Palm|PlayStation\ Portable|portalmmm|Proxinet|ProxiNet|SHARP-TQ-GX10|SHG-i900|Small|SonyEricsson|Symbian\ OS|SymbianOS|TS21i-10|UP.Browser|UP.Link|webOS|Windows\ CE|WinWAP|YahooSeeker/M1A1-R2D2|iPhone|iPod|Android|BlackBerry9530|LG-TU915\ Obigo|LGE\ VX|webOS|Nokia5800).*#i', $_SERVER['HTTP_USER_AGENT'] ) || preg_match( '#^(w3c\ |w3c-|acs-|alav|alca|amoi|audi|avan|benq|bird|blac|blaz|brew|cell|cldc|cmd-|dang|doco|eric|hipt|htc_|inno|ipaq|ipod|jigs|kddi|keji|leno|lg-c|lg-d|lg-g|lge-|lg/u|maui|maxo|midp|mits|mmef|mobi|mot-|moto|mwbp|nec-|newt|noki|palm|pana|pant|phil|play|port|prox|qwap|sage|sams|sany|sch-|sec-|send|seri|sgh-|shar|sie-|siem|smal|smar|sony|sph-|symb|t-mo|teli|tim-|tosh|tsm-|upg1|upsi|vk-v|voda|wap-|wapa|wapi|wapp|wapr|webc|winw|winw|xda\ |xda-).*#i', substr( $_SERVER['HTTP_USER_AGENT'], 0, 4 ) ) ) ) { // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized, WordPress.Security.ValidatedSanitizedInput.MissingUnslash + rocket_define_donotoptimize_constant( true ); + + return; +} + +// Check if dots should be replace by underscores. +$rocket_host = isset( $rocket_url_no_dots ) ? str_replace( '.', '_', $rocket_host ) : $rocket_host; + +// Get cache folder of host name. +if ( isset( $rocket_cookie_hash ) + && isset( $_COOKIE[ 'wordpress_logged_in_' . $rocket_cookie_hash ] ) + && isset( $rocket_cache_reject_cookies ) + && ! strstr( $rocket_cache_reject_cookies, 'wordpress_logged_in_' ) +) { + if ( isset( $rocket_common_cache_logged_users ) ) { + $request_uri_path = $rocket_cache_path . $rocket_host . '-loggedin' . rtrim( $rocket_request_uri, '/' ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound + } else { + $rocket_user_key = explode( '|', $_COOKIE[ 'wordpress_logged_in_' . $rocket_cookie_hash ] ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized, WordPress.Security.ValidatedSanitizedInput.MissingUnslash + $rocket_user_key = reset( ( $rocket_user_key ) ); + $rocket_user_key = $rocket_user_key . '-' . $rocket_secret_cache_key; + + // Get cache folder of host name. + $request_uri_path = $rocket_cache_path . $rocket_host . '-' . $rocket_user_key . rtrim( $rocket_request_uri, '/' ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound + } +} +else { + $request_uri_path = $rocket_cache_path . $rocket_host . rtrim( $rocket_request_uri, '/' ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound +} + +$rocket_filename = 'index'; + +// Rename the caching filename for mobile. +if ( isset( $rocket_cache_mobile, $rocket_do_caching_mobile_files, $rocket_cache_mobile_files_tablet ) && class_exists( 'Rocket_Mobile_Detect' ) ) { + $rocket_detect = new Rocket_Mobile_Detect(); + + if ( $rocket_detect->isMobile() && ! $rocket_detect->isTablet() && 'desktop' === $rocket_cache_mobile_files_tablet || ( $rocket_detect->isMobile() || $rocket_detect->isTablet() ) && 'mobile' === $rocket_cache_mobile_files_tablet ) { + $rocket_filename .= '-mobile'; + } +} + +// Rename the caching filename for SSL URLs. +if ( ( is_ssl() && ! empty( $rocket_cache_ssl ) ) ) { + $rocket_filename .= '-https'; +} + +// Rename the caching filename depending to dynamic cookies. +if ( ! empty( $rocket_cache_dynamic_cookies ) ) { + foreach ( $rocket_cache_dynamic_cookies as $key => $cookie_name ) { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound + if ( is_array( $cookie_name ) && isset( $_COOKIE[ $key ] ) ) { + foreach ( $cookie_name as $cookie_key ) { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound + if ( isset( $_COOKIE[ $key ][ $cookie_key ] ) && '' !== $_COOKIE[ $key ][ $cookie_key ] ) { + $rocket_cache_key = $_COOKIE[ $key ][ $cookie_key ]; // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized, WordPress.Security.ValidatedSanitizedInput.MissingUnslash + $rocket_cache_key = preg_replace( '/[^a-z0-9_\-]/i', '-', $cache_key ); + $rocket_filename .= '-' . $rocket_cache_key; + } + } + continue; + } + + if ( isset( $_COOKIE[ $cookie_name ] ) && '' !== $_COOKIE[ $cookie_name ] ) { + $rocket_cache_key = $_COOKIE[ $cookie_name ]; // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized, WordPress.Security.ValidatedSanitizedInput.MissingUnslash + $rocket_cache_key = preg_replace( '/[^a-z0-9_\-]/i', '-', $cache_key ); + $rocket_filename .= '-' . $rocket_cache_key; + } + } +} + +// Caching file path. +$request_uri_path = preg_replace_callback( '/%[0-9A-F]{2}/', 'rocket_urlencode_lowercase', $request_uri_path ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound +// Directories in Windows can't contain question marks. +$request_uri_path = str_replace( '?', '_', $request_uri_path ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound + +$rocket_cache_filepath = $request_uri_path . '/' . $rocket_filename . '.html'; + + +// Serve the cache file if exist. +rocket_serve_cache_file( $rocket_cache_filepath ); + +ob_start( 'do_rocket_callback' ); + +/** + * The famous callback, it puts contents in a cache file if buffer length > 255 (IE do not read pages under 255 c. ) + * + * @since 1.3.0 Add filter rocket_buffer + * @since 1.0 + * + * @param string $buffer The buffer content. + * @return string the buffered content + */ +function do_rocket_callback( $buffer ) { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedFunctionFound + /** + * Allow to cache search results + * + * @since 2.3.8 + * + * @param bool true will force caching search results. + */ + $rocket_cache_search = apply_filters( 'rocket_cache_search', false ); + + /** + * Allow to override the DONOTCACHEPAGE behavior. + * To warn conflict with some plugins like Thrive Leads. + * + * @since 2.5 + * + * @param bool true will force the override. + */ + $rocket_override_donotcachepage = apply_filters( 'rocket_override_donotcachepage', false ); + + if ( strlen( $buffer ) > 255 + && ( http_response_code() === 200 ) // only cache 200. + && ( function_exists( 'is_404' ) && ! is_404() ) // Don't cache 404. + && ( function_exists( 'is_search' ) && ! is_search() || $rocket_cache_search ) // Don't cache search results. + && ( ! defined( 'DONOTCACHEPAGE' ) || ! DONOTCACHEPAGE || $rocket_override_donotcachepage ) // Don't cache template that use this constant. + && function_exists( 'rocket_mkdir_p' ) + ) { + global $request_uri_path, $rocket_cache_filepath, $is_nginx; + + $footprint = ''; + $is_html = false; + + if ( preg_match( '/(<\/html>)/i', $buffer ) ) { + $is_html = true; + } + + /** + * Allow to the generate the caching file + * + * @since 2.5 + * + * @param bool true will force the caching file generation. + */ + if ( apply_filters( 'do_rocket_generate_caching_files', true ) ) { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound + // Create cache folders of the request uri. + rocket_mkdir_p( $request_uri_path ); + + if ( $is_html ) { + $footprint = get_rocket_footprint(); + } + + // Save the cache file. + rocket_put_content( $rocket_cache_filepath, $buffer . $footprint ); + + if ( get_rocket_option( 'do_caching_mobile_files' ) ) { + if ( $is_nginx ) { + // Create a hidden empty file for mobile detection on NGINX with the Rocket NGINX configuration. + $nginx_mobile_detect_file = $request_uri_path . '/.mobile-active'; + + if ( ! rocket_direct_filesystem()->exists( $nginx_mobile_detect_file ) ) { + rocket_direct_filesystem()->touch( $nginx_mobile_detect_file ); + } + } + } + + if ( function_exists( 'gzencode' ) ) { + rocket_put_content( $rocket_cache_filepath . '_gzip', gzencode( $buffer . $footprint, apply_filters( 'rocket_gzencode_level_compression', 3 ) ) ); + } + + // Send headers with the last modified time of the cache file. + if ( file_exists( $rocket_cache_filepath ) ) { + header( 'Last-Modified: ' . gmdate( 'D, d M Y H:i:s', filemtime( $rocket_cache_filepath ) ) . ' GMT' ); + } + } + + if ( $is_html ) { + $footprint = get_rocket_footprint( false ); + } + + $buffer = $buffer . $footprint; + } + + return $buffer; +} + +/** + * Serve the cache file if exist + * + * @since 2.11 Serve the gzipped cache file if possible + * @since 2.0 + * + * @param string $rocket_cache_filepath Path to the cache file. + */ +function rocket_serve_cache_file( $rocket_cache_filepath ) { + $rocket_cache_filepath_gzip = $rocket_cache_filepath . '_gzip'; + + // Check if cache file exist. + if ( isset( $_SERVER['HTTP_ACCEPT_ENCODING'] ) && false !== strpos( $_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip' ) && file_exists( $rocket_cache_filepath_gzip ) && is_readable( $rocket_cache_filepath_gzip ) ) { // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized, WordPress.Security.ValidatedSanitizedInput.MissingUnslash + header( 'Last-Modified: ' . gmdate( 'D, d M Y H:i:s', filemtime( $rocket_cache_filepath_gzip ) ) . ' GMT' ); + + // Getting If-Modified-Since headers sent by the client. + if ( function_exists( 'apache_request_headers' ) ) { + $headers = apache_request_headers(); + $http_if_modified_since = ( isset( $headers['If-Modified-Since'] ) ) ? $headers['If-Modified-Since'] : ''; + } else { + $http_if_modified_since = ( isset( $_SERVER['HTTP_IF_MODIFIED_SINCE'] ) ) ? $_SERVER['HTTP_IF_MODIFIED_SINCE'] : ''; // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized, WordPress.Security.ValidatedSanitizedInput.MissingUnslash + } + + // Checking if the client is validating his cache and if it is current. + if ( $http_if_modified_since && ( strtotime( $http_if_modified_since ) === @filemtime( $rocket_cache_filepath_gzip ) ) ) { + // Client's cache is current, so we just respond '304 Not Modified'. + header( ( isset( $_SERVER['SERVER_PROTOCOL'] ) ? $_SERVER['SERVER_PROTOCOL'] : '' ) . ' 304 Not Modified', true, 304 ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized, WordPress.Security.ValidatedSanitizedInput.MissingUnslash + header( 'Expires: ' . gmdate( 'D, d M Y H:i:s' ) . ' GMT' ); + header( 'Cache-Control: no-cache, must-revalidate' ); + + exit; + } + + // Serve the cache if file isn't store in the client browser cache. + readgzfile( $rocket_cache_filepath_gzip ); + + exit; + } + + if ( file_exists( $rocket_cache_filepath ) && is_readable( $rocket_cache_filepath ) ) { + header( 'Last-Modified: ' . gmdate( 'D, d M Y H:i:s', filemtime( $rocket_cache_filepath ) ) . ' GMT' ); + + // Getting If-Modified-Since headers sent by the client. + if ( function_exists( 'apache_request_headers' ) ) { + $headers = apache_request_headers(); + $http_if_modified_since = ( isset( $headers['If-Modified-Since'] ) ) ? $headers['If-Modified-Since'] : ''; + } else { + $http_if_modified_since = ( isset( $_SERVER['HTTP_IF_MODIFIED_SINCE'] ) ) ? $_SERVER['HTTP_IF_MODIFIED_SINCE'] : ''; // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized, WordPress.Security.ValidatedSanitizedInput.MissingUnslash + } + + // Checking if the client is validating his cache and if it is current. + if ( $http_if_modified_since && ( strtotime( $http_if_modified_since ) === @filemtime( $rocket_cache_filepath ) ) ) { + // Client's cache is current, so we just respond '304 Not Modified'. + header( ( isset( $_SERVER['SERVER_PROTOCOL'] ) ? $_SERVER['SERVER_PROTOCOL'] : '' ) . ' 304 Not Modified', true, 304 ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized, WordPress.Security.ValidatedSanitizedInput.MissingUnslash + header( 'Expires: ' . gmdate( 'D, d M Y H:i:s' ) . ' GMT' ); + header( 'Cache-Control: no-cache, must-revalidate' ); + + exit; + } + + // Serve the cache if file isn't store in the client browser cache. + readfile( $rocket_cache_filepath ); // phpcs:ignore WordPress.WP.AlternativeFunctions.file_system_read_readfile + + exit; + } +} + +/** + * Declares and sets value of constant preventing Optimizations + * + * @since 2.11 + * @author Remy Perona + * + * @param bool $value true or false. + */ +function rocket_define_donotoptimize_constant( $value ) { + if ( ! defined( 'DONOTROCKETOPTIMIZE' ) ) { + define( 'DONOTROCKETOPTIMIZE', (bool) $value ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedConstantFound + } +} + +/** + * Force lowercase on encoded url strings from different alphabets to prevent issues on some hostings + * + * @since 2.7 + * + * @param string $matches Cache path. + * @return string cache path in lowercase + */ +function rocket_urlencode_lowercase( $matches ) { + return strtolower( $matches[0] ); +} + +/** + * Get the IP address from which the user is viewing the current page. + * + * @since 2.7.3 + */ +function rocket_get_ip() { + $keys = [ + 'HTTP_CF_CONNECTING_IP', // CF = CloudFlare. + 'HTTP_CLIENT_IP', + 'HTTP_X_FORWARDED_FOR', + 'HTTP_X_FORWARDED', + 'HTTP_X_CLUSTER_CLIENT_IP', + 'HTTP_X_REAL_IP', + 'HTTP_FORWARDED_FOR', + 'HTTP_FORWARDED', + 'REMOTE_ADDR', + ]; + + foreach ( $keys as $key ) { + if ( array_key_exists( $key, $_SERVER ) ) { + $ip = explode( ',', $_SERVER[ $key ] ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized, WordPress.Security.ValidatedSanitizedInput.MissingUnslash + $ip = end( $ip ); + + if ( false !== filter_var( $ip, FILTER_VALIDATE_IP ) ) { + return $ip; + } + } + } + + return '0.0.0.0'; +} diff --git a/wp-content/plugins/wp-rocket/inc/front/protocol.php b/wp-content/plugins/wp-rocket/inc/front/protocol.php new file mode 100644 index 0000000..e3319d2 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/front/protocol.php @@ -0,0 +1,55 @@ +]*)(href|src|action)=[\"'])https?:\\/\\//i"; + $subst = '$1//'; + $return = preg_replace( $re, $subst, $buffer ); + + if ( $return ) { + $buffer = $return; + } + + return $buffer; +} + +/** + * Remove HTTP protocol on srcset attribute generated by WordPress + * + * @since 2.7 + * + * @param array $sources an Array of images sources for srcset. + * @return array Updated array of images sources + */ +function rocket_protocol_rewrite_srcset( $sources ) { + if ( (bool) $sources ) { + foreach ( $sources as $i => $source ) { + $sources[ $i ]['url'] = str_replace( [ 'http:', 'https:' ], '', $source['url'] ); + } + } + + return $sources; +} diff --git a/wp-content/plugins/wp-rocket/inc/functions/admin.php b/wp-content/plugins/wp-rocket/inc/functions/admin.php new file mode 100644 index 0000000..db1aebb --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/functions/admin.php @@ -0,0 +1,457 @@ +' . $error . '

    '; + } + } + + ?> +
    +

    + +

    + +
    + ID : $uid; + $actual = get_user_meta( $uid, 'rocket_boxes', true ); + + if ( $actual && false !== array_search( $function, $actual, true ) ) { + unset( $actual[ array_search( $function, $actual, true ) ] ); + update_user_meta( $uid, 'rocket_boxes', $actual ); + } +} + +/** + * Dismiss one box. + * + * @since 1.3.0 + * @since 3.6 Doesn’t die anymore. + * + * @param string $function Function (box) name. + */ +function rocket_dismiss_box( $function ) { + $actual = get_user_meta( get_current_user_id(), 'rocket_boxes', true ); + $actual = array_merge( (array) $actual, [ $function ] ); + $actual = array_filter( $actual ); + $actual = array_unique( $actual ); + + update_user_meta( get_current_user_id(), 'rocket_boxes', $actual ); + delete_transient( $function ); +} + +/** + * Create a unique id for some Rocket options and functions + * + * @since 2.1 + */ +function create_rocket_uniqid() { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + return str_replace( '.', '', uniqid( '', true ) ); +} + +/** + * Gets names of all active plugins. + * + * @since 2.11 Only get the name + * @since 2.6 + * + * @return array An array of active plugins names. + */ +function rocket_get_active_plugins() { + $plugins = []; + $active_plugins = array_intersect_key( get_plugins(), array_flip( array_filter( array_keys( get_plugins() ), 'is_plugin_active' ) ) ); + + foreach ( $active_plugins as $plugin ) { + $plugins[] = $plugin['Name']; + } + + return $plugins; +} + +/** + * Check if the whole website is on the SSL protocol + * + * @since 3.3.6 Use the superglobal $_SERVER values to detect SSL. + * @since 2.7 + */ +function rocket_is_ssl_website() { + if ( isset( $_SERVER['HTTPS'] ) ) { + $https = sanitize_text_field( wp_unslash( $_SERVER['HTTPS'] ) ); + + if ( 'on' === strtolower( $https ) ) { + return true; + } + + if ( '1' === (string) $https ) { + return true; + } + } elseif ( isset( $_SERVER['SERVER_PORT'] ) && '443' === (string) sanitize_text_field( wp_unslash( $_SERVER['SERVER_PORT'] ) ) ) { + return true; + } + + return false; +} + +/** + * Get the WP Rocket documentation URL + * + * @since 2.7 + */ +function get_rocket_documentation_url() { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + $langs = [ + 'fr_FR' => 'fr.', + ]; + $lang = get_locale(); + $prefix = isset( $langs[ $lang ] ) ? $langs[ $lang ] : ''; + $url = "https://{$prefix}docs.wp-rocket.me/?utm_source=wp_plugin&utm_medium=wp_rocket"; + + return $url; +} + +/** + * Get WP Rocket FAQ URL + * + * @since 2.10 + * @author Remy Perona + * + * @return string URL in the correct language + */ +function get_rocket_faq_url() { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + $langs = [ + 'de' => 1, + 'es' => 1, + 'fr' => 1, + 'it' => 1, + ]; + $locale = explode( '_', get_locale() ); + $lang = isset( $langs[ $locale[0] ] ) ? $locale[0] . '/' : ''; + $url = WP_ROCKET_WEB_MAIN . "{$lang}faq/?utm_source=wp_plugin&utm_medium=wp_rocket"; + + return $url; +} + +/** + * Get the Activation Link for a given plugin + * + * @since 2.7.3 + * @author Geoffrey Crofte + * + * @param string $plugin the given plugin folder/file.php (e.i. "imagify/imagify.php"). + * @return string URL to activate the plugin + */ +function rocket_get_plugin_activation_link( $plugin ) { + $activation_url = wp_nonce_url( 'plugins.php?action=activate&plugin=' . $plugin . '&plugin_status=all&paged=1&s', 'activate-plugin_' . $plugin ); + + return $activation_url; +} + +/** + * Check if a given plugin is installed but not necessarily activated + * Note: get_plugins( $folder ) from WP Core doesn't work + * + * @since 2.7.3 + * @author Geoffrey Crofte + * + * @param string $plugin a plugin folder/file.php (e.i. "imagify/imagify.php"). + * @return bool True if installed, false otherwise + */ +function rocket_is_plugin_installed( $plugin ) { + $installed_plugins = get_plugins(); + + return isset( $installed_plugins[ $plugin ] ); +} + +/** + * When Woocommerce, EDD, iThemes Exchange, Jigoshop & WP-Shop options are saved or deleted, + * we update .htaccess & config file to get the right checkout page to exclude to the cache. + * + * @since 2.9.3 Support for SF Move Login moved to 3rd party file + * @since 2.6 Add support with SF Move Login & WPS Hide Login to exclude login pages + * @since 2.4 + * + * @param array $old_value An array of previous settings values. + * @param array $value An array of submitted settings values. + */ +function rocket_after_update_single_options( $old_value, $value ) { + if ( $old_value !== $value ) { + // Update .htaccess file rules. + flush_rocket_htaccess(); + + // Update config file. + rocket_generate_config_file(); + } +} + +/** + * We need to regenerate the config file + htaccess depending on some plugins + * + * @since 2.9.3 Support for SF Move Login moved to 3rd party file + * @since 2.6.5 Add support with SF Move Login & WPS Hide Login + * + * @param array $old_value An array of previous settings values. + * @param array $value An array of submitted settings values. + */ +function rocket_after_update_array_options( $old_value, $value ) { + $options = [ + 'purchase_page', + 'jigoshop_cart_page_id', + 'jigoshop_checkout_page_id', + 'jigoshop_myaccount_page_id', + ]; + + foreach ( $options as $val ) { + if ( ( ! isset( $old_value[ $val ] ) && isset( $value[ $val ] ) ) || + ( isset( $old_value[ $val ], $value[ $val ] ) && $old_value[ $val ] !== $value[ $val ] ) + ) { + // Update .htaccess file rules. + flush_rocket_htaccess(); + + // Update config file. + rocket_generate_config_file(); + break; + } + } +} + +/** + * Check if a mobile plugin is active + * + * @since 2.10 + * @author Remy Perona + * + * @return true if a mobile plugin in the list is active, false otherwise. + **/ +function rocket_is_mobile_plugin_active() { + return \WP_Rocket\Subscriber\Third_Party\Plugins\Mobile_Subscriber::is_mobile_plugin_active(); +} + +/** + * Allow upload of JSON file. + * + * @since 2.10.7 + * @author Remy Perona + * + * @param array $wp_get_mime_types Array of allowed mime types. + * @return array Updated array of allowed mime types + */ +function rocket_allow_json_mime_type( $wp_get_mime_types ) { + $wp_get_mime_types['json'] = 'application/json'; + + return $wp_get_mime_types; +} + +/** + * Forces the correct file type for JSON file if the WP checks is incorrect + * + * @since 3.2.3.1 + * @author Gregory Viguier + * + * @param array $wp_check_filetype_and_ext File data array containing 'ext', 'type', and + * 'proper_filename' keys. + * @param string $file Full path to the file. + * @param string $filename The name of the file (may differ from $file due to + * $file being in a tmp directory). + * @param array $mimes Key is the file extension with value as the mime type. + * @return array + */ +function rocket_check_json_filetype( $wp_check_filetype_and_ext, $file, $filename, $mimes ) { + if ( ! empty( $wp_check_filetype_and_ext['ext'] ) && ! empty( $wp_check_filetype_and_ext['type'] ) ) { + return $wp_check_filetype_and_ext; + } + + $wp_filetype = wp_check_filetype( $filename, $mimes ); + + if ( 'json' !== $wp_filetype['ext'] ) { + return $wp_check_filetype_and_ext; + } + + if ( empty( $wp_filetype['type'] ) ) { + // In case some other filter messed it up. + $wp_filetype['type'] = 'application/json'; + } + + if ( ! extension_loaded( 'fileinfo' ) ) { + return $wp_check_filetype_and_ext; + } + + $finfo = finfo_open( FILEINFO_MIME_TYPE ); + $real_mime = finfo_file( $finfo, $file ); + finfo_close( $finfo ); + + if ( 'text/plain' !== $real_mime ) { + return $wp_check_filetype_and_ext; + } + + $wp_check_filetype_and_ext = array_merge( $wp_check_filetype_and_ext, $wp_filetype ); + + return $wp_check_filetype_and_ext; +} + +/** + * Lists Data collected for analytics + * + * @since 2.11 + * @author Caspar Hübinger + * + * @return string HTML list table + */ +function rocket_data_collection_preview_table() { + $data = rocket_analytics_data(); + + if ( ! $data ) { + return; + } + + $html = ''; + $html .= ''; + + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; + + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; + + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; + + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; + + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; + + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; + + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; + + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; + + $html .= ''; + $html .= '
    '; + $html .= sprintf( '%s', __( 'Server type:', 'rocket' ) ); + $html .= ''; + $html .= sprintf( '%s', $data['web_server'] ); + $html .= '
    '; + $html .= sprintf( '%s', __( 'PHP version number:', 'rocket' ) ); + $html .= ''; + $html .= sprintf( '%s', $data['php_version'] ); + $html .= '
    '; + $html .= sprintf( '%s', __( 'WordPress version number:', 'rocket' ) ); + $html .= ''; + $html .= sprintf( '%s', $data['wordpress_version'] ); + $html .= '
    '; + $html .= sprintf( '%s', __( 'WordPress multisite:', 'rocket' ) ); + $html .= ''; + $html .= sprintf( '%s', $data['multisite'] ? 'true' : 'false' ); + $html .= '
    '; + $html .= sprintf( '%s', __( 'Current theme:', 'rocket' ) ); + $html .= ''; + $html .= sprintf( '%s', $data['current_theme'] ); + $html .= '
    '; + $html .= sprintf( '%s', __( 'Current site language:', 'rocket' ) ); + $html .= ''; + $html .= sprintf( '%s', $data['locale'] ); + $html .= '
    '; + $html .= sprintf( '%s', __( 'Active plugins:', 'rocket' ) ); + $html .= ''; + $html .= sprintf( '%s', __( 'Plugin names of all active plugins', 'rocket' ) ); + $html .= '
    '; + $html .= sprintf( '%s', __( 'Anonymized WP Rocket settings:', 'rocket' ) ); + $html .= ''; + $html .= sprintf( '%s', __( 'Which WP Rocket settings are active', 'rocket' ) ); + $html .= '
    '; + + return $html; +} + +/** + * Adds error message after settings import and redirects. + * + * @since 3.0 + * @author Remy Perona + * + * @param string $message Message to display in the error notice. + * @param string $status Status of the error. + * @return void + */ +function rocket_settings_import_redirect( $message, $status ) { + add_settings_error( 'general', 'settings_updated', $message, $status ); + + set_transient( 'settings_errors', get_settings_errors(), 30 ); + + $goback = add_query_arg( 'settings-updated', 'true', wp_get_referer() ); + wp_safe_redirect( esc_url_raw( $goback ) ); + die(); +} diff --git a/wp-content/plugins/wp-rocket/inc/functions/api.php b/wp-content/plugins/wp-rocket/inc/functions/api.php new file mode 100644 index 0000000..356d699 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/functions/api.php @@ -0,0 +1,139 @@ +get( 'cdn' ); + + return $cdn->rewrite_url( $url ); +} + +/** + * Wrapper of get_rocket_cdn_url() and print result + * + * @since 2.1 + * + * @param string $url The URL to parse. + * @param array $zone (default: array( 'all' )). Deprecated. + */ +function rocket_cdn_url( $url, $zone = [ 'all' ] ) { + echo esc_url( get_rocket_cdn_url( $url, $zone ) ); +} + +/** + * Get all CNAMES. + * + * @since 2.1 + * @since 3.0 Don't check for WP Rocket CDN option activated to be able to use the function on Hosting with CDN auto-enabled. + * + * @param string $zone List of zones. Default is 'all'. + * @return array List of CNAMES + */ +function get_rocket_cdn_cnames( $zone = 'all' ) { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + $hosts = []; + $cnames = get_rocket_option( 'cdn_cnames', [] ); + + if ( $cnames ) { + $cnames_zone = get_rocket_option( 'cdn_zone', [] ); + $zone = (array) $zone; + + foreach ( $cnames as $k => $_urls ) { + if ( ! in_array( $cnames_zone[ $k ], $zone, true ) ) { + continue; + } + + $_urls = explode( ',', $_urls ); + $_urls = array_map( 'trim', $_urls ); + + foreach ( $_urls as $url ) { + $hosts[] = $url; + } + } + } + + /** + * Filter all CNAMES. + * + * @since 2.7 + * + * @param array $hosts List of CNAMES. + */ + $hosts = (array) apply_filters( 'rocket_cdn_cnames', $hosts ); + $hosts = array_filter( $hosts ); + $hosts = array_flip( array_flip( $hosts ) ); + $hosts = array_values( $hosts ); + + return $hosts; +} + +/** + * Check if the current URL is for a live site (not local, not staging). + * + * @since 3.5 + * @author Remy Perona + * + * @return bool True if live, false otherwise. + */ +function rocket_is_live_site() { + if ( rocket_get_constant( 'WP_ROCKET_DEBUG' ) ) { + return true; + } + + $host = wp_parse_url( home_url(), PHP_URL_HOST ); + if ( ! $host ) { + return false; + } + + // Check for local development sites. + $local_tlds = [ + '127.0.0.1', + 'localhost', + '.local', + '.test', + '.docksal', + '.docksal.site', + '.dev.cc', + '.lndo.site', + ]; + foreach ( $local_tlds as $local_tld ) { + if ( $host === $local_tld ) { + return false; + } + + // Check the TLD. + if ( substr( $host, -strlen( $local_tld ) ) === $local_tld ) { + return false; + } + } + + // Check for staging sites. + $staging = [ + '.wpengine.com', + '.pantheonsite.io', + '.flywheelsites.com', + '.flywheelstaging.com', + '.kinsta.com', + '.kinsta.cloud', + '.cloudwaysapps.com', + '.azurewebsites.net', + '.wpserveur.net', + '-liquidwebsites.com', + '.myftpupload.com', + '.dream.press', + ]; + foreach ( $staging as $partial_host ) { + if ( strpos( $host, $partial_host ) ) { + return false; + } + } + + return true; +} diff --git a/wp-content/plugins/wp-rocket/inc/functions/files.php b/wp-content/plugins/wp-rocket/inc/functions/files.php new file mode 100644 index 0000000..10f5bd7 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/functions/files.php @@ -0,0 +1,1454 @@ +get( 'advanced_cache' ); + } + + rocket_put_content( + rocket_get_constant( 'WP_CONTENT_DIR' ) . '/advanced-cache.php', + $advanced_cache->get_advanced_cache_content() + ); +} + +/** + * Generates the configuration file for the current domain based on the values of options + * + * @since 2.0 + * + * @return array Names of all config files & The content that will be printed + */ +function get_rocket_config_file() { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + $options = get_option( WP_ROCKET_SLUG ); + + if ( ! $options ) { + return; + } + + $buffer = " $value ) { + if ( 'cache_ssl' === $option ) { + if ( 1 !== (int) $value ) { + if ( rocket_is_ssl_website() ) { + update_rocket_option( 'cache_ssl', 1 ); + $value = 1; + } + } + + $buffer .= '$rocket_' . $option . ' = ' . (int) $value . ";\n"; + } + + if ( 'cache_mobile' === $option || 'do_caching_mobile_files' === $option || 'cache_webp' === $option ) { + $buffer .= '$rocket_' . $option . ' = ' . (int) $value . ";\n"; + } + + if ( 'secret_cache_key' === $option ) { + $buffer .= '$rocket_' . $option . ' = \'' . $value . "';\n"; + } + + if ( 'cache_reject_uri' === $option ) { + $buffer .= '$rocket_' . $option . ' = \'' . get_rocket_cache_reject_uri() . "';\n"; + } + + if ( 'cache_query_strings' === $option ) { + $buffer .= '$rocket_' . $option . ' = ' . call_user_func( 'var_export', get_rocket_cache_query_string(), true ) . ";\n"; + } + + if ( 'cache_reject_cookies' === $option ) { + $cookies = get_rocket_cache_reject_cookies(); + + if ( $cookies && get_rocket_option( 'cache_logged_user' ) ) { + // Make sure the "logged-in cookies" are not rejected. + $logged_in_cookie = explode( COOKIEHASH, LOGGED_IN_COOKIE ); + $logged_in_cookie = array_map( 'preg_quote', $logged_in_cookie ); + $logged_in_cookie = implode( '[^|]*', $logged_in_cookie ); + $cookies = preg_replace( '/\|' . $logged_in_cookie . '\|/', '|', '|' . $cookies . '|' ); + $cookies = trim( $cookies, '|' ); + } + + $buffer .= '$rocket_' . $option . ' = \'' . $cookies . "';\n"; + } + + if ( 'cache_reject_ua' === $option ) { + $buffer .= '$rocket_' . $option . ' = \'' . get_rocket_cache_reject_ua() . "';\n"; + } + } + + $buffer .= '$rocket_cache_ignored_parameters = ' . call_user_func( 'var_export', rocket_get_ignored_parameters(), true ) . ";\n"; + $buffer .= '$rocket_cache_mandatory_cookies = ' . call_user_func( 'var_export', get_rocket_cache_mandatory_cookies(), true ) . ";\n"; + + $buffer .= '$rocket_cache_dynamic_cookies = ' . call_user_func( 'var_export', get_rocket_cache_dynamic_cookies(), true ) . ";\n"; + + /** This filter is documented in inc/front/htaccess.php */ + if ( apply_filters( 'rocket_url_no_dots', false ) ) { + $buffer .= '$rocket_url_no_dots = 1;'; + } + + $config_files_path = []; + $urls = [ rocket_get_home_url() ]; + + // Check if a translation plugin is activated and this configuration is in subdomain. + $subdomains = get_rocket_i18n_subdomains(); + + if ( $subdomains ) { + $urls = $subdomains; + } + + foreach ( $urls as $url ) { + $file = get_rocket_parse_url( untrailingslashit( $url ) ); + $file['path'] = ( ! empty( $file['path'] ) ) ? str_replace( '/', '.', untrailingslashit( $file['path'] ) ) : ''; + $config_files_path[] = WP_ROCKET_CONFIG_PATH . strtolower( $file['host'] ) . $file['path'] . '.php'; + } + + /** + * Filter all config files path + * + * @since 2.6.5 + * + * @param array $config_files_path Path of all config files. + */ + $config_files_path = apply_filters( 'rocket_config_files_path', $config_files_path ); + + /** + * Filter the content of all config files + * + * @since 2.1 + * + * @param string $buffer The content that will be printed. + * @param array $config_files_path Names of all config files. + */ + $buffer = apply_filters( 'rocket_config_file', $buffer, $config_files_path ); + $buffer = preg_replace( '@array\s+\(@i', 'array(', $buffer ); + $buffer = preg_replace( '@array\(\s+\)@i', 'array()', $buffer ); + + return [ $config_files_path, $buffer ]; +} + +/** + * Create the current config domain file + * For example, if home_url() return example.com, the config domain file will be in /config/example.com + * + * @since 2.0 + * + * @return void + */ +function rocket_generate_config_file() { + list( $config_files_path, $buffer ) = get_rocket_config_file(); + + if ( count( $config_files_path ) ) { + rocket_init_config_dir(); + + foreach ( $config_files_path as $file ) { + rocket_put_content( $file, $buffer ); + } + } +} + +/** + * Remove the current config domain file + * + * @since 2.6 + * + * @return void + */ +function rocket_delete_config_file() { + list( $config_files_path ) = get_rocket_config_file(); + foreach ( $config_files_path as $config_file ) { + rocket_direct_filesystem()->delete( $config_file ); + } +} + +/** + * Create all cache folders (wp-rocket & min) + * + * @since 2.6 + * + * @return void + */ +function rocket_init_cache_dir() { + global $is_apache; + + $filesystem = rocket_direct_filesystem(); + + // Create cache folder if not exist. + if ( ! $filesystem->is_dir( WP_ROCKET_CACHE_PATH ) ) { + rocket_mkdir_p( WP_ROCKET_CACHE_PATH ); + } + + if ( ! $filesystem->is_file( WP_ROCKET_CACHE_PATH . 'index.html' ) ) { + $filesystem->touch( WP_ROCKET_CACHE_PATH . 'index.html' ); + } + + if ( $is_apache ) { + $htaccess_path = WP_ROCKET_CACHE_PATH . '.htaccess'; + + if ( ! $filesystem->is_file( $htaccess_path ) ) { + $filesystem->touch( $htaccess_path ); + rocket_put_content( $htaccess_path, "\nOptions -Indexes\n" ); + } + } + + // Create minify cache folder if not exist. + if ( ! $filesystem->is_dir( WP_ROCKET_MINIFY_CACHE_PATH ) ) { + rocket_mkdir_p( WP_ROCKET_MINIFY_CACHE_PATH ); + } + + if ( ! $filesystem->is_file( WP_ROCKET_MINIFY_CACHE_PATH . 'index.html' ) ) { + $filesystem->touch( WP_ROCKET_MINIFY_CACHE_PATH . 'index.html' ); + } + + // Create busting cache folder if not exist. + if ( ! $filesystem->is_dir( WP_ROCKET_CACHE_BUSTING_PATH ) ) { + rocket_mkdir_p( WP_ROCKET_CACHE_BUSTING_PATH ); + } + + if ( ! $filesystem->is_file( WP_ROCKET_CACHE_BUSTING_PATH . 'index.html' ) ) { + $filesystem->touch( WP_ROCKET_CACHE_BUSTING_PATH . 'index.html' ); + } + + // Create critical CSS folder if not exist. + if ( ! $filesystem->is_dir( WP_ROCKET_CRITICAL_CSS_PATH ) ) { + rocket_mkdir_p( WP_ROCKET_CRITICAL_CSS_PATH ); + } + + if ( ! $filesystem->is_file( WP_ROCKET_CRITICAL_CSS_PATH . 'index.html' ) ) { + $filesystem->touch( WP_ROCKET_CRITICAL_CSS_PATH . 'index.html' ); + } +} + +/** + * Create the config folder (wp-rocket-config) + * + * @since 2.6 + * + * @return void + */ +function rocket_init_config_dir() { + $filesystem = rocket_direct_filesystem(); + + // Create config domain folder if not exist. + if ( ! $filesystem->is_dir( WP_ROCKET_CONFIG_PATH ) ) { + rocket_mkdir_p( WP_ROCKET_CONFIG_PATH ); + } + + // Initialize the config directory with index.html to prevent indexing. + if ( ! $filesystem->is_file( WP_ROCKET_CONFIG_PATH . 'index.html' ) ) { + $filesystem->touch( WP_ROCKET_CONFIG_PATH . 'index.html' ); + } +} + +/** + * Delete all minify cache files. + * + * @since 3.5.3 Replaces glob. + * @since 2.1 + * + * @param string|array $extensions Optional. File extensions to minify. Default: js and css. + */ +function rocket_clean_minify( $extensions = [ 'js', 'css' ] ) { + // Bails out if there are no extensions to target. + if ( empty( $extensions ) ) { + return; + } + + if ( is_string( $extensions ) ) { + $extensions = (array) $extensions; + } + + $min_cache_path = rocket_get_constant( 'WP_ROCKET_MINIFY_CACHE_PATH' ); + $min_path = $min_cache_path . get_current_blog_id() . '/'; + $iterator = _rocket_get_cache_path_iterator( $min_path ); + if ( false === $iterator ) { + return; + } + + $filesystem = rocket_direct_filesystem(); + $min_path_regex = str_replace( '/', '\/', $min_path ); + + foreach ( $extensions as $ext ) { + /** + * Fires before the minify cache files are deleted. + * + * @since 2.1 + * + * @param string $ext File extensions to minify. + */ + do_action( 'before_rocket_clean_minify', $ext ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + + try { + $entries = new RegexIterator( $iterator, "/{$min_path_regex}.*\.{$ext}/" ); + } catch ( Exception $e ) { + return; + } + + foreach ( $entries as $entry ) { + $filesystem->delete( $entry->getPathname() ); + } + + /** + * Fires after the minify cache files was deleted. + * + * @since 2.1 + * + * @param string $ext File extensions to minify. + */ + do_action( 'after_rocket_clean_minify', $ext ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + } + + // Delete any directories. + foreach ( $iterator as $item ) { + if ( $filesystem->is_dir( $item ) ) { + $filesystem->delete( $item ); + } + } + + // Clean the cache/min/3rd-party items. + try { + $files = new FilesystemIterator( "{$min_cache_path}3rd-party" ); + + foreach ( $files as $file ) { + if ( $filesystem->is_file( $file ) ) { + $filesystem->delete( $file ); + } + } + } catch ( UnexpectedValueException $e ) { + // No logging yet. + return; + } +} + +/** + * Delete all cache busting files. + * + * @since 2.9 + * + * @param string|array $extensions (default: array('js','css') File extensions to clean. + * @return void + */ +function rocket_clean_cache_busting( $extensions = [ 'js', 'css' ] ) { + $extensions = is_string( $extensions ) ? (array) $extensions : $extensions; + + $cache_busting_path = WP_ROCKET_CACHE_BUSTING_PATH . get_current_blog_id(); + + if ( ! rocket_direct_filesystem()->is_dir( $cache_busting_path ) ) { + rocket_mkdir_p( $cache_busting_path ); + + Logger::debug( + 'No Cache Busting folder found.', + [ + 'mkdir cache busting folder', + 'cache_busting_path' => $cache_busting_path, + ] + ); + + return; + } + + try { + $dir = new RecursiveDirectoryIterator( $cache_busting_path, FilesystemIterator::SKIP_DOTS ); + } catch ( UnexpectedValueException $e ) { + // No logging yet. + return; + } + + try { + $iterator = new RecursiveIteratorIterator( $dir, RecursiveIteratorIterator::CHILD_FIRST ); + } catch ( Exception $e ) { + // No logging yet. + return; + } + + foreach ( $extensions as $ext ) { + /** + * Fires before the cache busting files are deleted + * + * @since 2.9 + * + * @param string $ext File extensions to clean. + */ + do_action( 'before_rocket_clean_busting', $ext ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + + try { + $files = new RegexIterator( $iterator, '#.*\.' . $ext . '#', RegexIterator::GET_MATCH ); + foreach ( $files as $file ) { + rocket_direct_filesystem()->delete( $file[0] ); + } + } catch ( InvalidArgumentException $e ) { + // No logging yet. + return; + } + + /** + * Fires after the cache busting files was deleted + * + * @since 2.9 + * + * @param string $ext File extensions to clean. + */ + do_action( 'after_rocket_clean_cache_busting', $ext ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + } + + try { + foreach ( $iterator as $item ) { + if ( rocket_direct_filesystem()->is_dir( $item ) ) { + rocket_direct_filesystem()->delete( $item ); + } + } + } catch ( UnexpectedValueException $e ) { + // Log the error. + Logger::debug( + 'Cache Busting folder structure contains a directory we cannot recurse into.', + [ + 'Full error', + 'UnexpectedValueException' => $e->getMessage(), + ] + ); + } +} + +/** + * Delete one or several cache files. + * + * @since 3.5.5 Optimizes by grabbing root cache dirs once, bailing out when file/dir doesn't exist, & directly + * deleting files. + * @since 3.5.4 Replaces glob and optimizes. + * @since 2.0 Delete cache files for all users. + * @since 1.1.0 Add filter rocket_clean_files. + * @since 1.0 + * + * @param string|array $urls URLs of cache files to be deleted. + * @param WP_Filesystem_Direct|null $filesystem Optional. Instance of filesystem handler. + */ +function rocket_clean_files( $urls, $filesystem = null ) { + $urls = (array) $urls; + if ( empty( $urls ) ) { + return; + } + + $urls = array_filter( $urls ); + if ( empty( $urls ) ) { + return; + } + + /** This filter is documented in inc/front/htaccess.php */ + $url_no_dots = (bool) apply_filters( 'rocket_url_no_dots', false ); + $cache_path = _rocket_get_wp_rocket_cache_path(); + + if ( empty( $filesystem ) ) { + $filesystem = rocket_direct_filesystem(); + } + + /** + * Fires before all cache files are deleted. + * + * @since 3.2.2 + * + * @param array $urls The URLs corresponding to the deleted cache files. + */ + do_action( 'before_rocket_clean_files', $urls ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + + foreach ( $urls as $url ) { + + /** + * Fires before the cache file is deleted. + * + * @since 1.0 + * + * @param string $url The URL that the cache file to be deleted. + */ + do_action( 'before_rocket_clean_file', $url ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + + if ( $url_no_dots ) { + $url = str_replace( '.', '_', $url ); + } + + $parsed_url = get_rocket_parse_url( $url ); + + foreach ( _rocket_get_cache_dirs( $parsed_url['host'], $cache_path ) as $dir ) { + $entry = $dir . $parsed_url['path']; + // Skip if the dir/file does not exist. + if ( ! $filesystem->exists( $entry ) ) { + continue; + } + + if ( $filesystem->is_dir( $entry ) ) { + rocket_rrmdir( $entry, [], $filesystem ); + } else { + $filesystem->delete( $entry ); + } + } + + /** + * Fires after the cache file is deleted. + * + * @since 1.0 + * + * @param string $url The URL that the cache file was deleted. + */ + do_action( 'after_rocket_clean_file', $url ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + } + + /** + * Fires after all cache files are deleted. + * + * @since 3.2.2 + * + * @param array $urls The URLs corresponding to the deleted cache files. + */ + do_action( 'after_rocket_clean_files', $urls ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals +} + +/** + * Remove the home cache file and pagination + * + * $since 2.2 Add $lang argument + * + * @since 2.0 Delete cache files for all users + * @since 1.0 + * + * @param string $lang (default: '') The language code. + * @return void + */ +function rocket_clean_home( $lang = '' ) { + $parse_url = get_rocket_parse_url( get_rocket_i18n_home_url( $lang ) ); + + /** This filter is documented in inc/front/htaccess.php */ + if ( apply_filters( 'rocket_url_no_dots', false ) ) { + $parse_url['host'] = str_replace( '.', '_', $parse_url['host'] ); + } + + $root = WP_ROCKET_CACHE_PATH . $parse_url['host'] . '*' . untrailingslashit( $parse_url['path'] ); + + /** + * Filter the homepage caching folder root + * + * @since 2.6.5 + * @param array $root The root that will be returned. + * @param string $host The website host. + * @param string $path The website path. + */ + $root = apply_filters( 'rocket_clean_home_root', $root, $parse_url['host'], $parse_url['path'] ); + + /** + * Fires before the home cache file is deleted + * + * @since 1.0 + * + * @param string $root The path of home cache file. + * @param string $lang The current lang to purge. + */ + do_action( 'before_rocket_clean_home', $root, $lang ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + + // Delete homepage. + $files = glob( $root . '/{index,index-*}.{html,html_gzip}', GLOB_BRACE | GLOB_NOSORT ); + if ( $files ) { + foreach ( $files as $file ) { // no array map to use @. + rocket_direct_filesystem()->delete( $file ); + } + } + + // Delete homepage pagination. + $dirs = glob( $root . '*/' . $GLOBALS['wp_rewrite']->pagination_base, GLOB_NOSORT ); + if ( $dirs ) { + foreach ( $dirs as $dir ) { + rocket_rrmdir( $dir ); + } + } + + // Remove the hidden empty file for mobile detection on NGINX with the Rocket NGINX configuration. + $nginx_mobile_detect_files = glob( $root . '/.mobile-active', GLOB_BRACE | GLOB_NOSORT ); + if ( $nginx_mobile_detect_files ) { + foreach ( $nginx_mobile_detect_files as $nginx_mobile_detect_file ) { // no array map to use @. + rocket_direct_filesystem()->delete( $nginx_mobile_detect_file ); + } + } + + // Remove the hidden empty file for webp. + $nowebp_detect_files = glob( $root . '/.no-webp', GLOB_BRACE | GLOB_NOSORT ); + if ( $nowebp_detect_files ) { + foreach ( $nowebp_detect_files as $nowebp_detect_file ) { // no array map to use @. + rocket_direct_filesystem()->delete( $nowebp_detect_file ); + } + } + + /** + * Fires after the home cache file was deleted + * + * @since 1.0 + * + * @param string $root The path of home cache file. + * @param string $lang The current lang to purge. + */ + do_action( 'after_rocket_clean_home', $root, $lang ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals +} + +/** + * Remove the home cache feed + * + * @since 2.7 + * + * @return void + */ +function rocket_clean_home_feeds() { + + $urls = []; + $urls[] = get_feed_link(); + $urls[] = get_feed_link( 'comments_' ); + + /** + * Filter the home feeds urls + * + * @since 2.7 + * @param array $urls The urls of the home feeds. + */ + $urls = apply_filters( 'rocket_clean_home_feeds', $urls ); + + /** + * Fires before the home feeds cache is deleted + * + * @since 2.7 + * + * @param array $urls The urls of the home feeds. + */ + do_action( 'before_rocket_clean_home_feeds', $urls ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + + rocket_clean_files( $urls ); + + /** + * Fires after the home feeds cache was deleted + * + * @since 2.7 + * + * @param array $urls The urls of the home feeds. + */ + do_action( 'after_rocket_clean_home_feeds', $urls ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals +} + +/** + * Remove all cache files for the domain. + * + * @since 3.5.5 Optimizes by grabbing root cache dirs once, bailing out when file/dir doesn't exist, & directly + * deleting files. + * @since 3.5.3 Replaces glob with SPL. + * @since 2.0 Delete domain cache files for all users + * @since 1.0 + * + * @param string $lang Optional. The language code. Default: empty string. + * @param WP_Filesystem_Direct|null $filesystem Optional. Instance of filesystem handler. + */ +function rocket_clean_domain( $lang = '', $filesystem = null ) { + $urls = ( ! $lang || is_object( $lang ) || is_array( $lang ) || is_int( $lang ) ) + ? (array) get_rocket_i18n_uri() + : (array) get_rocket_i18n_home_url( $lang ); + + /** + * Filter URLs to delete all caching files from a domain. + * + * @since 2.6.4 + * + * @param array URLs that will be returned. + * @param string The language code. + */ + $urls = (array) apply_filters( 'rocket_clean_domain_urls', $urls, $lang ); + $urls = array_filter( $urls ); + if ( empty( $urls ) ) { + return; + } + + /** This filter is documented in inc/front/htaccess.php */ + $url_no_dots = (bool) apply_filters( 'rocket_url_no_dots', false ); + $cache_path = _rocket_get_wp_rocket_cache_path(); + $dirs_to_preserve = get_rocket_i18n_to_preserve( $lang, $cache_path ); + + if ( empty( $filesystem ) ) { + $filesystem = rocket_direct_filesystem(); + } + + foreach ( $urls as $url ) { + $parsed_url = get_rocket_parse_url( $url ); + + if ( $url_no_dots ) { + $parsed_url['host'] = str_replace( '.', '_', $parsed_url['host'] ); + } + + $root = $cache_path . $parsed_url['host'] . $parsed_url['path']; + + /** + * Fires before all cache files are deleted. + * + * @since 1.0 + * + * @param string $root The path of home cache file. + * @param string $lang The current lang to purge. + * @param string $url The home url. + */ + do_action( 'before_rocket_clean_domain', $root, $lang, $url ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + + foreach ( _rocket_get_cache_dirs( $parsed_url['host'], $cache_path ) as $dir ) { + $entry = $dir . $parsed_url['path']; + // Skip if the dir/file does not exist. + if ( ! $filesystem->exists( $entry ) ) { + continue; + } + + if ( $filesystem->is_dir( $entry ) ) { + rocket_rrmdir( $entry, $dirs_to_preserve, $filesystem ); + } else { + $filesystem->delete( $entry ); + } + } + + /** + * Fires after all cache files was deleted. + * + * @since 1.0 + * + * @param string $root The path of home cache file. + * @param string $lang The current lang to purge. + * @param string $url The home url. + */ + do_action( 'after_rocket_clean_domain', $root, $lang, $url ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + } +} + +/** + * Delete the caching files of a specific term. + * + * $since 2.6.8 + * + * @param int $term_id The term ID. + * @param string $taxonomy_slug The taxonomy slug. + * @return void + */ +function rocket_clean_term( $term_id, $taxonomy_slug ) { + $purge_urls = []; + + // Get all term infos. + $term = get_term_by( 'id', $term_id, $taxonomy_slug ); + + // Get the term language. + $i18n_plugin = rocket_has_i18n(); + + if ( 'wpml' === $i18n_plugin && ! rocket_is_plugin_active( 'woocommerce-multilingual/wpml-woocommerce.php' ) ) { + // WPML. + $lang = $GLOBALS['sitepress']->get_language_for_element( $term_id, 'tax_' . $taxonomy_slug ); + } elseif ( 'polylang' === $i18n_plugin ) { + // Polylang. + $lang = pll_get_term_language( $term_id ); + } else { + $lang = false; + } + + // Get permalink. + $permalink = get_term_link( $term, $taxonomy_slug ); + + // Add permalink. + if ( '/' !== rocket_extract_url_component( $permalink, PHP_URL_PATH ) ) { + array_push( $purge_urls, $permalink ); + } + + /** + * Fires before deleted caching files related with the term + * + * @since 2.6.8 + * @param obj $term The term object. + * @param array $purge_urls URLs cache files to remove. + * @param string $lang The term language. + */ + do_action( 'before_rocket_clean_term', $term, $purge_urls, $lang ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + + /** + * Filter URLs cache files to remove + * + * @since 2.6.8 + * @param array $purge_urls List of URLs cache files to remove. + * @param obj $term The term object. + */ + $purge_urls = apply_filters( 'rocket_term_purge_urls', $purge_urls, $term ); + + // Purge all files. + rocket_clean_files( $purge_urls ); + + // Never forget to purge homepage and their pagination. + rocket_clean_home( $lang ); + + /** + * Fires before deleted caching files related with the term + * + * @since 2.6.8 + * @param obj $term The term object. + * @param array $purge_urls URLs cache files to remove. + * @param string $lang The term language. + */ + do_action( 'after_rocket_clean_term', $term, $purge_urls, $lang ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals +} + +/** + * Delete the caching files of a specific user + * + * $since 2.6.12 + * + * @param int $user_id The user ID. + * @param string $lang The language code. + * @return void + */ +function rocket_clean_user( $user_id, $lang = '' ) { + $urls = ( ! $lang || is_object( $lang ) ) ? get_rocket_i18n_uri() : get_rocket_i18n_home_url( $lang ); + $urls = (array) $urls; + + /** This filter is documented in inc/functions/files.php */ + $urls = apply_filters( 'rocket_clean_domain_urls', $urls, $lang ); + $urls = array_filter( $urls ); + $user = get_user_by( 'id', $user_id ); + + if ( ! $user ) { + return; + } + + $user_key = $user->user_login . '-' . get_rocket_option( 'secret_cache_key' ); + + foreach ( $urls as $url ) { + $parse_url = get_rocket_parse_url( $url ); + + /** This filter is documented in inc/front/htaccess.php */ + if ( apply_filters( 'rocket_url_no_dots', false ) ) { + $parse_url['host'] = str_replace( '.', '_', $parse_url['host'] ); + } + + $root = rocket_get_constant( 'WP_ROCKET_CACHE_PATH' ) . $parse_url['host'] . '-' . $user_key . '*' . $parse_url['path']; + + /** + * Fires before all caching files are deleted for a specific user + * + * @since 2.6.12 + * + * @param int $user_id The path of home cache file. + * @param string $lang The language code. + */ + do_action( 'before_rocket_clean_user', $user_id, $lang ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + + // Delete cache domain files. + $dirs = glob( $root . '*', GLOB_NOSORT ); + if ( $dirs ) { + foreach ( $dirs as $dir ) { + rocket_rrmdir( $dir, get_rocket_i18n_to_preserve( $lang ) ); + } + } + + /** + * Fires after all caching files are deleted for a specific user + * + * @since 2.6.12 + * + * @param int $user_id The path of home cache file. + * @param string $lang The language code. + */ + do_action( 'after_rocket_clean_user', $user_id, $lang ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + } +} + +/** + * Remove all caching files in the cache folder + * + * @since 2.6.8 + * + * @return void + */ +function rocket_clean_cache_dir() { + /** + * Fires before deleting all caching files in the cache folder + * + * @since 2.6.8 + */ + do_action( 'before_rocket_clean_cache_dir' ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + + // Delete all caching files. + $dirs = glob( WP_ROCKET_CACHE_PATH . '*', GLOB_NOSORT ); + if ( $dirs ) { + foreach ( $dirs as $dir ) { + rocket_rrmdir( $dir ); + } + } + + /** + * Fires after deleting all caching files in the cache folder + * + * @since 2.6.8 + */ + do_action( 'after_rocket_clean_cache_dir' ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals +} + +/** + * Remove a single file or a folder recursively. + * + * @since 3.5.3 Replaces glob and optimizes. + * @since 1.0 + * @since 3.5.3 Bails if given dir should be preserved; replaces glob; optimizes. + * + * @param string $dir File/Directory to delete. + * @param array $dirs_to_preserve Optional. Dirs that should not be deleted. + * @param WP_Filesystem_Direct|null $filesystem Optional. Instance of filesystem handler. + */ +function rocket_rrmdir( $dir, array $dirs_to_preserve = [], $filesystem = null ) { + $dir = untrailingslashit( $dir ); + + if ( empty( $filesystem ) ) { + $filesystem = rocket_direct_filesystem(); + } + + /** + * Fires before a file/directory cache is deleted + * + * @since 1.1.0 + * + * @param string $dir File/Directory to delete. + * @param array $dirs_to_preserve Directories that should not be deleted. + */ + do_action( 'before_rocket_rrmdir', $dir, $dirs_to_preserve ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + + // Remove the hidden empty file for mobile detection on NGINX with the Rocket NGINX configuration. + $nginx_mobile_detect_file = $dir . '/.mobile-active'; + + if ( $filesystem->is_dir( $dir ) && $filesystem->exists( $nginx_mobile_detect_file ) ) { + $filesystem->delete( $nginx_mobile_detect_file ); + } + + // Remove the hidden empty file for webp. + $nowebp_detect_file = $dir . '/.no-webp'; + + if ( $filesystem->is_dir( $dir ) && $filesystem->exists( $nowebp_detect_file ) ) { + $filesystem->delete( $nowebp_detect_file ); + } + + if ( ! $filesystem->is_dir( $dir ) ) { + $filesystem->delete( $dir ); + + return; + } + + // Get the directory entries. + $entries = []; + try { + foreach ( new FilesystemIterator( $dir ) as $entry ) { + $entries[] = $entry->getPathname(); + } + } catch ( Exception $e ) { // phpcs:disable Generic.CodeAnalysis.EmptyStatement.DetectedCatch + // No action required, as logging not enabled. + } + + // Exclude directories to preserve from the entries. + if ( ! empty( $dirs_to_preserve ) && ! empty( $entries ) ) { + $keys = []; + foreach ( $dirs_to_preserve as $dir_to_preserve ) { + $matches = preg_grep( "#^$dir_to_preserve$#", $entries ); + $keys[] = reset( $matches ); + } + + if ( ! empty( $keys ) ) { + $keys = array_filter( $keys ); + if ( ! empty( $keys ) ) { + $entries = array_diff( $entries, $keys ); + } + } + } + + foreach ( $entries as $entry ) { + // If not a directory, delete it. + if ( ! $filesystem->is_dir( $entry ) ) { + $filesystem->delete( $entry ); + } else { + rocket_rrmdir( $entry, $dirs_to_preserve, $filesystem ); + } + } + + $filesystem->delete( $dir ); + + /** + * Fires after a file/directory cache was deleted + * + * @since 1.1.0 + * + * @param string $dir File/Directory to delete. + * @param array $dirs_to_preserve Dirs that should not be deleted. + */ + do_action( 'after_rocket_rrmdir', $dir, $dirs_to_preserve ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals +} + +/** + * Instanciate the filesystem class + * + * @since 2.10 + * + * @return object WP_Filesystem_Direct instance + */ +function rocket_direct_filesystem() { + require_once ABSPATH . 'wp-admin/includes/class-wp-filesystem-base.php'; + require_once ABSPATH . 'wp-admin/includes/class-wp-filesystem-direct.php'; + return new WP_Filesystem_Direct( new StdClass() ); +} + +/** + * Directory creation based on WordPress Filesystem + * + * @since 1.3.4 + * + * @param string $dir The path of directory will be created. + * @return bool + */ +function rocket_mkdir( $dir ) { + $chmod = rocket_get_filesystem_perms( 'dir' ); + return rocket_direct_filesystem()->mkdir( $dir, $chmod ); +} + +/** + * Recursive directory creation based on full path. + * + * @since 1.3.4 + * + * @source wp_mkdir_p() in /wp-includes/functions.php + * + * @param string $target path to the directory we want to create. + * @return bool True if directory is created/exists, false otherwise + */ +function rocket_mkdir_p( $target ) { + $wrapper = null; + + if ( rocket_is_stream( $target ) ) { + list( $wrapper, $target ) = explode( '://', $target, 2 ); + } + + // from php.net/mkdir user contributed notes. + $target = str_replace( '//', '/', $target ); + + // Put the wrapper back on the target. + if ( null !== $wrapper ) { + $target = $wrapper . '://' . $target; + } + + // safe mode fails with a trailing slash under certain PHP versions. + $target = rtrim( $target, '/\\' ); + if ( empty( $target ) ) { + $target = '/'; + } + + if ( rocket_direct_filesystem()->exists( $target ) ) { + return rocket_direct_filesystem()->is_dir( $target ); + } + + // Attempting to create the directory may clutter up our display. + if ( rocket_mkdir( $target ) ) { + return true; + } elseif ( rocket_direct_filesystem()->is_dir( dirname( $target ) ) ) { + return false; + } + + // If the above failed, attempt to create the parent node, then try again. + if ( ( '/' !== $target ) && ( rocket_mkdir_p( dirname( $target ) ) ) ) { + return rocket_mkdir_p( $target ); + } + + return false; +} + +/** + * Test if a given path is a stream URL. + * + * @since 3.5.3 + * + * @source wp_is_stream() in /wp-includes/functions.php + * + * @param string $path The resource path or URL. + * + * @return bool true if the path is a stream URL; else false. + */ +function rocket_is_stream( $path ) { + $scheme_separator = strpos( $path, '://' ); + + if ( false === $scheme_separator ) { + // $path isn't a stream. + return false; + } + + $stream = substr( $path, 0, $scheme_separator ); + + return in_array( $stream, stream_get_wrappers(), true ); +} + +/** + * File creation based on WordPress Filesystem. + * + * @since 1.3.5 + * + * @param string $file The path of file will be created. + * @param string $content The content that will be printed in advanced-cache.php. + * + * @return bool true on success; else, false on failure. + */ +function rocket_put_content( $file, $content ) { + $chmod = rocket_get_filesystem_perms( 'file' ); + return rocket_direct_filesystem()->put_contents( $file, $content, $chmod ); +} + +/** + * Get the permissions to apply to files and folders. + * + * Reminder: + * `$perm = fileperms( $file );` + * + * WHAT | TYPE | FILE | FOLDER | + * ----------------------------------------------+--------+--------+--------| + * `$perm` | int | 33188 | 16877 | + * `substr( decoct( $perm ), -4 )` | string | '0644' | '0755' | + * `substr( sprintf( '%o', $perm ), -4 )` | string | '0644' | '0755' | + * `$perm & 0777` | int | 420 | 493 | + * `decoct( $perm & 0777 )` | string | '644' | '755' | + * `substr( sprintf( '%o', $perm & 0777 ), -4 )` | string | '644' | '755' | + * + * @since 3.2.4 + * + * @param string $type The type: 'dir' or 'file'. + * + * @return int Octal integer. + */ +function rocket_get_filesystem_perms( $type ) { + static $perms = []; + + if ( rocket_get_constant( 'WP_ROCKET_IS_TESTING', false ) ) { + $perms = []; + } + + // Allow variants. + switch ( $type ) { + case 'dir': + case 'dirs': + case 'folder': + case 'folders': + $type = 'dir'; + break; + + case 'file': + case 'files': + $type = 'file'; + break; + + default: + return 0755; + } + + if ( isset( $perms[ $type ] ) ) { + return $perms[ $type ]; + } + + // If the constants are not defined, use fileperms() like WordPress does. + if ( 'dir' === $type ) { + $fs_chmod_dir = (int) rocket_get_constant( 'FS_CHMOD_DIR', 0 ); + $perms[ $type ] = $fs_chmod_dir > 0 + ? $fs_chmod_dir + : fileperms( rocket_get_constant( 'ABSPATH' ) ) & 0777 | 0755; + } else { + $fs_chmod_file = (int) rocket_get_constant( 'FS_CHMOD_FILE', 0 ); + $perms[ $type ] = $fs_chmod_file > 0 + ? $fs_chmod_file + : fileperms( rocket_get_constant( 'ABSPATH' ) . 'index.php' ) & 0777 | 0644; + } + + return $perms[ $type ]; +} + +/** + * Gets Directory files matches regex. + * + * @since 3.6.3 + * @access private + * + * @param string $dir Directory to search for files inside it. + * @param string $regex Regular expression for files need to be searched for. + * + * @return array|RegexIterator List of files matches this regular expression. + */ +function _rocket_get_dir_files_by_regex( $dir, $regex ) { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedFunctionFound + try { + $iterator = new IteratorIterator( + new FilesystemIterator( $dir ) + ); + + return new RegexIterator( $iterator, $regex ); + } catch ( Exception $e ) { + return []; + } + +} + +/** + * Get the recursive iterator for the cache path. + * + * @since 3.5.4 + * @access private + * + * @param string $cache_path Path to the cache directory. + * + * @return bool|RecursiveIteratorIterator Iterator on success; else false; + */ +function _rocket_get_cache_path_iterator( $cache_path ) { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedFunctionFound + try { + return new RecursiveIteratorIterator( + new RecursiveDirectoryIterator( $cache_path ), + RecursiveIteratorIterator::SELF_FIRST, + RecursiveIteratorIterator::CATCH_GET_CHILD + ); + } catch ( Exception $e ) { + // No logging yet. + return false; + } +} + +/** + * Gets the directories for the given URL host from the cache/wp-rocket/ directory or stored memory. + * + * @since 3.5.5 + * @access private + * + * @param string $url_host The URL's host. + * @param string $cache_path Cache's path, e.g. cache/wp-rocket/. + * @param bool $hard_reset Optional. When true, resets the static domain directories array and bails out. + * + * @return array + */ +function _rocket_get_cache_dirs( $url_host, $cache_path = '', $hard_reset = false ) { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedFunctionFound + static $domain_dirs = []; + + if ( true === $hard_reset ) { + $domain_dirs = []; + + return; + } + + if ( isset( $domain_dirs[ $url_host ] ) ) { + return $domain_dirs[ $url_host ]; + } + + if ( empty( $cache_path ) ) { + $cache_path = _rocket_get_wp_rocket_cache_path(); + } + + try { + $iterator = new IteratorIterator( + new FilesystemIterator( $cache_path ) + ); + } catch ( Exception $e ) { + return []; + } + + $regex = sprintf( + '/%1$s%2$s(.*)/i', + _rocket_normalize_path( $cache_path, true ), + $url_host + ); + + try { + $entries = new RegexIterator( $iterator, $regex ); + } catch ( Exception $e ) { + return []; + } + + $domain_dirs[ $url_host ] = []; + foreach ( $entries as $entry ) { + $domain_dirs[ $url_host ][] = $entry->getPathname(); + } + + return $domain_dirs[ $url_host ]; +} + +/** + * Normalizes the given filesystem path: + * - Windows/IIS-based servers: converts all directory separators to "\\" or, when escaping, to "\\\\". + * - Linux-based servers: if $forced is true, uses wp_normalize_path(); else, returns the original path. + * + * @since 3.5.5 + * @access private + * + * @param string $path Filesystem path (file or directory) to normalize. + * @param bool $escape Optional. When true, escapes the directory separator(s). + * @param bool $force Optional. When true, forces normalizing off non-Windows' paths. + * + * @return string + */ +function _rocket_normalize_path( $path, $escape = false, $force = false ) { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedFunctionFound + if ( _rocket_is_windows_fs( $path ) ) { + $path = str_replace( '/', '\\', $path ); + + return $escape + ? str_replace( '\\', '\\\\', $path ) + : $path; + } + + if ( $escape ) { + return str_replace( '/', '\/', $path ); + } + + if ( ! $force ) { + return $path; + } + + return wp_normalize_path( $path ); +} + +/** + * Checks if the filesystem (fs) is for Windows/IIS server. + * + * @since 3.5.5 + * @access private + * + * @param bool $hard_reset Optional. When true, resets the memoization. + * + * @return bool + */ +function _rocket_is_windows_fs( $hard_reset = false ) { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedFunctionFound + static $is_windows = null; + + if ( $hard_reset ) { + $is_windows = null; + } + + if ( is_null( $is_windows ) ) { + $is_windows = ( + DIRECTORY_SEPARATOR === '\\' + && + ! rocket_get_constant( 'WP_ROCKET_RUNNING_VFS', false ) + ); + } + + return $is_windows; +} + +/** + * Gets the normalized cache path, i.e. normalizes constant "WP_ROCKET_CACHE_PATH". + * + * @since 3.5.5 + * @access private + * + * @return string + */ +function _rocket_get_wp_rocket_cache_path() { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedFunctionFound + return _rocket_normalize_path( rocket_get_constant( 'WP_ROCKET_CACHE_PATH' ) ); +} + +/** + * Gets .php files in a directory as an array of SplFileInfo objects. + * + * @since 3.6.3 + * + * @param string $dir_path Directory to check. + * + * @return array .php files in the directory. [...SplFileInfo] + */ +function _rocket_get_php_files_in_dir( $dir_path ) { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedFunctionFound + try { + $config_dir = new FilesystemIterator( (string) $dir_path ); + } catch ( Exception $e ) { + return []; + } + $files = []; + + foreach ( $config_dir as $file ) { + if ( $file->isFile() && 'php' === $file->getExtension() ) { + $files[] = $file; + } + } + + return $files; +} + +/** + * Get recursive files matched by regex. + * + * @since 3.6.3 + * + * @param string $regex Regular Expression to be applied. + * + * @return array|RegexIterator List of files which match the regular expression (SplFileInfo). + */ +function _rocket_get_recursive_dir_files_by_regex( $regex ) { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedFunctionFound + try { + $cache_path = _rocket_get_wp_rocket_cache_path(); + $iterator = new RecursiveIteratorIterator( + new RecursiveDirectoryIterator( $cache_path, FilesystemIterator::SKIP_DOTS ) + ); + return new RegexIterator( $iterator, $regex, RecursiveRegexIterator::MATCH ); + } catch ( Exception $e ) { + return []; + } +} diff --git a/wp-content/plugins/wp-rocket/inc/functions/formatting.php b/wp-content/plugins/wp-rocket/inc/functions/formatting.php new file mode 100644 index 0000000..c674fe2 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/functions/formatting.php @@ -0,0 +1,570 @@ + '(.*)', + '*' => '(.*)', + '(*)' => '(.*)', + '(.*)' => '(.*)', + ]; + + foreach ( $path_components as &$path_component ) { + $path_component = strtr( $path_component, $arr ); + } + $path = implode( '/', $path_components ); + + return $path; +} + + +/** + * Used with array_filter to remove files without .css extension + * + * @since 1.0 + * + * @param string $file filepath to sanitize. + * @return bool\string false if not a css file, filepath otherwise + */ +function rocket_sanitize_css( $file ) { + $file = preg_replace( '#\?.*$#', '', $file ); + $ext = strtolower( pathinfo( $file, PATHINFO_EXTENSION ) ); + return ( 'css' === $ext || 'php' === $ext ) ? trim( $file ) : false; +} + +/** + * Used with array_filter to remove files without .js extension + * + * @since 1.0 + * + * @param string $file filepath to sanitize. + * @return bool\string false if not a js file, filepath otherwise + */ +function rocket_sanitize_js( $file ) { + $file = preg_replace( '#\?.*$#', '', $file ); + $ext = strtolower( pathinfo( $file, PATHINFO_EXTENSION ) ); + return ( 'js' === $ext || 'php' === $ext ) ? trim( $file ) : false; +} + +/** + * Sanitize and validate JS files to exclude from the minification. + * + * @since 3.3.7 + * @author Remy Perona + * @author Grégory Viguier + * + * @param string $file filepath to sanitize. + * @return string + */ +function rocket_validate_js( $file ) { + if ( rocket_is_internal_file( $file ) ) { + $file = trim( $file ); + $file = rocket_clean_exclude_file( $file ); + $file = rocket_sanitize_js( $file ); + + return $file; + } + + return sanitize_text_field( rocket_remove_url_protocol( strtok( $file, '?' ) ) ); +} + +/** + * Sanitize and validate CSS files to exclude from the minification. + * + * @since 3.7 + * + * @param string $file filepath to sanitize. + * @return string + */ +function rocket_validate_css( $file ) { + if ( rocket_is_internal_file( $file ) ) { + return rocket_sanitize_css( rocket_clean_exclude_file( trim( $file ) ) ); + } + + return sanitize_text_field( rocket_remove_url_protocol( strtok( $file, '?' ) ) ); +} + +/** + * Check if the passed value is an internal URL (default domain or CDN/Multilingual). + * + * @since 3.3.7 + * @author Remy Perona + * @author Grégory Viguier + * + * @param string $file string to test. + * @return bool + */ +function rocket_is_internal_file( $file ) { + $file_host = wp_parse_url( $file, PHP_URL_HOST ); + + if ( empty( $file_host ) ) { + return false; + } + + /** + * Filters the allowed hosts for optimization + * + * @since 3.4 + * @author Remy Perona + * + * @param array $hosts Allowed hosts. + * @param array $zones Zones to check available hosts. + */ + $hosts = apply_filters( 'rocket_cdn_hosts', [], [ 'all', 'css_and_js', 'css', 'js' ] ); + $hosts[] = wp_parse_url( content_url(), PHP_URL_HOST ); + $langs = get_rocket_i18n_uri(); + + // Get host for all langs. + if ( ! empty( $langs ) ) { + foreach ( $langs as $lang ) { + $hosts[] = wp_parse_url( $lang, PHP_URL_HOST ); + } + } + + $hosts = array_unique( $hosts ); + + if ( empty( $hosts ) ) { + return false; + } + + return in_array( $file_host, $hosts, true ); +} + +/** + * Sanitize a setting value meant for a textarea. + * + * @since 3.3.7 + * @author Grégory Viguier + * + * @param string $field The field’s name. Can be one of the following: + * 'exclude_css', 'exclude_inline_js', 'exclude_js', 'cache_reject_uri', + * 'cache_reject_ua', 'cache_purge_pages', 'cdn_reject_files'. + * @param array|string $value The value to sanitize. + * @return array|null + */ +function rocket_sanitize_textarea_field( $field, $value ) { + $fields = [ + 'cache_purge_pages' => [ 'esc_url', 'rocket_clean_exclude_file', 'rocket_clean_wildcards' ], // Pattern. + 'cache_reject_cookies' => [ 'rocket_sanitize_key' ], + 'cache_reject_ua' => [ 'rocket_sanitize_ua', 'rocket_clean_wildcards' ], // Pattern. + 'cache_reject_uri' => [ 'esc_url', 'rocket_clean_exclude_file', 'rocket_clean_wildcards' ], // Pattern. + 'cache_query_strings' => [ 'rocket_sanitize_key' ], + 'cdn_reject_files' => [ 'rocket_clean_exclude_file', 'rocket_clean_wildcards' ], // Pattern. + 'exclude_css' => [ 'rocket_validate_css', 'rocket_clean_wildcards' ], // Pattern. + 'exclude_inline_js' => [ 'sanitize_text_field' ], // Pattern. + 'exclude_js' => [ 'rocket_validate_js', 'rocket_clean_wildcards' ], // Pattern. + 'delay_js_scripts' => [ 'rocket_validate_js' ], + ]; + + if ( ! isset( $fields[ $field ] ) ) { + return null; + } + + $sanitizations = $fields[ $field ]; + + if ( ! is_array( $value ) ) { + $value = explode( "\n", $value ); + } + + $value = array_map( 'trim', $value ); + $value = array_filter( $value ); + + if ( ! $value ) { + return []; + } + + // Sanitize. + foreach ( $sanitizations as $sanitization ) { + $value = array_map( $sanitization, $value ); + } + + return array_unique( $value ); +} + +/** + * Used with array_filter to remove files without .xml extension + * + * @since 2.8 + * @author Remy Perona + * + * @param string $file filepath to sanitize. + * @return string|boolean filename or false if not xml + */ +function rocket_sanitize_xml( $file ) { + $file = preg_replace( '#\?.*$#', '', $file ); + $ext = strtolower( pathinfo( $file, PATHINFO_EXTENSION ) ); + return ( 'xml' === $ext ) ? trim( $file ) : false; +} + +/** + * Sanitizes a string key like the sanitize_key() WordPress function without forcing lowercase. + * + * @since 2.7 + * + * @param string $key Key string to sanitize. + * @return string + */ +function rocket_sanitize_key( $key ) { + $key = preg_replace( '/[^a-z0-9_\-]/i', '', $key ); + return $key; +} + +/** + * Used to sanitize values of the "Never send cache pages for these user agents" option. + * + * @since 2.6.4 + * + * @param string $user_agent User Agent string. + * @return string + */ +function rocket_sanitize_ua( $user_agent ) { + $user_agent = preg_replace( '/[^a-z0-9._\(\)\*\-\/\s\x5c]/i', '', $user_agent ); + return $user_agent; +} + +/** + * Get an url without HTTP protocol + * + * @since 1.3.0 + * + * @param string $url The URL to parse. + * @param bool $no_dots (default: false). + * @return string $url The URL without protocol + */ +function rocket_remove_url_protocol( $url, $no_dots = false ) { + $url = preg_replace( '#^(https?:)?\/\/#im', '', $url ); + + /** This filter is documented in inc/front/htaccess.php */ + if ( apply_filters( 'rocket_url_no_dots', $no_dots ) ) { + $url = str_replace( '.', '_', $url ); + } + return $url; +} + +/** + * Add HTTP protocol to an url that does not have it. + * + * @since 2.2.1 + * + * @param string $url The URL to parse. + * + * @return string $url The URL with protocol. + */ +function rocket_add_url_protocol( $url ) { + // Bail out if the URL starts with http:// or https://. + if ( + strpos( $url, 'http://' ) !== false + || + strpos( $url, 'https://' ) !== false + ) { + return $url; + } + + if ( substr( $url, 0, 2 ) !== '//' ) { + $url = '//' . $url; + } + + return set_url_scheme( $url ); +} + +/** + * Set the scheme for a internal URL + * + * @since 2.6 + * + * @param string $url Absolute url that includes a scheme. + * @return string $url URL with a scheme. + */ +function rocket_set_internal_url_scheme( $url ) { + $tmp_url = set_url_scheme( $url ); + + if ( rocket_extract_url_component( $tmp_url, PHP_URL_HOST ) === rocket_extract_url_component( home_url(), PHP_URL_HOST ) ) { + $url = $tmp_url; + } + + return $url; +} + +/** + * Get the domain of an URL without subdomain + * (ex: rocket_get_domain( 'http://www.geekpress.fr' ) return geekpress.fr + * + * @source : http://stackoverflow.com/a/15498686 + * @since 2.7.3 undeprecated & updated + * @since 1.0 + * + * @param string $url URL to parse. + * @return string|bool Domain or false + */ +function rocket_get_domain( $url ) { + // Add URL protocol if the $url doesn't have one to prevent issue with parse_url. + $url = rocket_add_url_protocol( trim( $url ) ); + + $url_array = wp_parse_url( $url ); + $host = $url_array['host']; + /** + * Filters the tld max range for edge cases + * + * @since 2.7.3 + * + * @param string Max range number + */ + $match = '/(?P[a-z0-9][a-z0-9\-]{1,63}\.[a-z\.]{2,' . apply_filters( 'rocket_get_domain_preg', '6' ) . '})$/i'; + + if ( preg_match( $match, $host, $regs ) ) { + return $regs['domain']; + } + + return false; +} + +/** + * Extract and return host, path, query and scheme of an URL + * + * @since 2.11.5 Supports UTF-8 URLs + * @since 2.1 Add $query variable + * @since 2.0 + * + * @param string $url The URL to parse. + * @return array Components of an URL + */ +function get_rocket_parse_url( $url ) { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + if ( ! is_string( $url ) ) { + return; + } + + $encoded_url = preg_replace_callback( + '%[^:/@?&=#]+%usD', + function ( $matches ) { + return rawurlencode( $matches[0] ); + }, + $url + ); + + $url = wp_parse_url( $encoded_url ); + $host = isset( $url['host'] ) ? strtolower( urldecode( $url['host'] ) ) : ''; + $path = isset( $url['path'] ) ? urldecode( $url['path'] ) : ''; + $scheme = isset( $url['scheme'] ) ? urldecode( $url['scheme'] ) : ''; + $query = isset( $url['query'] ) ? urldecode( $url['query'] ) : ''; + $fragment = isset( $url['fragment'] ) ? urldecode( $url['fragment'] ) : ''; + + /** + * Filter components of an URL + * + * @since 2.2 + * + * @param array Components of an URL + */ + return (array) apply_filters( + 'rocket_parse_url', + [ + 'host' => $host, + 'path' => $path, + 'scheme' => $scheme, + 'query' => $query, + 'fragment' => $fragment, + ] + ); +} + + +/** + * Extract a component from an URL. + * + * @since 2.11 + * @author Remy Perona + * + * @param string $url URL to parse and extract component of. + * @param string $component URL component to extract using constant as in parse_url(). + * @return string extracted component + */ +function rocket_extract_url_component( $url, $component ) { + return _get_component_from_parsed_url_array( wp_parse_url( $url ), $component ); +} + +/** + * Returns realpath to file (used for relative path with /../ in it or not-yet existing file) + * + * @since 2.11 + * @author Remy Perona + * + * @param string $file File to determine realpath for. + * @return string Resolved file path + */ +function rocket_realpath( $file ) { + $wrapper = null; + + // Strip the protocol. + if ( rocket_is_stream( $file ) ) { + list( $wrapper, $file ) = explode( '://', $file, 2 ); + } + + $path = []; + + foreach ( explode( '/', $file ) as $part ) { + if ( '' === $part || '.' === $part ) { + continue; + } + + if ( '..' !== $part ) { + array_push( $path, $part ); + } + elseif ( count( $path ) > 0 ) { + array_pop( $path ); + } + } + + $file = join( '/', $path ); + + if ( null !== $wrapper ) { + return $wrapper . '://' . $file; + } + + $prefix = 'WIN' === strtoupper( substr( PHP_OS, 0, 3 ) ) ? '' : '/'; + + return $prefix . $file; +} + +/** + * Converts an URL to an absolute path. + * + * @since 2.11.7 + * @author Remy Perona + * + * @param string $url URL to convert. + * @param array $zones Zones to check available hosts. + * @return string|bool + */ +function rocket_url_to_path( $url, array $zones = [ 'all' ] ) { + $wp_content_dir = rocket_get_constant( 'WP_CONTENT_DIR' ); + $root_dir = trailingslashit( dirname( $wp_content_dir ) ); + $root_url = str_replace( wp_basename( $wp_content_dir ), '', content_url() ); + $url_host = wp_parse_url( $url, PHP_URL_HOST ); + + // relative path. + if ( null === $url_host ) { + $subdir_levels = substr_count( preg_replace( '/https?:\/\//', '', site_url() ), '/' ); + $url = trailingslashit( site_url() . str_repeat( '/..', $subdir_levels ) ) . ltrim( $url, '/' ); + } + + /** + * Filters the URL before converting it to a path + * + * @since 3.5.3 + * @author Remy Perona + * + * @param string $url URL of the asset. + * @param array $zones CDN zones corresponding to the current assets type. + */ + $url = apply_filters( 'rocket_asset_url', $url, $zones ); + + $url = rawurldecode( $url ); + $root_url = preg_replace( '/^https?:/', '', $root_url ); + $url = preg_replace( '/^https?:/', '', $url ); + $file = str_replace( $root_url, $root_dir, $url ); + $file = rocket_realpath( $file ); + + /** + * Filters the absolute path to the asset file + * + * @since 3.3 + * @author Remy Perona + * + * @param string $file Absolute path to the file. + * @param string $url URL of the asset. + */ + $file = apply_filters( 'rocket_url_to_path', $file, $url ); + + if ( ! rocket_direct_filesystem()->is_readable( $file ) ) { + return false; + } + + return $file; +} + +/** + * Simple helper to get some external URLs. + * + * @since 2.10.10 + * @author Grégory Viguier + * + * @param string $target What we want. + * @param array $query_args An array of query arguments. + * @return string The URL. + */ +function rocket_get_external_url( $target, $query_args = [] ) { + $site_url = WP_ROCKET_WEB_MAIN; + + switch ( $target ) { + case 'support': + $locale = function_exists( 'get_user_locale' ) ? get_user_locale() : get_locale(); + $paths = [ + 'default' => 'support', + 'fr_FR' => 'fr/support', + 'fr_CA' => 'fr/support', + 'it_IT' => 'it/supporto', + 'de_DE' => 'de/support', + 'es_ES' => 'es/soporte', + ]; + + $url = isset( $paths[ $locale ] ) ? $paths[ $locale ] : $paths['default']; + $url = $site_url . $url . '/'; + break; + case 'account': + $locale = function_exists( 'get_user_locale' ) ? get_user_locale() : get_locale(); + $paths = [ + 'default' => 'account', + 'fr_FR' => 'fr/compte', + 'fr_CA' => 'fr/compte', + 'it_IT' => 'it/account/', + 'de_DE' => 'de/konto/', + 'es_ES' => 'es/cuenta/', + ]; + + $url = isset( $paths[ $locale ] ) ? $paths[ $locale ] : $paths['default']; + $url = $site_url . $url . '/'; + break; + default: + $url = $site_url; + } + + if ( $query_args ) { + $url = add_query_arg( $query_args, $url ); + } + + return $url; +} diff --git a/wp-content/plugins/wp-rocket/inc/functions/htaccess.php b/wp-content/plugins/wp-rocket/inc/functions/htaccess.php new file mode 100644 index 0000000..4f4c106 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/functions/htaccess.php @@ -0,0 +1,696 @@ +is_writable( $htaccess_file ) ) { + // The file is not writable or does not exist. + return false; + } + + // Get content of .htaccess file. + $ftmp = rocket_direct_filesystem()->get_contents( $htaccess_file ); + + if ( false === $ftmp ) { + // Could not get the file contents. + return false; + } + + // Check if the file contains the WP rules, before modifying anything. + $has_wp_rules = rocket_has_wp_htaccess_rules( $ftmp ); + + // Remove the WP Rocket marker. + $ftmp = preg_replace( '/\s*# BEGIN WP Rocket.*# END WP Rocket\s*?/isU', PHP_EOL . PHP_EOL, $ftmp ); + $ftmp = ltrim( $ftmp ); + + if ( ! $remove_rules ) { + $ftmp = get_rocket_htaccess_marker() . PHP_EOL . $ftmp; + } + + /** + * Determine if empty lines should be removed in the .htaccess file. + * + * @since 2.10.7 + * @author Remy Perona + * + * @param boolean $remove_empty_lines True to remove, false otherwise. + */ + if ( apply_filters( 'rocket_remove_empty_lines', true ) ) { + $ftmp = preg_replace( "/\n+/", "\n", $ftmp ); + } + + // Make sure the WP rules are still there. + if ( $has_wp_rules && ! rocket_has_wp_htaccess_rules( $ftmp ) ) { + return false; + } + + // Update the .htacces file. + return rocket_put_content( $htaccess_file, $ftmp ); +} + +/** + * Test if a server error is triggered by our rules + * + * @since 2.10 + * @author Remy Perona + * + * @param (string) $rules_name The rules block to test. + * + * @return (object|bool) Return true if the server does not trigger an error 500, false otherwise. + * Return a WP_Error object if the sandbox creation fails or if the HTTP request fails. + */ +function rocket_htaccess_rules_test( $rules_name ) { + /** + * Filters the request arguments + * + * @author Remy Perona + * @since 2.10 + * + * @param array $args Array of argument for the request. + */ + $request_args = apply_filters( + 'rocket_htaccess_rules_test_args', + [ + 'redirection' => 0, + 'timeout' => 5, + 'sslverify' => apply_filters( 'https_local_ssl_verify', false ), // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + 'user-agent' => 'wprocketbot', + 'cookies' => $_COOKIE, + ] + ); + + $response = wp_remote_get( site_url( WP_ROCKET_URL . 'tests/' . $rules_name . '/index.html' ), $request_args ); + + if ( is_wp_error( $response ) ) { + return $response; + } + + return 500 !== wp_remote_retrieve_response_code( $response ); +} + +/** + * Return the markers for htacces rules + * + * @since 1.0 + * + * @return string $marker Rules that will be printed + */ +function get_rocket_htaccess_marker() { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + // Recreate WP Rocket marker. + $marker = '# BEGIN WP Rocket v' . WP_ROCKET_VERSION . PHP_EOL; + + /** + * Add custom rules before rules added by WP Rocket + * + * @since 2.6 + * + * @param string $before_marker The content of all rules. + */ + $marker .= apply_filters( 'before_rocket_htaccess_rules', '' ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + + $marker .= get_rocket_htaccess_charset(); + $marker .= get_rocket_htaccess_etag(); + $marker .= get_rocket_htaccess_web_fonts_access(); + $marker .= get_rocket_htaccess_files_match(); + $marker .= get_rocket_htaccess_mod_expires(); + $marker .= get_rocket_htaccess_mod_deflate(); + + if ( \WP_Rocket\Buffer\Cache::can_generate_caching_files() && ! is_rocket_generate_caching_mobile_files() ) { + $marker .= get_rocket_htaccess_mod_rewrite(); + } + + /** + * Add custom rules after rules added by WP Rocket + * + * @since 2.6 + * + * @param string $after_marker The content of all rules. + */ + $marker .= apply_filters( 'after_rocket_htaccess_rules', '' ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + + $marker .= '# END WP Rocket' . PHP_EOL; + + /** + * Filter rules added by WP Rocket in .htaccess + * + * @since 2.1 + * + * @param string $marker The content of all rules. + */ + $marker = apply_filters( 'rocket_htaccess_marker', $marker ); + + return $marker; +} + +/** + * Rewrite rules to serve the cache file + * + * @since 1.0 + * + * @return string $rules Rules that will be printed + */ +function get_rocket_htaccess_mod_rewrite() { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + // No rewrite rules for multisite. + if ( is_multisite() ) { + return; + } + + // No rewrite rules for Korean. + if ( defined( 'WPLANG' ) && 'ko_KR' === WPLANG || 'ko_KR' === get_locale() ) { + return; + } + + // Get root base. + $home_root = rocket_extract_url_component( home_url(), PHP_URL_PATH ); + $home_root = isset( $home_root ) ? trailingslashit( $home_root ) : '/'; + + $site_root = rocket_extract_url_component( site_url(), PHP_URL_PATH ); + $site_root = isset( $site_root ) ? trailingslashit( $site_root ) : ''; + + // Get cache root. + if ( strpos( ABSPATH, WP_ROCKET_CACHE_PATH ) === false && isset( $_SERVER['DOCUMENT_ROOT'] ) ) { + $cache_root = str_replace( sanitize_text_field( wp_unslash( $_SERVER['DOCUMENT_ROOT'] ) ), '', WP_ROCKET_CACHE_PATH ); + } else { + $cache_root = $site_root . str_replace( ABSPATH, '', WP_ROCKET_CACHE_PATH ); + } + + /** + * Replace the dots by underscores to avoid some bugs on some shared hosting services on filenames (not multisite compatible!) + * + * @since 1.3.0 + * + * @param bool true will replace the . by _. + */ + $http_host = apply_filters( 'rocket_url_no_dots', false ) ? rocket_remove_url_protocol( home_url() ) : '%{HTTP_HOST}'; + + /** + * Allow the path to be fully printed or dependant od %DOCUMENT_ROOT (forced for 1&1 by default) + * + * @since 1.3.0 + * + * @param bool true will force the path to be full. + */ + $is_1and1_or_force = apply_filters( 'rocket_force_full_path', strpos( sanitize_text_field( wp_unslash( $_SERVER['DOCUMENT_ROOT'] ) ), '/kunden/' ) === 0 ); + + $rules = ''; + $gzip_rules = ''; + $enc = ''; + + if ( $is_1and1_or_force ) { + $cache_dir_path = str_replace( '/kunden/', '/', WP_ROCKET_CACHE_PATH ) . $http_host . '%{REQUEST_URI}'; + } else { + $cache_dir_path = '%{DOCUMENT_ROOT}/' . ltrim( $cache_root, '/' ) . $http_host . '%{REQUEST_URI}'; + } + + // @codingStandardsIgnoreStart + /** + * Allow to serve gzip cache file + * + * @since 2.4 + * + * @param bool true will force to serve gzip cache file. + */ + if ( function_exists( 'gzencode' ) && apply_filters( 'rocket_force_gzip_htaccess_rules', true ) ) { + $rules = '' . PHP_EOL; + $rules .= 'AddType text/html .html_gzip' . PHP_EOL; + $rules .= 'AddEncoding gzip .html_gzip' . PHP_EOL; + $rules .= '' . PHP_EOL; + $rules .= '' . PHP_EOL; + $rules .= 'SetEnvIfNoCase Request_URI \.html_gzip$ no-gzip' . PHP_EOL; + $rules .= '' . PHP_EOL . PHP_EOL; + + $gzip_rules .= 'RewriteCond %{HTTP:Accept-Encoding} gzip' . PHP_EOL; + $gzip_rules .= 'RewriteRule .* - [E=WPR_ENC:_gzip]' . PHP_EOL; + + $enc = '%{ENV:WPR_ENC}'; + } + + $rules .= '' . PHP_EOL; + $rules .= 'RewriteEngine On' . PHP_EOL; + $rules .= 'RewriteBase ' . $home_root . PHP_EOL; + $rules .= get_rocket_htaccess_ssl_rewritecond(); + $rules .= rocket_get_webp_rewritecond( $cache_dir_path ); + $rules .= $gzip_rules; + $rules .= 'RewriteCond %{REQUEST_METHOD} GET' . PHP_EOL; + $rules .= 'RewriteCond %{QUERY_STRING} =""' . PHP_EOL; + + $cookies = get_rocket_cache_reject_cookies(); + if ( $cookies ) { + $rules .= 'RewriteCond %{HTTP:Cookie} !(' . $cookies . ') [NC]' . PHP_EOL; + } + + $uri = get_rocket_cache_reject_uri(); + if ( $uri ) { + $rules .= 'RewriteCond %{REQUEST_URI} !^(' . $uri . ')$ [NC]' . PHP_EOL; + } + + $rules .= ! is_rocket_cache_mobile() ? get_rocket_htaccess_mobile_rewritecond() : ''; + + $ua = get_rocket_cache_reject_ua(); + if ( $ua ) { + $rules .= 'RewriteCond %{HTTP_USER_AGENT} !^(' . $ua . ').* [NC]' . PHP_EOL; + } + + $rules .= 'RewriteCond "' . $cache_dir_path . '/index%{ENV:WPR_SSL}%{ENV:WPR_WEBP}.html' . $enc . '" -f' . PHP_EOL; + $rules .= 'RewriteRule .* "' . $cache_root . $http_host . '%{REQUEST_URI}/index%{ENV:WPR_SSL}%{ENV:WPR_WEBP}.html' . $enc . '" [L]' . PHP_EOL; + $rules .= '' . PHP_EOL; + + /** + * Filter rewrite rules to serve the cache file + * + * @since 1.0 + * + * @param string $rules Rules that will be printed. + */ + $rules = apply_filters( 'rocket_htaccess_mod_rewrite', $rules ); + + return $rules; +} + +/** + * Rules for detect mobile version + * + * @since 1.0 + * + * @return string $rules Rules that will be printed + */ +function get_rocket_htaccess_mobile_rewritecond() { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + // No rewrite rules for multisite. + if ( is_multisite() ) { + return; + } + + $rules = 'RewriteCond %{HTTP:X-Wap-Profile} !^[a-z0-9\"]+ [NC]' . PHP_EOL; + $rules .= 'RewriteCond %{HTTP:Profile} !^[a-z0-9\"]+ [NC]' . PHP_EOL; + $rules .= 'RewriteCond %{HTTP_USER_AGENT} !^.*(2.0\ MMP|240x320|400X240|AvantGo|BlackBerry|Blazer|Cellphone|Danger|DoCoMo|Elaine/3.0|EudoraWeb|Googlebot-Mobile|hiptop|IEMobile|KYOCERA/WX310K|LG/U990|MIDP-2.|MMEF20|MOT-V|NetFront|Newt|Nintendo\ Wii|Nitro|Nokia|Opera\ Mini|Palm|PlayStation\ Portable|portalmmm|Proxinet|ProxiNet|SHARP-TQ-GX10|SHG-i900|Small|SonyEricsson|Symbian\ OS|SymbianOS|TS21i-10|UP.Browser|UP.Link|webOS|Windows\ CE|WinWAP|YahooSeeker/M1A1-R2D2|iPhone|iPod|Android|BlackBerry9530|LG-TU915\ Obigo|LGE\ VX|webOS|Nokia5800).* [NC]' . PHP_EOL; + $rules .= 'RewriteCond %{HTTP_USER_AGENT} !^(w3c\ |w3c-|acs-|alav|alca|amoi|audi|avan|benq|bird|blac|blaz|brew|cell|cldc|cmd-|dang|doco|eric|hipt|htc_|inno|ipaq|ipod|jigs|kddi|keji|leno|lg-c|lg-d|lg-g|lge-|lg/u|maui|maxo|midp|mits|mmef|mobi|mot-|moto|mwbp|nec-|newt|noki|palm|pana|pant|phil|play|port|prox|qwap|sage|sams|sany|sch-|sec-|send|seri|sgh-|shar|sie-|siem|smal|smar|sony|sph-|symb|t-mo|teli|tim-|tosh|tsm-|upg1|upsi|vk-v|voda|wap-|wapa|wapi|wapp|wapr|webc|winw|winw|xda\ |xda-).* [NC]' . PHP_EOL; + + /** + * Filter rules for detect mobile version + * + * @since 2.0 + * + * @param string $rules Rules that will be printed. + */ + $rules = apply_filters( 'rocket_htaccess_mobile_rewritecond', $rules ); + + return $rules; +} + +/** + * Rules for SSL requests + * + * @since 2.7 Added rewrite condition for `%{HTTP:X-Forwarded-Proto}`. + * @since 2.0 + * + * @return string $rules Rules that will be printed + */ +function get_rocket_htaccess_ssl_rewritecond() { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + $rules = 'RewriteCond %{HTTPS} on [OR]' . PHP_EOL; + $rules .= 'RewriteCond %{SERVER_PORT} ^443$ [OR]' . PHP_EOL; + $rules .= 'RewriteCond %{HTTP:X-Forwarded-Proto} https' . PHP_EOL; + $rules .= 'RewriteRule .* - [E=WPR_SSL:-https]' . PHP_EOL; + + /** + * Filter rules for SSL requests + * + * @since 2.0 + * + * @param string $rules Rules that will be printed. + */ + $rules = apply_filters( 'rocket_htaccess_ssl_rewritecond', $rules ); + + return $rules; +} + +/** + * Rules for webp compatible browsers. + * + * @since 3.4 + * @author Grégory Viguier + * + * @param string $cache_dir_path Path to the cache directory, without trailing slash. + * @return string Rules that will be printed. + */ +function rocket_get_webp_rewritecond( $cache_dir_path ) { + if ( ! get_rocket_option( 'cache_webp' ) ) { + return ''; + } + + $rules = 'RewriteCond %{HTTP_ACCEPT} image/webp' . PHP_EOL; + $rules .= 'RewriteCond "' . $cache_dir_path . '/.no-webp" !-f' . PHP_EOL; + $rules .= 'RewriteRule .* - [E=WPR_WEBP:-webp]' . PHP_EOL; + + /** + * Filter rules for webp. + * + * @since 3.4 + * @author Grégory Viguier + * + * @param string $rules Rules that will be printed. + */ + return apply_filters( 'rocket_webp_rewritecond', $rules ); +} + +/** + * Rules to improve performances with GZIP Compression + * + * @since 1.0 + * + * @return string $rules Rules that will be printed + */ +function get_rocket_htaccess_mod_deflate() { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + $rules = '# Gzip compression' . PHP_EOL; + $rules .= '' . PHP_EOL; + $rules .= '# Active compression' . PHP_EOL; + $rules .= 'SetOutputFilter DEFLATE' . PHP_EOL; + $rules .= '# Force deflate for mangled headers' . PHP_EOL; + $rules .= '' . PHP_EOL; + $rules .= '' . PHP_EOL; + $rules .= 'SetEnvIfNoCase ^(Accept-EncodXng|X-cept-Encoding|X{15}|~{15}|-{15})$ ^((gzip|deflate)\s*,?\s*)+|[X~-]{4,13}$ HAVE_Accept-Encoding' . PHP_EOL; + $rules .= 'RequestHeader append Accept-Encoding "gzip,deflate" env=HAVE_Accept-Encoding' . PHP_EOL; + $rules .= '# Don’t compress images and other uncompressible content' . PHP_EOL; + $rules .= 'SetEnvIfNoCase Request_URI \\' . PHP_EOL; + $rules .= '\\.(?:gif|jpe?g|png|rar|zip|exe|flv|mov|wma|mp3|avi|swf|mp?g|mp4|webm|webp|pdf)$ no-gzip dont-vary' . PHP_EOL; + $rules .= '' . PHP_EOL; + $rules .= '' . PHP_EOL . PHP_EOL; + $rules .= '# Compress all output labeled with one of the following MIME-types' . PHP_EOL; + $rules .= '' . PHP_EOL; + $rules .= 'AddOutputFilterByType DEFLATE application/atom+xml \ + application/javascript \ + application/json \ + application/rss+xml \ + application/vnd.ms-fontobject \ + application/x-font-ttf \ + application/xhtml+xml \ + application/xml \ + font/opentype \ + image/svg+xml \ + image/x-icon \ + text/css \ + text/html \ + text/plain \ + text/x-component \ + text/xml' . PHP_EOL; + $rules .= '' . PHP_EOL; + $rules .= '' . PHP_EOL; + $rules .= 'Header append Vary: Accept-Encoding' . PHP_EOL; + $rules .= '' . PHP_EOL; + $rules .= '' . PHP_EOL . PHP_EOL; + + /** + * Filter rules to improve performances with GZIP Compression + * + * @since 1.0 + * + * @param string $rules Rules that will be printed. + */ + $rules = apply_filters( 'rocket_htaccess_mod_deflate', $rules ); + + return $rules; +} + +/** + * Rules to improve performances with Expires Headers + * + * @since 1.0 + * + * @return string $rules Rules that will be printed + */ +function get_rocket_htaccess_mod_expires() { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + $rules = << + ExpiresActive on + ExpiresDefault "access plus 1 month" + # cache.appcache needs re-requests in FF 3.6 (thanks Remy ~Introducing HTML5) + ExpiresByType text/cache-manifest "access plus 0 seconds" + # Your document html + ExpiresByType text/html "access plus 0 seconds" + # Data + ExpiresByType text/xml "access plus 0 seconds" + ExpiresByType application/xml "access plus 0 seconds" + ExpiresByType application/json "access plus 0 seconds" + # Feed + ExpiresByType application/rss+xml "access plus 1 hour" + ExpiresByType application/atom+xml "access plus 1 hour" + # Favicon (cannot be renamed) + ExpiresByType image/x-icon "access plus 1 week" + # Media: images, video, audio + ExpiresByType image/gif "access plus 4 months" + ExpiresByType image/png "access plus 4 months" + ExpiresByType image/jpeg "access plus 4 months" + ExpiresByType image/webp "access plus 4 months" + ExpiresByType video/ogg "access plus 4 months" + ExpiresByType audio/ogg "access plus 4 months" + ExpiresByType video/mp4 "access plus 4 months" + ExpiresByType video/webm "access plus 4 months" + # HTC files (css3pie) + ExpiresByType text/x-component "access plus 1 month" + # Webfonts + ExpiresByType font/ttf "access plus 4 months" + ExpiresByType font/otf "access plus 4 months" + ExpiresByType font/woff "access plus 4 months" + ExpiresByType font/woff2 "access plus 4 months" + ExpiresByType image/svg+xml "access plus 1 month" + ExpiresByType application/vnd.ms-fontobject "access plus 1 month" + # CSS and JavaScript + ExpiresByType text/css "access plus 1 year" + ExpiresByType application/javascript "access plus 1 year" + + +HTACCESS; + + /** + * Filter rules to improve performances with Expires Headers + * + * @since 1.0 + * + * @param string $rules Rules that will be printed. + */ + $rules = apply_filters( 'rocket_htaccess_mod_expires', $rules ); + + return $rules; +} + +/** + * Rules for default charset on static files + * + * @since 1.0 + * + * @return string $rules Rules that will be printed + */ +function get_rocket_htaccess_charset() { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + // Get charset of the blog. + $charset = preg_replace( '/[^a-zA-Z0-9_\-\.:]+/', '', get_bloginfo( 'charset', 'display' ) ); + + $rules = "# Use $charset encoding for anything served text/plain or text/html" . PHP_EOL; + $rules .= "AddDefaultCharset $charset" . PHP_EOL; + $rules .= "# Force $charset for a number of file formats" . PHP_EOL; + $rules .= '' . PHP_EOL; + $rules .= "AddCharset $charset .atom .css .js .json .rss .vtt .xml" . PHP_EOL; + $rules .= '' . PHP_EOL . PHP_EOL; + + /** + * Filter rules for default charset on static files + * + * @since 1.0 + * + * @param string $rules Rules that will be printed. + */ + $rules = apply_filters( 'rocket_htaccess_charset', $rules ); + + return $rules; +} + +/** + * Rules for cache control + * + * @since 1.1.6 + * + * @return string $rules Rules that will be printed + */ +function get_rocket_htaccess_files_match() { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + $rules = '' . PHP_EOL; + $rules .= '' . PHP_EOL; + $rules .= '' . PHP_EOL; + $rules .= 'Header set X-Powered-By "WP Rocket/' . WP_ROCKET_VERSION . '"' . PHP_EOL; + $rules .= 'Header unset Pragma' . PHP_EOL; + $rules .= 'Header append Cache-Control "public"' . PHP_EOL; + $rules .= 'Header unset Last-Modified' . PHP_EOL; + $rules .= '' . PHP_EOL; + $rules .= '' . PHP_EOL . PHP_EOL; + $rules .= '' . PHP_EOL; + $rules .= '' . PHP_EOL; + $rules .= 'Header unset Pragma' . PHP_EOL; + $rules .= 'Header append Cache-Control "public"' . PHP_EOL; + $rules .= '' . PHP_EOL; + $rules .= '' . PHP_EOL; + $rules .= '' . PHP_EOL . PHP_EOL; + + /** + * Filter rules for cache control + * + * @since 1.1.6 + * + * @param string $rules Rules that will be printed. + */ + $rules = apply_filters( 'rocket_htaccess_files_match', $rules ); + + return $rules; +} + +/** + * Rules to remove the etag + * + * @since 1.0 + * + * @return string $rules Rules that will be printed + */ +function get_rocket_htaccess_etag() { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + $rules = '# FileETag None is not enough for every server.' . PHP_EOL; + $rules .= '' . PHP_EOL; + $rules .= 'Header unset ETag' . PHP_EOL; + $rules .= '' . PHP_EOL . PHP_EOL; + $rules .= '# Since we’re sending far-future expires, we don’t need ETags for static content.' . PHP_EOL; + $rules .= '# developer.yahoo.com/performance/rules.html#etags' . PHP_EOL; + $rules .= 'FileETag None' . PHP_EOL . PHP_EOL; + + /** + * Filter rules to remove the etag + * + * @since 1.0 + * + * @param string $rules Rules that will be printed. + */ + $rules = apply_filters( 'rocket_htaccess_etag', $rules ); + + return $rules; +} + +/** + * Rules to Cross-origin fonts sharing when CDN is used + * + * @since 2.4 + * + * @return string $rules Rules that will be printed + */ +function get_rocket_htaccess_web_fonts_access() { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + if ( ! get_rocket_option( 'cdn', false ) ) { + return; + } + + $rules = '# Send CORS headers if browsers request them; enabled by default for images.' . PHP_EOL; + $rules .= '' . PHP_EOL; + $rules .= '' . PHP_EOL; + $rules .= '# mod_headers, y u no match by Content-Type?!' . PHP_EOL; + $rules .= '' . PHP_EOL; + $rules .= 'SetEnvIf Origin ":" IS_CORS' . PHP_EOL; + $rules .= 'Header set Access-Control-Allow-Origin "*" env=IS_CORS' . PHP_EOL; + $rules .= '' . PHP_EOL; + $rules .= '' . PHP_EOL; + $rules .= '' . PHP_EOL . PHP_EOL; + + $rules .= '# Allow access to web fonts from all domains.' . PHP_EOL; + $rules .= '' . PHP_EOL; + $rules .= '' . PHP_EOL; + $rules .= 'Header set Access-Control-Allow-Origin "*"' . PHP_EOL; + $rules .= '' . PHP_EOL; + $rules .= '' . PHP_EOL . PHP_EOL; + // @codingStandardsIgnoreEnd + /** + * Filter rules to Cross-origin fonts sharing + * + * @since 1.0 + * + * @param string $rules Rules that will be printed. + */ + $rules = apply_filters( 'rocket_htaccess_web_fonts_access', $rules ); + + return $rules; +} + +/** + * Tell if WP rewrite rules are present in a given string. + * + * @since 3.2.4 + * @author Grégory Viguier + * + * @param string $content Htaccess content. + * @return bool + */ +function rocket_has_wp_htaccess_rules( $content ) { + if ( is_multisite() ) { + $has_wp_rules = strpos( $content, '# add a trailing slash to /wp-admin' ) !== false; + } else { + $has_wp_rules = strpos( $content, '# BEGIN WordPress' ) !== false; + } + + /** + * Tell if WP rewrite rules are present in a given string. + * + * @since 3.2.4 + * @author Grégory Viguier + * + * @param bool $has_wp_rules True when present. False otherwise. + * @param string $content .htaccess content. + */ + return apply_filters( 'rocket_has_wp_htaccess_rules', $has_wp_rules, $content ); +} + +/** + * Check if WP Rocket htaccess rules are already present in the file + * + * @since 3.3.5 + * @author Remy Perona + * + * @return bool + */ +function rocket_check_htaccess_rules() { + if ( ! function_exists( 'get_home_path' ) ) { + require_once ABSPATH . 'wp-admin/includes/file.php'; + } + + $htaccess_file = get_home_path() . '.htaccess'; + + if ( ! rocket_direct_filesystem()->is_readable( $htaccess_file ) ) { + return false; + } + + $htaccess = rocket_direct_filesystem()->get_contents( $htaccess_file ); + + if ( preg_match( '/\s*# BEGIN WP Rocket.*# END WP Rocket\s*?/isU', $htaccess ) ) { + return true; + } + + return false; +} diff --git a/wp-content/plugins/wp-rocket/inc/functions/i18n.php b/wp-content/plugins/wp-rocket/inc/functions/i18n.php new file mode 100644 index 0000000..2e8f599 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/functions/i18n.php @@ -0,0 +1,563 @@ +get_active_languages() as $lang ) { + // Get flag. + $flag = $sitepress->get_flag( $lang['code'] ); + + if ( $flag->from_template ) { + $wp_upload_dir = wp_upload_dir(); + $flag_url = $wp_upload_dir['baseurl'] . '/flags/' . $flag->flag; + } else { + $flag_url = ICL_PLUGIN_URL . '/res/flags/' . $flag->flag; + } + + $langlinks[] = [ + 'code' => $lang['code'], + 'current' => $lang['code'] === $sitepress->get_current_language(), + 'anchor' => $lang['display_name'], + 'flag' => '' . esc_attr( $lang['code'] ) . '', + ]; + } + + if ( isset( $_GET['lang'] ) && 'all' === $_GET['lang'] ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended + array_unshift( + $langlinks, + [ + 'code' => 'all', + 'current' => 'all' === $sitepress->get_current_language(), + 'anchor' => __( 'All languages', 'rocket' ), + 'flag' => 'all', + ] + ); + } else { + array_push( + $langlinks, + [ + 'code' => 'all', + 'current' => 'all' === $sitepress->get_current_language(), + 'anchor' => __( 'All languages', 'rocket' ), + 'flag' => 'all', + ] + ); + } + + return $langlinks; +} + +/** + * Get all langs to display in admin bar for qTranslate + * + * @since 2.7 add fork param + * @since 1.3.5 + * + * @param string $fork qTranslate fork name. + * @return array $langlinks List of active languages + */ +function get_rocket_qtranslate_langs_for_admin_bar( $fork = '' ) { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + global $q_config; + + $langlinks = []; + $currentlang = []; + + foreach ( $q_config['enabled_languages'] as $lang ) { + + $langlinks[ $lang ] = [ + 'code' => $lang, + 'anchor' => $q_config['language_name'][ $lang ], + 'flag' => '' . esc_attr( $q_config['language_name'][ $lang ] ) . '', + ]; + + } + + if ( isset( $_GET['lang'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended + $lang = sanitize_key( $_GET['lang'] ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended + + if ( 'x' === $fork ) { + if ( qtranxf_isEnabled( $lang ) ) { + $currentlang[ $lang ] = $langlinks[ $lang ]; + unset( $langlinks[ $lang ] ); + $langlinks = $currentlang + $langlinks; + } + } elseif ( qtrans_isEnabled( $lang ) ) { + $currentlang[ $lang ] = $langlinks[ $lang ]; + unset( $langlinks[ $lang ] ); + $langlinks = $currentlang + $langlinks; + } + } + + return $langlinks; +} + +/** + * Get all langs to display in admin bar for Polylang + * + * @since 2.2 + * + * @return array $langlinks List of active languages + */ +function get_rocket_polylang_langs_for_admin_bar() { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + global $polylang; + + $langlinks = []; + $currentlang = []; + $langs = []; + $img = ''; + + $pll = function_exists( 'PLL' ) ? PLL() : $polylang; + + if ( isset( $pll ) ) { + $langs = $pll->model->get_languages_list(); + + if ( ! empty( $langs ) ) { + foreach ( $langs as $lang ) { + if ( ! empty( $lang->flag ) ) { + $img = strpos( $lang->flag, 'img' ) !== false ? $lang->flag . ' ' : $lang->flag; + } + + if ( isset( $pll->curlang->slug ) && $lang->slug === $pll->curlang->slug ) { + $currentlang[ $lang->slug ] = [ + 'code' => $lang->slug, + 'anchor' => $lang->name, + 'flag' => $img, + ]; + } else { + $langlinks[ $lang->slug ] = [ + 'code' => $lang->slug, + 'anchor' => $lang->name, + 'flag' => $img, + ]; + } + } + } + } + + return $currentlang + $langlinks; +} + +/** + * Tell if a translation plugin is activated. + * + * @since 2.0 + * @since 3.2.1 Return an identifier on success instead of true. + * + * @return string|bool An identifier corresponding to the active plugin. False otherwize. + */ +function rocket_has_i18n() { + global $sitepress, $q_config, $polylang; + + if ( ! empty( $sitepress ) && is_object( $sitepress ) && method_exists( $sitepress, 'get_active_languages' ) ) { + // WPML. + return 'wpml'; + } + + if ( ! empty( $polylang ) && function_exists( 'pll_languages_list' ) ) { + $languages = pll_languages_list(); + + if ( empty( $languages ) ) { + return false; + } + + // Polylang, Polylang Pro. + return 'polylang'; + } + + if ( ! empty( $q_config ) && is_array( $q_config ) ) { + if ( function_exists( 'qtranxf_convertURL' ) ) { + // qTranslate-x. + return 'qtranslate-x'; + } + + if ( function_exists( 'qtrans_convertURL' ) ) { + // qTranslate. + return 'qtranslate'; + } + } + + return false; +} + +/** + * Get infos of all active languages. + * + * @since 2.0 + * + * @return array A list of language codes. + */ +function get_rocket_i18n_code() { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + $i18n_plugin = rocket_has_i18n(); + + if ( ! $i18n_plugin ) { + return false; + } + + if ( 'wpml' === $i18n_plugin ) { + // WPML. + return array_keys( $GLOBALS['sitepress']->get_active_languages() ); + } + + if ( 'qtranslate' === $i18n_plugin || 'qtranslate-x' === $i18n_plugin ) { + // qTranslate, qTranslate-x. + return ! empty( $GLOBALS['q_config']['enabled_languages'] ) ? $GLOBALS['q_config']['enabled_languages'] : []; + } + + if ( 'polylang' === $i18n_plugin ) { + // Polylang, Polylang Pro. + return pll_languages_list(); + } + + return false; +} + +/** + * Get all active languages host + * + * @since 2.6.8 + * + * @return array $urls List of all active languages host + */ +function get_rocket_i18n_host() { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + $langs_host = []; + $langs = get_rocket_i18n_uri(); + + if ( $langs ) { + foreach ( $langs as $lang ) { + $langs_host[] = rocket_extract_url_component( $lang, PHP_URL_HOST ); + } + } + + return $langs_host; +} + +/** + * Get all active languages URI. + * + * @since 2.0 + * + * @return array $urls List of all active languages URI. + */ +function get_rocket_i18n_uri() { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + $i18n_plugin = rocket_has_i18n(); + $urls = []; + + if ( 'wpml' === $i18n_plugin ) { + // WPML. + foreach ( get_rocket_i18n_code() as $lang ) { + $urls[] = $GLOBALS['sitepress']->language_url( $lang ); + } + } elseif ( 'qtranslate' === $i18n_plugin || 'qtranslate-x' === $i18n_plugin ) { + // qTranslate, qTranslate-x. + foreach ( get_rocket_i18n_code() as $lang ) { + if ( 'qtranslate' === $i18n_plugin ) { + $urls[] = qtrans_convertURL( home_url(), $lang, true ); + } else { + $urls[] = qtranxf_convertURL( home_url(), $lang, true ); + } + } + } elseif ( 'polylang' === $i18n_plugin ) { + // Polylang, Polylang Pro. + $pll = function_exists( 'PLL' ) ? PLL() : $GLOBALS['polylang']; + + if ( ! empty( $pll ) && is_object( $pll ) ) { + $urls = wp_list_pluck( $pll->model->get_languages_list(), 'search_url' ); + } + } + + if ( empty( $urls ) ) { + $urls[] = home_url(); + } + + return $urls; +} + +/** + * Get directories paths to preserve languages ​​when purging a domain. + * This function is required when the domains of languages (​​other than the default) are managed by subdirectories. + * By default, when you clear the cache of the french website with the domain example.com, all subdirectory like /en/ + * and /de/ are deleted. But, if you have a domain for your english and german websites with example.com/en/ and + * example.com/de/, you want to keep the /en/ and /de/ directory when the french domain is cleared. + * + * @since 3.5.5 Normalize paths + micro-optimization by passing in the cache path. + * @since 2.0 + * + * @param string $current_lang The current language code. + * @param string $cache_path Optional. WP Rocket's cache path. + * + * @return array A list of directories path to preserve. + */ +function get_rocket_i18n_to_preserve( $current_lang, $cache_path = '' ) { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + // Must not be an empty string. + if ( empty( $current_lang ) ) { + return []; + } + + // Must not be anything else but a string. + if ( ! is_string( $current_lang ) ) { + return []; + } + + $i18n_plugin = rocket_has_i18n(); + if ( ! $i18n_plugin ) { + return []; + } + + $langs = get_rocket_i18n_code(); + if ( empty( $langs ) ) { + return []; + } + + // Remove current lang to the preserve dirs. + $langs = array_diff( $langs, [ $current_lang ] ); + + if ( '' === $cache_path ) { + $cache_path = _rocket_get_wp_rocket_cache_path(); + } + + // Stock all URLs of langs to preserve. + $langs_to_preserve = []; + foreach ( $langs as $lang ) { + $parse_url = get_rocket_parse_url( get_rocket_i18n_home_url( $lang ) ); + $langs_to_preserve[] = _rocket_normalize_path( + "{$cache_path}{$parse_url['host']}(.*)/" . trim( $parse_url['path'], '/' ), + true // escape directory separators for regex. + ); + } + + /** + * Filter directories path to preserve of cache purge. + * + * @since 2.1 + * + * @param array $langs_to_preserve List of directories path to preserve. + */ + return (array) apply_filters( 'rocket_langs_to_preserve', $langs_to_preserve ); +} + +/** + * Get all languages subdomains URLs + * + * @since 2.1 + * + * @return array $urls List of languages subdomains URLs + */ +function get_rocket_i18n_subdomains() { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + $i18n_plugin = rocket_has_i18n(); + + if ( ! $i18n_plugin ) { + return []; + } + + switch ( $i18n_plugin ) { + // WPML. + case 'wpml': + $option = get_option( 'icl_sitepress_settings' ); + + if ( 2 === (int) $option['language_negotiation_type'] ) { + return get_rocket_i18n_uri(); + } + break; + // qTranslate. + case 'qtranslate': + if ( 3 === (int) $GLOBALS['q_config']['url_mode'] ) { + return get_rocket_i18n_uri(); + } + break; + // qTranslate-x. + case 'qtranslate-x': + if ( 3 === (int) $GLOBALS['q_config']['url_mode'] || 4 === (int) $GLOBALS['q_config']['url_mode'] ) { + return get_rocket_i18n_uri(); + } + break; + // Polylang, Polylang Pro. + case 'polylang': + $pll = function_exists( 'PLL' ) ? PLL() : $GLOBALS['polylang']; + + if ( ! empty( $pll ) && is_object( $pll ) && ( 2 === (int) $pll->options['force_lang'] || 3 === (int) $pll->options['force_lang'] ) ) { + return get_rocket_i18n_uri(); + } + } + + return []; +} + +/** + * Get home URL of a specific lang. + * + * @since 2.2 + * + * @param string $lang The language code. Default is an empty string. + * @return string $url + */ +function get_rocket_i18n_home_url( $lang = '' ) { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + $i18n_plugin = rocket_has_i18n(); + + if ( ! $i18n_plugin ) { + return home_url(); + } + + switch ( $i18n_plugin ) { + // WPML. + case 'wpml': + return $GLOBALS['sitepress']->language_url( $lang ); + // qTranslate. + case 'qtranslate': + return qtrans_convertURL( home_url(), $lang, true ); + // qTranslate-x. + case 'qtranslate-x': + return qtranxf_convertURL( home_url(), $lang, true ); + // Polylang, Polylang Pro. + case 'polylang': + $pll = function_exists( 'PLL' ) ? PLL() : $GLOBALS['polylang']; + + if ( ! empty( $pll->options['force_lang'] ) && isset( $pll->links ) ) { + return pll_home_url( $lang ); + } + } + + return home_url(); +} + +/** + * Get all translated path of a specific post with ID. + * + * @since 2.4 + * + * @param int $post_id Post ID. + * @param string $post_type Post Type. + * @param string $regex Regex to include at the end. + * @return array + */ +function get_rocket_i18n_translated_post_urls( $post_id, $post_type = 'page', $regex = null ) { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + $path = wp_parse_url( get_permalink( $post_id ), PHP_URL_PATH ); + + if ( empty( $path ) ) { + return []; + } + + $i18n_plugin = rocket_has_i18n(); + $urls = []; + + switch ( $i18n_plugin ) { + // WPML. + case 'wpml': + $langs = get_rocket_i18n_code(); + + if ( $langs ) { + foreach ( $langs as $lang ) { + $urls[] = wp_parse_url( get_permalink( icl_object_id( $post_id, $post_type, true, $lang ) ), PHP_URL_PATH ) . $regex; + } + } + break; + // qTranslate & qTranslate-x. + case 'qtranslate': + case 'qtranslate-x': + $langs = $GLOBALS['q_config']['enabled_languages']; + $langs = array_diff( $langs, [ $GLOBALS['q_config']['default_language'] ] ); + $urls[] = wp_parse_url( get_permalink( $post_id ), PHP_URL_PATH ) . $regex; + + if ( $langs ) { + $url = get_permalink( $post_id ); + + foreach ( $langs as $lang ) { + if ( 'qtranslate' === $i18n_plugin ) { + $urls[] = wp_parse_url( qtrans_convertURL( $url, $lang, true ), PHP_URL_PATH ) . $regex; + } elseif ( 'qtranslate-x' === $i18n_plugin ) { + $urls[] = wp_parse_url( qtranxf_convertURL( $url, $lang, true ), PHP_URL_PATH ) . $regex; + } + } + } + break; + // Polylang. + case 'polylang': + if ( function_exists( 'PLL' ) && is_object( PLL()->model ) ) { + $translations = pll_get_post_translations( $post_id ); + } elseif ( ! empty( $GLOBALS['polylang']->model ) && is_object( $GLOBALS['polylang']->model ) ) { + $translations = $GLOBALS['polylang']->model->get_translations( 'page', $post_id ); + } + + if ( ! empty( $translations ) ) { + foreach ( $translations as $post_id ) { + $urls[] = wp_parse_url( get_permalink( $post_id ), PHP_URL_PATH ) . $regex; + } + } + } + + if ( trim( $path, '/' ) !== '' ) { + $urls[] = $path . $regex; + } + + $urls = array_unique( $urls ); + + return $urls; +} + +/** + * Returns the home URL, without WPML filters if the plugin is active + * + * @since 3.2.4 + * @author Remy Perona + * + * @param string $path Path to add to the home URL. + * @return string + */ +function rocket_get_home_url( $path = '' ) { + global $wpml_url_filters; + static $home_url = []; + static $has_wpml; + + if ( isset( $home_url[ $path ] ) ) { + return $home_url[ $path ]; + } + + if ( ! isset( $has_wpml ) ) { + $has_wpml = $wpml_url_filters && is_object( $wpml_url_filters ) && method_exists( $wpml_url_filters, 'home_url_filter' ); + } + + if ( $has_wpml ) { + remove_filter( 'home_url', [ $wpml_url_filters, 'home_url_filter' ], -10 ); + } + + $home_url[ $path ] = home_url( $path ); + + if ( $has_wpml ) { + add_filter( 'home_url', [ $wpml_url_filters, 'home_url_filter' ], -10, 4 ); + } + + return $home_url[ $path ]; +} + +/** + * Gets the current language if Polylang or WPML is used + * + * @since 3.3.3 + * @author Remy Perona + * + * @return string|bool + */ +function rocket_get_current_language() { + $i18n_plugin = rocket_has_i18n(); + + if ( ! $i18n_plugin ) { + return false; + } + + if ( 'polylang' === $i18n_plugin && function_exists( 'pll_current_language' ) ) { + return pll_current_language(); + } elseif ( 'wpml' === $i18n_plugin ) { + return apply_filters( 'wpml_current_language', null ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + } + + return false; +} diff --git a/wp-content/plugins/wp-rocket/inc/functions/options.php b/wp-content/plugins/wp-rocket/inc/functions/options.php new file mode 100644 index 0000000..fc5d43c --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/functions/options.php @@ -0,0 +1,749 @@ +get( 'settings', [] ) ); + + return $options->get( $option, $default ); +} + +/** + * Update a WP Rocket option. + * + * @since 3.0 Use the new options classes + * @since 2.7 + * + * @param string $key The option name. + * @param string $value The value of the option. + * @return void + */ +function update_rocket_option( $key, $value ) { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + $options_api = new Options( 'wp_rocket_' ); + $options = new Options_Data( $options_api->get( 'settings', [] ) ); + + $options->set( $key, $value ); + $options_api->set( 'settings', $options->get_options() ); +} + +/** + * Check whether the plugin is active by checking the active_plugins list. + * + * @since 1.3.0 + * + * @source wp-admin/includes/plugin.php + * + * @param string $plugin Plugin folder/main file. + * + * @return boolean true when plugin is active; else false. + */ +function rocket_is_plugin_active( $plugin ) { + return ( + in_array( $plugin, (array) get_option( 'active_plugins', [] ), true ) + || + rocket_is_plugin_active_for_network( $plugin ) + ); +} + +/** + * Check whether the plugin is active for the entire network. + * + * @since 1.3.0 + * + * @source wp-admin/includes/plugin.php + * + * @param string $plugin Plugin folder/main file. + * + * @return bool true if multisite and plugin is active for network; else, false. + */ +function rocket_is_plugin_active_for_network( $plugin ) { + if ( ! is_multisite() ) { + return false; + } + + $plugins = get_site_option( 'active_sitewide_plugins' ); + return isset( $plugins[ $plugin ] ); +} + +/** + * Is we need to exclude some specifics options on a post. + * + * @since 2.5 + * + * @param string $option The option name (lazyload, css, js, cdn). + * @return bool True if the option is deactivated + */ +function is_rocket_post_excluded_option( $option ) { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + global $post; + + if ( ! is_object( $post ) ) { + return false; + } + + if ( is_home() ) { + $post_id = get_queried_object_id(); + } + + if ( is_singular() && isset( $post ) ) { + $post_id = $post->ID; + } + + return ( isset( $post_id ) ) ? get_post_meta( $post_id, '_rocket_exclude_' . $option, true ) : false; +} + +/** + * Check if we need to cache the mobile version of the website (if available) + * + * @since 1.0 + * + * @return bool True if option is activated + */ +function is_rocket_cache_mobile() { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + return get_rocket_option( 'cache_mobile', false ); +} + +/** + * Check if we need to generate a different caching file for mobile (if available) + * + * @since 2.7 + * + * @return bool True if option is activated and if mobile caching is enabled + */ +function is_rocket_generate_caching_mobile_files() { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + return get_rocket_option( 'cache_mobile', false ) && get_rocket_option( 'do_caching_mobile_files', false ); +} + +/** + * Get the domain names to DNS prefetch from WP Rocket options + * + * @since 2.8.9 + * @author Remy Perona + * + * return Array An array of domain names to DNS prefetch + */ +function rocket_get_dns_prefetch_domains() { + $domains = (array) get_rocket_option( 'dns_prefetch' ); + + /** + * Filter list of domains to prefetch DNS + * + * @since 1.1.0 + * + * @param array $domains List of domains to prefetch DNS + */ + return apply_filters( 'rocket_dns_prefetch', $domains ); +} + +/** + * Gets the parameters ignored during caching + * + * These parameters are ignored when checking the query string during caching to allow serving the default cache when they are present + * + * @since 3.4 + * @author Remy Perona + * + * @return array + */ +function rocket_get_ignored_parameters() { + $params = [ + 'utm_source' => 1, + 'utm_medium' => 1, + 'utm_campaign' => 1, + 'utm_expid' => 1, + 'utm_term' => 1, + 'utm_content' => 1, + 'mtm_source' => 1, + 'mtm_medium' => 1, + 'mtm_campaign' => 1, + 'mtm_keyword' => 1, + 'mtm_cid' => 1, + 'mtm_content' => 1, + 'pk_source' => 1, + 'pk_medium' => 1, + 'pk_campaign' => 1, + 'pk_keyword' => 1, + 'pk_cid' => 1, + 'pk_content' => 1, + 'fb_action_ids' => 1, + 'fb_action_types' => 1, + 'fb_source' => 1, + 'fbclid' => 1, + 'campaignid' => 1, + 'adgroupid' => 1, + 'adid' => 1, + 'gclid' => 1, + 'age-verified' => 1, + 'ao_noptimize' => 1, + 'usqp' => 1, + 'cn-reloaded' => 1, + '_ga' => 1, + 'sscid' => 1, + ]; + + /** + * Filters the ignored parameters + * + * @since 3.4 + * @author Remy Perona + * + * @param array $params An array of ignored parameters as array keys. + */ + return apply_filters( 'rocket_cache_ignored_parameters', $params ); +} + +/** + * Get all uri we don't cache. + * + * @since 3.3.2 Exclude embedded URLs + * @since 2.6 Using json_get_url_prefix() to auto-exclude the WordPress REST API. + * @since 2.4.1 Auto-exclude WordPress REST API. + * @since 2.0 + * + * @param bool $force Force the static uris to be reverted to null. + * + * @return string A pipe separated list of rejected uri. + */ +function get_rocket_cache_reject_uri( $force = false ) { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + static $uris; + global $wp_rewrite; + + if ( $force ) { + $uris = null; + } + if ( $uris ) { + return $uris; + } + + $uris = (array) get_rocket_option( 'cache_reject_uri', [] ); + $home_root = rocket_get_home_dirname(); + $home_root_escaped = preg_quote( $home_root, '/' ); // The site is not at the domain root, it's in a folder. + $home_root_len = strlen( $home_root ); + + if ( '' !== $home_root && $uris ) { + foreach ( $uris as $i => $uri ) { + /** + * Since these URIs can be regex patterns like `/homeroot(/.+)/`, we can't simply search for the string `/homeroot/` (nor `/homeroot`). + * So this pattern searchs for `/homeroot/` and `/homeroot(/`. + */ + if ( ! preg_match( '/' . $home_root_escaped . '\(?\//', $uri ) ) { + // Reject URIs located outside site's folder. + unset( $uris[ $i ] ); + continue; + } + + // Remove the home directory. + $uris[ $i ] = substr( $uri, $home_root_len ); + } + } + + // Exclude feeds. + $uris[] = '/(.+/)?' . $wp_rewrite->feed_base . '/?.+/?'; + + // Exlude embedded URLs. + $uris[] = '/(?:.+/)?embed/'; + + /** + * Filter the rejected uri + * + * @since 2.1 + * + * @param array $uris List of rejected uri + */ + $uris = apply_filters( 'rocket_cache_reject_uri', $uris ); + $uris = array_filter( $uris ); + + if ( ! $uris ) { + return ''; + } + + if ( '' !== $home_root ) { + foreach ( $uris as $i => $uri ) { + if ( preg_match( '/' . $home_root_escaped . '\(?\//', $uri ) ) { + // Remove the home directory from the new URIs. + $uris[ $i ] = substr( $uri, $home_root_len ); + } + } + } + + $uris = implode( '|', $uris ); + + if ( '' !== $home_root ) { + // Add the home directory back. + $uris = $home_root . '(' . $uris . ')'; + } + + return $uris; +} + +/** + * Get all cookie names we don't cache. + * + * @since 2.0 + * + * @return string A pipe separated list of rejected cookies. + */ +function get_rocket_cache_reject_cookies() { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + $logged_in_cookie = explode( COOKIEHASH, LOGGED_IN_COOKIE ); + $logged_in_cookie = array_map( 'preg_quote', $logged_in_cookie ); + $logged_in_cookie = implode( '.+', $logged_in_cookie ); + + $cookies = get_rocket_option( 'cache_reject_cookies', [] ); + $cookies[] = $logged_in_cookie; + $cookies[] = 'wp-postpass_'; + $cookies[] = 'wptouch_switch_toggle'; + $cookies[] = 'comment_author_'; + $cookies[] = 'comment_author_email_'; + + /** + * Filter the rejected cookies. + * + * @since 2.1 + * + * @param array $cookies List of rejected cookies. + */ + $cookies = (array) apply_filters( 'rocket_cache_reject_cookies', $cookies ); + $cookies = array_filter( $cookies ); + $cookies = array_flip( array_flip( $cookies ) ); + + return implode( '|', $cookies ); +} + +/** + * Get list of mandatory cookies to be able to cache pages. + * + * @since 2.7 + * + * @return string A pipe separated list of mandatory cookies. + */ +function get_rocket_cache_mandatory_cookies() { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + $cookies = []; + + /** + * Filter list of mandatory cookies. + * + * @since 2.7 + * + * @param array $cookies List of mandatory cookies. + */ + $cookies = (array) apply_filters( 'rocket_cache_mandatory_cookies', $cookies ); + $cookies = array_filter( $cookies ); + $cookies = array_flip( array_flip( $cookies ) ); + + return implode( '|', $cookies ); +} + +/** + * Get list of dynamic cookies. + * + * @since 2.7 + * + * @return array List of dynamic cookies. + */ +function get_rocket_cache_dynamic_cookies() { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + $cookies = []; + + /** + * Filter list of dynamic cookies. + * + * @since 2.7 + * + * @param array $cookies List of dynamic cookies. + */ + $cookies = (array) apply_filters( 'rocket_cache_dynamic_cookies', $cookies ); + $cookies = array_filter( $cookies ); + $cookies = array_unique( $cookies ); + + return $cookies; +} + +/** + * Get all User-Agent we don't allow to get cache files. + * + * @since 2.3.5 + * + * @return string A pipe separated list of rejected User-Agent. + */ +function get_rocket_cache_reject_ua() { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + $ua = get_rocket_option( 'cache_reject_ua', [] ); + $ua[] = 'facebookexternalhit'; + + /** + * Filter the rejected User-Agent + * + * @since 2.3.5 + * + * @param array $ua List of rejected User-Agent. + */ + $ua = (array) apply_filters( 'rocket_cache_reject_ua', $ua ); + $ua = array_filter( $ua ); + $ua = array_flip( array_flip( $ua ) ); + $ua = implode( '|', $ua ); + + return str_replace( [ ' ', '\\\\ ' ], '\\ ', $ua ); +} + +/** + * Get all query strings which can be cached. + * + * @since 2.3 + * + * @return array List of query strings which can be cached. + */ +function get_rocket_cache_query_string() { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + $query_strings = get_rocket_option( 'cache_query_strings', [] ); + + /** + * Filter query strings which can be cached. + * + * @since 2.3 + * + * @param array $query_strings List of query strings which can be cached. + */ + $query_strings = (array) apply_filters( 'rocket_cache_query_strings', $query_strings ); + $query_strings = array_filter( $query_strings ); + $query_strings = array_flip( array_flip( $query_strings ) ); + + return $query_strings; +} + +/** + * Get list of JS files to be excluded from defer JS. + * + * @since 2.10 + * @author Remy Perona + * + * @return array An array of URLs for the JS files to be excluded. + */ +function get_rocket_exclude_defer_js() { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + $exclude_defer_js = [ + 'gist.github.com', + 'content.jwplatform.com', + 'js.hsforms.net', + 'www.uplaunch.com', + 'google.com/recaptcha', + 'widget.reviews.co.uk', + 'verify.authorize.net/anetseal', + 'lib/admin/assets/lib/webfont/webfont.min.js', + 'app.mailerlite.com', + 'widget.reviews.io', + 'simplybook.(.*)/v2/widget/widget.js', + '/wp-includes/js/dist/i18n.min.js', + '/wp-content/plugins/wpfront-notification-bar/js/wpfront-notification-bar(.*).js', + '/wp-content/plugins/oxygen/component-framework/vendor/aos/aos.js', + 'static.mailerlite.com/data/(.*).js', + 'cdn.voxpow.com/static/libs/v1/(.*).js', + 'cdn.voxpow.com/media/trackers/js/(.*).js', + ]; + + if ( get_rocket_option( 'defer_all_js', 0 ) && get_rocket_option( 'defer_all_js_safe', 0 ) ) { + $jquery = site_url( wp_scripts()->registered['jquery-core']->src ); + $jetpack_jquery = 'c0.wp.com/c/(?:.+)/wp-includes/js/jquery/jquery.js'; + $googleapis_jquery = 'ajax.googleapis.com/ajax/libs/jquery/(?:.+)/jquery(?:\.min)?.js'; + $cdnjs_jquery = 'cdnjs.cloudflare.com/ajax/libs/jquery/(?:.+)/jquery(?:\.min)?.js'; + $code_jquery = 'code.jquery.com/jquery-.*(?:\.min|slim)?.js'; + + $exclude_defer_js[] = rocket_clean_exclude_file( $jquery ); + $exclude_defer_js[] = $jetpack_jquery; + $exclude_defer_js[] = $googleapis_jquery; + $exclude_defer_js[] = $cdnjs_jquery; + $exclude_defer_js[] = $code_jquery; + } + + /** + * Filter list of Deferred JavaScript files + * + * @since 2.10 + * @author Remy Perona + * + * @param array $exclude_defer_js An array of URLs for the JS files to be excluded. + */ + $exclude_defer_js = apply_filters( 'rocket_exclude_defer_js', $exclude_defer_js ); + + foreach ( $exclude_defer_js as $i => $exclude ) { + $exclude_defer_js[ $i ] = str_replace( '#', '\#', $exclude ); + } + + return $exclude_defer_js; +} + +/** + * Determine if the key is valid + * + * @since 2.9 use hash_equals() to compare the hash values + * @since 1.0 + * + * @return bool true if everything is ok, false otherwise + */ +function rocket_valid_key() { + $rocket_secret_key = get_rocket_option( 'secret_key' ); + if ( ! $rocket_secret_key ) { + return false; + } + + return 8 === strlen( get_rocket_option( 'consumer_key' ) ) && hash_equals( $rocket_secret_key, hash( 'crc32', get_rocket_option( 'consumer_email' ) ) ); +} + +/** + * Determine if the key is valid. + * + * @since 2.9.7 Remove arguments ($type & $data). + * @since 2.9.7 Stop to auto-check the validation each 1 & 30 days. + * @since 2.2 The function do the live check and update the option. + * + * @return bool|array + */ +function rocket_check_key() { + // Recheck the license. + $return = rocket_valid_key(); + + if ( $return ) { + rocket_delete_licence_data_file(); + + return $return; + } + + Logger::info( 'LICENSE VALIDATION PROCESS STARTED.', [ 'license validation process' ] ); + + $response = wp_remote_get( + rocket_get_constant( 'WP_ROCKET_WEB_VALID' ), + [ + 'timeout' => 30, + ] + ); + + if ( is_wp_error( $response ) ) { + Logger::error( + 'License validation failed.', + [ + 'license validation process', + 'request_error' => $response->get_error_messages(), + ] + ); + + set_transient( 'rocket_check_key_errors', $response->get_error_messages() ); + + return $return; + } + + $body = wp_remote_retrieve_body( $response ); + $json = json_decode( $body ); + + if ( null === $json ) { + if ( '' === $body ) { + Logger::error( 'License validation failed. No body available in response.', [ 'license validation process' ] ); + // Translators: %1$s = opening em tag, %2$s = closing em tag, %3$s = opening link tag, %4$s closing link tag. + $message = __( 'License validation failed. Our server could not resolve the request from your website.', 'rocket' ) . '
    ' . sprintf( __( 'Try clicking %1$sSave Changes%2$s below. If the error persists, follow %3$sthis guide%4$s.', 'rocket' ), '', '', '', '' ); + set_transient( 'rocket_check_key_errors', [ $message ] ); + + return $return; + } + + Logger::error( + 'License validation failed.', + [ + 'license validation process', + 'response_body' => $body, + ] + ); + + if ( 'NULLED' === $body ) { + // Translators: %1$s = opening link tag, %2$s = closing link tag. + $message = __( 'License validation failed. You may be using a nulled version of the plugin. Please do the following:', 'rocket' ) . '
    • ' . sprintf( __( 'Login to your WP Rocket %1$saccount%2$s', 'rocket' ), '', '' ) . '
    • ' . __( 'Download the zip file', 'rocket' ) . '
    • ' . __( 'Reinstall', 'rocket' ) . '
    ' . sprintf( __( 'If you do not have a WP Rocket account, please %1$spurchase a license%2$s.', 'rocket' ), '', '' ); + set_transient( 'rocket_check_key_errors', [ $message ] ); + + return $return; + } + + if ( 'BAD_USER' === $body ) { + // Translators: %1$s = opening link tag, %2$s = closing link tag. + $message = __( 'License validation failed. This user account does not exist in our database.', 'rocket' ) . '
    ' . sprintf( __( 'To resolve, please contact support.', 'rocket' ), '', '' ); + set_transient( 'rocket_check_key_errors', [ $message ] ); + + return $return; + } + + if ( 'USER_BLOCKED' === $body ) { + // Translators: %1$s = opening link tag, %2$s = closing link tag. + $message = __( 'License validation failed. This user account is blocked.', 'rocket' ) . '
    ' . sprintf( __( 'Please see %1$sthis guide%2$s for more info.', 'rocket' ), '', '' ); + set_transient( 'rocket_check_key_errors', [ $message ] ); + + return $return; + } + + // Translators: %1$s = opening em tag, %2$s = closing em tag, %3$s = opening link tag, %4$s closing link tag. + $message = __( 'License validation failed. Our server could not resolve the request from your website.', 'rocket' ) . '
    ' . sprintf( __( 'Try clicking %1$sSave Changes%2$s below. If the error persists, follow %3$sthis guide%4$s.', 'rocket' ), '', '', '', '' ); + set_transient( 'rocket_check_key_errors', [ $message ] ); + + return $return; + } + + $rocket_options = []; + $rocket_options['consumer_key'] = $json->data->consumer_key; + $rocket_options['consumer_email'] = $json->data->consumer_email; + + if ( ! $json->success ) { + $messages = [ + // Translators: %1$s = opening link tag, %2$s = closing link tag. + 'BAD_LICENSE' => __( 'Your license is not valid.', 'rocket' ) . '
    ' . sprintf( __( 'Make sure you have an active %1$sWP Rocket license%2$s.', 'rocket' ), '', '' ), + // Translators: %1$s = opening link tag, %2$s = closing link tag, %3$s = opening link tag. + 'BAD_NUMBER' => __( 'You have added as many sites as your current license allows.', 'rocket' ) . '
    ' . sprintf( __( 'Upgrade your %1$saccount%2$s or %3$stransfer your license%2$s to this domain.', 'rocket' ), '', '', '' ), + // Translators: %1$s = opening link tag, %2$s = closing link tag. + 'BAD_SITE' => __( 'This website is not allowed.', 'rocket' ) . '
    ' . sprintf( __( 'Please %1$scontact support%2$s.', 'rocket' ), '
    ', '' ), + // Translators: %1$s = opening link tag, %2$s = closing link tag. + 'BAD_KEY' => __( 'This license key is not recognized.', 'rocket' ) . '
    • ' . sprintf( __( 'Login to your WP Rocket %1$saccount%2$s', 'rocket' ), '', '' ) . '
    • ' . __( 'Download the zip file', 'rocket' ) . '
    • ' . __( 'Reinstall', 'rocket' ) . '
    ' . sprintf( __( 'If the issue persists, please %1$scontact support%2$s.', 'rocket' ), '', '' ), + ]; + + $rocket_options['secret_key'] = ''; + + // Translators: %s = error message returned. + set_transient( 'rocket_check_key_errors', [ sprintf( __( 'License validation failed: %s', 'rocket' ), $messages[ $json->data->reason ] ) ] ); + + Logger::error( + 'License validation failed.', + [ + 'license validation process', + 'response_error' => $json->data->reason, + ] + ); + + set_transient( rocket_get_constant( 'WP_ROCKET_SLUG' ), $rocket_options ); + return $rocket_options; + } + + $rocket_options['secret_key'] = $json->data->secret_key; + + if ( ! get_rocket_option( 'license' ) ) { + $rocket_options['license'] = '1'; + } + + Logger::info( 'License validation successful.', [ 'license validation process' ] ); + + set_transient( rocket_get_constant( 'WP_ROCKET_SLUG' ), $rocket_options ); + delete_transient( 'rocket_check_key_errors' ); + rocket_delete_licence_data_file(); + + return $rocket_options; +} + +/** + * Deletes the licence-data.php file if it exists + * + * @since 3.5 + * @author Remy Perona + * + * @return void + */ +function rocket_delete_licence_data_file() { + if ( is_multisite() ) { + return; + } + + $rocket_path = rocket_get_constant( 'WP_ROCKET_PATH' ); + + if ( ! rocket_direct_filesystem()->exists( $rocket_path . 'licence-data.php' ) ) { + return; + } + + rocket_direct_filesystem()->delete( $rocket_path . 'licence-data.php' ); +} + +/** + * Is WP a MultiSite and a subfolder install? + * + * @since 3.1.1 + * @author Grégory Viguier + * + * @return bool + */ +function rocket_is_subfolder_install() { + global $wpdb; + static $subfolder_install; + + if ( isset( $subfolder_install ) ) { + return $subfolder_install; + } + + if ( is_multisite() ) { + $subfolder_install = ! is_subdomain_install(); + } elseif ( ! is_null( $wpdb->sitemeta ) ) { + $subfolder_install = ! $wpdb->get_var( "SELECT meta_value FROM $wpdb->sitemeta WHERE site_id = 1 AND meta_key = 'subdomain_install'" ); // phpcs:ignore WordPress.DB.DirectDatabaseQuery + } else { + $subfolder_install = false; + } + + return $subfolder_install; +} + +/** + * Get the name of the "home directory", in case the home URL is not at the domain's root. + * It can be seen like the `RewriteBase` from the .htaccess file, but without the trailing slash. + * + * @since 3.1.1 + * @author Grégory Viguier + * + * @return string + */ +function rocket_get_home_dirname() { + static $home_root; + + if ( isset( $home_root ) ) { + return $home_root; + } + + $home_root = wp_parse_url( rocket_get_main_home_url() ); + + if ( ! empty( $home_root['path'] ) ) { + $home_root = '/' . trim( $home_root['path'], '/' ); + $home_root = rtrim( $home_root, '/' ); + } else { + $home_root = ''; + } + + return $home_root; +} + +/** + * Get the URL of the site's root. It corresponds to the main site's home page URL. + * + * @since 3.1.1 + * @author Grégory Viguier + * + * @return string + */ +function rocket_get_main_home_url() { + static $root_url; + + if ( isset( $root_url ) ) { + return $root_url; + } + + if ( ! is_multisite() || is_main_site() ) { + $root_url = rocket_get_home_url( '/' ); + return $root_url; + } + + $current_network = get_network(); + + if ( $current_network ) { + $root_url = set_url_scheme( 'https://' . $current_network->domain . $current_network->path ); + $root_url = trailingslashit( $root_url ); + } else { + $root_url = rocket_get_home_url( '/' ); + } + + return $root_url; +} diff --git a/wp-content/plugins/wp-rocket/inc/functions/posts.php b/wp-content/plugins/wp-rocket/inc/functions/posts.php new file mode 100644 index 0000000..826a087 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/functions/posts.php @@ -0,0 +1,73 @@ +post_type ); + + $original_status = $post->post_status; + $original_date = $post->post_date; + $original_name = $post->post_name; + + // Hack: get_permalink() would return ugly permalink for drafts, so we will fake that our post is published. + if ( in_array( $post->post_status, [ 'draft', 'pending' ], true ) ) { + $post->post_status = 'publish'; + $post->post_name = sanitize_title( $post->post_name ? $post->post_name : $post->post_title, $post->ID ); + } + + // If the user wants to set a new name -- override the current one. + // Note: if empty name is supplied -- use the title instead, see #6072. + if ( ! is_null( $name ) ) { + $post->post_name = sanitize_title( $name ? $name : $title, $post->ID ); + } + + $post->post_name = wp_unique_post_slug( $post->post_name, $post->ID, $post->post_status, $post->post_type, $post->post_parent ); + + $post->filter = 'sample'; + + $permalink = get_permalink( $post, false ); + + // Replace custom post_type Token with generic pagename token for ease of use. + $permalink = str_replace( "%$post->post_type%", '%pagename%', $permalink ); + + // Handle page hierarchy. + if ( $ptype->hierarchical ) { + $uri = get_page_uri( $post ); + $uri = untrailingslashit( $uri ); + $uri = strrev( stristr( strrev( $uri ), '/' ) ); + $uri = untrailingslashit( $uri ); + + /** This filter is documented in wp-admin/edit-tag-form.php */ + $uri = apply_filters( 'editable_slug', $uri, $post ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + if ( ! empty( $uri ) ) { + $uri .= '/'; + } + $permalink = str_replace( '%pagename%', "{$uri}%pagename%", $permalink ); + } + + /** This filter is documented in wp-admin/edit-tag-form.php */ + $permalink = [ $permalink, apply_filters( 'editable_slug', $post->post_name, $post ) ]; // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals + $post->post_status = $original_status; + $post->post_date = $original_date; + $post->post_name = $original_name; + unset( $post->filter ); + + return $permalink; +} diff --git a/wp-content/plugins/wp-rocket/inc/main.php b/wp-content/plugins/wp-rocket/inc/main.php new file mode 100644 index 0000000..8767196 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/main.php @@ -0,0 +1,110 @@ +load(); + + // Call defines and functions. + require_once WP_ROCKET_FUNCTIONS_PATH . 'api.php'; + require WP_ROCKET_FUNCTIONS_PATH . 'posts.php'; + require WP_ROCKET_FUNCTIONS_PATH . 'admin.php'; + require WP_ROCKET_INC_PATH . '/API/preload.php'; + require WP_ROCKET_INC_PATH . '/API/bypass.php'; + require WP_ROCKET_FUNCTIONS_PATH . 'formatting.php'; + require WP_ROCKET_FUNCTIONS_PATH . 'i18n.php'; + require WP_ROCKET_FUNCTIONS_PATH . 'htaccess.php'; + require WP_ROCKET_DEPRECATED_PATH . 'deprecated.php'; + require WP_ROCKET_DEPRECATED_PATH . '3.2.php'; + require WP_ROCKET_DEPRECATED_PATH . '3.3.php'; + require WP_ROCKET_DEPRECATED_PATH . '3.4.php'; + require WP_ROCKET_DEPRECATED_PATH . '3.5.php'; + require WP_ROCKET_DEPRECATED_PATH . '3.6.php'; + require WP_ROCKET_DEPRECATED_PATH . '3.7.php'; + require WP_ROCKET_3RD_PARTY_PATH . '3rd-party.php'; + require WP_ROCKET_COMMON_PATH . 'admin-bar.php'; + + if ( rocket_valid_key() ) { + require WP_ROCKET_COMMON_PATH . 'purge.php'; + + if ( is_multisite() && defined( 'SUNRISE' ) && SUNRISE === 'on' && function_exists( 'domain_mapping_siteurl' ) ) { + require WP_ROCKET_INC_PATH . '/domain-mapping.php'; + } + } + + if ( is_admin() ) { + require WP_ROCKET_ADMIN_PATH . 'upgrader.php'; + require WP_ROCKET_ADMIN_PATH . 'options.php'; + require WP_ROCKET_ADMIN_PATH . 'admin.php'; + require WP_ROCKET_ADMIN_UI_PATH . 'enqueue.php'; + require WP_ROCKET_ADMIN_UI_PATH . 'notices.php'; + require WP_ROCKET_ADMIN_UI_PATH . 'meta-boxes.php'; + } elseif ( rocket_valid_key() ) { + require WP_ROCKET_FRONT_PATH . 'cookie.php'; + require WP_ROCKET_FRONT_PATH . 'images.php'; + require WP_ROCKET_FRONT_PATH . 'dns-prefetch.php'; + + if ( get_rocket_option( 'defer_all_js' ) ) { + require WP_ROCKET_FRONT_PATH . 'deferred-js.php'; + } + + require WP_ROCKET_FRONT_PATH . 'protocol.php'; + } + + // You can hook this to trigger any action when WP Rocket is correctly loaded, so, not in AUTOSAVE mode. + if ( rocket_valid_key() ) { + /** + * Fires when WP Rocket is correctly loaded + * + * @since 1.0 + */ + do_action( 'wp_rocket_loaded' ); + } +} +add_action( 'plugins_loaded', 'rocket_init' ); + +register_deactivation_hook( WP_ROCKET_FILE, [ 'WP_Rocket\Engine\Deactivation\Deactivation', 'deactivate_plugin' ] ); +register_activation_hook( WP_ROCKET_FILE, [ 'WP_Rocket\Engine\Activation\Activation', 'activate_plugin' ] ); + diff --git a/wp-content/plugins/wp-rocket/inc/vendors/classes/class-imagify-partner.php b/wp-content/plugins/wp-rocket/inc/vendors/classes/class-imagify-partner.php new file mode 100644 index 0000000..5606ddb --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/vendors/classes/class-imagify-partner.php @@ -0,0 +1,877 @@ +partner = self::sanitize_partner( $partner ); + } + + /** + * Class init. + * + * @since 1.0 + * @access public + * @author Grégory Viguier + */ + public function init() { + if ( ! $this->get_partner() ) { + return; + } + + if ( ! is_admin() ) { + return; + } + + if ( ! self::has_imagify_api_key() ) { + add_action( 'wp_ajax_' . $this->get_post_action(), array( $this, 'post_callback' ) ); + add_action( 'admin_post_' . $this->get_post_action(), array( $this, 'post_callback' ) ); + } + + if ( self::is_success() || self::is_error() ) { + add_action( 'all_admin_notices', array( __CLASS__, 'error_notice' ) ); + add_filter( 'removable_query_args', array( __CLASS__, 'add_query_args' ) ); + } + } + + + /** ----------------------------------------------------------------------------------------- */ + /** MAIN PUBLIC TOOLS ======================================================================= */ + /** ----------------------------------------------------------------------------------------- */ + + /** + * Tell if Imagify's API key is set. + * + * @since 1.0 + * @access public + * @author Grégory Viguier + * + * @return bool + */ + public static function has_imagify_api_key() { + static $has; + + if ( isset( $has ) ) { + return $has; + } + + if ( function_exists( 'get_imagify_option' ) ) { + // Imagify is already installed and activated. + $has = (bool) get_imagify_option( 'api_key' ); + return $has; + } + + if ( defined( 'IMAGIFY_API_KEY' ) && IMAGIFY_API_KEY ) { + // It's defined in wp-config.php. + $has = true; + return $has; + } + + if ( ! is_multisite() ) { + // Monosite: grab the value from the options table. + $options = get_option( 'imagify_settings' ); + $has = ! empty( $options['api_key'] ); + return $has; + } + + $options = get_site_option( 'imagify_settings' ); + + if ( ! empty( $options['api_key'] ) ) { + // Multisite: Imagify was activated in the network. + $has = true; + return $has; + } + + // Multisite: Imagify was activated for this site. + $options = get_option( 'imagify_settings' ); + $has = ! empty( $options['api_key'] ); + return $has; + } + + /** + * Tell if Imagify is activated. + * + * @since 1.0 + * @access public + * @author Grégory Viguier + * + * @return bool + */ + public static function is_imagify_activated() { + return defined( 'IMAGIFY_VERSION' ); + } + + /** + * Tell if Imagify is installed. + * + * @since 1.0 + * @access public + * @author Grégory Viguier + * + * @return bool + */ + public static function is_imagify_installed() { + if ( self::is_imagify_activated() ) { + return true; + } + + return file_exists( self::get_imagify_path() ); + } + + /** + * Tell if Imagify has been successfully installed. + * + * @since 1.0 + * @access public + * @author Grégory Viguier + * + * @return bool + */ + public static function is_success() { + return ! empty( $_GET[ self::SUCCESS_ARG ] ); // WPCS: CSRF ok. + } + + /** + * Tell if Imagify install failed. + * + * @since 1.0 + * @access public + * @author Grégory Viguier + * + * @return bool + */ + public static function is_error() { + return ! empty( $_GET[ self::ERROR_ARG ] ); // WPCS: CSRF ok. + } + + /** + * Get the URL to install and activate Imagify. + * + * @since 1.0 + * @access public + * @author Grégory Viguier + * + * @return string The URL. + */ + public function get_post_install_url() { + if ( ! $this->get_partner() || ! self::current_user_can() ) { + return ''; + } + + $install_url = admin_url( 'admin-post.php' ); + $args = array( + 'action' => $this->get_post_action(), + '_wpnonce' => wp_create_nonce( self::NONCE_NAME ), + // To make sure we have a referrer. + '_wp_http_referer' => rawurlencode( self::get_current_url() ), + ); + + return add_query_arg( $args, $install_url ); + } + + /** + * Get the partner identifier. + * + * @since 1.0 + * @access public + * @author Grégory Viguier + * + * @return string Partner identifier. + */ + public function get_partner() { + return $this->partner; + } + + + /** ----------------------------------------------------------------------------------------- */ + /** HOOKS =================================================================================== */ + /** ----------------------------------------------------------------------------------------- */ + + /** + * Post callback to install and activate Imagify. + * + * @since 1.0 + * @access public + * @author Grégory Viguier + */ + public function post_callback() { + if ( ! check_ajax_referer( self::NONCE_NAME, '_wpnonce', false ) ) { + $this->error_die(); + } + + if ( ! self::current_user_can() ) { + $this->error_die( 'cant_install' ); + } + + /** + * Store the partner ID before doing anything. + * If something goes wrong during the plugin installation, the partner ID will still be saved. + */ + self::store_partner( $this->get_partner() ); + + // Install Imagify. + $result = $this->install_imagify(); + + if ( is_wp_error( $result ) ) { + // Install failed. + if ( self::doing_ajax() ) { + $this->send_json_error( $result ); + } + // Redirect to the plugins search page. + $this->error_redirect( $result ); + } + + // Activate Imagify. + $result = $this->activate_imagify(); + + if ( is_wp_error( $result ) ) { + // Activation failed. + if ( self::doing_ajax() ) { + $this->send_json_error( $result ); + } + // Redirect to the plugins search page. + $this->error_redirect( $result ); + } + + if ( self::doing_ajax() ) { + $this->send_json_success(); + } + // Redirect to the partner's page. + $this->success_redirect(); + } + + /** + * Maybe print an error notice on the plugins install page. + * We add the query argument we use to display an error message. + * + * @since 1.0 + * @access public + * @author Grégory Viguier + */ + public static function error_notice() { + if ( ! self::is_error() ) { + // No URL argument. + return; + } + + $screen = get_current_screen(); + + if ( ! $screen || 'plugin-install' !== $screen->id ) { + // Not the good page. + return; + } + + $partner = self::get_stored_partner(); + + if ( ! $partner ) { + // No partner stored in the database. + return; + } + + $errors = get_transient( self::ERROR_TRANSIENT_NAME ); + + if ( ! $errors ) { + // No error messages. + return; + } + + if ( ! is_wp_error( $errors ) ) { + // Invalid value. + delete_transient( self::ERROR_TRANSIENT_NAME ); + return; + } + + $errors = $errors->get_error_messages(); + + if ( $errors ) { + foreach ( $errors as $i => $error ) { + if ( self::FALLBACK_MESSAGE === $error ) { + unset( $errors[ $i ] ); + } + } + } + + if ( ! $errors ) { + // Add a generic message. + $instance = new self( $partner ); + $errors[] = $instance->get_message( 'process_failed' ); + } + + echo '

    ' . implode( '
    ', $errors ) . '

    '; + } + + /** + * Filter the list of query variables to remove from admin area URLs. + * We add the query arguments we use on success or error. + * + * @since 1.0 + * @access public + * @see wp_removable_query_args() + * @author Grégory Viguier + * + * @param array $removable_query_args An array of query variables to remove from a URL. + * @return array + */ + public static function add_query_args( $removable_query_args ) { + $removable_query_args[] = self::SUCCESS_ARG; + $removable_query_args[] = self::ERROR_ARG; + return $removable_query_args; + } + + + /** ----------------------------------------------------------------------------------------- */ + /** INFOS, INSTALL, ACTIVATE ================================================================ */ + /** ----------------------------------------------------------------------------------------- */ + + /** + * Get Imagify infos from the repository. + * + * @since 1.0 + * @access protected + * @author Grégory Viguier + * + * @return object The plugin infos on success. A WP_Error object on failure. + */ + protected function get_imagify_infos() { + static $infos; + + if ( isset( $infos ) ) { + return $infos; + } + + require_once ABSPATH . 'wp-admin/includes/plugin-install.php'; + + // Get Plugin Infos. + $infos = plugins_api( 'plugin_information', array( + 'slug' => 'imagify', + 'fields' => array( + 'short_description' => false, + 'sections' => false, + 'rating' => false, + 'ratings' => false, + 'downloaded' => false, + 'last_updated' => false, + 'added' => false, + 'tags' => false, + 'homepage' => false, + 'donate_link' => false, + ), + ) ); + + return $infos; + } + + /** + * Get the URL to download Imagify. + * + * @since 1.0 + * @access protected + * @author Grégory Viguier + * + * @return string The URL. An empty string on error. + */ + protected function get_download_url() { + $infos = $this->get_imagify_infos(); + return ! empty( $infos->download_link ) ? $infos->download_link : ''; + } + + /** + * Install Imagify. + * + * @since 1.0 + * @access protected + * @author Grégory Viguier + * + * @return object|null A WP_Object on failure, null on success. + */ + protected function install_imagify() { + if ( self::is_imagify_installed() ) { + // Imagify is already installed. + return null; + } + + $infos = $this->get_imagify_infos(); + + if ( is_wp_error( $infos ) ) { + return $infos; + } + + ob_start(); + @set_time_limit( 0 ); + + require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'; + + $upgrader = new Plugin_Upgrader( new Automatic_Upgrader_Skin() ); + $result = $upgrader->install( $this->get_download_url() ); + + ob_end_clean(); + + if ( is_wp_error( $result ) ) { + return $result; + } + + clearstatcache(); + + if ( ! self::is_imagify_installed() ) { + return new WP_Error( 'process_failed', $this->get_message( 'process_failed' ) ); + } + + return null; + } + + /** + * Activate Imagify. + * + * @since 1.0 + * @access protected + * @author Grégory Viguier + * + * @return object|null A WP_Object on failure, null on success. + */ + protected function activate_imagify() { + return activate_plugin( self::get_imagify_path(), false, is_multisite() ); + } + + /** + * Get a message used by the class. + * + * @since 1.0 + * @access protected + * @author Grégory Viguier + * + * @param string $message_id A message ID. + * @return string A message. + */ + protected function get_message( $message_id ) { + $messages = array( + 'success' => __( 'Plugin installed successfully.' ), + 'cant_install' => __( 'Sorry, you are not allowed to install plugins on this site.' ), + 'not_allowed' => __( 'Sorry, you are not allowed to do that.' ), + 'process_failed' => __( 'Plugin install failed.' ), + 'go_back' => __( 'Go back' ), + ); + + /** + * Filter messages used everywhere in the class. + * Default messages are already translated by WordPress. + * + * @since 1.0 + * @author Grégory Viguier + * + * @param array $messages Messages. + */ + $messages = apply_filters( 'imagify_partner_messages_' . $this->get_partner(), $messages ); + + return ! empty( $messages[ $message_id ] ) ? $messages[ $message_id ] : self::FALLBACK_MESSAGE; + } + + + /** ----------------------------------------------------------------------------------------- */ + /** HANDLE SUCCESS ========================================================================== */ + /** ----------------------------------------------------------------------------------------- */ + + /** + * Send a JSON response back to an Ajax request, indicating success. + * + * @since 1.0 + * @access protected + * @author Grégory Viguier + */ + protected function send_json_success() { + delete_transient( self::ERROR_TRANSIENT_NAME ); + + wp_send_json_success( $this->get_message( 'success' ) ); + } + + /** + * Redirect the user after Imagify is successfully installed and activated. + * + * @since 1.0 + * @access protected + * @author Grégory Viguier + */ + protected function success_redirect() { + delete_transient( self::ERROR_TRANSIENT_NAME ); + + wp_safe_redirect( esc_url_raw( $this->get_success_redirection_url() ) ); + die(); + } + + /** + * Get the URL to redirect the user to after Imagify is successfully installed and activated: the referrer (partner's page URL). + * A "success" argument is added. + * + * @since 1.0 + * @access public + * @author Grégory Viguier + * + * @return string + */ + public function get_success_redirection_url() { + $success_url = add_query_arg( array( + self::SUCCESS_ARG => 1, + self::ERROR_ARG => false, + ), wp_get_referer() ); + + /** + * Filter the URL to redirect the user to after Imagify is successfully installed and activated. + * Default is the partner's page URL. + * + * @since 1.0 + * @author Grégory Viguier + * + * @param string $success_url The URL. + */ + return apply_filters( 'imagify_partner_success_url_' . $this->get_partner(), $success_url ); + } + + + /** ----------------------------------------------------------------------------------------- */ + /** HANDLE ERROR ============================================================================ */ + /** ----------------------------------------------------------------------------------------- */ + + /** + * Die on error. + * + * @since 1.0 + * @access protected + * @author Grégory Viguier + * + * @param string $message_id An error message ID. + */ + protected function error_die( $message_id = 'not_allowed' ) { + $message = $this->get_message( $message_id ); + + if ( self::doing_ajax() ) { + $message = new WP_Error( $message_id, $message ); + $this->send_json_error( $message ); + } + + if ( wp_get_referer() ) { + $message .= '

    '; + $message .= sprintf( '%s', + esc_url( remove_query_arg( 'updated', wp_get_referer() ) ), + $this->get_message( 'go_back' ) + ); + } + + wp_die( $message, '', 403 ); + } + + /** + * Send a JSON response back to an Ajax request, indicating failure. + * This is a backward compatible version of wp_send_json_error(): WP_Error object handling was introduced in WP 4.1. + * + * @since 1.0 + * @access protected + * @author Grégory Viguier + * + * @param mixed $data Data to encode as JSON, then print and die. + */ + protected function send_json_error( $data ) { + if ( is_wp_error( $data ) ) { + $result = array(); + foreach ( $data->errors as $code => $messages ) { + foreach ( $messages as $message ) { + $result[] = array( + 'code' => $code, + 'message' => $message, + ); + } + } + } else { + $result = $data; + } + + wp_send_json_error( $result ); + } + + /** + * Store an error message in a transient then redirect the user. + * + * @since 1.0 + * @access protected + * @author Grégory Viguier + * + * @param object $error A WP_Error object. + */ + protected function error_redirect( $error ) { + set_transient( self::ERROR_TRANSIENT_NAME, $error, 30 ); + + wp_safe_redirect( esc_url_raw( $this->get_error_redirection_url() ) ); + die(); + } + + /** + * Get the URL to redirect the user to after Imagify installation failure: the plugins search page URL, searching for Imagify. + * An "error" argument is added, to display an error notice. + * + * @since 1.0 + * @access public + * @author Grégory Viguier + * + * @return string + */ + public function get_error_redirection_url() { + $error_url = 'plugin-install.php?s=imagify&tab=search&type=term&' . self::ERROR_ARG . '=1'; + $error_url = is_multisite() ? network_admin_url( $error_url ) : admin_url( $error_url ); + + /** + * Filter the URL to redirect the user to after Imagify installation failure. + * Default is the plugins search page URL. + * + * @since 1.0 + * @author Grégory Viguier + * + * @param string $error_url The URL. + */ + return apply_filters( 'imagify_partner_error_url_' . $this->get_partner(), $error_url ); + } + + + /** ----------------------------------------------------------------------------------------- */ + /** STORING THE PARTNER ID IN DATABASE ====================================================== */ + /** ----------------------------------------------------------------------------------------- */ + + /** + * Get the partner identifier stored in the Database. + * + * @since 1.0 + * @access public + * @author Grégory Viguier + * + * @return string|bool The partner identifier, or false if none is stored. + */ + public static function get_stored_partner() { + $partner = get_option( self::OPTION_NAME ); + + if ( $partner && is_string( $partner ) ) { + $partner = self::sanitize_partner( $partner ); + } + + return $partner ? $partner : false; + } + + /** + * Delete the partner identifier stored in the Database. + * + * @since 1.0 + * @access public + * @author Grégory Viguier + */ + public static function delete_stored_partner() { + if ( false !== get_option( self::OPTION_NAME ) ) { + delete_option( self::OPTION_NAME ); + } + } + + /** + * Store the partner identifier in Database. + * + * @since 1.0 + * @access protected + * @author Grégory Viguier + * + * @param string $partner The partner identifier to store. + */ + protected static function store_partner( $partner ) { + if ( false === get_option( self::OPTION_NAME ) ) { + add_option( self::OPTION_NAME, $partner ); + } else { + update_option( self::OPTION_NAME, $partner ); + } + } + + /** + * Sanitize a partner ID. + * + * @since 1.0 + * @access protected + * @author Grégory Viguier + * + * @param string $partner Partner identifier. + * @return string + */ + protected static function sanitize_partner( $partner ) { + return preg_replace( '@[^a-z0-9_-]@', '', strtolower( (string) $partner ) ); + } + + + /** ----------------------------------------------------------------------------------------- */ + /** VARIOUS TOOLS =========================================================================== */ + /** ----------------------------------------------------------------------------------------- */ + + /** + * Get the action. + * + * @since 1.0 + * @access public + * @author Grégory Viguier + * + * @return string Partner identifier. + */ + public function get_post_action() { + return 'install_imagify_from_partner_' . $this->get_partner(); + } + + /** + * Determines whether the current request is a WordPress Ajax request. + * This is a clone of wp_doing_ajax(), intriduced in WP 4.7. + * + * @since 1.0 + * @access public + * @author Grégory Viguier + * + * @return bool True if it's a WordPress Ajax request, false otherwise. + */ + public static function doing_ajax() { + /** + * Filters whether the current request is a WordPress Ajax request. + * + * @since 1.0 + * + * @param bool $wp_doing_ajax Whether the current request is a WordPress Ajax request. + */ + return apply_filters( 'wp_doing_ajax', defined( 'DOING_AJAX' ) && DOING_AJAX ); + } + + /** + * Get Imagify's file path. + * + * @since 1.0 + * @access public + * @author Grégory Viguier + * + * @return string The file path. + */ + public static function get_imagify_path() { + if ( defined( 'IMAGIFY_FILE' ) ) { + return IMAGIFY_FILE; + } + + return WP_PLUGIN_DIR . '/imagify/imagify.php'; + } + + /** + * Tell if the current user can install and activate Imagify. + * + * @since 1.0 + * @access public + * @author Grégory Viguier + * + * @return bool + */ + public static function current_user_can() { + static $can; + + if ( ! isset( $can ) ) { + $can = is_multisite() ? 'manage_network_plugins' : 'install_plugins'; + $can = current_user_can( $can ); + } + + return $can; + } + + /** + * Get the current URL. + * + * @since 1.0 + * @access public + * @author Grégory Viguier + * + * @return string + */ + public static function get_current_url() { + $port = (int) $_SERVER['SERVER_PORT']; + $port = 80 !== $port && 443 !== $port ? ( ':' . $port ) : ''; + $url = ! empty( $GLOBALS['HTTP_SERVER_VARS']['REQUEST_URI'] ) ? $GLOBALS['HTTP_SERVER_VARS']['REQUEST_URI'] : ( ! empty( $_SERVER['REQUEST_URI'] ) ? $_SERVER['REQUEST_URI'] : '' ); + + return 'http' . ( is_ssl() ? 's' : '' ) . '://' . $_SERVER['HTTP_HOST'] . $port . $url; + } + } + +endif; diff --git a/wp-content/plugins/wp-rocket/inc/vendors/classes/class-minify-css-urirewriter.php b/wp-content/plugins/wp-rocket/inc/vendors/classes/class-minify-css-urirewriter.php new file mode 100644 index 0000000..c1276f7 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/vendors/classes/class-minify-css-urirewriter.php @@ -0,0 +1,358 @@ + + */ +class Minify_CSS_UriRewriter { + + /** + * rewrite() and rewriteRelative() append debugging information here + * + * @var string + */ + public static $debugText = ''; + + /** + * In CSS content, rewrite file relative URIs as root relative + * + * @param string $css + * + * @param string $currentDir The directory of the current CSS file. + * + * @param string $docRoot The document root of the web site in which + * the CSS file resides (default = $_SERVER['DOCUMENT_ROOT']). + * + * @param array $symlinks (default = array()) If the CSS file is stored in + * a symlink-ed directory, provide an array of link paths to + * target paths, where the link paths are within the document root. Because + * paths need to be normalized for this to work, use "//" to substitute + * the doc root in the link paths (the array keys). E.g.: + * + * array('//symlink' => '/real/target/path') // unix + * array('//static' => 'D:\\staticStorage') // Windows + * + * + * @return string + */ + public static function rewrite($css, $currentDir, $docRoot = null, $symlinks = array()) + { + self::$_docRoot = self::_realpath( + $docRoot ? $docRoot : $_SERVER['DOCUMENT_ROOT'] + ); + self::$_currentDir = self::_realpath($currentDir); + self::$_symlinks = array(); + + // normalize symlinks in order to map to link + foreach ($symlinks as $link => $target) { + $link = ($link === '//') ? self::$_docRoot : str_replace('//', self::$_docRoot . '/', $link); + $link = strtr($link, '/', DIRECTORY_SEPARATOR); + + self::$_symlinks[$link] = self::_realpath($target); + } + + self::$debugText .= "docRoot : " . self::$_docRoot . "\n" + . "currentDir : " . self::$_currentDir . "\n"; + if (self::$_symlinks) { + self::$debugText .= "symlinks : " . var_export(self::$_symlinks, 1) . "\n"; + } + self::$debugText .= "\n"; + + $css = self::_trimUrls($css); + + $css = self::_owlifySvgPaths($css); + + // rewrite + $pattern = '/@import\\s+([\'"])(.*?)[\'"]/'; + $css = preg_replace_callback($pattern, array(self::$className, '_processUriCB'), $css); + + $pattern = '/url\\(\\s*([\'"](.*?)[\'"]|[^\\)\\s]+)\\s*\\)/'; + $css = preg_replace_callback($pattern, array(self::$className, '_processUriCB'), $css); + + $css = self::_unOwlify($css); + + return $css; + } + + /** + * In CSS content, prepend a path to relative URIs + * + * @param string $css + * + * @param string $path The path to prepend. + * + * @return string + */ + public static function prepend($css, $path) + { + self::$_prependPath = $path; + + $css = self::_trimUrls($css); + + $css = self::_owlifySvgPaths($css); + + // append + $pattern = '/@import\\s+([\'"])(.*?)[\'"]/'; + $css = preg_replace_callback($pattern, array(self::$className, '_processUriCB'), $css); + + $pattern = '/url\\(\\s*([\'"](.*?)[\'"]|[^\\)\\s]+)\\s*\\)/'; + $css = preg_replace_callback($pattern, array(self::$className, '_processUriCB'), $css); + + $css = self::_unOwlify($css); + + self::$_prependPath = null; + + return $css; + } + + /** + * Get a root relative URI from a file relative URI + * + * + * Minify_CSS_UriRewriter::rewriteRelative( + * '../img/hello.gif' + * , '/home/user/www/css' // path of CSS file + * , '/home/user/www' // doc root + * ); + * // returns '/img/hello.gif' + * + * // example where static files are stored in a symlinked directory + * Minify_CSS_UriRewriter::rewriteRelative( + * 'hello.gif' + * , '/var/staticFiles/theme' + * , '/home/user/www' + * , array('/home/user/www/static' => '/var/staticFiles') + * ); + * // returns '/static/theme/hello.gif' + * + * + * @param string $uri file relative URI + * + * @param string $realCurrentDir realpath of the current file's directory. + * + * @param string $realDocRoot realpath of the site document root. + * + * @param array $symlinks (default = array()) If the file is stored in + * a symlink-ed directory, provide an array of link paths to + * real target paths, where the link paths "appear" to be within the document + * root. E.g.: + * + * array('/home/foo/www/not/real/path' => '/real/target/path') // unix + * array('C:\\htdocs\\not\\real' => 'D:\\real\\target\\path') // Windows + * + * + * @return string + */ + public static function rewriteRelative($uri, $realCurrentDir, $realDocRoot, $symlinks = array()) + { + // prepend path with current dir separator (OS-independent) + $path = strtr($realCurrentDir, '/', DIRECTORY_SEPARATOR); + $path .= DIRECTORY_SEPARATOR . strtr($uri, '/', DIRECTORY_SEPARATOR); + + self::$debugText .= "file-relative URI : {$uri}\n" + . "path prepended : {$path}\n"; + + // "unresolve" a symlink back to doc root + foreach ($symlinks as $link => $target) { + if (0 === strpos($path, $target)) { + // replace $target with $link + $path = $link . substr($path, strlen($target)); + + self::$debugText .= "symlink unresolved : {$path}\n"; + + break; + } + } + // strip doc root + $path = substr($path, strlen($realDocRoot)); + + self::$debugText .= "docroot stripped : {$path}\n"; + + // fix to root-relative URI + $uri = strtr($path, '/\\', '//'); + $uri = self::removeDots($uri); + + self::$debugText .= "traversals removed : {$uri}\n\n"; + + return $uri; + } + + /** + * Remove instances of "./" and "../" where possible from a root-relative URI + * + * @param string $uri + * + * @return string + */ + public static function removeDots($uri) + { + $uri = str_replace('/./', '/', $uri); + // inspired by patch from Oleg Cherniy + do { + $uri = preg_replace('@/[^/]+/\\.\\./@', '/', $uri, 1, $changed); + } while ($changed); + + return $uri; + } + + /** + * Defines which class to call as part of callbacks, change this + * if you extend Minify_CSS_UriRewriter + * + * @var string + */ + protected static $className = 'Minify_CSS_UriRewriter'; + + /** + * Get realpath with any trailing slash removed. If realpath() fails, + * just remove the trailing slash. + * + * @param string $path + * + * @return mixed path with no trailing slash + */ + protected static function _realpath($path) + { + $realPath = realpath($path); + if ($realPath !== false) { + $path = $realPath; + } + + return rtrim($path, '/\\'); + } + + /** + * Directory of this stylesheet + * + * @var string + */ + private static $_currentDir = ''; + + /** + * DOC_ROOT + * + * @var string + */ + private static $_docRoot = ''; + + /** + * directory replacements to map symlink targets back to their + * source (within the document root) E.g. '/var/www/symlink' => '/var/realpath' + * + * @var array + */ + private static $_symlinks = array(); + + /** + * Path to prepend + * + * @var string + */ + private static $_prependPath = null; + + /** + * @param string $css + * + * @return string + */ + private static function _trimUrls($css) + { + $pattern = '/ + url\\( # url( + \\s* + ([^\\)]+?) # 1 = URI (assuming does not contain ")") + \\s* + \\) # ) + /x'; + + return preg_replace($pattern, 'url($1)', $css); + } + + /** + * @param array $m + * + * @return string + */ + private static function _processUriCB($m) + { + // $m matched either '/@import\\s+([\'"])(.*?)[\'"]/' or '/url\\(\\s*([^\\)\\s]+)\\s*\\)/' + $isImport = ($m[0][0] === '@'); + // determine URI and the quote character (if any) + if ($isImport) { + $quoteChar = $m[1]; + $uri = $m[2]; + } else { + // $m[1] is either quoted or not + $quoteChar = ($m[1][0] === "'" || $m[1][0] === '"') ? $m[1][0] : ''; + + $uri = ($quoteChar === '') ? $m[1] : substr($m[1], 1, strlen($m[1]) - 2); + } + + if ($uri === '') { + return $m[0]; + } + + // if not root/scheme relative and not starts with scheme + if (!preg_match('~^(/|[a-z]+\:)~', $uri)) { + // URI is file-relative: rewrite depending on options + if (self::$_prependPath === null) { + $uri = self::rewriteRelative($uri, self::$_currentDir, self::$_docRoot, self::$_symlinks); + } else { + $uri = self::$_prependPath . $uri; + if ($uri[0] === '/') { + $root = ''; + $rootRelative = $uri; + $uri = $root . self::removeDots($rootRelative); + } elseif (preg_match('@^((https?\:)?//([^/]+))/@', $uri, $m) && (false !== strpos($m[3], '.'))) { + $root = $m[1]; + $rootRelative = substr($uri, strlen($root)); + $uri = $root . self::removeDots($rootRelative); + } + } + } + + if ($isImport) { + return "@import {$quoteChar}{$uri}{$quoteChar}"; + } else { + return "url({$quoteChar}{$uri}{$quoteChar})"; + } + } + + /** + * Mungs some inline SVG URL declarations so they won't be touched + * + * @link https://github.com/mrclay/minify/issues/517 + * @see _unOwlify + * + * @param string $css + * @return string + */ + private static function _owlifySvgPaths($css) + { + $pattern = '~\b((?:clip-path|mask|-webkit-mask)\s*\:\s*)url(\(\s*#\w+\s*\))~'; + + return preg_replace($pattern, '$1owl$2', $css); + } + + /** + * Undo work of _owlify + * + * @see _owlifySvgPaths + * + * @param string $css + * @return string + */ + private static function _unOwlify($css) + { + $pattern = '~\b((?:clip-path|mask|-webkit-mask)\s*\:\s*)owl~'; + + return preg_replace($pattern, '$1url', $css); + } +} diff --git a/wp-content/plugins/wp-rocket/inc/vendors/classes/class-rocket-mobile-detect.php b/wp-content/plugins/wp-rocket/inc/vendors/classes/class-rocket-mobile-detect.php new file mode 100644 index 0000000..3148fae --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/vendors/classes/class-rocket-mobile-detect.php @@ -0,0 +1,1472 @@ + + * Nick Ilyin + * + * Original author: Victor Stanciu + * + * @license Code and contributions have 'MIT License' + * More details: https://github.com/serbanghita/Mobile-Detect/blob/master/LICENSE.txt + * + * @link Homepage: http://mobiledetect.net + * GitHub Repo: https://github.com/serbanghita/Mobile-Detect + * Google Code: http://code.google.com/p/php-mobile-detect/ + * README: https://github.com/serbanghita/Mobile-Detect/blob/master/README.md + * HOWTO: https://github.com/serbanghita/Mobile-Detect/wiki/Code-examples + * + * @version 2.8.27 + */ + +class Rocket_Mobile_Detect +{ + /** + * Mobile detection type. + * + * @deprecated since version 2.6.9 + */ + const DETECTION_TYPE_MOBILE = 'mobile'; + + /** + * Extended detection type. + * + * @deprecated since version 2.6.9 + */ + const DETECTION_TYPE_EXTENDED = 'extended'; + + /** + * A frequently used regular expression to extract version #s. + * + * @deprecated since version 2.6.9 + */ + const VER = '([\w._\+]+)'; + + /** + * Top-level device. + */ + const MOBILE_GRADE_A = 'A'; + + /** + * Mid-level device. + */ + const MOBILE_GRADE_B = 'B'; + + /** + * Low-level device. + */ + const MOBILE_GRADE_C = 'C'; + + /** + * Stores the version number of the current release. + */ + const VERSION = '2.8.27'; + + /** + * A type for the version() method indicating a string return value. + */ + const VERSION_TYPE_STRING = 'text'; + + /** + * A type for the version() method indicating a float return value. + */ + const VERSION_TYPE_FLOAT = 'float'; + + /** + * A cache for resolved matches + * @var array + */ + protected $cache = array(); + + /** + * The User-Agent HTTP header is stored in here. + * @var string + */ + protected $userAgent = null; + + /** + * HTTP headers in the PHP-flavor. So HTTP_USER_AGENT and SERVER_SOFTWARE. + * @var array + */ + protected $httpHeaders = array(); + + /** + * CloudFront headers. E.g. CloudFront-Is-Desktop-Viewer, CloudFront-Is-Mobile-Viewer & CloudFront-Is-Tablet-Viewer. + * @var array + */ + protected $cloudfrontHeaders = array(); + + /** + * The matching Regex. + * This is good for debug. + * @var string + */ + protected $matchingRegex = null; + + /** + * The matches extracted from the regex expression. + * This is good for debug. + * @var string + */ + protected $matchesArray = null; + + /** + * The detection type, using self::DETECTION_TYPE_MOBILE or self::DETECTION_TYPE_EXTENDED. + * + * @deprecated since version 2.6.9 + * + * @var string + */ + protected $detectionType = self::DETECTION_TYPE_MOBILE; + + /** + * HTTP headers that trigger the 'isMobile' detection + * to be true. + * + * @var array + */ + protected static $mobileHeaders = array( + + 'HTTP_ACCEPT' => array('matches' => array( + // Opera Mini; @reference: http://dev.opera.com/articles/view/opera-binary-markup-language/ + 'application/x-obml2d', + // BlackBerry devices. + 'application/vnd.rim.html', + 'text/vnd.wap.wml', + 'application/vnd.wap.xhtml+xml' + )), + 'HTTP_X_WAP_PROFILE' => null, + 'HTTP_X_WAP_CLIENTID' => null, + 'HTTP_WAP_CONNECTION' => null, + 'HTTP_PROFILE' => null, + // Reported by Opera on Nokia devices (eg. C3). + 'HTTP_X_OPERAMINI_PHONE_UA' => null, + 'HTTP_X_NOKIA_GATEWAY_ID' => null, + 'HTTP_X_ORANGE_ID' => null, + 'HTTP_X_VODAFONE_3GPDPCONTEXT' => null, + 'HTTP_X_HUAWEI_USERID' => null, + // Reported by Windows Smartphones. + 'HTTP_UA_OS' => null, + // Reported by Verizon, Vodafone proxy system. + 'HTTP_X_MOBILE_GATEWAY' => null, + // Seen this on HTC Sensation. SensationXE_Beats_Z715e. + 'HTTP_X_ATT_DEVICEID' => null, + // Seen this on a HTC. + 'HTTP_UA_CPU' => array('matches' => array('ARM')), + ); + + /** + * List of mobile devices (phones). + * + * @var array + */ + protected static $phoneDevices = array( + 'iPhone' => '\biPhone\b|\biPod\b', // |\biTunes + 'BlackBerry' => 'BlackBerry|\bBB10\b|rim[0-9]+', + 'HTC' => 'HTC|HTC.*(Sensation|Evo|Vision|Explorer|6800|8100|8900|A7272|S510e|C110e|Legend|Desire|T8282)|APX515CKT|Qtek9090|APA9292KT|HD_mini|Sensation.*Z710e|PG86100|Z715e|Desire.*(A8181|HD)|ADR6200|ADR6400L|ADR6425|001HT|Inspire 4G|Android.*\bEVO\b|T-Mobile G1|Z520m', + 'Nexus' => 'Nexus One|Nexus S|Galaxy.*Nexus|Android.*Nexus.*Mobile|Nexus 4|Nexus 5|Nexus 6', + // @todo: Is 'Dell Streak' a tablet or a phone? ;) + 'Dell' => 'Dell[;]? (Streak|Aero|Venue|Venue Pro|Flash|Smoke|Mini 3iX)|XCD28|XCD35|\b001DL\b|\b101DL\b|\bGS01\b', + 'Motorola' => 'Motorola|DROIDX|DROID BIONIC|\bDroid\b.*Build|Android.*Xoom|HRI39|MOT-|A1260|A1680|A555|A853|A855|A953|A955|A956|Motorola.*ELECTRIFY|Motorola.*i1|i867|i940|MB200|MB300|MB501|MB502|MB508|MB511|MB520|MB525|MB526|MB611|MB612|MB632|MB810|MB855|MB860|MB861|MB865|MB870|ME501|ME502|ME511|ME525|ME600|ME632|ME722|ME811|ME860|ME863|ME865|MT620|MT710|MT716|MT720|MT810|MT870|MT917|Motorola.*TITANIUM|WX435|WX445|XT300|XT301|XT311|XT316|XT317|XT319|XT320|XT390|XT502|XT530|XT531|XT532|XT535|XT603|XT610|XT611|XT615|XT681|XT701|XT702|XT711|XT720|XT800|XT806|XT860|XT862|XT875|XT882|XT883|XT894|XT901|XT907|XT909|XT910|XT912|XT928|XT926|XT915|XT919|XT925|XT1021|\bMoto E\b', + 'Samsung' => '\bSamsung\b|SM-G9250|GT-19300|SGH-I337|BGT-S5230|GT-B2100|GT-B2700|GT-B2710|GT-B3210|GT-B3310|GT-B3410|GT-B3730|GT-B3740|GT-B5510|GT-B5512|GT-B5722|GT-B6520|GT-B7300|GT-B7320|GT-B7330|GT-B7350|GT-B7510|GT-B7722|GT-B7800|GT-C3010|GT-C3011|GT-C3060|GT-C3200|GT-C3212|GT-C3212I|GT-C3262|GT-C3222|GT-C3300|GT-C3300K|GT-C3303|GT-C3303K|GT-C3310|GT-C3322|GT-C3330|GT-C3350|GT-C3500|GT-C3510|GT-C3530|GT-C3630|GT-C3780|GT-C5010|GT-C5212|GT-C6620|GT-C6625|GT-C6712|GT-E1050|GT-E1070|GT-E1075|GT-E1080|GT-E1081|GT-E1085|GT-E1087|GT-E1100|GT-E1107|GT-E1110|GT-E1120|GT-E1125|GT-E1130|GT-E1160|GT-E1170|GT-E1175|GT-E1180|GT-E1182|GT-E1200|GT-E1210|GT-E1225|GT-E1230|GT-E1390|GT-E2100|GT-E2120|GT-E2121|GT-E2152|GT-E2220|GT-E2222|GT-E2230|GT-E2232|GT-E2250|GT-E2370|GT-E2550|GT-E2652|GT-E3210|GT-E3213|GT-I5500|GT-I5503|GT-I5700|GT-I5800|GT-I5801|GT-I6410|GT-I6420|GT-I7110|GT-I7410|GT-I7500|GT-I8000|GT-I8150|GT-I8160|GT-I8190|GT-I8320|GT-I8330|GT-I8350|GT-I8530|GT-I8700|GT-I8703|GT-I8910|GT-I9000|GT-I9001|GT-I9003|GT-I9010|GT-I9020|GT-I9023|GT-I9070|GT-I9082|GT-I9100|GT-I9103|GT-I9220|GT-I9250|GT-I9300|GT-I9305|GT-I9500|GT-I9505|GT-M3510|GT-M5650|GT-M7500|GT-M7600|GT-M7603|GT-M8800|GT-M8910|GT-N7000|GT-S3110|GT-S3310|GT-S3350|GT-S3353|GT-S3370|GT-S3650|GT-S3653|GT-S3770|GT-S3850|GT-S5210|GT-S5220|GT-S5229|GT-S5230|GT-S5233|GT-S5250|GT-S5253|GT-S5260|GT-S5263|GT-S5270|GT-S5300|GT-S5330|GT-S5350|GT-S5360|GT-S5363|GT-S5369|GT-S5380|GT-S5380D|GT-S5560|GT-S5570|GT-S5600|GT-S5603|GT-S5610|GT-S5620|GT-S5660|GT-S5670|GT-S5690|GT-S5750|GT-S5780|GT-S5830|GT-S5839|GT-S6102|GT-S6500|GT-S7070|GT-S7200|GT-S7220|GT-S7230|GT-S7233|GT-S7250|GT-S7500|GT-S7530|GT-S7550|GT-S7562|GT-S7710|GT-S8000|GT-S8003|GT-S8500|GT-S8530|GT-S8600|SCH-A310|SCH-A530|SCH-A570|SCH-A610|SCH-A630|SCH-A650|SCH-A790|SCH-A795|SCH-A850|SCH-A870|SCH-A890|SCH-A930|SCH-A950|SCH-A970|SCH-A990|SCH-I100|SCH-I110|SCH-I400|SCH-I405|SCH-I500|SCH-I510|SCH-I515|SCH-I600|SCH-I730|SCH-I760|SCH-I770|SCH-I830|SCH-I910|SCH-I920|SCH-I959|SCH-LC11|SCH-N150|SCH-N300|SCH-R100|SCH-R300|SCH-R351|SCH-R400|SCH-R410|SCH-T300|SCH-U310|SCH-U320|SCH-U350|SCH-U360|SCH-U365|SCH-U370|SCH-U380|SCH-U410|SCH-U430|SCH-U450|SCH-U460|SCH-U470|SCH-U490|SCH-U540|SCH-U550|SCH-U620|SCH-U640|SCH-U650|SCH-U660|SCH-U700|SCH-U740|SCH-U750|SCH-U810|SCH-U820|SCH-U900|SCH-U940|SCH-U960|SCS-26UC|SGH-A107|SGH-A117|SGH-A127|SGH-A137|SGH-A157|SGH-A167|SGH-A177|SGH-A187|SGH-A197|SGH-A227|SGH-A237|SGH-A257|SGH-A437|SGH-A517|SGH-A597|SGH-A637|SGH-A657|SGH-A667|SGH-A687|SGH-A697|SGH-A707|SGH-A717|SGH-A727|SGH-A737|SGH-A747|SGH-A767|SGH-A777|SGH-A797|SGH-A817|SGH-A827|SGH-A837|SGH-A847|SGH-A867|SGH-A877|SGH-A887|SGH-A897|SGH-A927|SGH-B100|SGH-B130|SGH-B200|SGH-B220|SGH-C100|SGH-C110|SGH-C120|SGH-C130|SGH-C140|SGH-C160|SGH-C170|SGH-C180|SGH-C200|SGH-C207|SGH-C210|SGH-C225|SGH-C230|SGH-C417|SGH-C450|SGH-D307|SGH-D347|SGH-D357|SGH-D407|SGH-D415|SGH-D780|SGH-D807|SGH-D980|SGH-E105|SGH-E200|SGH-E315|SGH-E316|SGH-E317|SGH-E335|SGH-E590|SGH-E635|SGH-E715|SGH-E890|SGH-F300|SGH-F480|SGH-I200|SGH-I300|SGH-I320|SGH-I550|SGH-I577|SGH-I600|SGH-I607|SGH-I617|SGH-I627|SGH-I637|SGH-I677|SGH-I700|SGH-I717|SGH-I727|SGH-i747M|SGH-I777|SGH-I780|SGH-I827|SGH-I847|SGH-I857|SGH-I896|SGH-I897|SGH-I900|SGH-I907|SGH-I917|SGH-I927|SGH-I937|SGH-I997|SGH-J150|SGH-J200|SGH-L170|SGH-L700|SGH-M110|SGH-M150|SGH-M200|SGH-N105|SGH-N500|SGH-N600|SGH-N620|SGH-N625|SGH-N700|SGH-N710|SGH-P107|SGH-P207|SGH-P300|SGH-P310|SGH-P520|SGH-P735|SGH-P777|SGH-Q105|SGH-R210|SGH-R220|SGH-R225|SGH-S105|SGH-S307|SGH-T109|SGH-T119|SGH-T139|SGH-T209|SGH-T219|SGH-T229|SGH-T239|SGH-T249|SGH-T259|SGH-T309|SGH-T319|SGH-T329|SGH-T339|SGH-T349|SGH-T359|SGH-T369|SGH-T379|SGH-T409|SGH-T429|SGH-T439|SGH-T459|SGH-T469|SGH-T479|SGH-T499|SGH-T509|SGH-T519|SGH-T539|SGH-T559|SGH-T589|SGH-T609|SGH-T619|SGH-T629|SGH-T639|SGH-T659|SGH-T669|SGH-T679|SGH-T709|SGH-T719|SGH-T729|SGH-T739|SGH-T746|SGH-T749|SGH-T759|SGH-T769|SGH-T809|SGH-T819|SGH-T839|SGH-T919|SGH-T929|SGH-T939|SGH-T959|SGH-T989|SGH-U100|SGH-U200|SGH-U800|SGH-V205|SGH-V206|SGH-X100|SGH-X105|SGH-X120|SGH-X140|SGH-X426|SGH-X427|SGH-X475|SGH-X495|SGH-X497|SGH-X507|SGH-X600|SGH-X610|SGH-X620|SGH-X630|SGH-X700|SGH-X820|SGH-X890|SGH-Z130|SGH-Z150|SGH-Z170|SGH-ZX10|SGH-ZX20|SHW-M110|SPH-A120|SPH-A400|SPH-A420|SPH-A460|SPH-A500|SPH-A560|SPH-A600|SPH-A620|SPH-A660|SPH-A700|SPH-A740|SPH-A760|SPH-A790|SPH-A800|SPH-A820|SPH-A840|SPH-A880|SPH-A900|SPH-A940|SPH-A960|SPH-D600|SPH-D700|SPH-D710|SPH-D720|SPH-I300|SPH-I325|SPH-I330|SPH-I350|SPH-I500|SPH-I600|SPH-I700|SPH-L700|SPH-M100|SPH-M220|SPH-M240|SPH-M300|SPH-M305|SPH-M320|SPH-M330|SPH-M350|SPH-M360|SPH-M370|SPH-M380|SPH-M510|SPH-M540|SPH-M550|SPH-M560|SPH-M570|SPH-M580|SPH-M610|SPH-M620|SPH-M630|SPH-M800|SPH-M810|SPH-M850|SPH-M900|SPH-M910|SPH-M920|SPH-M930|SPH-N100|SPH-N200|SPH-N240|SPH-N300|SPH-N400|SPH-Z400|SWC-E100|SCH-i909|GT-N7100|GT-N7105|SCH-I535|SM-N900A|SGH-I317|SGH-T999L|GT-S5360B|GT-I8262|GT-S6802|GT-S6312|GT-S6310|GT-S5312|GT-S5310|GT-I9105|GT-I8510|GT-S6790N|SM-G7105|SM-N9005|GT-S5301|GT-I9295|GT-I9195|SM-C101|GT-S7392|GT-S7560|GT-B7610|GT-I5510|GT-S7582|GT-S7530E|GT-I8750|SM-G9006V|SM-G9008V|SM-G9009D|SM-G900A|SM-G900D|SM-G900F|SM-G900H|SM-G900I|SM-G900J|SM-G900K|SM-G900L|SM-G900M|SM-G900P|SM-G900R4|SM-G900S|SM-G900T|SM-G900V|SM-G900W8|SHV-E160K|SCH-P709|SCH-P729|SM-T2558|GT-I9205|SM-G9350|SM-J120F|SM-G920F|SM-G920V|SM-G930F|SM-N910C', + 'LG' => '\bLG\b;|LG[- ]?(C800|C900|E400|E610|E900|E-900|F160|F180K|F180L|F180S|730|855|L160|LS740|LS840|LS970|LU6200|MS690|MS695|MS770|MS840|MS870|MS910|P500|P700|P705|VM696|AS680|AS695|AX840|C729|E970|GS505|272|C395|E739BK|E960|L55C|L75C|LS696|LS860|P769BK|P350|P500|P509|P870|UN272|US730|VS840|VS950|LN272|LN510|LS670|LS855|LW690|MN270|MN510|P509|P769|P930|UN200|UN270|UN510|UN610|US670|US740|US760|UX265|UX840|VN271|VN530|VS660|VS700|VS740|VS750|VS910|VS920|VS930|VX9200|VX11000|AX840A|LW770|P506|P925|P999|E612|D955|D802|MS323)', + 'Sony' => 'SonyST|SonyLT|SonyEricsson|SonyEricssonLT15iv|LT18i|E10i|LT28h|LT26w|SonyEricssonMT27i|C5303|C6902|C6903|C6906|C6943|D2533', + 'Asus' => 'Asus.*Galaxy|PadFone.*Mobile', + 'NokiaLumia' => 'Lumia [0-9]{3,4}', + // http://www.micromaxinfo.com/mobiles/smartphones + // Added because the codes might conflict with Acer Tablets. + 'Micromax' => 'Micromax.*\b(A210|A92|A88|A72|A111|A110Q|A115|A116|A110|A90S|A26|A51|A35|A54|A25|A27|A89|A68|A65|A57|A90)\b', + // @todo Complete the regex. + 'Palm' => 'PalmSource|Palm', // avantgo|blazer|elaine|hiptop|plucker|xiino ; + 'Vertu' => 'Vertu|Vertu.*Ltd|Vertu.*Ascent|Vertu.*Ayxta|Vertu.*Constellation(F|Quest)?|Vertu.*Monika|Vertu.*Signature', // Just for fun ;) + // http://www.pantech.co.kr/en/prod/prodList.do?gbrand=VEGA (PANTECH) + // Most of the VEGA devices are legacy. PANTECH seem to be newer devices based on Android. + 'Pantech' => 'PANTECH|IM-A850S|IM-A840S|IM-A830L|IM-A830K|IM-A830S|IM-A820L|IM-A810K|IM-A810S|IM-A800S|IM-T100K|IM-A725L|IM-A780L|IM-A775C|IM-A770K|IM-A760S|IM-A750K|IM-A740S|IM-A730S|IM-A720L|IM-A710K|IM-A690L|IM-A690S|IM-A650S|IM-A630K|IM-A600S|VEGA PTL21|PT003|P8010|ADR910L|P6030|P6020|P9070|P4100|P9060|P5000|CDM8992|TXT8045|ADR8995|IS11PT|P2030|P6010|P8000|PT002|IS06|CDM8999|P9050|PT001|TXT8040|P2020|P9020|P2000|P7040|P7000|C790', + // http://www.fly-phone.com/devices/smartphones/ ; Included only smartphones. + 'Fly' => 'IQ230|IQ444|IQ450|IQ440|IQ442|IQ441|IQ245|IQ256|IQ236|IQ255|IQ235|IQ245|IQ275|IQ240|IQ285|IQ280|IQ270|IQ260|IQ250', + // http://fr.wikomobile.com + 'Wiko' => 'KITE 4G|HIGHWAY|GETAWAY|STAIRWAY|DARKSIDE|DARKFULL|DARKNIGHT|DARKMOON|SLIDE|WAX 4G|RAINBOW|BLOOM|SUNSET|GOA(?!nna)|LENNY|BARRY|IGGY|OZZY|CINK FIVE|CINK PEAX|CINK PEAX 2|CINK SLIM|CINK SLIM 2|CINK +|CINK KING|CINK PEAX|CINK SLIM|SUBLIM', + 'iMobile' => 'i-mobile (IQ|i-STYLE|idea|ZAA|Hitz)', + // Added simvalley mobile just for fun. They have some interesting devices. + // http://www.simvalley.fr/telephonie---gps-_22_telephonie-mobile_telephones_.html + 'SimValley' => '\b(SP-80|XT-930|SX-340|XT-930|SX-310|SP-360|SP60|SPT-800|SP-120|SPT-800|SP-140|SPX-5|SPX-8|SP-100|SPX-8|SPX-12)\b', + // Wolfgang - a brand that is sold by Aldi supermarkets. + // http://www.wolfgangmobile.com/ + 'Wolfgang' => 'AT-B24D|AT-AS50HD|AT-AS40W|AT-AS55HD|AT-AS45q2|AT-B26D|AT-AS50Q', + 'Alcatel' => 'Alcatel', + 'Nintendo' => 'Nintendo 3DS', + // http://en.wikipedia.org/wiki/Amoi + 'Amoi' => 'Amoi', + // http://en.wikipedia.org/wiki/INQ + 'INQ' => 'INQ', + // @Tapatalk is a mobile app; http://support.tapatalk.com/threads/smf-2-0-2-os-and-browser-detection-plugin-and-tapatalk.15565/#post-79039 + 'GenericPhone' => 'Tapatalk|PDA;|SAGEM|\bmmp\b|pocket|\bpsp\b|symbian|Smartphone|smartfon|treo|up.browser|up.link|vodafone|\bwap\b|nokia|Series40|Series60|S60|SonyEricsson|N900|MAUI.*WAP.*Browser', + ); + + /** + * List of tablet devices. + * + * @var array + */ + protected static $tabletDevices = array( + // @todo: check for mobile friendly emails topic. + 'iPad' => 'iPad|iPad.*Mobile', + // Removed |^.*Android.*Nexus(?!(?:Mobile).)*$ + // @see #442 + 'NexusTablet' => 'Android.*Nexus[\s]+(7|9|10)', + 'SamsungTablet' => 'SAMSUNG.*Tablet|Galaxy.*Tab|SC-01C|GT-P1000|GT-P1003|GT-P1010|GT-P3105|GT-P6210|GT-P6800|GT-P6810|GT-P7100|GT-P7300|GT-P7310|GT-P7500|GT-P7510|SCH-I800|SCH-I815|SCH-I905|SGH-I957|SGH-I987|SGH-T849|SGH-T859|SGH-T869|SPH-P100|GT-P3100|GT-P3108|GT-P3110|GT-P5100|GT-P5110|GT-P6200|GT-P7320|GT-P7511|GT-N8000|GT-P8510|SGH-I497|SPH-P500|SGH-T779|SCH-I705|SCH-I915|GT-N8013|GT-P3113|GT-P5113|GT-P8110|GT-N8010|GT-N8005|GT-N8020|GT-P1013|GT-P6201|GT-P7501|GT-N5100|GT-N5105|GT-N5110|SHV-E140K|SHV-E140L|SHV-E140S|SHV-E150S|SHV-E230K|SHV-E230L|SHV-E230S|SHW-M180K|SHW-M180L|SHW-M180S|SHW-M180W|SHW-M300W|SHW-M305W|SHW-M380K|SHW-M380S|SHW-M380W|SHW-M430W|SHW-M480K|SHW-M480S|SHW-M480W|SHW-M485W|SHW-M486W|SHW-M500W|GT-I9228|SCH-P739|SCH-I925|GT-I9200|GT-P5200|GT-P5210|GT-P5210X|SM-T311|SM-T310|SM-T310X|SM-T210|SM-T210R|SM-T211|SM-P600|SM-P601|SM-P605|SM-P900|SM-P901|SM-T217|SM-T217A|SM-T217S|SM-P6000|SM-T3100|SGH-I467|XE500|SM-T110|GT-P5220|GT-I9200X|GT-N5110X|GT-N5120|SM-P905|SM-T111|SM-T2105|SM-T315|SM-T320|SM-T320X|SM-T321|SM-T520|SM-T525|SM-T530NU|SM-T230NU|SM-T330NU|SM-T900|XE500T1C|SM-P605V|SM-P905V|SM-T337V|SM-T537V|SM-T707V|SM-T807V|SM-P600X|SM-P900X|SM-T210X|SM-T230|SM-T230X|SM-T325|GT-P7503|SM-T531|SM-T330|SM-T530|SM-T705|SM-T705C|SM-T535|SM-T331|SM-T800|SM-T700|SM-T537|SM-T807|SM-P907A|SM-T337A|SM-T537A|SM-T707A|SM-T807A|SM-T237|SM-T807P|SM-P607T|SM-T217T|SM-T337T|SM-T807T|SM-T116NQ|SM-T116BU|SM-P550|SM-T350|SM-T550|SM-T9000|SM-P9000|SM-T705Y|SM-T805|GT-P3113|SM-T710|SM-T810|SM-T815|SM-T360|SM-T533|SM-T113|SM-T335|SM-T715|SM-T560|SM-T670|SM-T677|SM-T377|SM-T567|SM-T357T|SM-T555|SM-T561|SM-T713|SM-T719|SM-T813|SM-T819|SM-T580|SM-T355Y|SM-T280|SM-T817A|SM-T820|SM-W700|SM-P580|SM-T587|SM-P350|SM-P555M|SM-P355M|SM-T113NU|SM-T815Y', // SCH-P709|SCH-P729|SM-T2558|GT-I9205 - Samsung Mega - treat them like a regular phone. + // http://docs.aws.amazon.com/silk/latest/developerguide/user-agent.html + 'Kindle' => 'Kindle|Silk.*Accelerated|Android.*\b(KFOT|KFTT|KFJWI|KFJWA|KFOTE|KFSOWI|KFTHWI|KFTHWA|KFAPWI|KFAPWA|WFJWAE|KFSAWA|KFSAWI|KFASWI|KFARWI|KFFOWI|KFGIWI|KFMEWI)\b|Android.*Silk/[0-9.]+ like Chrome/[0-9.]+ (?!Mobile)', + // Only the Surface tablets with Windows RT are considered mobile. + // http://msdn.microsoft.com/en-us/library/ie/hh920767(v=vs.85).aspx + 'SurfaceTablet' => 'Windows NT [0-9.]+; ARM;.*(Tablet|ARMBJS)', + // http://shopping1.hp.com/is-bin/INTERSHOP.enfinity/WFS/WW-USSMBPublicStore-Site/en_US/-/USD/ViewStandardCatalog-Browse?CatalogCategoryID=JfIQ7EN5lqMAAAEyDcJUDwMT + 'HPTablet' => 'HP Slate (7|8|10)|HP ElitePad 900|hp-tablet|EliteBook.*Touch|HP 8|Slate 21|HP SlateBook 10', + // Watch out for PadFone, see #132. + // http://www.asus.com/de/Tablets_Mobile/Memo_Pad_Products/ + 'AsusTablet' => '^.*PadFone((?!Mobile).)*$|Transformer|TF101|TF101G|TF300T|TF300TG|TF300TL|TF700T|TF700KL|TF701T|TF810C|ME171|ME301T|ME302C|ME371MG|ME370T|ME372MG|ME172V|ME173X|ME400C|Slider SL101|\bK00F\b|\bK00C\b|\bK00E\b|\bK00L\b|TX201LA|ME176C|ME102A|\bM80TA\b|ME372CL|ME560CG|ME372CG|ME302KL| K010 | K011 | K017 | K01E |ME572C|ME103K|ME170C|ME171C|\bME70C\b|ME581C|ME581CL|ME8510C|ME181C|P01Y|PO1MA|P01Z|\bP027\b', + 'BlackBerryTablet' => 'PlayBook|RIM Tablet', + 'HTCtablet' => 'HTC_Flyer_P512|HTC Flyer|HTC Jetstream|HTC-P715a|HTC EVO View 4G|PG41200|PG09410', + 'MotorolaTablet' => 'xoom|sholest|MZ615|MZ605|MZ505|MZ601|MZ602|MZ603|MZ604|MZ606|MZ607|MZ608|MZ609|MZ615|MZ616|MZ617', + 'NookTablet' => 'Android.*Nook|NookColor|nook browser|BNRV200|BNRV200A|BNTV250|BNTV250A|BNTV400|BNTV600|LogicPD Zoom2', + // http://www.acer.ro/ac/ro/RO/content/drivers + // http://www.packardbell.co.uk/pb/en/GB/content/download (Packard Bell is part of Acer) + // http://us.acer.com/ac/en/US/content/group/tablets + // http://www.acer.de/ac/de/DE/content/models/tablets/ + // Can conflict with Micromax and Motorola phones codes. + 'AcerTablet' => 'Android.*; \b(A100|A101|A110|A200|A210|A211|A500|A501|A510|A511|A700|A701|W500|W500P|W501|W501P|W510|W511|W700|G100|G100W|B1-A71|B1-710|B1-711|A1-810|A1-811|A1-830)\b|W3-810|\bA3-A10\b|\bA3-A11\b|\bA3-A20\b|\bA3-A30', + // http://eu.computers.toshiba-europe.com/innovation/family/Tablets/1098744/banner_id/tablet_footerlink/ + // http://us.toshiba.com/tablets/tablet-finder + // http://www.toshiba.co.jp/regza/tablet/ + 'ToshibaTablet' => 'Android.*(AT100|AT105|AT200|AT205|AT270|AT275|AT300|AT305|AT1S5|AT500|AT570|AT700|AT830)|TOSHIBA.*FOLIO', + // http://www.nttdocomo.co.jp/english/service/developer/smart_phone/technical_info/spec/index.html + // http://www.lg.com/us/tablets + 'LGTablet' => '\bL-06C|LG-V909|LG-V900|LG-V700|LG-V510|LG-V500|LG-V410|LG-V400|LG-VK810\b', + 'FujitsuTablet' => 'Android.*\b(F-01D|F-02F|F-05E|F-10D|M532|Q572)\b', + // Prestigio Tablets http://www.prestigio.com/support + 'PrestigioTablet' => 'PMP3170B|PMP3270B|PMP3470B|PMP7170B|PMP3370B|PMP3570C|PMP5870C|PMP3670B|PMP5570C|PMP5770D|PMP3970B|PMP3870C|PMP5580C|PMP5880D|PMP5780D|PMP5588C|PMP7280C|PMP7280C3G|PMP7280|PMP7880D|PMP5597D|PMP5597|PMP7100D|PER3464|PER3274|PER3574|PER3884|PER5274|PER5474|PMP5097CPRO|PMP5097|PMP7380D|PMP5297C|PMP5297C_QUAD|PMP812E|PMP812E3G|PMP812F|PMP810E|PMP880TD|PMT3017|PMT3037|PMT3047|PMT3057|PMT7008|PMT5887|PMT5001|PMT5002', + // http://support.lenovo.com/en_GB/downloads/default.page?# + 'LenovoTablet' => 'Lenovo TAB|Idea(Tab|Pad)( A1|A10| K1|)|ThinkPad([ ]+)?Tablet|YT3-850M|YT3-X90L|YT3-X90F|YT3-X90X|Lenovo.*(S2109|S2110|S5000|S6000|K3011|A3000|A3500|A1000|A2107|A2109|A1107|A5500|A7600|B6000|B8000|B8080)(-|)(FL|F|HV|H|)', + // http://www.dell.com/support/home/us/en/04/Products/tab_mob/tablets + 'DellTablet' => 'Venue 11|Venue 8|Venue 7|Dell Streak 10|Dell Streak 7', + // http://www.yarvik.com/en/matrix/tablets/ + 'YarvikTablet' => 'Android.*\b(TAB210|TAB211|TAB224|TAB250|TAB260|TAB264|TAB310|TAB360|TAB364|TAB410|TAB411|TAB420|TAB424|TAB450|TAB460|TAB461|TAB464|TAB465|TAB467|TAB468|TAB07-100|TAB07-101|TAB07-150|TAB07-151|TAB07-152|TAB07-200|TAB07-201-3G|TAB07-210|TAB07-211|TAB07-212|TAB07-214|TAB07-220|TAB07-400|TAB07-485|TAB08-150|TAB08-200|TAB08-201-3G|TAB08-201-30|TAB09-100|TAB09-211|TAB09-410|TAB10-150|TAB10-201|TAB10-211|TAB10-400|TAB10-410|TAB13-201|TAB274EUK|TAB275EUK|TAB374EUK|TAB462EUK|TAB474EUK|TAB9-200)\b', + 'MedionTablet' => 'Android.*\bOYO\b|LIFE.*(P9212|P9514|P9516|S9512)|LIFETAB', + 'ArnovaTablet' => '97G4|AN10G2|AN7bG3|AN7fG3|AN8G3|AN8cG3|AN7G3|AN9G3|AN7dG3|AN7dG3ST|AN7dG3ChildPad|AN10bG3|AN10bG3DT|AN9G2', + // http://www.intenso.de/kategorie_en.php?kategorie=33 + // @todo: http://www.nbhkdz.com/read/b8e64202f92a2df129126bff.html - investigate + 'IntensoTablet' => 'INM8002KP|INM1010FP|INM805ND|Intenso Tab|TAB1004', + // IRU.ru Tablets http://www.iru.ru/catalog/soho/planetable/ + 'IRUTablet' => 'M702pro', + 'MegafonTablet' => 'MegaFon V9|\bZTE V9\b|Android.*\bMT7A\b', + // http://www.e-boda.ro/tablete-pc.html + 'EbodaTablet' => 'E-Boda (Supreme|Impresspeed|Izzycomm|Essential)', + // http://www.allview.ro/produse/droseries/lista-tablete-pc/ + 'AllViewTablet' => 'Allview.*(Viva|Alldro|City|Speed|All TV|Frenzy|Quasar|Shine|TX1|AX1|AX2)', + // http://wiki.archosfans.com/index.php?title=Main_Page + // @note Rewrite the regex format after we add more UAs. + 'ArchosTablet' => '\b(101G9|80G9|A101IT)\b|Qilive 97R|Archos5|\bARCHOS (70|79|80|90|97|101|FAMILYPAD|)(b|c|)(G10| Cobalt| TITANIUM(HD|)| Xenon| Neon|XSK| 2| XS 2| PLATINUM| CARBON|GAMEPAD)\b', + // http://www.ainol.com/plugin.php?identifier=ainol&module=product + 'AinolTablet' => 'NOVO7|NOVO8|NOVO10|Novo7Aurora|Novo7Basic|NOVO7PALADIN|novo9-Spark', + 'NokiaLumiaTablet' => 'Lumia 2520', + // @todo: inspect http://esupport.sony.com/US/p/select-system.pl?DIRECTOR=DRIVER + // Readers http://www.atsuhiro-me.net/ebook/sony-reader/sony-reader-web-browser + // http://www.sony.jp/support/tablet/ + 'SonyTablet' => 'Sony.*Tablet|Xperia Tablet|Sony Tablet S|SO-03E|SGPT12|SGPT13|SGPT114|SGPT121|SGPT122|SGPT123|SGPT111|SGPT112|SGPT113|SGPT131|SGPT132|SGPT133|SGPT211|SGPT212|SGPT213|SGP311|SGP312|SGP321|EBRD1101|EBRD1102|EBRD1201|SGP351|SGP341|SGP511|SGP512|SGP521|SGP541|SGP551|SGP621|SGP612|SOT31', + // http://www.support.philips.com/support/catalog/worldproducts.jsp?userLanguage=en&userCountry=cn&categoryid=3G_LTE_TABLET_SU_CN_CARE&title=3G%20tablets%20/%20LTE%20range&_dyncharset=UTF-8 + 'PhilipsTablet' => '\b(PI2010|PI3000|PI3100|PI3105|PI3110|PI3205|PI3210|PI3900|PI4010|PI7000|PI7100)\b', + // db + http://www.cube-tablet.com/buy-products.html + 'CubeTablet' => 'Android.*(K8GT|U9GT|U10GT|U16GT|U17GT|U18GT|U19GT|U20GT|U23GT|U30GT)|CUBE U8GT', + // http://www.cobyusa.com/?p=pcat&pcat_id=3001 + 'CobyTablet' => 'MID1042|MID1045|MID1125|MID1126|MID7012|MID7014|MID7015|MID7034|MID7035|MID7036|MID7042|MID7048|MID7127|MID8042|MID8048|MID8127|MID9042|MID9740|MID9742|MID7022|MID7010', + // http://www.match.net.cn/products.asp + 'MIDTablet' => 'M9701|M9000|M9100|M806|M1052|M806|T703|MID701|MID713|MID710|MID727|MID760|MID830|MID728|MID933|MID125|MID810|MID732|MID120|MID930|MID800|MID731|MID900|MID100|MID820|MID735|MID980|MID130|MID833|MID737|MID960|MID135|MID860|MID736|MID140|MID930|MID835|MID733|MID4X10', + // http://www.msi.com/support + // @todo Research the Windows Tablets. + 'MSITablet' => 'MSI \b(Primo 73K|Primo 73L|Primo 81L|Primo 77|Primo 93|Primo 75|Primo 76|Primo 73|Primo 81|Primo 91|Primo 90|Enjoy 71|Enjoy 7|Enjoy 10)\b', + // @todo http://www.kyoceramobile.com/support/drivers/ + // 'KyoceraTablet' => null, + // @todo http://intexuae.com/index.php/category/mobile-devices/tablets-products/ + // 'IntextTablet' => null, + // http://pdadb.net/index.php?m=pdalist&list=SMiT (NoName Chinese Tablets) + // http://www.imp3.net/14/show.php?itemid=20454 + 'SMiTTablet' => 'Android.*(\bMID\b|MID-560|MTV-T1200|MTV-PND531|MTV-P1101|MTV-PND530)', + // http://www.rock-chips.com/index.php?do=prod&pid=2 + 'RockChipTablet' => 'Android.*(RK2818|RK2808A|RK2918|RK3066)|RK2738|RK2808A', + // http://www.fly-phone.com/devices/tablets/ ; http://www.fly-phone.com/service/ + 'FlyTablet' => 'IQ310|Fly Vision', + // http://www.bqreaders.com/gb/tablets-prices-sale.html + 'bqTablet' => 'Android.*(bq)?.*(Elcano|Curie|Edison|Maxwell|Kepler|Pascal|Tesla|Hypatia|Platon|Newton|Livingstone|Cervantes|Avant|Aquaris [E|M]10)|Maxwell.*Lite|Maxwell.*Plus', + // http://www.huaweidevice.com/worldwide/productFamily.do?method=index&directoryId=5011&treeId=3290 + // http://www.huaweidevice.com/worldwide/downloadCenter.do?method=index&directoryId=3372&treeId=0&tb=1&type=software (including legacy tablets) + 'HuaweiTablet' => 'MediaPad|MediaPad 7 Youth|IDEOS S7|S7-201c|S7-202u|S7-101|S7-103|S7-104|S7-105|S7-106|S7-201|S7-Slim', + // Nec or Medias Tab + 'NecTablet' => '\bN-06D|\bN-08D', + // Pantech Tablets: http://www.pantechusa.com/phones/ + 'PantechTablet' => 'Pantech.*P4100', + // Broncho Tablets: http://www.broncho.cn/ (hard to find) + 'BronchoTablet' => 'Broncho.*(N701|N708|N802|a710)', + // http://versusuk.com/support.html + 'VersusTablet' => 'TOUCHPAD.*[78910]|\bTOUCHTAB\b', + // http://www.zync.in/index.php/our-products/tablet-phablets + 'ZyncTablet' => 'z1000|Z99 2G|z99|z930|z999|z990|z909|Z919|z900', + // http://www.positivoinformatica.com.br/www/pessoal/tablet-ypy/ + 'PositivoTablet' => 'TB07STA|TB10STA|TB07FTA|TB10FTA', + // https://www.nabitablet.com/ + 'NabiTablet' => 'Android.*\bNabi', + 'KoboTablet' => 'Kobo Touch|\bK080\b|\bVox\b Build|\bArc\b Build', + // French Danew Tablets http://www.danew.com/produits-tablette.php + 'DanewTablet' => 'DSlide.*\b(700|701R|702|703R|704|802|970|971|972|973|974|1010|1012)\b', + // Texet Tablets and Readers http://www.texet.ru/tablet/ + 'TexetTablet' => 'NaviPad|TB-772A|TM-7045|TM-7055|TM-9750|TM-7016|TM-7024|TM-7026|TM-7041|TM-7043|TM-7047|TM-8041|TM-9741|TM-9747|TM-9748|TM-9751|TM-7022|TM-7021|TM-7020|TM-7011|TM-7010|TM-7023|TM-7025|TM-7037W|TM-7038W|TM-7027W|TM-9720|TM-9725|TM-9737W|TM-1020|TM-9738W|TM-9740|TM-9743W|TB-807A|TB-771A|TB-727A|TB-725A|TB-719A|TB-823A|TB-805A|TB-723A|TB-715A|TB-707A|TB-705A|TB-709A|TB-711A|TB-890HD|TB-880HD|TB-790HD|TB-780HD|TB-770HD|TB-721HD|TB-710HD|TB-434HD|TB-860HD|TB-840HD|TB-760HD|TB-750HD|TB-740HD|TB-730HD|TB-722HD|TB-720HD|TB-700HD|TB-500HD|TB-470HD|TB-431HD|TB-430HD|TB-506|TB-504|TB-446|TB-436|TB-416|TB-146SE|TB-126SE', + // Avoid detecting 'PLAYSTATION 3' as mobile. + 'PlaystationTablet' => 'Playstation.*(Portable|Vita)', + // http://www.trekstor.de/surftabs.html + 'TrekstorTablet' => 'ST10416-1|VT10416-1|ST70408-1|ST702xx-1|ST702xx-2|ST80208|ST97216|ST70104-2|VT10416-2|ST10216-2A|SurfTab', + // http://www.pyleaudio.com/Products.aspx?%2fproducts%2fPersonal-Electronics%2fTablets + 'PyleAudioTablet' => '\b(PTBL10CEU|PTBL10C|PTBL72BC|PTBL72BCEU|PTBL7CEU|PTBL7C|PTBL92BC|PTBL92BCEU|PTBL9CEU|PTBL9CUK|PTBL9C)\b', + // http://www.advandigital.com/index.php?link=content-product&jns=JP001 + // because of the short codenames we have to include whitespaces to reduce the possible conflicts. + 'AdvanTablet' => 'Android.* \b(E3A|T3X|T5C|T5B|T3E|T3C|T3B|T1J|T1F|T2A|T1H|T1i|E1C|T1-E|T5-A|T4|E1-B|T2Ci|T1-B|T1-D|O1-A|E1-A|T1-A|T3A|T4i)\b ', + // http://www.danytech.com/category/tablet-pc + 'DanyTechTablet' => 'Genius Tab G3|Genius Tab S2|Genius Tab Q3|Genius Tab G4|Genius Tab Q4|Genius Tab G-II|Genius TAB GII|Genius TAB GIII|Genius Tab S1', + // http://www.galapad.net/product.html + 'GalapadTablet' => 'Android.*\bG1\b', + // http://www.micromaxinfo.com/tablet/funbook + 'MicromaxTablet' => 'Funbook|Micromax.*\b(P250|P560|P360|P362|P600|P300|P350|P500|P275)\b', + // http://www.karbonnmobiles.com/products_tablet.php + 'KarbonnTablet' => 'Android.*\b(A39|A37|A34|ST8|ST10|ST7|Smart Tab3|Smart Tab2)\b', + // http://www.myallfine.com/Products.asp + 'AllFineTablet' => 'Fine7 Genius|Fine7 Shine|Fine7 Air|Fine8 Style|Fine9 More|Fine10 Joy|Fine11 Wide', + // http://www.proscanvideo.com/products-search.asp?itemClass=TABLET&itemnmbr= + 'PROSCANTablet' => '\b(PEM63|PLT1023G|PLT1041|PLT1044|PLT1044G|PLT1091|PLT4311|PLT4311PL|PLT4315|PLT7030|PLT7033|PLT7033D|PLT7035|PLT7035D|PLT7044K|PLT7045K|PLT7045KB|PLT7071KG|PLT7072|PLT7223G|PLT7225G|PLT7777G|PLT7810K|PLT7849G|PLT7851G|PLT7852G|PLT8015|PLT8031|PLT8034|PLT8036|PLT8080K|PLT8082|PLT8088|PLT8223G|PLT8234G|PLT8235G|PLT8816K|PLT9011|PLT9045K|PLT9233G|PLT9735|PLT9760G|PLT9770G)\b', + // http://www.yonesnav.com/products/products.php + 'YONESTablet' => 'BQ1078|BC1003|BC1077|RK9702|BC9730|BC9001|IT9001|BC7008|BC7010|BC708|BC728|BC7012|BC7030|BC7027|BC7026', + // http://www.cjshowroom.com/eproducts.aspx?classcode=004001001 + // China manufacturer makes tablets for different small brands (eg. http://www.zeepad.net/index.html) + 'ChangJiaTablet' => 'TPC7102|TPC7103|TPC7105|TPC7106|TPC7107|TPC7201|TPC7203|TPC7205|TPC7210|TPC7708|TPC7709|TPC7712|TPC7110|TPC8101|TPC8103|TPC8105|TPC8106|TPC8203|TPC8205|TPC8503|TPC9106|TPC9701|TPC97101|TPC97103|TPC97105|TPC97106|TPC97111|TPC97113|TPC97203|TPC97603|TPC97809|TPC97205|TPC10101|TPC10103|TPC10106|TPC10111|TPC10203|TPC10205|TPC10503', + // http://www.gloryunion.cn/products.asp + // http://www.allwinnertech.com/en/apply/mobile.html + // http://www.ptcl.com.pk/pd_content.php?pd_id=284 (EVOTAB) + // @todo: Softwiner tablets? + // aka. Cute or Cool tablets. Not sure yet, must research to avoid collisions. + 'GUTablet' => 'TX-A1301|TX-M9002|Q702|kf026', // A12R|D75A|D77|D79|R83|A95|A106C|R15|A75|A76|D71|D72|R71|R73|R77|D82|R85|D92|A97|D92|R91|A10F|A77F|W71F|A78F|W78F|W81F|A97F|W91F|W97F|R16G|C72|C73E|K72|K73|R96G + // http://www.pointofview-online.com/showroom.php?shop_mode=product_listing&category_id=118 + 'PointOfViewTablet' => 'TAB-P506|TAB-navi-7-3G-M|TAB-P517|TAB-P-527|TAB-P701|TAB-P703|TAB-P721|TAB-P731N|TAB-P741|TAB-P825|TAB-P905|TAB-P925|TAB-PR945|TAB-PL1015|TAB-P1025|TAB-PI1045|TAB-P1325|TAB-PROTAB[0-9]+|TAB-PROTAB25|TAB-PROTAB26|TAB-PROTAB27|TAB-PROTAB26XL|TAB-PROTAB2-IPS9|TAB-PROTAB30-IPS9|TAB-PROTAB25XXL|TAB-PROTAB26-IPS10|TAB-PROTAB30-IPS10', + // http://www.overmax.pl/pl/katalog-produktow,p8/tablety,c14/ + // @todo: add more tests. + 'OvermaxTablet' => 'OV-(SteelCore|NewBase|Basecore|Baseone|Exellen|Quattor|EduTab|Solution|ACTION|BasicTab|TeddyTab|MagicTab|Stream|TB-08|TB-09)', + // http://hclmetablet.com/India/index.php + 'HCLTablet' => 'HCL.*Tablet|Connect-3G-2.0|Connect-2G-2.0|ME Tablet U1|ME Tablet U2|ME Tablet G1|ME Tablet X1|ME Tablet Y2|ME Tablet Sync', + // http://www.edigital.hu/Tablet_es_e-book_olvaso/Tablet-c18385.html + 'DPSTablet' => 'DPS Dream 9|DPS Dual 7', + // http://www.visture.com/index.asp + 'VistureTablet' => 'V97 HD|i75 3G|Visture V4( HD)?|Visture V5( HD)?|Visture V10', + // http://www.mijncresta.nl/tablet + 'CrestaTablet' => 'CTP(-)?810|CTP(-)?818|CTP(-)?828|CTP(-)?838|CTP(-)?888|CTP(-)?978|CTP(-)?980|CTP(-)?987|CTP(-)?988|CTP(-)?989', + // MediaTek - http://www.mediatek.com/_en/01_products/02_proSys.php?cata_sn=1&cata1_sn=1&cata2_sn=309 + 'MediatekTablet' => '\bMT8125|MT8389|MT8135|MT8377\b', + // Concorde tab + 'ConcordeTablet' => 'Concorde([ ]+)?Tab|ConCorde ReadMan', + // GoClever Tablets - http://www.goclever.com/uk/products,c1/tablet,c5/ + 'GoCleverTablet' => 'GOCLEVER TAB|A7GOCLEVER|M1042|M7841|M742|R1042BK|R1041|TAB A975|TAB A7842|TAB A741|TAB A741L|TAB M723G|TAB M721|TAB A1021|TAB I921|TAB R721|TAB I720|TAB T76|TAB R70|TAB R76.2|TAB R106|TAB R83.2|TAB M813G|TAB I721|GCTA722|TAB I70|TAB I71|TAB S73|TAB R73|TAB R74|TAB R93|TAB R75|TAB R76.1|TAB A73|TAB A93|TAB A93.2|TAB T72|TAB R83|TAB R974|TAB R973|TAB A101|TAB A103|TAB A104|TAB A104.2|R105BK|M713G|A972BK|TAB A971|TAB R974.2|TAB R104|TAB R83.3|TAB A1042', + // Modecom Tablets - http://www.modecom.eu/tablets/portal/ + 'ModecomTablet' => 'FreeTAB 9000|FreeTAB 7.4|FreeTAB 7004|FreeTAB 7800|FreeTAB 2096|FreeTAB 7.5|FreeTAB 1014|FreeTAB 1001 |FreeTAB 8001|FreeTAB 9706|FreeTAB 9702|FreeTAB 7003|FreeTAB 7002|FreeTAB 1002|FreeTAB 7801|FreeTAB 1331|FreeTAB 1004|FreeTAB 8002|FreeTAB 8014|FreeTAB 9704|FreeTAB 1003', + // Vonino Tablets + 'VoninoTablet' => '\b(Argus[ _]?S|Diamond[ _]?79HD|Emerald[ _]?78E|Luna[ _]?70C|Onyx[ _]?S|Onyx[ _]?Z|Orin[ _]?HD|Orin[ _]?S|Otis[ _]?S|SpeedStar[ _]?S|Magnet[ _]?M9|Primus[ _]?94[ _]?3G|Primus[ _]?94HD|Primus[ _]?QS|Android.*\bQ8\b|Sirius[ _]?EVO[ _]?QS|Sirius[ _]?QS|Spirit[ _]?S)\b', + // ECS Tablets - http://www.ecs.com.tw/ECSWebSite/Product/Product_Tablet_List.aspx?CategoryID=14&MenuID=107&childid=M_107&LanID=0 + 'ECSTablet' => 'V07OT2|TM105A|S10OT1|TR10CS1', + // Storex Tablets - http://storex.fr/espace_client/support.html + // @note: no need to add all the tablet codes since they are guided by the first regex. + 'StorexTablet' => 'eZee[_\']?(Tab|Go)[0-9]+|TabLC7|Looney Tunes Tab', + // Generic Vodafone tablets. + 'VodafoneTablet' => 'SmartTab([ ]+)?[0-9]+|SmartTabII10|SmartTabII7|VF-1497', + // French tablets - Essentiel B http://www.boulanger.fr/tablette_tactile_e-book/tablette_tactile_essentiel_b/cl_68908.htm?multiChoiceToDelete=brand&mc_brand=essentielb + // Aka: http://www.essentielb.fr/ + 'EssentielBTablet' => 'Smart[ \']?TAB[ ]+?[0-9]+|Family[ \']?TAB2', + // Ross & Moor - http://ross-moor.ru/ + 'RossMoorTablet' => 'RM-790|RM-997|RMD-878G|RMD-974R|RMT-705A|RMT-701|RME-601|RMT-501|RMT-711', + // i-mobile http://product.i-mobilephone.com/Mobile_Device + 'iMobileTablet' => 'i-mobile i-note', + // http://www.tolino.de/de/vergleichen/ + 'TolinoTablet' => 'tolino tab [0-9.]+|tolino shine', + // AudioSonic - a Kmart brand + // http://www.kmart.com.au/webapp/wcs/stores/servlet/Search?langId=-1&storeId=10701&catalogId=10001&categoryId=193001&pageSize=72¤tPage=1&searchCategory=193001%2b4294965664&sortBy=p_MaxPrice%7c1 + 'AudioSonicTablet' => '\bC-22Q|T7-QC|T-17B|T-17P\b', + // AMPE Tablets - http://www.ampe.com.my/product-category/tablets/ + // @todo: add them gradually to avoid conflicts. + 'AMPETablet' => 'Android.* A78 ', + // Skk Mobile - http://skkmobile.com.ph/product_tablets.php + 'SkkTablet' => 'Android.* (SKYPAD|PHOENIX|CYCLOPS)', + // Tecno Mobile (only tablet) - http://www.tecno-mobile.com/index.php/product?filterby=smart&list_order=all&page=1 + 'TecnoTablet' => 'TECNO P9', + // JXD (consoles & tablets) - http://jxd.hk/products.asp?selectclassid=009008&clsid=3 + 'JXDTablet' => 'Android.* \b(F3000|A3300|JXD5000|JXD3000|JXD2000|JXD300B|JXD300|S5800|S7800|S602b|S5110b|S7300|S5300|S602|S603|S5100|S5110|S601|S7100a|P3000F|P3000s|P101|P200s|P1000m|P200m|P9100|P1000s|S6600b|S908|P1000|P300|S18|S6600|S9100)\b', + // i-Joy tablets - http://www.i-joy.es/en/cat/products/tablets/ + 'iJoyTablet' => 'Tablet (Spirit 7|Essentia|Galatea|Fusion|Onix 7|Landa|Titan|Scooby|Deox|Stella|Themis|Argon|Unique 7|Sygnus|Hexen|Finity 7|Cream|Cream X2|Jade|Neon 7|Neron 7|Kandy|Scape|Saphyr 7|Rebel|Biox|Rebel|Rebel 8GB|Myst|Draco 7|Myst|Tab7-004|Myst|Tadeo Jones|Tablet Boing|Arrow|Draco Dual Cam|Aurix|Mint|Amity|Revolution|Finity 9|Neon 9|T9w|Amity 4GB Dual Cam|Stone 4GB|Stone 8GB|Andromeda|Silken|X2|Andromeda II|Halley|Flame|Saphyr 9,7|Touch 8|Planet|Triton|Unique 10|Hexen 10|Memphis 4GB|Memphis 8GB|Onix 10)', + // http://www.intracon.eu/tablet + 'FX2Tablet' => 'FX2 PAD7|FX2 PAD10', + // http://www.xoro.de/produkte/ + // @note: Might be the same brand with 'Simply tablets' + 'XoroTablet' => 'KidsPAD 701|PAD[ ]?712|PAD[ ]?714|PAD[ ]?716|PAD[ ]?717|PAD[ ]?718|PAD[ ]?720|PAD[ ]?721|PAD[ ]?722|PAD[ ]?790|PAD[ ]?792|PAD[ ]?900|PAD[ ]?9715D|PAD[ ]?9716DR|PAD[ ]?9718DR|PAD[ ]?9719QR|PAD[ ]?9720QR|TelePAD1030|Telepad1032|TelePAD730|TelePAD731|TelePAD732|TelePAD735Q|TelePAD830|TelePAD9730|TelePAD795|MegaPAD 1331|MegaPAD 1851|MegaPAD 2151', + // http://www1.viewsonic.com/products/computing/tablets/ + 'ViewsonicTablet' => 'ViewPad 10pi|ViewPad 10e|ViewPad 10s|ViewPad E72|ViewPad7|ViewPad E100|ViewPad 7e|ViewSonic VB733|VB100a', + // http://www.odys.de/web/internet-tablet_en.html + 'OdysTablet' => 'LOOX|XENO10|ODYS[ -](Space|EVO|Xpress|NOON)|\bXELIO\b|Xelio10Pro|XELIO7PHONETAB|XELIO10EXTREME|XELIOPT2|NEO_QUAD10', + // http://www.captiva-power.de/products.html#tablets-en + 'CaptivaTablet' => 'CAPTIVA PAD', + // IconBIT - http://www.iconbit.com/products/tablets/ + 'IconbitTablet' => 'NetTAB|NT-3702|NT-3702S|NT-3702S|NT-3603P|NT-3603P|NT-0704S|NT-0704S|NT-3805C|NT-3805C|NT-0806C|NT-0806C|NT-0909T|NT-0909T|NT-0907S|NT-0907S|NT-0902S|NT-0902S', + // http://www.teclast.com/topic.php?channelID=70&topicID=140&pid=63 + 'TeclastTablet' => 'T98 4G|\bP80\b|\bX90HD\b|X98 Air|X98 Air 3G|\bX89\b|P80 3G|\bX80h\b|P98 Air|\bX89HD\b|P98 3G|\bP90HD\b|P89 3G|X98 3G|\bP70h\b|P79HD 3G|G18d 3G|\bP79HD\b|\bP89s\b|\bA88\b|\bP10HD\b|\bP19HD\b|G18 3G|\bP78HD\b|\bA78\b|\bP75\b|G17s 3G|G17h 3G|\bP85t\b|\bP90\b|\bP11\b|\bP98t\b|\bP98HD\b|\bG18d\b|\bP85s\b|\bP11HD\b|\bP88s\b|\bA80HD\b|\bA80se\b|\bA10h\b|\bP89\b|\bP78s\b|\bG18\b|\bP85\b|\bA70h\b|\bA70\b|\bG17\b|\bP18\b|\bA80s\b|\bA11s\b|\bP88HD\b|\bA80h\b|\bP76s\b|\bP76h\b|\bP98\b|\bA10HD\b|\bP78\b|\bP88\b|\bA11\b|\bA10t\b|\bP76a\b|\bP76t\b|\bP76e\b|\bP85HD\b|\bP85a\b|\bP86\b|\bP75HD\b|\bP76v\b|\bA12\b|\bP75a\b|\bA15\b|\bP76Ti\b|\bP81HD\b|\bA10\b|\bT760VE\b|\bT720HD\b|\bP76\b|\bP73\b|\bP71\b|\bP72\b|\bT720SE\b|\bC520Ti\b|\bT760\b|\bT720VE\b|T720-3GE|T720-WiFi', + // Onda - http://www.onda-tablet.com/buy-android-onda.html?dir=desc&limit=all&order=price + 'OndaTablet' => '\b(V975i|Vi30|VX530|V701|Vi60|V701s|Vi50|V801s|V719|Vx610w|VX610W|V819i|Vi10|VX580W|Vi10|V711s|V813|V811|V820w|V820|Vi20|V711|VI30W|V712|V891w|V972|V819w|V820w|Vi60|V820w|V711|V813s|V801|V819|V975s|V801|V819|V819|V818|V811|V712|V975m|V101w|V961w|V812|V818|V971|V971s|V919|V989|V116w|V102w|V973|Vi40)\b[\s]+', + 'JaytechTablet' => 'TPC-PA762', + 'BlaupunktTablet' => 'Endeavour 800NG|Endeavour 1010', + // http://www.digma.ru/support/download/ + // @todo: Ebooks also (if requested) + 'DigmaTablet' => '\b(iDx10|iDx9|iDx8|iDx7|iDxD7|iDxD8|iDsQ8|iDsQ7|iDsQ8|iDsD10|iDnD7|3TS804H|iDsQ11|iDj7|iDs10)\b', + // http://www.evolioshop.com/ro/tablete-pc.html + // http://www.evolio.ro/support/downloads_static.html?cat=2 + // @todo: Research some more + 'EvolioTablet' => 'ARIA_Mini_wifi|Aria[ _]Mini|Evolio X10|Evolio X7|Evolio X8|\bEvotab\b|\bNeura\b', + // @todo http://www.lavamobiles.com/tablets-data-cards + 'LavaTablet' => 'QPAD E704|\bIvoryS\b|E-TAB IVORY|\bE-TAB\b', + // http://www.breezetablet.com/ + 'AocTablet' => 'MW0811|MW0812|MW0922|MTK8382|MW1031|MW0831|MW0821|MW0931|MW0712', + // http://www.mpmaneurope.com/en/products/internet-tablets-14/android-tablets-14/ + 'MpmanTablet' => 'MP11 OCTA|MP10 OCTA|MPQC1114|MPQC1004|MPQC994|MPQC974|MPQC973|MPQC804|MPQC784|MPQC780|\bMPG7\b|MPDCG75|MPDCG71|MPDC1006|MP101DC|MPDC9000|MPDC905|MPDC706HD|MPDC706|MPDC705|MPDC110|MPDC100|MPDC99|MPDC97|MPDC88|MPDC8|MPDC77|MP709|MID701|MID711|MID170|MPDC703|MPQC1010', + // https://www.celkonmobiles.com/?_a=categoryphones&sid=2 + 'CelkonTablet' => 'CT695|CT888|CT[\s]?910|CT7 Tab|CT9 Tab|CT3 Tab|CT2 Tab|CT1 Tab|C820|C720|\bCT-1\b', + // http://www.wolderelectronics.com/productos/manuales-y-guias-rapidas/categoria-2-miTab + 'WolderTablet' => 'miTab \b(DIAMOND|SPACE|BROOKLYN|NEO|FLY|MANHATTAN|FUNK|EVOLUTION|SKY|GOCAR|IRON|GENIUS|POP|MINT|EPSILON|BROADWAY|JUMP|HOP|LEGEND|NEW AGE|LINE|ADVANCE|FEEL|FOLLOW|LIKE|LINK|LIVE|THINK|FREEDOM|CHICAGO|CLEVELAND|BALTIMORE-GH|IOWA|BOSTON|SEATTLE|PHOENIX|DALLAS|IN 101|MasterChef)\b', + // http://www.mi.com/en + 'MiTablet' => '\bMI PAD\b|\bHM NOTE 1W\b', + // http://www.nbru.cn/index.html + 'NibiruTablet' => 'Nibiru M1|Nibiru Jupiter One', + // http://navroad.com/products/produkty/tablety/ + // http://navroad.com/products/produkty/tablety/ + 'NexoTablet' => 'NEXO NOVA|NEXO 10|NEXO AVIO|NEXO FREE|NEXO GO|NEXO EVO|NEXO 3G|NEXO SMART|NEXO KIDDO|NEXO MOBI', + // http://leader-online.com/new_site/product-category/tablets/ + // http://www.leader-online.net.au/List/Tablet + 'LeaderTablet' => 'TBLT10Q|TBLT10I|TBL-10WDKB|TBL-10WDKBO2013|TBL-W230V2|TBL-W450|TBL-W500|SV572|TBLT7I|TBA-AC7-8G|TBLT79|TBL-8W16|TBL-10W32|TBL-10WKB|TBL-W100', + // http://www.datawind.com/ubislate/ + 'UbislateTablet' => 'UbiSlate[\s]?7C', + // http://www.pocketbook-int.com/ru/support + 'PocketBookTablet' => 'Pocketbook', + // http://www.kocaso.com/product_tablet.html + 'KocasoTablet' => '\b(TB-1207)\b', + // http://global.hisense.com/product/asia/tablet/Sero7/201412/t20141215_91832.htm + 'HisenseTablet' => '\b(F5281|E2371)\b', + // http://www.tesco.com/direct/hudl/ + 'Hudl' => 'Hudl HT7S3|Hudl 2', + // http://www.telstra.com.au/home-phone/thub-2/ + 'TelstraTablet' => 'T-Hub2', + 'GenericTablet' => 'Android.*\b97D\b|Tablet(?!.*PC)|BNTV250A|MID-WCDMA|LogicPD Zoom2|\bA7EB\b|CatNova8|A1_07|CT704|CT1002|\bM721\b|rk30sdk|\bEVOTAB\b|M758A|ET904|ALUMIUM10|Smartfren Tab|Endeavour 1010|Tablet-PC-4|Tagi Tab|\bM6pro\b|CT1020W|arc 10HD|\bTP750\b|\bQTAQZ3\b' + ); + + /** + * List of mobile Operating Systems. + * + * @var array + */ + protected static $operatingSystems = array( + 'AndroidOS' => 'Android', + 'BlackBerryOS' => 'blackberry|\bBB10\b|rim tablet os', + 'PalmOS' => 'PalmOS|avantgo|blazer|elaine|hiptop|palm|plucker|xiino', + 'SymbianOS' => 'Symbian|SymbOS|Series60|Series40|SYB-[0-9]+|\bS60\b', + // @reference: http://en.wikipedia.org/wiki/Windows_Mobile + 'WindowsMobileOS' => 'Windows CE.*(PPC|Smartphone|Mobile|[0-9]{3}x[0-9]{3})|Window Mobile|Windows Phone [0-9.]+|WCE;', + // @reference: http://en.wikipedia.org/wiki/Windows_Phone + // http://wifeng.cn/?r=blog&a=view&id=106 + // http://nicksnettravels.builttoroam.com/post/2011/01/10/Bogus-Windows-Phone-7-User-Agent-String.aspx + // http://msdn.microsoft.com/library/ms537503.aspx + // https://msdn.microsoft.com/en-us/library/hh869301(v=vs.85).aspx + 'WindowsPhoneOS' => 'Windows Phone 10.0|Windows Phone 8.1|Windows Phone 8.0|Windows Phone OS|XBLWP7|ZuneWP7|Windows NT 6.[23]; ARM;', + 'iOS' => '\biPhone.*Mobile|\biPod|\biPad', + // http://en.wikipedia.org/wiki/MeeGo + // @todo: research MeeGo in UAs + 'MeeGoOS' => 'MeeGo', + // http://en.wikipedia.org/wiki/Maemo + // @todo: research Maemo in UAs + 'MaemoOS' => 'Maemo', + 'JavaOS' => 'J2ME/|\bMIDP\b|\bCLDC\b', // '|Java/' produces bug #135 + 'webOS' => 'webOS|hpwOS', + 'badaOS' => '\bBada\b', + 'BREWOS' => 'BREW', + ); + + /** + * List of mobile User Agents. + * + * IMPORTANT: This is a list of only mobile browsers. + * Mobile Detect 2.x supports only mobile browsers, + * it was never designed to detect all browsers. + * The change will come in 2017 in the 3.x release for PHP7. + * + * @var array + */ + protected static $browsers = array( + //'Vivaldi' => 'Vivaldi', + // @reference: https://developers.google.com/chrome/mobile/docs/user-agent + 'Chrome' => '\bCrMo\b|CriOS|Android.*Chrome/[.0-9]* (Mobile)?', + 'Dolfin' => '\bDolfin\b', + 'Opera' => 'Opera.*Mini|Opera.*Mobi|Android.*Opera|Mobile.*OPR/[0-9.]+|Coast/[0-9.]+', + 'Skyfire' => 'Skyfire', + 'Edge' => 'Mobile Safari/[.0-9]* Edge', + 'IE' => 'IEMobile|MSIEMobile', // |Trident/[.0-9]+ + 'Firefox' => 'fennec|firefox.*maemo|(Mobile|Tablet).*Firefox|Firefox.*Mobile|FxiOS', + 'Bolt' => 'bolt', + 'TeaShark' => 'teashark', + 'Blazer' => 'Blazer', + // @reference: http://developer.apple.com/library/safari/#documentation/AppleApplications/Reference/SafariWebContent/OptimizingforSafarioniPhone/OptimizingforSafarioniPhone.html#//apple_ref/doc/uid/TP40006517-SW3 + 'Safari' => 'Version.*Mobile.*Safari|Safari.*Mobile|MobileSafari', + // http://en.wikipedia.org/wiki/Midori_(web_browser) + //'Midori' => 'midori', + //'Tizen' => 'Tizen', + 'UCBrowser' => 'UC.*Browser|UCWEB', + 'baiduboxapp' => 'baiduboxapp', + 'baidubrowser' => 'baidubrowser', + // https://github.com/serbanghita/Mobile-Detect/issues/7 + 'DiigoBrowser' => 'DiigoBrowser', + // http://www.puffinbrowser.com/index.php + 'Puffin' => 'Puffin', + // http://mercury-browser.com/index.html + 'Mercury' => '\bMercury\b', + // http://en.wikipedia.org/wiki/Obigo_Browser + 'ObigoBrowser' => 'Obigo', + // http://en.wikipedia.org/wiki/NetFront + 'NetFront' => 'NF-Browser', + // @reference: http://en.wikipedia.org/wiki/Minimo + // http://en.wikipedia.org/wiki/Vision_Mobile_Browser + 'GenericBrowser' => 'NokiaBrowser|OviBrowser|OneBrowser|TwonkyBeamBrowser|SEMC.*Browser|FlyFlow|Minimo|NetFront|Novarra-Vision|MQQBrowser|MicroMessenger', + // @reference: https://en.wikipedia.org/wiki/Pale_Moon_(web_browser) + 'PaleMoon' => 'Android.*PaleMoon|Mobile.*PaleMoon', + ); + + /** + * Utilities. + * + * @var array + */ + protected static $utilities = array( + // Experimental. When a mobile device wants to switch to 'Desktop Mode'. + // http://scottcate.com/technology/windows-phone-8-ie10-desktop-or-mobile/ + // https://github.com/serbanghita/Mobile-Detect/issues/57#issuecomment-15024011 + // https://developers.facebook.com/docs/sharing/best-practices + 'Bot' => 'Googlebot|facebookexternalhit|AdsBot-Google|Google Keyword Suggestion|Facebot|YandexBot|YandexMobileBot|bingbot|ia_archiver|AhrefsBot|Ezooms|GSLFbot|WBSearchBot|Twitterbot|TweetmemeBot|Twikle|PaperLiBot|Wotbox|UnwindFetchor|Exabot|MJ12bot|YandexImages|TurnitinBot|Pingdom', + 'MobileBot' => 'Googlebot-Mobile|AdsBot-Google-Mobile|YahooSeeker/M1A1-R2D2', + 'DesktopMode' => 'WPDesktop', + 'TV' => 'SonyDTV|HbbTV', // experimental + 'WebKit' => '(webkit)[ /]([\w.]+)', + // @todo: Include JXD consoles. + 'Console' => '\b(Nintendo|Nintendo WiiU|Nintendo 3DS|PLAYSTATION|Xbox)\b', + 'Watch' => 'SM-V700', + ); + + /** + * All possible HTTP headers that represent the + * User-Agent string. + * + * @var array + */ + protected static $uaHttpHeaders = array( + // The default User-Agent string. + 'HTTP_USER_AGENT', + // Header can occur on devices using Opera Mini. + 'HTTP_X_OPERAMINI_PHONE_UA', + // Vodafone specific header: http://www.seoprinciple.com/mobile-web-community-still-angry-at-vodafone/24/ + 'HTTP_X_DEVICE_USER_AGENT', + 'HTTP_X_ORIGINAL_USER_AGENT', + 'HTTP_X_SKYFIRE_PHONE', + 'HTTP_X_BOLT_PHONE_UA', + 'HTTP_DEVICE_STOCK_UA', + 'HTTP_X_UCBROWSER_DEVICE_UA' + ); + + /** + * The individual segments that could exist in a User-Agent string. VER refers to the regular + * expression defined in the constant self::VER. + * + * @var array + */ + protected static $properties = array( + + // Build + 'Mobile' => 'Mobile/[VER]', + 'Build' => 'Build/[VER]', + 'Version' => 'Version/[VER]', + 'VendorID' => 'VendorID/[VER]', + + // Devices + 'iPad' => 'iPad.*CPU[a-z ]+[VER]', + 'iPhone' => 'iPhone.*CPU[a-z ]+[VER]', + 'iPod' => 'iPod.*CPU[a-z ]+[VER]', + //'BlackBerry' => array('BlackBerry[VER]', 'BlackBerry [VER];'), + 'Kindle' => 'Kindle/[VER]', + + // Browser + 'Chrome' => array('Chrome/[VER]', 'CriOS/[VER]', 'CrMo/[VER]'), + 'Coast' => array('Coast/[VER]'), + 'Dolfin' => 'Dolfin/[VER]', + // @reference: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/User-Agent/Firefox + 'Firefox' => array('Firefox/[VER]', 'FxiOS/[VER]'), + 'Fennec' => 'Fennec/[VER]', + // http://msdn.microsoft.com/en-us/library/ms537503(v=vs.85).aspx + // https://msdn.microsoft.com/en-us/library/ie/hh869301(v=vs.85).aspx + 'Edge' => 'Edge/[VER]', + 'IE' => array('IEMobile/[VER];', 'IEMobile [VER]', 'MSIE [VER];', 'Trident/[0-9.]+;.*rv:[VER]'), + // http://en.wikipedia.org/wiki/NetFront + 'NetFront' => 'NetFront/[VER]', + 'NokiaBrowser' => 'NokiaBrowser/[VER]', + 'Opera' => array( ' OPR/[VER]', 'Opera Mini/[VER]', 'Version/[VER]' ), + 'Opera Mini' => 'Opera Mini/[VER]', + 'Opera Mobi' => 'Version/[VER]', + 'UC Browser' => 'UC Browser[VER]', + 'MQQBrowser' => 'MQQBrowser/[VER]', + 'MicroMessenger' => 'MicroMessenger/[VER]', + 'baiduboxapp' => 'baiduboxapp/[VER]', + 'baidubrowser' => 'baidubrowser/[VER]', + 'SamsungBrowser' => 'SamsungBrowser/[VER]', + 'Iron' => 'Iron/[VER]', + // @note: Safari 7534.48.3 is actually Version 5.1. + // @note: On BlackBerry the Version is overwriten by the OS. + 'Safari' => array( 'Version/[VER]', 'Safari/[VER]' ), + 'Skyfire' => 'Skyfire/[VER]', + 'Tizen' => 'Tizen/[VER]', + 'Webkit' => 'webkit[ /][VER]', + 'PaleMoon' => 'PaleMoon/[VER]', + + // Engine + 'Gecko' => 'Gecko/[VER]', + 'Trident' => 'Trident/[VER]', + 'Presto' => 'Presto/[VER]', + 'Goanna' => 'Goanna/[VER]', + + // OS + 'iOS' => ' \bi?OS\b [VER][ ;]{1}', + 'Android' => 'Android [VER]', + 'BlackBerry' => array('BlackBerry[\w]+/[VER]', 'BlackBerry.*Version/[VER]', 'Version/[VER]'), + 'BREW' => 'BREW [VER]', + 'Java' => 'Java/[VER]', + // @reference: http://windowsteamblog.com/windows_phone/b/wpdev/archive/2011/08/29/introducing-the-ie9-on-windows-phone-mango-user-agent-string.aspx + // @reference: http://en.wikipedia.org/wiki/Windows_NT#Releases + 'Windows Phone OS' => array( 'Windows Phone OS [VER]', 'Windows Phone [VER]'), + 'Windows Phone' => 'Windows Phone [VER]', + 'Windows CE' => 'Windows CE/[VER]', + // http://social.msdn.microsoft.com/Forums/en-US/windowsdeveloperpreviewgeneral/thread/6be392da-4d2f-41b4-8354-8dcee20c85cd + 'Windows NT' => 'Windows NT [VER]', + 'Symbian' => array('SymbianOS/[VER]', 'Symbian/[VER]'), + 'webOS' => array('webOS/[VER]', 'hpwOS/[VER];'), + ); + + /** + * Construct an instance of this class. + * + * @param array $headers Specify the headers as injection. Should be PHP _SERVER flavored. + * If left empty, will use the global _SERVER['HTTP_*'] vars instead. + * @param string $userAgent Inject the User-Agent header. If null, will use HTTP_USER_AGENT + * from the $headers array instead. + */ + public function __construct( + array $headers = null, + $userAgent = null + ) { + $this->setHttpHeaders($headers); + $this->setUserAgent($userAgent); + } + + /** + * Get the current script version. + * This is useful for the demo.php file, + * so people can check on what version they are testing + * for mobile devices. + * + * @return string The version number in semantic version format. + */ + public static function getScriptVersion() + { + return self::VERSION; + } + + /** + * Set the HTTP Headers. Must be PHP-flavored. This method will reset existing headers. + * + * @param array $httpHeaders The headers to set. If null, then using PHP's _SERVER to extract + * the headers. The default null is left for backwards compatibility. + */ + public function setHttpHeaders($httpHeaders = null) + { + // use global _SERVER if $httpHeaders aren't defined + if (!is_array($httpHeaders) || !count($httpHeaders)) { + $httpHeaders = $_SERVER; + } + + // clear existing headers + $this->httpHeaders = array(); + + // Only save HTTP headers. In PHP land, that means only _SERVER vars that + // start with HTTP_. + foreach ($httpHeaders as $key => $value) { + if (substr($key, 0, 5) === 'HTTP_') { + $this->httpHeaders[$key] = $value; + } + } + + // In case we're dealing with CloudFront, we need to know. + $this->setCfHeaders($httpHeaders); + } + + /** + * Retrieves the HTTP headers. + * + * @return array + */ + public function getHttpHeaders() + { + return $this->httpHeaders; + } + + /** + * Retrieves a particular header. If it doesn't exist, no exception/error is caused. + * Simply null is returned. + * + * @param string $header The name of the header to retrieve. Can be HTTP compliant such as + * "User-Agent" or "X-Device-User-Agent" or can be php-esque with the + * all-caps, HTTP_ prefixed, underscore seperated awesomeness. + * + * @return string|null The value of the header. + */ + public function getHttpHeader($header) + { + // are we using PHP-flavored headers? + if (strpos($header, '_') === false) { + $header = str_replace('-', '_', $header); + $header = strtoupper($header); + } + + // test the alternate, too + $altHeader = 'HTTP_' . $header; + + //Test both the regular and the HTTP_ prefix + if (isset($this->httpHeaders[$header])) { + return $this->httpHeaders[$header]; + } elseif (isset($this->httpHeaders[$altHeader])) { + return $this->httpHeaders[$altHeader]; + } + + return null; + } + + public function getMobileHeaders() + { + return self::$mobileHeaders; + } + + /** + * Get all possible HTTP headers that + * can contain the User-Agent string. + * + * @return array List of HTTP headers. + */ + public function getUaHttpHeaders() + { + return self::$uaHttpHeaders; + } + + + /** + * Set CloudFront headers + * http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/header-caching.html#header-caching-web-device + * + * @param array $cfHeaders List of HTTP headers + * + * @return boolean If there were CloudFront headers to be set + */ + public function setCfHeaders($cfHeaders = null) { + // use global _SERVER if $cfHeaders aren't defined + if (!is_array($cfHeaders) || !count($cfHeaders)) { + $cfHeaders = $_SERVER; + } + + // clear existing headers + $this->cloudfrontHeaders = array(); + + // Only save CLOUDFRONT headers. In PHP land, that means only _SERVER vars that + // start with cloudfront-. + $response = false; + foreach ($cfHeaders as $key => $value) { + if (substr(strtolower($key), 0, 16) === 'http_cloudfront_') { + $this->cloudfrontHeaders[strtoupper($key)] = $value; + $response = true; + } + } + + return $response; + } + + /** + * Retrieves the cloudfront headers. + * + * @return array + */ + public function getCfHeaders() + { + return $this->cloudfrontHeaders; + } + + /** + * @param string $userAgent + * @return string + */ + private function prepareUserAgent($userAgent) { + $userAgent = trim($userAgent); + $userAgent = substr($userAgent, 0, 500); + return $userAgent; + } + + /** + * Set the User-Agent to be used. + * + * @param string $userAgent The user agent string to set. + * + * @return string|null + */ + public function setUserAgent($userAgent = null) + { + // Invalidate cache due to #375 + $this->cache = array(); + + if (false === empty($userAgent)) { + return $this->userAgent = $this->prepareUserAgent($userAgent); + } else { + $this->userAgent = null; + foreach ($this->getUaHttpHeaders() as $altHeader) { + if (false === empty($this->httpHeaders[$altHeader])) { // @todo: should use getHttpHeader(), but it would be slow. (Serban) + $this->userAgent .= $this->httpHeaders[$altHeader] . " "; + } + } + + if (!empty($this->userAgent)) { + return $this->userAgent = $this->prepareUserAgent($this->userAgent); + } + } + + if (count($this->getCfHeaders()) > 0) { + return $this->userAgent = 'Amazon CloudFront'; + } + return $this->userAgent = null; + } + + /** + * Retrieve the User-Agent. + * + * @return string|null The user agent if it's set. + */ + public function getUserAgent() + { + return $this->userAgent; + } + + /** + * Set the detection type. Must be one of self::DETECTION_TYPE_MOBILE or + * self::DETECTION_TYPE_EXTENDED. Otherwise, nothing is set. + * + * @deprecated since version 2.6.9 + * + * @param string $type The type. Must be a self::DETECTION_TYPE_* constant. The default + * parameter is null which will default to self::DETECTION_TYPE_MOBILE. + */ + public function setDetectionType($type = null) + { + if ($type === null) { + $type = self::DETECTION_TYPE_MOBILE; + } + + if ($type !== self::DETECTION_TYPE_MOBILE && $type !== self::DETECTION_TYPE_EXTENDED) { + return; + } + + $this->detectionType = $type; + } + + public function getMatchingRegex() + { + return $this->matchingRegex; + } + + public function getMatchesArray() + { + return $this->matchesArray; + } + + /** + * Retrieve the list of known phone devices. + * + * @return array List of phone devices. + */ + public static function getPhoneDevices() + { + return self::$phoneDevices; + } + + /** + * Retrieve the list of known tablet devices. + * + * @return array List of tablet devices. + */ + public static function getTabletDevices() + { + return self::$tabletDevices; + } + + /** + * Alias for getBrowsers() method. + * + * @return array List of user agents. + */ + public static function getUserAgents() + { + return self::getBrowsers(); + } + + /** + * Retrieve the list of known browsers. Specifically, the user agents. + * + * @return array List of browsers / user agents. + */ + public static function getBrowsers() + { + return self::$browsers; + } + + /** + * Retrieve the list of known utilities. + * + * @return array List of utilities. + */ + public static function getUtilities() + { + return self::$utilities; + } + + /** + * Method gets the mobile detection rules. This method is used for the magic methods $detect->is*(). + * + * @deprecated since version 2.6.9 + * + * @return array All the rules (but not extended). + */ + public static function getMobileDetectionRules() + { + static $rules; + + if (!$rules) { + $rules = array_merge( + self::$phoneDevices, + self::$tabletDevices, + self::$operatingSystems, + self::$browsers + ); + } + + return $rules; + + } + + /** + * Method gets the mobile detection rules + utilities. + * The reason this is separate is because utilities rules + * don't necessary imply mobile. This method is used inside + * the new $detect->is('stuff') method. + * + * @deprecated since version 2.6.9 + * + * @return array All the rules + extended. + */ + public function getMobileDetectionRulesExtended() + { + static $rules; + + if (!$rules) { + // Merge all rules together. + $rules = array_merge( + self::$phoneDevices, + self::$tabletDevices, + self::$operatingSystems, + self::$browsers, + self::$utilities + ); + } + + return $rules; + } + + /** + * Retrieve the current set of rules. + * + * @deprecated since version 2.6.9 + * + * @return array + */ + public function getRules() + { + if ($this->detectionType == self::DETECTION_TYPE_EXTENDED) { + return self::getMobileDetectionRulesExtended(); + } else { + return self::getMobileDetectionRules(); + } + } + + /** + * Retrieve the list of mobile operating systems. + * + * @return array The list of mobile operating systems. + */ + public static function getOperatingSystems() + { + return self::$operatingSystems; + } + + /** + * Check the HTTP headers for signs of mobile. + * This is the fastest mobile check possible; it's used + * inside isMobile() method. + * + * @return bool + */ + public function checkHttpHeadersForMobile() + { + + foreach ($this->getMobileHeaders() as $mobileHeader => $matchType) { + if (isset($this->httpHeaders[$mobileHeader])) { + if (is_array($matchType['matches'])) { + foreach ($matchType['matches'] as $_match) { + if (strpos($this->httpHeaders[$mobileHeader], $_match) !== false) { + return true; + } + } + + return false; + } else { + return true; + } + } + } + + return false; + + } + + /** + * Magic overloading method. + * + * @method boolean is[...]() + * @param string $name + * @param array $arguments + * @return mixed + * @throws BadMethodCallException when the method doesn't exist and doesn't start with 'is' + */ + public function __call($name, $arguments) + { + // make sure the name starts with 'is', otherwise + if (substr($name, 0, 2) !== 'is') { + throw new BadMethodCallException("No such method exists: $name"); + } + + $this->setDetectionType(self::DETECTION_TYPE_MOBILE); + + $key = substr($name, 2); + + return $this->matchUAAgainstKey($key); + } + + /** + * Find a detection rule that matches the current User-agent. + * + * @param null $userAgent deprecated + * @return boolean + */ + protected function matchDetectionRulesAgainstUA($userAgent = null) + { + // Begin general search. + foreach ($this->getRules() as $_regex) { + if (empty($_regex)) { + continue; + } + + if ($this->match($_regex, $userAgent)) { + return true; + } + } + + return false; + } + + /** + * Search for a certain key in the rules array. + * If the key is found then try to match the corresponding + * regex against the User-Agent. + * + * @param string $key + * + * @return boolean + */ + protected function matchUAAgainstKey($key) + { + // Make the keys lowercase so we can match: isIphone(), isiPhone(), isiphone(), etc. + $key = strtolower($key); + if (false === isset($this->cache[$key])) { + + // change the keys to lower case + $_rules = array_change_key_case($this->getRules()); + + if (false === empty($_rules[$key])) { + $this->cache[$key] = $this->match($_rules[$key]); + } + + if (false === isset($this->cache[$key])) { + $this->cache[$key] = false; + } + } + + return $this->cache[$key]; + } + + /** + * Check if the device is mobile. + * Returns true if any type of mobile device detected, including special ones + * @param null $userAgent deprecated + * @param null $httpHeaders deprecated + * @return bool + */ + public function isMobile($userAgent = null, $httpHeaders = null) + { + + if ($httpHeaders) { + $this->setHttpHeaders($httpHeaders); + } + + if ($userAgent) { + $this->setUserAgent($userAgent); + } + + // Check specifically for cloudfront headers if the useragent === 'Amazon CloudFront' + if ($this->getUserAgent() === 'Amazon CloudFront') { + $cfHeaders = $this->getCfHeaders(); + if(array_key_exists('HTTP_CLOUDFRONT_IS_MOBILE_VIEWER', $cfHeaders) && $cfHeaders['HTTP_CLOUDFRONT_IS_MOBILE_VIEWER'] === 'true') { + return true; + } + } + + $this->setDetectionType(self::DETECTION_TYPE_MOBILE); + + if ($this->checkHttpHeadersForMobile()) { + return true; + } else { + return $this->matchDetectionRulesAgainstUA(); + } + + } + + /** + * Check if the device is a tablet. + * Return true if any type of tablet device is detected. + * + * @param string $userAgent deprecated + * @param array $httpHeaders deprecated + * @return bool + */ + public function isTablet($userAgent = null, $httpHeaders = null) + { + // Check specifically for cloudfront headers if the useragent === 'Amazon CloudFront' + if ($this->getUserAgent() === 'Amazon CloudFront') { + $cfHeaders = $this->getCfHeaders(); + if(array_key_exists('HTTP_CLOUDFRONT_IS_TABLET_VIEWER', $cfHeaders) && $cfHeaders['HTTP_CLOUDFRONT_IS_TABLET_VIEWER'] === 'true') { + return true; + } + } + + $this->setDetectionType(self::DETECTION_TYPE_MOBILE); + + foreach (self::$tabletDevices as $_regex) { + if ($this->match($_regex, $userAgent)) { + return true; + } + } + + return false; + } + + /** + * This method checks for a certain property in the + * userAgent. + * @todo: The httpHeaders part is not yet used. + * + * @param string $key + * @param string $userAgent deprecated + * @param string $httpHeaders deprecated + * @return bool|int|null + */ + public function is($key, $userAgent = null, $httpHeaders = null) + { + // Set the UA and HTTP headers only if needed (eg. batch mode). + if ($httpHeaders) { + $this->setHttpHeaders($httpHeaders); + } + + if ($userAgent) { + $this->setUserAgent($userAgent); + } + + $this->setDetectionType(self::DETECTION_TYPE_EXTENDED); + + return $this->matchUAAgainstKey($key); + } + + /** + * Some detection rules are relative (not standard), + * because of the diversity of devices, vendors and + * their conventions in representing the User-Agent or + * the HTTP headers. + * + * This method will be used to check custom regexes against + * the User-Agent string. + * + * @param $regex + * @param string $userAgent + * @return bool + * + * @todo: search in the HTTP headers too. + */ + public function match($regex, $userAgent = null) + { + $match = (bool) preg_match(sprintf('#%s#is', $regex), (false === empty($userAgent) ? $userAgent : $this->userAgent), $matches); + // If positive match is found, store the results for debug. + if ($match) { + $this->matchingRegex = $regex; + $this->matchesArray = $matches; + } + + return $match; + } + + /** + * Get the properties array. + * + * @return array + */ + public static function getProperties() + { + return self::$properties; + } + + /** + * Prepare the version number. + * + * @todo Remove the error supression from str_replace() call. + * + * @param string $ver The string version, like "2.6.21.2152"; + * + * @return float + */ + public function prepareVersionNo($ver) + { + $ver = str_replace(array('_', ' ', '/'), '.', $ver); + $arrVer = explode('.', $ver, 2); + + if (isset($arrVer[1])) { + $arrVer[1] = @str_replace('.', '', $arrVer[1]); // @todo: treat strings versions. + } + + return (float) implode('.', $arrVer); + } + + /** + * Check the version of the given property in the User-Agent. + * Will return a float number. (eg. 2_0 will return 2.0, 4.3.1 will return 4.31) + * + * @param string $propertyName The name of the property. See self::getProperties() array + * keys for all possible properties. + * @param string $type Either self::VERSION_TYPE_STRING to get a string value or + * self::VERSION_TYPE_FLOAT indicating a float value. This parameter + * is optional and defaults to self::VERSION_TYPE_STRING. Passing an + * invalid parameter will default to the this type as well. + * + * @return string|float The version of the property we are trying to extract. + */ + public function version($propertyName, $type = self::VERSION_TYPE_STRING) + { + if (empty($propertyName)) { + return false; + } + + // set the $type to the default if we don't recognize the type + if ($type !== self::VERSION_TYPE_STRING && $type !== self::VERSION_TYPE_FLOAT) { + $type = self::VERSION_TYPE_STRING; + } + + $properties = self::getProperties(); + + // Check if the property exists in the properties array. + if (true === isset($properties[$propertyName])) { + + // Prepare the pattern to be matched. + // Make sure we always deal with an array (string is converted). + $properties[$propertyName] = (array) $properties[$propertyName]; + + foreach ($properties[$propertyName] as $propertyMatchString) { + + $propertyPattern = str_replace('[VER]', self::VER, $propertyMatchString); + + // Identify and extract the version. + preg_match(sprintf('#%s#is', $propertyPattern), $this->userAgent, $match); + + if (false === empty($match[1])) { + $version = ($type == self::VERSION_TYPE_FLOAT ? $this->prepareVersionNo($match[1]) : $match[1]); + + return $version; + } + + } + + } + + return false; + } + + /** + * Retrieve the mobile grading, using self::MOBILE_GRADE_* constants. + * + * @return string One of the self::MOBILE_GRADE_* constants. + */ + public function mobileGrade() + { + $isMobile = $this->isMobile(); + + if ( + // Apple iOS 4-7.0 – Tested on the original iPad (4.3 / 5.0), iPad 2 (4.3 / 5.1 / 6.1), iPad 3 (5.1 / 6.0), iPad Mini (6.1), iPad Retina (7.0), iPhone 3GS (4.3), iPhone 4 (4.3 / 5.1), iPhone 4S (5.1 / 6.0), iPhone 5 (6.0), and iPhone 5S (7.0) + $this->is('iOS') && $this->version('iPad', self::VERSION_TYPE_FLOAT) >= 4.3 || + $this->is('iOS') && $this->version('iPhone', self::VERSION_TYPE_FLOAT) >= 4.3 || + $this->is('iOS') && $this->version('iPod', self::VERSION_TYPE_FLOAT) >= 4.3 || + + // Android 2.1-2.3 - Tested on the HTC Incredible (2.2), original Droid (2.2), HTC Aria (2.1), Google Nexus S (2.3). Functional on 1.5 & 1.6 but performance may be sluggish, tested on Google G1 (1.5) + // Android 3.1 (Honeycomb) - Tested on the Samsung Galaxy Tab 10.1 and Motorola XOOM + // Android 4.0 (ICS) - Tested on a Galaxy Nexus. Note: transition performance can be poor on upgraded devices + // Android 4.1 (Jelly Bean) - Tested on a Galaxy Nexus and Galaxy 7 + ( $this->version('Android', self::VERSION_TYPE_FLOAT)>2.1 && $this->is('Webkit') ) || + + // Windows Phone 7.5-8 - Tested on the HTC Surround (7.5), HTC Trophy (7.5), LG-E900 (7.5), Nokia 800 (7.8), HTC Mazaa (7.8), Nokia Lumia 520 (8), Nokia Lumia 920 (8), HTC 8x (8) + $this->version('Windows Phone OS', self::VERSION_TYPE_FLOAT) >= 7.5 || + + // Tested on the Torch 9800 (6) and Style 9670 (6), BlackBerry® Torch 9810 (7), BlackBerry Z10 (10) + $this->is('BlackBerry') && $this->version('BlackBerry', self::VERSION_TYPE_FLOAT) >= 6.0 || + // Blackberry Playbook (1.0-2.0) - Tested on PlayBook + $this->match('Playbook.*Tablet') || + + // Palm WebOS (1.4-3.0) - Tested on the Palm Pixi (1.4), Pre (1.4), Pre 2 (2.0), HP TouchPad (3.0) + ( $this->version('webOS', self::VERSION_TYPE_FLOAT) >= 1.4 && $this->match('Palm|Pre|Pixi') ) || + // Palm WebOS 3.0 - Tested on HP TouchPad + $this->match('hp.*TouchPad') || + + // Firefox Mobile 18 - Tested on Android 2.3 and 4.1 devices + ( $this->is('Firefox') && $this->version('Firefox', self::VERSION_TYPE_FLOAT) >= 18 ) || + + // Chrome for Android - Tested on Android 4.0, 4.1 device + ( $this->is('Chrome') && $this->is('AndroidOS') && $this->version('Android', self::VERSION_TYPE_FLOAT) >= 4.0 ) || + + // Skyfire 4.1 - Tested on Android 2.3 device + ( $this->is('Skyfire') && $this->version('Skyfire', self::VERSION_TYPE_FLOAT) >= 4.1 && $this->is('AndroidOS') && $this->version('Android', self::VERSION_TYPE_FLOAT) >= 2.3 ) || + + // Opera Mobile 11.5-12: Tested on Android 2.3 + ( $this->is('Opera') && $this->version('Opera Mobi', self::VERSION_TYPE_FLOAT) >= 11.5 && $this->is('AndroidOS') ) || + + // Meego 1.2 - Tested on Nokia 950 and N9 + $this->is('MeeGoOS') || + + // Tizen (pre-release) - Tested on early hardware + $this->is('Tizen') || + + // Samsung Bada 2.0 - Tested on a Samsung Wave 3, Dolphin browser + // @todo: more tests here! + $this->is('Dolfin') && $this->version('Bada', self::VERSION_TYPE_FLOAT) >= 2.0 || + + // UC Browser - Tested on Android 2.3 device + ( ($this->is('UC Browser') || $this->is('Dolfin')) && $this->version('Android', self::VERSION_TYPE_FLOAT) >= 2.3 ) || + + // Kindle 3 and Fire - Tested on the built-in WebKit browser for each + ( $this->match('Kindle Fire') || + $this->is('Kindle') && $this->version('Kindle', self::VERSION_TYPE_FLOAT) >= 3.0 ) || + + // Nook Color 1.4.1 - Tested on original Nook Color, not Nook Tablet + $this->is('AndroidOS') && $this->is('NookTablet') || + + // Chrome Desktop 16-24 - Tested on OS X 10.7 and Windows 7 + $this->version('Chrome', self::VERSION_TYPE_FLOAT) >= 16 && !$isMobile || + + // Safari Desktop 5-6 - Tested on OS X 10.7 and Windows 7 + $this->version('Safari', self::VERSION_TYPE_FLOAT) >= 5.0 && !$isMobile || + + // Firefox Desktop 10-18 - Tested on OS X 10.7 and Windows 7 + $this->version('Firefox', self::VERSION_TYPE_FLOAT) >= 10.0 && !$isMobile || + + // Internet Explorer 7-9 - Tested on Windows XP, Vista and 7 + $this->version('IE', self::VERSION_TYPE_FLOAT) >= 7.0 && !$isMobile || + + // Opera Desktop 10-12 - Tested on OS X 10.7 and Windows 7 + $this->version('Opera', self::VERSION_TYPE_FLOAT) >= 10 && !$isMobile + ){ + return self::MOBILE_GRADE_A; + } + + if ( + $this->is('iOS') && $this->version('iPad', self::VERSION_TYPE_FLOAT)<4.3 || + $this->is('iOS') && $this->version('iPhone', self::VERSION_TYPE_FLOAT)<4.3 || + $this->is('iOS') && $this->version('iPod', self::VERSION_TYPE_FLOAT)<4.3 || + + // Blackberry 5.0: Tested on the Storm 2 9550, Bold 9770 + $this->is('Blackberry') && $this->version('BlackBerry', self::VERSION_TYPE_FLOAT) >= 5 && $this->version('BlackBerry', self::VERSION_TYPE_FLOAT)<6 || + + //Opera Mini (5.0-6.5) - Tested on iOS 3.2/4.3 and Android 2.3 + ($this->version('Opera Mini', self::VERSION_TYPE_FLOAT) >= 5.0 && $this->version('Opera Mini', self::VERSION_TYPE_FLOAT) <= 7.0 && + ($this->version('Android', self::VERSION_TYPE_FLOAT) >= 2.3 || $this->is('iOS')) ) || + + // Nokia Symbian^3 - Tested on Nokia N8 (Symbian^3), C7 (Symbian^3), also works on N97 (Symbian^1) + $this->match('NokiaN8|NokiaC7|N97.*Series60|Symbian/3') || + + // @todo: report this (tested on Nokia N71) + $this->version('Opera Mobi', self::VERSION_TYPE_FLOAT) >= 11 && $this->is('SymbianOS') + ){ + return self::MOBILE_GRADE_B; + } + + if ( + // Blackberry 4.x - Tested on the Curve 8330 + $this->version('BlackBerry', self::VERSION_TYPE_FLOAT) <= 5.0 || + // Windows Mobile - Tested on the HTC Leo (WinMo 5.2) + $this->match('MSIEMobile|Windows CE.*Mobile') || $this->version('Windows Mobile', self::VERSION_TYPE_FLOAT) <= 5.2 || + + // Tested on original iPhone (3.1), iPhone 3 (3.2) + $this->is('iOS') && $this->version('iPad', self::VERSION_TYPE_FLOAT) <= 3.2 || + $this->is('iOS') && $this->version('iPhone', self::VERSION_TYPE_FLOAT) <= 3.2 || + $this->is('iOS') && $this->version('iPod', self::VERSION_TYPE_FLOAT) <= 3.2 || + + // Internet Explorer 7 and older - Tested on Windows XP + $this->version('IE', self::VERSION_TYPE_FLOAT) <= 7.0 && !$isMobile + ){ + return self::MOBILE_GRADE_C; + } + + // All older smartphone platforms and featurephones - Any device that doesn't support media queries + // will receive the basic, C grade experience. + return self::MOBILE_GRADE_C; + } +} diff --git a/wp-content/plugins/wp-rocket/inc/vendors/ip_in_range.php b/wp-content/plugins/wp-rocket/inc/vendors/ip_in_range.php new file mode 100644 index 0000000..92b06b7 --- /dev/null +++ b/wp-content/plugins/wp-rocket/inc/vendors/ip_in_range.php @@ -0,0 +1,209 @@ + + * 10 January 2008 + * Version: 1.2 + * + * Source website: http://www.pgregg.com/projects/php/ip_in_range/ + * Version 1.2 + * + * This software is Donationware - if you feel you have benefited from + * the use of this tool then please consider a donation. The value of + * which is entirely left up to your discretion. + * http://www.pgregg.com/donate/ + * + * Please do not remove this header, or source attibution from this file. + */ + +/* +* Modified by James Greene to include IPV6 support +* (original version only supported IPV4). +* 21 May 2012 +*/ + +// In order to simplify working with IP addresses (in binary) and their +// netmasks, it is easier to ensure that the binary strings are padded +// with zeros out to 32 characters - IP addresses are 32 bit numbers +function rocket_decbin32($dec) { + return str_pad(decbin($dec), 32, '0', STR_PAD_LEFT); +} + +// This function takes 2 arguments, an IP address and a "range" in several +// different formats. +// Network ranges can be specified as: +// 1. Wildcard format: 1.2.3.* +// 2. CIDR format: 1.2.3/24 OR 1.2.3.4/255.255.255.0 +// 3. Start-End IP format: 1.2.3.0-1.2.3.255 +// The function will return true if the supplied IP is within the range. +// Note little validation is done on the range inputs - it expects you to +// use one of the above 3 formats. +function rocket_ipv4_in_range($ip, $range) { + if (strpos($range, '/') !== false) { + // $range is in IP/NETMASK format + list($range, $netmask) = explode('/', $range, 2); + if (strpos($netmask, '.') !== false) { + // $netmask is a 255.255.0.0 format + $netmask = str_replace('*', '0', $netmask); + $netmask_dec = ip2long($netmask); + return ( (ip2long($ip) & $netmask_dec) == (ip2long($range) & $netmask_dec) ); + } else { + // $netmask is a CIDR size block + // fix the range argument + $x = explode('.', $range); + while(count($x)<4) $x[] = '0'; + list($a,$b,$c,$d) = $x; + $range = sprintf("%u.%u.%u.%u", empty($a)?'0':$a, empty($b)?'0':$b,empty($c)?'0':$c,empty($d)?'0':$d); + $range_dec = ip2long($range); + $ip_dec = ip2long($ip); + + # Strategy 1 - Create the netmask with 'netmask' 1s and then fill it to 32 with 0s + #$netmask_dec = bindec(str_pad('', $netmask, '1') . str_pad('', 32-$netmask, '0')); + + # Strategy 2 - Use math to create it + $wildcard_dec = pow(2, (32-$netmask)) - 1; + $netmask_dec = ~ $wildcard_dec; + + return (($ip_dec & $netmask_dec) == ($range_dec & $netmask_dec)); + } + } else { + // range might be 255.255.*.* or 1.2.3.0-1.2.3.255 + if (strpos($range, '*') !==false) { // a.b.*.* format + // Just convert to A-B format by setting * to 0 for A and 255 for B + $lower = str_replace('*', '0', $range); + $upper = str_replace('*', '255', $range); + $range = "$lower-$upper"; + } + + if (strpos($range, '-')!==false) { // A-B format + list($lower, $upper) = explode('-', $range, 2); + $lower_dec = (float)sprintf("%u",ip2long($lower)); + $upper_dec = (float)sprintf("%u",ip2long($upper)); + $ip_dec = (float)sprintf("%u",ip2long($ip)); + return ( ($ip_dec>=$lower_dec) && ($ip_dec<=$upper_dec) ); + } + return false; + } +} + +function rocket_ip2long6($ip) { + if (substr_count($ip, '::')) { + $ip = str_replace('::', str_repeat(':0000', 8 - substr_count($ip, ':')) . ':', $ip); + } + + $ip = explode(':', $ip); + $r_ip = ''; + foreach ($ip as $v) { + $r_ip .= str_pad( base_convert( preg_replace("/[^0-9a-fA-F]/", "", $v ), 16, 2 ), 16, 0, STR_PAD_LEFT ); + } + + return base_convert($r_ip, 2, 10); +} + +// Get the ipv6 full format and return it as a decimal value. +function get_rocket_ipv6_full($ip) { + $pieces = explode ("/", $ip, 2); + $left_piece = $pieces[0]; + $right_piece = null; + if (count($pieces) > 1) $right_piece = $pieces[1]; + + // Extract out the main IP pieces + $ip_pieces = explode("::", $left_piece, 2); + $main_ip_piece = $ip_pieces[0]; + $last_ip_piece = null; + if (count($ip_pieces) > 1) $last_ip_piece = $ip_pieces[1]; + + // Pad out the shorthand entries. + $main_ip_pieces = explode(":", $main_ip_piece); + foreach($main_ip_pieces as $key=>$val) { + $main_ip_pieces[$key] = str_pad($main_ip_pieces[$key], 4, "0", STR_PAD_LEFT); + } + + // Check to see if the last IP block (part after ::) is set + $last_piece = ""; + $size = count($main_ip_pieces); + if (trim($last_ip_piece) != "") { + $last_piece = str_pad($last_ip_piece, 4, "0", STR_PAD_LEFT); + + // Build the full form of the IPV6 address considering the last IP block set + for ($i = $size; $i < 7; $i++) { + $main_ip_pieces[$i] = "0000"; + } + $main_ip_pieces[7] = $last_piece; + } + else { + // Build the full form of the IPV6 address + for ($i = $size; $i < 8; $i++) { + $main_ip_pieces[$i] = "0000"; + } + } + + // Rebuild the final long form IPV6 address + $final_ip = implode(":", $main_ip_pieces); + + return rocket_ip2long6($final_ip); +} + +// Determine whether the IPV6 address is within range. +// $ip is the IPV6 address in decimal format to check if its within the IP range created by the cloudflare IPV6 address, $range_ip. +// $ip and $range_ip are converted to full IPV6 format. +// Returns true if the IPV6 address, $ip, is within the range from $range_ip. False otherwise. +function rocket_ipv6_in_range($ip, $range_ip) { + $pieces = explode ("/", $range_ip, 2); + $left_piece = $pieces[0]; + $right_piece = $pieces[1]; + + // Extract out the main IP pieces + $ip_pieces = explode("::", $left_piece, 2); + $main_ip_piece = $ip_pieces[0]; + $last_ip_piece = $ip_pieces[1]; + + // Pad out the shorthand entries. + $main_ip_pieces = explode(":", $main_ip_piece); + foreach($main_ip_pieces as $key=>$val) { + $main_ip_pieces[$key] = str_pad($main_ip_pieces[$key], 4, "0", STR_PAD_LEFT); + } + + // Create the first and last pieces that will denote the IPV6 range. + $first = $main_ip_pieces; + $last = $main_ip_pieces; + + // Check to see if the last IP block (part after ::) is set + $last_piece = ""; + $size = count($main_ip_pieces); + if (trim($last_ip_piece) != "") { + $last_piece = str_pad($last_ip_piece, 4, "0", STR_PAD_LEFT); + + // Build the full form of the IPV6 address considering the last IP block set + for ($i = $size; $i < 7; $i++) { + $first[$i] = "0000"; + $last[$i] = "ffff"; + } + $main_ip_pieces[7] = $last_piece; + } + else { + // Build the full form of the IPV6 address + for ($i = $size; $i < 8; $i++) { + $first[$i] = "0000"; + $last[$i] = "ffff"; + } + } + + // Rebuild the final long form IPV6 address + $first = rocket_ip2long6(implode(":", $first)); + $last = rocket_ip2long6(implode(":", $last)); + $in_range = ($ip >= $first && $ip <= $last); + + return $in_range; +} diff --git a/wp-content/plugins/wp-rocket/languages/rocket-ar.mo b/wp-content/plugins/wp-rocket/languages/rocket-ar.mo new file mode 100644 index 0000000000000000000000000000000000000000..afe2ad36f7cd2133614e2bb651c5e76fd7584069 GIT binary patch literal 30906 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 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-rocket/languages/rocket-ar.po b/wp-content/plugins/wp-rocket/languages/rocket-ar.po new file mode 100644 index 0000000..d13e8ca --- /dev/null +++ b/wp-content/plugins/wp-rocket/languages/rocket-ar.po @@ -0,0 +1,3057 @@ +# Copyright (C) 2016 WP Rocket +# This file is distributed under the same license as the WP Rocket package. +# Translators: +# wpmedia , 2019 +# Mohamed Elsa3dy , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: WP Rocket 3.3.7\n" +"Report-Msgid-Bugs-To: http://wp-rocket.me/\n" +"POT-Creation-Date: 2019-08-26 11:14-0400\n" +"PO-Revision-Date: 2019-08-26 15:14+0000\n" +"Last-Translator: Mohamed Elsa3dy , 2019\n" +"Language-Team: Arabic (https://www.transifex.com/wp-media/teams/18133/ar/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ar\n" +"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" +"X-Generator: Poedit 1.8.11\n" +"X-Poedit-Basepath: ..\n" +"X-Poedit-KeywordsList: __;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c\n" +"X-Poedit-SearchPath-0: .\n" +"X-Poedit-SearchPathExcluded-0: assets\n" +"X-Poedit-SearchPathExcluded-1: src\n" +"X-Poedit-SearchPathExcluded-2: vendor\n" +"X-Poedit-SearchPathExcluded-3: node_modules\n" +"X-Poedit-SearchPathExcluded-4: tests\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Textdomain-Support: yes\n" + +#: inc/3rd-party/hosting/flywheel.php:15 inc/3rd-party/hosting/godaddy.php:15 +#: inc/3rd-party/hosting/o2switch.php:15 +#: inc/3rd-party/hosting/pressidium.php:15 inc/3rd-party/hosting/savvii.php:15 +#: inc/3rd-party/hosting/wp-serveur.php:24 +#: inc/3rd-party/hosting/wpengine.php:15 +#, php-format +msgid "" +"Your site is hosted on %s, we have enabled Varnish auto-purge for " +"compatibility." +msgstr "" +"موقعك يعمل علي استضافة %s,وقد فعلنا ميزة الحذف التلقائي لخدمة Varnish من أجل" +" تحقيق التوافق." + +#: inc/3rd-party/hosting/kinsta.php:150 +#, php-format +msgid "" +"Your installation seems to be missing core Kinsta files managing Cache " +"clearing and CDN, which will prevent your Kinsta installation and WP Rocket " +"from working correctly. Please get in touch with Kinsta support through your" +" %1$sMyKinsta%2$s account to resolve this issue." +msgstr "" + +#: inc/3rd-party/plugins/jetpack.php:86 +msgid "Jetpack XML Sitemaps" +msgstr "خرائط الموقع Jetpack XML" + +#: inc/3rd-party/plugins/jetpack.php:88 +msgid "Preload the sitemap from the Jetpack plugin" +msgstr "التحميل المسبق لخرائط الموقع من اضافة جيت باك" + +#: inc/3rd-party/plugins/jetpack.php:96 +#: inc/3rd-party/plugins/seo/all-in-one-seo-pack.php:88 +#: inc/3rd-party/plugins/seo/rank-math-seo.php:34 +#: inc/3rd-party/plugins/seo/seopress.php:85 +#: inc/3rd-party/plugins/seo/the-seo-framework.php:123 +#: inc/3rd-party/plugins/seo/yoast-seo.php:86 +#, php-format +msgid "" +"We automatically detected the sitemap generated by the %s plugin. You can " +"check the option to preload it." +msgstr "" +"اكتشفنا تلقائيا خريطة الموقع وتم إنشائها بواسطة إضافة %s. ويمكنك التحقق من " +"خيار التحميل المسبق للخرائط." + +#: inc/3rd-party/plugins/seo/all-in-one-seo-pack.php:86 +msgid "All in One SEO XML sitemap" +msgstr "خرائط اضافة All in One SEO Pack" + +#: inc/3rd-party/plugins/seo/rank-math-seo.php:32 +msgid "Rank Math XML sitemap" +msgstr "" + +#: inc/3rd-party/plugins/seo/seopress.php:83 +msgid "SEOPress XML sitemap" +msgstr "" + +#: inc/3rd-party/plugins/seo/the-seo-framework.php:121 +msgid "The SEO Framework XML sitemap" +msgstr "" + +#: inc/3rd-party/plugins/seo/yoast-seo.php:84 +msgid "Yoast SEO XML sitemap" +msgstr "خرائط الموقع Yoast SEO XML" + +#: inc/admin/admin.php:13 inc/common/admin-bar.php:311 +#: inc/deprecated/deprecated.php:1789 +msgid "Support" +msgstr "الدعم" + +#: inc/admin/admin.php:15 +msgid "Docs" +msgstr "مستندات المساعدة" + +#: inc/admin/admin.php:17 inc/common/admin-bar.php:299 +msgid "FAQ" +msgstr "الأسئلة المتكررة" + +#: inc/admin/admin.php:19 inc/common/admin-bar.php:46 +msgid "Settings" +msgstr "إعدادات" + +#: inc/admin/admin.php:64 inc/admin/admin.php:86 inc/admin/admin.php:105 +msgid "Clear this cache" +msgstr "مسح الملفات المخذنة" + +#: inc/admin/admin.php:249 inc/admin/admin.php:264 +#: inc/classes/class-wp-rocket-requirements-check.php:204 +#: inc/classes/class-wp-rocket-requirements-check.php:214 +#, php-format +msgid "%s Update Rollback" +msgstr "%s التراجع عن التحديث" + +#: inc/admin/admin.php:290 +#, php-format +msgid "%1$sReturn to WP Rocket%2$s or %3$sgo to Plugins page%2$s" +msgstr "" + +#: inc/admin/admin.php:529 +msgid "Settings import failed: you do not have the permissions to do this." +msgstr "" + +#: inc/admin/admin.php:533 +msgid "Settings import failed: no file uploaded." +msgstr "فشل استيراد الإعدادات: لم يتم تحميل أي ملف." + +#: inc/admin/admin.php:537 +msgid "Settings import failed: incorrect filename." +msgstr "فشل استيراد الإعدادات: اسم الملف غير صحيح." + +#: inc/admin/admin.php:546 +msgid "Settings import failed: incorrect filetype." +msgstr "فشل استيراد الإعدادات: نوع الملف غير صحيح." + +#: inc/admin/admin.php:554 +msgid "Settings import failed: " +msgstr "فشل استيراد الإعدادات:" + +#: inc/admin/admin.php:571 +msgid "Settings import failed: unexpected file content." +msgstr "فشل استيراد الإعدادات: محتوى الملف غير صحيح." + +#: inc/admin/admin.php:592 +msgid "Settings imported and saved." +msgstr "تم إستعادة الإعدادات وحفظها." + +#: inc/admin/options.php:101 +#, php-format +msgid "Cloudflare development mode error: %s" +msgstr "خطا بكلاودفلير وضع التطوير : %s" + +#: inc/admin/options.php:107 +#, php-format +msgid "Cloudflare development mode %s" +msgstr "وضع التطوير كلاودفلير %s" + +#: inc/admin/options.php:124 +#, php-format +msgid "Cloudflare cache level error: %s" +msgstr "خطأ بمستوي الملفات المخزنة بكلاودفلير : %s" + +#: inc/admin/options.php:128 +msgctxt "Cloudflare caching level" +msgid "Standard" +msgstr "قياسي" + +#: inc/admin/options.php:134 +#, php-format +msgid "Cloudflare cache level set to %s" +msgstr "ضبط مستوي التخزين المؤقت لكلاودفلير علي %s " + +#: inc/admin/options.php:146 +#, php-format +msgid "Cloudflare minification error: %s" +msgstr "خطأ في خاصية تصغير الملفات بكلاودفلير: %s" + +#: inc/admin/options.php:152 +#, php-format +msgid "Cloudflare minification %s" +msgstr "خدمة تصغير الملفات لكلاودفلير %s" + +#: inc/admin/options.php:164 +#, php-format +msgid "Cloudflare rocket loader error: %s" +msgstr "خطأ في خدمة التحميل الصاروخي بكلاودفلير: %s" + +#: inc/admin/options.php:170 +#, php-format +msgid "Cloudflare rocket loader %s" +msgstr "خدمة التحميل الصاروخي بكلاودفلير %s" + +#: inc/admin/options.php:182 +#, php-format +msgid "Cloudflare browser cache error: %s" +msgstr "خطأ في خدمة التخزين المؤقت للمتصفح بكلاودفلير: %s" + +#: inc/admin/options.php:188 +#, php-format +msgid "Cloudflare browser cache set to %s seconds" +msgstr "ضبط خدمة التخزين المؤقت للمتصفح علي %s ثواني" + +#: inc/admin/options.php:241 inc/classes/admin/settings/class-page.php:692 +msgid "Excluded CSS Files" +msgstr "ملفات الـ CSS المستثناة" + +#: inc/admin/options.php:242 inc/classes/admin/settings/class-page.php:784 +msgid "Excluded Inline JavaScript" +msgstr "إستثناء الجافاسكربت المتضمنة بالصفحة" + +#: inc/admin/options.php:243 inc/classes/admin/settings/class-page.php:802 +msgid "Excluded JavaScript Files" +msgstr "إستثناء ملفات JavaScript" + +#: inc/admin/options.php:244 inc/classes/admin/settings/class-page.php:1128 +msgid "Never Cache URL(s)" +msgstr "لا تخزن هذه (العناوين) أبداً" + +#: inc/admin/options.php:245 inc/classes/admin/settings/class-page.php:1144 +msgid "Never Cache User Agent(s)" +msgstr "" + +#: inc/admin/options.php:246 inc/classes/admin/settings/class-page.php:1149 +msgid "Always Purge URL(s)" +msgstr "" + +#: inc/admin/options.php:247 inc/classes/admin/settings/class-page.php:1443 +msgid "Exclude files from CDN" +msgstr "" + +#: inc/admin/options.php:265 +#, php-format +msgid "%1$s: %2$s." +msgstr "" + +#: inc/admin/options.php:275 +msgid "The following pattern is invalid and has been removed:" +msgid_plural "The following patterns are invalid and have been removed:" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" + +#: inc/admin/ui/meta-boxes.php:14 inc/admin/ui/notices.php:955 +#: inc/common/admin-bar.php:65 inc/common/admin-bar.php:118 +#: views/settings/page-sections/dashboard.php:115 +msgid "Clear cache" +msgstr "مسح ملفات التخزين المؤقت" + +#: inc/admin/ui/meta-boxes.php:36 +msgid "WP Rocket Options" +msgstr "خيارات WP Rocket" + +#: inc/admin/ui/meta-boxes.php:66 +msgid "Never cache this page" +msgstr "لا تقم بتخزين هذه الصفحة" + +#: inc/admin/ui/meta-boxes.php:70 +msgid "Activate these options on this post:" +msgstr "تفعيل هذه الخيارات علي هذه المقالة:" + +#: inc/admin/ui/meta-boxes.php:73 +msgid "LazyLoad for images" +msgstr "التحميل الكسول للصور" + +#: inc/admin/ui/meta-boxes.php:74 +msgid "LazyLoad for iframes/videos" +msgstr "التحميل الكسول للفيديو و الإطارات الداخلية Iframes" + +#: inc/admin/ui/meta-boxes.php:75 +#: inc/classes/admin/settings/class-page.php:615 +msgid "Minify HTML" +msgstr "تصغير HTML" + +#: inc/admin/ui/meta-boxes.php:76 +msgid "Minify/combine CSS" +msgstr "تصغير / دمج CSS" + +#: inc/admin/ui/meta-boxes.php:77 +msgid "Minify/combine JS" +msgstr "تصغير / دمج JS" + +#: inc/admin/ui/meta-boxes.php:78 +#: inc/classes/admin/settings/class-page.php:1413 +#: inc/classes/admin/settings/class-page.php:1424 +#: inc/deprecated/deprecated.php:1775 +msgid "CDN" +msgstr "شبكة توصيل المحتوى CDN" + +#: inc/admin/ui/meta-boxes.php:79 +msgid "Optimize CSS Delivery" +msgstr "تحسين تحميل ملفات الـ CSS" + +#: inc/admin/ui/meta-boxes.php:80 +msgid "Defer JS" +msgstr "تأجيل ملفات JS" + +#: inc/admin/ui/meta-boxes.php:86 +#, php-format +msgid "Activate first the %s option." +msgstr "تفعيل أولا خيار %s." + +#: inc/admin/ui/meta-boxes.php:102 +#, php-format +msgid "" +"%1$sNote:%2$s None of these options will be applied if this post has been " +"excluded from cache in the global cache settings." +msgstr "" + +#: inc/admin/ui/notices.php:24 inc/admin/ui/notices.php:34 +#, php-format +msgid "" +"%1$s has not been deactivated due to missing writing permissions.
      \n" +"Make %2$s writeable and retry deactivation, or force deactivation now:" +msgstr "" +"%1$s لم يتم إلغاء تفعيلها بسبب عدم وجود أذونات الكتابة.
      \n" +"اجعل %2$s يدعم الكتابة واعد محاولة التعطيل أو الغاء التفعيل الاجباري الآن:" + +#: inc/admin/ui/notices.php:83 +#, php-format +msgid "" +"%s: One or more plugins have been enabled or disabled, " +"clear the cache if they affect the front end of your site." +msgstr "" +"%s: تم تفعيل أو تعطيل واحد أو أكثر من الاضافات، امسح ذاكرة " +"التخزين المؤقت إذا كانت تؤثر على الواجهة الأمامية لموقعك." + +#: inc/admin/ui/notices.php:196 +#, php-format +msgid "" +"%s: The following plugins are not compatible with this " +"plugin and may cause unexpected results:" +msgstr "" +"%s: الإضافات التالية غير متوافقة مع هذه الإضافة وقد تسبب " +"نتائج غير متوقعة:" + +#: inc/admin/ui/notices.php:202 +msgid "Deactivate" +msgstr "تعطيل" + +#: inc/admin/ui/notices.php:243 +msgid "" +"WP Rocket Footer JS is not an official add-on. It prevents some options in " +"WP Rocket from working correctly. Please deactivate it if you have problems." +msgstr "" + +#: inc/admin/ui/notices.php:283 +#, php-format +msgid "" +"Endurance Cache is currently enabled, which will conflict with WP Rocket " +"Cache. Please set the Endurance Cache cache level to Off (Level 0) on the " +"%1$sSettings > General%2$s page to prevent any issues." +msgstr "" + +#: inc/admin/ui/notices.php:305 +#, php-format +msgid "" +"%1$s: A custom permalink structure is required for the plugin to work " +"properly. %2$sGo to permalinks settings%3$s" +msgstr "" +"%1$s: مطلوب ضبط الروابط الدائمة المخصصة لتعمل الاضافة بشكل صحيح. %2$sالذهاب " +"إلي اعدادات الروابط الدائمة%3$s" + +#: inc/admin/ui/notices.php:442 +#, php-format +msgid "" +"%s could not modify the .htaccess file due to missing writing permissions." +msgstr "" + +#: inc/admin/ui/notices.php:448 inc/admin/ui/notices.php:1032 +#, php-format +msgid "Troubleshoot: %1$sHow to make system files writeable%2$s" +msgstr "اصلاح المشكلة: %1$sكيفية جعل ملفات النظام تسمح الكتابة%2$s" + +#: inc/admin/ui/notices.php:450 inc/admin/ui/notices.php:1034 +msgid "" +"https://docs.wp-rocket.me/article/626-how-to-make-system-files-htaccess-wp-" +"config-writeable/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" + +#: inc/admin/ui/notices.php:456 +msgid "" +"Don’t worry, WP Rocket’s page caching and settings will still function " +"correctly." +msgstr "" + +#: inc/admin/ui/notices.php:456 +msgid "" +"For optimal performance, adding the following lines into your .htaccess is " +"recommended (not required):" +msgstr "" + +#: inc/admin/ui/notices.php:600 +#, php-format +msgid "" +"%1$s is good to go! %2$sTest your load time%4$s, or visit your " +"%3$ssettings%4$s." +msgstr "" +"%1$s من الجيد الذهاب إلي %2$sلاختبار سرعة تحميل الموقع%4$s, أو زيارة " +"%3$sاعدادات%4$s." + +#: inc/admin/ui/notices.php:721 +msgid "" +"Would you allow WP Rocket to collect non-sensitive diagnostic data from this" +" website?" +msgstr "" +"هل تسمح لـ WP Rocket بجمع البيانات التشخيصية غير الحساسة من هذا الموقع؟" + +#: inc/admin/ui/notices.php:722 +msgid "This would help us to improve WP Rocket for you in the future." +msgstr "هذا سيساعدنا علي تحسين WP Rocket لك في المستقبل." + +#: inc/admin/ui/notices.php:728 +msgid "What info will we collect?" +msgstr "ما هي المعلومات التي سنجمعها؟" + +#: inc/admin/ui/notices.php:733 +msgid "" +"Below is a detailed view of all data WP Rocket will collect if granted " +"permission. WP Rocket will never transmit any domain names or email " +"addresses (except for license validation), IP addresses, or third-party API " +"keys." +msgstr "" +"فيما يلي عرض مفصل لجميع بيانات WP Rocket التي سيتم تجميعها إذا منح الإذن، لن" +" تقوم WP Rocket بنقل أي أسماء نطاقات او عناوين بريد إلكتروني (بإستثناء " +"التحقق من صلاحية الترخيص) أو عناوين IP أو مفاتيح الجهات الخارجية API." + +#: inc/admin/ui/notices.php:742 +msgid "Yes, allow" +msgstr "نعم، السماح" + +#: inc/admin/ui/notices.php:745 +msgid "No, thanks" +msgstr "لا، شكراً" + +#: inc/admin/ui/notices.php:783 +msgid "Thank you!" +msgstr "شكراً لك!" + +#: inc/admin/ui/notices.php:788 +msgid "WP Rocket now collects these metrics from your website:" +msgstr "اضافة WP Rokcet تجمع الآن هذه المقاييس من موقعك:" + +#: inc/admin/ui/notices.php:825 +#, php-format +msgid "%s: Cache cleared." +msgstr "%s: تم حذف ذاكرة التخزين المؤقت." + +#: inc/admin/ui/notices.php:830 +#, php-format +msgid "%s: Post cache cleared." +msgstr "%s: تم حذف ذاكرة التخزين المؤقت للمقال." + +#: inc/admin/ui/notices.php:835 +#, php-format +msgid "%s: Term cache cleared." +msgstr "%s: تم حذف ذاكرة التخزين المؤقت للمصطلح." + +#: inc/admin/ui/notices.php:840 +#, php-format +msgid "%s: User cache cleared." +msgstr "%s: تم حذف ذاكرة التخزين المؤقت للمستخدم." + +#: inc/admin/ui/notices.php:910 +msgid "" +"The following scheduled event failed to run. This may indicate the CRON " +"system is not running properly, which can prevent some WP Rocket features " +"from working as intended:" +msgid_plural "" +"The following scheduled events failed to run. This may indicate the CRON " +"system is not running properly, which can prevent some WP Rocket features " +"from working as intended:" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" + +#: inc/admin/ui/notices.php:919 +msgid "Please contact your host to check if CRON is working." +msgstr "" + +#: inc/admin/ui/notices.php:958 +msgid "Stop Preload" +msgstr "إيقاف التحميل المسبق" + +#: inc/admin/ui/notices.php:976 +msgid "Force deactivation " +msgstr "تعطيل اجباري" + +#: inc/admin/ui/notices.php:989 +msgid "The following code should have been written to this file:" +msgstr "يجب اضافة التعليمات البرمجية التالية إلي هذا الملف:" + +#: inc/admin/ui/notices.php:999 views/settings/page-sections/dashboard.php:45 +msgid "Dismiss this notice." +msgstr "تجاهل هذا الإشعار." + +#: inc/admin/ui/notices.php:1020 +#, php-format +msgid "%s cannot configure itself due to missing writing permissions." +msgstr "%s التكوين التلقائي لا يعمل بسبب عدم وجود أذونات الكتابة." + +#: inc/admin/ui/notices.php:1026 +#, php-format +msgid "Affected file/folder: %s" +msgstr "الملف/المجلد المتأثر: %s" + +#: inc/classes/admin/Database/class-optimization.php:41 +#: inc/classes/admin/settings/class-page.php:1289 +msgid "Revisions" +msgstr "المراجعات" + +#: inc/classes/admin/Database/class-optimization.php:42 +#: inc/classes/admin/settings/class-page.php:1299 +msgid "Auto Drafts" +msgstr "المسودات التلقائية" + +#: inc/classes/admin/Database/class-optimization.php:43 +#: inc/classes/admin/settings/class-page.php:1309 +msgid "Trashed Posts" +msgstr "" + +#: inc/classes/admin/Database/class-optimization.php:44 +#: inc/classes/admin/settings/class-page.php:1319 +msgid "Spam Comments" +msgstr "" + +#: inc/classes/admin/Database/class-optimization.php:45 +#: inc/classes/admin/settings/class-page.php:1329 +msgid "Trashed Comments" +msgstr "" + +#: inc/classes/admin/Database/class-optimization.php:46 +#: inc/classes/admin/settings/class-page.php:1339 +msgid "Expired transients" +msgstr "معلومات عابرة transients أنتهت صلاحيتها" + +#: inc/classes/admin/Database/class-optimization.php:47 +msgid "Transients" +msgstr "" + +#: inc/classes/admin/Database/class-optimization.php:48 +msgid "Tables" +msgstr "" + +#: inc/classes/admin/class-logs.php:124 +msgid "The debug file could not be deleted." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:212 +#: inc/classes/admin/settings/class-page.php:213 +msgid "Unavailable" +msgstr "غير متاح" + +#: inc/classes/admin/settings/class-page.php:327 +#: inc/deprecated/deprecated.php:1791 +#: views/settings/page-sections/dashboard.php:72 +msgid "License" +msgstr "الرخصة" + +#: inc/classes/admin/settings/class-page.php:344 +msgid "API key" +msgstr "مفتاح API" + +#: inc/classes/admin/settings/class-page.php:359 +msgid "Email address" +msgstr "البريد الإلكتروني" + +#: inc/classes/admin/settings/class-page.php:388 +msgid "Dashboard" +msgstr "لوحة التحكم" + +#: inc/classes/admin/settings/class-page.php:389 +msgid "Get help, account info" +msgstr "للمساعدة، ومعلومات الحساب" + +#: inc/classes/admin/settings/class-page.php:398 +msgid "My Status" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:408 views/settings/page.php:71 +msgid "Rocket Tester" +msgstr "مختبري النسخة التجريبية" + +#: inc/classes/admin/settings/class-page.php:409 +msgid "I am part of the WP Rocket Beta Testing Program." +msgstr "أنا جزء من برنامج اختبار الاضافة التجريبية." + +#: inc/classes/admin/settings/class-page.php:417 views/settings/page.php:89 +msgid "Rocket Analytics" +msgstr "تحليلات الاضافة:" + +#: inc/classes/admin/settings/class-page.php:419 +#, php-format +msgid "" +"I agree to share anonymous data with the development team to help improve WP" +" Rocket. %1$sWhat info will we collect?%2$s" +msgstr "" +"أوافق على مشاركة بيانات مجهولة مع فريق التطوير للمساعدة في تحسين اضافة WP " +"Rocket. %1$sما المعلومات التي نجمعها؟%2$s" + +#: inc/classes/admin/settings/class-page.php:447 +msgid "Cache" +msgstr "التخزين المؤقت" + +#: inc/classes/admin/settings/class-page.php:448 +msgid "Basic cache options" +msgstr "الإعدادات الأساسية للتخزين المؤقت" + +#: inc/classes/admin/settings/class-page.php:455 +msgid "Mobile Cache" +msgstr "التخزين المؤقت للأجهزة المحمولة:" + +#: inc/classes/admin/settings/class-page.php:457 +msgid "Speed up your site for mobile visitors." +msgstr "تسريع موقعك لزوار الاجهزة المحمول." + +#: inc/classes/admin/settings/class-page.php:462 +msgid "" +"We detected you use a plugin that requires a separate cache for mobile, and " +"automatically enabled this option for compatibility." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:466 +msgid "User Cache" +msgstr "التخزين المؤقت للأعضاء:" + +#: inc/classes/admin/settings/class-page.php:469 +#, php-format +msgid "" +"%1$sUser cache%2$s is great when you have user-specific or restricted " +"content on your website." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:477 +msgid "Cache Lifespan" +msgstr "عمر ملفات التخزين المؤقت" + +#: inc/classes/admin/settings/class-page.php:480 +#, php-format +msgid "" +"Cache lifespan is the period of time after which all cache files are " +"removed.
      Enable %1$spreloading%2$s for the cache to be rebuilt " +"automatically after lifespan expiration." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:494 +msgid "Enable caching for logged-in WordPress users" +msgstr "تفعيل التخزين المؤقت للمستخدمين الذين قاموا بتسجيل الدخول" + +#: inc/classes/admin/settings/class-page.php:502 +msgid "Enable caching for mobile devices" +msgstr "تفعيل التخزين المؤقت للأجهزة المحمولة." + +#: inc/classes/admin/settings/class-page.php:517 +msgid "Separate cache files for mobile devices" +msgstr "إنشاء ملفات منفصلة للتخزين المؤقت للأجهزة المحمولة." + +#: inc/classes/admin/settings/class-page.php:519 +#, php-format +msgid "" +"%1$sMobile cache%2$s works safest with both options enabled. When in doubt, " +"keep both." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:535 +msgid "" +"Specify time after which the global cache is cleared
      (0 = unlimited )" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:537 +#, php-format +msgid "" +"Reduce lifespan to 10 hours or less if you notice issues that seem to appear" +" periodically. %1$sWhy?%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:543 +msgid "Minutes" +msgstr "دقائق" + +#: inc/classes/admin/settings/class-page.php:544 +msgid "Hours" +msgstr "ساعات" + +#: inc/classes/admin/settings/class-page.php:545 +msgid "Days" +msgstr "أيام" + +#: inc/classes/admin/settings/class-page.php:571 +msgid "File Optimization" +msgstr "تحسين الملفات" + +#: inc/classes/admin/settings/class-page.php:572 +msgid "Optimize CSS & JS" +msgstr "تحسين ملفات الـ CSS و JS" + +#: inc/classes/admin/settings/class-page.php:579 +msgid "Basic Settings" +msgstr "الإعدادات الأساسية" + +#: inc/classes/admin/settings/class-page.php:586 +#: inc/classes/admin/settings/class-page.php:596 +#: inc/classes/admin/settings/class-page.php:606 +#, php-format +msgid "" +"%1$s Minification is currently activated in Autoptimize. If" +" you want to use %2$s’s minification, disable those options in Autoptimize." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:589 +msgid "CSS Files" +msgstr "ملفات التنسيق CSS" + +#: inc/classes/admin/settings/class-page.php:599 +msgid "JavaScript Files" +msgstr "ملفات JavaScript" + +#: inc/classes/admin/settings/class-page.php:619 +msgid "Minifying HTML removes whitespace and comments to reduce the size." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:630 +msgid "Combine Google Fonts files" +msgstr "دمج ملفات خطوط جوجل" + +#: inc/classes/admin/settings/class-page.php:631 +msgid "Combining Google Fonts will reduce the number of HTTP requests." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:639 +msgid "Remove query strings from static resources" +msgstr "إزالة معلمات الاستعلام من الملفات الثابتة" + +#: inc/classes/admin/settings/class-page.php:641 +#, php-format +msgid "" +"Removes the version query string from static files (e.g. style.css?ver=1.0) " +"and encodes it into the filename instead (e.g. style-1.0.css). Can improve " +"your GTMetrix score. %1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:649 +msgid "Minify CSS files" +msgstr "تصغير ملفات CSS" + +#: inc/classes/admin/settings/class-page.php:650 +msgid "Minify CSS removes whitespace and comments to reduce the file size." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:663 +#: inc/classes/admin/settings/class-page.php:685 +#: inc/classes/admin/settings/class-page.php:755 +#: inc/classes/admin/settings/class-page.php:777 +msgid "This could break things!" +msgstr "هذا قد يسبب أخطاء!" + +#: inc/classes/admin/settings/class-page.php:664 +#: inc/classes/admin/settings/class-page.php:686 +#: inc/classes/admin/settings/class-page.php:756 +#: inc/classes/admin/settings/class-page.php:778 +msgid "" +"If you notice any errors on your website after having activated this " +"setting, just deactivate it again, and your site will be back to normal." +msgstr "" +"إذا لاحظت اي أخطاء علي موقعك بعد تفعيل هذا الخيار، فقط قم بتعطيله مرة أخري، " +"وسيعود الموقع بشكل طبيعي مرة أخري." + +#: inc/classes/admin/settings/class-page.php:665 +msgid "Activate minify CSS" +msgstr "تفعيل تصغير ملفات CSS" + +#: inc/classes/admin/settings/class-page.php:670 +msgid "Combine CSS files (Enable Minify CSS files to select)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:672 +#, php-format +msgid "" +"Combine CSS merges all your files into 1, reducing HTTP requests. Not " +"recommended if your site uses HTTP/2. %1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:687 +msgid "Activate combine CSS" +msgstr "تفعيل دمج ملفات CSS" + +#: inc/classes/admin/settings/class-page.php:693 +msgid "" +"Specify URLs of CSS files to be excluded from minification and concatenation" +" (one per line)." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:694 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*).css " +"wildcards to exclude all CSS files located at a specific path." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:707 +msgid "Optimize CSS delivery" +msgstr "تحسين تحميل ملفات الـ CSS" + +#: inc/classes/admin/settings/class-page.php:714 +#, php-format +msgctxt "WP Critical CSS compatibility" +msgid "" +"Optimize CSS Delivery is currently handled by the %1$s plugin. If you want " +"to use WP Rocket’s Optimize CSS Delivery option, disable the %1$s plugin." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:716 +#, php-format +msgid "" +"Optimize CSS delivery eliminates render-blocking CSS on your website for " +"faster perceived load time. %1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:727 +msgid "Fallback critical CSS" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:732 +#, php-format +msgid "" +"Provides a fallback if auto-generated critical path CSS is incomplete. " +"%1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:741 +msgid "Minify JavaScript files" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:742 +msgid "" +"Minify JavaScript removes whitespace and comments to reduce the file size." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:757 +msgid "Activate minify JavaScript" +msgstr "تفعيل تصغير ملفات الجافاسكربت" + +#: inc/classes/admin/settings/class-page.php:762 +msgid "" +"Combine JavaScript files (Enable Minify JavaScript files to select)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:764 +#, php-format +msgid "" +"Combine JavaScript files combines your site’s internal, 3rd party and inline" +" JS reducing HTTP requests. Not recommended if your site uses HTTP/2. " +"%1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:779 +msgid "Activate combine JavaScript" +msgstr "تفعيل دمج الجافاسكربت" + +#: inc/classes/admin/settings/class-page.php:786 +#, php-format +msgid "" +"Specify patterns of inline JavaScript to be excluded from concatenation (one" +" per line). %1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:803 +msgid "" +"Specify URLs of JavaScript files to be excluded from minification and " +"concatenation (one per line)." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:804 +msgid "" +"Internal: The domain part of the URL will be stripped " +"automatically. Use (.*).js wildcards to exclude all JS files located at a " +"specific path." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:806 +#, php-format +msgid "" +"3rd Party: Use either the full URL path or only the domain " +"name, to exclude external JS. %1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:822 +msgid "Load JavaScript deferred" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:824 +#, php-format +msgid "" +"Load JavaScript deferred eliminates render-blocking JS on your site and can " +"improve load time. %1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:835 +msgid "Safe Mode for jQuery (recommended)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:836 +msgid "" +"Safe mode for jQuery for deferred JS ensures support for inline jQuery " +"references from themes and plugins by loading jQuery at the top of the " +"document as a render-blocking script.
      Deactivating may result in " +"broken functionality, test thoroughly!" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:861 +msgid "Media" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:862 +msgid "LazyLoad, emojis, embeds" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:869 +msgid "LazyLoad" +msgstr "التحميل الكسول" + +#: inc/classes/admin/settings/class-page.php:872 +#, php-format +msgid "" +"It can improve actual and perceived loading time as images, iframes, and " +"videos will be loaded only as they enter (or about to enter) the viewport " +"and reduces the number of HTTP requests. %1$sMore Info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:879 +#, php-format +msgid "" +"Lazyload is currently activated in Autoptimize. If you want" +" to use %1$s’s lazyload, disable this option in Autoptimize." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:882 +msgid "Emoji 👻" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:884 +msgid "" +"Use default emoji of visitor's browser instead of loading emoji from " +"WordPress.org" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:888 +msgid "Embeds" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:890 +msgid "" +"Prevents others from embedding content from your site, prevents you from " +"embedding content from other (non-whitelisted) sites, and removes JavaScript" +" requests related to WordPress embeds" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:900 +msgid "Enable for images" +msgstr "تمكين للصور" + +#: inc/classes/admin/settings/class-page.php:911 +msgctxt "Avada" +msgid "" +"Lazyload for images is currently activated in Avada. If you want to use WP " +"Rocket’s LazyLoad, disable this option in Avada." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:919 +msgid "Enable for iframes and videos" +msgstr "تمكين للفيديو و الإطارات الداخلية Iframes" + +#: inc/classes/admin/settings/class-page.php:934 +msgid "Replace YouTube iframe with preview image" +msgstr "استبدل اطار يوتيوب بصورة المعاينة" + +#: inc/classes/admin/settings/class-page.php:935 +msgid "" +"This can significantly improve your loading time if you have a lot of " +"YouTube videos on a page." +msgstr "" +"يمكن أن يؤدي ذلك إلي تحسين وقت التحميل بشكل كبير إذا كان لديك الكثير من " +"مقاطع فيديو يوتيوب بالصفحة." + +#: inc/classes/admin/settings/class-page.php:947 +msgid "Disable Emoji" +msgstr "تعطيل الايموجي الرموز التعبيرية" + +#: inc/classes/admin/settings/class-page.php:948 +msgid "Disable Emoji will reduce the number of external HTTP requests." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:956 +msgid "Disable WordPress embeds" +msgstr "تعطيل تضمينات ووردبريس" + +#: inc/classes/admin/settings/class-page.php:978 +#: inc/classes/admin/settings/class-page.php:988 +#: inc/deprecated/deprecated.php:1778 +msgid "Preload" +msgstr "التحميل المسبق" + +#: inc/classes/admin/settings/class-page.php:979 +msgid "Generate cache files" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:991 +#, php-format +msgid "" +"When you enable preloading WP Rocket will generate the cache starting with " +"the links on your homepage followed by the sitemaps you specify. Preloading " +"is automatically triggered when you add or update content and can also be " +"manually triggered from the admin bar or from the %1$sWP Rocket " +"Dashboard%2$s." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:999 +msgid "Prefetch DNS Requests" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1001 +msgid "" +"DNS prefetching can make external files load faster, especially on mobile " +"networks" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1015 +msgid "Activate Preloading" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1034 +msgid "Activate sitemap-based cache preloading" +msgstr "تفعيل التحميل المسبق للخرائط" + +#: inc/classes/admin/settings/class-page.php:1053 +msgid "Sitemaps for preloading" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1057 +msgid "Specify XML sitemap(s) to be used for preloading" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1067 +msgid "URLs to prefetch" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1068 +msgid "" +"Specify external hosts to be prefetched (no http:, one per " +"line)" +msgstr "" +"حدد الروابط الخارجية المراد جلبها مسبقا (لا تضفhttp:, رابط لكل " +"سطر)" + +#: inc/classes/admin/settings/class-page.php:1091 +msgid "Advanced Rules" +msgstr "الاعدادت المتقدمة" + +#: inc/classes/admin/settings/class-page.php:1092 +msgid "Fine-tune cache rules" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1101 +msgid "" +"Sensitive pages like custom login/logout URLs should be excluded from cache." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1104 +msgctxt "plugin name" +msgid "WooCommerce" +msgstr "WooCommerce" + +#: inc/classes/admin/settings/class-page.php:1106 +msgctxt "plugin name" +msgid "Easy Digital Downloads" +msgstr "Easy Digital Downloads" + +#: inc/classes/admin/settings/class-page.php:1108 +msgctxt "plugin name" +msgid "iThemes Exchange" +msgstr "iThemes Exchange" + +#: inc/classes/admin/settings/class-page.php:1110 +msgctxt "plugin name" +msgid "Jigoshop" +msgstr "Jigoshop" + +#: inc/classes/admin/settings/class-page.php:1112 +msgctxt "plugin name" +msgid "WP-Shop" +msgstr "WP-Shop" + +#: inc/classes/admin/settings/class-page.php:1118 +#, php-format +msgid "" +"
      Cart, checkout and \"my account\" pages set in " +"%1$s%2$s%3$s will be detected and never cached by default." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1139 +msgid "Never Cache Cookies" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1158 +msgid "Cache Query String(s)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1161 +#, php-format +msgid "" +"%1$sCache for query strings%2$s enables you to force caching for specific " +"GET parameters." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1175 +msgid "" +"Specify URLs of pages or posts that should never be cached (one per line)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1176 +#: inc/classes/admin/settings/class-page.php:1204 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*) " +"wildcards to address multiple URLs under a given path." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1185 +msgid "" +"Specify the IDs of cookies that, when set in the visitor's browser, should " +"prevent a page from getting cached (one per line)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1193 +msgid "" +"Specify user agent strings that should never see cached pages (one per line)" +msgstr "" +"تحديد عناوين وكلاء المستخدمين user agents التي لن يتم إستخدام خدمة التخزين " +"المؤقت معها (رابط واحد لكل سطر)" + +#: inc/classes/admin/settings/class-page.php:1194 +msgid "Use (.*) wildcards to detect parts of UA strings." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1203 +msgid "" +"Specify URLs you always want purged from cache whenever you update any post " +"or page (one per line)" +msgstr "" +"حدد العناوين التي سيتم إزالتها دائما عند تحديث أي مقالة أو صفحة (رابط لكل " +"سطر)" + +#: inc/classes/admin/settings/class-page.php:1212 +msgid "Specify query strings for caching (one per line)" +msgstr "تحديد معلمات الاستعلام للتخزين المؤقت (رابط لكل سطر)" + +#: inc/classes/admin/settings/class-page.php:1240 +#: inc/deprecated/deprecated.php:1777 +msgid "Database" +msgstr "قاعدة البيانات" + +#: inc/classes/admin/settings/class-page.php:1241 +msgid "Optimize, reduce bloat" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1250 +msgid "Post Cleanup" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1252 +msgid "" +"Post revisions and drafts will be permanently deleted. Do not use this " +"option if you need to retain revisions or drafts." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1260 +msgid "Comments Cleanup" +msgstr "تنظيف التعليقات" + +#: inc/classes/admin/settings/class-page.php:1262 +msgid "Spam and trashed comments will be permanently deleted." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1266 +msgid "Transients Cleanup" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1268 +msgid "" +"Transients are temporary options; they are safe to remove. They will be " +"automatically regenerated as your plugins require them." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1272 +msgid "Database Cleanup" +msgstr "تنظيف قاعدة البيانات" + +#: inc/classes/admin/settings/class-page.php:1274 +msgid "Reduces overhead of database tables" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1278 +msgid "Automatic cleanup" +msgstr "تنظيف تلقائي" + +#: inc/classes/admin/settings/class-page.php:1291 +#, php-format +msgid "%s revision in your database." +msgid_plural "%s revisions in your database." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" + +#: inc/classes/admin/settings/class-page.php:1301 +#, php-format +msgid "%s draft in your database." +msgid_plural "%s drafts in your database." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" + +#: inc/classes/admin/settings/class-page.php:1311 +#, php-format +msgid "%s trashed post in your database." +msgid_plural "%s trashed posts in your database." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" + +#: inc/classes/admin/settings/class-page.php:1321 +#, php-format +msgid "%s spam comment in your database." +msgid_plural "%s spam comments in your database." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" + +#: inc/classes/admin/settings/class-page.php:1331 +#, php-format +msgid "%s trashed comment in your database." +msgid_plural "%s trashed comments in your database." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" + +#: inc/classes/admin/settings/class-page.php:1341 +#, php-format +msgid "%s expired transient in your database." +msgid_plural "%s expired transients in your database." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" + +#: inc/classes/admin/settings/class-page.php:1349 +msgid "All transients" +msgstr "كل المعلومات العابرة Transients " + +#: inc/classes/admin/settings/class-page.php:1351 +#, php-format +msgid "%s transient in your database." +msgid_plural "%s transients in your database." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" + +#: inc/classes/admin/settings/class-page.php:1359 +msgid "Optimize Tables" +msgstr "تحسين جداول قواعد البيانات" + +#: inc/classes/admin/settings/class-page.php:1361 +#, php-format +msgid "%s table to optimize in your database." +msgid_plural "%s tables to optimize in your database." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" + +#: inc/classes/admin/settings/class-page.php:1372 +msgid "Schedule Automatic Cleanup" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1384 +msgid "Frequency" +msgstr "المعدل" + +#: inc/classes/admin/settings/class-page.php:1392 +msgid "Daily" +msgstr "يومي" + +#: inc/classes/admin/settings/class-page.php:1393 +msgid "Weekly" +msgstr "أسبوعي" + +#: inc/classes/admin/settings/class-page.php:1394 +msgid "Monthly" +msgstr "شهري" + +#: inc/classes/admin/settings/class-page.php:1414 +msgid "Integrate your CDN" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1426 +msgid "" +"All URLs of static files (CSS, JS, images) will be rewritten to the CNAME(s)" +" you provide." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1428 +#, php-format +msgid "" +"Not required for services like Cloudflare and Sucuri. Please see our " +"available %1$sAdd-ons%2$s." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1469 +#, php-format +msgid "" +"%1$s%2$s Add-on%3$s is currently enabled. Configuration of the CDN settings " +"is not required for %2$s to work on your site." +msgid_plural "" +"%1$s%2$s Add-ons%3$s are currently enabled. Configuration of the CDN " +"settings is not required for %2$s to work on your site." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" + +#: inc/classes/admin/settings/class-page.php:1484 +msgid "Enable Content Delivery Network" +msgstr "تفعيل شبكة توصيل المحتوي." + +#: inc/classes/admin/settings/class-page.php:1493 +msgid "CDN CNAME(s)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1494 +msgid "Specify the CNAME(s) below" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1501 +msgid "" +"Specify URL(s) of files that should not get served via CDN (one per line)." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1502 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*) " +"wildcards to exclude all files of a given file type located at a specific " +"path." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1525 +#: inc/classes/admin/settings/class-page.php:1533 +msgid "Heartbeat" +msgstr "Heartbeat" + +#: inc/classes/admin/settings/class-page.php:1526 +msgid "Control WordPress Heartbeat API" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1534 +msgid "" +"Reducing or disabling the Heartbeat API’s activity can help save some of " +"your server’s resources." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1543 +msgid "Reduce or disable Heartbeat activity" +msgstr "تقليل أو تعطيل نشاط Heartbeat" + +#: inc/classes/admin/settings/class-page.php:1544 +msgid "" +"Reducing activity will change Heartbeat frequency from one hit each minute " +"to one hit every 2 minutes." +msgstr "" +"سيؤدي النشاط المنخفض إلى تغيير معدل Heartbeat من اتصال واحد كل دقيقة إلى " +"اتصال واحد كل دقيقتين." + +#: inc/classes/admin/settings/class-page.php:1544 +msgid "" +"Disabling Heartbeat entirely may break plugins and themes using this API." +msgstr "" +"قد يؤدي تعطيل Heartbeat كليًا إلى تعطيل بعض الإضافات والقوالب التي تستخدم " +"باستخدام واجهة برمجة التطبيقات API." + +#: inc/classes/admin/settings/class-page.php:1558 +msgid "Do not limit" +msgstr "بدون حدود" + +#: inc/classes/admin/settings/class-page.php:1559 +msgid "Reduce activity" +msgstr "تقليل المعدل" + +#: inc/classes/admin/settings/class-page.php:1560 +msgid "Disable" +msgstr "تعطيل" + +#: inc/classes/admin/settings/class-page.php:1568 +msgid "Control Heartbeat" +msgstr "التحكم في Heartbeat" + +#: inc/classes/admin/settings/class-page.php:1577 +msgid "Behavior in backend" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1584 +msgid "Behavior in post editor" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1590 +msgid "Behavior in frontend" +msgstr "السلوك في الواجهة الأمامية" + +#: inc/classes/admin/settings/class-page.php:1609 +msgid "Add-ons" +msgstr "اضافات" + +#: inc/classes/admin/settings/class-page.php:1610 +msgid "Add more features" +msgstr "اضافة مزيد من المميزات" + +#: inc/classes/admin/settings/class-page.php:1617 +msgid "One-click Rocket Add-ons" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1618 +msgid "" +"One-Click Add-ons are features extending available options without " +"configuration needed. Switch the option \"on\" to enable from this screen." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1628 +msgid "Rocket Add-ons" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1629 +msgid "Rocket Add-ons are complementary features extending available options." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1642 +msgid "Google Tracking" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1648 +msgid "Improve browser caching for Google Analytics" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1650 +#, php-format +msgid "" +"WP Rocket will host these Google scripts locally on your server to help " +"satisfy the PageSpeed recommendation for Leverage browser " +"caching.
      %1$sLearn more%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1665 +msgid "Facebook Pixel" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1671 +msgid "Improve browser caching for Facebook Pixel" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1673 +#, php-format +msgid "" +"WP Rocket will host these Facebook Pixels locally on your server to help " +"satisfy the PageSpeed recommendation for Leverage browser " +"caching.
      %1$sLearn more%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1706 +msgid "Varnish" +msgstr "Varnish" + +#: inc/classes/admin/settings/class-page.php:1712 +msgid "If Varnish runs on your server, you must activate this add-on." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1714 +#, php-format +msgid "" +"Varnish cache will be purged each time WP Rocket clears its cache to ensure " +"content is always up-to-date.
      %1$sLearn more%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1729 +#: inc/classes/admin/settings/class-page.php:1789 +msgid "Cloudflare" +msgstr "كلاودفلير" + +#: inc/classes/admin/settings/class-page.php:1735 +msgid "Integrate your Cloudflare account with this add-on." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1736 +msgid "" +"Provide your account email, global API key, and domain to use options such " +"as clearing the Cloudflare cache and enabling optimal settings with WP " +"Rocket." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1748 +msgid "Clear the Sucuri cache when WP Rocket’s cache is cleared." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1751 +msgid "" +"Provide your API key to clear the Sucuri cache when WP Rocket’s cache is " +"cleared." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1759 +#: inc/classes/admin/settings/class-page.php:1907 +msgid "Sucuri" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1765 +msgid "Synchronize Sucuri cache with this add-on." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1805 +msgid "Cloudflare credentials" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1814 +msgid "Cloudflare settings" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1828 +msgctxt "Cloudflare" +msgid "Global API key:" +msgstr "مفتاح API العام:" + +#: inc/classes/admin/settings/class-page.php:1829 +msgid "" +"https://support.cloudflare.com/hc/en-us/articles/200167836-Where-do-I-find-" +"my-Cloudflare-API-key-" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1829 +msgctxt "Cloudflare" +msgid "Find your API key" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1841 +msgctxt "Cloudflare" +msgid "Account email" +msgstr "حساب البريد الإلكتروني" + +#: inc/classes/admin/settings/class-page.php:1850 +msgctxt "Cloudflare" +msgid "Zone ID" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1860 +msgid "Development mode" +msgstr "وضع التطوير" + +#: inc/classes/admin/settings/class-page.php:1862 +#, php-format +msgid "" +"Temporarily activate development mode on your website. This setting will " +"automatically turn off after 3 hours. %1$sLearn more%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1870 +msgid "Optimal settings" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1871 +msgid "" +"Automatically enhances your Cloudflare configuration for speed, performance " +"grade and compatibility." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1879 +msgid "Relative protocol" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1880 +msgid "" +"Should only be used with Cloudflare's flexible SSL feature. URLs of static " +"files (CSS, JS, images) will be rewritten to use // instead of http:// or " +"https://." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1920 +msgid "Sucuri credentials" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1933 +msgctxt "Sucuri" +msgid "" +"Firewall API key (for plugin), must be in format {32 characters}/{32 " +"characters}:" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1934 +msgctxt "Sucuri" +msgid "Find your API key" +msgstr "" + +#: inc/classes/admin/settings/class-render.php:486 +#: inc/deprecated/deprecated.php:1296 +msgid "Upload file and import settings" +msgstr "رفع ملف وإستيراد الإعدادات" + +#: inc/classes/admin/settings/class-settings.php:385 +msgid "" +"Sucuri Add-on: The API key for the Sucuri firewall must be in format " +"{32 characters}/{32 characters}." +msgstr "" + +#: inc/classes/admin/settings/class-settings.php:462 +#: inc/deprecated/deprecated.php:1247 +msgid "Settings saved." +msgstr "تم حفظ الإعدادات" + +#: inc/classes/class-wp-rocket-requirements-check.php:148 +#, php-format +msgid "To function properly, %1$s %2$s requires at least:" +msgstr "" + +#: inc/classes/class-wp-rocket-requirements-check.php:152 +#, php-format +msgid "" +"PHP %1$s. To use this WP Rocket version, please ask your web host how to " +"upgrade your server to PHP %1$s or higher." +msgstr "" + +#: inc/classes/class-wp-rocket-requirements-check.php:157 +#, php-format +msgid "" +"WordPress %1$s. To use this WP Rocket version, please upgrade WordPress to " +"version %1$s or higher." +msgstr "" + +#: inc/classes/class-wp-rocket-requirements-check.php:160 +msgid "" +"If you are not able to upgrade, you can rollback to the previous version by " +"using the button below." +msgstr "" + +#: inc/classes/class-wp-rocket-requirements-check.php:162 +#: inc/deprecated/deprecated.php:1949 +#, php-format +msgid "Re-install version %s" +msgstr "إعادة تثبيت اصدار v%s" + +#: inc/classes/logger/class-logger.php:253 +#: inc/classes/logger/class-logger.php:285 +msgid "The log file does not exist." +msgstr "" + +#: inc/classes/logger/class-logger.php:259 +#: inc/classes/logger/class-logger.php:291 +msgid "The log file could not be read." +msgstr "" + +#: inc/classes/logger/class-logger.php:278 +msgid "The logs are not saved into a file." +msgstr "" + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:88 +#: inc/classes/optimization/CSS/class-critical-css-generation.php:99 +#: inc/classes/optimization/CSS/class-critical-css-generation.php:110 +#: inc/classes/optimization/CSS/class-critical-css-generation.php:120 +#: inc/classes/optimization/CSS/class-critical-css-generation.php:142 +#, php-format +msgid "Critical CSS for %1$s not generated. Error: %2$s" +msgstr "" + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:99 +msgid "The API returned an invalid response code." +msgstr "" + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:110 +msgid "The API returned an empty response." +msgstr "" + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:145 +#, php-format +msgid "The critical CSS content could not be saved as a file in %s." +msgstr "" + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:154 +#, php-format +msgid "Critical CSS for %s generated." +msgstr "المسار الحرج CSS لـ %s تم انشاءه." + +#: inc/classes/preload/class-homepage.php:83 +#, php-format +msgid "" +"Preload encountered an error. Could not gather links on %1$s because of the " +"following error: %2$s. %3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-homepage.php:96 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: %2$s. Security measures could be preventing access. " +"%3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-homepage.php:102 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: 404. Please make sure your homepage is accessible in your " +"browser. %2$sLearn more%3$s." +msgstr "" + +#: inc/classes/preload/class-homepage.php:108 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: 500. Please check with your web host about server access. " +"%2$sLearn more%3$s." +msgstr "" + +#: inc/classes/preload/class-homepage.php:114 +#, php-format +msgid "" +"Preload encountered an error. Could not gather links on %1$s because it " +"returned the following response code: %2$s. %3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:138 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not gather links on %1$s because" +" of the following error: %2$s. %3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:153 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: %2$s. Security measures could be preventing access." +" %3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:158 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: 404. Please make sure you entered the correct " +"sitemap URL and it is accessible in your browser. %2$sLearn more%3$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:163 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: 500. Please check with your web host about server " +"access. %2$sLearn more%3$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:168 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not gather links on %1$s because" +" it returned the following response code: %2$s. %3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:184 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not collect links from %1$s " +"because the file is empty. %2$sLearn more%3$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:205 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not collect links from %1$s " +"because of an error during the XML sitemap parsing. %2$sLearn more%3$s." +msgstr "" + +#: inc/classes/subscriber/Optimization/class-critical-css-subscriber.php:138 +#, php-format +msgid "" +"Critical CSS generation is currently running: %1$d of %2$d page types " +"completed. (Refresh this page to view progress)" +msgstr "" +"انشاء المسار الحرج لملفات CSS يعمل الآن: %1$d من %2$d صفحة تم انتهاءها. " +"(تحديث هذه الصفحة لعرض التقدم)" + +#: inc/classes/subscriber/Optimization/class-critical-css-subscriber.php:189 +#, php-format +msgid "Critical CSS generation finished for %1$d of %2$d page types." +msgstr "المسار الحرج لملفات CSS تم انتهاءه لـ %1$d من %2$d انواع الصفحات." + +#: inc/classes/subscriber/Optimization/class-critical-css-subscriber.php:203 +msgid "Critical CSS generation encountered one or more errors." +msgstr "" + +#: inc/classes/subscriber/Optimization/class-critical-css-subscriber.php:203 +msgid "Learn more." +msgstr "" + +#: inc/classes/subscriber/Tools/class-cache-dir-size-check-subscriber.php:51 +#: inc/classes/subscriber/class-facebook-tracking-cache-busting-subscriber.php:97 +#: inc/classes/subscriber/class-google-tracking-cache-busting-subscriber.php:154 +#: inc/common/cron.php:33 +msgid "weekly" +msgstr "اسبوعي" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:148 +msgid "Database optimization process is running" +msgstr "عملية تحسين قاعدة البيانات جارية الآن" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:179 +msgid "" +"Database optimization process is complete. Everything was already optimized!" +msgstr "اكتملت عملية تحسين قاعدة البيانات. تم تحسين كل شيء بالفعل!" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:182 +msgid "" +"Database optimization process is complete. List of optimized items below:" +msgstr "" +"اكتملت عملية تحسين قاعدة البيانات. قائمة بالعناصر التي تم تحسينها أدناه:" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:190 +#, php-format +msgid "%1$d %2$s optimized." +msgstr "%1$d %2$s تم التحسين." + +#: inc/classes/subscriber/admin/Settings/class-page-subscriber.php:137 +#: inc/deprecated/deprecated.php:1788 +#: views/settings/page-sections/tools.php:33 +msgid "Tools" +msgstr "أداوات" + +#: inc/classes/subscriber/admin/Settings/class-page-subscriber.php:138 +msgid "Import, Export, Rollback" +msgstr "" + +#: inc/classes/subscriber/admin/Settings/class-page-subscriber.php:160 +#: views/settings/page-sections/imagify.php:13 +msgid "Image Optimization" +msgstr "" + +#: inc/classes/subscriber/admin/Settings/class-page-subscriber.php:161 +msgid "Compress your images" +msgstr "" + +#: inc/classes/subscriber/preload/class-preload-subscriber.php:212 +#, php-format +msgid "" +"Preload: WP Rocket has started preloading your website. Go to the %1$sWP " +"Rocket settings%2$s page to track progress." +msgstr "" + +#: inc/classes/subscriber/preload/class-preload-subscriber.php:246 +#, php-format +msgid "" +"Preload: %1$s uncached page has now been preloaded. (refresh to see " +"progress)" +msgid_plural "" +"Preload: %1$s uncached pages have now been preloaded. (refresh to see " +"progress)" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" + +#: inc/classes/subscriber/preload/class-preload-subscriber.php:255 +msgid "The following error happened during gathering of the URLs to preload:" +msgid_plural "" +"The following errors happened during gathering of the URLs to preload:" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" + +#: inc/classes/subscriber/preload/class-preload-subscriber.php:308 +#, php-format +msgid "Preload complete: %d pages have been cached." +msgstr "" + +#: inc/classes/subscriber/preload/class-sitemap-preload-subscriber.php:117 +#, php-format +msgid "" +"%1$sSimpleXML PHP extension%2$s is not enabled on your server. Please " +"contact your host to enable it before running sitemap-based cache " +"preloading." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:72 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"Please deactivate the following %s option which conflicts with WP Rocket " +"features:" +msgid_plural "" +"Please deactivate the following %s options which conflict with WP Rocket " +"features:" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:145 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sdisable emoji%3$s conflicts with WP Rockets %2$sdisable emoji%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:167 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sremove query strings%3$s conflicts with WP Rocket %2$sremove query " +"strings%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:203 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sGZIP compression%3$s conflicts with WP Rocket %2$sGZIP " +"compression%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:239 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sbrowser caching%3$s conflicts with WP Rocket %2$sbrowser " +"caching%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:271 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$spage caching%3$s conflicts with WP Rocket %2$spage caching%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:305 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sasset optimization%3$s conflicts with WP Rocket %2$sfile " +"optimization%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:123 +#, php-format +msgid "Sucuri cache purge error: %s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:128 +msgid "" +"The Sucuri cache is being cleared. Note that it may take up to two minutes " +"for it to be fully flushed." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:242 +msgid "Sucuri firewall API key was not found." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:251 +msgid "Sucuri firewall API key is invalid." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:303 +msgid "Error when contacting Sucuri firewall API." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:313 +#, php-format +msgid "Error when contacting Sucuri firewall API. Error message was: %s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:324 +msgid "Could not get a response from the Sucuri firewall API." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:335 +msgid "Got an invalid response from the Sucuri firewall API." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:345 +msgid "The Sucuri firewall API returned an unknown error." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:348 +#, php-format +msgid "The Sucuri firewall API returned the following error: %s" +msgid_plural "The Sucuri firewall API returned the following errors: %s" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" + +#: inc/classes/traits/trait-updater-api-tools.php:53 +#: inc/deprecated/3.3.php:760 inc/deprecated/3.3.php:769 +#, php-format +msgid "" +"An unexpected error occurred. Something may be wrong with WP-Rocket.me or " +"this server’s configuration. If you continue to have problems, contact support." +msgstr "" + +#: inc/common/admin-bar.php:106 inc/common/admin-bar.php:260 +#: inc/functions/i18n.php:39 inc/functions/i18n.php:48 +msgid "All languages" +msgstr "كل اللغات" + +#: inc/common/admin-bar.php:133 +msgid "Clear this post" +msgstr "مسح الملفات المخذنة للمقالة" + +#: inc/common/admin-bar.php:147 +msgid "Purge this URL" +msgstr "حذف الملفات المؤقتة لهذا العنوان" + +#: inc/common/admin-bar.php:163 +msgid "Purge OPcache" +msgstr "مسح OPcache" + +#: inc/common/admin-bar.php:180 +msgid "Regenerate Critical Path CSS" +msgstr "اعادة تكوين المسار الحرج لـ CSS" + +#: inc/common/admin-bar.php:196 +msgid "Clear Cloudflare cache" +msgstr "مسح ذاكرة التخزين المؤقت لكلودفلير" + +#: inc/common/admin-bar.php:217 inc/common/admin-bar.php:272 +#: views/settings/page-sections/dashboard.php:135 +msgid "Preload cache" +msgstr "التحميل المسبق للتخزين المؤقت" + +#: inc/common/admin-bar.php:287 views/settings/partials/documentation.php:13 +msgid "Documentation" +msgstr "وثائق المساعدة" + +#: inc/common/cron.php:24 +#, php-format +msgid "%s clear" +msgstr "%s مسح" + +#: inc/common/cron.php:39 +msgid "monthly" +msgstr "شهري" + +#: inc/common/purge.php:456 +#, php-format +msgid "Cloudflare cache purge error: %s" +msgstr "خطأ أثناء مسح الذاكرة المؤقتة لكلاودفلير: %s" + +#: inc/common/purge.php:461 +msgid "Cloudflare cache successfully purged" +msgstr "" + +#: inc/deprecated/3.2.php:51 views/settings/page-sections/imagify.php:35 +msgid "Activate Imagify" +msgstr "تفعيل Imagify" + +#: inc/deprecated/3.2.php:51 +msgid "Install Imagify for Free" +msgstr "تثبيت Imagify مجانا" + +#: inc/deprecated/3.2.php:66 +msgid "" +"Speed up your website and boost your SEO by reducing image file sizes " +"without losing quality with Imagify." +msgstr "" +"تسريع موقع الويب الخاص بك وتحسين تهيئة محرك البحث عبر تقليل حجم الصور بدون " +"خسارة جودتها مع خدمة Imagify." + +#: inc/deprecated/3.2.php:71 +msgid "More details" +msgstr "مزيد من التفاصيل" + +#: inc/deprecated/3.2.php:227 +#, php-format +msgid "Sitemap preload: %d pages have been cached." +msgstr "" +"التحميل المسبق لخرائط الموقع: %d صفحات تم اضافتهم في ملفات التخزين المؤقت." + +#: inc/deprecated/3.2.php:260 +#, php-format +msgid "" +"Sitemap preload: %d uncached pages have now been preloaded. (refresh to see " +"progress)" +msgstr "" +"التحميل المسبق لخرائط الموقع: %d صفحة غير مضافة بالتخزين المؤقت الان تم " +"اضافتها بالتحميل المسبق. (تحديث لرؤية التقدم)" + +#: inc/deprecated/deprecated.php:242 +msgid "JS files with Deferred Loading JavaScript" +msgstr " تأجيل تحميل ملفات JS من خلال الجافا سكربت " + +#: inc/deprecated/deprecated.php:295 +msgid "Add URL" +msgstr "أضف رابط" + +#: inc/deprecated/deprecated.php:1279 views/settings/fields/import-form.php:22 +msgid "" +"Before you can upload your import file, you will need to fix the following " +"error:" +msgstr "قبل أن يمكنك برفع واستعادة الملف، يجب عليك ان تصلح الخطأ التالي:" + +#: inc/deprecated/deprecated.php:1290 views/settings/fields/import-form.php:35 +#, php-format +msgid "Choose a file from your computer (maximum size: %s)" +msgstr "أختر ملف من جهاز الكمبيوتر (أقصي حجم: %s)" + +#: inc/deprecated/deprecated.php:1387 +msgid "Your Cloudflare credentials are valid." +msgstr "بيانات دخول حساب كلاودفلير صحيحة." + +#: inc/deprecated/deprecated.php:1391 +msgid "Your Cloudflare credentials are invalid!" +msgstr "بيانات دخول حساب كلاودفلير غير صحيحة!" + +#: inc/deprecated/deprecated.php:1455 +msgid "Save and optimize" +msgstr "حفظ وتحسين" + +#: inc/deprecated/deprecated.php:1455 +#: views/settings/page-sections/database.php:27 +msgid "Optimize" +msgstr "تحسين" + +#: inc/deprecated/deprecated.php:1466 inc/deprecated/deprecated.php:1668 +msgctxt "screen-reader-text" +msgid "Note:" +msgstr "محلوظة:" + +#: inc/deprecated/deprecated.php:1472 +msgctxt "screen-reader-text" +msgid "Performance tip:" +msgstr "نصحية لأداء أفضل:" + +#: inc/deprecated/deprecated.php:1478 +msgctxt "screen-reader-text" +msgid "Third-party feature detected:" +msgstr "تم اكتشاف اضافات خارجية:" + +#: inc/deprecated/deprecated.php:1490 inc/deprecated/deprecated.php:1674 +msgctxt "screen-reader-text" +msgid "Warning:" +msgstr "تحذير:" + +#: inc/deprecated/deprecated.php:1503 +msgctxt "button text" +msgid "Download settings" +msgstr "خيارات التحميل" + +#: inc/deprecated/deprecated.php:1533 +msgid "Replace site's hostname with:" +msgstr "إستبدال إسم مضيف الموقع بــ :" + +#: inc/deprecated/deprecated.php:1552 inc/deprecated/deprecated.php:1589 +#: inc/deprecated/deprecated.php:1617 views/settings/fields/cnames.php:32 +#: views/settings/fields/cnames.php:63 views/settings/fields/cnames.php:93 +msgid "reserved for" +msgstr "مخصصة لـ " + +#: inc/deprecated/deprecated.php:1554 inc/deprecated/deprecated.php:1591 +#: inc/deprecated/deprecated.php:1619 views/settings/fields/cnames.php:35 +#: views/settings/fields/cnames.php:66 views/settings/fields/cnames.php:96 +msgid "All files" +msgstr "كل الملفات" + +#: inc/deprecated/deprecated.php:1566 inc/deprecated/deprecated.php:1596 +#: inc/deprecated/deprecated.php:1624 views/settings/fields/cnames.php:47 +#: views/settings/fields/cnames.php:78 views/settings/fields/cnames.php:108 +msgid "Images" +msgstr "الصور" + +#: inc/deprecated/deprecated.php:1637 views/settings/fields/cnames.php:119 +msgid "Add CNAME" +msgstr "إنشاء سجل CNAME" + +#: inc/deprecated/deprecated.php:1708 +msgid "Watch the video" +msgstr "شاهد الفيديو" + +#: inc/deprecated/deprecated.php:1773 +msgid "Basic" +msgstr "إعدادات أساسية" + +#: inc/deprecated/deprecated.php:1774 +msgid "Static Files" +msgstr "الملفات الثابتة" + +#: inc/deprecated/deprecated.php:1776 +msgid "Advanced" +msgstr "الإعدادات المتقدمة" + +#: inc/deprecated/deprecated.php:1946 +#, php-format +msgid "" +"%1$s %2$s requires at least PHP %3$s to function properly. To use this " +"version, please ask your web host how to upgrade your server to PHP %3$s or " +"higher. If you are not able to upgrade, you can rollback to the previous " +"version by using the button below." +msgstr "" +"%1$s %2$s يتطلب آخر اصدار من PHP %3$s للعمل بشكل صحيح. لاستخدام هذا الإصدار،" +" يرجى الطلب من شركة الاستضافة بترقية PHP لـ %3$s أو أعلي. إذا لم تكن قادرا " +"على الترقية، يمكنك الرجوع إلى الإصدار السابق باستخدام الزر أدناه." + +#: inc/functions/admin.php:23 +msgid "" +"There seems to be an issue validating your license. Please see the error " +"message below." +msgid_plural "" +"There seems to be an issue validating your license. You can see the error " +"messages below." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" + +#: inc/functions/admin.php:361 +msgid "Server type:" +msgstr "نوع الخادم:" + +#: inc/functions/admin.php:370 +msgid "PHP version number:" +msgstr "رقم اصدار PHP:" + +#: inc/functions/admin.php:379 +msgid "WordPress version number:" +msgstr "رقم اصدار ووردبريس:" + +#: inc/functions/admin.php:388 +msgid "WordPress multisite:" +msgstr "ووردبريس متعدد المواقع:" + +#: inc/functions/admin.php:397 +msgid "Current theme:" +msgstr "القالب الحالي:" + +#: inc/functions/admin.php:406 +msgid "Current site language:" +msgstr "اللغة الحالية للموقع:" + +#: inc/functions/admin.php:415 +msgid "Active plugins:" +msgstr "الإضافات النشطة:" + +#: inc/functions/admin.php:418 +msgid "Plugin names of all active plugins" +msgstr "اسماء جميع الاضافات النشطة" + +#: inc/functions/admin.php:424 +msgid "Anonymized WP Rocket settings:" +msgstr "إعدادات WP Rocket مجهول المصدر:" + +#: inc/functions/admin.php:427 +msgid "Which WP Rocket settings are active" +msgstr "إعدادات الـ WP Rocket النشطة" + +#: inc/functions/cloudflare.php:14 +msgid "" +"Curl functions are disabled, they are required for the Cloudflare Add-on to " +"work correctly." +msgstr "" + +#: inc/functions/cloudflare.php:21 +msgid "Cloudflare Email and API key are not set" +msgstr "لم يتم تعيين البريد الإلكتروني ومفتاح API لخدمة الكلاودفلير" + +#: inc/functions/cloudflare.php:52 +#, php-format +msgid "Missing Cloudflare zone ID. %s could not fix this automatically." +msgstr "معرف حساب كلاودفلار مفقود. %s تعذر إصلاح هذا تلقائيا." + +#: inc/functions/cloudflare.php:58 +#, php-format +msgid "Read the %1$sdocumentation%2$s for further guidance." +msgstr "اطلع علي %1$sوثائق الدعم%2$s لمزيد من الإرشادات." + +#: inc/functions/cloudflare.php:60 +msgid "" +"https://docs.wp-rocket.me/article/18-using-wp-rocket-with-" +"cloudflare/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" + +#: inc/functions/cloudflare.php:100 +msgid "Connection to Cloudflare failed" +msgstr "فشل الاتصال بكلاودفلير" + +#: inc/functions/cloudflare.php:122 +msgid "Choose a domain from the list" +msgstr "اختر نطاق من القائمة" + +#: inc/functions/cloudflare.php:135 +msgid "No domain available in your Cloudflare account" +msgstr "لا يوجد نطاقات علي حساب الكلاودفلير الخاص بك" + +#: inc/functions/options.php:580 inc/functions/options.php:619 +msgid "" +"License validation failed. Our server could not resolve the request from " +"your website." +msgstr "" + +#: inc/functions/options.php:580 inc/functions/options.php:619 +#, php-format +msgid "" +"Try clicking %1$sSave Changes%2$s below. If the error persists, follow " +"%3$sthis guide%4$s." +msgstr "" + +#: inc/functions/options.php:596 +msgid "" +"License validation failed. You may be using a nulled version of the plugin. " +"Please do the following:" +msgstr "" + +#: inc/functions/options.php:596 inc/functions/options.php:638 +#, php-format +msgid "Login to your WP Rocket %1$saccount%2$s" +msgstr "" + +#: inc/functions/options.php:596 inc/functions/options.php:638 +msgid "Download the zip file" +msgstr "تنزيل الملف المضغوط ZIP" + +#: inc/functions/options.php:596 inc/functions/options.php:638 +msgid "Reinstall" +msgstr "إعادة تثبيت" + +#: inc/functions/options.php:596 +#, php-format +msgid "" +"If you do not have a WP Rocket account, please %1$spurchase a license%2$s." +msgstr "" + +#: inc/functions/options.php:604 +msgid "" +"License validation failed. This user account does not exist in our database." +msgstr "" + +#: inc/functions/options.php:604 +msgid "To resolve, please contact support." +msgstr "لحل المشكلة، يرجى الاتصال بالدعم." + +#: inc/functions/options.php:612 +msgid "License validation failed. This user account is blacklisted." +msgstr "" + +#: inc/functions/options.php:612 +#, php-format +msgid "Please see %1$sthis guide%2$s for more info." +msgstr "" + +#: inc/functions/options.php:632 +msgid "Your license is not valid." +msgstr "الترخيص الخاص بك غير صالح." + +#: inc/functions/options.php:632 +#, php-format +msgid "Make sure you have an active %1$sWP Rocket license%2$s." +msgstr "" + +#: inc/functions/options.php:634 +msgid "You have added as many sites as your current license allows." +msgstr "لقد أضفت العديد من المواقع التي يسمح بها الترخيص الحالي." + +#: inc/functions/options.php:634 +#, php-format +msgid "" +"Upgrade your %1$saccount%2$s or %3$stransfer your license%2$s to this " +"domain." +msgstr "" + +#: inc/functions/options.php:636 +msgid "This website is not allowed." +msgstr "غير مسموح لهذا الموقع." + +#: inc/functions/options.php:636 +#, php-format +msgid "Please %1$scontact support%2$s." +msgstr "" + +#: inc/functions/options.php:638 +msgid "This license key is not recognized." +msgstr "مفتاح الترخيص غير معروف." + +#: inc/functions/options.php:638 +#, php-format +msgid "If the issue persists, please %1$scontact support%2$s." +msgstr "" + +#: inc/functions/options.php:644 +#, php-format +msgid "License validation failed: %s" +msgstr "" + +#: inc/vendors/classes/class-imagify-partner.php:531 +msgid "Plugin installed successfully." +msgstr "تم تثبيت الإضافة بنجاح." + +#: inc/vendors/classes/class-imagify-partner.php:532 +msgid "Sorry, you are not allowed to install plugins on this site." +msgstr "" + +#: inc/vendors/classes/class-imagify-partner.php:533 +msgid "Sorry, you are not allowed to do that." +msgstr "نآسف، لا يسمح لك بفعل ذلك." + +#: inc/vendors/classes/class-imagify-partner.php:534 +msgid "Plugin install failed." +msgstr "فشل تثبيت الإضافة." + +#: inc/vendors/classes/class-imagify-partner.php:535 +msgid "Go back" +msgstr "للخلف" + +#: views/deactivation-intent/form.php:20 +msgid "Return" +msgstr "العودة" + +#: views/deactivation-intent/form.php:21 +msgid "WP Rocket feedback" +msgstr "" + +#: views/deactivation-intent/form.php:23 +msgid "Close" +msgstr "اغلاق" + +#: views/deactivation-intent/form.php:27 +msgid "May we have a little info about why you are deactivating?" +msgstr "" + +#: views/deactivation-intent/form.php:31 +msgid "" +"It is a temporary deactivation. I am just debugging an " +"issue." +msgstr "" + +#: views/deactivation-intent/form.php:35 +msgid "The plugin broke my layout or some functionality." +msgstr "" + +#: views/deactivation-intent/form.php:39 +msgid "My PageSpeed or GTMetrix score did not improve." +msgstr "" + +#: views/deactivation-intent/form.php:43 +msgid "I did not notice a difference in loading time." +msgstr "" + +#: views/deactivation-intent/form.php:47 +msgid "The plugin is too complicated to configure." +msgstr "" + +#: views/deactivation-intent/form.php:51 +msgid "My host already has its own caching system." +msgstr "" + +#: views/deactivation-intent/form.php:53 +msgid "What is the name of your web host?" +msgstr "" + +#: views/deactivation-intent/form.php:58 +msgid "Other" +msgstr "اخري" + +#: views/deactivation-intent/form.php:60 +msgid "" +"Let us know why you are deactivating WP Rocket so we can improve the plugin" +msgstr "" + +#: views/deactivation-intent/form.php:68 +msgid "The plugin broke my layout or some functionality" +msgstr "" + +#: views/deactivation-intent/form.php:69 +msgid "" +"This type of issue can usually be fixed by deactivating some options in WP " +"Rocket." +msgstr "" + +#: views/deactivation-intent/form.php:70 +msgid "" +"Click \"Apply Safe Mode\" to quickly disable LazyLoad, File Optimization, " +"Embeds and CDN options. Then check your site to see if the issue has " +"resolved." +msgstr "" + +#: views/deactivation-intent/form.php:72 +msgid "Apply safe mode" +msgstr "تطبيق الوضع الآمن" + +#: views/deactivation-intent/form.php:75 +msgid "Safe mode applied." +msgstr "تم تطبيق الوضع الآمن" + +#: views/deactivation-intent/form.php:76 +msgid "Review your site in a private/logged out browser window." +msgstr "قم بمراجعة موقعك في وضع المتصفح الخفي/كمسجل دخول." + +#: views/deactivation-intent/form.php:78 +msgid "" +"Is the issue fixed? Now you can reactivate options one at a time to " +"determine which one caused the problem. More info" +msgstr "" + +#: views/deactivation-intent/form.php:81 +msgid "My PageSpeed or GT Metrix score did not improve" +msgstr "لم تتحسن نتيجة PageSpeed أو GT Metrix الخاصة بي" + +#: views/deactivation-intent/form.php:82 +msgid "" +"WP Rocket makes your site faster. The PageSpeed grade or GTMetrix score are " +"not indicators of speed. Neither your real visitors, nor Google will ever " +"see your website’s “grade”. Speed is the only metric that matters for SEO " +"and conversions." +msgstr "" + +#: views/deactivation-intent/form.php:83 +msgid "Yoast, the expert on all things related to SEO for WordPress states:" +msgstr "" + +#: views/deactivation-intent/form.php:84 +msgid "" +"[Google] just looks at how fast your website loads for users, so you don’t " +"have to obsess over that specific score. You have to make sure your website " +"is as fast as you can get it." +msgstr "" + +#: views/deactivation-intent/form.php:87 +msgid "" +"How to measure the load time of your site:
      https" +"://wp-rocket.me/blog/correctly-measure-websites-page-load-time/" +msgstr "" + +#: views/deactivation-intent/form.php:88 +msgid "" +"Why you should not be chasing a PageSpeed score:
      https://wp-rocket.me/blog/the-truth-about-google-" +"pagespeed-insights/" +msgstr "" + +#: views/deactivation-intent/form.php:91 +msgid "I did not notice a difference in loading time" +msgstr "" + +#: views/deactivation-intent/form.php:92 +msgid "" +"Make sure you look at your site while logged out to see the fast, cached " +"pages!" +msgstr "" + +#: views/deactivation-intent/form.php:93 +msgid "" +"The best way to see the improvement WP Rocket provides is to perform speed " +"tests. Follow this guide to correctly measure the load time of your " +"website:
      https://wp-rocket.me/blog/correctly-measure-websites-page-" +"load-time/" +msgstr "" + +#: views/deactivation-intent/form.php:96 +msgid "The plugin is too complicated to configure" +msgstr "الإضافة معقدة جدًا لضبط الإعداد" + +#: views/deactivation-intent/form.php:97 +msgid "We are sorry to hear you are finding it difficult to use WP Rocket." +msgstr "" + +#: views/deactivation-intent/form.php:98 +#, php-format +msgid "" +"WP Rocket is the only caching plugin that provides 80% of best practices in " +"speed optimization, by default. That means you do not have to do anything " +"besides activate WP Rocket and your site will already be faster!" +msgstr "" + +#: views/deactivation-intent/form.php:99 +msgid "" +"The additional options are not required for a fast site, they are for fine-" +"tuning." +msgstr "" + +#: views/deactivation-intent/form.php:100 +msgid "" +"To see the benefit WP Rocket is already providing, measure the speed of your" +" site using a tool like Pingdom:
      https" +"://wp-rocket.me/blog/correctly-measure-websites-page-load-time/" +msgstr "" + +#: views/deactivation-intent/form.php:105 +msgid "Send & Deactivate" +msgstr "ارسال و تعطيل" + +#: views/deactivation-intent/form.php:106 +msgid "Cancel" +msgstr "إلغاء" + +#: views/deactivation-intent/form.php:108 +msgid "Skip & Deactivate" +msgstr "تخطي و تعطيل" + +#: views/settings/fields/cache-lifespan.php:26 +msgid "Clear cache after" +msgstr "مسح ملفات التخزين المؤقت بعد" + +#: views/settings/fields/cnames.php:49 views/settings/fields/cnames.php:80 +#: views/settings/fields/cnames.php:110 +msgid "CSS & JavaScript" +msgstr "CSS & JavaScript" + +#: views/settings/fields/cnames.php:50 views/settings/fields/cnames.php:81 +#: views/settings/fields/cnames.php:111 +msgid "JavaScript" +msgstr "JavaScript" + +#: views/settings/fields/cnames.php:51 views/settings/fields/cnames.php:82 +#: views/settings/fields/cnames.php:112 +msgid "CSS" +msgstr "CSS" + +#: views/settings/fields/import-form.php:29 +msgid "Import settings" +msgstr "استيراد الإعدادات" + +#: views/settings/fields/one-click-addon.php:39 +#: views/settings/fields/rocket-addon.php:31 +#: views/settings/fields/sliding-checkbox.php:24 views/settings/page.php:54 +msgctxt "Active state of checkbox" +msgid "On" +msgstr "مُفعل" + +#: views/settings/fields/one-click-addon.php:40 +#: views/settings/fields/rocket-addon.php:32 +#: views/settings/fields/sliding-checkbox.php:25 views/settings/page.php:55 +msgctxt "Inactive state of checkbox" +msgid "Off" +msgstr "غير مُفعل" + +#: views/settings/fields/one-click-addon.php:41 +#: views/settings/fields/rocket-addon.php:33 +msgid "Add-on status" +msgstr "حالة الإضافات" + +#: views/settings/fields/rocket-addon.php:56 +msgid "Modify options" +msgstr "" + +#: views/settings/page-sections/cloudflare.php:26 +msgid "Cloudflare Cache" +msgstr "التخزين المؤقت لكلاودفلير" + +#: views/settings/page-sections/cloudflare.php:33 +#: views/settings/page-sections/sucuri.php:34 +#, php-format +msgid "Purges cached resources for your website. %s" +msgstr "" + +#: views/settings/page-sections/cloudflare.php:34 +msgid "https://support.cloudflare.com/hc/en-us/articles/200169246" +msgstr "" + +#: views/settings/page-sections/cloudflare.php:34 +#: views/settings/page-sections/sucuri.php:35 +msgid "Learn more" +msgstr "تعلم المزيد" + +#: views/settings/page-sections/cloudflare.php:40 +msgid "Clear all Cloudflare cache files" +msgstr "مسح ملفات التخزين المؤقت لكلودفلير" + +#: views/settings/page-sections/dashboard.php:37 +msgid "Congratulations!" +msgstr "تهانينا!" + +#: views/settings/page-sections/dashboard.php:39 +msgid "WP Rocket is now activated and already working for you." +msgstr "" + +#: views/settings/page-sections/dashboard.php:41 +msgid "Your website should be loading faster now!" +msgstr "الآن موقعك يجب أن يتم تحميله بشكل أسرع." + +#: views/settings/page-sections/dashboard.php:43 +#, php-format +msgid "" +"To guarantee fast websites, WP Rocket applies 80% of web performance best " +"practices." +msgstr "" + +#: views/settings/page-sections/dashboard.php:43 +msgid "" +"We also enable options that provide immediate benefits to your website." +msgstr "" + +#: views/settings/page-sections/dashboard.php:44 +msgid "Continue to the options to further optimize your site!" +msgstr "" + +#: views/settings/page-sections/dashboard.php:54 +msgid "My Account" +msgstr "حسابي" + +#: views/settings/page-sections/dashboard.php:60 +msgid "Refresh info" +msgstr "تحديث المعلومات" + +#: views/settings/page-sections/dashboard.php:74 +msgid "Expiration Date" +msgstr "تاريخ الإنتهاء" + +#: views/settings/page-sections/dashboard.php:83 +msgid "View my account" +msgstr "عرض حسابي" + +#: views/settings/page-sections/dashboard.php:103 +msgid "Quick Actions" +msgstr "خيارات سريعة" + +#: views/settings/page-sections/dashboard.php:109 +msgid "Remove all cached files" +msgstr "حذف جميع ملفات التخزين المؤقت" + +#: views/settings/page-sections/dashboard.php:129 +msgid "Start cache preloading" +msgstr "" + +#: views/settings/page-sections/dashboard.php:147 +msgid "Purge OPCache content" +msgstr "" + +#: views/settings/page-sections/dashboard.php:153 +msgid "Purge OPCache" +msgstr "" + +#: views/settings/page-sections/dashboard.php:164 +#: views/settings/page-sections/dashboard.php:170 +msgid "Regenerate Critical CSS" +msgstr "" + +#: views/settings/page-sections/dashboard.php:186 +msgid "Frequently Asked Questions" +msgstr "الاسئلة الأكثر شيوعاً" + +#: views/settings/page-sections/dashboard.php:199 +msgid "Still cannot find a solution?" +msgstr "" + +#: views/settings/page-sections/dashboard.php:200 +msgid "" +"Submit a ticket and get help from our friendly and knowledgeable Rocketeers." +msgstr "" + +#: views/settings/page-sections/dashboard.php:208 +msgid "Ask support" +msgstr "اسال الدعم" + +#: views/settings/page-sections/database.php:24 +msgid "Backup your database before you run a cleanup!" +msgstr "" + +#: views/settings/page-sections/database.php:25 +msgid "" +"Once a database optimization has been performed, there is no way to undo it." +msgstr "" + +#: views/settings/page-sections/imagify.php:20 +#, php-format +msgid "" +"%1$sWP ROCKET%2$s created %3$sIMAGIFY%4$s %1$sfor best-in-class image " +"optimization.%2$s" +msgstr "" + +#: views/settings/page-sections/imagify.php:23 +msgid "" +"Compress image to make your website faster, all while maintaining image " +"quality." +msgstr "" + +#: views/settings/page-sections/imagify.php:24 +msgid "More on Imagify:" +msgstr "" + +#: views/settings/page-sections/imagify.php:26 +msgid "Imagify Plugin Page" +msgstr "" + +#: views/settings/page-sections/imagify.php:27 +msgid "Imagify Website" +msgstr "" + +#: views/settings/page-sections/imagify.php:28 +msgid "Review of Image Compression Plugins" +msgstr "" + +#: views/settings/page-sections/imagify.php:37 +msgid "Install Imagify" +msgstr "" + +#: views/settings/page-sections/license.php:21 +msgid "WP Rocket was not able to automatically validate your license." +msgstr "" + +#: views/settings/page-sections/license.php:26 +#, php-format +msgid "" +"Follow this tutorial, or contact support to get the engine started." +msgstr "" + +#: views/settings/page-sections/license.php:26 +msgid "" +"https://docs.wp-rocket.me/article/100-resolving-problems-with-license-" +"validation/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" + +#: views/settings/page-sections/sucuri.php:41 +msgid "Clear all Sucuri cache files" +msgstr "" + +#: views/settings/page-sections/tools.php:20 +#, php-format +msgid "Files size: %1$s. Number of entries: %2$s." +msgstr "" + +#: views/settings/page-sections/tools.php:23 +#, php-format +msgid "%1$sDownload the file%2$s." +msgstr "" + +#: views/settings/page-sections/tools.php:26 +#, php-format +msgid "%1$sDelete the file%2$s." +msgstr "" + +#: views/settings/page-sections/tools.php:37 +msgid "Export settings" +msgstr "إستخراج الإعدادات" + +#: views/settings/page-sections/tools.php:38 +msgid "Download a backup file of your settings" +msgstr "تحميل نسخة احتياطية من الإعدادات الحالية" + +#: views/settings/page-sections/tools.php:43 +msgid "Download settings" +msgstr "خيارات التحميل" + +#: views/settings/page-sections/tools.php:56 +msgid "Rollback" +msgstr "التراجع عن التحديث" + +#: views/settings/page-sections/tools.php:60 +#, php-format +msgid "Has version %s caused an issue on your website?" +msgstr "" + +#: views/settings/page-sections/tools.php:62 +msgid "" +"You can rollback to the previous major version here.
      Then send us a " +"support request." +msgstr "" + +#: views/settings/page-sections/tools.php:69 +#, php-format +msgid "Reinstall version %s" +msgstr "إعادة تثبيت اصدار %s" + +#: views/settings/page-sections/tools.php:85 +msgid "Debug mode" +msgstr "وضع تصحيح الاخطاء" + +#: views/settings/page-sections/tools.php:90 +msgid "Create a debug log file." +msgstr "" + +#: views/settings/page.php:16 +msgid "WP Rocket Settings" +msgstr "اعدادات WP Rocket" + +#: views/settings/page.php:30 +#, php-format +msgid "version %s" +msgstr "الاصدار %s" + +#: views/settings/page.php:40 +msgid "Save Changes" +msgstr "حفظ التغيرات" + +#: views/settings/page.php:56 +msgid "Show Sidebar" +msgstr "إظهار الشريط الجانبي" + +#: views/settings/page.php:75 +msgid "Thanks for choosing to participate in the WP Rocket beta program!" +msgstr "" + +#: views/settings/page.php:76 +msgid "" +"A beta version is usually one that has new features and improvements, but we" +" want to test it a little more before full launch." +msgstr "" + +#: views/settings/page.php:77 +msgid "" +"We’d love it if you took our beta versions for a ride, but please keep in " +"mind that it might be less stable than our other releases. Don’t worry, you " +"can switch back to a full release version at any time." +msgstr "" + +#: views/settings/page.php:78 +msgid "" +"Your mission: please send all feedback about our beta versions, including " +"bug reports, to support@wp-rocket.me" +msgstr "" + +#: views/settings/page.php:80 +msgid "If you don’t want to join the beta program, simply close this window." +msgstr "" + +#: views/settings/page.php:82 +msgid "Activate Rocket Tester" +msgstr "" + +#: views/settings/page.php:93 +msgid "" +"Below is a detailed view of all data WP Rocket will collect if " +"granted permission." +msgstr "" + +#: views/settings/page.php:96 +msgid "" +"WP Rocket will never transmit any domain names or email addresses (except " +"for license validation), IP addresses, or third-party API keys." +msgstr "" + +#: views/settings/page.php:98 +msgid "Activate Rocket analytics" +msgstr "" + +#: views/settings/partials/documentation.php:14 +msgid "It is a great starting point to fix some of the most common issues." +msgstr "" + +#: views/settings/partials/documentation.php:18 +msgid "Read the documentation" +msgstr "قراءة وثائق المساعدة" + +#: views/settings/partials/sidebar.php:11 +msgid "How to correctly measure your website’s loading time" +msgstr "" + +#: views/settings/partials/sidebar.php:13 +msgid "" +"Learn how to use best practices to correctly measure your site's " +"performance." +msgstr "" + +#: views/settings/partials/sidebar.php:14 +msgid "" +"https://wp-rocket.me/blog/correctly-measure-websites-page-load-" +"time/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" + +#: views/settings/partials/sidebar.php:14 +msgid "Read our guide" +msgstr "اقرأ دليل الاستخدام" + +#: views/settings/partials/sidebar.php:17 +msgid "Why Google PageSpeed grade should not matter" +msgstr "لماذا لا يجب أن يكون تقييم جوجل PageSpeed ليس مهمًا" + +#: views/settings/partials/sidebar.php:18 +msgid "" +"https://wp-rocket.me/blog/the-truth-about-google-pagespeed-" +"insights/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" + +#: views/settings/partials/sidebar.php:18 +msgid "Read more" +msgstr "قراءة المزيد" + +#: views/settings/partials/sidebar.php:23 +msgid "You have not activated logged-in user cache." +msgstr "" + +#: views/settings/partials/sidebar.php:24 +msgid "" +"Use a private browser to check your website's speed and visual appearance." +msgstr "" + +#: views/settings/sections/addons-container.php:23 +#: views/settings/sections/fields-container.php:27 +msgid "Need Help?" +msgstr "تحتاج مساعدة؟" diff --git a/wp-content/plugins/wp-rocket/languages/rocket-bg_BG.mo b/wp-content/plugins/wp-rocket/languages/rocket-bg_BG.mo new file mode 100644 index 0000000000000000000000000000000000000000..5db18e37de8bed524514c808c04d29f13de5639e GIT binary patch literal 28802 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 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-rocket/languages/rocket-bg_BG.po b/wp-content/plugins/wp-rocket/languages/rocket-bg_BG.po new file mode 100644 index 0000000..d543b38 --- /dev/null +++ b/wp-content/plugins/wp-rocket/languages/rocket-bg_BG.po @@ -0,0 +1,3035 @@ +# Copyright (C) 2016 WP Rocket +# This file is distributed under the same license as the WP Rocket package. +# Translators: +# wpmedia , 2019 +# Valentin Lyong , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: WP Rocket 3.3.7\n" +"Report-Msgid-Bugs-To: http://wp-rocket.me/\n" +"POT-Creation-Date: 2019-08-26 11:14-0400\n" +"PO-Revision-Date: 2019-08-26 15:14+0000\n" +"Last-Translator: Valentin Lyong , 2019\n" +"Language-Team: Bulgarian (Bulgaria) (https://www.transifex.com/wp-media/teams/18133/bg_BG/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: bg_BG\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 1.8.11\n" +"X-Poedit-Basepath: ..\n" +"X-Poedit-KeywordsList: __;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c\n" +"X-Poedit-SearchPath-0: .\n" +"X-Poedit-SearchPathExcluded-0: assets\n" +"X-Poedit-SearchPathExcluded-1: src\n" +"X-Poedit-SearchPathExcluded-2: vendor\n" +"X-Poedit-SearchPathExcluded-3: node_modules\n" +"X-Poedit-SearchPathExcluded-4: tests\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Textdomain-Support: yes\n" + +#: inc/3rd-party/hosting/flywheel.php:15 inc/3rd-party/hosting/godaddy.php:15 +#: inc/3rd-party/hosting/o2switch.php:15 +#: inc/3rd-party/hosting/pressidium.php:15 inc/3rd-party/hosting/savvii.php:15 +#: inc/3rd-party/hosting/wp-serveur.php:24 +#: inc/3rd-party/hosting/wpengine.php:15 +#, php-format +msgid "" +"Your site is hosted on %s, we have enabled Varnish auto-purge for " +"compatibility." +msgstr "" +"Вашият сайт се хоства на %s, ние разрешихме авто-изчистване на Varnish за " +"съвместинмост." + +#: inc/3rd-party/hosting/kinsta.php:150 +#, php-format +msgid "" +"Your installation seems to be missing core Kinsta files managing Cache " +"clearing and CDN, which will prevent your Kinsta installation and WP Rocket " +"from working correctly. Please get in touch with Kinsta support through your" +" %1$sMyKinsta%2$s account to resolve this issue." +msgstr "" +"Вашата инсталация изглежда има липсващи Kinsta файлове управляващи " +"изчистването на кеша и CDN, което ще доведе Вашата Kinsta инсталация и WP " +"Rocket до неправилна работа. Моля свържете се с Kinsta поддръжката чрез " +"Вашият %1$sMyKinsta%2$sакаунт за да разрешите този проблем. " + +#: inc/3rd-party/plugins/jetpack.php:86 +msgid "Jetpack XML Sitemaps" +msgstr "Jetpack XML карти на сайта" + +#: inc/3rd-party/plugins/jetpack.php:88 +msgid "Preload the sitemap from the Jetpack plugin" +msgstr "Презаредете картата на сайта от плъгина Jetpack" + +#: inc/3rd-party/plugins/jetpack.php:96 +#: inc/3rd-party/plugins/seo/all-in-one-seo-pack.php:88 +#: inc/3rd-party/plugins/seo/rank-math-seo.php:34 +#: inc/3rd-party/plugins/seo/seopress.php:85 +#: inc/3rd-party/plugins/seo/the-seo-framework.php:123 +#: inc/3rd-party/plugins/seo/yoast-seo.php:86 +#, php-format +msgid "" +"We automatically detected the sitemap generated by the %s plugin. You can " +"check the option to preload it." +msgstr "" +"Ние автоматично засичаме картата на сайта генерирана от %s плъгина. Вие " +"можете да отметнете опцията за да я презаредите." + +#: inc/3rd-party/plugins/seo/all-in-one-seo-pack.php:86 +msgid "All in One SEO XML sitemap" +msgstr "Всичко е едно SEO XML карта на сайта" + +#: inc/3rd-party/plugins/seo/rank-math-seo.php:32 +msgid "Rank Math XML sitemap" +msgstr "" + +#: inc/3rd-party/plugins/seo/seopress.php:83 +msgid "SEOPress XML sitemap" +msgstr "" + +#: inc/3rd-party/plugins/seo/the-seo-framework.php:121 +msgid "The SEO Framework XML sitemap" +msgstr "" + +#: inc/3rd-party/plugins/seo/yoast-seo.php:84 +msgid "Yoast SEO XML sitemap" +msgstr "Yoast SEO XML карта на сайта" + +#: inc/admin/admin.php:13 inc/common/admin-bar.php:311 +#: inc/deprecated/deprecated.php:1789 +msgid "Support" +msgstr "Поддръжка" + +#: inc/admin/admin.php:15 +msgid "Docs" +msgstr "Документи" + +#: inc/admin/admin.php:17 inc/common/admin-bar.php:299 +msgid "FAQ" +msgstr "ЧЗВ" + +#: inc/admin/admin.php:19 inc/common/admin-bar.php:46 +msgid "Settings" +msgstr "Настройки" + +#: inc/admin/admin.php:64 inc/admin/admin.php:86 inc/admin/admin.php:105 +msgid "Clear this cache" +msgstr "Изчистете този кеш" + +#: inc/admin/admin.php:249 inc/admin/admin.php:264 +#: inc/classes/class-wp-rocket-requirements-check.php:204 +#: inc/classes/class-wp-rocket-requirements-check.php:214 +#, php-format +msgid "%s Update Rollback" +msgstr "%s Връщания на обновяване" + +#: inc/admin/admin.php:290 +#, php-format +msgid "%1$sReturn to WP Rocket%2$s or %3$sgo to Plugins page%2$s" +msgstr "" + +#: inc/admin/admin.php:529 +msgid "Settings import failed: you do not have the permissions to do this." +msgstr "" +"Импортиране на настройките са провалени: Вие нямате права да правите това." + +#: inc/admin/admin.php:533 +msgid "Settings import failed: no file uploaded." +msgstr "Импортиране на настройките са провалени: няма качен файл." + +#: inc/admin/admin.php:537 +msgid "Settings import failed: incorrect filename." +msgstr "Настройките за импортиране са провалени: некоректно име на файл." + +#: inc/admin/admin.php:546 +msgid "Settings import failed: incorrect filetype." +msgstr "Настройките за импортиране са провалени: некорекетн тип на файла." + +#: inc/admin/admin.php:554 +msgid "Settings import failed: " +msgstr "" + +#: inc/admin/admin.php:571 +msgid "Settings import failed: unexpected file content." +msgstr "" + +#: inc/admin/admin.php:592 +msgid "Settings imported and saved." +msgstr "Настройките са импортнати и запазени." + +#: inc/admin/options.php:101 +#, php-format +msgid "Cloudflare development mode error: %s" +msgstr "Грешка за режим на разработчик на Cloudflare: %s" + +#: inc/admin/options.php:107 +#, php-format +msgid "Cloudflare development mode %s" +msgstr "Режим на разработчик за Cloudflare %s" + +#: inc/admin/options.php:124 +#, php-format +msgid "Cloudflare cache level error: %s" +msgstr "Грешка в нивото на кеша за Cloudflare: %s" + +#: inc/admin/options.php:128 +msgctxt "Cloudflare caching level" +msgid "Standard" +msgstr "Стандартни" + +#: inc/admin/options.php:134 +#, php-format +msgid "Cloudflare cache level set to %s" +msgstr "Нивото на кеша за Cloudflare е зададено на %s" + +#: inc/admin/options.php:146 +#, php-format +msgid "Cloudflare minification error: %s" +msgstr "Грешка в минификацията за Cloudflare: %s" + +#: inc/admin/options.php:152 +#, php-format +msgid "Cloudflare minification %s" +msgstr "Минификация на Cloudflare %s" + +#: inc/admin/options.php:164 +#, php-format +msgid "Cloudflare rocket loader error: %s" +msgstr "Грешка в rocket loader за Cloudflare: %s" + +#: inc/admin/options.php:170 +#, php-format +msgid "Cloudflare rocket loader %s" +msgstr "Rocker loader за Cloudflare %s" + +#: inc/admin/options.php:182 +#, php-format +msgid "Cloudflare browser cache error: %s" +msgstr "Грешка в кеша на браузера за Cloudflare: %s" + +#: inc/admin/options.php:188 +#, php-format +msgid "Cloudflare browser cache set to %s seconds" +msgstr "Кеша на браузера за Cloudflare е зададено на %s секунди" + +#: inc/admin/options.php:241 inc/classes/admin/settings/class-page.php:692 +msgid "Excluded CSS Files" +msgstr "Изключени CSS файлове" + +#: inc/admin/options.php:242 inc/classes/admin/settings/class-page.php:784 +msgid "Excluded Inline JavaScript" +msgstr "" + +#: inc/admin/options.php:243 inc/classes/admin/settings/class-page.php:802 +msgid "Excluded JavaScript Files" +msgstr "" + +#: inc/admin/options.php:244 inc/classes/admin/settings/class-page.php:1128 +msgid "Never Cache URL(s)" +msgstr "" + +#: inc/admin/options.php:245 inc/classes/admin/settings/class-page.php:1144 +msgid "Never Cache User Agent(s)" +msgstr "" + +#: inc/admin/options.php:246 inc/classes/admin/settings/class-page.php:1149 +msgid "Always Purge URL(s)" +msgstr "" + +#: inc/admin/options.php:247 inc/classes/admin/settings/class-page.php:1443 +msgid "Exclude files from CDN" +msgstr "" + +#: inc/admin/options.php:265 +#, php-format +msgid "%1$s: %2$s." +msgstr "" + +#: inc/admin/options.php:275 +msgid "The following pattern is invalid and has been removed:" +msgid_plural "The following patterns are invalid and have been removed:" +msgstr[0] "" +msgstr[1] "" + +#: inc/admin/ui/meta-boxes.php:14 inc/admin/ui/notices.php:955 +#: inc/common/admin-bar.php:65 inc/common/admin-bar.php:118 +#: views/settings/page-sections/dashboard.php:115 +msgid "Clear cache" +msgstr "Изчистете кеша" + +#: inc/admin/ui/meta-boxes.php:36 +msgid "WP Rocket Options" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:66 +msgid "Never cache this page" +msgstr "Никога да не се кешира тази страница" + +#: inc/admin/ui/meta-boxes.php:70 +msgid "Activate these options on this post:" +msgstr "Активирайте тези опции за тази публикация:" + +#: inc/admin/ui/meta-boxes.php:73 +msgid "LazyLoad for images" +msgstr "LazyLoad за изображенията" + +#: inc/admin/ui/meta-boxes.php:74 +msgid "LazyLoad for iframes/videos" +msgstr "LazyLoad за iframes/видеа" + +#: inc/admin/ui/meta-boxes.php:75 +#: inc/classes/admin/settings/class-page.php:615 +msgid "Minify HTML" +msgstr "Минифициране на HTML" + +#: inc/admin/ui/meta-boxes.php:76 +msgid "Minify/combine CSS" +msgstr "Минифициране/комбиниране на CSS" + +#: inc/admin/ui/meta-boxes.php:77 +msgid "Minify/combine JS" +msgstr "Минифициране/комбиниране на JS" + +#: inc/admin/ui/meta-boxes.php:78 +#: inc/classes/admin/settings/class-page.php:1413 +#: inc/classes/admin/settings/class-page.php:1424 +#: inc/deprecated/deprecated.php:1775 +msgid "CDN" +msgstr "CDN" + +#: inc/admin/ui/meta-boxes.php:79 +msgid "Optimize CSS Delivery" +msgstr "Оптимизиране на CSS доставката" + +#: inc/admin/ui/meta-boxes.php:80 +msgid "Defer JS" +msgstr "Отлагане на JS" + +#: inc/admin/ui/meta-boxes.php:86 +#, php-format +msgid "Activate first the %s option." +msgstr "Активирайте първо %s опция." + +#: inc/admin/ui/meta-boxes.php:102 +#, php-format +msgid "" +"%1$sNote:%2$s None of these options will be applied if this post has been " +"excluded from cache in the global cache settings." +msgstr "" + +#: inc/admin/ui/notices.php:24 inc/admin/ui/notices.php:34 +#, php-format +msgid "" +"%1$s has not been deactivated due to missing writing permissions.
      \n" +"Make %2$s writeable and retry deactivation, or force deactivation now:" +msgstr "" +"%1$s не е бил деактивиран заради липсващи права за писане.
      \n" +"Направете %2$sс права за писане и опитайте деактивирането, или изпълнете деактивацията сега:" + +#: inc/admin/ui/notices.php:83 +#, php-format +msgid "" +"%s: One or more plugins have been enabled or disabled, " +"clear the cache if they affect the front end of your site." +msgstr "" +"%s: Един или повече плъгини са били забранени или " +"разрешени, изчистете кеша, ако те имат ефект на потребителската част на " +"Вашият сайт." + +#: inc/admin/ui/notices.php:196 +#, php-format +msgid "" +"%s: The following plugins are not compatible with this " +"plugin and may cause unexpected results:" +msgstr "" +"%s: Следните плъгини не са съвместими с този плъгин и може " +"да предизвикат неочаквани резултати:" + +#: inc/admin/ui/notices.php:202 +msgid "Deactivate" +msgstr "Деактивиране" + +#: inc/admin/ui/notices.php:243 +msgid "" +"WP Rocket Footer JS is not an official add-on. It prevents some options in " +"WP Rocket from working correctly. Please deactivate it if you have problems." +msgstr "" + +#: inc/admin/ui/notices.php:283 +#, php-format +msgid "" +"Endurance Cache is currently enabled, which will conflict with WP Rocket " +"Cache. Please set the Endurance Cache cache level to Off (Level 0) on the " +"%1$sSettings > General%2$s page to prevent any issues." +msgstr "" + +#: inc/admin/ui/notices.php:305 +#, php-format +msgid "" +"%1$s: A custom permalink structure is required for the plugin to work " +"properly. %2$sGo to permalinks settings%3$s" +msgstr "" +"%1$s: Структурата на потребителските връзки се изисква за да може плъгина да" +" работи коректно. %2$sОтидете до настройки на постоянни връзки %3$s" + +#: inc/admin/ui/notices.php:442 +#, php-format +msgid "" +"%s could not modify the .htaccess file due to missing writing permissions." +msgstr "" + +#: inc/admin/ui/notices.php:448 inc/admin/ui/notices.php:1032 +#, php-format +msgid "Troubleshoot: %1$sHow to make system files writeable%2$s" +msgstr "" +"Отстраняване на повреди: %1$sКак да направите системните файлове с права за " +"писане%2$s" + +#: inc/admin/ui/notices.php:450 inc/admin/ui/notices.php:1034 +msgid "" +"https://docs.wp-rocket.me/article/626-how-to-make-system-files-htaccess-wp-" +"config-writeable/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://docs.wp-rocket.me/article/626-how-to-make-system-files-htaccess-wp-" +"config-writeable/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: inc/admin/ui/notices.php:456 +msgid "" +"Don’t worry, WP Rocket’s page caching and settings will still function " +"correctly." +msgstr "" + +#: inc/admin/ui/notices.php:456 +msgid "" +"For optimal performance, adding the following lines into your .htaccess is " +"recommended (not required):" +msgstr "" + +#: inc/admin/ui/notices.php:600 +#, php-format +msgid "" +"%1$s is good to go! %2$sTest your load time%4$s, or visit your " +"%3$ssettings%4$s." +msgstr "" +"%1$s е готов за работа! %2$sТествайте времето за зареждане%4$s, или посетете" +" Вашите %3$sнастройки%4$s." + +#: inc/admin/ui/notices.php:721 +msgid "" +"Would you allow WP Rocket to collect non-sensitive diagnostic data from this" +" website?" +msgstr "" +"Ще позволите ли на WP Rocket да събира не-чувствителни данни от този " +"уебсайт?" + +#: inc/admin/ui/notices.php:722 +msgid "This would help us to improve WP Rocket for you in the future." +msgstr "Това ще ни помогне да подобрим WP Rocket за Вас за в бъдеще." + +#: inc/admin/ui/notices.php:728 +msgid "What info will we collect?" +msgstr "Каква информация ние ще събираме?" + +#: inc/admin/ui/notices.php:733 +msgid "" +"Below is a detailed view of all data WP Rocket will collect if granted " +"permission. WP Rocket will never transmit any domain names or email " +"addresses (except for license validation), IP addresses, or third-party API " +"keys." +msgstr "" +"Отдолу е подробен изглед на всичките данни, които WP Rocket ще събира, ако " +"разрешите достъп. WP Rocket никога няма да трансферира домейн имена или " +"email адреси (освен за валидация на лиценз), IP адреси, или API ключове от " +"трети лица." + +#: inc/admin/ui/notices.php:742 +msgid "Yes, allow" +msgstr "Да, позволявам" + +#: inc/admin/ui/notices.php:745 +msgid "No, thanks" +msgstr "Не, благодаря" + +#: inc/admin/ui/notices.php:783 +msgid "Thank you!" +msgstr "Благодарим Ви!" + +#: inc/admin/ui/notices.php:788 +msgid "WP Rocket now collects these metrics from your website:" +msgstr "WP Rocket сега ще събира тези метрики от Вашият уебсайт:" + +#: inc/admin/ui/notices.php:825 +#, php-format +msgid "%s: Cache cleared." +msgstr "%s: Кешът е изчистен." + +#: inc/admin/ui/notices.php:830 +#, php-format +msgid "%s: Post cache cleared." +msgstr "%s: Кешът на буликации е изчистен." + +#: inc/admin/ui/notices.php:835 +#, php-format +msgid "%s: Term cache cleared." +msgstr "%s: Кешът на условията е изчистен." + +#: inc/admin/ui/notices.php:840 +#, php-format +msgid "%s: User cache cleared." +msgstr "%s: Кешът на потребителите е изчистен." + +#: inc/admin/ui/notices.php:910 +msgid "" +"The following scheduled event failed to run. This may indicate the CRON " +"system is not running properly, which can prevent some WP Rocket features " +"from working as intended:" +msgid_plural "" +"The following scheduled events failed to run. This may indicate the CRON " +"system is not running properly, which can prevent some WP Rocket features " +"from working as intended:" +msgstr[0] "" +msgstr[1] "" + +#: inc/admin/ui/notices.php:919 +msgid "Please contact your host to check if CRON is working." +msgstr "" + +#: inc/admin/ui/notices.php:958 +msgid "Stop Preload" +msgstr "" + +#: inc/admin/ui/notices.php:976 +msgid "Force deactivation " +msgstr "Принудително деактивиране" + +#: inc/admin/ui/notices.php:989 +msgid "The following code should have been written to this file:" +msgstr "Следният код трябва да бъде написан към този файл:" + +#: inc/admin/ui/notices.php:999 views/settings/page-sections/dashboard.php:45 +msgid "Dismiss this notice." +msgstr "Скрийте това съобщение." + +#: inc/admin/ui/notices.php:1020 +#, php-format +msgid "%s cannot configure itself due to missing writing permissions." +msgstr "" +"%s не може да се конфигурира от само себе си заради липсващи права за " +"писане." + +#: inc/admin/ui/notices.php:1026 +#, php-format +msgid "Affected file/folder: %s" +msgstr "Афектиран файл/папка: %s" + +#: inc/classes/admin/Database/class-optimization.php:41 +#: inc/classes/admin/settings/class-page.php:1289 +msgid "Revisions" +msgstr "Ревизии" + +#: inc/classes/admin/Database/class-optimization.php:42 +#: inc/classes/admin/settings/class-page.php:1299 +msgid "Auto Drafts" +msgstr "Автоматични чернови" + +#: inc/classes/admin/Database/class-optimization.php:43 +#: inc/classes/admin/settings/class-page.php:1309 +msgid "Trashed Posts" +msgstr "" + +#: inc/classes/admin/Database/class-optimization.php:44 +#: inc/classes/admin/settings/class-page.php:1319 +msgid "Spam Comments" +msgstr "" + +#: inc/classes/admin/Database/class-optimization.php:45 +#: inc/classes/admin/settings/class-page.php:1329 +msgid "Trashed Comments" +msgstr "" + +#: inc/classes/admin/Database/class-optimization.php:46 +#: inc/classes/admin/settings/class-page.php:1339 +msgid "Expired transients" +msgstr "Изтекли настройки" + +#: inc/classes/admin/Database/class-optimization.php:47 +msgid "Transients" +msgstr "" + +#: inc/classes/admin/Database/class-optimization.php:48 +msgid "Tables" +msgstr "" + +#: inc/classes/admin/class-logs.php:124 +msgid "The debug file could not be deleted." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:212 +#: inc/classes/admin/settings/class-page.php:213 +msgid "Unavailable" +msgstr "Не достъпен" + +#: inc/classes/admin/settings/class-page.php:327 +#: inc/deprecated/deprecated.php:1791 +#: views/settings/page-sections/dashboard.php:72 +msgid "License" +msgstr "Лиценз" + +#: inc/classes/admin/settings/class-page.php:344 +msgid "API key" +msgstr "API ключ" + +#: inc/classes/admin/settings/class-page.php:359 +msgid "Email address" +msgstr "Email адрес" + +#: inc/classes/admin/settings/class-page.php:388 +msgid "Dashboard" +msgstr "Табло" + +#: inc/classes/admin/settings/class-page.php:389 +msgid "Get help, account info" +msgstr "Вземете помощ, информация на акаунт" + +#: inc/classes/admin/settings/class-page.php:398 +msgid "My Status" +msgstr "Моят статус" + +#: inc/classes/admin/settings/class-page.php:408 views/settings/page.php:71 +msgid "Rocket Tester" +msgstr "Rocket тестер" + +#: inc/classes/admin/settings/class-page.php:409 +msgid "I am part of the WP Rocket Beta Testing Program." +msgstr "Аз съм част от WP Rocket бета тестер програмата." + +#: inc/classes/admin/settings/class-page.php:417 views/settings/page.php:89 +msgid "Rocket Analytics" +msgstr "Rocket анализи" + +#: inc/classes/admin/settings/class-page.php:419 +#, php-format +msgid "" +"I agree to share anonymous data with the development team to help improve WP" +" Rocket. %1$sWhat info will we collect?%2$s" +msgstr "" +"Съгласен съм да споделям анонимни данни с екипа за разработка за помощ на " +"подобряване на WP Rocket. %1$sКаква информация ние ще събираме?%2$s" + +#: inc/classes/admin/settings/class-page.php:447 +msgid "Cache" +msgstr "Кеш" + +#: inc/classes/admin/settings/class-page.php:448 +msgid "Basic cache options" +msgstr "Основни кеш опции" + +#: inc/classes/admin/settings/class-page.php:455 +msgid "Mobile Cache" +msgstr "Мобилен кеш" + +#: inc/classes/admin/settings/class-page.php:457 +msgid "Speed up your site for mobile visitors." +msgstr "Успорете Вашият сайт за мобилни посетители." + +#: inc/classes/admin/settings/class-page.php:462 +msgid "" +"We detected you use a plugin that requires a separate cache for mobile, and " +"automatically enabled this option for compatibility." +msgstr "" +"Ние засякохме, че Вие използвате плъгин, който изисква разделен кеш за " +"мобилни устройства и автоматично разрешихме тази опция за съвместимост." + +#: inc/classes/admin/settings/class-page.php:466 +msgid "User Cache" +msgstr "Потребителски кеш" + +#: inc/classes/admin/settings/class-page.php:469 +#, php-format +msgid "" +"%1$sUser cache%2$s is great when you have user-specific or restricted " +"content on your website." +msgstr "" +"%1$sПотребителският кеш%2$s е чудесен когато Вие имате специфични или " +"ограничено съдържание на Вашият сайт." + +#: inc/classes/admin/settings/class-page.php:477 +msgid "Cache Lifespan" +msgstr "Живот на кеша" + +#: inc/classes/admin/settings/class-page.php:480 +#, php-format +msgid "" +"Cache lifespan is the period of time after which all cache files are " +"removed.
      Enable %1$spreloading%2$s for the cache to be rebuilt " +"automatically after lifespan expiration." +msgstr "" +"Живота на кеша е периода от време, след което Всичките кеш файлове ще се " +"премахнат.
      Разрешаване на %1$s презареждането%2$sза кеша за да се " +"построи отново всчтоматично след като живота му изтече." + +#: inc/classes/admin/settings/class-page.php:494 +msgid "Enable caching for logged-in WordPress users" +msgstr "Разрешаване на кеширането за вписани в WordPress потребители" + +#: inc/classes/admin/settings/class-page.php:502 +msgid "Enable caching for mobile devices" +msgstr "Разрешаване на кеширането за мобилни устройства" + +#: inc/classes/admin/settings/class-page.php:517 +msgid "Separate cache files for mobile devices" +msgstr "Съединете кеш файловете за мобилни устройства" + +#: inc/classes/admin/settings/class-page.php:519 +#, php-format +msgid "" +"%1$sMobile cache%2$s works safest with both options enabled. When in doubt, " +"keep both." +msgstr "" +"%1$sМобилният кеш%2$s работи безопастно и с двете разрешени опции. При " +"съмнение запазете и двете." + +#: inc/classes/admin/settings/class-page.php:535 +msgid "" +"Specify time after which the global cache is cleared
      (0 = unlimited )" +msgstr "" +"Определете време след което глобалният кеш ще се изтрие
      (0 = неограничено" +" )" + +#: inc/classes/admin/settings/class-page.php:537 +#, php-format +msgid "" +"Reduce lifespan to 10 hours or less if you notice issues that seem to appear" +" periodically. %1$sWhy?%2$s" +msgstr "" +"Намалете живота на 10 часа или по-малко, ако Вие забелязвате проблеми които " +"се появяват периодично. %1$sЗащо?%2$s" + +#: inc/classes/admin/settings/class-page.php:543 +msgid "Minutes" +msgstr "Минути" + +#: inc/classes/admin/settings/class-page.php:544 +msgid "Hours" +msgstr "Часове" + +#: inc/classes/admin/settings/class-page.php:545 +msgid "Days" +msgstr "Дни" + +#: inc/classes/admin/settings/class-page.php:571 +msgid "File Optimization" +msgstr "Оптимизация на файл" + +#: inc/classes/admin/settings/class-page.php:572 +msgid "Optimize CSS & JS" +msgstr "Оптимизиране на CSS & JS" + +#: inc/classes/admin/settings/class-page.php:579 +msgid "Basic Settings" +msgstr "Основни настройки" + +#: inc/classes/admin/settings/class-page.php:586 +#: inc/classes/admin/settings/class-page.php:596 +#: inc/classes/admin/settings/class-page.php:606 +#, php-format +msgid "" +"%1$s Minification is currently activated in Autoptimize. If" +" you want to use %2$s’s minification, disable those options in Autoptimize." +msgstr "" +"%1$s Минифицирането в момента е активирано в " +"Автооптимизиране. Ако искате да използвате " +"%2$sминифициране, изключете тези опции в Автооптимизиране." + +#: inc/classes/admin/settings/class-page.php:589 +msgid "CSS Files" +msgstr "CSS файлове" + +#: inc/classes/admin/settings/class-page.php:599 +msgid "JavaScript Files" +msgstr "JavaScript файлове" + +#: inc/classes/admin/settings/class-page.php:619 +msgid "Minifying HTML removes whitespace and comments to reduce the size." +msgstr "" +"Минифицирането на HTML премахва празните пространства и коментарите за да " +"намали размера." + +#: inc/classes/admin/settings/class-page.php:630 +msgid "Combine Google Fonts files" +msgstr "Комбиниране на Google Fonts файловете" + +#: inc/classes/admin/settings/class-page.php:631 +msgid "Combining Google Fonts will reduce the number of HTTP requests." +msgstr "Комбиниране на Google Fonts ще намали броя на HTTP заявките." + +#: inc/classes/admin/settings/class-page.php:639 +msgid "Remove query strings from static resources" +msgstr "Премахване на query strings от статичните ресурси" + +#: inc/classes/admin/settings/class-page.php:641 +#, php-format +msgid "" +"Removes the version query string from static files (e.g. style.css?ver=1.0) " +"and encodes it into the filename instead (e.g. style-1.0.css). Can improve " +"your GTMetrix score. %1$sMore info%2$s" +msgstr "" +"Премахване на версията на заявката от статичните файлове (напр. " +"style.css?ver=1.0) и кодирането им в файлово име (напр. style-1.0.css). Може" +" да подробите Вашата GTMetrix оценка. %1$sПовече информация%2$s" + +#: inc/classes/admin/settings/class-page.php:649 +msgid "Minify CSS files" +msgstr "Минифициране на CSS файлове" + +#: inc/classes/admin/settings/class-page.php:650 +msgid "Minify CSS removes whitespace and comments to reduce the file size." +msgstr "" +"Минифициране на CSS премахва празните пространства и коментарите за да " +"намали размера на файла." + +#: inc/classes/admin/settings/class-page.php:663 +#: inc/classes/admin/settings/class-page.php:685 +#: inc/classes/admin/settings/class-page.php:755 +#: inc/classes/admin/settings/class-page.php:777 +msgid "This could break things!" +msgstr "Това може да счупи неща!" + +#: inc/classes/admin/settings/class-page.php:664 +#: inc/classes/admin/settings/class-page.php:686 +#: inc/classes/admin/settings/class-page.php:756 +#: inc/classes/admin/settings/class-page.php:778 +msgid "" +"If you notice any errors on your website after having activated this " +"setting, just deactivate it again, and your site will be back to normal." +msgstr "" +"Ако забележите някакви грешки на Вашият сайт след активирането на тези " +"настройки, просто ги деактивирайте отново, и Вашият сайт ще работи нормално." + +#: inc/classes/admin/settings/class-page.php:665 +msgid "Activate minify CSS" +msgstr "Активиране на CSS минифицирането" + +#: inc/classes/admin/settings/class-page.php:670 +msgid "Combine CSS files (Enable Minify CSS files to select)" +msgstr "" +"Комбиниране на CSS файлове (Разрешаване на минифицирането на CSS " +"файловете за избор)" + +#: inc/classes/admin/settings/class-page.php:672 +#, php-format +msgid "" +"Combine CSS merges all your files into 1, reducing HTTP requests. Not " +"recommended if your site uses HTTP/2. %1$sMore info%2$s" +msgstr "" +"Комбиниране на CSS свързва всички файлове в 1, намалява HTTP заявките. Не е " +"препоръчително, ако Вашият сайт използва HTTP.2. %1$sПовече информация%2$s" + +#: inc/classes/admin/settings/class-page.php:687 +msgid "Activate combine CSS" +msgstr "Активиране на комбиниране на CSS" + +#: inc/classes/admin/settings/class-page.php:693 +msgid "" +"Specify URLs of CSS files to be excluded from minification and concatenation" +" (one per line)." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:694 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*).css " +"wildcards to exclude all CSS files located at a specific path." +msgstr "" +"Домейнът част от URL-ът ще бъде премахнат автоматично.
      Използване на " +"(.*).css заместващи символи изключващи всички CSS файлове намиращи се в " +"специфични пътища." + +#: inc/classes/admin/settings/class-page.php:707 +msgid "Optimize CSS delivery" +msgstr "ОПтимизиране на CSS доставката" + +#: inc/classes/admin/settings/class-page.php:714 +#, php-format +msgctxt "WP Critical CSS compatibility" +msgid "" +"Optimize CSS Delivery is currently handled by the %1$s plugin. If you want " +"to use WP Rocket’s Optimize CSS Delivery option, disable the %1$s plugin." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:716 +#, php-format +msgid "" +"Optimize CSS delivery eliminates render-blocking CSS on your website for " +"faster perceived load time. %1$sMore info%2$s" +msgstr "" +"Оптимизиране на CSS доставката елеминира блокирането-рендирането на CSS за " +"Вашият сайт за по-бързо време за зареждане. %1$sПовече информация%2$s" + +#: inc/classes/admin/settings/class-page.php:727 +msgid "Fallback critical CSS" +msgstr "Критичен отговор за CSS" + +#: inc/classes/admin/settings/class-page.php:732 +#, php-format +msgid "" +"Provides a fallback if auto-generated critical path CSS is incomplete. " +"%1$sMore info%2$s" +msgstr "" +"Предоставя отговор , ако автоматично-генерирания път към CSS е непълен. " +"%1$sПовече информация%2$s" + +#: inc/classes/admin/settings/class-page.php:741 +msgid "Minify JavaScript files" +msgstr "Минифициране на JavaScript файловете" + +#: inc/classes/admin/settings/class-page.php:742 +msgid "" +"Minify JavaScript removes whitespace and comments to reduce the file size." +msgstr "" +"Минифициране на JavaScript файловете премахва празното място и коментарите " +"за да намали размера на файла." + +#: inc/classes/admin/settings/class-page.php:757 +msgid "Activate minify JavaScript" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:762 +msgid "" +"Combine JavaScript files (Enable Minify JavaScript files to select)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:764 +#, php-format +msgid "" +"Combine JavaScript files combines your site’s internal, 3rd party and inline" +" JS reducing HTTP requests. Not recommended if your site uses HTTP/2. " +"%1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:779 +msgid "Activate combine JavaScript" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:786 +#, php-format +msgid "" +"Specify patterns of inline JavaScript to be excluded from concatenation (one" +" per line). %1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:803 +msgid "" +"Specify URLs of JavaScript files to be excluded from minification and " +"concatenation (one per line)." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:804 +msgid "" +"Internal: The domain part of the URL will be stripped " +"automatically. Use (.*).js wildcards to exclude all JS files located at a " +"specific path." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:806 +#, php-format +msgid "" +"3rd Party: Use either the full URL path or only the domain " +"name, to exclude external JS. %1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:822 +msgid "Load JavaScript deferred" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:824 +#, php-format +msgid "" +"Load JavaScript deferred eliminates render-blocking JS on your site and can " +"improve load time. %1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:835 +msgid "Safe Mode for jQuery (recommended)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:836 +msgid "" +"Safe mode for jQuery for deferred JS ensures support for inline jQuery " +"references from themes and plugins by loading jQuery at the top of the " +"document as a render-blocking script.
      Deactivating may result in " +"broken functionality, test thoroughly!" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:861 +msgid "Media" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:862 +msgid "LazyLoad, emojis, embeds" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:869 +msgid "LazyLoad" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:872 +#, php-format +msgid "" +"It can improve actual and perceived loading time as images, iframes, and " +"videos will be loaded only as they enter (or about to enter) the viewport " +"and reduces the number of HTTP requests. %1$sMore Info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:879 +#, php-format +msgid "" +"Lazyload is currently activated in Autoptimize. If you want" +" to use %1$s’s lazyload, disable this option in Autoptimize." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:882 +msgid "Emoji 👻" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:884 +msgid "" +"Use default emoji of visitor's browser instead of loading emoji from " +"WordPress.org" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:888 +msgid "Embeds" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:890 +msgid "" +"Prevents others from embedding content from your site, prevents you from " +"embedding content from other (non-whitelisted) sites, and removes JavaScript" +" requests related to WordPress embeds" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:900 +msgid "Enable for images" +msgstr "Разрешаване за изображения" + +#: inc/classes/admin/settings/class-page.php:911 +msgctxt "Avada" +msgid "" +"Lazyload for images is currently activated in Avada. If you want to use WP " +"Rocket’s LazyLoad, disable this option in Avada." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:919 +msgid "Enable for iframes and videos" +msgstr "Разрешаване за iframes и видеа" + +#: inc/classes/admin/settings/class-page.php:934 +msgid "Replace YouTube iframe with preview image" +msgstr "Заместете YouTube iframe с изображение за преглед" + +#: inc/classes/admin/settings/class-page.php:935 +msgid "" +"This can significantly improve your loading time if you have a lot of " +"YouTube videos on a page." +msgstr "" +"Това може значително да подобри Вашето време за зареждане, и ако имате много" +" YouTube видеа на страницата." + +#: inc/classes/admin/settings/class-page.php:947 +msgid "Disable Emoji" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:948 +msgid "Disable Emoji will reduce the number of external HTTP requests." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:956 +msgid "Disable WordPress embeds" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:978 +#: inc/classes/admin/settings/class-page.php:988 +#: inc/deprecated/deprecated.php:1778 +msgid "Preload" +msgstr "Презареждане" + +#: inc/classes/admin/settings/class-page.php:979 +msgid "Generate cache files" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:991 +#, php-format +msgid "" +"When you enable preloading WP Rocket will generate the cache starting with " +"the links on your homepage followed by the sitemaps you specify. Preloading " +"is automatically triggered when you add or update content and can also be " +"manually triggered from the admin bar or from the %1$sWP Rocket " +"Dashboard%2$s." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:999 +msgid "Prefetch DNS Requests" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1001 +msgid "" +"DNS prefetching can make external files load faster, especially on mobile " +"networks" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1015 +msgid "Activate Preloading" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1034 +msgid "Activate sitemap-based cache preloading" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1053 +msgid "Sitemaps for preloading" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1057 +msgid "Specify XML sitemap(s) to be used for preloading" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1067 +msgid "URLs to prefetch" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1068 +msgid "" +"Specify external hosts to be prefetched (no http:, one per " +"line)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1091 +msgid "Advanced Rules" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1092 +msgid "Fine-tune cache rules" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1101 +msgid "" +"Sensitive pages like custom login/logout URLs should be excluded from cache." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1104 +msgctxt "plugin name" +msgid "WooCommerce" +msgstr "WooCommerce" + +#: inc/classes/admin/settings/class-page.php:1106 +msgctxt "plugin name" +msgid "Easy Digital Downloads" +msgstr "Easy Digital Downloads" + +#: inc/classes/admin/settings/class-page.php:1108 +msgctxt "plugin name" +msgid "iThemes Exchange" +msgstr "iThemes Exchange" + +#: inc/classes/admin/settings/class-page.php:1110 +msgctxt "plugin name" +msgid "Jigoshop" +msgstr "Jigoshop" + +#: inc/classes/admin/settings/class-page.php:1112 +msgctxt "plugin name" +msgid "WP-Shop" +msgstr "WP-Shop" + +#: inc/classes/admin/settings/class-page.php:1118 +#, php-format +msgid "" +"
      Cart, checkout and \"my account\" pages set in " +"%1$s%2$s%3$s will be detected and never cached by default." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1139 +msgid "Never Cache Cookies" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1158 +msgid "Cache Query String(s)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1161 +#, php-format +msgid "" +"%1$sCache for query strings%2$s enables you to force caching for specific " +"GET parameters." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1175 +msgid "" +"Specify URLs of pages or posts that should never be cached (one per line)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1176 +#: inc/classes/admin/settings/class-page.php:1204 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*) " +"wildcards to address multiple URLs under a given path." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1185 +msgid "" +"Specify the IDs of cookies that, when set in the visitor's browser, should " +"prevent a page from getting cached (one per line)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1193 +msgid "" +"Specify user agent strings that should never see cached pages (one per line)" +msgstr "" +"Уточнете потребителските агенти, които никога няма да виждат кеширани " +"страници (една на ред)" + +#: inc/classes/admin/settings/class-page.php:1194 +msgid "Use (.*) wildcards to detect parts of UA strings." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1203 +msgid "" +"Specify URLs you always want purged from cache whenever you update any post " +"or page (one per line)" +msgstr "" +"Уточнете URL-и, които винаги искате да се изчистват от кеша независимо дали " +"да обновите публикация или страница (една на ред)" + +#: inc/classes/admin/settings/class-page.php:1212 +msgid "Specify query strings for caching (one per line)" +msgstr "Уточнете query strings за кеширане (една на страница)" + +#: inc/classes/admin/settings/class-page.php:1240 +#: inc/deprecated/deprecated.php:1777 +msgid "Database" +msgstr "База данни" + +#: inc/classes/admin/settings/class-page.php:1241 +msgid "Optimize, reduce bloat" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1250 +msgid "Post Cleanup" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1252 +msgid "" +"Post revisions and drafts will be permanently deleted. Do not use this " +"option if you need to retain revisions or drafts." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1260 +msgid "Comments Cleanup" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1262 +msgid "Spam and trashed comments will be permanently deleted." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1266 +msgid "Transients Cleanup" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1268 +msgid "" +"Transients are temporary options; they are safe to remove. They will be " +"automatically regenerated as your plugins require them." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1272 +msgid "Database Cleanup" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1274 +msgid "Reduces overhead of database tables" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1278 +msgid "Automatic cleanup" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1291 +#, php-format +msgid "%s revision in your database." +msgid_plural "%s revisions in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1301 +#, php-format +msgid "%s draft in your database." +msgid_plural "%s drafts in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1311 +#, php-format +msgid "%s trashed post in your database." +msgid_plural "%s trashed posts in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1321 +#, php-format +msgid "%s spam comment in your database." +msgid_plural "%s spam comments in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1331 +#, php-format +msgid "%s trashed comment in your database." +msgid_plural "%s trashed comments in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1341 +#, php-format +msgid "%s expired transient in your database." +msgid_plural "%s expired transients in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1349 +msgid "All transients" +msgstr "Всички настройки" + +#: inc/classes/admin/settings/class-page.php:1351 +#, php-format +msgid "%s transient in your database." +msgid_plural "%s transients in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1359 +msgid "Optimize Tables" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1361 +#, php-format +msgid "%s table to optimize in your database." +msgid_plural "%s tables to optimize in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1372 +msgid "Schedule Automatic Cleanup" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1384 +msgid "Frequency" +msgstr "Честота" + +#: inc/classes/admin/settings/class-page.php:1392 +msgid "Daily" +msgstr "Дневно" + +#: inc/classes/admin/settings/class-page.php:1393 +msgid "Weekly" +msgstr "Седмично" + +#: inc/classes/admin/settings/class-page.php:1394 +msgid "Monthly" +msgstr "Месечно" + +#: inc/classes/admin/settings/class-page.php:1414 +msgid "Integrate your CDN" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1426 +msgid "" +"All URLs of static files (CSS, JS, images) will be rewritten to the CNAME(s)" +" you provide." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1428 +#, php-format +msgid "" +"Not required for services like Cloudflare and Sucuri. Please see our " +"available %1$sAdd-ons%2$s." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1469 +#, php-format +msgid "" +"%1$s%2$s Add-on%3$s is currently enabled. Configuration of the CDN settings " +"is not required for %2$s to work on your site." +msgid_plural "" +"%1$s%2$s Add-ons%3$s are currently enabled. Configuration of the CDN " +"settings is not required for %2$s to work on your site." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1484 +msgid "Enable Content Delivery Network" +msgstr "Разрешаване на Мрежата за Доставка на Съдържание" + +#: inc/classes/admin/settings/class-page.php:1493 +msgid "CDN CNAME(s)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1494 +msgid "Specify the CNAME(s) below" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1501 +msgid "" +"Specify URL(s) of files that should not get served via CDN (one per line)." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1502 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*) " +"wildcards to exclude all files of a given file type located at a specific " +"path." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1525 +#: inc/classes/admin/settings/class-page.php:1533 +msgid "Heartbeat" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1526 +msgid "Control WordPress Heartbeat API" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1534 +msgid "" +"Reducing or disabling the Heartbeat API’s activity can help save some of " +"your server’s resources." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1543 +msgid "Reduce or disable Heartbeat activity" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1544 +msgid "" +"Reducing activity will change Heartbeat frequency from one hit each minute " +"to one hit every 2 minutes." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1544 +msgid "" +"Disabling Heartbeat entirely may break plugins and themes using this API." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1558 +msgid "Do not limit" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1559 +msgid "Reduce activity" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1560 +msgid "Disable" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1568 +msgid "Control Heartbeat" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1577 +msgid "Behavior in backend" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1584 +msgid "Behavior in post editor" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1590 +msgid "Behavior in frontend" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1609 +msgid "Add-ons" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1610 +msgid "Add more features" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1617 +msgid "One-click Rocket Add-ons" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1618 +msgid "" +"One-Click Add-ons are features extending available options without " +"configuration needed. Switch the option \"on\" to enable from this screen." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1628 +msgid "Rocket Add-ons" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1629 +msgid "Rocket Add-ons are complementary features extending available options." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1642 +msgid "Google Tracking" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1648 +msgid "Improve browser caching for Google Analytics" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1650 +#, php-format +msgid "" +"WP Rocket will host these Google scripts locally on your server to help " +"satisfy the PageSpeed recommendation for Leverage browser " +"caching.
      %1$sLearn more%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1665 +msgid "Facebook Pixel" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1671 +msgid "Improve browser caching for Facebook Pixel" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1673 +#, php-format +msgid "" +"WP Rocket will host these Facebook Pixels locally on your server to help " +"satisfy the PageSpeed recommendation for Leverage browser " +"caching.
      %1$sLearn more%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1706 +msgid "Varnish" +msgstr "Varnish" + +#: inc/classes/admin/settings/class-page.php:1712 +msgid "If Varnish runs on your server, you must activate this add-on." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1714 +#, php-format +msgid "" +"Varnish cache will be purged each time WP Rocket clears its cache to ensure " +"content is always up-to-date.
      %1$sLearn more%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1729 +#: inc/classes/admin/settings/class-page.php:1789 +msgid "Cloudflare" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1735 +msgid "Integrate your Cloudflare account with this add-on." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1736 +msgid "" +"Provide your account email, global API key, and domain to use options such " +"as clearing the Cloudflare cache and enabling optimal settings with WP " +"Rocket." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1748 +msgid "Clear the Sucuri cache when WP Rocket’s cache is cleared." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1751 +msgid "" +"Provide your API key to clear the Sucuri cache when WP Rocket’s cache is " +"cleared." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1759 +#: inc/classes/admin/settings/class-page.php:1907 +msgid "Sucuri" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1765 +msgid "Synchronize Sucuri cache with this add-on." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1805 +msgid "Cloudflare credentials" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1814 +msgid "Cloudflare settings" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1828 +msgctxt "Cloudflare" +msgid "Global API key:" +msgstr "Глобален API ключ:" + +#: inc/classes/admin/settings/class-page.php:1829 +msgid "" +"https://support.cloudflare.com/hc/en-us/articles/200167836-Where-do-I-find-" +"my-Cloudflare-API-key-" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1829 +msgctxt "Cloudflare" +msgid "Find your API key" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1841 +msgctxt "Cloudflare" +msgid "Account email" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1850 +msgctxt "Cloudflare" +msgid "Zone ID" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1860 +msgid "Development mode" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1862 +#, php-format +msgid "" +"Temporarily activate development mode on your website. This setting will " +"automatically turn off after 3 hours. %1$sLearn more%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1870 +msgid "Optimal settings" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1871 +msgid "" +"Automatically enhances your Cloudflare configuration for speed, performance " +"grade and compatibility." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1879 +msgid "Relative protocol" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1880 +msgid "" +"Should only be used with Cloudflare's flexible SSL feature. URLs of static " +"files (CSS, JS, images) will be rewritten to use // instead of http:// or " +"https://." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1920 +msgid "Sucuri credentials" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1933 +msgctxt "Sucuri" +msgid "" +"Firewall API key (for plugin), must be in format {32 characters}/{32 " +"characters}:" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1934 +msgctxt "Sucuri" +msgid "Find your API key" +msgstr "" + +#: inc/classes/admin/settings/class-render.php:486 +#: inc/deprecated/deprecated.php:1296 +msgid "Upload file and import settings" +msgstr "Качване на файла и импортване на настройките" + +#: inc/classes/admin/settings/class-settings.php:385 +msgid "" +"Sucuri Add-on: The API key for the Sucuri firewall must be in format " +"{32 characters}/{32 characters}." +msgstr "" + +#: inc/classes/admin/settings/class-settings.php:462 +#: inc/deprecated/deprecated.php:1247 +msgid "Settings saved." +msgstr "Настройките са запазени." + +#: inc/classes/class-wp-rocket-requirements-check.php:148 +#, php-format +msgid "To function properly, %1$s %2$s requires at least:" +msgstr "" + +#: inc/classes/class-wp-rocket-requirements-check.php:152 +#, php-format +msgid "" +"PHP %1$s. To use this WP Rocket version, please ask your web host how to " +"upgrade your server to PHP %1$s or higher." +msgstr "" + +#: inc/classes/class-wp-rocket-requirements-check.php:157 +#, php-format +msgid "" +"WordPress %1$s. To use this WP Rocket version, please upgrade WordPress to " +"version %1$s or higher." +msgstr "" + +#: inc/classes/class-wp-rocket-requirements-check.php:160 +msgid "" +"If you are not able to upgrade, you can rollback to the previous version by " +"using the button below." +msgstr "" + +#: inc/classes/class-wp-rocket-requirements-check.php:162 +#: inc/deprecated/deprecated.php:1949 +#, php-format +msgid "Re-install version %s" +msgstr "" + +#: inc/classes/logger/class-logger.php:253 +#: inc/classes/logger/class-logger.php:285 +msgid "The log file does not exist." +msgstr "" + +#: inc/classes/logger/class-logger.php:259 +#: inc/classes/logger/class-logger.php:291 +msgid "The log file could not be read." +msgstr "" + +#: inc/classes/logger/class-logger.php:278 +msgid "The logs are not saved into a file." +msgstr "" + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:88 +#: inc/classes/optimization/CSS/class-critical-css-generation.php:99 +#: inc/classes/optimization/CSS/class-critical-css-generation.php:110 +#: inc/classes/optimization/CSS/class-critical-css-generation.php:120 +#: inc/classes/optimization/CSS/class-critical-css-generation.php:142 +#, php-format +msgid "Critical CSS for %1$s not generated. Error: %2$s" +msgstr "" + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:99 +msgid "The API returned an invalid response code." +msgstr "" + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:110 +msgid "The API returned an empty response." +msgstr "" + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:145 +#, php-format +msgid "The critical CSS content could not be saved as a file in %s." +msgstr "" + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:154 +#, php-format +msgid "Critical CSS for %s generated." +msgstr "" + +#: inc/classes/preload/class-homepage.php:83 +#, php-format +msgid "" +"Preload encountered an error. Could not gather links on %1$s because of the " +"following error: %2$s. %3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-homepage.php:96 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: %2$s. Security measures could be preventing access. " +"%3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-homepage.php:102 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: 404. Please make sure your homepage is accessible in your " +"browser. %2$sLearn more%3$s." +msgstr "" + +#: inc/classes/preload/class-homepage.php:108 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: 500. Please check with your web host about server access. " +"%2$sLearn more%3$s." +msgstr "" + +#: inc/classes/preload/class-homepage.php:114 +#, php-format +msgid "" +"Preload encountered an error. Could not gather links on %1$s because it " +"returned the following response code: %2$s. %3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:138 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not gather links on %1$s because" +" of the following error: %2$s. %3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:153 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: %2$s. Security measures could be preventing access." +" %3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:158 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: 404. Please make sure you entered the correct " +"sitemap URL and it is accessible in your browser. %2$sLearn more%3$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:163 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: 500. Please check with your web host about server " +"access. %2$sLearn more%3$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:168 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not gather links on %1$s because" +" it returned the following response code: %2$s. %3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:184 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not collect links from %1$s " +"because the file is empty. %2$sLearn more%3$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:205 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not collect links from %1$s " +"because of an error during the XML sitemap parsing. %2$sLearn more%3$s." +msgstr "" + +#: inc/classes/subscriber/Optimization/class-critical-css-subscriber.php:138 +#, php-format +msgid "" +"Critical CSS generation is currently running: %1$d of %2$d page types " +"completed. (Refresh this page to view progress)" +msgstr "" + +#: inc/classes/subscriber/Optimization/class-critical-css-subscriber.php:189 +#, php-format +msgid "Critical CSS generation finished for %1$d of %2$d page types." +msgstr "" + +#: inc/classes/subscriber/Optimization/class-critical-css-subscriber.php:203 +msgid "Critical CSS generation encountered one or more errors." +msgstr "" + +#: inc/classes/subscriber/Optimization/class-critical-css-subscriber.php:203 +msgid "Learn more." +msgstr "" + +#: inc/classes/subscriber/Tools/class-cache-dir-size-check-subscriber.php:51 +#: inc/classes/subscriber/class-facebook-tracking-cache-busting-subscriber.php:97 +#: inc/classes/subscriber/class-google-tracking-cache-busting-subscriber.php:154 +#: inc/common/cron.php:33 +msgid "weekly" +msgstr "седмично" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:148 +msgid "Database optimization process is running" +msgstr "" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:179 +msgid "" +"Database optimization process is complete. Everything was already optimized!" +msgstr "" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:182 +msgid "" +"Database optimization process is complete. List of optimized items below:" +msgstr "" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:190 +#, php-format +msgid "%1$d %2$s optimized." +msgstr "" + +#: inc/classes/subscriber/admin/Settings/class-page-subscriber.php:137 +#: inc/deprecated/deprecated.php:1788 +#: views/settings/page-sections/tools.php:33 +msgid "Tools" +msgstr "Инструменти" + +#: inc/classes/subscriber/admin/Settings/class-page-subscriber.php:138 +msgid "Import, Export, Rollback" +msgstr "" + +#: inc/classes/subscriber/admin/Settings/class-page-subscriber.php:160 +#: views/settings/page-sections/imagify.php:13 +msgid "Image Optimization" +msgstr "" + +#: inc/classes/subscriber/admin/Settings/class-page-subscriber.php:161 +msgid "Compress your images" +msgstr "" + +#: inc/classes/subscriber/preload/class-preload-subscriber.php:212 +#, php-format +msgid "" +"Preload: WP Rocket has started preloading your website. Go to the %1$sWP " +"Rocket settings%2$s page to track progress." +msgstr "" + +#: inc/classes/subscriber/preload/class-preload-subscriber.php:246 +#, php-format +msgid "" +"Preload: %1$s uncached page has now been preloaded. (refresh to see " +"progress)" +msgid_plural "" +"Preload: %1$s uncached pages have now been preloaded. (refresh to see " +"progress)" +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/subscriber/preload/class-preload-subscriber.php:255 +msgid "The following error happened during gathering of the URLs to preload:" +msgid_plural "" +"The following errors happened during gathering of the URLs to preload:" +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/subscriber/preload/class-preload-subscriber.php:308 +#, php-format +msgid "Preload complete: %d pages have been cached." +msgstr "" + +#: inc/classes/subscriber/preload/class-sitemap-preload-subscriber.php:117 +#, php-format +msgid "" +"%1$sSimpleXML PHP extension%2$s is not enabled on your server. Please " +"contact your host to enable it before running sitemap-based cache " +"preloading." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:72 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"Please deactivate the following %s option which conflicts with WP Rocket " +"features:" +msgid_plural "" +"Please deactivate the following %s options which conflict with WP Rocket " +"features:" +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:145 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sdisable emoji%3$s conflicts with WP Rockets %2$sdisable emoji%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:167 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sremove query strings%3$s conflicts with WP Rocket %2$sremove query " +"strings%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:203 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sGZIP compression%3$s conflicts with WP Rocket %2$sGZIP " +"compression%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:239 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sbrowser caching%3$s conflicts with WP Rocket %2$sbrowser " +"caching%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:271 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$spage caching%3$s conflicts with WP Rocket %2$spage caching%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:305 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sasset optimization%3$s conflicts with WP Rocket %2$sfile " +"optimization%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:123 +#, php-format +msgid "Sucuri cache purge error: %s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:128 +msgid "" +"The Sucuri cache is being cleared. Note that it may take up to two minutes " +"for it to be fully flushed." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:242 +msgid "Sucuri firewall API key was not found." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:251 +msgid "Sucuri firewall API key is invalid." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:303 +msgid "Error when contacting Sucuri firewall API." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:313 +#, php-format +msgid "Error when contacting Sucuri firewall API. Error message was: %s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:324 +msgid "Could not get a response from the Sucuri firewall API." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:335 +msgid "Got an invalid response from the Sucuri firewall API." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:345 +msgid "The Sucuri firewall API returned an unknown error." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:348 +#, php-format +msgid "The Sucuri firewall API returned the following error: %s" +msgid_plural "The Sucuri firewall API returned the following errors: %s" +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/traits/trait-updater-api-tools.php:53 +#: inc/deprecated/3.3.php:760 inc/deprecated/3.3.php:769 +#, php-format +msgid "" +"An unexpected error occurred. Something may be wrong with WP-Rocket.me or " +"this server’s configuration. If you continue to have problems, contact support." +msgstr "" +"Възникна неочаквана грешка. Нещо може би се обърка с WP-Rocket.me за " +"конфигурацията на този сървър’s. Ако продължавате да имате проблеми, " +"свържете се с поддръжката." + +#: inc/common/admin-bar.php:106 inc/common/admin-bar.php:260 +#: inc/functions/i18n.php:39 inc/functions/i18n.php:48 +msgid "All languages" +msgstr "Всички езици" + +#: inc/common/admin-bar.php:133 +msgid "Clear this post" +msgstr "Изчистете тази публикация" + +#: inc/common/admin-bar.php:147 +msgid "Purge this URL" +msgstr "Изчистете този URL" + +#: inc/common/admin-bar.php:163 +msgid "Purge OPcache" +msgstr "Изчистване на OPcache" + +#: inc/common/admin-bar.php:180 +msgid "Regenerate Critical Path CSS" +msgstr "" + +#: inc/common/admin-bar.php:196 +msgid "Clear Cloudflare cache" +msgstr "Изчистване на Cloudflare кеша" + +#: inc/common/admin-bar.php:217 inc/common/admin-bar.php:272 +#: views/settings/page-sections/dashboard.php:135 +msgid "Preload cache" +msgstr "Презареждане на кеша" + +#: inc/common/admin-bar.php:287 views/settings/partials/documentation.php:13 +msgid "Documentation" +msgstr "Документация" + +#: inc/common/cron.php:24 +#, php-format +msgid "%s clear" +msgstr "%s изчистване" + +#: inc/common/cron.php:39 +msgid "monthly" +msgstr "месечно" + +#: inc/common/purge.php:456 +#, php-format +msgid "Cloudflare cache purge error: %s" +msgstr "" + +#: inc/common/purge.php:461 +msgid "Cloudflare cache successfully purged" +msgstr "" + +#: inc/deprecated/3.2.php:51 views/settings/page-sections/imagify.php:35 +msgid "Activate Imagify" +msgstr "Активиране на Imagify" + +#: inc/deprecated/3.2.php:51 +msgid "Install Imagify for Free" +msgstr "Инсталирайте Imagify безплатно" + +#: inc/deprecated/3.2.php:66 +msgid "" +"Speed up your website and boost your SEO by reducing image file sizes " +"without losing quality with Imagify." +msgstr "" +"Ускорете Вашият сайт и увеличете Вашето SEO, като намалите размера на " +"изображенията без да губите качество с Imagify." + +#: inc/deprecated/3.2.php:71 +msgid "More details" +msgstr "Повече детайли" + +#: inc/deprecated/3.2.php:227 +#, php-format +msgid "Sitemap preload: %d pages have been cached." +msgstr "Презареждане на карта на сайта: %d страници са били кеширани." + +#: inc/deprecated/3.2.php:260 +#, php-format +msgid "" +"Sitemap preload: %d uncached pages have now been preloaded. (refresh to see " +"progress)" +msgstr "" +"Презареждане на карта на сайта: %d не кеширани страници вече са били " +"презаредени. (опреснете за да видите прогреса)" + +#: inc/deprecated/deprecated.php:242 +msgid "JS files with Deferred Loading JavaScript" +msgstr "JS файлове с отложено зареждане на JavaScript" + +#: inc/deprecated/deprecated.php:295 +msgid "Add URL" +msgstr "Добавяне на URL" + +#: inc/deprecated/deprecated.php:1279 views/settings/fields/import-form.php:22 +msgid "" +"Before you can upload your import file, you will need to fix the following " +"error:" +msgstr "" +"Преди да можете да качите и импортнете файла, Вие трябва да решите следната " +"грешка:" + +#: inc/deprecated/deprecated.php:1290 views/settings/fields/import-form.php:35 +#, php-format +msgid "Choose a file from your computer (maximum size: %s)" +msgstr "Изберете файл от Вашият компютър (максимален размер: %s )" + +#: inc/deprecated/deprecated.php:1387 +msgid "Your Cloudflare credentials are valid." +msgstr "Вашите данни за вход в Cloudflare са валидни." + +#: inc/deprecated/deprecated.php:1391 +msgid "Your Cloudflare credentials are invalid!" +msgstr "Вашите данни за вход в Cloudflare са невалидни!" + +#: inc/deprecated/deprecated.php:1455 +msgid "Save and optimize" +msgstr "Запаметете и оптимизирайте" + +#: inc/deprecated/deprecated.php:1455 +#: views/settings/page-sections/database.php:27 +msgid "Optimize" +msgstr "Оптимизирайте" + +#: inc/deprecated/deprecated.php:1466 inc/deprecated/deprecated.php:1668 +msgctxt "screen-reader-text" +msgid "Note:" +msgstr "Забележка:" + +#: inc/deprecated/deprecated.php:1472 +msgctxt "screen-reader-text" +msgid "Performance tip:" +msgstr "Съвет за производителност:" + +#: inc/deprecated/deprecated.php:1478 +msgctxt "screen-reader-text" +msgid "Third-party feature detected:" +msgstr "Засечена е функция от трета страна:" + +#: inc/deprecated/deprecated.php:1490 inc/deprecated/deprecated.php:1674 +msgctxt "screen-reader-text" +msgid "Warning:" +msgstr "Внимание:" + +#: inc/deprecated/deprecated.php:1503 +msgctxt "button text" +msgid "Download settings" +msgstr "Настройки за сваляне" + +#: inc/deprecated/deprecated.php:1533 +msgid "Replace site's hostname with:" +msgstr "Заменете hostname на сайтовете с:" + +#: inc/deprecated/deprecated.php:1552 inc/deprecated/deprecated.php:1589 +#: inc/deprecated/deprecated.php:1617 views/settings/fields/cnames.php:32 +#: views/settings/fields/cnames.php:63 views/settings/fields/cnames.php:93 +msgid "reserved for" +msgstr "запазено за" + +#: inc/deprecated/deprecated.php:1554 inc/deprecated/deprecated.php:1591 +#: inc/deprecated/deprecated.php:1619 views/settings/fields/cnames.php:35 +#: views/settings/fields/cnames.php:66 views/settings/fields/cnames.php:96 +msgid "All files" +msgstr "Всички файлове" + +#: inc/deprecated/deprecated.php:1566 inc/deprecated/deprecated.php:1596 +#: inc/deprecated/deprecated.php:1624 views/settings/fields/cnames.php:47 +#: views/settings/fields/cnames.php:78 views/settings/fields/cnames.php:108 +msgid "Images" +msgstr "Изображения" + +#: inc/deprecated/deprecated.php:1637 views/settings/fields/cnames.php:119 +msgid "Add CNAME" +msgstr "Добавете CNAME" + +#: inc/deprecated/deprecated.php:1708 +msgid "Watch the video" +msgstr "Изгледайте видеото" + +#: inc/deprecated/deprecated.php:1773 +msgid "Basic" +msgstr "Основни" + +#: inc/deprecated/deprecated.php:1774 +msgid "Static Files" +msgstr "Статични файлове" + +#: inc/deprecated/deprecated.php:1776 +msgid "Advanced" +msgstr "Разширени" + +#: inc/deprecated/deprecated.php:1946 +#, php-format +msgid "" +"%1$s %2$s requires at least PHP %3$s to function properly. To use this " +"version, please ask your web host how to upgrade your server to PHP %3$s or " +"higher. If you are not able to upgrade, you can rollback to the previous " +"version by using the button below." +msgstr "" + +#: inc/functions/admin.php:23 +msgid "" +"There seems to be an issue validating your license. Please see the error " +"message below." +msgid_plural "" +"There seems to be an issue validating your license. You can see the error " +"messages below." +msgstr[0] "" +msgstr[1] "" + +#: inc/functions/admin.php:361 +msgid "Server type:" +msgstr "" + +#: inc/functions/admin.php:370 +msgid "PHP version number:" +msgstr "" + +#: inc/functions/admin.php:379 +msgid "WordPress version number:" +msgstr "" + +#: inc/functions/admin.php:388 +msgid "WordPress multisite:" +msgstr "" + +#: inc/functions/admin.php:397 +msgid "Current theme:" +msgstr "" + +#: inc/functions/admin.php:406 +msgid "Current site language:" +msgstr "" + +#: inc/functions/admin.php:415 +msgid "Active plugins:" +msgstr "" + +#: inc/functions/admin.php:418 +msgid "Plugin names of all active plugins" +msgstr "" + +#: inc/functions/admin.php:424 +msgid "Anonymized WP Rocket settings:" +msgstr "" + +#: inc/functions/admin.php:427 +msgid "Which WP Rocket settings are active" +msgstr "" + +#: inc/functions/cloudflare.php:14 +msgid "" +"Curl functions are disabled, they are required for the Cloudflare Add-on to " +"work correctly." +msgstr "" + +#: inc/functions/cloudflare.php:21 +msgid "Cloudflare Email and API key are not set" +msgstr "" + +#: inc/functions/cloudflare.php:52 +#, php-format +msgid "Missing Cloudflare zone ID. %s could not fix this automatically." +msgstr "" + +#: inc/functions/cloudflare.php:58 +#, php-format +msgid "Read the %1$sdocumentation%2$s for further guidance." +msgstr "" + +#: inc/functions/cloudflare.php:60 +msgid "" +"https://docs.wp-rocket.me/article/18-using-wp-rocket-with-" +"cloudflare/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" + +#: inc/functions/cloudflare.php:100 +msgid "Connection to Cloudflare failed" +msgstr "" + +#: inc/functions/cloudflare.php:122 +msgid "Choose a domain from the list" +msgstr "" + +#: inc/functions/cloudflare.php:135 +msgid "No domain available in your Cloudflare account" +msgstr "Няма достъпен домейн за Вашият Cloudflare акаунт" + +#: inc/functions/options.php:580 inc/functions/options.php:619 +msgid "" +"License validation failed. Our server could not resolve the request from " +"your website." +msgstr "" + +#: inc/functions/options.php:580 inc/functions/options.php:619 +#, php-format +msgid "" +"Try clicking %1$sSave Changes%2$s below. If the error persists, follow " +"%3$sthis guide%4$s." +msgstr "" + +#: inc/functions/options.php:596 +msgid "" +"License validation failed. You may be using a nulled version of the plugin. " +"Please do the following:" +msgstr "" + +#: inc/functions/options.php:596 inc/functions/options.php:638 +#, php-format +msgid "Login to your WP Rocket %1$saccount%2$s" +msgstr "" + +#: inc/functions/options.php:596 inc/functions/options.php:638 +msgid "Download the zip file" +msgstr "" + +#: inc/functions/options.php:596 inc/functions/options.php:638 +msgid "Reinstall" +msgstr "" + +#: inc/functions/options.php:596 +#, php-format +msgid "" +"If you do not have a WP Rocket account, please %1$spurchase a license%2$s." +msgstr "" + +#: inc/functions/options.php:604 +msgid "" +"License validation failed. This user account does not exist in our database." +msgstr "" + +#: inc/functions/options.php:604 +msgid "To resolve, please contact support." +msgstr "" + +#: inc/functions/options.php:612 +msgid "License validation failed. This user account is blacklisted." +msgstr "" + +#: inc/functions/options.php:612 +#, php-format +msgid "Please see %1$sthis guide%2$s for more info." +msgstr "" + +#: inc/functions/options.php:632 +msgid "Your license is not valid." +msgstr "Вашият лиценз не е валиден." + +#: inc/functions/options.php:632 +#, php-format +msgid "Make sure you have an active %1$sWP Rocket license%2$s." +msgstr "" + +#: inc/functions/options.php:634 +msgid "You have added as many sites as your current license allows." +msgstr "" + +#: inc/functions/options.php:634 +#, php-format +msgid "" +"Upgrade your %1$saccount%2$s or %3$stransfer your license%2$s to this " +"domain." +msgstr "" + +#: inc/functions/options.php:636 +msgid "This website is not allowed." +msgstr "Този уебсайт не е позволен." + +#: inc/functions/options.php:636 +#, php-format +msgid "Please %1$scontact support%2$s." +msgstr "" + +#: inc/functions/options.php:638 +msgid "This license key is not recognized." +msgstr "" + +#: inc/functions/options.php:638 +#, php-format +msgid "If the issue persists, please %1$scontact support%2$s." +msgstr "" + +#: inc/functions/options.php:644 +#, php-format +msgid "License validation failed: %s" +msgstr "" + +#: inc/vendors/classes/class-imagify-partner.php:531 +msgid "Plugin installed successfully." +msgstr "" + +#: inc/vendors/classes/class-imagify-partner.php:532 +msgid "Sorry, you are not allowed to install plugins on this site." +msgstr "" + +#: inc/vendors/classes/class-imagify-partner.php:533 +msgid "Sorry, you are not allowed to do that." +msgstr "" + +#: inc/vendors/classes/class-imagify-partner.php:534 +msgid "Plugin install failed." +msgstr "" + +#: inc/vendors/classes/class-imagify-partner.php:535 +msgid "Go back" +msgstr "" + +#: views/deactivation-intent/form.php:20 +msgid "Return" +msgstr "" + +#: views/deactivation-intent/form.php:21 +msgid "WP Rocket feedback" +msgstr "" + +#: views/deactivation-intent/form.php:23 +msgid "Close" +msgstr "" + +#: views/deactivation-intent/form.php:27 +msgid "May we have a little info about why you are deactivating?" +msgstr "" + +#: views/deactivation-intent/form.php:31 +msgid "" +"It is a temporary deactivation. I am just debugging an " +"issue." +msgstr "" + +#: views/deactivation-intent/form.php:35 +msgid "The plugin broke my layout or some functionality." +msgstr "" + +#: views/deactivation-intent/form.php:39 +msgid "My PageSpeed or GTMetrix score did not improve." +msgstr "" + +#: views/deactivation-intent/form.php:43 +msgid "I did not notice a difference in loading time." +msgstr "" + +#: views/deactivation-intent/form.php:47 +msgid "The plugin is too complicated to configure." +msgstr "" + +#: views/deactivation-intent/form.php:51 +msgid "My host already has its own caching system." +msgstr "" + +#: views/deactivation-intent/form.php:53 +msgid "What is the name of your web host?" +msgstr "" + +#: views/deactivation-intent/form.php:58 +msgid "Other" +msgstr "" + +#: views/deactivation-intent/form.php:60 +msgid "" +"Let us know why you are deactivating WP Rocket so we can improve the plugin" +msgstr "" + +#: views/deactivation-intent/form.php:68 +msgid "The plugin broke my layout or some functionality" +msgstr "" + +#: views/deactivation-intent/form.php:69 +msgid "" +"This type of issue can usually be fixed by deactivating some options in WP " +"Rocket." +msgstr "" + +#: views/deactivation-intent/form.php:70 +msgid "" +"Click \"Apply Safe Mode\" to quickly disable LazyLoad, File Optimization, " +"Embeds and CDN options. Then check your site to see if the issue has " +"resolved." +msgstr "" + +#: views/deactivation-intent/form.php:72 +msgid "Apply safe mode" +msgstr "" + +#: views/deactivation-intent/form.php:75 +msgid "Safe mode applied." +msgstr "" + +#: views/deactivation-intent/form.php:76 +msgid "Review your site in a private/logged out browser window." +msgstr "" + +#: views/deactivation-intent/form.php:78 +msgid "" +"Is the issue fixed? Now you can reactivate options one at a time to " +"determine which one caused the problem. More info" +msgstr "" + +#: views/deactivation-intent/form.php:81 +msgid "My PageSpeed or GT Metrix score did not improve" +msgstr "" + +#: views/deactivation-intent/form.php:82 +msgid "" +"WP Rocket makes your site faster. The PageSpeed grade or GTMetrix score are " +"not indicators of speed. Neither your real visitors, nor Google will ever " +"see your website’s “grade”. Speed is the only metric that matters for SEO " +"and conversions." +msgstr "" + +#: views/deactivation-intent/form.php:83 +msgid "Yoast, the expert on all things related to SEO for WordPress states:" +msgstr "" + +#: views/deactivation-intent/form.php:84 +msgid "" +"[Google] just looks at how fast your website loads for users, so you don’t " +"have to obsess over that specific score. You have to make sure your website " +"is as fast as you can get it." +msgstr "" + +#: views/deactivation-intent/form.php:87 +msgid "" +"How to measure the load time of your site:
      https" +"://wp-rocket.me/blog/correctly-measure-websites-page-load-time/" +msgstr "" + +#: views/deactivation-intent/form.php:88 +msgid "" +"Why you should not be chasing a PageSpeed score:
      https://wp-rocket.me/blog/the-truth-about-google-" +"pagespeed-insights/" +msgstr "" + +#: views/deactivation-intent/form.php:91 +msgid "I did not notice a difference in loading time" +msgstr "" + +#: views/deactivation-intent/form.php:92 +msgid "" +"Make sure you look at your site while logged out to see the fast, cached " +"pages!" +msgstr "" + +#: views/deactivation-intent/form.php:93 +msgid "" +"The best way to see the improvement WP Rocket provides is to perform speed " +"tests. Follow this guide to correctly measure the load time of your " +"website:
      https://wp-rocket.me/blog/correctly-measure-websites-page-" +"load-time/" +msgstr "" + +#: views/deactivation-intent/form.php:96 +msgid "The plugin is too complicated to configure" +msgstr "" + +#: views/deactivation-intent/form.php:97 +msgid "We are sorry to hear you are finding it difficult to use WP Rocket." +msgstr "" + +#: views/deactivation-intent/form.php:98 +#, php-format +msgid "" +"WP Rocket is the only caching plugin that provides 80% of best practices in " +"speed optimization, by default. That means you do not have to do anything " +"besides activate WP Rocket and your site will already be faster!" +msgstr "" + +#: views/deactivation-intent/form.php:99 +msgid "" +"The additional options are not required for a fast site, they are for fine-" +"tuning." +msgstr "" + +#: views/deactivation-intent/form.php:100 +msgid "" +"To see the benefit WP Rocket is already providing, measure the speed of your" +" site using a tool like Pingdom:
      https" +"://wp-rocket.me/blog/correctly-measure-websites-page-load-time/" +msgstr "" + +#: views/deactivation-intent/form.php:105 +msgid "Send & Deactivate" +msgstr "" + +#: views/deactivation-intent/form.php:106 +msgid "Cancel" +msgstr "Отказ" + +#: views/deactivation-intent/form.php:108 +msgid "Skip & Deactivate" +msgstr "" + +#: views/settings/fields/cache-lifespan.php:26 +msgid "Clear cache after" +msgstr "" + +#: views/settings/fields/cnames.php:49 views/settings/fields/cnames.php:80 +#: views/settings/fields/cnames.php:110 +msgid "CSS & JavaScript" +msgstr "" + +#: views/settings/fields/cnames.php:50 views/settings/fields/cnames.php:81 +#: views/settings/fields/cnames.php:111 +msgid "JavaScript" +msgstr "" + +#: views/settings/fields/cnames.php:51 views/settings/fields/cnames.php:82 +#: views/settings/fields/cnames.php:112 +msgid "CSS" +msgstr "" + +#: views/settings/fields/import-form.php:29 +msgid "Import settings" +msgstr "" + +#: views/settings/fields/one-click-addon.php:39 +#: views/settings/fields/rocket-addon.php:31 +#: views/settings/fields/sliding-checkbox.php:24 views/settings/page.php:54 +msgctxt "Active state of checkbox" +msgid "On" +msgstr "Включено" + +#: views/settings/fields/one-click-addon.php:40 +#: views/settings/fields/rocket-addon.php:32 +#: views/settings/fields/sliding-checkbox.php:25 views/settings/page.php:55 +msgctxt "Inactive state of checkbox" +msgid "Off" +msgstr "Изключено" + +#: views/settings/fields/one-click-addon.php:41 +#: views/settings/fields/rocket-addon.php:33 +msgid "Add-on status" +msgstr "" + +#: views/settings/fields/rocket-addon.php:56 +msgid "Modify options" +msgstr "" + +#: views/settings/page-sections/cloudflare.php:26 +msgid "Cloudflare Cache" +msgstr "" + +#: views/settings/page-sections/cloudflare.php:33 +#: views/settings/page-sections/sucuri.php:34 +#, php-format +msgid "Purges cached resources for your website. %s" +msgstr "" + +#: views/settings/page-sections/cloudflare.php:34 +msgid "https://support.cloudflare.com/hc/en-us/articles/200169246" +msgstr "" + +#: views/settings/page-sections/cloudflare.php:34 +#: views/settings/page-sections/sucuri.php:35 +msgid "Learn more" +msgstr "" + +#: views/settings/page-sections/cloudflare.php:40 +msgid "Clear all Cloudflare cache files" +msgstr "" + +#: views/settings/page-sections/dashboard.php:37 +msgid "Congratulations!" +msgstr "" + +#: views/settings/page-sections/dashboard.php:39 +msgid "WP Rocket is now activated and already working for you." +msgstr "" + +#: views/settings/page-sections/dashboard.php:41 +msgid "Your website should be loading faster now!" +msgstr "" + +#: views/settings/page-sections/dashboard.php:43 +#, php-format +msgid "" +"To guarantee fast websites, WP Rocket applies 80% of web performance best " +"practices." +msgstr "" + +#: views/settings/page-sections/dashboard.php:43 +msgid "" +"We also enable options that provide immediate benefits to your website." +msgstr "" + +#: views/settings/page-sections/dashboard.php:44 +msgid "Continue to the options to further optimize your site!" +msgstr "" + +#: views/settings/page-sections/dashboard.php:54 +msgid "My Account" +msgstr "" + +#: views/settings/page-sections/dashboard.php:60 +msgid "Refresh info" +msgstr "" + +#: views/settings/page-sections/dashboard.php:74 +msgid "Expiration Date" +msgstr "" + +#: views/settings/page-sections/dashboard.php:83 +msgid "View my account" +msgstr "" + +#: views/settings/page-sections/dashboard.php:103 +msgid "Quick Actions" +msgstr "" + +#: views/settings/page-sections/dashboard.php:109 +msgid "Remove all cached files" +msgstr "" + +#: views/settings/page-sections/dashboard.php:129 +msgid "Start cache preloading" +msgstr "" + +#: views/settings/page-sections/dashboard.php:147 +msgid "Purge OPCache content" +msgstr "" + +#: views/settings/page-sections/dashboard.php:153 +msgid "Purge OPCache" +msgstr "" + +#: views/settings/page-sections/dashboard.php:164 +#: views/settings/page-sections/dashboard.php:170 +msgid "Regenerate Critical CSS" +msgstr "" + +#: views/settings/page-sections/dashboard.php:186 +msgid "Frequently Asked Questions" +msgstr "" + +#: views/settings/page-sections/dashboard.php:199 +msgid "Still cannot find a solution?" +msgstr "" + +#: views/settings/page-sections/dashboard.php:200 +msgid "" +"Submit a ticket and get help from our friendly and knowledgeable Rocketeers." +msgstr "" + +#: views/settings/page-sections/dashboard.php:208 +msgid "Ask support" +msgstr "" + +#: views/settings/page-sections/database.php:24 +msgid "Backup your database before you run a cleanup!" +msgstr "" + +#: views/settings/page-sections/database.php:25 +msgid "" +"Once a database optimization has been performed, there is no way to undo it." +msgstr "" + +#: views/settings/page-sections/imagify.php:20 +#, php-format +msgid "" +"%1$sWP ROCKET%2$s created %3$sIMAGIFY%4$s %1$sfor best-in-class image " +"optimization.%2$s" +msgstr "" + +#: views/settings/page-sections/imagify.php:23 +msgid "" +"Compress image to make your website faster, all while maintaining image " +"quality." +msgstr "" + +#: views/settings/page-sections/imagify.php:24 +msgid "More on Imagify:" +msgstr "" + +#: views/settings/page-sections/imagify.php:26 +msgid "Imagify Plugin Page" +msgstr "" + +#: views/settings/page-sections/imagify.php:27 +msgid "Imagify Website" +msgstr "" + +#: views/settings/page-sections/imagify.php:28 +msgid "Review of Image Compression Plugins" +msgstr "" + +#: views/settings/page-sections/imagify.php:37 +msgid "Install Imagify" +msgstr "" + +#: views/settings/page-sections/license.php:21 +msgid "WP Rocket was not able to automatically validate your license." +msgstr "" + +#: views/settings/page-sections/license.php:26 +#, php-format +msgid "" +"Follow this tutorial, or contact support to get the engine started." +msgstr "" + +#: views/settings/page-sections/license.php:26 +msgid "" +"https://docs.wp-rocket.me/article/100-resolving-problems-with-license-" +"validation/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" + +#: views/settings/page-sections/sucuri.php:41 +msgid "Clear all Sucuri cache files" +msgstr "" + +#: views/settings/page-sections/tools.php:20 +#, php-format +msgid "Files size: %1$s. Number of entries: %2$s." +msgstr "" + +#: views/settings/page-sections/tools.php:23 +#, php-format +msgid "%1$sDownload the file%2$s." +msgstr "" + +#: views/settings/page-sections/tools.php:26 +#, php-format +msgid "%1$sDelete the file%2$s." +msgstr "" + +#: views/settings/page-sections/tools.php:37 +msgid "Export settings" +msgstr "" + +#: views/settings/page-sections/tools.php:38 +msgid "Download a backup file of your settings" +msgstr "" + +#: views/settings/page-sections/tools.php:43 +msgid "Download settings" +msgstr "Настройки за сваляне" + +#: views/settings/page-sections/tools.php:56 +msgid "Rollback" +msgstr "" + +#: views/settings/page-sections/tools.php:60 +#, php-format +msgid "Has version %s caused an issue on your website?" +msgstr "" + +#: views/settings/page-sections/tools.php:62 +msgid "" +"You can rollback to the previous major version here.
      Then send us a " +"support request." +msgstr "" + +#: views/settings/page-sections/tools.php:69 +#, php-format +msgid "Reinstall version %s" +msgstr "" + +#: views/settings/page-sections/tools.php:85 +msgid "Debug mode" +msgstr "" + +#: views/settings/page-sections/tools.php:90 +msgid "Create a debug log file." +msgstr "" + +#: views/settings/page.php:16 +msgid "WP Rocket Settings" +msgstr "" + +#: views/settings/page.php:30 +#, php-format +msgid "version %s" +msgstr "" + +#: views/settings/page.php:40 +msgid "Save Changes" +msgstr "Запазете промените" + +#: views/settings/page.php:56 +msgid "Show Sidebar" +msgstr "" + +#: views/settings/page.php:75 +msgid "Thanks for choosing to participate in the WP Rocket beta program!" +msgstr "" + +#: views/settings/page.php:76 +msgid "" +"A beta version is usually one that has new features and improvements, but we" +" want to test it a little more before full launch." +msgstr "" + +#: views/settings/page.php:77 +msgid "" +"We’d love it if you took our beta versions for a ride, but please keep in " +"mind that it might be less stable than our other releases. Don’t worry, you " +"can switch back to a full release version at any time." +msgstr "" + +#: views/settings/page.php:78 +msgid "" +"Your mission: please send all feedback about our beta versions, including " +"bug reports, to support@wp-rocket.me" +msgstr "" + +#: views/settings/page.php:80 +msgid "If you don’t want to join the beta program, simply close this window." +msgstr "" + +#: views/settings/page.php:82 +msgid "Activate Rocket Tester" +msgstr "" + +#: views/settings/page.php:93 +msgid "" +"Below is a detailed view of all data WP Rocket will collect if " +"granted permission." +msgstr "" + +#: views/settings/page.php:96 +msgid "" +"WP Rocket will never transmit any domain names or email addresses (except " +"for license validation), IP addresses, or third-party API keys." +msgstr "" + +#: views/settings/page.php:98 +msgid "Activate Rocket analytics" +msgstr "" + +#: views/settings/partials/documentation.php:14 +msgid "It is a great starting point to fix some of the most common issues." +msgstr "" + +#: views/settings/partials/documentation.php:18 +msgid "Read the documentation" +msgstr "" + +#: views/settings/partials/sidebar.php:11 +msgid "How to correctly measure your website’s loading time" +msgstr "" + +#: views/settings/partials/sidebar.php:13 +msgid "" +"Learn how to use best practices to correctly measure your site's " +"performance." +msgstr "" + +#: views/settings/partials/sidebar.php:14 +msgid "" +"https://wp-rocket.me/blog/correctly-measure-websites-page-load-" +"time/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" + +#: views/settings/partials/sidebar.php:14 +msgid "Read our guide" +msgstr "" + +#: views/settings/partials/sidebar.php:17 +msgid "Why Google PageSpeed grade should not matter" +msgstr "" + +#: views/settings/partials/sidebar.php:18 +msgid "" +"https://wp-rocket.me/blog/the-truth-about-google-pagespeed-" +"insights/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" + +#: views/settings/partials/sidebar.php:18 +msgid "Read more" +msgstr "" + +#: views/settings/partials/sidebar.php:23 +msgid "You have not activated logged-in user cache." +msgstr "" + +#: views/settings/partials/sidebar.php:24 +msgid "" +"Use a private browser to check your website's speed and visual appearance." +msgstr "" + +#: views/settings/sections/addons-container.php:23 +#: views/settings/sections/fields-container.php:27 +msgid "Need Help?" +msgstr "" diff --git a/wp-content/plugins/wp-rocket/languages/rocket-cs_CZ.mo b/wp-content/plugins/wp-rocket/languages/rocket-cs_CZ.mo new file mode 100644 index 0000000000000000000000000000000000000000..fe098acca0759ae43f2bc81369f908a5cbfcf198 GIT binary patch literal 103101 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 J)v~n4{{xCSTJ-<` literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-rocket/languages/rocket-cs_CZ.po b/wp-content/plugins/wp-rocket/languages/rocket-cs_CZ.po new file mode 100644 index 0000000..44bdb9a --- /dev/null +++ b/wp-content/plugins/wp-rocket/languages/rocket-cs_CZ.po @@ -0,0 +1,4085 @@ +# Copyright (C) 2016 WP Rocket +# This file is distributed under the same license as the WP Rocket package. +# Translators: +# wpmedia , 2019 +# Tomas Hrdina , 2020 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: WP Rocket 3.4\n" +"Report-Msgid-Bugs-To: http://wp-rocket.me/\n" +"POT-Creation-Date: 2020-05-28 13:07-0400\n" +"PO-Revision-Date: 2019-08-26 15:14+0000\n" +"Last-Translator: Tomas Hrdina , 2020\n" +"Language-Team: Czech (Czech Republic) (https://www.transifex.com/wp-media/teams/18133/cs_CZ/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: cs_CZ\n" +"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n" +"X-Generator: Poedit 1.8.11\n" +"X-Poedit-Basepath: ..\n" +"X-Poedit-KeywordsList: __;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c\n" +"X-Poedit-SearchPath-0: .\n" +"X-Poedit-SearchPathExcluded-0: assets\n" +"X-Poedit-SearchPathExcluded-1: src\n" +"X-Poedit-SearchPathExcluded-2: vendor\n" +"X-Poedit-SearchPathExcluded-3: node_modules\n" +"X-Poedit-SearchPathExcluded-4: tests\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Textdomain-Support: yes\n" + +#: inc/3rd-party/hosting/flywheel.php:18 inc/3rd-party/hosting/godaddy.php:18 +#: inc/3rd-party/hosting/o2switch.php:17 +#: inc/3rd-party/hosting/pressidium.php:18 inc/3rd-party/hosting/savvii.php:18 +#: inc/3rd-party/hosting/wp-serveur.php:27 +#: inc/3rd-party/hosting/wpengine.php:18 +#: inc/ThirdParty/Hostings/Cloudways.php:66 +#, php-format +msgid "" +"Your site is hosted on %s, we have enabled Varnish auto-purge for " +"compatibility." +msgstr "" +"Váš web je hostován u %s, z důvodu kompatibility bylo aktivováno automatické" +" vyprázdnění Varnish mezipaměti." + +#: inc/3rd-party/hosting/kinsta.php:161 +#, php-format +msgid "" +"Your installation seems to be missing core Kinsta files managing Cache " +"clearing and CDN, which will prevent your Kinsta installation and WP Rocket " +"from working correctly. Please get in touch with Kinsta support through your" +" %1$sMyKinsta%2$s account to resolve this issue." +msgstr "" +"Vaší instalaci pravděpodobně chybí soubory jádra Kinsta, které spravují " +"čištění mezipaměti a CDN, což zabrání správné funkci vaší instalace Kinsta a" +" WP Rocket. Kontaktujte prosím podporu Kinsta prostřednictvím svého účtu " +"%1$sMyKinsta%2$s, pro vyřešení tohoto problému." + +#: inc/3rd-party/plugins/jetpack.php:86 +msgid "Jetpack XML Sitemaps" +msgstr "Jetpack XML mapy webu" + +#: inc/3rd-party/plugins/jetpack.php:88 +msgid "Preload the sitemap from the Jetpack plugin" +msgstr "Předběžně načítat mapu webu z pluginu Jetpack" + +#: inc/3rd-party/plugins/jetpack.php:96 +#: inc/3rd-party/plugins/seo/all-in-one-seo-pack.php:89 +#: inc/3rd-party/plugins/seo/rank-math-seo.php:34 +#: inc/3rd-party/plugins/seo/seopress.php:86 +#: inc/3rd-party/plugins/seo/the-seo-framework.php:144 +#: inc/3rd-party/plugins/seo/yoast-seo.php:87 +#, php-format +msgid "" +"We automatically detected the sitemap generated by the %s plugin. You can " +"check the option to preload it." +msgstr "" +"Automaticky byl detekován soubor mapy webu vygenerovaný pluginem %s. Můžete " +"použít možnost předběžného načtení." + +#: inc/3rd-party/plugins/seo/all-in-one-seo-pack.php:87 +msgid "All in One SEO XML sitemap" +msgstr "All in One SEO XML mapy stránek" + +#: inc/3rd-party/plugins/seo/rank-math-seo.php:32 +msgid "Rank Math XML sitemap" +msgstr "Rank Math XML mapa webu" + +#: inc/3rd-party/plugins/seo/seopress.php:84 +msgid "SEOPress XML sitemap" +msgstr "SEOPress XML mapa webu" + +#: inc/3rd-party/plugins/seo/the-seo-framework.php:142 +msgid "The SEO Framework XML sitemap" +msgstr "The SEO Framework XML mapa webu" + +#: inc/3rd-party/plugins/seo/yoast-seo.php:85 +msgid "Yoast SEO XML sitemap" +msgstr "Yoast SEO XML mapa webu" + +#: inc/Addon/Cloudflare/APIClient.php:309 +msgid "Ops Cloudflare did not provide any reply. Please try again later." +msgstr "Cloudflare neposkytlo žádnou odpověď. Opakujte akci později." + +#: inc/Addon/Cloudflare/APIClient.php:318 inc/deprecated/3.5.php:122 +#: inc/deprecated/3.5.php:179 +msgid "Incorrect Cloudflare email address or API key." +msgstr "Chybná Cloudflare emailová adresa nebo API klíč." + +#: inc/Addon/Cloudflare/APIClient.php:322 +#: inc/Addon/Cloudflare/APIClient.php:335 +#: inc/Addon/Cloudflare/Cloudflare.php:112 +#: inc/Addon/Cloudflare/Cloudflare.php:144 +#: inc/classes/subscriber/Tools/class-detect-missing-tags-subscriber.php:157 +#: inc/deprecated/3.5.php:102 inc/deprecated/3.5.php:126 +#: inc/deprecated/3.5.php:139 inc/deprecated/3.5.php:167 +#: inc/deprecated/3.5.php:183 +#, php-format +msgid "Read the %1$sdocumentation%2$s for further guidance." +msgstr "Další pokyny naleznete v %1$sdokumentaci%2$s." + +#: inc/Addon/Cloudflare/APIClient.php:324 +#: inc/Addon/Cloudflare/APIClient.php:337 +#: inc/Addon/Cloudflare/Cloudflare.php:101 +#: inc/Addon/Cloudflare/Cloudflare.php:114 +#: inc/Addon/Cloudflare/Cloudflare.php:146 inc/deprecated/3.5.php:91 +#: inc/deprecated/3.5.php:104 inc/deprecated/3.5.php:128 +#: inc/deprecated/3.5.php:141 inc/deprecated/3.5.php:169 +#: inc/deprecated/3.5.php:185 inc/deprecated/3.5.php:218 +msgid "" +"https://docs.wp-rocket.me/article/18-using-wp-rocket-with-" +"cloudflare/?utm_source=wp_plugin&utm_medium=wp_rocket#add-on" +msgstr "" +"https://docs.wp-rocket.me/article/18-using-wp-rocket-with-" +"cloudflare/?utm_source=wp_plugin&utm_medium=wp_rocket#add-on" + +#: inc/Addon/Cloudflare/APIClient.php:331 inc/deprecated/3.5.php:135 +msgid "Incorrect Cloudflare Zone ID." +msgstr "Neplatné Cloudflare Zone ID." + +#: inc/Addon/Cloudflare/Cloudflare.php:99 +#, php-format +msgid "" +"Cloudflare email and/or API key are not set. Read the %1$sdocumentation%2$s " +"for further guidance." +msgstr "" +"Cloudflare email a / nebo API klíč nejsou nastaveny. Podrobnější informace " +"naleznete v %1$sdokumentaci%2$s." + +#: inc/Addon/Cloudflare/Cloudflare.php:108 inc/deprecated/3.5.php:98 +msgid "Missing Cloudflare Zone ID." +msgstr "Chybí Cloudflare Zone ID." + +#: inc/Addon/Cloudflare/Cloudflare.php:140 inc/deprecated/3.5.php:163 +msgid "It looks like your domain is not set up on Cloudflare." +msgstr "Tato doména není v Cloudflare nastavena." + +#: inc/Addon/Cloudflare/Subscriber.php:215 inc/deprecated/3.5.php:597 +#, php-format +msgid "WP Rocket: %s" +msgstr "WP Rocket: %s" + +#: inc/Addon/Cloudflare/Subscriber.php:220 inc/deprecated/3.5.php:602 +msgid "WP Rocket: Cloudflare cache successfully purged." +msgstr "" +"WP Rocket: Cloudflare mezipaměť byla úspěšně vyprázdněna." + +#: inc/Addon/Cloudflare/Subscriber.php:364 +#: inc/Addon/Cloudflare/Subscriber.php:370 +#: inc/Addon/Cloudflare/Subscriber.php:390 +#: inc/Addon/Cloudflare/Subscriber.php:401 +#: inc/Addon/Cloudflare/Subscriber.php:420 +#: inc/Addon/Cloudflare/Subscriber.php:426 +#: inc/Addon/Cloudflare/Subscriber.php:445 +#: inc/Addon/Cloudflare/Subscriber.php:451 +#: inc/Addon/Cloudflare/Subscriber.php:470 +#: inc/Addon/Cloudflare/Subscriber.php:476 +#: inc/Addon/Cloudflare/Subscriber.php:558 inc/admin/options.php:171 +#: inc/classes/subscriber/Tools/class-detect-missing-tags-subscriber.php:148 +msgid "WP Rocket: " +msgstr "WP Rocket: " + +#: inc/Addon/Cloudflare/Subscriber.php:364 +#, php-format +msgid "Cloudflare development mode error: %s" +msgstr "Cloudflare chyba režimu pro vývojáře: %s" + +#: inc/Addon/Cloudflare/Subscriber.php:370 +#, php-format +msgid "Cloudflare development mode %s" +msgstr "Cloudflare režim pro vývojáře %s" + +#: inc/Addon/Cloudflare/Subscriber.php:390 +#, php-format +msgid "Cloudflare cache level error: %s" +msgstr "Cloudflare chyba úrovně mezipaměti: %s" + +#: inc/Addon/Cloudflare/Subscriber.php:395 +msgctxt "Cloudflare caching level" +msgid "Standard" +msgstr "Základní" + +#: inc/Addon/Cloudflare/Subscriber.php:401 +#, php-format +msgid "Cloudflare cache level set to %s" +msgstr "Cloudflare úroveň mezipaměti byla nastavena na hodnotu %s" + +#: inc/Addon/Cloudflare/Subscriber.php:420 +#, php-format +msgid "Cloudflare minification error: %s" +msgstr "Cloudflare chyba zmenšení: %s" + +#: inc/Addon/Cloudflare/Subscriber.php:426 +#, php-format +msgid "Cloudflare minification %s" +msgstr "Cloudflare zmenšení: %s" + +#: inc/Addon/Cloudflare/Subscriber.php:445 +#, php-format +msgid "Cloudflare rocket loader error: %s" +msgstr "Chyba Cloudflare RocketLoaderu: %s" + +#: inc/Addon/Cloudflare/Subscriber.php:451 +#, php-format +msgid "Cloudflare rocket loader %s" +msgstr "Cloudflare RocketLoader %s" + +#: inc/Addon/Cloudflare/Subscriber.php:470 +#, php-format +msgid "Cloudflare browser cache error: %s" +msgstr "Cloudflare chyba mezipaměti prohlížeče: %s" + +#: inc/Addon/Cloudflare/Subscriber.php:476 +#, php-format +msgid "Cloudflare browser cache set to %s seconds" +msgstr "Cloudflare mezipaměť prohlížeče byla nastaven na %s sekund" + +#: inc/Addon/FacebookTracking/Subscriber.php:87 +#: inc/Addon/GoogleTracking/Subscriber.php:134 +#: inc/Engine/HealthCheck/CacheDirSizeCheck.php:88 +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:92 +msgid "weekly" +msgstr "týdně" + +#: inc/Engine/Admin/Settings/Page.php:171 +msgid "Save Changes" +msgstr "Uložit změny" + +#: inc/Engine/Admin/Settings/Page.php:171 +msgid "Validate License" +msgstr "Ověřit licenci" + +#: inc/Engine/Admin/Settings/Page.php:201 +#: inc/Engine/Admin/Settings/Page.php:202 +msgid "Unavailable" +msgstr "Nedostupné" + +#: inc/Engine/Admin/Settings/Page.php:306 inc/deprecated/deprecated.php:1789 +#: views/settings/page-sections/dashboard.php:73 +msgid "License" +msgstr "Licence" + +#: inc/Engine/Admin/Settings/Page.php:323 +msgid "API key" +msgstr "API klíč" + +#: inc/Engine/Admin/Settings/Page.php:338 +msgid "Email address" +msgstr "Emailová adresa" + +#: inc/Engine/Admin/Settings/Page.php:364 +msgid "Dashboard" +msgstr "Nástěnka" + +#: inc/Engine/Admin/Settings/Page.php:365 +msgid "Get help, account info" +msgstr "Nápověda, informace o účtu" + +#: inc/Engine/Admin/Settings/Page.php:374 +msgid "My Status" +msgstr "Stav" + +#: inc/Engine/Admin/Settings/Page.php:384 views/settings/page.php:72 +msgid "Rocket Tester" +msgstr "Tester raket" + +#: inc/Engine/Admin/Settings/Page.php:385 +msgid "I am part of the WP Rocket Beta Testing Program." +msgstr "Jsem součástí programu WP Rocket Beta Testing." + +#: inc/Engine/Admin/Settings/Page.php:393 views/settings/page.php:90 +msgid "Rocket Analytics" +msgstr "Diagnostika raket" + +#: inc/Engine/Admin/Settings/Page.php:395 +#, php-format +msgid "" +"I agree to share anonymous data with the development team to help improve WP" +" Rocket. %1$sWhat info will we collect?%2$s" +msgstr "" +"Souhlasím se sdílením anonymních dat s vývojovým týmem, které pomohou " +"zlepšit WP Rocket. %1$sJaké data budou shromažďována?%2$s" + +#: inc/Engine/Admin/Settings/Page.php:419 +msgid "Cache" +msgstr "Mezipaměť" + +#: inc/Engine/Admin/Settings/Page.php:420 +msgid "Basic cache options" +msgstr "Základní nastavení mezipaměti" + +#: inc/Engine/Admin/Settings/Page.php:427 +msgid "Mobile Cache" +msgstr "Mezipaměť pro mobilní zařízení" + +#: inc/Engine/Admin/Settings/Page.php:429 +msgid "Speed up your site for mobile visitors." +msgstr "Zrychlete svůj web pro mobilní návštěvníky." + +#: inc/Engine/Admin/Settings/Page.php:434 +msgid "" +"We detected you use a plugin that requires a separate cache for mobile, and " +"automatically enabled this option for compatibility." +msgstr "" +"Byl zaznamenán aktivní plugin vyžadující samostatnou mezipaměť pro mobilní " +"zařízení, a pro zajištění kompatibility bylo toto nastavení automaticky " +"aktivováno." + +#: inc/Engine/Admin/Settings/Page.php:438 +msgid "User Cache" +msgstr "Uživatelská mezipaměť" + +#: inc/Engine/Admin/Settings/Page.php:441 +#, php-format +msgid "" +"%1$sUser cache%2$s is great when you have user-specific or restricted " +"content on your website." +msgstr "" +"%1$sUživatelská mezipaměť%2$s je skvěla, pokud máte na webu uživatelský nebo" +" omezený obsah." + +#: inc/Engine/Admin/Settings/Page.php:449 +msgid "Cache Lifespan" +msgstr "Životnost mezipaměti" + +#: inc/Engine/Admin/Settings/Page.php:452 +#, php-format +msgid "" +"Cache files older than the specified lifespan will be deleted.
      Enable " +"%1$spreloading%2$s for the cache to be rebuilt automatically after lifespan " +"expiration." +msgstr "" +"Soubory mezipaměti starší než zadané životnosti budou odstraněny.
      Povolte" +" %1$spřednačítání%2$s pro automatickou přegenerování mezipaměti po vypršení " +"její životnosti." + +#: inc/Engine/Admin/Settings/Page.php:466 +msgid "Enable caching for logged-in WordPress users" +msgstr "Povolit ukládání do mezipaměti pro přihlášené uživatele WordPressu" + +#: inc/Engine/Admin/Settings/Page.php:474 +msgid "Enable caching for mobile devices" +msgstr "Povolit ukládání do mezipaměti pro mobilní zařízení" + +#: inc/Engine/Admin/Settings/Page.php:489 +msgid "Separate cache files for mobile devices" +msgstr "Oddělit soubory mezipaměti pro mobilní zařízení" + +#: inc/Engine/Admin/Settings/Page.php:491 +#, php-format +msgid "" +"Most modern themes are responsive and should work without a separate cache. " +"Enable this only if you have a dedicated mobile theme or plugin. %1$sMore " +"info%2$s" +msgstr "" +"Většina moderních šablon je responzivní a měla by správně fungovat bez " +"samostatné mezipaměti. Tuto možnost aktivujte jen v případě, že máte " +"samostatnou šablonu nebo speciální plugin pro mobilní zařízení. %1$sVíce " +"informací%2$s" + +#: inc/Engine/Admin/Settings/Page.php:507 +msgid "" +"Specify time after which the global cache is cleared
      (0 = unlimited )" +msgstr "" +"Zadejte čas, po kterém se globální mezipaměť vymaže
      (0 = neomezeně)" + +#: inc/Engine/Admin/Settings/Page.php:509 +#, php-format +msgid "" +"Reduce lifespan to 10 hours or less if you notice issues that seem to appear" +" periodically. %1$sWhy?%2$s" +msgstr "" +"Snižte životnost na 10 nebo méně hodin pokud si všimnete opakujících se " +"problémů. %1$sProč?%2$s" + +#: inc/Engine/Admin/Settings/Page.php:515 +msgid "Minutes" +msgstr "Minuty" + +#: inc/Engine/Admin/Settings/Page.php:516 +msgid "Hours" +msgstr "Hodiny" + +#: inc/Engine/Admin/Settings/Page.php:517 +msgid "Days" +msgstr "Dny" + +#: inc/Engine/Admin/Settings/Page.php:542 +#: views/settings/page-sections/tutorials.php:22 +msgid "File Optimization" +msgstr "Optimalizace souborů" + +#: inc/Engine/Admin/Settings/Page.php:543 +msgid "Optimize CSS & JS" +msgstr "Optimalizace CSS a JS" + +#: inc/Engine/Admin/Settings/Page.php:550 +msgid "Basic Settings" +msgstr "Základní nastavení" + +#: inc/Engine/Admin/Settings/Page.php:553 +#: inc/Engine/Admin/Settings/Page.php:563 +#: inc/Engine/Admin/Settings/Page.php:573 +#, php-format +msgid "" +"%1$s Minification is currently activated in Autoptimize. If" +" you want to use %2$s’s minification, disable those options in Autoptimize." +msgstr "" +"Zmenšování %1$s je aktuálně aktivováno v pluginu " +"Autoptimize. Chcete-li použít zmenšování od %2$s, " +"deaktivujte tyto možnosti v pluginu Autoptimize." + +#: inc/Engine/Admin/Settings/Page.php:556 +msgid "CSS Files" +msgstr "Soubory CSS" + +#: inc/Engine/Admin/Settings/Page.php:566 +msgid "JavaScript Files" +msgstr "Soubory JavaScriptu" + +#: inc/Engine/Admin/Settings/Page.php:582 inc/admin/ui/meta-boxes.php:74 +msgid "Minify HTML" +msgstr "Zmenšit HTML" + +#: inc/Engine/Admin/Settings/Page.php:586 +msgid "Minifying HTML removes whitespace and comments to reduce the size." +msgstr "Zmenšení HTML odstraní mezery a komentáře pro zmenšení velikosti." + +#: inc/Engine/Admin/Settings/Page.php:597 +msgid "Optimize Google Fonts" +msgstr "Optimalizovat písma Google Fonts" + +#: inc/Engine/Admin/Settings/Page.php:599 +#, php-format +msgid "" +"Improves font performance and combines multiple font requests to reduce the " +"number of HTTP requests. %1$sMore info%2$s" +msgstr "" +"Zrychluje načítání písem a kombinuje více požadavků na písma, čímž snižuje " +"počet HTTP požadavků. %1$sVíce informací%2$s" + +#: inc/Engine/Admin/Settings/Page.php:607 +msgid "Minify CSS files" +msgstr "Zmenšit soubory CSS" + +#: inc/Engine/Admin/Settings/Page.php:608 +msgid "Minify CSS removes whitespace and comments to reduce the file size." +msgstr "Zmenšení CSS odstraní mezery a komentáře pro zmenšení velikosti." + +#: inc/Engine/Admin/Settings/Page.php:621 +#: inc/Engine/Admin/Settings/Page.php:643 +#: inc/Engine/Admin/Settings/Page.php:723 +#: inc/Engine/Admin/Settings/Page.php:745 +msgid "This could break things!" +msgstr "Toto nastavení by mohlo rozbít web!" + +#: inc/Engine/Admin/Settings/Page.php:622 +#: inc/Engine/Admin/Settings/Page.php:644 +#: inc/Engine/Admin/Settings/Page.php:724 +#: inc/Engine/Admin/Settings/Page.php:746 +msgid "" +"If you notice any errors on your website after having activated this " +"setting, just deactivate it again, and your site will be back to normal." +msgstr "" +"Pokud si všimnete jakýchkoliv chyb na svém webu po zapnutí tohoto nastavení," +" stačí aktivované nastavení deaktivovat, a váš web bude zase normálně " +"fungovat." + +#: inc/Engine/Admin/Settings/Page.php:623 +msgid "Activate minify CSS" +msgstr "Aktivovat zmenšení CSS" + +#: inc/Engine/Admin/Settings/Page.php:628 +msgid "Combine CSS files (Enable Minify CSS files to select)" +msgstr "" +"Kombinovat soubory CSS (nejprve musíte povolit zmenšení souborů " +"CSS)" + +#: inc/Engine/Admin/Settings/Page.php:630 +#, php-format +msgid "" +"Combine CSS merges all your files into 1, reducing HTTP requests. Not " +"recommended if your site uses HTTP/2. %1$sMore info%2$s" +msgstr "" +"Zkombinuje CSS soubory do 1 souboru, sníží počet HTTP požadavků. " +"Nedoporučuje se pokud váš web používá HTTP/2. %1$sVíce informací%2$s" + +#: inc/Engine/Admin/Settings/Page.php:645 +msgid "Activate combine CSS" +msgstr "Aktivovat kombinování CSS" + +#: inc/Engine/Admin/Settings/Page.php:650 inc/admin/options.php:130 +msgid "Excluded CSS Files" +msgstr "Vyloučené CSS soubory" + +#: inc/Engine/Admin/Settings/Page.php:651 +msgid "" +"Specify URLs of CSS files to be excluded from minification and concatenation" +" (one per line)." +msgstr "" +"Určete URL adresy CSS souborů, které mají být vyloučeny ze zmenšování a " +"spojení (jedna adresa na řádek)." + +#: inc/Engine/Admin/Settings/Page.php:652 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*).css " +"wildcards to exclude all CSS files located at a specific path." +msgstr "" +"Doménová část URL adresy bude automaticky odstraněna.
      Použijte (.*).css " +"hvězdičku pro vyloučení všech CSS souborů umístěných v konkrétní cestě." + +#: inc/Engine/Admin/Settings/Page.php:665 +msgid "Optimize CSS delivery" +msgstr "Optimalizovat doručování CSS" + +#: inc/Engine/Admin/Settings/Page.php:672 +#, php-format +msgctxt "WP Critical CSS compatibility" +msgid "" +"Optimize CSS Delivery is currently handled by the %1$s plugin. If you want " +"to use WP Rocket’s Optimize CSS Delivery option, disable the %1$s plugin." +msgstr "" +"Optimalizace doručování CSS je aktuálně řešena pluginem %1$s. Pokud chcete " +"pro optimalizaci doručování CSS používat WP Rocket, deaktivujte plugin %1$s." + +#: inc/Engine/Admin/Settings/Page.php:674 +#, php-format +msgid "" +"Optimize CSS delivery eliminates render-blocking CSS on your website for " +"faster perceived load time. %1$sMore info%2$s" +msgstr "" +"Optimalizace doručování CSS z webu odstraní CSS blokující vykreslení obsahu " +"pro rychlejší vizuální načítání. %1$sVíce informací%2$s" + +#: inc/Engine/Admin/Settings/Page.php:685 +msgid "Fallback critical CSS" +msgstr "Záložní kritická cesta CSS" + +#: inc/Engine/Admin/Settings/Page.php:690 +#, php-format +msgid "" +"Provides a fallback if auto-generated critical path CSS is incomplete. " +"%1$sMore info%2$s" +msgstr "" +"Poskytuje zálohu pokud je automaticky generovaná kritická cesta k CSS " +"nekompletní. %1$sVíce informací%2$s" + +#: inc/Engine/Admin/Settings/Page.php:699 +msgid "Remove jQuery Migrate" +msgstr "Odebrat jQuery Migrate" + +#: inc/Engine/Admin/Settings/Page.php:701 +#, php-format +msgid "" +"Remove jQuery Migrate eliminates a JS file and can improve load time. " +"%1$sMore info%2$s" +msgstr "" +"Odebrání jQuery Migrate eliminuje JS soubor a může zlepšit dobu načítání. " +"%1$sVíce informací%2$s" + +#: inc/Engine/Admin/Settings/Page.php:709 +msgid "Minify JavaScript files" +msgstr "Zmenšit soubory JS" + +#: inc/Engine/Admin/Settings/Page.php:710 +msgid "" +"Minify JavaScript removes whitespace and comments to reduce the file size." +msgstr "" +"Zmenšení JavaScriptu odstraní mezery a komentáře pro zmenšení velikosti." + +#: inc/Engine/Admin/Settings/Page.php:725 +msgid "Activate minify JavaScript" +msgstr "Aktivovat zmenšení JavaScriptu" + +#: inc/Engine/Admin/Settings/Page.php:730 +msgid "" +"Combine JavaScript files (Enable Minify JavaScript files to select)" +msgstr "" +"Kombinovat soubory JavaScriptu (nejprve musíte povolit zmenšení souborů " +"JS)" + +#: inc/Engine/Admin/Settings/Page.php:732 +#, php-format +msgid "" +"Combine JavaScript files combines your site’s internal, 3rd party and inline" +" JS reducing HTTP requests. Not recommended if your site uses HTTP/2. " +"%1$sMore info%2$s" +msgstr "" +"Zkombinování JavaScriptu interních souborů, skriptů vložených v kódu a kódu " +"třetích stran, sníží počet HTTP požadavků. Nedoporučuje se pokud web používá" +" HTTP/2. %1$sVíce informací%2$s" + +#: inc/Engine/Admin/Settings/Page.php:747 +msgid "Activate combine JavaScript" +msgstr "Aktivovat kombinování JavaScriptu" + +#: inc/Engine/Admin/Settings/Page.php:752 inc/admin/options.php:131 +msgid "Excluded Inline JavaScript" +msgstr "Vyloučený vložený JavaScript" + +#: inc/Engine/Admin/Settings/Page.php:754 +#, php-format +msgid "" +"Specify patterns of inline JavaScript to be excluded from concatenation (one" +" per line). %1$sMore info%2$s" +msgstr "" +"Určete znaky vloženého JavaScriptu, který má být vyloučen ze slučování " +"(jeden na řádek). %1$s Více informací%2$s" + +#: inc/Engine/Admin/Settings/Page.php:770 inc/admin/options.php:132 +msgid "Excluded JavaScript Files" +msgstr "Vyloučené soubory JavaScriptu" + +#: inc/Engine/Admin/Settings/Page.php:771 +msgid "" +"Specify URLs of JavaScript files to be excluded from minification and " +"concatenation (one per line)." +msgstr "" +"Určete URL adresy souborů JavaScriptu, které mají být vyloučeny ze " +"zmenšování a spojení (jednu adresa na řádek)" + +#: inc/Engine/Admin/Settings/Page.php:772 +msgid "" +"Internal: The domain part of the URL will be stripped " +"automatically. Use (.*).js wildcards to exclude all JS files located at a " +"specific path." +msgstr "" +"Interní:Doménová část URL adresy bude automaticky " +"odstraněna. Použijte (.*).js hvězdičku pro vyloučení všech JS souborů " +"umístěných v konkrétní cestě." + +#: inc/Engine/Admin/Settings/Page.php:774 +#, php-format +msgid "" +"3rd Party: Use either the full URL path or only the domain " +"name, to exclude external JS. %1$sMore info%2$s" +msgstr "" +"3. strany: Zadejte buďto kompletní URL adresu, nebo jen " +"doménu, pro vyloučení externího JS. %1$sVíce informací%2$s" + +#: inc/Engine/Admin/Settings/Page.php:790 +msgid "Load JavaScript deferred" +msgstr "Načítat JavaScriptové soubory se zpožděním" + +#: inc/Engine/Admin/Settings/Page.php:792 +#, php-format +msgid "" +"Load JavaScript deferred eliminates render-blocking JS on your site and can " +"improve load time. %1$sMore info%2$s" +msgstr "" +"Načítání JavaScriptu se zpožděním, z webu odstraní JS blokující vykreslení " +"obsahu, a může zlepšit rychlost jeho načítání. %1$sVíce informací%2$s" + +#: inc/Engine/Admin/Settings/Page.php:803 +msgid "Safe Mode for jQuery (recommended)" +msgstr "Bezpečný režim pro jQuery (doporučeno)" + +#: inc/Engine/Admin/Settings/Page.php:804 +msgid "" +"Safe mode for jQuery for deferred JS ensures support for inline jQuery " +"references from themes and plugins by loading jQuery at the top of the " +"document as a render-blocking script.
      Deactivating may result in " +"broken functionality, test thoroughly!" +msgstr "" +"Bezpečný režim pro jQuery pro JS soubory s odloženým načítáním zajistí " +"podporu pro inline odkazy jQuery z šablon a pluginů načítáním jQuery v horní" +" části dokumentu jako skript blokující vykreslování.
      Deaktivace může " +"vést k poškození funkcionality, proveďte pečlivé testy!" + +#: inc/Engine/Admin/Settings/Page.php:833 +msgid "Media" +msgstr "Média" + +#: inc/Engine/Admin/Settings/Page.php:834 +msgid "LazyLoad, emojis, embeds, WebP" +msgstr "LazyLoad, smajlíky, externí obsah, WebP" + +#: inc/Engine/Admin/Settings/Page.php:842 +msgid "Avada" +msgstr "Avada" + +#: inc/Engine/Admin/Settings/Page.php:846 +msgid "Autoptimize" +msgstr "Autoptimize" + +#: inc/Engine/Admin/Settings/Page.php:878 +msgid "LazyLoad" +msgstr "LazyLoad" + +#: inc/Engine/Admin/Settings/Page.php:881 +#, php-format +msgid "" +"It can improve actual and perceived loading time as images, iframes, and " +"videos will be loaded only as they enter (or about to enter) the viewport " +"and reduces the number of HTTP requests. %1$sMore Info%2$s" +msgstr "" +"LazyLoad může vylepšit reálnou a vizuální rychlost načítání, protože " +"obrázky, iframy a videa se budou načítat jen jakmile se objeví (nebo se " +"budou mít za chvíli objevit) v zobrazovaném prostoru, a bude tím snížen " +"počet HTTP požadavků. %1$sVíce informací%2$s" + +#: inc/Engine/Admin/Settings/Page.php:888 +#, php-format +msgid "" +"LazyLoad is currently activated in %2$s. If you want to use WP Rocket’s " +"LazyLoad, disable this option in %2$s." +msgstr "" +"LazyLoad je aktuálně aktivováno v %2$s. Pokud chcete použít WP Rocket " +"LazyLoad, zakažte tuto možnost v %2$s." + +#: inc/Engine/Admin/Settings/Page.php:891 +msgid "Emoji 👻" +msgstr "Smajlíci 👻" + +#: inc/Engine/Admin/Settings/Page.php:893 +msgid "" +"Use default emoji of visitor's browser instead of loading emoji from " +"WordPress.org" +msgstr "" +"Používejte výchozí smajlíky návštěvníkova prohlížeče namísto načítání " +"smajlíků z WordPress.org" + +#: inc/Engine/Admin/Settings/Page.php:897 +msgid "Embeds" +msgstr "Vkládání externího obsahu" + +#: inc/Engine/Admin/Settings/Page.php:899 +msgid "" +"Prevents others from embedding content from your site, prevents you from " +"embedding content from other (non-whitelisted) sites, and removes JavaScript" +" requests related to WordPress embeds" +msgstr "" +"Zabrání ostatním vkládat externí obsah z vašeho webu, zakáže vám vkládat " +"obsah z jiných (nepovolených) webů a odstraní JavaScriptové požadavky " +"spojené s „WordPress embeds“" + +#: inc/Engine/Admin/Settings/Page.php:903 +msgid "WebP compatibility" +msgstr "Kompatibilita s WebP" + +#: inc/Engine/Admin/Settings/Page.php:907 +#, php-format +msgid "" +"Enable this option if you would like WP Rocket to serve WebP images to " +"compatible browsers. Please note that WP Rocket cannot create WebP images " +"for you. To create WebP images we recommend %1$sImagify%2$s. %3$sMore " +"info%2$s" +msgstr "" +"Tuto možnost povolte, pokud chcete, aby WP Rocket poskytovalo WebP obrázky " +"kompatibilním prohlížečům. Berte na vědomí, že WP Rocket nemůže vytvářet " +"WebP obrázky. Pro vytvoření WebP obrázků můžete použít např. plugin " +"%1$sImagify%2$s. %3$sVíce informací%2$s" + +#: inc/Engine/Admin/Settings/Page.php:934 +msgid "Enable for images" +msgstr "Povolit pro obrázky" + +#: inc/Engine/Admin/Settings/Page.php:946 +#, php-format +msgid "" +"LazyLoad for images is currently activated in %2$s. If you want to use " +"%1$s’s LazyLoad, disable this option in %2$s." +msgstr "" +"LazyLoad pro obrázky je aktuálně aktivováno v %2$s. Pokud chcete použít od " +"LazyLoad %1$s, zakažte tuto možnost v %2$s." + +#: inc/Engine/Admin/Settings/Page.php:954 +msgid "Enable for iframes and videos" +msgstr "Povolit pro iframe a videa" + +#: inc/Engine/Admin/Settings/Page.php:969 +msgid "Replace YouTube iframe with preview image" +msgstr "Nahraďte iframe YouTube za náhledový obrázek" + +#: inc/Engine/Admin/Settings/Page.php:970 +msgid "" +"This can significantly improve your loading time if you have a lot of " +"YouTube videos on a page." +msgstr "" +"Toto nastavení může výrazně zkrátit dobu načítání, pokud máte na stránce " +"mnoho videí z YouTube." + +#: inc/Engine/Admin/Settings/Page.php:982 +msgid "Disable Emoji" +msgstr "Zakázat smajlíky" + +#: inc/Engine/Admin/Settings/Page.php:983 +msgid "Disable Emoji will reduce the number of external HTTP requests." +msgstr "Zakázaní smajlíků sníží počet externích HTTP požadavků." + +#: inc/Engine/Admin/Settings/Page.php:991 +msgid "Disable WordPress embeds" +msgstr "Zakázat vkládání externího obsahu" + +#: inc/Engine/Admin/Settings/Page.php:1001 +#: inc/classes/subscriber/Media/class-webp-subscriber.php:362 +msgid "Enable WebP caching" +msgstr "Povolit mezipaměť pro WebP" + +#: inc/Engine/Admin/Settings/Page.php:1021 inc/deprecated/deprecated.php:1776 +#: views/settings/page-sections/tutorials.php:30 +msgid "Preload" +msgstr "Předběžné načítání" + +#: inc/Engine/Admin/Settings/Page.php:1022 +msgid "Generate cache files, preload fonts" +msgstr "Generuje soubory mezipaměti, přednačítá písma" + +#: inc/Engine/Admin/Settings/Page.php:1032 +msgid "Preload Cache" +msgstr "Přednačítat mezipaměť" + +#: inc/Engine/Admin/Settings/Page.php:1035 +#, php-format +msgid "" +"When you enable preloading WP Rocket will generate the cache starting with " +"the links on your homepage followed by the sitemaps you specify. Preloading " +"is automatically triggered when you add or update content and can also be " +"manually triggered from the admin bar or from the %1$sWP Rocket " +"Dashboard%2$s." +msgstr "" +"Jakmile aktivujete předběžné načítání, WP Rocket začne automaticky generovat" +" mezipaměť nejprve pro odkazy na úvodní stránce webu, a následně dle vámi " +"zadaných map webu. Předběžné načítání bude automaticky spuštěno kdykoliv " +"přidáte, nebo změníte obsah. Lze jej také spustit ručně z administrační " +"lišty nebo z %1$snástěnky WP Rocket%2$s." + +#: inc/Engine/Admin/Settings/Page.php:1043 +msgid "Prefetch DNS Requests" +msgstr "Předběžné požadavky DNS" + +#: inc/Engine/Admin/Settings/Page.php:1045 +msgid "" +"DNS prefetching can make external files load faster, especially on mobile " +"networks" +msgstr "" +"Předběžné požadavky DNS mohou zrychlit předběžné načítání externích souborů," +" především na mobilních sítích" + +#: inc/Engine/Admin/Settings/Page.php:1053 +msgid "Preload Fonts" +msgstr "Přednačítat písma" + +#: inc/Engine/Admin/Settings/Page.php:1056 +#, php-format +msgid "" +"Improves performance by helping browsers discover fonts in CSS files. " +"%1$sMore info%2$s" +msgstr "" +"Zlepšuje výkon tím, že pomáhá prohlížečům nalézat písma v souborech CSS. " +"%1$sVíce informací%2$s" + +#: inc/Engine/Admin/Settings/Page.php:1070 +msgid "Activate Preloading" +msgstr "Aktivovat předběžné načítání" + +#: inc/Engine/Admin/Settings/Page.php:1089 +msgid "Activate sitemap-based cache preloading" +msgstr "Aktivovat předběžné načtení mezipaměti založené na mapě webu" + +#: inc/Engine/Admin/Settings/Page.php:1108 +msgid "Sitemaps for preloading" +msgstr "Mapy webu pro předběžné načítání" + +#: inc/Engine/Admin/Settings/Page.php:1112 +msgid "Specify XML sitemap(s) to be used for preloading" +msgstr "" +"Zadejte URL adresy XML soubory map webu, které se mají používat pro " +"přednačítání (jedenu na řádek)" + +#: inc/Engine/Admin/Settings/Page.php:1122 +msgid "URLs to prefetch" +msgstr "URL adresy pro přednačítání" + +#: inc/Engine/Admin/Settings/Page.php:1123 +msgid "" +"Specify external hosts to be prefetched (no http:, one per " +"line)" +msgstr "" +"Zadejte externí hostitele, kteří se mají předběžně načítat (bez " +"http:, pište jednoho na řádek)" + +#: inc/Engine/Admin/Settings/Page.php:1132 +msgid "Fonts to preload" +msgstr "Písma k předběžnému načítání" + +#: inc/Engine/Admin/Settings/Page.php:1133 +msgid "Specify urls of the font files to be preloaded (one per line)" +msgstr "" +"Zadejte URL adresy souborů písem, které mají být přednačítány (jednu na " +"řádek)" + +#: inc/Engine/Admin/Settings/Page.php:1134 +msgid "" +"The domain part of the URL will be stripped automatically.
      Allowed font " +"extensions: otf, ttf, svg, woff, woff2." +msgstr "" +"Doménová část URL adresy bude automaticky odstraněna.
      Povolené přípony " +"písem: otf, ttf, svg, woff, woff2." + +#: inc/Engine/Admin/Settings/Page.php:1154 +msgid "Advanced Rules" +msgstr "Pokročilá pravidla" + +#: inc/Engine/Admin/Settings/Page.php:1155 +msgid "Fine-tune cache rules" +msgstr "Vyladění pravidel mezipaměti" + +#: inc/Engine/Admin/Settings/Page.php:1164 +msgid "" +"Sensitive pages like custom login/logout URLs should be excluded from cache." +msgstr "" +"Citlivé stránky jako URL pro vlastní přihlášení/odhlášení by neměly být " +"ukládány do mezipaměti." + +#: inc/Engine/Admin/Settings/Page.php:1167 +msgctxt "plugin name" +msgid "WooCommerce" +msgstr "WooCommerce" + +#: inc/Engine/Admin/Settings/Page.php:1169 +msgctxt "plugin name" +msgid "Easy Digital Downloads" +msgstr "Easy Digital Downloads" + +#: inc/Engine/Admin/Settings/Page.php:1171 +msgctxt "plugin name" +msgid "iThemes Exchange" +msgstr "iThemes Exchange" + +#: inc/Engine/Admin/Settings/Page.php:1173 +msgctxt "plugin name" +msgid "Jigoshop" +msgstr "Jigoshop" + +#: inc/Engine/Admin/Settings/Page.php:1175 +msgctxt "plugin name" +msgid "WP-Shop" +msgstr "WP-Shop" + +#: inc/Engine/Admin/Settings/Page.php:1181 +#, php-format +msgid "" +"
      Cart, checkout and \"my account\" pages set in " +"%1$s%2$s%3$s will be detected and never cached by default." +msgstr "" +"
      Stránky jako např. košík, pokladna a „můj účet“, nastavené v " +"%1$s%2$s%3$s, budou detekovány a ve výchozím nastavení jim " +"nebude generována mezipaměť." + +#: inc/Engine/Admin/Settings/Page.php:1191 inc/admin/options.php:133 +msgid "Never Cache URL(s)" +msgstr "Nevytvářet mezipaměť pro tyto URL" + +#: inc/Engine/Admin/Settings/Page.php:1202 +msgid "Never Cache Cookies" +msgstr "Cookies pro zakázání vytváření mezipaměti" + +#: inc/Engine/Admin/Settings/Page.php:1207 inc/admin/options.php:134 +msgid "Never Cache User Agent(s)" +msgstr "User Agent nepřijímající soubory mezipaměti" + +#: inc/Engine/Admin/Settings/Page.php:1212 inc/admin/options.php:135 +msgid "Always Purge URL(s)" +msgstr "URL u kterých se má vždy vyprázdnit mezipaměť" + +#: inc/Engine/Admin/Settings/Page.php:1221 +msgid "Cache Query String(s)" +msgstr "Ukládání řetězců dotazů do mezipaměti" + +#: inc/Engine/Admin/Settings/Page.php:1224 +#, php-format +msgid "" +"%1$sCache for query strings%2$s enables you to force caching for specific " +"GET parameters." +msgstr "" +"%1$sMezipaměť pro řetězce dotazu%2$s vám umožní vytvářet mezipaměť pro " +"konkrétní parametry typu GET." + +#: inc/Engine/Admin/Settings/Page.php:1238 +msgid "" +"Specify URLs of pages or posts that should never be cached (one per line)" +msgstr "" +"Určete URL adresy stránek, nebo příspěvků, které by nikdy neměly mít " +"vytvořenou mezipaměť (jednu na řádek)" + +#: inc/Engine/Admin/Settings/Page.php:1239 +#: inc/Engine/Admin/Settings/Page.php:1267 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*) " +"wildcards to address multiple URLs under a given path." +msgstr "" +"Doménová část URL adresy bude automaticky odstraněna.
      Použijte (.*) " +"hvězdičky pro vyloučení více URL adres umístěných v konkrétní cestě." + +#: inc/Engine/Admin/Settings/Page.php:1248 +msgid "" +"Specify the IDs of cookies that, when set in the visitor's browser, should " +"prevent a page from getting cached (one per line)" +msgstr "" +"Zadejte ID souborů cookies, které kdyby byly uloženy v prohlížeči " +"návštěvníka by zabránily uložení stránky do mezipaměti (jedno na řádek)" + +#: inc/Engine/Admin/Settings/Page.php:1256 +msgid "" +"Specify user agent strings that should never see cached pages (one per line)" +msgstr "" +"Zadejte řetězce user-agent, kterým by nikdy neměly být poskytnuty stránky z " +"mezipaměti (jeden na řádek)" + +#: inc/Engine/Admin/Settings/Page.php:1257 +msgid "Use (.*) wildcards to detect parts of UA strings." +msgstr "Použijte (.*) hvězdičku pro určení částí UA řetězců." + +#: inc/Engine/Admin/Settings/Page.php:1266 +msgid "" +"Specify URLs you always want purged from cache whenever you update any post " +"or page (one per line)" +msgstr "" +"Určete URL adresy, kterým chcete vymazat mezipaměť vždy, když bude provedena" +" aktualizace jakéhokoliv příspěvku nebo stránky (jednu na řádek)" + +#: inc/Engine/Admin/Settings/Page.php:1275 +msgid "Specify query strings for caching (one per line)" +msgstr "Zadejte řetězce dotazů pro ukládání do mezipaměti (jeden na řádek)" + +#: inc/Engine/Admin/Settings/Page.php:1300 inc/deprecated/deprecated.php:1775 +msgid "Database" +msgstr "Databáze" + +#: inc/Engine/Admin/Settings/Page.php:1301 +msgid "Optimize, reduce bloat" +msgstr "Optimalizace, zeštíhlení" + +#: inc/Engine/Admin/Settings/Page.php:1310 +msgid "Post Cleanup" +msgstr "Čištění příspěvků" + +#: inc/Engine/Admin/Settings/Page.php:1312 +msgid "" +"Post revisions and drafts will be permanently deleted. Do not use this " +"option if you need to retain revisions or drafts." +msgstr "" +"Starší verze příspěvků a koncepty budou trvale odstraněny. Nepoužívejte tuto" +" volbu pokud potřebujete zachovat starší verze nebo koncepty." + +#: inc/Engine/Admin/Settings/Page.php:1320 +msgid "Comments Cleanup" +msgstr "Čištění komentářů" + +#: inc/Engine/Admin/Settings/Page.php:1322 +msgid "Spam and trashed comments will be permanently deleted." +msgstr "Komentářový spam a komentáře uložené v koši budou trvale odstraněny." + +#: inc/Engine/Admin/Settings/Page.php:1326 +msgid "Transients Cleanup" +msgstr "Čištění dočasných dat databáze" + +#: inc/Engine/Admin/Settings/Page.php:1328 +msgid "" +"Transients are temporary options; they are safe to remove. They will be " +"automatically regenerated as your plugins require them." +msgstr "" +"Zde jsou zobrazena dočasná data databáze; s klidem je můžete odstranit. " +"Pokud je pluginy budou zase potřebovat, vygenerují se znovu." + +#: inc/Engine/Admin/Settings/Page.php:1332 +msgid "Database Cleanup" +msgstr "Čištění databáze" + +#: inc/Engine/Admin/Settings/Page.php:1334 +msgid "Reduces overhead of database tables" +msgstr "Snižuje možnost přetěžování tabulek databáze" + +#: inc/Engine/Admin/Settings/Page.php:1338 +msgid "Automatic cleanup" +msgstr "Automatické čištění" + +#: inc/Engine/Admin/Settings/Page.php:1349 +#: inc/classes/admin/Database/class-optimization.php:41 +msgid "Revisions" +msgstr "Starší verze" + +#: inc/Engine/Admin/Settings/Page.php:1351 +#, php-format +msgid "%s revision in your database." +msgid_plural "%s revisions in your database." +msgstr[0] "V databázi je %s starší verze stránky/příspěvku." +msgstr[1] "%s starší verze stránek/příspěvků jsou v databázi." +msgstr[2] "%s starší verze stránek/příspěvků jsou v databázi." +msgstr[3] "%s starších verzí stránek/příspěvků je v databázi." + +#: inc/Engine/Admin/Settings/Page.php:1359 +#: inc/classes/admin/Database/class-optimization.php:42 +msgid "Auto Drafts" +msgstr "Automatické koncepty" + +#: inc/Engine/Admin/Settings/Page.php:1361 +#, php-format +msgid "%s draft in your database." +msgid_plural "%s drafts in your database." +msgstr[0] "V databázi je %s automatický koncept." +msgstr[1] "%s automatické koncepty jsou v databázi." +msgstr[2] "%s automatické koncepty jsou v databázi." +msgstr[3] "%s automatických konceptů je v databázi." + +#: inc/Engine/Admin/Settings/Page.php:1369 +#: inc/classes/admin/Database/class-optimization.php:43 +msgid "Trashed Posts" +msgstr "Odstraněné příspěvky" + +#: inc/Engine/Admin/Settings/Page.php:1371 +#, php-format +msgid "%s trashed post in your database." +msgid_plural "%s trashed posts in your database." +msgstr[0] "V databázi je %s odstraněný příspěvek." +msgstr[1] "%s odstraněné příspěvky jsou v databázi." +msgstr[2] "%s odstraněné příspěvky jsou v databázi." +msgstr[3] "%s odstraněných příspěvků je v databázi." + +#: inc/Engine/Admin/Settings/Page.php:1379 +#: inc/classes/admin/Database/class-optimization.php:44 +msgid "Spam Comments" +msgstr "Komentáře označené jako spam" + +#: inc/Engine/Admin/Settings/Page.php:1381 +#, php-format +msgid "%s spam comment in your database." +msgid_plural "%s spam comments in your database." +msgstr[0] "V databázi je %s komentářový spam." +msgstr[1] "%s komentářové spamy jsou v databázi." +msgstr[2] "%s komentářové spamy jsou v databázi." +msgstr[3] "%s komentářových spamů je v databázi." + +#: inc/Engine/Admin/Settings/Page.php:1389 +#: inc/classes/admin/Database/class-optimization.php:45 +msgid "Trashed Comments" +msgstr "Odstraněné komentáře" + +#: inc/Engine/Admin/Settings/Page.php:1391 +#, php-format +msgid "%s trashed comment in your database." +msgid_plural "%s trashed comments in your database." +msgstr[0] "V databázi je %s odstraněný komentář." +msgstr[1] "V databázi jsou %s odstraněné komentáře." +msgstr[2] "V databázi je %s odstraněných komentářů." +msgstr[3] "V databázi je %s odstraněných komentářů." + +#: inc/Engine/Admin/Settings/Page.php:1399 +#: inc/classes/admin/Database/class-optimization.php:46 +msgid "Expired transients" +msgstr "Vypršená dočasná data" + +#: inc/Engine/Admin/Settings/Page.php:1401 +#, php-format +msgid "%s expired transient in your database." +msgid_plural "%s expired transients in your database." +msgstr[0] "V databázi jsou %s vypršená dočasná data." +msgstr[1] "V databázi jsou %s vypršená dočasná data." +msgstr[2] "V databázi jsou %s vypršená dočasná data." +msgstr[3] "V databázi je %s vypršených dočasných dat." + +#: inc/Engine/Admin/Settings/Page.php:1409 +msgid "All transients" +msgstr "Veškerá dočasná data" + +#: inc/Engine/Admin/Settings/Page.php:1411 +#, php-format +msgid "%s transient in your database." +msgid_plural "%s transients in your database." +msgstr[0] "V databázi jsou %s vypršené dočasné dat." +msgstr[1] "V databázi jsou %s vypršené dočasné data." +msgstr[2] "V databázi je %s vypršených dočasných dat." +msgstr[3] "V databázi je %s vypršených dočasných dat." + +#: inc/Engine/Admin/Settings/Page.php:1419 +msgid "Optimize Tables" +msgstr "Optimalizovat tabulky" + +#: inc/Engine/Admin/Settings/Page.php:1421 +#, php-format +msgid "%s table to optimize in your database." +msgid_plural "%s tables to optimize in your database." +msgstr[0] "V databázi je %s tabulka, kterou je potřeba optimalizovat." +msgstr[1] "%s tabulky v databázi je potřeba optimalizovat." +msgstr[2] "%s tabulky v databázi je potřeba optimalizovat." +msgstr[3] "%s tabulek v databázi je potřeba optimalizovat." + +#: inc/Engine/Admin/Settings/Page.php:1432 +msgid "Schedule Automatic Cleanup" +msgstr "Naplánovat automatické čištění" + +#: inc/Engine/Admin/Settings/Page.php:1444 +msgid "Frequency" +msgstr "Frekvence" + +#: inc/Engine/Admin/Settings/Page.php:1452 +msgid "Daily" +msgstr "Denně" + +#: inc/Engine/Admin/Settings/Page.php:1453 +msgid "Weekly" +msgstr "Týdně" + +#: inc/Engine/Admin/Settings/Page.php:1454 +msgid "Monthly" +msgstr "Měsíčně" + +#: inc/Engine/Admin/Settings/Page.php:1470 +#: inc/Engine/Admin/Settings/Page.php:1481 inc/admin/ui/meta-boxes.php:77 +#: inc/deprecated/deprecated.php:1773 +msgid "CDN" +msgstr "CDN" + +#: inc/Engine/Admin/Settings/Page.php:1471 +msgid "Integrate your CDN" +msgstr "Integrace CDN" + +#: inc/Engine/Admin/Settings/Page.php:1483 +msgid "" +"All URLs of static files (CSS, JS, images) will be rewritten to the CNAME(s)" +" you provide." +msgstr "" +"Všechny URL adresy statických souborů (obrázky, CSS, JS) budou přepsány pro " +"níže zadané CNAME(s)." + +#: inc/Engine/Admin/Settings/Page.php:1485 +#, php-format +msgid "" +"Not required for services like Cloudflare and Sucuri. Please see our " +"available %1$sAdd-ons%2$s." +msgstr "" +"Není nutné pro služby jako je Cloudflare nebo Sucuri. Podívejte se na " +"dostupné %1$srozšíření%2$s." + +#: inc/Engine/Admin/Settings/Page.php:1500 inc/admin/options.php:136 +msgid "Exclude files from CDN" +msgstr "Vyloučení souborů z CDN" + +#: inc/Engine/Admin/Settings/Page.php:1526 +#, php-format +msgid "" +"%1$s%2$s Add-on%3$s is currently enabled. Configuration of the CDN settings " +"is not required for %2$s to work on your site." +msgid_plural "" +"%1$s%2$s Add-ons%3$s are currently enabled. Configuration of the CDN " +"settings is not required for %2$s to work on your site." +msgstr[0] "" +"%1$s%2$s rozšíření %3$s je aktuálně povoleno. Konfigurace nastavení CDN není" +" vyžadována pro funkčnost %2$s na tomto webu." +msgstr[1] "" +"%1$s%2$s rozšíření %3$s jsou aktuálně povolena. Konfigurace nastavení CDN " +"není vyžadována pro funkčnost %2$s na tomto webu." +msgstr[2] "" +"%1$s%2$s rozšíření %3$s jsou aktuálně povolena. Konfigurace nastavení CDN " +"není vyžadována pro funkčnost %2$s na tomto webu." +msgstr[3] "" +"%1$s%2$s rozšíření %3$s je aktuálně povoleno. Konfigurace nastavení CDN není" +" vyžadována pro funkčnost %2$s na tomto webu." + +#: inc/Engine/Admin/Settings/Page.php:1551 +msgid "Enable Content Delivery Network" +msgstr "Povolit Content Delivery Network" + +#: inc/Engine/Admin/Settings/Page.php:1560 +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:151 +msgid "CDN CNAME(s)" +msgstr "CDN CNAME(s)" + +#: inc/Engine/Admin/Settings/Page.php:1561 +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:152 +msgid "Specify the CNAME(s) below" +msgstr "Níže určete CNAME(s)" + +#: inc/Engine/Admin/Settings/Page.php:1568 +msgid "" +"Specify URL(s) of files that should not get served via CDN (one per line)." +msgstr "" +"Zadejte URL adresy souborů, které by neměly být se neměly zobrazovat přes " +"CDN (jednu na řádek)." + +#: inc/Engine/Admin/Settings/Page.php:1569 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*) " +"wildcards to exclude all files of a given file type located at a specific " +"path." +msgstr "" +"Doménová část URL adresy bude automaticky odstraněna.
      Použijte (.*) " +"hvězdičky pro vyloučení všech souborů, daného typu, umístěných v konkrétní " +"cestě." + +#: inc/Engine/Admin/Settings/Page.php:1591 +#: inc/Engine/Admin/Settings/Page.php:1599 +msgid "Heartbeat" +msgstr "Heartbeat" + +#: inc/Engine/Admin/Settings/Page.php:1592 +msgid "Control WordPress Heartbeat API" +msgstr "Správa WordPress Heartbeat API" + +#: inc/Engine/Admin/Settings/Page.php:1600 +msgid "" +"Reducing or disabling the Heartbeat API’s activity can help save some of " +"your server’s resources." +msgstr "" +"Omezení nebo zakázání aktivity Heartbeat API může snížit zatěžování serveru." + +#: inc/Engine/Admin/Settings/Page.php:1609 +msgid "Reduce or disable Heartbeat activity" +msgstr "Správa Heartbeat aktivity" + +#: inc/Engine/Admin/Settings/Page.php:1610 +msgid "" +"Reducing activity will change Heartbeat frequency from one hit each minute " +"to one hit every 2 minutes." +msgstr "" +"Omezení aktivity změní frekvenci Heartbeat, z jednou za minutu na jednou za " +"2 minuty." + +#: inc/Engine/Admin/Settings/Page.php:1610 +msgid "" +"Disabling Heartbeat entirely may break plugins and themes using this API." +msgstr "" +"Úplné vypnutí Heartbeat může znefunkčnit pluginy a šablony používající toto " +"API." + +#: inc/Engine/Admin/Settings/Page.php:1624 +msgid "Do not limit" +msgstr "Neomezovat" + +#: inc/Engine/Admin/Settings/Page.php:1625 +msgid "Reduce activity" +msgstr "Omezit aktivitu" + +#: inc/Engine/Admin/Settings/Page.php:1626 +msgid "Disable" +msgstr "Vypnout" + +#: inc/Engine/Admin/Settings/Page.php:1634 +msgid "Control Heartbeat" +msgstr "Ovládat Heartbeat" + +#: inc/Engine/Admin/Settings/Page.php:1643 +msgid "Behavior in backend" +msgstr "Chování v administraci" + +#: inc/Engine/Admin/Settings/Page.php:1650 +msgid "Behavior in post editor" +msgstr "Chování v editoru stránek/příspěvků" + +#: inc/Engine/Admin/Settings/Page.php:1656 +msgid "Behavior in frontend" +msgstr "Chování ve veřejné části webu" + +#: inc/Engine/Admin/Settings/Page.php:1672 +#: views/settings/page-sections/tutorials.php:36 +msgid "Add-ons" +msgstr "Rozšíření" + +#: inc/Engine/Admin/Settings/Page.php:1673 +msgid "Add more features" +msgstr "Přidání dalších funkcí" + +#: inc/Engine/Admin/Settings/Page.php:1680 +msgid "One-click Rocket Add-ons" +msgstr "Rocket rozšíření na jedno kliknutí" + +#: inc/Engine/Admin/Settings/Page.php:1681 +msgid "" +"One-Click Add-ons are features extending available options without " +"configuration needed. Switch the option \"on\" to enable from this screen." +msgstr "" +"Rocket rozšíření na jedno kliknutí jsou funkce rozšiřující dostupné možnosti" +" bez nutnosti další konfigurace. Přepněte tlačítko na „zap“ pro aktivaci z " +"této stránky." + +#: inc/Engine/Admin/Settings/Page.php:1691 +msgid "Rocket Add-ons" +msgstr "Rocket rozšíření" + +#: inc/Engine/Admin/Settings/Page.php:1692 +msgid "Rocket Add-ons are complementary features extending available options." +msgstr "Rocket rozšíření jsou doplňkové funkce rozšiřující dostupné možnosti." + +#: inc/Engine/Admin/Settings/Page.php:1705 +msgid "Google Tracking" +msgstr "Google analytika" + +#: inc/Engine/Admin/Settings/Page.php:1711 +msgid "Improve browser caching for Google Analytics" +msgstr "Vylepšete mezipaměť pro Google Analytics" + +#: inc/Engine/Admin/Settings/Page.php:1713 +#, php-format +msgid "" +"WP Rocket will host these Google scripts locally on your server to help " +"satisfy the PageSpeed recommendation for Leverage browser " +"caching.
      %1$sLearn more%2$s" +msgstr "" +"WP Rocket uloží tyto skripty Googlu lokálně na váš server, aby dodržela " +"doporučení PageSpeed pro Leverage browser caching (využití mezipaměti " +"prohlížeče).
      %1$sVíce informací%2$s" + +#: inc/Engine/Admin/Settings/Page.php:1728 +msgid "Facebook Pixel" +msgstr "Facebook Pixel" + +#: inc/Engine/Admin/Settings/Page.php:1734 +msgid "Improve browser caching for Facebook Pixel" +msgstr "Zlepšete mezipaměť pro Facebook Pixel" + +#: inc/Engine/Admin/Settings/Page.php:1736 +#, php-format +msgid "" +"WP Rocket will host these Facebook Pixels locally on your server to help " +"satisfy the PageSpeed recommendation for Leverage browser " +"caching.
      %1$sLearn more%2$s" +msgstr "" +"WP Rocket umístí tyto Facebook Pixely lokálně na váš server, aby pomohlo " +"uspokojit PageSpeed doporučení pro využití mezipaměti " +"prohlížeče.
      %1$sVíce informací%2$s" + +#: inc/Engine/Admin/Settings/Page.php:1749 +#: inc/Engine/Admin/Settings/Page.php:1850 +msgid "Cloudflare" +msgstr "Cloudflare" + +#: inc/Engine/Admin/Settings/Page.php:1755 +msgid "Integrate your Cloudflare account with this add-on." +msgstr "Integrujte svůj účet Cloudflare tímto rozšířením." + +#: inc/Engine/Admin/Settings/Page.php:1756 +msgid "" +"Provide your account email, global API key, and domain to use options such " +"as clearing the Cloudflare cache and enabling optimal settings with WP " +"Rocket." +msgstr "" +"Zadejte email účtu, globální API klíč, a doménu, abyste mohli využívat " +"možnosti jako je vymazání mezipaměti Cloudflare a aktivovat optimální " +"nastavení pro WP Rocket." + +#: inc/Engine/Admin/Settings/Page.php:1790 +msgid "Varnish" +msgstr "Varnish" + +#: inc/Engine/Admin/Settings/Page.php:1796 +msgid "If Varnish runs on your server, you must activate this add-on." +msgstr "" +"Pokud na vašem serveru používáte Varnish, musíte aktivovat toto rozšíření." + +#: inc/Engine/Admin/Settings/Page.php:1798 +#, php-format +msgid "" +"Varnish cache will be purged each time WP Rocket clears its cache to ensure " +"content is always up-to-date.
      %1$sLearn more%2$s" +msgstr "" +"Mezipaměť Varnish bude pročištěna vždy současně s čištěním mezipaměti WP " +"Rocket, aby byla vždy zajištěna aktuálnost obsahu.
      %1$sVíce informací%2$s" + +#: inc/Engine/Admin/Settings/Page.php:1812 +msgid "Clear the Sucuri cache when WP Rocket’s cache is cleared." +msgstr "Vymaže společně mezipaměť Sucuri i WP Rocket." + +#: inc/Engine/Admin/Settings/Page.php:1815 +msgid "" +"Provide your API key to clear the Sucuri cache when WP Rocket’s cache is " +"cleared." +msgstr "" +"Zadejte svůj API klíč pro společné čištění mezipaměti WP Rocket i Sucuri." + +#: inc/Engine/Admin/Settings/Page.php:1823 +#: inc/Engine/Admin/Settings/Page.php:1967 +msgid "Sucuri" +msgstr "Sucuri" + +#: inc/Engine/Admin/Settings/Page.php:1829 +msgid "Synchronize Sucuri cache with this add-on." +msgstr "Synchronizujte mezipaměť Sucuri pomoci tohoto rozšíření." + +#: inc/Engine/Admin/Settings/Page.php:1867 +msgid "Cloudflare credentials" +msgstr "Údaje ke Cloudflare" + +#: inc/Engine/Admin/Settings/Page.php:1876 +msgid "Cloudflare settings" +msgstr "Cloudflare nastavení" + +#: inc/Engine/Admin/Settings/Page.php:1890 +msgctxt "Cloudflare" +msgid "Global API key:" +msgstr "Globální klíč API:" + +#: inc/Engine/Admin/Settings/Page.php:1891 +msgctxt "Cloudflare" +msgid "Find your API key" +msgstr "Nemůžete najít svůj API klíč?" + +#: inc/Engine/Admin/Settings/Page.php:1903 +msgctxt "Cloudflare" +msgid "Account email" +msgstr "Přihlašovací email" + +#: inc/Engine/Admin/Settings/Page.php:1912 +msgctxt "Cloudflare" +msgid "Zone ID" +msgstr "ID zóny" + +#: inc/Engine/Admin/Settings/Page.php:1922 +msgid "Development mode" +msgstr "Vývojový režim" + +#: inc/Engine/Admin/Settings/Page.php:1924 +#, php-format +msgid "" +"Temporarily activate development mode on your website. This setting will " +"automatically turn off after 3 hours. %1$sLearn more%2$s" +msgstr "" +"Dočasně na webu zapne vývojový režim. Po 3 hodinách se toto nastavení " +"automaticky vypne. %1$sVíce informací%2$s" + +#: inc/Engine/Admin/Settings/Page.php:1932 +msgid "Optimal settings" +msgstr "Optimální nastavení" + +#: inc/Engine/Admin/Settings/Page.php:1933 +msgid "" +"Automatically enhances your Cloudflare configuration for speed, performance " +"grade and compatibility." +msgstr "" +"Automaticky vylepší konfiguraci služby Cloudflare pro vyšší rychlost, lepší " +"výkon a kompatibilitu." + +#: inc/Engine/Admin/Settings/Page.php:1941 +msgid "Relative protocol" +msgstr "Relativní protokol" + +#: inc/Engine/Admin/Settings/Page.php:1942 +msgid "" +"Should only be used with Cloudflare's flexible SSL feature. URLs of static " +"files (CSS, JS, images) will be rewritten to use // instead of http:// or " +"https://." +msgstr "" +"Mělo by být použito jen s Cloudflare funkcí „flexible SSL“. URL adresy " +"statických souborů (CSS, JS, obrázky) budou používat „//“ místo „http://“ " +"nebo „https://“." + +#: inc/Engine/Admin/Settings/Page.php:1980 +msgid "Sucuri credentials" +msgstr "Sucuri údaje" + +#: inc/Engine/Admin/Settings/Page.php:1993 +msgctxt "Sucuri" +msgid "" +"Firewall API key (for plugin), must be in format {32 characters}/{32 " +"characters}:" +msgstr "" +"API klíč firewallu (pro plugin) musí být ve formátu{32 znaků}/{32 " +"znaků}:" + +#: inc/Engine/Admin/Settings/Page.php:1994 +msgctxt "Sucuri" +msgid "Find your API key" +msgstr "Nemůžete najít svůj API klíč?" + +#: inc/Engine/Admin/Settings/Render.php:461 inc/deprecated/deprecated.php:1294 +msgid "Upload file and import settings" +msgstr "Nahrát soubor a importovat nastavení" + +#: inc/Engine/Admin/Settings/Settings.php:405 +msgid "" +"Sucuri Add-on: The API key for the Sucuri firewall must be in format " +"{32 characters}/{32 characters}." +msgstr "" +"Sucuri Rozšíření: API klíč pro Sucuri firewall musí být ve formátu{32 " +"znaků}/{32 znaků}." + +#: inc/Engine/Admin/Settings/Settings.php:496 +#: inc/deprecated/deprecated.php:1245 +msgid "Settings saved." +msgstr "Nastavení bylo uloženo." + +#: inc/Engine/Admin/Settings/Subscriber.php:114 +#: inc/deprecated/deprecated.php:1786 +#: views/settings/page-sections/tools.php:33 +msgid "Tools" +msgstr "Nástroje" + +#: inc/Engine/Admin/Settings/Subscriber.php:115 +msgid "Import, Export, Rollback" +msgstr "Import, export, návrat k předchozí verzi" + +#: inc/Engine/Admin/Settings/Subscriber.php:136 +#: views/settings/page-sections/imagify.php:14 +msgid "Image Optimization" +msgstr "Optimalizace obrázků" + +#: inc/Engine/Admin/Settings/Subscriber.php:137 +msgid "Compress your images" +msgstr "Zmenší velikost obrázků" + +#: inc/Engine/Admin/Settings/Subscriber.php:154 +#: views/settings/page-sections/tutorials.php:45 +msgid "Tutorials" +msgstr "Návody" + +#: inc/Engine/Admin/Settings/Subscriber.php:155 +msgid "Getting started and how to videos" +msgstr "Videa s návody nejen pro začátečníky" + +#: inc/Engine/CDN/RocketCDN/APIClient.php:154 +msgid "RocketCDN is not available at the moment. Please retry later" +msgstr "RocketCDN aktuálně není k dispozici. Opakujte akci později." + +#: inc/Engine/CDN/RocketCDN/APIClient.php:171 +msgid "RocketCDN cache purge failed: Missing identifier parameter." +msgstr "" +"Vymazání mezipaměti RocketCDN se nezdařilo: Chybí parametr identifikátoru." + +#: inc/Engine/CDN/RocketCDN/APIClient.php:180 +msgid "RocketCDN cache purge failed: Missing user token." +msgstr "Vymazání mezipaměti RocketCDN se nezdařilo: Chybí uživatelský token." + +#: inc/Engine/CDN/RocketCDN/APIClient.php:199 +msgid "" +"RocketCDN cache purge failed: The API returned an unexpected response code." +msgstr "" +"Vymazání mezipaměti RocketCDN se nezdařilo: API vrátilo kód neočekávané " +"odpovědi." + +#: inc/Engine/CDN/RocketCDN/APIClient.php:208 +msgid "RocketCDN cache purge failed: The API returned an empty response." +msgstr "" +"Vymazání mezipaměti RocketCDN se nezdařilo: API vrátilo prázdnou odpověď." + +#: inc/Engine/CDN/RocketCDN/APIClient.php:217 +msgid "RocketCDN cache purge failed: The API returned an unexpected response." +msgstr "" +"Vymazání mezipaměti RocketCDN se nezdařilo: API vrátilo neočekávanou " +"odpověď." + +#: inc/Engine/CDN/RocketCDN/APIClient.php:226 +#, php-format +msgid "RocketCDN cache purge failed: %s." +msgstr "Vymazání mezipaměti RocketCDN se nezdařilo: %s." + +#: inc/Engine/CDN/RocketCDN/APIClient.php:234 +msgid "RocketCDN cache purge successful." +msgstr "Vyčištění mezipaměti RocketCDN bylo úspěšně dokončeno." + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:82 +msgid "Next Billing Date" +msgstr "Datum příští fakturace" + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:91 +msgid "No Subscription" +msgstr "Žádné předplatné" + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:127 +msgid "Your RocketCDN subscription is currently active." +msgstr "Vaše předplatné pro RocketCDN je aktuálně aktivní." + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:133 +#, php-format +msgid "To use RocketCDN, replace your CNAME with %1$s%2$s%3$s." +msgstr "" +"Chcete-li používat RocketCDN, své stávající CNAME nahraďte %1$s%2$s%3$s." + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:144 +#, php-format +msgid "%1$sMore Info%2$s" +msgstr "%1$sVíce informací%2$s" + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:190 +msgid "Manage Subscription" +msgstr "Spravovat předplatné" + +#: inc/Engine/CDN/RocketCDN/RESTSubscriber.php:134 +msgid "RocketCDN enabled" +msgstr "RocketCDN zapnuto" + +#: inc/Engine/CDN/RocketCDN/RESTSubscriber.php:156 +msgid "RocketCDN disabled" +msgstr "RocketCDN vypnuto" + +#: inc/Engine/Cache/AdminSubscriber.php:102 inc/admin/admin.php:71 +#: inc/admin/admin.php:92 inc/deprecated/3.5.php:908 +msgid "Clear this cache" +msgstr "Vymazat tuto mezipaměť" + +#: inc/Engine/CriticalPath/APIClient.php:144 +#, php-format +msgid "" +"Critical CSS for %1$s not generated. Error: The API returned an empty " +"response." +msgstr "" +"Kritické CSS pro %1$s nebylo vygenerováno. Chyba: API vrátilo prázdnou " +"odpověď." + +#: inc/Engine/CriticalPath/APIClient.php:153 +#: inc/Engine/CriticalPath/DataManager.php:58 +#: inc/Engine/CriticalPath/ProcessorService.php:166 +#, php-format +msgid "Critical CSS for %1$s not generated." +msgstr "Kritické CSS pro %1$s nebylo vygenerováno." + +#: inc/Engine/CriticalPath/APIClient.php:158 +#, php-format +msgid "" +"Critical CSS for %1$s not generated. Error: The API returned an invalid " +"response code." +msgstr "" +"Kritické CSS pro %1$s nebylo vygenerováno. Chyba: API vrátilo neplatný kód " +"odpovědi." + +#: inc/Engine/CriticalPath/APIClient.php:166 +#: inc/Engine/CriticalPath/ProcessorService.php:170 +#, php-format +msgid "Error: %1$s" +msgstr "Chyba: %1$s" + +#: inc/Engine/CriticalPath/AdminSubscriber.php:99 +#: views/metabox/cpcss/generate.php:47 +msgid "Generate Specific CPCSS" +msgstr "Generovat konkrétní CPCSS" + +#: inc/Engine/CriticalPath/AdminSubscriber.php:100 +#: views/metabox/cpcss/generate.php:45 +msgid "Regenerate specific CPCSS" +msgstr "Znovu vygenerovat specifické CPCSS" + +#: inc/Engine/CriticalPath/AdminSubscriber.php:201 +msgid "%l to use this feature." +msgstr "%l pro použití této funkce." + +#: inc/Engine/CriticalPath/AdminSubscriber.php:204 +#, php-format +msgid "Publish the %s" +msgstr "Publikovat %s" + +#: inc/Engine/CriticalPath/AdminSubscriber.php:205 +msgid "Enable Optimize CSS delivery in WP Rocket settings" +msgstr "Povolte optimalizaci doručování CSS ve WP Rocket nastavení" + +#: inc/Engine/CriticalPath/AdminSubscriber.php:206 +msgid "Enable Optimize CSS delivery in the options above" +msgstr "Povolte optimalizaci doručování CSS ve výše uvedeném nastavení" + +#: inc/Engine/CriticalPath/CriticalCSSGeneration.php:80 +#: inc/Engine/CriticalPath/CriticalCSSGeneration.php:92 +#: inc/Engine/CriticalPath/CriticalCSSGeneration.php:105 +#: inc/Engine/CriticalPath/CriticalCSSGeneration.php:117 +#: inc/Engine/CriticalPath/CriticalCSSGeneration.php:140 +#, php-format +msgid "Critical CSS for %1$s not generated. Error: %2$s" +msgstr "Kritické CSS pro %1$s nebylo vygenerováno. Chyba: %2$s" + +#: inc/Engine/CriticalPath/CriticalCSSGeneration.php:92 +msgid "The API returned an invalid response code." +msgstr "API vrátilo neplatný kód odezvy." + +#: inc/Engine/CriticalPath/CriticalCSSGeneration.php:105 +msgid "The API returned an empty response." +msgstr "API vrátilo prázdnou odpověď." + +#: inc/Engine/CriticalPath/CriticalCSSGeneration.php:143 +#, php-format +msgid "The critical CSS content could not be saved as a file in %s." +msgstr "Obsah kritického CSS nemohl být uložen jako soubor v %s." + +#: inc/Engine/CriticalPath/CriticalCSSGeneration.php:154 +#: inc/Engine/CriticalPath/ProcessorService.php:224 +#, php-format +msgid "Critical CSS for %s generated." +msgstr "Kritické CSS pro %s bylo vygenerováno." + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:101 +msgid "Critical CSS generation is currently running." +msgstr "Právě běží generování kritického CSS." + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:106 +#: inc/Engine/Preload/PreloadSubscriber.php:242 +#, php-format +msgid "Go to the %1$sWP Rocket settings%2$s page to track progress." +msgstr "Přejděte na %1$s nastavení WP Rocket%2$s a sledujte průběh." + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:235 +#, php-format +msgid "" +"Critical CSS generation is currently running: %1$d of %2$d page types " +"completed. (Refresh this page to view progress)" +msgstr "" +"Právě probíhá generování kritického CSS: %1$d z %2$d typů obsahu bylo " +"dokončen. (Pro zobrazení pokroku aktualizujte tuto stránku)" + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:289 +#, php-format +msgid "Critical CSS generation finished for %1$d of %2$d page types." +msgstr "Generování kritického CSS bylo dokončeno pro %1$d z %2$d typů obsahu." + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:306 +msgid "Critical CSS generation encountered one or more errors." +msgstr "Během generování kritického CSS nastala jedna nebo více chyb." + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:306 +msgid "Learn more." +msgstr "Více informací." + +#: inc/Engine/CriticalPath/DataManager.php:85 +msgid "Critical CSS file does not exist" +msgstr "Soubor kritického CSS neexistuje" + +#: inc/Engine/CriticalPath/DataManager.php:95 +msgid "Critical CSS file cannot be deleted" +msgstr "Soubor kritického CSS nelze smazat." + +#: inc/Engine/CriticalPath/ProcessorService.php:195 +#, php-format +msgid "Critical CSS for %s in progress." +msgstr "Probíhá generování kritického CSS pro %s." + +#: inc/Engine/CriticalPath/ProcessorService.php:244 +msgid "Critical CSS file deleted successfully." +msgstr "Soubor kritického CSS byl úspěšně smazán." + +#: inc/Engine/CriticalPath/ProcessorService.php:263 +#, php-format +msgid "Critical CSS for %1$s timeout. Please retry a little later." +msgstr "" +"Během vytváření kritického CSS pro %1$s vypršel časový limit. Zkuste to " +"později." + +#: inc/Engine/CriticalPath/RESTWPPost.php:36 +#: inc/Engine/CriticalPath/RESTWPPost.php:69 +msgid "Requested post does not exist." +msgstr "Požadovaný příspěvek neexistuje." + +#: inc/Engine/CriticalPath/RESTWPPost.php:46 +msgid "Cannot generate CPCSS for unpublished post." +msgstr "Pro nepublikovaný příspěvek nelze generovat CPCSS." + +#: inc/Engine/HealthCheck/HealthCheck.php:82 inc/deprecated/3.5.php:868 +msgid "" +"The following scheduled event failed to run. This may indicate the CRON " +"system is not running properly, which can prevent some WP Rocket features " +"from working as intended:" +msgid_plural "" +"The following scheduled events failed to run. This may indicate the CRON " +"system is not running properly, which can prevent some WP Rocket features " +"from working as intended:" +msgstr[0] "" +"Nepodařilo se spustit následující plánovanou událost. Systém CRON " +"pravděpodobně nepracuje správně, což může zabránit správnému chodu některých" +" funkcí WP Rocket:" +msgstr[1] "" +"Nepodařilo se spustit následující plánované události. Systém CRON " +"pravděpodobně nepracuje správně, což může zabránit správnému chodu některých" +" funkcí WP Rocket:" +msgstr[2] "" +"Nepodařilo se spustit následující plánované události. Systém CRON " +"pravděpodobně nepracuje správně, což může zabránit správnému chodu některých" +" funkcí WP Rocket:" +msgstr[3] "" +"Nepodařilo se spustit následující plánované události. Systém CRON " +"pravděpodobně nepracuje správně, což může zabránit správnému chodu některých" +" funkcí WP Rocket:" + +#: inc/Engine/HealthCheck/HealthCheck.php:88 inc/deprecated/3.5.php:877 +msgid "Please contact your host to check if CRON is working." +msgstr "Obraťte se na poskytovatele hostingu a zjistěte, zda je CRON funkční." + +#: inc/Engine/HealthCheck/HealthCheck.php:142 +msgid "Scheduled Cache Purge" +msgstr "Naplánováno vyčištění mezipaměti" + +#: inc/Engine/HealthCheck/HealthCheck.php:143 +msgid "Scheduled Database Optimization" +msgstr "Naplánována optimalizace databáze" + +#: inc/Engine/HealthCheck/HealthCheck.php:144 +msgid "Database Optimization Process" +msgstr "Probíhá optimalizace databáze" + +#: inc/Engine/HealthCheck/HealthCheck.php:145 +msgctxt "noun" +msgid "Preload" +msgstr "Předběžné načítání" + +#: inc/Engine/HealthCheck/HealthCheck.php:146 +msgid "Critical Path CSS Generation Process" +msgstr "Proces generování cesty pro kritické CSS" + +#: inc/Engine/Preload/Homepage.php:153 +#, php-format +msgid "" +"Preload encountered an error. Could not gather links on %1$s because of the " +"following error: %2$s. %3$sLearn more%4$s." +msgstr "" +"Během předběžného načítání nastala chyba. Nepodařilo se získat odkazy z " +"adresy %1$s kvůli následující chyby: %2$s. %3$sVíce informaci%4$s." + +#: inc/Engine/Preload/Homepage.php:166 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: %2$s. Security measures could be preventing access. " +"%3$sLearn more%4$s." +msgstr "" +"Během předběžného načítání nastala chyba. Nedostupné - %1$s kvůli " +"následujícímu kódu odpovědi: %2$s. Chybu mohou způsobovat některá " +"bezpečnostní opatření. %3$sVíce informaci%4$s." + +#: inc/Engine/Preload/Homepage.php:172 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: 404. Please make sure your homepage is accessible in your " +"browser. %2$sLearn more%3$s." +msgstr "" +"Během předběžného načítání nastala chyba. %1$s je nedostupné kvůli " +"následujícímu kódu: 404. Vyzkoušejte v prohlížeči, jestli je vaše úvodní " +"stránka dostupná. %2$sVíce informací%3$s." + +#: inc/Engine/Preload/Homepage.php:178 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: 500. Please check with your web host about server access. " +"%2$sLearn more%3$s." +msgstr "" +"Během předběžného načítání nastala chyba. Nedostupné - %1$s - kvůli " +"následujícímu stavovému kódu: 500. Požádejte svůj webhosting o informaci " +"dostupnosti vašeho serveru. %2$sVíce informací%3$s." + +#: inc/Engine/Preload/Homepage.php:184 +#, php-format +msgid "" +"Preload encountered an error. Could not gather links on %1$s because it " +"returned the following response code: %2$s. %3$sLearn more%4$s." +msgstr "" +"Během předběžného načítání nastala chyba. Nepodařilo se získat odkazy z " +"adresy %1$s kvůli následující chyby:%2$s. %3$sVíce informací%4$s." + +#: inc/Engine/Preload/PreloadSubscriber.php:237 +msgid "Preload: WP Rocket has started preloading your website." +msgstr "Předběžné načtení: WP Rocket zahájilo předběžné načítání webu." + +#: inc/Engine/Preload/PreloadSubscriber.php:283 +#, php-format +msgid "" +"Preload: %1$s uncached page has now been preloaded. (refresh to see " +"progress)" +msgid_plural "" +"Preload: %1$s uncached pages have now been preloaded. (refresh to see " +"progress)" +msgstr[0] "" +"Předběžné načtení: Stránka %1$s bez mezipaměti byla nyní předběžně načtena. " +"(aktualizujte pro zobrazení průběhu)" +msgstr[1] "" +"Předběžné načtení: %1$s stránky bez mezipaměti byly nyní předběžně načteny. " +"(aktualizujte pro zobrazení průběhu)" +msgstr[2] "" +"Předběžné načtení: %1$s stránky bez mezipaměti byly nyní předběžně načteny. " +"(aktualizujte pro zobrazení průběhu)" +msgstr[3] "" +"Předběžné načtení: %1$s stránek bez mezipaměti bylo nyní předběžně načteno. " +"(aktualizujte pro zobrazení průběhu)" + +#: inc/Engine/Preload/PreloadSubscriber.php:292 +msgid "The following error happened during gathering of the URLs to preload:" +msgid_plural "" +"The following errors happened during gathering of the URLs to preload:" +msgstr[0] "" +"Při shromažďování URL adres k předběžnému načtení došlo k následující chybě:" +msgstr[1] "" +"Při shromažďování URL adres k předběžnému načtení došlo k následujícím " +"chybám:" +msgstr[2] "" +"Při shromažďování URL adres k předběžnému načtení došlo k následujícím " +"chybám:" +msgstr[3] "" +"Při shromažďování URL adres k předběžnému načtení došlo k následujícím " +"chybám:" + +#: inc/Engine/Preload/PreloadSubscriber.php:344 +#, php-format +msgid "Preload complete: %d pages have been cached." +msgstr "Předběžné načtení dokončeno: %d stránek bylo uloženo do mezipaměti." + +#: inc/Engine/Preload/Sitemap.php:150 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not gather links on %1$s because" +" of the following error: %2$s. %3$sLearn more%4$s." +msgstr "" +"Během předběžného načítání mapy webu nastala chyba. Nepodařilo se získat " +"odkazy - %1$s - kvůli následující chyby: %2$s. %3$sVíce informaci%4$s." + +#: inc/Engine/Preload/Sitemap.php:165 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: %2$s. Security measures could be preventing access." +" %3$sLearn more%4$s." +msgstr "" +"Během předběžného načítání mapy webu nastala chyba. Nepodařilo se získat " +"odkazy - %1$s - kvůli následující chyby: %2$s. Chybu mohou způsobovat určitá" +" bezpečnostní opatření. %3$sVíce informaci%4$s." + +#: inc/Engine/Preload/Sitemap.php:170 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: 404. Please make sure you entered the correct " +"sitemap URL and it is accessible in your browser. %2$sLearn more%3$s." +msgstr "" +"Během předběžného načítání mapy webu nastala chyba. %1$s je nedostupné kvůli" +" následujícímu kódu: 404. Ujistěte se, že jste zadali platnou URL mapy webu," +" a vyzkoušejte v prohlížeči, jestli je tato adresa dostupná. %2$sVíce " +"informací%3$s." + +#: inc/Engine/Preload/Sitemap.php:175 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: 500. Please check with your web host about server " +"access. %2$sLearn more%3$s." +msgstr "" +"Během předběžného načítání mapy webu nastala chyba. Nedostupné - %1$s - " +"kvůli následujícímu stavovému kódu: 500. Požádejte svůj webhosting o " +"informaci dostupnosti vašeho serveru. %2$sVíce informací%3$s." + +#: inc/Engine/Preload/Sitemap.php:180 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not gather links on %1$s because" +" it returned the following response code: %2$s. %3$sLearn more%4$s." +msgstr "" +"Během předběžného načítání mapy webu nastala chyba. Nepodařilo se získat " +"odkazy z adresy %1$s kvůli následující chyby:%2$s. %3$sVíce informací%4$s." + +#: inc/Engine/Preload/Sitemap.php:196 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not collect links from %1$s " +"because the file is empty. %2$sLearn more%3$s." +msgstr "" +"Během předběžného načítání mapy webu nastala chyba. Nepodařilo se získat " +"odkazy z %1$s, protože cílový soubor je prázdný. %2$sVíce informací%3$s." + +#: inc/Engine/Preload/Sitemap.php:217 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not collect links from %1$s " +"because of an error during the XML sitemap parsing. %2$sLearn more%3$s." +msgstr "" +"Během předběžného načítání mapy webu nastala chyba. Nepodařilo se získat " +"odkazy z adresy %1$s, protože během analýzy XML mapy webu nastala chyba. " +"%2$sVíce informací%3$s." + +#: inc/Engine/Preload/SitemapPreloadSubscriber.php:120 +#, php-format +msgid "" +"%1$sSimpleXML PHP extension%2$s is not enabled on your server. Please " +"contact your host to enable it before running sitemap-based cache " +"preloading." +msgstr "" +"%1$sPHP modul SimpleXML%2$s na serveru není zapnutý. Požádejte svůj " +"webhosting o jeho zapnutí před spuštěním předběžného načítání mezipaměti " +"pomoci mapy webu." + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:78 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"Please deactivate the following %s option which conflicts with WP Rocket " +"features:" +msgid_plural "" +"Please deactivate the following %s options which conflict with WP Rocket " +"features:" +msgstr[0] "" +"Deaktivujte následující možnost %s, která je v konfliktu s funkcemi WP " +"Rocket:" +msgstr[1] "" +"Deaktivujte následující možnosti %s, které jsou v konfliktu s funkcemi WP " +"Rocket:" +msgstr[2] "" +"Deaktivujte následující možnosti %s, které jsou v konfliktu s funkcemi WP " +"Rocket:" +msgstr[3] "" +"Deaktivujte následující možnosti %s, které jsou v konfliktu s funkcemi WP " +"Rocket:" + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:151 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sdisable emoji%3$s conflicts with WP Rockets %2$sdisable emoji%3$s" +msgstr "" +"%1$s %2$szakázání smajlíků%3$s je v konfliktu s WP Rocket %2$szakázáním " +"smajlíků%3$s" + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:187 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sGZIP compression%3$s conflicts with WP Rocket %2$sGZIP " +"compression%3$s" +msgstr "" +"%1$s %2$sGZIP komprese%3$s je v konfliktu s WP Rocket %2$sGZIP kompresí%3$s" + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:223 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sbrowser caching%3$s conflicts with WP Rocket %2$sbrowser " +"caching%3$s" +msgstr "" +"%1$s %2$scachování prohlížeče%3$s je v konfliktu s WP Rocket %2$smezipamětí " +"prohlížeče%3$s" + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:255 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$spage caching%3$s conflicts with WP Rocket %2$spage caching%3$s" +msgstr "" +"%1$s %2$scachování stránek%3$s je v konfliktu s WP Rocket %2$sukládáním " +"stránek do mezipaměti%3$s" + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:289 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sasset optimization%3$s conflicts with WP Rocket %2$sfile " +"optimization%3$s" +msgstr "" +"%1$s %2$sprostředek optimalizace%3$s je v konfliktu s WP Rocket " +"%2$soptimalizací souborů%3$s" + +#: inc/ThirdParty/Plugins/Smush.php:110 inc/ThirdParty/Plugins/Smush.php:128 +msgid "Smush" +msgstr "Smush" + +#: inc/admin/admin.php:18 inc/common/admin-bar.php:377 +#: inc/deprecated/deprecated.php:1787 +msgid "Support" +msgstr "Podpora" + +#: inc/admin/admin.php:20 +msgid "Docs" +msgstr "Dokumentace" + +#: inc/admin/admin.php:22 inc/common/admin-bar.php:365 +msgid "FAQ" +msgstr "Časté dotazy" + +#: inc/admin/admin.php:24 inc/common/admin-bar.php:64 +msgid "Settings" +msgstr "Nastavení" + +#: inc/admin/admin.php:227 inc/admin/admin.php:242 +#: inc/classes/class-wp-rocket-requirements-check.php:203 +#: inc/classes/class-wp-rocket-requirements-check.php:214 +#, php-format +msgid "%s Update Rollback" +msgstr "Obnovení předchozí verze %s" + +#: inc/admin/admin.php:268 +#, php-format +msgid "%1$sReturn to WP Rocket%2$s or %3$sgo to Plugins page%2$s" +msgstr "%1$sZpět k WP Rocket%2$s nebo %3$spřejít na stránku pluginů%2$s" + +#: inc/admin/admin.php:507 +msgid "Settings import failed: you do not have the permissions to do this." +msgstr "Selhal import nastavení: pro tuto akci nemáte dostatečné oprávnění." + +#: inc/admin/admin.php:511 +msgid "Settings import failed: no file uploaded." +msgstr "Selhal import nastavení: žádný soubor nebyl nahrán." + +#: inc/admin/admin.php:515 +msgid "Settings import failed: incorrect filename." +msgstr "Selhal import nastavení: nesprávný název souboru." + +#: inc/admin/admin.php:526 +msgid "Settings import failed: incorrect filetype." +msgstr "Selhal import nastavení: nesprávný typ souboru." + +#: inc/admin/admin.php:536 +msgid "Settings import failed: " +msgstr "Selhal import nastavení: " + +#: inc/admin/admin.php:552 +msgid "Settings import failed: unexpected file content." +msgstr "Selhal import nastavení: nesprávný typ souboru." + +#: inc/admin/admin.php:573 +msgid "Settings imported and saved." +msgstr "Nastavení bylo importováno a uloženo." + +#: inc/admin/options.php:154 +#, php-format +msgid "%1$s: %2$s." +msgstr "%1$s: %2$s." + +#: inc/admin/options.php:164 +msgid "The following pattern is invalid and has been removed:" +msgid_plural "The following patterns are invalid and have been removed:" +msgstr[0] "Následující vzorek je neplatný a byl odebrán:" +msgstr[1] "Následující vzorek jsou neplatné a byly odebrány:" +msgstr[2] "Následující vzorek jsou neplatné a byly odebrány:" +msgstr[3] "Následující vzorek jsou neplatné a byly odebrány:" + +#: inc/admin/ui/meta-boxes.php:14 inc/admin/ui/notices.php:806 +#: inc/common/admin-bar.php:85 inc/common/admin-bar.php:137 +#: views/settings/page-sections/dashboard.php:124 +msgid "Clear cache" +msgstr "Vymazat mezipaměť" + +#: inc/admin/ui/meta-boxes.php:36 +msgid "WP Rocket Options" +msgstr "Možnosti WP Rocket" + +#: inc/admin/ui/meta-boxes.php:65 +msgid "Never cache this page" +msgstr "Nikdy tuto stránku neukládat do mezipaměti" + +#: inc/admin/ui/meta-boxes.php:69 +msgid "Activate these options on this post:" +msgstr "Aktivujte možnosti jen pro tento příspěvek:" + +#: inc/admin/ui/meta-boxes.php:72 +msgid "LazyLoad for images" +msgstr "LazyLoad pro obrázky" + +#: inc/admin/ui/meta-boxes.php:73 +msgid "LazyLoad for iframes/videos" +msgstr "LazyLoad pro iframe/videa" + +#: inc/admin/ui/meta-boxes.php:75 +msgid "Minify/combine CSS" +msgstr "Zmenšit/zkombinovat CSS" + +#: inc/admin/ui/meta-boxes.php:76 +msgid "Minify/combine JS" +msgstr "Zmenšit/zkombinovat JS" + +#: inc/admin/ui/meta-boxes.php:78 +msgid "Optimize CSS Delivery" +msgstr "Optimalizovat doručení CSS" + +#: inc/admin/ui/meta-boxes.php:79 +msgid "Defer JS" +msgstr "Pozdržet JS" + +#: inc/admin/ui/meta-boxes.php:85 +#, php-format +msgid "Activate first the %s option." +msgstr "Nejprve aktivujte možnost %s." + +#: inc/admin/ui/meta-boxes.php:101 +#, php-format +msgid "" +"%1$sNote:%2$s None of these options will be applied if this post has been " +"excluded from cache in the global cache settings." +msgstr "" +"%1$sPoznámka:%2$s Žádné z těchto nastavení nebude použito, pokud jste tomuto" +" příspěvku zakázali ukládání do mezipaměti globálním nastavením WP Rocket." + +#: inc/admin/ui/notices.php:25 inc/admin/ui/notices.php:38 +#, php-format +msgid "" +"%1$s has not been deactivated due to missing writing permissions.
      \n" +"Make %2$s writeable and retry deactivation, or force deactivation now:" +msgstr "" +"%1$s nebyl deaktivován z důvodu chybějících práv k zápisu.
      \n" +"Nastavte souboru %2$s práva pro zápis a zkuste plugin opět deaktivovat, nebo proveďte vynucenou deaktivaci:" + +#: inc/admin/ui/notices.php:91 +#, php-format +msgid "" +"%s: One or more plugins have been enabled or disabled, " +"clear the cache if they affect the front end of your site." +msgstr "" +"%s: Jeden nebo více pluginů bylo aktivováno nebo " +"deaktivováno. Pokud mají vlil na veřejnou část webu, pak raději vymažte " +"mezipaměť." + +#: inc/admin/ui/notices.php:187 +msgid "" +"WP Rocket Cloudflare Add-on provides similar functionalities. They can not " +"be active at the same time." +msgstr "" +"Cloudflare rozšíření pro WP Rocket poskytuje podobnou funkcionalitu. Nemohou" +" být aktivní současně." + +#: inc/admin/ui/notices.php:211 +#, php-format +msgid "" +"%s: The following plugins are not compatible with this " +"plugin and may cause unexpected results:" +msgstr "" +"%s: Následující pluginy nejsou kompatibilní s tímto " +"pluginem a mohou způsobit neočekávané výsledky:" + +#: inc/admin/ui/notices.php:217 +msgid "Deactivate" +msgstr "Deaktivovat" + +#: inc/admin/ui/notices.php:259 +msgid "" +"WP Rocket Footer JS is not an official add-on. It prevents some options in " +"WP Rocket from working correctly. Please deactivate it if you have problems." +msgstr "" +"WP Rocket Footer JS je neoficiální doplněk. Některá nastavení v kombinaci s " +"tímto doplňkem správně nefungují. Pokud se vyskytnou problémy s WP Rocket, " +"deaktivujte jej prosím." + +#: inc/admin/ui/notices.php:299 +#, php-format +msgid "" +"Endurance Cache is currently enabled, which will conflict with WP Rocket " +"Cache. Please set the Endurance Cache cache level to Off (Level 0) on the " +"%1$sSettings > General%2$s page to prevent any issues." +msgstr "" +"Nyní je aktivní Endurance Cache, která bude v konfliktu s mezipamětí WP " +"Rocket. Nastavte úroveň Endurance Cache na Off (úroveň 0) na stránce " +"%1$sSettings > General %2$s, aby se zabránilo problémům." + +#: inc/admin/ui/notices.php:320 +#, php-format +msgid "" +"%1$s: A custom permalink structure is required for the plugin to work " +"properly. %2$sGo to permalinks settings%3$s" +msgstr "" +"%1$s: Pro správnou funkci pluginu je vyžadována vlastní struktura trvalých " +"odkazů. %2$sPřejděte na nastavení trvalých odkazů%3$s" + +#: inc/admin/ui/notices.php:402 +#, php-format +msgid "" +"%s could not modify the .htaccess file due to missing writing permissions." +msgstr "%s nemohlo upravit soubor .htaccess kvůli omezených práv pro zápis." + +#: inc/admin/ui/notices.php:408 inc/admin/ui/notices.php:883 +#, php-format +msgid "Troubleshoot: %1$sHow to make system files writeable%2$s" +msgstr "" +"Odstraňování problémů: %1$sJakudělit systémovým souborům práva k zápisu%2$s" + +#: inc/admin/ui/notices.php:410 inc/admin/ui/notices.php:885 +msgid "" +"https://docs.wp-rocket.me/article/626-how-to-make-system-files-htaccess-wp-" +"config-writeable/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://docs.wp-rocket.me/article/626-how-to-make-system-files-htaccess-wp-" +"config-writeable/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: inc/admin/ui/notices.php:416 +msgid "" +"Don’t worry, WP Rocket’s page caching and settings will still function " +"correctly." +msgstr "" +"Nebojte se, nastavení a mezipaměť WP Rocket bude pořád správně fungovat." + +#: inc/admin/ui/notices.php:416 +msgid "" +"For optimal performance, adding the following lines into your .htaccess is " +"recommended (not required):" +msgstr "" +"Pro optimální funkčnost byste měli přidat následující řádky do souboru " +".htaccess (nepovinné):" + +#: inc/admin/ui/notices.php:563 +#, php-format +msgid "" +"%1$s is good to go! %2$sTest your load time%4$s, or visit your " +"%3$ssettings%4$s." +msgstr "" +"Plugin %1$s je připraven! %2$sOtestujte si rychlost načítání%4$s, nebo " +"přejděte na %3$snastavení%4$s." + +#: inc/admin/ui/notices.php:636 +msgid "" +"Would you allow WP Rocket to collect non-sensitive diagnostic data from this" +" website?" +msgstr "Chcete WP Rocket povolit sběr diagnostických dat z tohoto webu?" + +#: inc/admin/ui/notices.php:637 +msgid "This would help us to improve WP Rocket for you in the future." +msgstr "Pomůže to do budoucna zlepšit WP Rocket podle Vás, uživatelů." + +#: inc/admin/ui/notices.php:643 +msgid "What info will we collect?" +msgstr "Jaké údaje budou shromažďovány?" + +#: inc/admin/ui/notices.php:648 +msgid "" +"Below is a detailed view of all data WP Rocket will collect if granted " +"permission. WP Rocket will never transmit any domain names or email " +"addresses (except for license validation), IP addresses, or third-party API " +"keys." +msgstr "" +"Níže je podrobné zobrazení všech údajů, které bude v případě povolení " +"oprávnění WP Rocket shromažďovat. WP Rocket nikdy nebude posílat názvy domén" +" nebo emailové adresy (kromě ověření licence), IP adresy nebo API klíče " +"třetích stran." + +#: inc/admin/ui/notices.php:657 +msgid "Yes, allow" +msgstr "Ano, povolit" + +#: inc/admin/ui/notices.php:660 +msgid "No, thanks" +msgstr "Ne" + +#: inc/admin/ui/notices.php:699 +msgid "Thank you!" +msgstr "Děkujeme Vám!" + +#: inc/admin/ui/notices.php:704 +msgid "WP Rocket now collects these metrics from your website:" +msgstr "WP Rocket nyní z tohoto webu shromažďuje následující údaje:" + +#: inc/admin/ui/notices.php:742 +#, php-format +msgid "%s: Cache cleared." +msgstr "%s: Mezipaměť byla vymazána." + +#: inc/admin/ui/notices.php:749 +#, php-format +msgid "%s: Post cache cleared." +msgstr "%s: Mezipaměť příspěvku byla vymazána." + +#: inc/admin/ui/notices.php:756 +#, php-format +msgid "%s: Term cache cleared." +msgstr "%s: Mezipaměť položky byla vymazána." + +#: inc/admin/ui/notices.php:763 +#, php-format +msgid "%s: User cache cleared." +msgstr "%s: Uživatelská mezipaměť byla vymazána." + +#: inc/admin/ui/notices.php:809 +msgid "Stop Preload" +msgstr "Zastavit prednačítání" + +#: inc/admin/ui/notices.php:827 +msgid "Force deactivation " +msgstr "Vynutit vypnutí " + +#: inc/admin/ui/notices.php:840 +msgid "The following code should have been written to this file:" +msgstr "Následující kód by měl být zapsán do tohoto souboru:" + +#: inc/admin/ui/notices.php:850 views/settings/page-sections/dashboard.php:46 +msgid "Dismiss this notice." +msgstr "Zavřít toto oznámení." + +#: inc/admin/ui/notices.php:871 +#, php-format +msgid "%s cannot configure itself due to missing writing permissions." +msgstr "%s se nemůže nastavit kvůli chybějícím oprávněním k zápisu." + +#: inc/admin/ui/notices.php:877 +#, php-format +msgid "Affected file/folder: %s" +msgstr "Ovlivněný soubor/složka: %s" + +#: inc/classes/admin/Database/class-optimization.php:47 +msgid "Transients" +msgstr "Dočasná data" + +#: inc/classes/admin/Database/class-optimization.php:48 +msgid "Tables" +msgstr "Tabulky" + +#: inc/classes/admin/class-logs.php:124 +msgid "The debug file could not be deleted." +msgstr "Soubor ladění se nepodařilo vymazat." + +#: inc/classes/class-wp-rocket-requirements-check.php:147 +#, php-format +msgid "To function properly, %1$s %2$s requires at least:" +msgstr "Pro správnou funkčnost %1$s %2$s je vyžadováno alespoň:" + +#: inc/classes/class-wp-rocket-requirements-check.php:151 +#, php-format +msgid "" +"PHP %1$s. To use this WP Rocket version, please ask your web host how to " +"upgrade your server to PHP %1$s or higher." +msgstr "" +"PHP %1$s. Pokud chcete používat tuto verzi WP Rocket, požádejte svůj " +"webhosting o pomoc s upgradem serveru na PHP %1$s nebo vyšší." + +#: inc/classes/class-wp-rocket-requirements-check.php:156 +#, php-format +msgid "" +"WordPress %1$s. To use this WP Rocket version, please upgrade WordPress to " +"version %1$s or higher." +msgstr "" +"WordPress %1$s. Pokud chcete používat tuto verzi WP Rocket, tak musíte " +"aktualizovat WordPress na verzi %1$s nebo vyšší." + +#: inc/classes/class-wp-rocket-requirements-check.php:159 +msgid "" +"If you are not able to upgrade, you can rollback to the previous version by " +"using the button below." +msgstr "" +"Pokud nemáte možnost přechodu na požadovanou verzi, můžete WP Rocket " +"přeinstalovat na předchozí verzi, pomoci níže zobrazeného tlačítka." + +#: inc/classes/class-wp-rocket-requirements-check.php:161 +#: inc/deprecated/deprecated.php:1947 +#, php-format +msgid "Re-install version %s" +msgstr "Přeinstalovat verzi %s" + +#: inc/classes/logger/class-logger.php:254 +#: inc/classes/logger/class-logger.php:286 +msgid "The log file does not exist." +msgstr "Soubor protokolu neexistuje." + +#: inc/classes/logger/class-logger.php:260 +#: inc/classes/logger/class-logger.php:292 +msgid "The log file could not be read." +msgstr "Soubor protokolu nelze číst." + +#: inc/classes/logger/class-logger.php:279 +msgid "The logs are not saved into a file." +msgstr "Protokoly se neukládají do souboru." + +#: inc/classes/subscriber/Cache/class-expired-cache-purge-subscriber.php:128 +msgid "WP Rocket Expired Cache Interval" +msgstr "Interval pro vypršení mezipaměti WP Rocket" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:269 +#, php-format +msgid "" +"You are using %1$s to serve WebP images so you do not need to enable this " +"option. If you prefer to have WP Rocket serve WebP for you instead, please " +"disable them from serving in %1$s. %2$sMore info%3$s" +msgid_plural "" +"You are using %1$s to serve WebP images so you do not need to enable this " +"option. If you prefer to have WP Rocket serve WebP for you instead, please " +"disable them from serving in %1$s. %2$sMore info%3$s" +msgstr[0] "" +"Pro poskytování WebP obrázků používáte plugin %1$s, proto tuto možnost " +"nemusíte zapínat. Chcete-li místo toho využívat WP Rocket, zakažte " +"poskytování WebP v pluginu %1$s. %2$sVíce Informací%3$s" +msgstr[1] "" +"Pro poskytování WebP obrázků používáte plugin %1$s, proto tuto možnost " +"nemusíte zapínat. Chcete-li místo toho využívat WP Rocket, zakažte " +"poskytování WebP v pluginu %1$s. %2$sVíce Informací%3$s" +msgstr[2] "" +"Pro poskytování WebP obrázků používáte plugin %1$s, proto tuto možnost " +"nemusíte zapínat. Chcete-li místo toho využívat WP Rocket, zakažte " +"poskytování WebP v pluginu %1$s. %2$sVíce Informací%3$s" +msgstr[3] "" +"Pro poskytování WebP obrázků používáte plugin %1$s, proto tuto možnost " +"nemusíte zapínat. Chcete-li místo toho využívat WP Rocket, zakažte " +"poskytování WebP v pluginu %1$s. %2$sVíce Informací%3$s" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:280 +msgid "WebP cache is disabled by filter." +msgstr "Mezipaměť WebP je zakázána filtrem." + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:290 +#: inc/classes/subscriber/Media/class-webp-subscriber.php:316 +#, php-format +msgid "" +"You are using %1$s to convert images to WebP. If you want WP Rocket to serve" +" them for you, activate this option. %2$sMore info%3$s" +msgid_plural "" +"You are using %1$s to convert images to WebP. If you want WP Rocket to serve" +" them for you, activate this option. %2$sMore info%3$s" +msgstr[0] "" +"Pro převod obrázků do formátu WebP používáte plugin %1$s . WP Rocket vytvoří" +" samostatné soubory mezipaměti, které budou poskytovat WebP obrázky. Pokud " +"chcete, aby je poskytoval WP Rocket, aktivujte tuto možnost. %2$sVíce " +"informací%3$s" +msgstr[1] "" +"Pro převod obrázků do formátu WebP používáte plugin %1$s . WP Rocket vytvoří" +" samostatné soubory mezipaměti, které budou poskytovat WebP obrázky. Pokud " +"chcete, aby je poskytoval WP Rocket, aktivujte tuto možnost. %2$sVíce " +"informací%3$s" +msgstr[2] "" +"Pro převod obrázků do formátu WebP používáte plugin %1$s . WP Rocket vytvoří" +" samostatné soubory mezipaměti, které budou poskytovat WebP obrázky. Pokud " +"chcete, aby je poskytoval WP Rocket, aktivujte tuto možnost. %2$sVíce " +"informací%3$s" +msgstr[3] "" +"Pro převod obrázků do formátu WebP používáte plugin %1$s . WP Rocket vytvoří" +" samostatné soubory mezipaměti, které budou poskytovat WebP obrázky. Pokud " +"chcete, aby je poskytoval WP Rocket, aktivujte tuto možnost. %2$sVíce " +"informací%3$s" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:302 +#: inc/classes/subscriber/Media/class-webp-subscriber.php:328 +#, php-format +msgid "" +"You are using %1$s to convert images to WebP. WP Rocket will create separate" +" cache files to serve your WebP images. %2$sMore info%3$s" +msgid_plural "" +"You are using %1$s to convert images to WebP. WP Rocket will create separate" +" cache files to serve your WebP images. %2$sMore info%3$s" +msgstr[0] "" +"Pro převod obrázků do formátu WebP používáte plugin %1$s . WP Rocket vytvoří" +" samostatné soubory mezipaměti, které budou poskytovat WebP obrázky. " +"%2$sVíce informací%3$s" +msgstr[1] "" +"Pro převod obrázků do formátu WebP používáte plugin %1$s . WP Rocket vytvoří" +" samostatné soubory mezipaměti, které budou poskytovat WebP obrázky. " +"%2$sVíce informací%3$s" +msgstr[2] "" +"Pro převod obrázků do formátu WebP používáte plugin %1$s . WP Rocket vytvoří" +" samostatné soubory mezipaměti, které budou poskytovat WebP obrázky. " +"%2$sVíce informací%3$s" +msgstr[3] "" +"Pro převod obrázků do formátu WebP používáte plugin %1$s . WP Rocket vytvoří" +" samostatné soubory mezipaměti, které budou poskytovat WebP obrázky. " +"%2$sVíce informací%3$s" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:349 +#, php-format +msgid "" +"You don’t seem to be using a method to create and serve WebP that we are " +"auto-compatible with. If you are not using WebP do not enable this option. " +"%1$sMore info%2$s" +msgstr "" +"Pravděpodobně nepoužíváte metodu pro vytvoření a poskytování WebP obsahu, s " +"níž jsme automaticky kompatibilní. Pokud nepoužíváte WebP, tuto možnost " +"nepovolujte. %1$sVíce informací%2$s" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:354 +msgid "We have not detected any compatible WebP plugin!" +msgstr "Nebyl zjištěn žádný kompatibilní WebP plugin." + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:357 +#, php-format +msgid "" +"If you activate this option WP Rocket will create separate cache files to " +"serve WebP images. Any WebP images you have on your site will be served from" +" these files to compatible browsers. If you don’t already have WebP images " +"on your site consider using %1$sImagify%3$s or another supported plugin. " +"%2$sMore info%3$s" +msgstr "" +"Pokud aktivujete tuto volbu, WP Rocket vytvoří samostatné soubory mezipaměti" +" pro poskytování WebP obrázků. Všechny WebP obrázky, které máte na webu, " +"budou z těchto souborů poskytovány kompatibilními prohlížeči. Pokud ještě " +"nemáte na webu WebP obrázky, zvažte použití %1$sImagify%3$s nebo jiného " +"podporovaného pluginu. %2$sVíce inforamcí%3$s" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:369 +msgid "WP Rocket will create separate cache files to serve your WebP images." +msgstr "" +"WP Rocket vytvoří samostatné soubory mezipaměti, které budou poskytovat WebP" +" obrázky." + +#: inc/classes/subscriber/Tools/class-detect-missing-tags-subscriber.php:151 +#, php-format +msgid "" +"Failed to detect the following requirement in your theme: closing %1$s." +msgid_plural "" +"Failed to detect the following requirements in your theme: closing %1$s." +msgstr[0] "" +"Nepodařilo se identifikovat následující požadavek šablony: uzavírací značky " +"%1$s." +msgstr[1] "" +"Nepodařilo se identifikovat následující požadavky šablony: uzavírací značky " +"%1$s." +msgstr[2] "" +"Nepodařilo se identifikovat následující požadavky šablony: uzavírací značky " +"%1$s." +msgstr[3] "" +"Nepodařilo se identifikovat následující požadavky šablony: uzavírací značky " +"%1$s." + +#: inc/classes/subscriber/Tools/class-detect-missing-tags-subscriber.php:159 +msgid "" +"https://docs.wp-rocket.me/article/99-pages-not-cached-or-minify-cssjs-not-" +"working/?utm_source=wp_plugin&utm_medium=wp_rocket#theme" +msgstr "" +"https://docs.wp-rocket.me/article/99-pages-not-cached-or-minify-cssjs-not-" +"working/?utm_source=wp_plugin&utm_medium=wp_rocket#theme" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:98 +msgid "monthly" +msgstr "měsíčně" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:211 +msgid "Database optimization process is running" +msgstr "Probíhá optimalizace databáze" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:242 +msgid "" +"Database optimization process is complete. Everything was already optimized!" +msgstr "" +"Optimalizace databáze byla dokončena. Všechno již bylo optimalizováno!" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:245 +msgid "" +"Database optimization process is complete. List of optimized items below:" +msgstr "" +"Optimalizace databáze byla dokončena. Níže je zobrazen seznam " +"optimalizovaných položek:" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:253 +#, php-format +msgid "%1$d %2$s optimized." +msgstr "Optimalizováno %1$d %2$s." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:116 +#, php-format +msgid "Sucuri cache purge error: %s" +msgstr "Sucuri chyba vyprázdnění mezipaměti: %s" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:121 +msgid "" +"The Sucuri cache is being cleared. Note that it may take up to two minutes " +"for it to be fully flushed." +msgstr "" +"Čištění mezipaměti Sucuri bylo zahájeno. Nezapomeňte, že tato akce může " +"trvat až dvě minuty." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:244 +msgid "Sucuri firewall API key was not found." +msgstr "Sucuri API klíč firewallu nebyl nalezen." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:256 +msgid "Sucuri firewall API key is invalid." +msgstr "Sucuri API klíč firewallu je neplatný." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:311 +msgid "Error when contacting Sucuri firewall API." +msgstr "Chyba při kontaktování Sucuri firewall API." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:324 +#, php-format +msgid "Error when contacting Sucuri firewall API. Error message was: %s" +msgstr "" +"Chyba při kontaktování Sucuri firewall API. Chybová zpráva je následující: " +"%s" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:338 +msgid "Could not get a response from the Sucuri firewall API." +msgstr "Nepodařilo se dostat odpověď od Sucuri firewall API." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:352 +msgid "Got an invalid response from the Sucuri firewall API." +msgstr "Byla přijata neplatná odpověď od Sucuri firewall API." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:365 +msgid "The Sucuri firewall API returned an unknown error." +msgstr "Sucuri firewall API vrátilo neznámou chybu." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:368 +#, php-format +msgid "The Sucuri firewall API returned the following error: %s" +msgid_plural "The Sucuri firewall API returned the following errors: %s" +msgstr[0] "Sucuri firewall API vrátilo následující chybu: %s" +msgstr[1] "Sucuri firewall API vrátilo následující chyby: %s" +msgstr[2] "Sucuri firewall API vrátilo následující chyby: %s" +msgstr[3] "Sucuri firewall API vrátilo následující chyby: %s" + +#: inc/classes/traits/trait-updater-api-tools.php:53 +#: inc/deprecated/3.3.php:761 inc/deprecated/3.3.php:770 +#, php-format +msgid "" +"An unexpected error occurred. Something may be wrong with WP-Rocket.me or " +"this server’s configuration. If you continue to have problems, contact support." +msgstr "" +"Vyskytla se neočekávaná chyba. Chyba může být na straně WP-Rocket.me nebo v " +"nastavení vašeho serveru. Pokud máte nadále problémy, kontaktujte technickou podporu." + +#: inc/common/admin-bar.php:125 inc/common/admin-bar.php:312 +#: inc/functions/i18n.php:41 inc/functions/i18n.php:51 +msgid "All languages" +msgstr "Všechny jazyky" + +#: inc/common/admin-bar.php:152 +msgid "Clear this post" +msgstr "Vymazat mezipaměť tohoto příspěvku" + +#: inc/common/admin-bar.php:166 +msgid "Purge this URL" +msgstr "Vymazat mezipaměť pro tuto URL" + +#: inc/common/admin-bar.php:192 +msgid "Purge OPcache" +msgstr "Vyprázdnit OPcache" + +#: inc/common/admin-bar.php:211 +msgid "Regenerate Critical Path CSS" +msgstr "Znovu vygenerovat kritické CSS" + +#: inc/common/admin-bar.php:229 +msgid "Clear Cloudflare cache" +msgstr "Vymazat mezipaměť Cloudflare" + +#: inc/common/admin-bar.php:247 +msgid "Purge Sucuri cache" +msgstr "Vyprázdnit Sucuri mezipaměť" + +#: inc/common/admin-bar.php:270 inc/common/admin-bar.php:324 +#: views/settings/page-sections/dashboard.php:144 +msgid "Preload cache" +msgstr "Přednačíst mezipaměť" + +#: inc/common/admin-bar.php:340 views/settings/fields/rocket-cdn.php:55 +msgid "Purge RocketCDN cache" +msgstr "Vyčistit mezipaměť RocketCDN" + +#: inc/common/admin-bar.php:353 views/settings/partials/documentation.php:14 +msgid "Documentation" +msgstr "Dokumentace" + +#: inc/common/purge.php:569 +msgid "OPcache purge failed." +msgstr "Vyprázdnění OPcache se nezdařilo." + +#: inc/common/purge.php:574 +msgid "OPcache successfully purged" +msgstr "OPcache byla úspěšně vyprázdněna" + +#: inc/deprecated/3.2.php:52 views/settings/page-sections/imagify.php:36 +msgid "Activate Imagify" +msgstr "Aktivovat Imagify" + +#: inc/deprecated/3.2.php:52 +msgid "Install Imagify for Free" +msgstr "Zdarma instalovat Imagify" + +#: inc/deprecated/3.2.php:67 +msgid "" +"Speed up your website and boost your SEO by reducing image file sizes " +"without losing quality with Imagify." +msgstr "" +"Zrychlete si web a zlepšete si SEO optimalizací obrázků bez ztráty kvality " +"pomoci pluginu Imagify." + +#: inc/deprecated/3.2.php:72 +msgid "More details" +msgstr "Zobrazit podrobnosti" + +#: inc/deprecated/3.2.php:228 +#, php-format +msgid "Sitemap preload: %d pages have been cached." +msgstr "Předběžné načítání map webu: %d stránek bylo uloženo do mezipaměti." + +#: inc/deprecated/3.2.php:261 +#, php-format +msgid "" +"Sitemap preload: %d uncached pages have now been preloaded. (refresh to see " +"progress)" +msgstr "" +"Předběžné načítání map webu: %d neuložených stránek v mezipaměti bylo " +"předběžně načteno. (obnovte pro zobrazení postupu)" + +#: inc/deprecated/3.4.php:18 +msgid "Choose a domain from the list" +msgstr "Vyberte doménu ze seznamu" + +#: inc/deprecated/3.4.php:31 +msgid "No domain available in your Cloudflare account" +msgstr "V účtu Cloudflare není k dispozici žádná doména" + +#: inc/deprecated/3.5.php:81 inc/deprecated/3.5.php:205 +msgid "" +"Curl is disabled on your server. Please ask your host to enable it. This is " +"required for the Cloudflare Add-on to work correctly." +msgstr "" +"cURL funkce je zakázána. Požádejte technickou podporu hostingu, aby cURL " +"aktivovala. Tato funkce je nezbytná pro správnou funkčnost Cloudflare " +"rozšíření." + +#: inc/deprecated/3.5.php:89 +#, php-format +msgid "" +"Cloudflare email, API key and Zone ID are not set. Read the " +"%1$sdocumentation%2$s for further guidance." +msgstr "" +"Cloudflare email, API klíč a Zone ID nejsou nastaveny. Další pokyny " +"naleznete v %1$sdokumentaci%2$s." + +#: inc/deprecated/3.5.php:216 +#, php-format +msgid "" +"Cloudflare email and API key are not set. Read the %1$sdocumentation%2$s for" +" further guidance." +msgstr "" +"Cloudflare email a API klíč nejsou nastaveny. Další pokyny naleznete v " +"%1$sdokumentaci%2$s." + +#: inc/deprecated/3.5.php:281 +msgid "Connection to Cloudflare failed" +msgstr "Připojení ke Cloudflare selhalo" + +#: inc/deprecated/DeprecatedClassTrait.php:54 +#, php-format +msgid "" +"The called class %1$s is deprecated since version %2$s! Use" +" %3$s instead." +msgstr "" +"Volaná třída %1$s je zastaralá od verze %2$s! Místo toho " +"použijte třídu %3$s." + +#: inc/deprecated/DeprecatedClassTrait.php:65 +#, php-format +msgid "" +"The called class %1$s is deprecated since version %2$s!" +msgstr "Volaná třída %1$s je zastaralá od verze %2$s!" + +#: inc/deprecated/deprecated.php:240 +msgid "JS files with Deferred Loading JavaScript" +msgstr "JS soubory s odloženým načítáním jazyka JavaScript" + +#: inc/deprecated/deprecated.php:293 +msgid "Add URL" +msgstr "Přidat URL" + +#: inc/deprecated/deprecated.php:1277 views/settings/fields/import-form.php:22 +msgid "" +"Before you can upload your import file, you will need to fix the following " +"error:" +msgstr "" +"Před nahráním souboru s importem budete ještě muset vyřešit následující " +"chybu:" + +#: inc/deprecated/deprecated.php:1288 views/settings/fields/import-form.php:35 +#, php-format +msgid "Choose a file from your computer (maximum size: %s)" +msgstr "Zvolte soubor ze svého počítače (maximální velikost: %s)" + +#: inc/deprecated/deprecated.php:1385 +msgid "Your Cloudflare credentials are valid." +msgstr "Vaše přihlašovací údaje ke Cloudflare jsou platné." + +#: inc/deprecated/deprecated.php:1389 +msgid "Your Cloudflare credentials are invalid!" +msgstr "Vaše přihlašovací údaje ke Cloudflare jsou neplatné!" + +#: inc/deprecated/deprecated.php:1453 +msgid "Save and optimize" +msgstr "Uložit a optimalizovat" + +#: inc/deprecated/deprecated.php:1453 +msgid "Optimize" +msgstr "Optimalizovat" + +#: inc/deprecated/deprecated.php:1464 inc/deprecated/deprecated.php:1666 +msgctxt "screen-reader-text" +msgid "Note:" +msgstr "Poznámka:" + +#: inc/deprecated/deprecated.php:1470 +msgctxt "screen-reader-text" +msgid "Performance tip:" +msgstr "Výkonnostní tip:" + +#: inc/deprecated/deprecated.php:1476 +msgctxt "screen-reader-text" +msgid "Third-party feature detected:" +msgstr "Zjištěna funkce třetích stran:" + +#: inc/deprecated/deprecated.php:1488 inc/deprecated/deprecated.php:1672 +msgctxt "screen-reader-text" +msgid "Warning:" +msgstr "Varování:" + +#: inc/deprecated/deprecated.php:1501 +msgctxt "button text" +msgid "Download settings" +msgstr "Stáhnout nastavení" + +#: inc/deprecated/deprecated.php:1531 +msgid "Replace site's hostname with:" +msgstr "Nahraďte název hostitelského webu pomocí:" + +#: inc/deprecated/deprecated.php:1550 inc/deprecated/deprecated.php:1587 +#: inc/deprecated/deprecated.php:1615 views/settings/fields/cnames.php:32 +#: views/settings/fields/cnames.php:64 views/settings/fields/cnames.php:94 +msgid "reserved for" +msgstr "rezervováno pro" + +#: inc/deprecated/deprecated.php:1552 inc/deprecated/deprecated.php:1589 +#: inc/deprecated/deprecated.php:1617 views/settings/fields/cnames.php:35 +#: views/settings/fields/cnames.php:67 views/settings/fields/cnames.php:97 +msgid "All files" +msgstr "Všechny soubory" + +#: inc/deprecated/deprecated.php:1564 inc/deprecated/deprecated.php:1594 +#: inc/deprecated/deprecated.php:1622 views/settings/fields/cnames.php:47 +#: views/settings/fields/cnames.php:79 views/settings/fields/cnames.php:109 +msgid "Images" +msgstr "Obrázky" + +#: inc/deprecated/deprecated.php:1635 views/settings/fields/cnames.php:120 +msgid "Add CNAME" +msgstr "Přidat CNAME" + +#: inc/deprecated/deprecated.php:1706 views/settings/partials/sidebar.php:16 +msgid "Watch the video" +msgstr "Přehrát video" + +#: inc/deprecated/deprecated.php:1771 +msgid "Basic" +msgstr "Základní" + +#: inc/deprecated/deprecated.php:1772 +msgid "Static Files" +msgstr "Statické soubory" + +#: inc/deprecated/deprecated.php:1774 +msgid "Advanced" +msgstr "Pokročilé" + +#: inc/deprecated/deprecated.php:1944 +#, php-format +msgid "" +"%1$s %2$s requires at least PHP %3$s to function properly. To use this " +"version, please ask your web host how to upgrade your server to PHP %3$s or " +"higher. If you are not able to upgrade, you can rollback to the previous " +"version by using the button below." +msgstr "" +"Pro správnou funkčnost %1$s verze %2$s je vyžadováno PHP %3$s a novější. " +"Chcete-li tuto verzi použít, požádejte svůj webhosting o pomoc se změnou PHP" +" na verzi %3$s nebo novější. Pokud nemůžete přejít na novější verzi, můžete " +"se vrátit zpět k předchozí verzi pomocí níže zobrazeného tlačítka." + +#: inc/functions/admin.php:23 +msgid "" +"There seems to be an issue validating your license. Please see the error " +"message below." +msgid_plural "" +"There seems to be an issue validating your license. You can see the error " +"messages below." +msgstr[0] "" +"Během ověřování licence nastala chyba. Přečtěte si následující chybovou " +"zprávu." +msgstr[1] "" +"Během ověřování licence nastala chyba. Přečtěte si následující chybové " +"zprávy." +msgstr[2] "" +"Během ověřování licence nastala chyba. Přečtěte si následující chybové " +"zprávy." +msgstr[3] "" +"Během ověřování licence nastala chyba. Přečtěte si následující chybové " +"zprávy." + +#: inc/functions/admin.php:363 +msgid "Server type:" +msgstr "Typ serveru:" + +#: inc/functions/admin.php:372 +msgid "PHP version number:" +msgstr "Verze PHP:" + +#: inc/functions/admin.php:381 +msgid "WordPress version number:" +msgstr "Verze WordPressu:" + +#: inc/functions/admin.php:390 +msgid "WordPress multisite:" +msgstr "Síť webů WordPressu:" + +#: inc/functions/admin.php:399 +msgid "Current theme:" +msgstr "Aktuální šablona:" + +#: inc/functions/admin.php:408 +msgid "Current site language:" +msgstr "Aktuální jazyk webu:" + +#: inc/functions/admin.php:417 +msgid "Active plugins:" +msgstr "Aktivované pluginy:" + +#: inc/functions/admin.php:420 +msgid "Plugin names of all active plugins" +msgstr "Názvy všech aktivovaných pluginů" + +#: inc/functions/admin.php:426 +msgid "Anonymized WP Rocket settings:" +msgstr "Anonymizované WP Rocket nastavení:" + +#: inc/functions/admin.php:429 +msgid "Which WP Rocket settings are active" +msgstr "Jaká nastavení pluginu WP Rocket jsou aktivní" + +#: inc/functions/options.php:544 inc/functions/options.php:583 +msgid "" +"License validation failed. Our server could not resolve the request from " +"your website." +msgstr "" +"Ověřování licence se nezdařilo. Nepodařilo se navázat spojeni mezi web a " +"našim serverem." + +#: inc/functions/options.php:544 inc/functions/options.php:583 +#, php-format +msgid "" +"Try clicking %1$sSave Changes%2$s below. If the error persists, follow " +"%3$sthis guide%4$s." +msgstr "" +"Zkuste níže kliknout na %1$sUložit změny%2$s. Pokud problém přetrvává, " +"postupujte podle %3$stohoto návodu%4$s." + +#: inc/functions/options.php:560 +msgid "" +"License validation failed. You may be using a nulled version of the plugin. " +"Please do the following:" +msgstr "" +"Ověření licence se nezdařilo. Možná používáte nulovou verzi tohoto pluginu. " +"Postupujte podle následujících kroků:" + +#: inc/functions/options.php:560 inc/functions/options.php:602 +#, php-format +msgid "Login to your WP Rocket %1$saccount%2$s" +msgstr "Přihlaste se ke svému WP Rocket %1$súčtu%2$s" + +#: inc/functions/options.php:560 inc/functions/options.php:602 +msgid "Download the zip file" +msgstr "Stáhněte soubor zip" + +#: inc/functions/options.php:560 inc/functions/options.php:602 +msgid "Reinstall" +msgstr "Přeinstalujte plugin" + +#: inc/functions/options.php:560 +#, php-format +msgid "" +"If you do not have a WP Rocket account, please %1$spurchase a license%2$s." +msgstr "Pokud nemáte účet u WP Rocket, %1$skupte si licenci%2$s." + +#: inc/functions/options.php:568 +msgid "" +"License validation failed. This user account does not exist in our database." +msgstr "" +"Ověřování licence se nezdařilo. Tento uživatelský účet v naši databázi " +"neexistuje." + +#: inc/functions/options.php:568 +msgid "To resolve, please contact support." +msgstr "Kontaktujte, prosím, technickou podporu." + +#: inc/functions/options.php:576 +msgid "License validation failed. This user account is blacklisted." +msgstr "Ověřování licence se nezdařilo. Tento uživatelský účet byl zakázán." + +#: inc/functions/options.php:576 +#, php-format +msgid "Please see %1$sthis guide%2$s for more info." +msgstr "Pro více informací se podívejte na %1$stento návod%2$s." + +#: inc/functions/options.php:596 +msgid "Your license is not valid." +msgstr "Vaše licence je neplatná." + +#: inc/functions/options.php:596 +#, php-format +msgid "Make sure you have an active %1$sWP Rocket license%2$s." +msgstr "Ujistěte se, že máte aktivní %1$sWP Rocket licenci%2$s." + +#: inc/functions/options.php:598 +msgid "You have added as many sites as your current license allows." +msgstr "Přidali jste maximální počet webů ke svým zakoupeným licencím." + +#: inc/functions/options.php:598 +#, php-format +msgid "" +"Upgrade your %1$saccount%2$s or %3$stransfer your license%2$s to this " +"domain." +msgstr "Upgradujte %1$súčet%2$s, nebo%3$spřeveďte licenci%2$s na tuto doménu." + +#: inc/functions/options.php:600 +msgid "This website is not allowed." +msgstr "Tato webová stránka není povolena." + +#: inc/functions/options.php:600 +#, php-format +msgid "Please %1$scontact support%2$s." +msgstr "%1$sKontaktujte technickou podporu%2$s." + +#: inc/functions/options.php:602 +msgid "This license key is not recognized." +msgstr "Licenční klíč nebyl rozpoznán." + +#: inc/functions/options.php:602 +#, php-format +msgid "If the issue persists, please %1$scontact support%2$s." +msgstr "" +"Pokud problém přetrvává, neváhejte %1$skontaktovat technickou podporu%2$s." + +#: inc/functions/options.php:608 +#, php-format +msgid "License validation failed: %s" +msgstr "Ověření licence se nezdařilo: %s" + +#: inc/vendors/classes/class-imagify-partner.php:531 +msgid "Plugin installed successfully." +msgstr "Plugin byl úspěšně nainstalován." + +#: inc/vendors/classes/class-imagify-partner.php:532 +msgid "Sorry, you are not allowed to install plugins on this site." +msgstr "Nemáte dostatečné oprávnění pro instalaci pluginů na tomto webu." + +#: inc/vendors/classes/class-imagify-partner.php:533 +msgid "Sorry, you are not allowed to do that." +msgstr "Pro tuto akci nemáte dostatečné oprávnění." + +#: inc/vendors/classes/class-imagify-partner.php:534 +msgid "Plugin install failed." +msgstr "Instalace pluginu selhala." + +#: inc/vendors/classes/class-imagify-partner.php:535 +msgid "Go back" +msgstr "Zpět" + +#: views/deactivation-intent/form.php:21 +msgid "Return" +msgstr "Návrat" + +#: views/deactivation-intent/form.php:22 +msgid "WP Rocket feedback" +msgstr "Zpětná vazba WP Rocket" + +#: views/deactivation-intent/form.php:24 +msgid "Close" +msgstr "Zavřít" + +#: views/deactivation-intent/form.php:28 +msgid "May we have a little info about why you are deactivating?" +msgstr "" +"Mohli byste nám sdělit pár informací o důvodu deaktivace našeho pluginu?" + +#: views/deactivation-intent/form.php:35 +#, php-format +msgid "%1$sIt is a temporary deactivation.%2$s I am just debugging an issue." +msgstr "%1$sJedná se o dočasnou deaktivaci.%2$s Snažím se jen najít problém." + +#: views/deactivation-intent/form.php:44 +#, php-format +msgid "The plugin %1$sbroke my layout%2$s or some functionality." +msgstr "Plugin %1$srozhodil vzhled webu%2$s nebo některé jeho funkce." + +#: views/deactivation-intent/form.php:53 +#, php-format +msgid "My PageSpeed or GTMetrix %1$sscore did not improve.%2$s" +msgstr "Moje PageSpeed nebo GTMetrix %1$sskóre se nezlepšila.%2$s" + +#: views/deactivation-intent/form.php:59 +msgid "I did not notice a difference in loading time." +msgstr "Nezaznamenal(a) jsem rozdíl v rychlosti načítání." + +#: views/deactivation-intent/form.php:66 +#, php-format +msgid "The plugin is %1$stoo complicated to configure.%2$s" +msgstr "Nastavení pluginu je %1$spříliš složité.%2$s" + +#: views/deactivation-intent/form.php:72 +msgid "My host already has its own caching system." +msgstr "Můj webhosting už má své vlastní cachovací řešení." + +#: views/deactivation-intent/form.php:74 +msgid "What is the name of your web host?" +msgstr "Jaký je název vašeho webhostingu?" + +#: views/deactivation-intent/form.php:79 +msgid "Other" +msgstr "Jiný důvod" + +#: views/deactivation-intent/form.php:81 +msgid "" +"Let us know why you are deactivating WP Rocket so we can improve the plugin" +msgstr "" +"Vysvětlete nám, proč WP Rocket deaktivujete? Zpětnou vazbu využijeme pro " +"zlepšení pluginu. Mluvíme anglicky, francouzsky, italsky a německy." + +#: views/deactivation-intent/form.php:89 +msgid "The plugin broke my layout or some functionality" +msgstr "Plugin rozbil vzhled webu, nebo něco přestalo fungovat." + +#: views/deactivation-intent/form.php:90 +msgid "" +"This type of issue can usually be fixed by deactivating some options in WP " +"Rocket." +msgstr "" +"Tento problém se dá většinou opravit vypnutím některých nastavení ve WP " +"Rocket." + +#: views/deactivation-intent/form.php:91 +msgid "" +"Click \"Apply Safe Mode\" to quickly disable LazyLoad, File Optimization, " +"Embeds and CDN options. Then check your site to see if the issue has " +"resolved." +msgstr "" +"Klikněte na tlačítko „Aktivovat bezpečný režim“ pro rychlou deaktivaci " +"LazyLoad, optimalizace souborů, vkládání externího obsahu a CDN. Poté " +"zkontrolujte, zda se váš problém nevyřešil." + +#: views/deactivation-intent/form.php:93 +msgid "Apply safe mode" +msgstr "Aktivovat bezpečný režim" + +#: views/deactivation-intent/form.php:96 +msgid "Safe mode applied." +msgstr "Bezpečný režim byl aktivován." + +#: views/deactivation-intent/form.php:97 +msgid "Review your site in a private/logged out browser window." +msgstr "" +"Zkontrolujte svůj web v anonymním okně / prohlížeči, kde nejste přihlášeni." + +#: views/deactivation-intent/form.php:102 +#, php-format +msgid "" +"Is the issue fixed? Now you can reactivate options one at a time to " +"determine which one caused the problem. %1$sMore info%2$s" +msgstr "" +"Byl problém vyřešen? Nyní můžete znovu aktivovat jednu možnost po druhé, " +"abyste zjistili, která z nich problém způsobila. %1$sVíce informací%2$s" + +#: views/deactivation-intent/form.php:107 +msgid "My PageSpeed or GT Metrix score did not improve" +msgstr "Moje PageSpeed nebo GT Metrix skóre se nezlepšilo" + +#: views/deactivation-intent/form.php:108 +msgid "" +"WP Rocket makes your site faster. The PageSpeed grade or GTMetrix score are " +"not indicators of speed. Neither your real visitors, nor Google will ever " +"see your website’s “grade”. Speed is the only metric that matters for SEO " +"and conversions." +msgstr "" +"WP Rocket zrychluje váš web. Skóre na PageSpeed ​ani skóre na GTMetrix " +"nejsou ukazatelem rychlosti. Vaši skuteční návštěvníci, ani Google nikdy " +"neuvidí „hodnocení“ vašeho webu. Jediná metrika, která má význam pro SEO a " +"konverze, je rychlost." + +#: views/deactivation-intent/form.php:109 +msgid "Yoast, the expert on all things related to SEO for WordPress states:" +msgstr "" +"Yoast, odborník na všechny věci související se SEO pro WordPress uvádí:" + +#: views/deactivation-intent/form.php:110 +msgid "" +"[Google] just looks at how fast your website loads for users, so you don’t " +"have to obsess over that specific score. You have to make sure your website " +"is as fast as you can get it." +msgstr "" +"[Google] sleduje jedině jak rychle se uživatelům váš web načítá, proto " +"nebuďte posedlí určitým skórem. Musíte se ujistit, že je váš web tak rychlý," +" jak jen to jde." + +#: views/deactivation-intent/form.php:116 +#, php-format +msgid "" +"How to measure the load time of your site: %1$shttps://wp-rocket.me/blog" +"/correctly-measure-websites-page-load-time/%2$s" +msgstr "" +"Jak měřit dobu načítání webu: %1$shttps://wp-rocket.me/blog/correctly-" +"measure-websites-page-load-time/%2$s" + +#: views/deactivation-intent/form.php:122 +#, php-format +msgid "" +"Why you should not be chasing a PageSpeed score: %1$shttps://wp-" +"rocket.me/blog/the-truth-about-google-pagespeed-insights/%2$s" +msgstr "" +"Proč byste se neměli honit za skórem z PageSpeed: %1$shttps://wp-" +"rocket.me/blog/the-truth-about-google-pagespeed-insights/%2$s" + +#: views/deactivation-intent/form.php:127 +msgid "I did not notice a difference in loading time" +msgstr "Nevšiml/a jsem si rozdílu v rychlosti načítání webu" + +#: views/deactivation-intent/form.php:128 +msgid "" +"Make sure you look at your site while logged out to see the fast, cached " +"pages!" +msgstr "" +"Ujistěte se, že se na svůj web díváte, když jste odhlášeni, abyste viděli " +"rychlé, cachované stránky!" + +#: views/deactivation-intent/form.php:132 +#, php-format +msgid "" +"The best way to see the improvement WP Rocket provides is to perform speed " +"tests. Follow this guide to correctly measure the load time of your website:" +" %1$shttps://wp-rocket.me/blog/correctly-measure-websites-page-load-" +"time/%2$s" +msgstr "" +"Nejlepší způsob, jak vidět zlepšení způsobené pluginem WP Rocket, je provést" +" testy rychlosti. Postupujte podle tohoto průvodce pro správné měření doby " +"načtení webu: %1$shttps://wp-rocket.me/blog/correctly-measure-websites-page-" +"load-time/%2$s" + +#: views/deactivation-intent/form.php:137 +msgid "The plugin is too complicated to configure" +msgstr "Plugin má příliš složité nastavení" + +#: views/deactivation-intent/form.php:138 +msgid "We are sorry to hear you are finding it difficult to use WP Rocket." +msgstr "Mrzí nás, že je pro vás používání WP Rocket tak složité." + +#: views/deactivation-intent/form.php:139 +#, php-format +msgid "" +"WP Rocket is the only caching plugin that provides 80% of best practices in " +"speed optimization, by default. That means you do not have to do anything " +"besides activate WP Rocket and your site will already be faster!" +msgstr "" +"WP Rocket je jediný plugin pro vytváření mezipaměti, který ve výchozím " +"nastavení poskytuje 80% doporučených postupů pro optimalizaci rychlosti. " +"Takže už pouhá aktivace pluginu zrychlí váš web!" + +#: views/deactivation-intent/form.php:140 +msgid "" +"The additional options are not required for a fast site, they are for fine-" +"tuning." +msgstr "" +"Správa dalšího nastavení není pro rychlý web tak nutná, je dobrá jen pro " +"vyladění posledních detailů." + +#: views/deactivation-intent/form.php:144 +#, php-format +msgid "" +"To see the benefit WP Rocket is already providing, measure the speed of your" +" site using a tool like Pingdom: %1$shttps://wp-rocket.me/blog/correctly-" +"measure-websites-page-load-time/%2$s" +msgstr "" +"Chcete-li vidět výsledek, které Vám již WP Rocket nabízí, změřte si rychlost" +" webu např. pomocí nástroje Pingdom: %1$shttps://wp-rocket.me/blog" +"/correctly-measure-websites-page-load-time/%2$s" + +#: views/deactivation-intent/form.php:151 +msgid "Send & Deactivate" +msgstr "Odeslat a deaktivovat" + +#: views/deactivation-intent/form.php:152 +msgid "Cancel" +msgstr "Zrušit" + +#: views/deactivation-intent/form.php:154 +msgid "Skip & Deactivate" +msgstr "Přeskočit a deaktivovat" + +#: views/metabox/cpcss/container.php:19 +msgid "Critical Path CSS" +msgstr "Cesta ke kritickému CSS" + +#: views/metabox/cpcss/generate.php:23 +#, php-format +msgid "Generate specific Critical Path CSS for this post. %1$sMore info%2$s" +msgstr "" +"Vygeneruje konkrétní cesty kritického CSS pro tento příspěvek. %1$sVíce " +"informací%2$s" + +#: views/metabox/cpcss/generate.php:33 +#, php-format +msgid "This post uses specific Critical Path CSS. %1$sMore info%2$s" +msgstr "" +"Tento příspěvek používá konkrétní cesty kritického CSS. %1$sVíce " +"informací%2$s" + +#: views/metabox/cpcss/generate.php:56 +msgid "Revert back to the default CPCSS" +msgstr "Vrátit se zpět k výchozímu CPCSS" + +#: views/settings/fields/cache-lifespan.php:26 +msgid "Clear cache after" +msgstr "Vyčistit mezipaměť po" + +#: views/settings/fields/cnames.php:49 views/settings/fields/cnames.php:81 +#: views/settings/fields/cnames.php:111 +msgid "CSS & JavaScript" +msgstr "CSS a JavaScript" + +#: views/settings/fields/cnames.php:50 views/settings/fields/cnames.php:82 +#: views/settings/fields/cnames.php:112 +msgid "JavaScript" +msgstr "JavaScript" + +#: views/settings/fields/cnames.php:51 views/settings/fields/cnames.php:83 +#: views/settings/fields/cnames.php:113 +msgid "CSS" +msgstr "CSS" + +#: views/settings/fields/import-form.php:29 +msgid "Import settings" +msgstr "Import nastavení" + +#: views/settings/fields/one-click-addon.php:40 +#: views/settings/fields/rocket-addon.php:31 +#: views/settings/fields/sliding-checkbox.php:25 views/settings/page.php:55 +msgctxt "Active state of checkbox" +msgid "On" +msgstr "Zap" + +#: views/settings/fields/one-click-addon.php:41 +#: views/settings/fields/rocket-addon.php:32 +#: views/settings/fields/sliding-checkbox.php:26 views/settings/page.php:56 +msgctxt "Inactive state of checkbox" +msgid "Off" +msgstr "Vyp" + +#: views/settings/fields/one-click-addon.php:42 +#: views/settings/fields/rocket-addon.php:33 +msgid "Add-on status" +msgstr "Stav rozšíření" + +#: views/settings/fields/rocket-addon.php:56 +msgid "Modify options" +msgstr "Upravit nastavení" + +#: views/settings/fields/rocket-cdn.php:29 +#: views/settings/fields/rocket-cdn.php:41 +msgid "CDN CNAME" +msgstr "CDN CNAME" + +#: views/settings/fields/rocket-cdn.php:62 +#, php-format +msgid "Purges RocketCDN cached resources for your website. %s" +msgstr "Vyčistí prostředky mezipaměti RocketCDN pro váš web. %s" + +#: views/settings/fields/rocket-cdn.php:63 +#: views/settings/page-sections/cloudflare.php:36 +#: views/settings/page-sections/sucuri.php:37 +msgid "Learn more" +msgstr "Více informací" + +#: views/settings/fields/rocket-cdn.php:72 +msgid "Clear all RocketCDN cache files" +msgstr "Vymazat všechny soubory mezipaměti RocketCDN" + +#: views/settings/page-sections/cloudflare.php:27 +msgid "Cloudflare Cache" +msgstr "Cloudflare mezipaměť" + +#: views/settings/page-sections/cloudflare.php:35 +#: views/settings/page-sections/sucuri.php:36 +#, php-format +msgid "Purges cached resources for your website. %s" +msgstr "Vyprázdní zdroje mezipaměti pro váš web. %s" + +#: views/settings/page-sections/cloudflare.php:36 +msgid "https://support.cloudflare.com/hc/en-us/articles/200169246" +msgstr "https://support.cloudflare.com/hc/en-us/articles/200169246" + +#: views/settings/page-sections/cloudflare.php:45 +msgid "Clear all Cloudflare cache files" +msgstr "Vymzata veškeré soubory Cloudflare mezipaměti" + +#: views/settings/page-sections/dashboard.php:38 +msgid "Congratulations!" +msgstr "Gratulujeme!" + +#: views/settings/page-sections/dashboard.php:40 +msgid "WP Rocket is now activated and already working for you." +msgstr "WP Rocket je nyní aktivní a již zahájilo proces optimalizace." + +#: views/settings/page-sections/dashboard.php:42 +msgid "Your website should be loading faster now!" +msgstr "Nyní by se váš web měl načítat rychleji!" + +#: views/settings/page-sections/dashboard.php:44 +#, php-format +msgid "" +"To guarantee fast websites, WP Rocket applies 80% of web performance best " +"practices." +msgstr "" +"Pro zajištění rychlého webu, WP Rocket aplikuje 80% nejčastěji používaných " +"nastavení." + +#: views/settings/page-sections/dashboard.php:44 +msgid "" +"We also enable options that provide immediate benefits to your website." +msgstr "" +"Dále jsou také aktivována nastavení s okamžitými výhodami pro váš web." + +#: views/settings/page-sections/dashboard.php:45 +msgid "Continue to the options to further optimize your site!" +msgstr "Pokračujte na nastavení pro další optimalizaci webu!" + +#: views/settings/page-sections/dashboard.php:55 +msgid "My Account" +msgstr "Účet" + +#: views/settings/page-sections/dashboard.php:61 +msgid "Refresh info" +msgstr "Aktualizovat" + +#: views/settings/page-sections/dashboard.php:75 +msgid "Expiration Date" +msgstr "Datum vypršení platnosti" + +#: views/settings/page-sections/dashboard.php:84 +msgid "View my account" +msgstr "Zobrazit můj účet" + +#: views/settings/page-sections/dashboard.php:111 +msgid "Quick Actions" +msgstr "Rychlé akce" + +#: views/settings/page-sections/dashboard.php:118 +msgid "Remove all cached files" +msgstr "Odstranit veškeré soubory mezipaměti" + +#: views/settings/page-sections/dashboard.php:138 +msgid "Start cache preloading" +msgstr "Zahájit předběžné načítání mezipaměti" + +#: views/settings/page-sections/dashboard.php:164 +msgid "Purge OPCache content" +msgstr "Vyprázdnit obsah OPcache" + +#: views/settings/page-sections/dashboard.php:170 +msgid "Purge OPCache" +msgstr "Vyprázdnit OPcache" + +#: views/settings/page-sections/dashboard.php:181 +#: views/settings/page-sections/dashboard.php:187 +msgid "Regenerate Critical CSS" +msgstr "Znovu vygenerovat kritické CSS" + +#: views/settings/page-sections/dashboard.php:204 +msgid "Frequently Asked Questions" +msgstr "Často kladené dotazy" + +#: views/settings/page-sections/dashboard.php:217 +msgid "Still cannot find a solution?" +msgstr "Pořád nemůžete najít řešení?" + +#: views/settings/page-sections/dashboard.php:218 +msgid "" +"Submit a ticket and get help from our friendly and knowledgeable Rocketeers." +msgstr "" +"Napište na technickou podporu, kde se vám budou věnovat naši odborníci." + +#: views/settings/page-sections/dashboard.php:226 +msgid "Ask support" +msgstr "Zeptat se podpory" + +#: views/settings/page-sections/database.php:25 +msgid "Backup your database before you run a cleanup!" +msgstr "Před spuštěním čištění databáze proveďte její zálohu!" + +#: views/settings/page-sections/database.php:26 +msgid "" +"Once a database optimization has been performed, there is no way to undo it." +msgstr "" +"Jakmile provedete optimalizaci databáze, neexistuje žádný způsob, jak " +"provedené změny vrátit zpět." + +#: views/settings/page-sections/database.php:28 +msgid "Save Changes and Optimize" +msgstr "Uložit změny a optimalizovat" + +#: views/settings/page-sections/imagify.php:21 +#, php-format +msgid "" +"%1$sWP ROCKET%2$s created %3$sIMAGIFY%4$s %1$sfor best-in-class image " +"optimization.%2$s" +msgstr "" +"%1$sWP ROCKET%2$s vytvořilo plugin %3$sIMAGIFY%4$s %1$spro nejlepší možnou " +"optimalizaci obrázků.%2$s" + +#: views/settings/page-sections/imagify.php:24 +msgid "" +"Compress image to make your website faster, all while maintaining image " +"quality." +msgstr "Zrychlete svůj web zmenšením obrázků bez ztráty jejich kvality." + +#: views/settings/page-sections/imagify.php:25 +msgid "More on Imagify:" +msgstr "Více o Imagify:" + +#: views/settings/page-sections/imagify.php:27 +msgid "Imagify Plugin Page" +msgstr "Stránka v adresáři pluginů" + +#: views/settings/page-sections/imagify.php:28 +msgid "Imagify Website" +msgstr "Web Imagify" + +#: views/settings/page-sections/imagify.php:29 +msgid "Review of Image Compression Plugins" +msgstr "Porovnání kompresních pluginů" + +#: views/settings/page-sections/imagify.php:38 +msgid "Install Imagify" +msgstr "Instalovat Imagify" + +#: views/settings/page-sections/license.php:22 +msgid "WP Rocket was not able to automatically validate your license." +msgstr "WP Rocket se nepodařilo automaticky ověřit vaši licenci." + +#: views/settings/page-sections/license.php:29 +#, php-format +msgid "Follow this %1$s, or contact %2$s to get the engine started." +msgstr "" +"Postupujte podle tohoto %1$s nebo se obraťte na %2$s, abyste nastartovali " +"motor." + +#: views/settings/page-sections/license.php:32 +#, php-format +msgid "%1$s%2$s%3$stutorial%4$s" +msgstr "%1$s%2$s%3$snávod%4$s" + +#: views/settings/page-sections/license.php:34 +msgid "" +"https://docs.wp-rocket.me/article/100-resolving-problems-with-license-" +"validation/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://docs.wp-rocket.me/article/100-resolving-problems-with-license-" +"validation/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: views/settings/page-sections/license.php:40 +#, php-format +msgid "%1$s%2$s%3$ssupport%4$s" +msgstr "%1$s%2$s%3$stechnická podpora%4$s" + +#: views/settings/page-sections/sucuri.php:46 +msgid "Clear all Sucuri cache files" +msgstr "Vzmazat veškeré soubory mezipaměti Sucuri" + +#: views/settings/page-sections/tools.php:20 +#, php-format +msgid "Files size: %1$s. Number of entries: %2$s." +msgstr "Velikost souboru: %1$s. Počet záznamů: %2$s." + +#: views/settings/page-sections/tools.php:23 +#, php-format +msgid "%1$sDownload the file%2$s." +msgstr "%1$sStáhnout soubor%2$s." + +#: views/settings/page-sections/tools.php:26 +#, php-format +msgid "%1$sDelete the file%2$s." +msgstr "%1$sOdstranit soubor%2$s." + +#: views/settings/page-sections/tools.php:37 +msgid "Export settings" +msgstr "Export nastavení" + +#: views/settings/page-sections/tools.php:38 +msgid "Download a backup file of your settings" +msgstr "Stáhněte si soubor se zálohou nastavení" + +#: views/settings/page-sections/tools.php:46 +msgid "Download settings" +msgstr "Stáhnout nastavení" + +#: views/settings/page-sections/tools.php:60 +msgid "Rollback" +msgstr "Návrat k předchozí verzi" + +#: views/settings/page-sections/tools.php:64 +#, php-format +msgid "Has version %s caused an issue on your website?" +msgstr "Způsobila vám verze %s nějaké potíže?" + +#: views/settings/page-sections/tools.php:69 +#, php-format +msgid "" +"You can rollback to the previous major version here.%sThen send us a support" +" request." +msgstr "" +"Můžete se vrátit zpět na předchozí hlavní verzi zde.%sPoté kontaktujte naší " +"podporu." + +#: views/settings/page-sections/tools.php:80 +#, php-format +msgid "Reinstall version %s" +msgstr "Přeinstalovat na verzi %s" + +#: views/settings/page-sections/tools.php:97 +msgid "Debug mode" +msgstr "Režim ladění" + +#: views/settings/page-sections/tools.php:102 +msgid "Create a debug log file." +msgstr "Vytvoření souboru záznamu ladění." + +#: views/settings/page-sections/tutorials.php:13 +#: views/settings/partials/getting-started.php:18 +msgid "Getting Started" +msgstr "Začínáme" + +#: views/settings/page-sections/tutorials.php:15 +msgid "Getting Started with WP Rocket" +msgstr "Začínáme s WP Rocket" + +#: views/settings/page-sections/tutorials.php:16 +#: views/settings/partials/getting-started.php:12 +msgid "Finding the Best Settings for Your Site" +msgstr "Hledání nejlepšího nastavení pro váš web" + +#: views/settings/page-sections/tutorials.php:17 +#: views/settings/partials/getting-started.php:13 +msgid "How to Check if WP Rocket is Caching Your Site" +msgstr "Jak zjistit jestli WP Rocket cachuje váš web" + +#: views/settings/page-sections/tutorials.php:18 +#: views/settings/partials/getting-started.php:14 +msgid "How to Measure the Speed of Your Site" +msgstr "Jak měřit rychlost vašeho webu" + +#: views/settings/page-sections/tutorials.php:24 +msgid "Troubleshooting Display Issues with File Optimization" +msgstr "Řešení potíží se zobrazováním obsahu při optimalizaci souborů" + +#: views/settings/page-sections/tutorials.php:25 +msgid "How to Find the Right JavaScript to Exclude" +msgstr "Jak najít ten pravý JavaScript pro vyloučení" + +#: views/settings/page-sections/tutorials.php:26 +msgid "How External Content Slows Your Site" +msgstr "Jak externí obsah zpomaluje váš web" + +#: views/settings/page-sections/tutorials.php:32 +msgid "How Preloading Works" +msgstr "Jak funguje předběžné načítání" + +#: views/settings/page-sections/tutorials.php:38 +msgid "Set Up the Cloudflare Add-on" +msgstr "Nastavení rozšíření pro Cloudflare" + +#: views/settings/page.php:16 +msgid "WP Rocket Settings" +msgstr "WP Rocket nastavení" + +#: views/settings/page.php:30 +#, php-format +msgid "version %s" +msgstr "verze %s" + +#: views/settings/page.php:57 +msgid "Show Sidebar" +msgstr "Zobrazit postranní panel" + +#: views/settings/page.php:76 +msgid "Thanks for choosing to participate in the WP Rocket beta program!" +msgstr "Děkujeme Vám za účast ve WP Rocket beta programu!" + +#: views/settings/page.php:77 +msgid "" +"A beta version is usually one that has new features and improvements, but we" +" want to test it a little more before full launch." +msgstr "" +"Beta verze je většinou, vydání, které obsahuje nové funkce a vylepšení, " +"které ještě potřebujeme trochu otestovat, než je vydáme pro všechny." + +#: views/settings/page.php:78 +msgid "" +"We’d love it if you took our beta versions for a ride, but please keep in " +"mind that it might be less stable than our other releases. Don’t worry, you " +"can switch back to a full release version at any time." +msgstr "" +"Budeme rádi pokud se zúčastníte testování beta verzí, ale nezapomeňte, že " +"tyto verze mohou být méně stabilní, než naše ostatní vydání. Nebojte, " +"kdykoliv se však můžete vrátit zpět k oficiální verzi našeho pluginu." + +#: views/settings/page.php:79 +msgid "" +"Your mission: please send all feedback about our beta versions, including " +"bug reports, to support@wp-rocket.me" +msgstr "" +"Vaše mise: posílejte nám prosím veškerou zpětnou vazbu ohledně beta verzí, i" +" hlášení nalezených chyb na adresu support@wp-rocket.me" + +#: views/settings/page.php:81 +msgid "If you don’t want to join the beta program, simply close this window." +msgstr "" +"Pokud se nechcete připojit k beta testování, jednoduše zavřete toto okno." + +#: views/settings/page.php:83 +msgid "Activate Rocket Tester" +msgstr "Aktivovat testování" + +#: views/settings/page.php:94 +msgid "" +"Below is a detailed view of all data WP Rocket will collect if " +"granted permission." +msgstr "" +"Níže je podrobný seznam všech dat, která bude v případě udělení " +"souhlasu WP Rocket shromažďovat." + +#: views/settings/page.php:97 +msgid "" +"WP Rocket will never transmit any domain names or email addresses (except " +"for license validation), IP addresses, or third-party API keys." +msgstr "" +"WP Rocket nikdy nebude posílat názvy domén nebo emailové adresy (kromě " +"ověření licence), IP adresy nebo API klíče třetích stran." + +#: views/settings/page.php:99 +msgid "Activate Rocket analytics" +msgstr "Aktivovat shromažďování dat" + +#: views/settings/partials/documentation.php:15 +msgid "It is a great starting point to fix some of the most common issues." +msgstr "Ideální první krok pro řešení nejčastějších problémů." + +#: views/settings/partials/documentation.php:22 +msgid "Read the documentation" +msgstr "Přečíst dokumentaci" + +#: views/settings/partials/getting-started.php:11 +msgid "What WP Rocket Does For You By Default" +msgstr "Co dělá WP Rocket ve výchozím nastavení" + +#: views/settings/partials/sidebar.php:12 +msgid "How to correctly measure your website’s loading time" +msgstr "Jak správně měřit rychlost načítání webu" + +#: views/settings/partials/sidebar.php:14 +msgid "Check our tutorial and learn how to measure the speed of your site." +msgstr "Podívejte se na návody a naučte se měřit rychlost vašeho webu." + +#: views/settings/partials/sidebar.php:19 +msgid "" +"Learn how to use best practices to correctly measure your site's " +"performance." +msgstr "Zjistěte nejvhodnější správný způsob měření výkonu webu." + +#: views/settings/partials/sidebar.php:20 +msgid "" +"https://wp-rocket.me/blog/correctly-measure-websites-page-load-" +"time/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://wp-rocket.me/blog/correctly-measure-websites-page-load-" +"time/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: views/settings/partials/sidebar.php:20 +msgid "Read our guide" +msgstr "Zobrazit návod" + +#: views/settings/partials/sidebar.php:23 +msgid "Why Google PageSpeed grade should not matter" +msgstr "Proč byste neměli Google PageSpeed přikládat takovou váhu" + +#: views/settings/partials/sidebar.php:24 +msgid "" +"https://wp-rocket.me/blog/the-truth-about-google-pagespeed-" +"insights/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://wp-rocket.me/blog/the-truth-about-google-pagespeed-" +"insights/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: views/settings/partials/sidebar.php:24 +msgid "Read more" +msgstr "Více informací" + +#: views/settings/partials/sidebar.php:29 +msgid "You have not activated logged-in user cache." +msgstr "Mezipaměť pro přihlášené uživatele není aktivní." + +#: views/settings/partials/sidebar.php:30 +msgid "" +"Use a private browser to check your website's speed and visual appearance." +msgstr "" +"Pro zjištění rychlosti a vizuálních změn webu použijte anonymní okno " +"prohlížeče." + +#: views/settings/rocketcdn/cta-big.php:27 +#, php-format +msgid "Valid until %s only!" +msgstr "Platí jen do %s!" + +#: views/settings/rocketcdn/cta-big.php:36 +msgid "Speed up your website thanks to:" +msgstr "Zrychlete web díky:" + +#: views/settings/rocketcdn/cta-big.php:42 +#, php-format +msgid "" +"High performance Content Delivery Network (CDN) with %1$sunlimited " +"bandwith%2$s" +msgstr "" +"Vysoce výkonná síť pro doručování obsahu (CDN) s %1$sneomezeným datovým " +"přenosem%2$s" + +#: views/settings/rocketcdn/cta-big.php:48 +#, php-format +msgid "" +"Easy configuration: the %1$sbest CDN settings%2$s are automatically applied" +msgstr "" +"Snadná konfigurace: Automaticky se použije %1$snejvhodnější nastavení " +"CDN%2$s." + +#: views/settings/rocketcdn/cta-big.php:54 +#, php-format +msgid "" +"WP Rocket integration: the CDN option is %1$sautomatically configured%2$s in" +" our plugin" +msgstr "" +"Integrace WP Rocket: Možnost CDN je %1$sautomaticky nakonfigurovaná%2$s v " +"našem pluginu" + +#: views/settings/rocketcdn/cta-big.php:69 +#, php-format +msgid "%s / month" +msgstr "%s / měsíc" + +#: views/settings/rocketcdn/cta-big.php:74 +msgid "Get Started" +msgstr "Začínáme" + +#: views/settings/rocketcdn/cta-big.php:80 +msgid "Learn more about RocketCDN" +msgstr "Další informace o RocketCDN" + +#: views/settings/rocketcdn/cta-big.php:82 +msgid "Reduce this banner" +msgstr "Zmenšit tento banner" + +#: views/settings/rocketcdn/cta-big.php:88 +#, php-format +msgid "" +"* $%1$s/month for 12 months then $%2$s/month. You can cancel your " +"subscription at any time." +msgstr "" +"* $%1$s/měsíc po dobu 12 měsíců a poté $%2$s/měsíc. Předplatné můžete " +"kdykoliv zrušit." + +#: views/settings/rocketcdn/cta-small.php:17 +msgid "" +"Speed up your website with RocketCDN, WP Rocket’s Content Delivery Network." +msgstr "" +"Zrychlete svůj web s RocketCDN, vlastní Content Delivery Network od WP " +"Rocket." + +#: views/settings/rocketcdn/cta-small.php:20 +#: views/settings/rocketcdn/promote-notice.php:13 +msgid "Learn More" +msgstr "Více informací" + +#: views/settings/rocketcdn/dashboard-status.php:23 +msgid "RocketCDN is unavailable on local domains and staging sites." +msgstr "" +"RocketCDN není k dispozici lokální domény ani pro testovací prostředí." + +#: views/settings/rocketcdn/dashboard-status.php:32 +msgid "Get RocketCDN" +msgstr "Získejte RocketCDN" + +#: views/settings/rocketcdn/promote-notice.php:11 +msgid "New!" +msgstr "Nové!" + +#: views/settings/rocketcdn/promote-notice.php:12 +msgid "" +"Speed up your website with RocketCDN, WP Rocket’s Content Delivery Network!" +msgstr "" +"Zrychlete svůj web s RocketCDN, vlastní Content Delivery Network od WP " +"Rocket!" + +#: views/settings/sections/addons-container.php:24 +#: views/settings/sections/fields-container.php:28 +msgid "Need Help?" +msgstr "Potřebujete pomoc?" diff --git a/wp-content/plugins/wp-rocket/languages/rocket-de_DE.mo b/wp-content/plugins/wp-rocket/languages/rocket-de_DE.mo new file mode 100644 index 0000000000000000000000000000000000000000..c0e94a25afe4208ca9cccf3c969878b8e2df6780 GIT binary patch literal 52849 zcmeI52bf(~b?=YC*haR&h1dogd@Nf=g1MvOCdPH7QL|MBjcnO8b7$_EnX9>T@Awvt zMnEt4UrHt>t!E#QU~Npcf-H~0+jyWkn%?u(P;8ZZM-0`CEJ{r%wC;3orq zIpDXzXLJ3e$0x}Lz!!nf2QOWjBy-?>;7)Mmsw5c#=fM-f4}+(HzX3iP{5??h|2lXs z`0wCj!Ly!_Bxiz`f@_!c+`J`B7QRJm^gRqlJiCxf2=C&1Hq_%FaN_)zf4tCQpu@J3MQ z&nCL6!SFQ02Y^{2A~r@K?ZJ22TK=w#NH;0=$It=YeN|zY3<{?}KW`KY*(L zzk#QLC$IH(o(JB=`2eWz9Rinup99sOe*}tN{{d7#E?ejHv;tH)>p@5)*#<(gNgHIS zk~_f^{A9qt3HT5ysd2v$ya3z^s=oU`_5brgNI7{MsPBCS)N_9Wias8Csek8u@J!A( zfTH)Cz~_K>f_m@F%aUX}I0#+~J_}TRKNj%!!Sgx)OYm~=e}i;Qaw#XOM+ROEz7Xtz zzXP5HuD`;^V;8ua^JjqSw-13DxBEcR=|4ZOG;F(YIc{Tv*{b5kgZ3Z>3_JF5@&komL1&U7Y2KAkHf@=2% zKu9_H0;vA|4^Z>G2jQlM}eOM_1&+6`p!Rtkb3g4tGu5t0~w0sO7MqZ8=Mz1 zSQ@{-2bproxex_YE!hT&J`V6d&BOb^SL!~Us(yJ7sPB9bRR4Ywd>r_daQ?5L+JE|W zKEEykPd+Y5ZU#4Uy*BLq`fgC;_7PC+_!Ow|{0ew3ct0q5{Q;=&oUwtv1)m6NTo%9^ zz!!qzdtU_g+?T;Q@Y~=naGZ}aRLO@y(cS+7_1*7){Fgj*#OM1K@NCYOq{!sYL4EIWo08-@@M2JWX$lnI>4Lidf^hxipz8YuP~-AW@H+5IpvLo2n~g;$ zj|27G^`P2)BdG7!LDA8(LD9)wpvLK!K|TNHpyta1;LE{Fws=4M7N~Z98C1Xi9jJDE z2UI!7Z*_bOxS#VipvLuGpy=s7@L}K=zz+CFpz5`iNx2++8mM+Z7d!yI0#vyVqw`J# z&jmHlE(D(lt_6Psd^-3>@Eiv3X7IzHo;#UF=>127I$sT{Kd%M{!0qAs0;uO+0zMpk zGpOg@1;WabdqLIz8{ic95QyeNa36RI_$pB2{3h@`@FSq;?~9=N=j-AA_rND`{>Yt4 z@|)lgxC;DNQ1gB{#B~CA9k?Fc0;)c@gR0NVK!zlFBdBrsYw%R?+u%vy4?*?gNuxf_ zPXv!Uj=2Y_p4UCu>$3yYe7`lE9|UPy@(S?r;8#FBf81^__Yt7_`|N-lLDjnjir(J{ zs@;DHJ`((Q@Gao7F)!ympx(b1yb-(~RDZ4C9wo59<`6Q_J!eh$?5zZzT)z8Aa@`~z?R{5JTobRJjj;j|cw)ya2qAm(-7&z!!iG z@DIRmfiD3+L8mv{c<_F31-R_z9M^#A|C>OK z`)%Mw;M>5Hz)yp!&lf=T^8?@$z!P5TbhQ?|nDZUsyc^D61FAmvflmg%2)-R${xUD; zQ=t0)Z$Z)D$jiMQw}GOAmw+q5JHZX$CqU8daj)?HyaHU$`ORP#yaUwup72WVm$N{X zzXCi7d=dC?@Kpid0BYX70~DRy2W|!b4SY1X;Z<(GJPkaB^D3x*Xo8~W7lWdQH-H1+ z`#{n6mqES%FW{-*X|HyC9H@CX5O6E_2+nKZ31A0Y1|9@21YZP-Ufu($e;)uZ08fR< zh%Q!x`rc+x->HFWPa8ZLdy6I~crQ50 z{cnIgnp|}!V*&m*Q2p|fyS)Cd0@eO^gKEd;LDAzEz(<1L1TO)90A9*>*S+5P;nW+v zU*83u!Tk?|j{-jpiZ1>POu?^(>&L&*+y7`Vh;f{`tkeVGr@Cy z0bT?yfUChj2KC&--sJP}6mS#gj|EQ$CqU6tFI;~msP=pbd>r`QaQ%$Cy~eeyD7ttvSOMPysz3e|)O&vqs$M??Rqp9; zalY^ba2@BHK)rte)O>s)2#F`31@-(*Z*@9qf%^W7LGh(KK=GG%1^gXwiu1n&#qTz~ z&ELBPR6FKC(ZNAb_fLJh%l8Ywb2%RYVV%h{LCwntK=sFW10MGdr;|s5U*P&$@UOw- zoj#s_18UxFf!I~vO`y)(U=kEd6a{d|cOW?nPPXK@aUCxic2cF3JdGB`r z;YFbO`Da1Z|E1t&@C~5q{a2vs`z=u8`UCJ{@U-^?{t23&08~9|@AYv!2wueb>p;=x zuYptG7r_g`_3v{!cp9kkr@_m?{os1={h;Xo0r08dS-0M>uS<;<^wL!6)ZL2u^#2tEw_7VCT~{VH>a>!;uAco+C;&d%i5& z=5lHrT*LW2U2hceIC6A+{XEb!SlfHgJ*+}{!MS^T5y>2XM%I!J3#gCnV;}^F#(Eh4}y1s z&j(Kh&-pDc=VDObzXtp!xCgw7dT#urxBvFv_Wt@5_$KZ@f@NB;G3t*G;4}aSE;02#?d2>1Vbgqwrr+^;- zRnL!sgWw;64KVqv>!q_`h0`~N^Us3PC%+4x&-D{O=YGJ)gWu--t>C%f9iMmm=lx)t z^Hsmc90BhJtKgG<-|6{Hpz8T20XO}DkK;$dv$*~VQ1tl6;ECW@!IQxUz|+9*fR6+p z`UQXPOi*-w9(Vyb7_N_k%Q(LUJO!+QG{ba=Rre=DljASA_%9q6@_Q}EdXAeo zp2eZRF%G&Wd2%>^9XP=8XS&JX-#OU--_HLp4d;ItaF}Q1pZFEd=fH<@%y2w|<8rS3 z9LIY(&g2;3IFaiNQF1xh0QGkQ$8DU)Kk-+lukpj#coBRA#|Dn8x&JC~f&=oizqJ8R z;ojee-%sK9N)G+KkVE65zb3~Hj{nB-@^GJ@_V=^=|K%Ky=K6mJU(4}x;h9%~|AX`R z_gKzviSOM+FqThvN(m>5=~nJRbZHP=8P4xPfDm;|Cly?&qErlvz`}N`7TRE2>XbZ>J`29|f?Hr%v zcp2AT8=m7d`E8Ca=i50x!tY-IZ{>)8J$~u({TpZWhk1l-T@(r|AUOgRuI=HJ#+`#E08wNagfzl#Ejcb~=aK8~N|nYV#gfERP< zugmdJj$1gc4cBf5r^D|zas8J$p2WH2P5gUC`0)*Jo_jCmcnHS|4*k8A<3@hp4*o8O z{tj~f9dHxJdAh*gXE}b+enA`D-^uU4<~Wz*#T@#}988`(mftVpxvd=6aGcHg4Pg9x z13#Y6`K!Tmz|G;_ap373?QpK=|C!?joPSRz{IwkH|NFSUz^^*TC3+{k_a%Pb$?yLO z4so2s@0Wrbz&C_vzRLOC{Jt)nb80@)O`PxHcRgJH8E_rP%eeM9j#D{K3-|tp-!J6% zY2aJIe*<3J|`OkA)!0~#{_kt;?zo$7Q<6Qe!evg9R4cD&ZxBmWw z;~tK0aXg7*H^)S{_d|Zah2u9l9^jbg7~t5={Sl5ghv)v7Yu9n;ZxzS0I1cKBzo&&~ zb_BfEFDFk3=O+XVm(4HpoN)5<;2qrG$gw6ow~K4P&hd`$%u~RdIX=(vI*v6Q`a3T? zf51l|JzgKcRBHWt^_kIcdKF4L@`c2{bL%_##+{sbp-gCqCW#AspYv9Ad*KmB3 z-_Hi$!ZF72ity|@a0|yD=zPW6i)!hLbr*Hg)?BwfTR)i926eIH7u(rwy?Q(Aq}6WP z$f})gI=Xc6~88 z(rRZWU1;^%>3lYxPPZs*x;3wIdUI3lYAy4dovh7^x}1Ni)lR4DQ`1>{Fx@t(r_yRW zOPj53S{-ljvAl!y!0~sClv!f4`3Jx`+GE=QqO$AQ1F0cak zWOSx=ZKGA?PJK38ap^^!fs~%xU+>hzO^sV8>vm~&NB6zJp>&wmb-JzDltG-WHtNlp zlqU2hx;?s?&jl)|rIVCrz1iqZQ8#KZ-)hg4hF`7QLXWqKqB?2*Nj`71wXr(Ekf^ZR zdRcoxAG0cn46~;Cp<@F{F+4Ppr4ziMvC=D@xokoslWy6xC!MRdtFu`bLi4ulXpPsQ z2tA(}RjYo~pgO4@ny+`K)A1Jn(^#p4{cE+sbnkT5RCm`}z47iqI+JB{_M{hkBScv$ zR3p&Nm=g1POY}Hh-Jgl@+m*a}RF#QC%O*rB6Rl zYUWuFrG3};F!)PdFB)Gwf7N*VnvK;qJw-=P%(Qw;#bzyCKC9_5(dsq3%Nd&~#*x7< z&l9m04U9-JpC}AWqrvP;YYe4zmkMiU;saLEnx<R4WM0KNr?QGNrmG!e3F8@K zQp<{2dJKK0<}BM$oyqd~tU4BDtDiHQpQ>0p>q4~oCyd20+D@wF%hZQNo4mS3fkWx8 zCbPVq&bF9gb2ghgPDEDyK$dzUFoqgEtwFWv=Yv7ox7EE#s5S z79+AHtFXuBU;~zCBorzUIqO7gb`Itz{%X_4IJ(!=hI+QTz}Se__nO%O=A@_`f@g#} zMVq%V_y~`*o6XL(+SNtfHdyrVwzN8%?t=@_uj9QbxXTou;pI+`NfPUS{aEqFBon>k zbsNbhGq`gt-46HDo7Y$OSH~vW^|@{`Ji3k9ypRkBuAOe1txnY^OBZ&xCT1YgYO~r{ z=+-AX#iR7Wc%6aTI5u|p#qu{|*^~7)Ef9xf4m*z-EZ#JZztCS=xVBVb8oJr)TxA^D z2?H^ni5L@yr;SCie6A!iU@$&Z%<>_BD5tReywerKfktfhj<*gRzpI%H*J|m;ox?je z*{>USZ#OgworKxJh3J}Et-=@delMO0_g9+}SuOvO?(Q)-$*@r-mDgCUo@_O0S$l}C zNrsv3e1JZhw6fslKAbD*>Vfonjyl7Xbynr9p`B?G!b2ro)WcTQl{_K-ivqI0UV~Cp zvK3{&VCb4?W1DuRH}BYPlYt(!Ta9XSs;5ubS+`wncIq%_oz7PmI_YSyJ(a1Fd?Fcc zmZ= z@u#kljw_KSlA0OBD=nmc!1*g8+S#Sizz`*J?ko=3RfWuJC|udR2%8>CRr}HiSfLXX zB8DBA8ho6dKs~6H9*10Y12cY{C2H^!q#0#15-v>**LOO zM?RYq@mh}b;xZH0h0Wsk$wsk3|9`r@j#f8UZHCh)n=UzKx}+wpJxb;LAq|q)1_W3~ zd1id1B_ljh9?|3K6VoEc^~gZg{crcj2r&)N{K7(XjNVi)ERK0Hvz z{#x$5W=yl+T0PsV2Nxu}2W*tnU2ck6zYL_CX2-J{N(6jDloBR0 zrlyo{6JX9MBrjEXC&Oql-N@Ak^eUM!omN8wNww%+{Xg)k($C|EU3YbAFW=Z)=j+zd zQJ*LZIDSi`HC}B*q8=*0_mmdmXWK~WQo1p8e*8Y|v#G@gLfN@>3&SqIIo@u~=Y~k? z97xi%s7l)Zh;(l{1YM+)!I5iykNQ|PP_i3KmsNfsFRA=7e_+l8<&w4W2Rgk8L_}w@ zCy8NC*A|x|oy}@;{8*Q9uD1K1K(#|O*Q<@b2Gmsb*4(VjDoL?LU2)j$C97Dr!WR|L zcWcR)+b&lnMVNX0Bhi0v$=B&rGsTmQg`VkCFTE<8y=GN{#{70j4%eHLE%Cnm>swl_DOl2G)R9hPAfa7_c6;RJ9rn!9tyJav zzGNcR+9j_OUZEcB0_|*aQ5#iHkxC~OTazlY5hV@Y+iMt~>0F=-O?nmirCC#&Rg)&z zbwAh0^r^s!^zdY_%@sZyoM=V&QLK#g2^fT=m?VX{*JR#LWzCElz?ITX(kWrr)}x2L zfWIMsw7PCCtd@-wCP?R1B z;wXh}N35%hBk3^vu=_fw5U7^)Nz{LjR8kl#9$e@oBe~y$pBTlMQvB%WlgUW%HEx=1 z?W^~nxw*CEbjrt|pLgW%?`^efqZ)0brv$cc$WP^T0lA|k4kjZl3~c__(_FM(;cUKX zBU(-6u|@GW-G(l49u&D`{#?#CgXDCjG;uuvpjGL&-g?K!lE6SUZzUu~vPNAam+o}x zi1#I?G?u2zwx*`CS_Rd&Xpj7QouwWQ#D=7yZTS-_ramdZq$@2lOk4eT&9+T89hhkJ zkXz29O_!5894@2n|E57xC% znVm9A%?y|b=4$aCEbs95O4h9SD`gsY&zg9KGWiVJVm`@ca}W3V+>*^E*P0Ux@t2(T zSh(~GCPK#?zsZ)sPeZ$G2)IZ{B5TYIL?@<6xg^M&J#9J+I!U%N=b7p#VU z8q`g$8sQS$h*-Ff#!~ZSTG10 zz2tL*?+nRA$$NFW+nwtStzJDpS8+`Q|HJC>Mr&$yUV%y|vl1%W!8n`BDk{CA(pO*G z>(1WVq4E>i)$?<=y7TX1U7XEo_1>&5df|tU-+#sTMKcMGL1c(4_S3S+s^;2ID5oal zIyfigJ1*E9&RT4ymJKGJBzcFj!svA^X74l(d}%Sx^XBEWFvI*>6T;?@l(lN6BE4St zQ8r-drwX}fkVYlrs^QYrzw0gy{X!ke3$bB zi#*Vndy?E^F)QzBbbI^c#9qf;XRkwLxn1!SiJDPGeIqs=AA%{pMO_1#1(O?>mbx$2 z7mg+MAuy?d=n9Uvk%`a&9toyqw8Ts~jgbRmW{h}K&ZPz|b{4zM-8wn%^K)!UiLcTSkQ z8+mXbt6hsyK5soLEeHi8`k18$D0C&u5(>t*EP0DYEvy*RwQ}4dTHz&jh%pY23znt6oV9GJ|{IfRHbA&Z~qthiqmh_D}z zDqXlr2NN$%&Uk)y2{ooO1eX};1)~u$#zG3xTLri3z~Dp(bWUJ|MhzD3Nw&M|F4+## zFFD*O%OfgBypf_yL2D4cd@C4@?F!PxPUnqkn$M*Gm3*K8V*!@i2Z_T1zwt<#?>)alpVas#NE87BE{; z7j~+8TTwQz<);GO*4T6-1Yf5M%hy5>s_&BgfWw&YU3t3wj?uk~Q7LlCPDFxx@rj1k z8z%HoLu@LQMkd7Td3=DEQQAAnE@>>NFH4%9YLo@31AkIfhsj6JGLB7{4HFK+?=@>J z8b3&3S;bw!9z0~Qc{WBA&9rZtx?9vTia3cH%~5OyOM`GLT0t2(9>%zh*IpCfUr3j? zn&w{i@VR@(U9FfvR-*^0E)(XK-tDftP^Dy-{5JR(az()|K-7MRA7+galo;#35^c)< ztF>ThE`9ZAyi+z`RPLg}B!kku9g+zX8AfcaFanlhqOtbr9!sXls}Vea1k>Qb-DH=> zEwMB!jJN*etwMkVQ|HG^l{doj*iv#_Nr^n_sOEh3Ff5``MF;IA5yk|+r(nE}ZL+HsdBNhkEJ@ol1c(z{~u zRNhM;Oz?7;iz=1BYIks=>Z$}=L>EK(nW$9q3uPnHWtK)w#G9vQ_fuJ_q;bKCs>qLN z6E;6&Im?Yv1btK>!xCSU`hB!_tk`rV_EW_qmI6vyZI#svy+xuca{ZDtie6&w;VJdr zDSRVA*})2uj^xZGa1^Qz+Zjlw`obgroxqsHCm07G0<{00qHqWZMW)0o)oUeIC1^^lEwHx;>Z^uLjF%2G?N@1*ZpNErC-B?oZm3yFti#nYO78Wz?I6%TGSrTun6t z(GvuAjk=KPI}^jwP$luIRXm&-(J8yaZpwXN>WcJiS=tOcq-IPy%zw$u-V8 zu{*2OgGCZ&5zp+#3uzfe{!5vbQ$0q-Pt})d1=@b$d{ay8gVBMl7ZisaEMDq+fy;yt zP{3kXl_6Za2C;{WLlc}BEgjcq3c60tSfa@WTDx0Zz6^MCBzkp5|1P!lV6Z_-}Gn+mul~CbLm9lCOO{1^{jL^31DQiee36$O0 zTtn*ZEv??39-P$;BcE*IKT3IE9-?)`Cxa0qeaNaLSw6&F@`##%yaDTKBvu}3T}39&co@>Uj?G{?hR`WekFnNFlqDAg+FHpq=b<;WcUn|Pb5N?a ztPmHoWj%Z1QIz&$%4)nAAAWR%BwT@ZY@R}R9as{PqL9c83Duh-B&m;0m~sB8`~bI;NXvy`X_y1_3E6%Ar<7t z!qaW)W$=1aT`esbL->tX+sRl^yx>%t6@)c|d!UqZ>tdJ}mw1+C4ke$0za;OAn?YWv zED{(%2!*;&0{Ic*pP^KjwV@i!q-1QSKDUUf=Wtzb46*8DOlKMe;yD)Eg{ir3Av!*n z(s6lBIr0m6N6Q{G@vOug$smbhAHb#=pNwE=;z}9n6v}jJW^l1`Ng}4Ir$^e7hB>8v zl;;ti5aKGxDJd}I*CDXw5+UtFK00QTDv}=I6QvAIrFBA?k*>rd%bgbLlt&~bWQ>$~ zf#*y)r(S5f=~a@F*BFUhg|~y>M4^^!VObdaIH^a(?v7AjO{F{u)uOd|Z|T;y5qg{q zTQ}&f&j+l3WMqnO>LFX4(P}eOf}|UW<3c-R3`i`h&x}_Q1+$pL(TB?X!R5R*eJCj5 z_NE21rDA6_#f(<2Nw3CSmp@PHeKF=twKiUN)gr9WSb}oodkgh(Dm%QlC^Tks!mw#e z!B#{2#eB?P6Q7HwuSkEKe7N8NR3a~;&75i)8B;l&70LtU>EL4dPeSmZpws4vA;=m=WX=WI)*kU^-JM3xG9iR<#N1QuRrGkNyNJ*269L9z#$ zQo0&zA$Xq=MyI5Hs~LJPa$HJCa7aZbaq#IIR^m~I`|vg0BxXD?6GOCtqJK)Gv>LzMhL#U2Ix7laFTB}Q2Uj;u zeSrzCVCw7T;1ECw%LA^cZBDOx69+CPBV<<2rZw&KMihdTgHN!P0<{Tpd~5(ACJ2#L zb||TJ(so=F;*=CiOQ+BpS+!X0PXA=S9#l*-7}Zjf1o5-hbm@0c3F`~hD6x4+&DXX4 zS5`|FpE|MVm~z!DAlrQaxjlX^rSez&EWO8%BsbkgHCal_iWk}F@7 z7`|qF;K(oW9iC8Bt5cuym7?Zmj4?JEhYA%;Fq6o^DG~!wh!t4FEy14l0HZv=F7MTF zmG3qS(O(v_N*5uZWjBm`c;9?0R*hZ}kaiuPZrn(K6uyPk}V&Q(*0wpkakE zWK%@+#!)9Had8x%p?WdA;yjzS4dn4t@m}ZIk?)$u;VXR!mA6_Aw-ZNs4W9GU%8qGg zCm~@eE@~=%=J}4LOOl_srZHW$LN5s4E2W^iZ0#s{pFwx;uv7|eL<6LcBlAe~!ok+U zx}fNk2t%!M34rl^vuJW#Cti?WUzKMiE}WCq5M9ed?Sup>O9=HSnz0%98#!#IR+*Aw z);^VuhCp&-Gmk7KH~NwvW5LqOg1wGL?wQz23lm?Kio9scIX{`+I2;w?!9;K5uB)iU z8-LNl*gi)tTE5e!zKrI}giYNM>K<1Wg(pahT+yYJ#mKh~vk=OrZ)7n3wAl!`YksiR zo>J{XWHAZ(LlJ}i8%Hsia(GvWs41bOm~rNfm!mQGs?|7mQsq+KCZ#Q#>&;bgtjq2* z;VhT#A|>)B`3eyLG45D=D7qMu;?gAH7^U`Oj*0 zi?j8VZmYne{t(5jU zn5H{3oUagq)dykHh*U+?hlHt^P;Zqq>s`9CJsgCBr6t~f``z~W`)_|U!BW6tqHx)4>I^i(;P*!5D@Is;l#qC51Irxnl6YJGxpFmzO7AK0+T;{W zLKNB0hQd;`&2-@7Ev+|y#b(B$7k6|WZIlU%~s7letf&6OFjV$y!D0Re? z313yEn=TCWv0y1%OrJ01Wivol5tyI{aE$^Av5vc=-?a)&xKq_bf&EqX&^-#8)SvKi zQIV84rYgHT*b33TS;qRYW^1FGBV$@^X~_9TT#l=-cqb1jkoq;%L=l0b zDeCCF$eIvX;wnS$n0lapIo@<=RRW^Px_MM2B~j{+J$`aKR96CTQ&YeZv2uZqlz zHYk9Yv6I3rVM-oxLz~&^K3G>vp&JJlgD%WfgW1=Cs zRB0t~{R7M;?7m?Sqec{otfbS#6?ryUf>-APm3q_%jW37tLgdv1Fg4Yh7lwlgW5Ed~ zjHPScV2=e&k8BQnc--13e|(WAAo)V-t^BK+(#G7Q1C?QKr=gU-PwJ(D9!=QHvs;Xc z&z(Ah=_rm;*sK;H$Yaa)2O<>nmXJvjR1xyM>p0hWV8a>i)oFKXT}V1any<_bVgH)Sm#rHIm6RE#aaoL zW_u}KVtzI2uV@TP!E`Y$a^Ra}lkxyMQ4^hj)e?&5(Wurqiv(fVkRc621AsBPH^Vrc zOP2VsYw(MgKB(QubgP3~4kn7Mf1d7b-D5=bA)|7IYQ4*C59kQ82 z&sT~C><@yICdcsY^%b)~D>-lVEb57TM*Y`*@A7q*R~S!e;_B;)TT7O--Kk8oTZERh zsWRwfB-T}O1L{9hjW7WQi^dE>ajT~%R%cC`y*lKQcUG@kvu5q(SFFF}@(P z-BMtK!X@?Q_)XQ$LON2PsDkmMO@7X#+ zMVSUHN3#%q0xwfM+?JdsWDJmG$t1%>X;*Bb?rcdgFL7hE$Zf~moLlmlJ*5pJLiR?k zbuRhBUagQ})oK!j;fhW&?~3ARyS0y1SCwtG%1!Vwq6|YN-hav9C4*NiBXfn=ePu^y zs$Q#X=uLGhds;)OC~5IJs%4|Q_Ea{~P=zZhBM9oDbln;jORQO6S$BE5cJ0vGODk(G zU9*MRd~SmRcGtX*=#=RTnAqs zv>2v7$6LOKO=S=3orcmamhPCYbX-`KuFR*w{QRJqIb>}eu<6Of&?2ttYAu!OtX{i* z?IoA2u4T85Y+Ai)*^X^HHWmFu;?S~_)x*-Wg3oynR|E2o{S*Ig-Nf}dBf zY^E1novvMV<+7VATYSx)x@WXS<-6(H!S#b{*K*6xE9?Y=u|c9yIyhKdy&+pbu-7_T zX*-nOdh3<9W>?;NU}){Yx(R;9A5C4j^46xE4_wNv=B>?EYc5{SPX;cTxH9WZ+=`9c zrZD}S?#?#CPrI5GSN*454PVM%@bjXcW7vEX)1%bCvW6Bcb%U8_xhs00s=fR=M}2DT zP}*rv9QBcPL+FkqSGAA&)FliKj{jQ;F=_?qQJ=k31cD2%^bji8L`K?=C}k*hQn?wb zJ<#>IPi4$QokQsYg(s*_eVbCEIuGh%*p$+E2RsJ53+ch9(Ax9OA_r3TKAF)X%b9L^ zkc8M?b4Js&u9PWacx^?~Yoz_9d$V!rQ_}ZX{573&4ee!krmLVan?bSAZi*+{Dmu;v z3~Uy|Yx_%j1AFAqz4EK*qKYK9am@0A_zrqLE1|izxWpzJDm6cJ?-XjsG+GZ!R+_yo z8Rj+Ao(;AWr8PpOS^<;oLm!vKOatqpSzMWzIfzcid*roS-|VmrB@c#*YgPFytE5ymlbP*YObThruWcxfcygK`}^p&_@YNzr=t+p(+KXflGq5Ijrk^qI5Kr48W zuWE}Nback2nQoHaoi!SCC}&h=7!B3kZ#ZSF@~STUqFcvKj+H6)w)7Fp((Q61$kf8ZL2o$TAict%wc*T$$s_QZ0u8xSSx zON<+gb3DUuxoBXn#2cPIh2~6VjgE4q^O4ZzTRiXIqG8lCOcB+`Dr+BAw>1xayn9f6 zCi}!mX|DebpE?W`4W5{8AG(JLO1cc~Y=F?V=$sCp()_c&k-dtSD(sUPs9y$g*3|VG zvNWuLd{G28nN4#?q(MGmJFAb25-Hke9{XsHQ_q>Oro{PziecLjDpjBAauPSroXQ%9 z?xmJifq2n~VFP3cFIhb%a%Aj|{M=LVDT{3jC{O`E6v&+UUxvKwOljp7Ta5;kjO)+`8gbb zW#@Fz2%;=-H0L_FZhW~vWP~4la*|p(NszXyuk%>br%I_;%k?0;1mdM%0~>*&X}l(@ zzKUq^>!I6cf(}peFR_bD`3sZb?Qg->CM54Bg%9{A%av8+*P;LVPvZ{1R zdocavBJ;=3%z~rZ#ILtOcw~T>^x$JF z6_#F=Ks3zPEY8t(x>>Ty6%I55)sCr)o=TLI<|0OMJ4zYp+D1cYgk_J0^QoLgAn#23 ztdvQUZmMS{ekflh2hEhQxeXgb8RxS2K0Sbs4|Rmxx_mPcZ8M6z>}qh0!SYbh*yZuh zw;Of3Oc#-wWK!;DC28I?5lUcPuUykj)C2~IoJ!lj6i>UxC*Nq)1(d5uOuA-w9#w3T zElWeBOJo2AyXb}nH4oud_$9=0rRtSjONh(TLei29q&jqjl%%fddt0QMXwgZ1YKCqa zNVlWqu@BBvXY$ZJL?Lw181D_GxYVJ0keH!);oBn5<~UiCM3^&JurzC{RH??KLTO~6 zm3z=feLK@mvV{p%i&`B0Ve`AP`09pOs5iAV@SU1wP)KkvzGHflv~@NL5f4LW=Bs3O znb>JYQk3n48%dl>Aw^AXS}Mg+zB<&QN9!4G~5y?G`;R7yU>7G*zy$H7+03B1WkKlGxVUi@#~M-B#PFTH%n4&&SWIa+}(8 zzr-Zw7v`ecQg2X^QmyCNxKwHpRze5Y8mk(cm7Vz9Xx^sE4wiaUhJ9O9rg^n@=&jVm z*z0yulA8xj#?B#X8O$l$7&U)9C@%dH&~&&FQd$se<8|%n;c*-d$HtMJOYfE{9iR|l z2_h%TU?-eFJ|lEm+kbl%ec=*z51f&Gx#$n4GkefDkNW5-HU+FB)ytMYy;6kfFnN*=cg z1htTr4Jb;mP)epEQe|O{XnFOFel7Q1(m#b3se{gQnu%|*%6RtAm7(OAHdwVuYV5lI zbyu<7EJOv6nw|uKETL)xyxI1%-VnB4wIMTYJF^o}&{GQH#% z%hHd3Jj(1o){3DR4yLj%v5LsMGfGpcZxEFz<;PS)?!wuGX9T& z`q^0JcSwlF?nw$K3}g;T2iFM|V`=zGTPKbci4~*`)S>l`A~I|)YU#pdshvEiX_n_5 zReTrKJ_SH}Ax@+nS;J-*sui9e$#re#I#X;WvFNOS5@D>%ia^`uMcKj8TA+It-Rsk- zm)O=d1S8Y9_l}4}nLC982=g)ben>hh#$!`eZvR=@A^%v><_%flft4cG_exj*PEZy5 zj=(`IxasU9?(`~7eiKe|GEo;j;SP!NaMiuFfE zAX`ovW{ufuRL#iUwbgdXSpYXYd_U0PCf*DgYH}C^yJxXWq3}1rGY>DK0o5=_v$!Ta}T8^t^>!Evkcm`0BoPQJFaW{nN zR?(I!nI8xyJnxl5cf%{pZ7`5-tvB#X9KKm>H)S3x9toD4WvvKQSUMDC9K4msM>in1xmu6wK*sChmdNdvZN?f>I@ z##&H=NkKB946QQ1RKA1B!Q3mMG-Um2IqvjRXoO{hj1v-T8(a!&*Hl)h%EDtT>X2cH zp;IGRD7j?bCg~m0@8sc-G?7xUH*3f{WwIj}#-cF!q#NC^%`8=IX3TU2>GCS!&N}(x&$4R{eu=?k8_!QyX%`+SIWcb(Pt^<{2?x?LlQ+-{Vhk7L3_hv<)Jr41=qNJo zU*abvRu(kSBJ*%jAlx67BSF3-)B@F7T5~zZzEniKq><%O@u0c|Z`6#L#pn;g^u@b| z98riOPB&>gMVHRgMH-#9oK2?AuzfUxi!IKswM;qdyeKy`oT#U`5zERT-K_;qjoCx@ z9D1vJ0U3iO=COA@_uQAdI7W`6R6Q}NuX?>`1_H#rc&5plcHsB4Mg!lIi3!DO_y>~A z$Gu33`dTLE@!M=4l474*Sc5k{O5Fr1&tok!N-M?4kiXC=-b;~eVsjxjxDBP|zpbWj zAe)X|F?MK*xAod=>O1S%{#%L@$@s(x(q&s){_&>L=o&$kh>JcG5%13G%p4n*&+3@n2M8m{bEF^B)Fp&*&xeg|_`)psiMc@4-zPGp;tNWcE33gYx zHj8in*ED(u|I#0m*SQM{DL7Fi}#-~wEz{PURu>;X%k!a*!sN#;*v{62Ffbv>CT3}Lr8sLs+PQa4Z06W*TBrwy%uT_p?ALSQ z>z<%F;C$TXXdtoDgfP_#suIcetK;@;C*%?kpvOv$TLgQ;foHv<+VM}phdOjvYKO5A zH}UoGs09ica}fwc5b~Om4G+|m^(kD>&OFo zv@;e}SL2qxm6#;5LB3AUaWt1`iAft(%c)7~{Bx{I(37qrMG8fI zRyy)ZpXs>H+ghNQK_`~Lq3oCb_gNG^ZHeCXG_ zw_`Cg{K!E?v4Y1B{h6y8N%=(jJjM!+I61_q%+@;jKqOQT7H{>v0f+Et84eQ|6I%}l zH<`00GCPzw*p2_!J-IZt+nRw0 zJsr(vWi*Rp??WVNJUyD^RIcxAhfMSzC!a8Q%~iO;PEr z{%gr69?P5#4LzZGYR*GW9s6+D)?8l!D4;R2MLNMse zo-1}grbaO*)^aR6i%zNd(X=`2VQd_t8J4Gyt2_Mb?tI|r+aK>e%!?E8#gY-mxQNG{y5l3WCr>dF&hdc$!cYf zlM(S4{}*UPPzM#plOJezw8!OOqnqK*tWSVFqIB?pRk&W>U70WkvxK}Yiq`xNOCCk7 zL4mQ{rm!b+(0!$2n!`@^kSc}$m_g0o4rvO|q&uUe-mulj6v>39zi1T=mbhmS9C{&r z64Gf|Mr~c!)c%MCs^$hq++H~tqR#XCBWu)! zrKD{Iwukx+Rs58`t1=;VkJu_hloe?S>F{KV~j%&$RL$_g{D6V!Nw7tQ7F zPqGq!VmeS@eBOGR(eLvZ(>arisy%|EN!Pd~p$L;Lua(*W@mYihnvwy(sV`DmwU#%!FVDQIXEXS56!>2jOPJ2W4rFUXR}%|>Y(Y+)5eMG??HYVtKZ zGZUHYQ_w-LB+>x9t(F*p*t`o!~#RC86IN$*GMtft^{N>#9WA|*T6=O z{7i_%;}{EBZl+Ae9M9jgf9i{MV!Wk?dD)7cwi7_uTgZ3xNqLEuQNXLnA^ha zCj6rjEv{)b)-f7A%E@;*9(;S|h{^3Nc@7{nSOHN4F-~ceaa3&%Q^l2ZwRTT#DciHb z&d(~77sU&`ZB$4p?IIew%kM7p(WGSD9c#(-LI5;-{$Ors}EcVuvv?C8++LbfqTvk~>B(?wh`} zS+CVmdR3cO=iQpGIXwub1i&Siv2tqP!^~}AW{?GDLN$hmPZ;nTiPyqoTv~| zvJ0W)ZZC9kQz^aTi|8$PJe$`!7adl)z8*4@Iiv?sBax-3!Swx@78J5E6bdUP6NRUv z&ZYTen@77cma@rCpI=HPhvW-@#W;)vp-@*cpc zZE>&bKt@rQYdn+Tf`OiChdGgr1kAU9Ca6pwE$nvxraL^y zLt6B>IRn z@$t3=AJPnEzpaqyRIZN<3}0QwXwkc2Nyr}LrVX*2GG+~wNuSwjo;R}|cKUjMhHDhl z{a|p8YZq$^+Tpth8&+#1wKCbrMZ-Hf$tY>n6c$`qVgFNF32j|n^aif?!jW-Iof4BV zF*!8j37O+UHP3>vEmJHsph|FEVdj=(UwFVHT4qh>?&^_}A}v-YhhJF=F&eI)mS(9Bx&LdJ>XhJM zv9({S8{?!{19XDWMdcC~Eg6b1T=fY3X8 z97(y3E9_C_mCuBKBT!jkN)4uCEmOu_o(6Z3y&a=VBBaP?D6~&N*j@${>MmiZa!a(b z2sGrTV!E<03RjgM*(3`>VYU7z-1TJn0I-Q6DP49+2GCgF_83N09ud!3ZO9`qf9a9T zC>e^ud6Um8`gvknfoo^8@|HBrTPJmgnnsNgBF$YIQeA(9V3deuX&L;1Ex4oqn%NR} zu*ge*{-dXrJ#`j)TJdjf5#uiw_?jA~ExA!-VN>{f#r&G|SjRlU{i?4fsIBN!m1F6_ zQHDKWi>pYa*ACu3-;`qNE)c(}7Ub#Y+NfJ4S_ctTMU_8%f0ejxw<#PU-7+lkI!x8r zN3LIo#OQ`7R4cwB*M?8JoowG94Yosk%5)Y?Hw*FcsGIw;*69?BX36|pT5I=&1sbW0 zqNLzheM3!li|^*G*5=QYo)%}W!SU#MEswIw!nZ0ulT@`%s$IP$`tnpVoUC~+nbM0E zjcg}p%nT-^LsQDLE-XJsQ67o;t|l9h2a-$dX4zxPhE=_Joz;LM#LUvn*99FqvSS+) zXozv<|85h&)9c8&q7cu?aApx-%%7%0v^L*!xZ*C9!{Z$I0~GdU6&C~;1snE8id~A2 zU+z9gd2z2mkF0Q3PN-EJf3=oU*`s`vjrZ%U>(J)ln6e?G-OcuW?nAOlH?<~pRMHLE z1=W+&F<9iZ*qs&)xDK;z8H<5%4U(z`@ESQY_%sbT4XPV;r3v!3Ovd%fdyU z{+$Q2Alw*p--_^xOZLoHOkpizfK#`y{={b?3yRQFrOx0><=^OL@>oE0Ongs?(zqyO zQS{rI>{U$y#4c^ZVapn9T=+NqFhFGXFqk+~EGI#eG3duDBnyMsa%T-2jh8cnpht8& znYk@y6YN(`24_XiZkSKBQi`{tr;wsP1QCdR#tjF8S22Fo*?~RB%$l=*y^+?~zZ@S6 z&vh-$ChRs}k0rO-BF9B}yyL`%+~&2#8J3%RL5kVDC-h56m0**isW_cAzuIF*ap=(K zo==Gsoc2)R@~!4N*CtkepWlRnkXJcnC3`JrHO#x51q9OUp;Bu{Mdg|{vi()^E%{`4 zhpL$8iIl54+4ja^P&w&LoXN#Z)n*qkH}!}K9@`j5-2Jfh=<;?Ws~_ZU;K#nB>ESui zF+Kao`Tml-ku!=u{PfibxTZ_f6Z6O~K#bcg=ssSZ=D zyfbbX({j9uR0s%R%MgzQw}{E&&eA@q_4^hA4=Sv)Ng0tpA7pGvdhMt zR>WAp!ekIHkeKOuOl;8?-aYx7QHOzGBaxaR1}0Wz!G^HT>qwfAO|ame3E@{+aK@R6 zT$jED?Wo}J66C+9iyhO``Lo+{39?N(TwDzlB6!ZK&~)Q|;2T?PZ5*Q(){A14?mLz{ zSp3A~+s2Wda3uz>@antvgYGPgzJrOu)*E39D-XuvfAj*ve&&*sIolYt3|(;-#a_Hm z#b@KjI+rLuiLb{C(Bb)^bD?IfrAQxDmpV(EO%r{LnCFSR$X zMMJh$zAN=nm$+PZ$)){ETyQZF*YUm3p(H4=60E=nvB>4vzI`d*&KbO|ubC)vpq&jL zy9_zDPp(~a>AH%~-5MLCmkr>`B%9;Jz0zy)`m)SEG<}I()90q={u7n!c+ltn@0PxJ zPwk(WZc$p>aD+Y5^L^3dUg&#E`=1|S&vVm;#om*Uu}JE(X`8lesj`QEtr8b, 2019 +# Ben_Mew , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: WP Rocket 3.3.7\n" +"Report-Msgid-Bugs-To: http://wp-rocket.me/\n" +"POT-Creation-Date: 2019-08-26 11:14-0400\n" +"PO-Revision-Date: 2019-08-26 15:14+0000\n" +"Last-Translator: Ben_Mew , 2019\n" +"Language-Team: German (Germany) (https://www.transifex.com/wp-media/teams/18133/de_DE/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: de_DE\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 1.8.11\n" +"X-Poedit-Basepath: ..\n" +"X-Poedit-KeywordsList: __;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c\n" +"X-Poedit-SearchPath-0: .\n" +"X-Poedit-SearchPathExcluded-0: assets\n" +"X-Poedit-SearchPathExcluded-1: src\n" +"X-Poedit-SearchPathExcluded-2: vendor\n" +"X-Poedit-SearchPathExcluded-3: node_modules\n" +"X-Poedit-SearchPathExcluded-4: tests\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Textdomain-Support: yes\n" + +#: inc/3rd-party/hosting/flywheel.php:15 inc/3rd-party/hosting/godaddy.php:15 +#: inc/3rd-party/hosting/o2switch.php:15 +#: inc/3rd-party/hosting/pressidium.php:15 inc/3rd-party/hosting/savvii.php:15 +#: inc/3rd-party/hosting/wp-serveur.php:24 +#: inc/3rd-party/hosting/wpengine.php:15 +#, php-format +msgid "" +"Your site is hosted on %s, we have enabled Varnish auto-purge for " +"compatibility." +msgstr "" +"Deine Website ist bei %s gehostet, wir haben daher das automatische Leeren " +"des serverseitigen Varnish-Caches aktiviert." + +#: inc/3rd-party/hosting/kinsta.php:150 +#, php-format +msgid "" +"Your installation seems to be missing core Kinsta files managing Cache " +"clearing and CDN, which will prevent your Kinsta installation and WP Rocket " +"from working correctly. Please get in touch with Kinsta support through your" +" %1$sMyKinsta%2$s account to resolve this issue." +msgstr "" +"In deiner Installation fehlen scheinbar Kinsta Core-Dateien für das Cache-" +"Löschen und CDN. Dies verhindert das reibungslose Zusammenspiel zwischen " +"Kinsta und WP Rocket. Kontaktiere bitte den Support bei Kinsta über dein " +"%1$sMyKinsta%2$s Konto, um dieses Problem zu lösen." + +#: inc/3rd-party/plugins/jetpack.php:86 +msgid "Jetpack XML Sitemaps" +msgstr "Jetpack XML Sitemaps" + +#: inc/3rd-party/plugins/jetpack.php:88 +msgid "Preload the sitemap from the Jetpack plugin" +msgstr "Cache füllen via Jetpack-Sitemap" + +#: inc/3rd-party/plugins/jetpack.php:96 +#: inc/3rd-party/plugins/seo/all-in-one-seo-pack.php:88 +#: inc/3rd-party/plugins/seo/rank-math-seo.php:34 +#: inc/3rd-party/plugins/seo/seopress.php:85 +#: inc/3rd-party/plugins/seo/the-seo-framework.php:123 +#: inc/3rd-party/plugins/seo/yoast-seo.php:86 +#, php-format +msgid "" +"We automatically detected the sitemap generated by the %s plugin. You can " +"check the option to preload it." +msgstr "" +"Offensichtlich existiert eine durch das Plugin %s generierte Sitemap. " +"Aktiviere diese Option, um den Cache damit zu füllen." + +#: inc/3rd-party/plugins/seo/all-in-one-seo-pack.php:86 +msgid "All in One SEO XML sitemap" +msgstr "All in One SEO XML Sitemap" + +#: inc/3rd-party/plugins/seo/rank-math-seo.php:32 +msgid "Rank Math XML sitemap" +msgstr "" + +#: inc/3rd-party/plugins/seo/seopress.php:83 +msgid "SEOPress XML sitemap" +msgstr "" + +#: inc/3rd-party/plugins/seo/the-seo-framework.php:121 +msgid "The SEO Framework XML sitemap" +msgstr "" + +#: inc/3rd-party/plugins/seo/yoast-seo.php:84 +msgid "Yoast SEO XML sitemap" +msgstr "Yoast SEO XML Sitemap" + +#: inc/admin/admin.php:13 inc/common/admin-bar.php:311 +#: inc/deprecated/deprecated.php:1789 +msgid "Support" +msgstr "Hilfe" + +#: inc/admin/admin.php:15 +msgid "Docs" +msgstr "Dokumentation" + +#: inc/admin/admin.php:17 inc/common/admin-bar.php:299 +msgid "FAQ" +msgstr "FAQ" + +#: inc/admin/admin.php:19 inc/common/admin-bar.php:46 +msgid "Settings" +msgstr "Einstellungen" + +#: inc/admin/admin.php:64 inc/admin/admin.php:86 inc/admin/admin.php:105 +msgid "Clear this cache" +msgstr "Aus dem Cache entfernen" + +#: inc/admin/admin.php:249 inc/admin/admin.php:264 +#: inc/classes/class-wp-rocket-requirements-check.php:204 +#: inc/classes/class-wp-rocket-requirements-check.php:214 +#, php-format +msgid "%s Update Rollback" +msgstr "%s Update zurückrollen" + +#: inc/admin/admin.php:290 +#, php-format +msgid "%1$sReturn to WP Rocket%2$s or %3$sgo to Plugins page%2$s" +msgstr "" + +#: inc/admin/admin.php:529 +msgid "Settings import failed: you do not have the permissions to do this." +msgstr "" +"Importieren der Einstellungen fehlgeschlagen: Dir fehlen die entsprechenden " +"Berechtigungen." + +#: inc/admin/admin.php:533 +msgid "Settings import failed: no file uploaded." +msgstr "Import fehlgeschlagen: keine Datei hochgeladen." + +#: inc/admin/admin.php:537 +msgid "Settings import failed: incorrect filename." +msgstr "Import fehlgeschlagen: nicht unterstützter Dateiname." + +#: inc/admin/admin.php:546 +msgid "Settings import failed: incorrect filetype." +msgstr "Import fehlgeschlagen: nicht unterstütztes Dateiformat." + +#: inc/admin/admin.php:554 +msgid "Settings import failed: " +msgstr "" + +#: inc/admin/admin.php:571 +msgid "Settings import failed: unexpected file content." +msgstr "" + +#: inc/admin/admin.php:592 +msgid "Settings imported and saved." +msgstr "Einstellungen importiert und gespeichert." + +#: inc/admin/options.php:101 +#, php-format +msgid "Cloudflare development mode error: %s" +msgstr "Fehler mit Cloudflare Development Mode: %s" + +#: inc/admin/options.php:107 +#, php-format +msgid "Cloudflare development mode %s" +msgstr "Cloudflare Development Mode: %s" + +#: inc/admin/options.php:124 +#, php-format +msgid "Cloudflare cache level error: %s" +msgstr "Fehler mit Cloudflare Cache Level: %s" + +#: inc/admin/options.php:128 +msgctxt "Cloudflare caching level" +msgid "Standard" +msgstr "Standard" + +#: inc/admin/options.php:134 +#, php-format +msgid "Cloudflare cache level set to %s" +msgstr "Cloudflare Cache Level: %s" + +#: inc/admin/options.php:146 +#, php-format +msgid "Cloudflare minification error: %s" +msgstr "Fehler mit Cloudflare Minification: %s" + +#: inc/admin/options.php:152 +#, php-format +msgid "Cloudflare minification %s" +msgstr "Cloudflare Minification: %s" + +#: inc/admin/options.php:164 +#, php-format +msgid "Cloudflare rocket loader error: %s" +msgstr "Fehler mit Cloudflare RocketLoader: %s" + +#: inc/admin/options.php:170 +#, php-format +msgid "Cloudflare rocket loader %s" +msgstr "Cloudflare RocketLoader: %s" + +#: inc/admin/options.php:182 +#, php-format +msgid "Cloudflare browser cache error: %s" +msgstr "Fehler mit CloudFlare Browser Cache: %s" + +#: inc/admin/options.php:188 +#, php-format +msgid "Cloudflare browser cache set to %s seconds" +msgstr "CloudFlare Browser Cache: %s Sekunden" + +#: inc/admin/options.php:241 inc/classes/admin/settings/class-page.php:692 +msgid "Excluded CSS Files" +msgstr "CSS-Ausnahmen" + +#: inc/admin/options.php:242 inc/classes/admin/settings/class-page.php:784 +msgid "Excluded Inline JavaScript" +msgstr "" + +#: inc/admin/options.php:243 inc/classes/admin/settings/class-page.php:802 +msgid "Excluded JavaScript Files" +msgstr "JavaScript-Ausnahmen" + +#: inc/admin/options.php:244 inc/classes/admin/settings/class-page.php:1128 +msgid "Never Cache URL(s)" +msgstr "Nie cachen (URLs)" + +#: inc/admin/options.php:245 inc/classes/admin/settings/class-page.php:1144 +msgid "Never Cache User Agent(s)" +msgstr "Nie cachen (User Agents)" + +#: inc/admin/options.php:246 inc/classes/admin/settings/class-page.php:1149 +msgid "Always Purge URL(s)" +msgstr "Immer löschen (URLs)" + +#: inc/admin/options.php:247 inc/classes/admin/settings/class-page.php:1443 +msgid "Exclude files from CDN" +msgstr "Dateien vom CDN ausschließen" + +#: inc/admin/options.php:265 +#, php-format +msgid "%1$s: %2$s." +msgstr "" + +#: inc/admin/options.php:275 +msgid "The following pattern is invalid and has been removed:" +msgid_plural "The following patterns are invalid and have been removed:" +msgstr[0] "" +msgstr[1] "" + +#: inc/admin/ui/meta-boxes.php:14 inc/admin/ui/notices.php:955 +#: inc/common/admin-bar.php:65 inc/common/admin-bar.php:118 +#: views/settings/page-sections/dashboard.php:115 +msgid "Clear cache" +msgstr "Cache leeren" + +#: inc/admin/ui/meta-boxes.php:36 +msgid "WP Rocket Options" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:66 +msgid "Never cache this page" +msgstr "Diese Seite niemals cachen" + +#: inc/admin/ui/meta-boxes.php:70 +msgid "Activate these options on this post:" +msgstr "Aktiviere diese Einstellungen für diesen Beitrag:" + +#: inc/admin/ui/meta-boxes.php:73 +msgid "LazyLoad for images" +msgstr "LazyLoad für Bilder" + +#: inc/admin/ui/meta-boxes.php:74 +msgid "LazyLoad for iframes/videos" +msgstr "LazyLoad für Iframes und Videos" + +#: inc/admin/ui/meta-boxes.php:75 +#: inc/classes/admin/settings/class-page.php:615 +msgid "Minify HTML" +msgstr "HTML minifizieren" + +#: inc/admin/ui/meta-boxes.php:76 +msgid "Minify/combine CSS" +msgstr "CSS minifizieren/zusammenfassen" + +#: inc/admin/ui/meta-boxes.php:77 +msgid "Minify/combine JS" +msgstr "JS minifizieren/zusammenfassen" + +#: inc/admin/ui/meta-boxes.php:78 +#: inc/classes/admin/settings/class-page.php:1413 +#: inc/classes/admin/settings/class-page.php:1424 +#: inc/deprecated/deprecated.php:1775 +msgid "CDN" +msgstr "CDN" + +#: inc/admin/ui/meta-boxes.php:79 +msgid "Optimize CSS Delivery" +msgstr "CSS-Darstellung optimieren" + +#: inc/admin/ui/meta-boxes.php:80 +msgid "Defer JS" +msgstr "Verzögertes JS (defer)" + +#: inc/admin/ui/meta-boxes.php:86 +#, php-format +msgid "Activate first the %s option." +msgstr "Aktiviere zuerst die Einstellung %s." + +#: inc/admin/ui/meta-boxes.php:102 +#, php-format +msgid "" +"%1$sNote:%2$s None of these options will be applied if this post has been " +"excluded from cache in the global cache settings." +msgstr "" + +#: inc/admin/ui/notices.php:24 inc/admin/ui/notices.php:34 +#, php-format +msgid "" +"%1$s has not been deactivated due to missing writing permissions.
      \n" +"Make %2$s writeable and retry deactivation, or force deactivation now:" +msgstr "" +"%1$s wurde nicht aktiviert wegen fehlender Schreibrechte.
      \n" +"Erteile Schreibrechte für %2$s und versuche die Deaktivierung erneut, oder forciere die Deaktivierung jetzt:" + +#: inc/admin/ui/notices.php:83 +#, php-format +msgid "" +"%s: One or more plugins have been enabled or disabled, " +"clear the cache if they affect the front end of your site." +msgstr "" +"%s: Plugin(s) aktiviert oder deaktiviert. Falls dies die " +"Darstellung deiner Website betrifft, lösche jetzt den Cache." + +#: inc/admin/ui/notices.php:196 +#, php-format +msgid "" +"%s: The following plugins are not compatible with this " +"plugin and may cause unexpected results:" +msgstr "" +"%s: Folgende Plugins sind mit diesem Plugin nicht " +"kompatibel und können unerwartete Ergebnisse hervorrufen:" + +#: inc/admin/ui/notices.php:202 +msgid "Deactivate" +msgstr "Deaktivieren" + +#: inc/admin/ui/notices.php:243 +msgid "" +"WP Rocket Footer JS is not an official add-on. It prevents some options in " +"WP Rocket from working correctly. Please deactivate it if you have problems." +msgstr "" + +#: inc/admin/ui/notices.php:283 +#, php-format +msgid "" +"Endurance Cache is currently enabled, which will conflict with WP Rocket " +"Cache. Please set the Endurance Cache cache level to Off (Level 0) on the " +"%1$sSettings > General%2$s page to prevent any issues." +msgstr "" + +#: inc/admin/ui/notices.php:305 +#, php-format +msgid "" +"%1$s: A custom permalink structure is required for the plugin to work " +"properly. %2$sGo to permalinks settings%3$s" +msgstr "" +"%1$s: Eine angepasste Permalink-Struktur ist erforderlich für die korrekte " +"Funktionsweise des Plugins. %2$sPermalink-Einstellungen aufrufen%3$s" + +#: inc/admin/ui/notices.php:442 +#, php-format +msgid "" +"%s could not modify the .htaccess file due to missing writing permissions." +msgstr "" + +#: inc/admin/ui/notices.php:448 inc/admin/ui/notices.php:1032 +#, php-format +msgid "Troubleshoot: %1$sHow to make system files writeable%2$s" +msgstr "" +"Fehlerbehebung:%1$sFehlende Schreibrechte für System-Dateien beheben%2$s" + +#: inc/admin/ui/notices.php:450 inc/admin/ui/notices.php:1034 +msgid "" +"https://docs.wp-rocket.me/article/626-how-to-make-system-files-htaccess-wp-" +"config-writeable/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://de.docs.wp-rocket.me/article/1042-fehlende-schreibrechte-fuer-" +"system-dateien-beheben-htaccess-wp-" +"configphp?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: inc/admin/ui/notices.php:456 +msgid "" +"Don’t worry, WP Rocket’s page caching and settings will still function " +"correctly." +msgstr "" + +#: inc/admin/ui/notices.php:456 +msgid "" +"For optimal performance, adding the following lines into your .htaccess is " +"recommended (not required):" +msgstr "" + +#: inc/admin/ui/notices.php:600 +#, php-format +msgid "" +"%1$s is good to go! %2$sTest your load time%4$s, or visit your " +"%3$ssettings%4$s." +msgstr "" +"%1$s ist fertig aktiviert! %2$sTeste deine Ladezeiten%4$s, oder schau dir " +"deine %3$sEinstellungen%4$s an." + +#: inc/admin/ui/notices.php:721 +msgid "" +"Would you allow WP Rocket to collect non-sensitive diagnostic data from this" +" website?" +msgstr "" +"Würdest du WP Rocket erlauben, anonymisierte technische Daten von dieser " +"Website zu sammeln?" + +#: inc/admin/ui/notices.php:722 +msgid "This would help us to improve WP Rocket for you in the future." +msgstr "" +"Das würde uns dabei unterstützen, WP Rocket in Zukunft weiter zu verbessern." + +#: inc/admin/ui/notices.php:728 +msgid "What info will we collect?" +msgstr "Um welche Art Daten geht es genau?" + +#: inc/admin/ui/notices.php:733 +msgid "" +"Below is a detailed view of all data WP Rocket will collect if granted " +"permission. WP Rocket will never transmit any domain names or email " +"addresses (except for license validation), IP addresses, or third-party API " +"keys." +msgstr "" +"Weiter unten findest du eine genaue Auflistung der Daten, die WP Rocket nach" +" Hause sendet, wenn du die Erlaubnis dazu erteilst. WP Rocket wird niemals " +"Domain-Namen, E-Mail-Adressen (außer für Lizenzüberprüfung), IP-Adressen, " +"oder API-Schlüssel von Drittanbietern senden." + +#: inc/admin/ui/notices.php:742 +msgid "Yes, allow" +msgstr "Ja, erlauben" + +#: inc/admin/ui/notices.php:745 +msgid "No, thanks" +msgstr "Nein, danke" + +#: inc/admin/ui/notices.php:783 +msgid "Thank you!" +msgstr "Danke!" + +#: inc/admin/ui/notices.php:788 +msgid "WP Rocket now collects these metrics from your website:" +msgstr "WP Rocket erhebt jetzt die folgenden Kennzahlen von deiner Website:" + +#: inc/admin/ui/notices.php:825 +#, php-format +msgid "%s: Cache cleared." +msgstr "%s: Cache gelöscht." + +#: inc/admin/ui/notices.php:830 +#, php-format +msgid "%s: Post cache cleared." +msgstr "%s: Cache für Beitrag/Seite gelöscht." + +#: inc/admin/ui/notices.php:835 +#, php-format +msgid "%s: Term cache cleared." +msgstr "%s: Cache für Begriff gelöscht." + +#: inc/admin/ui/notices.php:840 +#, php-format +msgid "%s: User cache cleared." +msgstr "%s: Cache für Benutzer/-in gelöscht." + +#: inc/admin/ui/notices.php:910 +msgid "" +"The following scheduled event failed to run. This may indicate the CRON " +"system is not running properly, which can prevent some WP Rocket features " +"from working as intended:" +msgid_plural "" +"The following scheduled events failed to run. This may indicate the CRON " +"system is not running properly, which can prevent some WP Rocket features " +"from working as intended:" +msgstr[0] "" +msgstr[1] "" + +#: inc/admin/ui/notices.php:919 +msgid "Please contact your host to check if CRON is working." +msgstr "" + +#: inc/admin/ui/notices.php:958 +msgid "Stop Preload" +msgstr "" + +#: inc/admin/ui/notices.php:976 +msgid "Force deactivation " +msgstr "Deaktivierung forcieren" + +#: inc/admin/ui/notices.php:989 +msgid "The following code should have been written to this file:" +msgstr "Folgender Code hätte in diese Datei geschrieben werden sollen:" + +#: inc/admin/ui/notices.php:999 views/settings/page-sections/dashboard.php:45 +msgid "Dismiss this notice." +msgstr "Diese Meldung ausblenden." + +#: inc/admin/ui/notices.php:1020 +#, php-format +msgid "%s cannot configure itself due to missing writing permissions." +msgstr "" +"%s kann sich wegen fehlender Schreibrechte nicht selbst konfigurieren." + +#: inc/admin/ui/notices.php:1026 +#, php-format +msgid "Affected file/folder: %s" +msgstr "Betroffene Dateien/Ordner: %s" + +#: inc/classes/admin/Database/class-optimization.php:41 +#: inc/classes/admin/settings/class-page.php:1289 +msgid "Revisions" +msgstr "Revisionen" + +#: inc/classes/admin/Database/class-optimization.php:42 +#: inc/classes/admin/settings/class-page.php:1299 +msgid "Auto Drafts" +msgstr "Automatisch erstellte Entwürfe" + +#: inc/classes/admin/Database/class-optimization.php:43 +#: inc/classes/admin/settings/class-page.php:1309 +msgid "Trashed Posts" +msgstr "Gelöschte Einträge (Papierkorb)" + +#: inc/classes/admin/Database/class-optimization.php:44 +#: inc/classes/admin/settings/class-page.php:1319 +msgid "Spam Comments" +msgstr "Spam-Kommentare" + +#: inc/classes/admin/Database/class-optimization.php:45 +#: inc/classes/admin/settings/class-page.php:1329 +msgid "Trashed Comments" +msgstr "Gelöschte Kommentare (Papierkorb)" + +#: inc/classes/admin/Database/class-optimization.php:46 +#: inc/classes/admin/settings/class-page.php:1339 +msgid "Expired transients" +msgstr "Abgelaufene Transients" + +#: inc/classes/admin/Database/class-optimization.php:47 +msgid "Transients" +msgstr "Transients" + +#: inc/classes/admin/Database/class-optimization.php:48 +msgid "Tables" +msgstr "Tabellen" + +#: inc/classes/admin/class-logs.php:124 +msgid "The debug file could not be deleted." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:212 +#: inc/classes/admin/settings/class-page.php:213 +msgid "Unavailable" +msgstr "Server nicht erreichbar" + +#: inc/classes/admin/settings/class-page.php:327 +#: inc/deprecated/deprecated.php:1791 +#: views/settings/page-sections/dashboard.php:72 +msgid "License" +msgstr "Lizenz" + +#: inc/classes/admin/settings/class-page.php:344 +msgid "API key" +msgstr "API-Schlüssel" + +#: inc/classes/admin/settings/class-page.php:359 +msgid "Email address" +msgstr "E-Mail-Adresse" + +#: inc/classes/admin/settings/class-page.php:388 +msgid "Dashboard" +msgstr "Dashboard" + +#: inc/classes/admin/settings/class-page.php:389 +msgid "Get help, account info" +msgstr "Konto-Übersicht, Hilfe" + +#: inc/classes/admin/settings/class-page.php:398 +msgid "My Status" +msgstr "Mein Status" + +#: inc/classes/admin/settings/class-page.php:408 views/settings/page.php:71 +msgid "Rocket Tester" +msgstr "Rocket Tester" + +#: inc/classes/admin/settings/class-page.php:409 +msgid "I am part of the WP Rocket Beta Testing Program." +msgstr "Ich nehme am WP Rocket Beta Test Programm teil." + +#: inc/classes/admin/settings/class-page.php:417 views/settings/page.php:89 +msgid "Rocket Analytics" +msgstr "Rocket Analytics" + +#: inc/classes/admin/settings/class-page.php:419 +#, php-format +msgid "" +"I agree to share anonymous data with the development team to help improve WP" +" Rocket. %1$sWhat info will we collect?%2$s" +msgstr "" +"Ich erlaube dem Entwicklungsteam von WP Rocket, anonyme Daten aus meiner " +"Installation zum Zweck der Produktverbesserung zu erheben. %1$sWelche Daten " +"werden gesammelt?%2$s" + +#: inc/classes/admin/settings/class-page.php:447 +msgid "Cache" +msgstr "Cache" + +#: inc/classes/admin/settings/class-page.php:448 +msgid "Basic cache options" +msgstr "Cache-Grundfunktionen" + +#: inc/classes/admin/settings/class-page.php:455 +msgid "Mobile Cache" +msgstr "Mobiler Cache" + +#: inc/classes/admin/settings/class-page.php:457 +msgid "Speed up your site for mobile visitors." +msgstr "Beschleunige deine Site auf mobilen Geräten." + +#: inc/classes/admin/settings/class-page.php:462 +msgid "" +"We detected you use a plugin that requires a separate cache for mobile, and " +"automatically enabled this option for compatibility." +msgstr "" +"Anscheinend nutzt du ein anderes Plugin, das einen separaten mobilen Cache " +"erfordert. Daher wurde diese Einstellung automatisch aktiviert." + +#: inc/classes/admin/settings/class-page.php:466 +msgid "User Cache" +msgstr "Personalisierter Cache" + +#: inc/classes/admin/settings/class-page.php:469 +#, php-format +msgid "" +"%1$sUser cache%2$s is great when you have user-specific or restricted " +"content on your website." +msgstr "" +"%1$sPersonalisierter Cache%2$s ist nützlich, wenn du personalisierte oder " +"eingeschränkte Inhalte zur Verfügung stellst." + +#: inc/classes/admin/settings/class-page.php:477 +msgid "Cache Lifespan" +msgstr "Cache-Dauer" + +#: inc/classes/admin/settings/class-page.php:480 +#, php-format +msgid "" +"Cache lifespan is the period of time after which all cache files are " +"removed.
      Enable %1$spreloading%2$s for the cache to be rebuilt " +"automatically after lifespan expiration." +msgstr "" +"Die Cache-Dauer ist die Zeit, nach der alle Cache-Dateien gelöscht " +"werden.
      Aktiviere %1$sCache füllen%2$s, um den Cache nach dem Löschen " +"automatisch neu zu generieren." + +#: inc/classes/admin/settings/class-page.php:494 +msgid "Enable caching for logged-in WordPress users" +msgstr "Aktiviere Caching für angemeldete WordPress-Benutzer/-innen" + +#: inc/classes/admin/settings/class-page.php:502 +msgid "Enable caching for mobile devices" +msgstr "Caching für mobile Geräte aktivieren" + +#: inc/classes/admin/settings/class-page.php:517 +msgid "Separate cache files for mobile devices" +msgstr "Separater Cache für mobile Geräte" + +#: inc/classes/admin/settings/class-page.php:519 +#, php-format +msgid "" +"%1$sMobile cache%2$s works safest with both options enabled. When in doubt, " +"keep both." +msgstr "" +"%1$sMobiler Cache%2$s funktioniert am sichersten mit beiden Einstellungen; " +"im Zweifelsfall aktiviere beide." + +#: inc/classes/admin/settings/class-page.php:535 +msgid "" +"Specify time after which the global cache is cleared
      (0 = unlimited )" +msgstr "" +"Zeitangabe, nach welcher der globale Cache gelöscht wird
      (0 = unbegrenzt)" + +#: inc/classes/admin/settings/class-page.php:537 +#, php-format +msgid "" +"Reduce lifespan to 10 hours or less if you notice issues that seem to appear" +" periodically. %1$sWhy?%2$s" +msgstr "" +"Reduziere auf 10 Stunden oder weniger, falls du Probleme bemerkst, die " +"periodisch aufzutreten scheinen. %1$sWarum?%2$s" + +#: inc/classes/admin/settings/class-page.php:543 +msgid "Minutes" +msgstr "Minuten" + +#: inc/classes/admin/settings/class-page.php:544 +msgid "Hours" +msgstr "Stunden" + +#: inc/classes/admin/settings/class-page.php:545 +msgid "Days" +msgstr "Tage" + +#: inc/classes/admin/settings/class-page.php:571 +msgid "File Optimization" +msgstr "Datei-Optimierung" + +#: inc/classes/admin/settings/class-page.php:572 +msgid "Optimize CSS & JS" +msgstr "CSS und JS optimieren" + +#: inc/classes/admin/settings/class-page.php:579 +msgid "Basic Settings" +msgstr "Grundfunktionen" + +#: inc/classes/admin/settings/class-page.php:586 +#: inc/classes/admin/settings/class-page.php:596 +#: inc/classes/admin/settings/class-page.php:606 +#, php-format +msgid "" +"%1$s Minification is currently activated in Autoptimize. If" +" you want to use %2$s’s minification, disable those options in Autoptimize." +msgstr "" +"%1$s Minifizierung ist momentan in Autoptimize aktiviert. " +"Wenn du die Minifizierung von %2$s nutzen möchtest, deaktiviere die " +"entsprechenden Einstellungen in Autoptimize." + +#: inc/classes/admin/settings/class-page.php:589 +msgid "CSS Files" +msgstr "CSS-Dateien" + +#: inc/classes/admin/settings/class-page.php:599 +msgid "JavaScript Files" +msgstr "JavaScript-Dateien" + +#: inc/classes/admin/settings/class-page.php:619 +msgid "Minifying HTML removes whitespace and comments to reduce the size." +msgstr "Entfernt Leerzeilen und Kommentare zur Reduzierung der Datei-Größe." + +#: inc/classes/admin/settings/class-page.php:630 +msgid "Combine Google Fonts files" +msgstr "Google-Schriften zusammenfassen" + +#: inc/classes/admin/settings/class-page.php:631 +msgid "Combining Google Fonts will reduce the number of HTTP requests." +msgstr "Reduziert die Anzahl externer HTTP-Anfragen." + +#: inc/classes/admin/settings/class-page.php:639 +msgid "Remove query strings from static resources" +msgstr "Query-Strings von statischen Ressourcen entfernen" + +#: inc/classes/admin/settings/class-page.php:641 +#, php-format +msgid "" +"Removes the version query string from static files (e.g. style.css?ver=1.0) " +"and encodes it into the filename instead (e.g. style-1.0.css). Can improve " +"your GTMetrix score. %1$sMore info%2$s" +msgstr "" +"Entfernt den Versions-Query-String von statischen Dateien (z.B. " +"style.css?ver=1.0) und kodiert ihn stattdessen in den Dateinamen (z.B. " +"style-1-0.css). Kann das GTmetrix-Ergebnis verbessern. %1$sMehr erfahren%2$s" + +#: inc/classes/admin/settings/class-page.php:649 +msgid "Minify CSS files" +msgstr "CSS minifizieren" + +#: inc/classes/admin/settings/class-page.php:650 +msgid "Minify CSS removes whitespace and comments to reduce the file size." +msgstr "Entfernt Leerzeilen und Kommentare zur Reduzierung der Datei-Größe." + +#: inc/classes/admin/settings/class-page.php:663 +#: inc/classes/admin/settings/class-page.php:685 +#: inc/classes/admin/settings/class-page.php:755 +#: inc/classes/admin/settings/class-page.php:777 +msgid "This could break things!" +msgstr "Dies könnte Probleme bereiten!" + +#: inc/classes/admin/settings/class-page.php:664 +#: inc/classes/admin/settings/class-page.php:686 +#: inc/classes/admin/settings/class-page.php:756 +#: inc/classes/admin/settings/class-page.php:778 +msgid "" +"If you notice any errors on your website after having activated this " +"setting, just deactivate it again, and your site will be back to normal." +msgstr "" +"Falls du nach der Aktivierung dieser Einstellung Unregelmäßigkeiten auf " +"deiner Website bemerken solltest, deaktiviere sie einfach wieder, und deine " +"Site wird wieder normal aussehen." + +#: inc/classes/admin/settings/class-page.php:665 +msgid "Activate minify CSS" +msgstr "Verstanden, aktiviere „CSS minifizieren“" + +#: inc/classes/admin/settings/class-page.php:670 +msgid "Combine CSS files (Enable Minify CSS files to select)" +msgstr "" +"CSS zusammenfassen („CSS minifizieren“ erforderlich zur " +"Aktivierung)" + +#: inc/classes/admin/settings/class-page.php:672 +#, php-format +msgid "" +"Combine CSS merges all your files into 1, reducing HTTP requests. Not " +"recommended if your site uses HTTP/2. %1$sMore info%2$s" +msgstr "" +"Verknüpft alle CSS-Dateien zu einer einzigen und reduziert so die Anzahl von" +" HTTP-Anfragen. Nicht empfohlen, wenn deine Site HTTP/2 nutzt. %1$sMehr " +"erfahren%2$s" + +#: inc/classes/admin/settings/class-page.php:687 +msgid "Activate combine CSS" +msgstr "Verstanden, aktiviere „CSS zusammenfassen“" + +#: inc/classes/admin/settings/class-page.php:693 +msgid "" +"Specify URLs of CSS files to be excluded from minification and concatenation" +" (one per line)." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:694 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*).css " +"wildcards to exclude all CSS files located at a specific path." +msgstr "" +"Der Domain-Teil der URL wird automatisch entfernt.
      Nutze den Platzhalter " +"(.*).css, um alle CSS-Dateien eines bestimmten Pfades anzusprechen." + +#: inc/classes/admin/settings/class-page.php:707 +msgid "Optimize CSS delivery" +msgstr "CSS-Darstellung optimieren" + +#: inc/classes/admin/settings/class-page.php:714 +#, php-format +msgctxt "WP Critical CSS compatibility" +msgid "" +"Optimize CSS Delivery is currently handled by the %1$s plugin. If you want " +"to use WP Rocket’s Optimize CSS Delivery option, disable the %1$s plugin." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:716 +#, php-format +msgid "" +"Optimize CSS delivery eliminates render-blocking CSS on your website for " +"faster perceived load time. %1$sMore info%2$s" +msgstr "" +"Entfernt rendering-blockierendes CSS, kann die wahrgenommene Ladezeit " +"verbessern. %1$sMehr erfahren%2$s" + +#: inc/classes/admin/settings/class-page.php:727 +msgid "Fallback critical CSS" +msgstr "Alternatives Kritisches CSS" + +#: inc/classes/admin/settings/class-page.php:732 +#, php-format +msgid "" +"Provides a fallback if auto-generated critical path CSS is incomplete. " +"%1$sMore info%2$s" +msgstr "" +"Für den Fall, dass das automatisch erstellte Kritische CSS unvollständig " +"ist. %1$sMehr erfahren%2$s" + +#: inc/classes/admin/settings/class-page.php:741 +msgid "Minify JavaScript files" +msgstr "JavaScript minifizieren" + +#: inc/classes/admin/settings/class-page.php:742 +msgid "" +"Minify JavaScript removes whitespace and comments to reduce the file size." +msgstr "Entfernt Leerzeilen und Kommentare zur Reduzierung der Datei-Größe." + +#: inc/classes/admin/settings/class-page.php:757 +msgid "Activate minify JavaScript" +msgstr "Verstanden, aktiviere „JavaScript minifizieren“" + +#: inc/classes/admin/settings/class-page.php:762 +msgid "" +"Combine JavaScript files (Enable Minify JavaScript files to select)" +msgstr "" +"JavaScript zusammenfassen („JavaScript minifizieren“ erforderlich zur " +"Aktivierung)" + +#: inc/classes/admin/settings/class-page.php:764 +#, php-format +msgid "" +"Combine JavaScript files combines your site’s internal, 3rd party and inline" +" JS reducing HTTP requests. Not recommended if your site uses HTTP/2. " +"%1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:779 +msgid "Activate combine JavaScript" +msgstr "Verstanden, aktiviere „JavaScript zusammenfassen“" + +#: inc/classes/admin/settings/class-page.php:786 +#, php-format +msgid "" +"Specify patterns of inline JavaScript to be excluded from concatenation (one" +" per line). %1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:803 +msgid "" +"Specify URLs of JavaScript files to be excluded from minification and " +"concatenation (one per line)." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:804 +msgid "" +"Internal: The domain part of the URL will be stripped " +"automatically. Use (.*).js wildcards to exclude all JS files located at a " +"specific path." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:806 +#, php-format +msgid "" +"3rd Party: Use either the full URL path or only the domain " +"name, to exclude external JS. %1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:822 +msgid "Load JavaScript deferred" +msgstr "JavaScript verzögert laden" + +#: inc/classes/admin/settings/class-page.php:824 +#, php-format +msgid "" +"Load JavaScript deferred eliminates render-blocking JS on your site and can " +"improve load time. %1$sMore info%2$s" +msgstr "" +"Entfernt rendering-blockierendes JavaScript, kann die Ladezeit verbessern. " +"%1$sMehr erfahren%2$s" + +#: inc/classes/admin/settings/class-page.php:835 +msgid "Safe Mode for jQuery (recommended)" +msgstr "Sicherer Modus für jQuery (empfohlen)" + +#: inc/classes/admin/settings/class-page.php:836 +msgid "" +"Safe mode for jQuery for deferred JS ensures support for inline jQuery " +"references from themes and plugins by loading jQuery at the top of the " +"document as a render-blocking script.
      Deactivating may result in " +"broken functionality, test thoroughly!" +msgstr "" +"Stellt sicher, dass jQuery am Anfang des Dokuments geladen wird. Dies " +"blockiert zwar das Rendering, unterstützt aber dafür inline jQuery-" +"Referenzen von Themes und Plugins.
      Deaktivierung wird bei den meisten" +" Themes Fehler verursachen, sorgfältig testen!" + +#: inc/classes/admin/settings/class-page.php:861 +msgid "Media" +msgstr "Medien" + +#: inc/classes/admin/settings/class-page.php:862 +msgid "LazyLoad, emojis, embeds" +msgstr "LazyLoad, Emoji, Embeds" + +#: inc/classes/admin/settings/class-page.php:869 +msgid "LazyLoad" +msgstr "LazyLoad" + +#: inc/classes/admin/settings/class-page.php:872 +#, php-format +msgid "" +"It can improve actual and perceived loading time as images, iframes, and " +"videos will be loaded only as they enter (or about to enter) the viewport " +"and reduces the number of HTTP requests. %1$sMore Info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:879 +#, php-format +msgid "" +"Lazyload is currently activated in Autoptimize. If you want" +" to use %1$s’s lazyload, disable this option in Autoptimize." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:882 +msgid "Emoji 👻" +msgstr "Emoji 👻" + +#: inc/classes/admin/settings/class-page.php:884 +msgid "" +"Use default emoji of visitor's browser instead of loading emoji from " +"WordPress.org" +msgstr "" +"Browser-eigene Standard-Emoji nutzen, anstatt Emoji von WordPress.org zu " +"laden." + +#: inc/classes/admin/settings/class-page.php:888 +msgid "Embeds" +msgstr "Embeds" + +#: inc/classes/admin/settings/class-page.php:890 +msgid "" +"Prevents others from embedding content from your site, prevents you from " +"embedding content from other (non-whitelisted) sites, and removes JavaScript" +" requests related to WordPress embeds" +msgstr "" +"Beschränkt das automatische Einbinden deiner WordPress-Inhalte durch Dritte," +" sowie fremder (nicht extra freigegebener) Inhalte durch dich und entfernt " +"die mit dem Einbinden verbundenen JavaScript-Abfragen." + +#: inc/classes/admin/settings/class-page.php:900 +msgid "Enable for images" +msgstr "Für Bilder aktivieren" + +#: inc/classes/admin/settings/class-page.php:911 +msgctxt "Avada" +msgid "" +"Lazyload for images is currently activated in Avada. If you want to use WP " +"Rocket’s LazyLoad, disable this option in Avada." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:919 +msgid "Enable for iframes and videos" +msgstr "Für iframes und Video aktivieren" + +#: inc/classes/admin/settings/class-page.php:934 +msgid "Replace YouTube iframe with preview image" +msgstr "YouTube iframe durch Vorschaubild ersetzen" + +#: inc/classes/admin/settings/class-page.php:935 +msgid "" +"This can significantly improve your loading time if you have a lot of " +"YouTube videos on a page." +msgstr "" +"Kann deine Ladezeit entscheidend verbessern, wenn du viele YouTube Videos " +"auf einer Seite einbettest." + +#: inc/classes/admin/settings/class-page.php:947 +msgid "Disable Emoji" +msgstr "Emoji deaktivieren" + +#: inc/classes/admin/settings/class-page.php:948 +msgid "Disable Emoji will reduce the number of external HTTP requests." +msgstr "Reduziert die Anzahl externer HTTP-Anfragen." + +#: inc/classes/admin/settings/class-page.php:956 +msgid "Disable WordPress embeds" +msgstr "WordPress-Embeds deaktivieren" + +#: inc/classes/admin/settings/class-page.php:978 +#: inc/classes/admin/settings/class-page.php:988 +#: inc/deprecated/deprecated.php:1778 +msgid "Preload" +msgstr "Cache füllen" + +#: inc/classes/admin/settings/class-page.php:979 +msgid "Generate cache files" +msgstr "Cache-Dateien generieren" + +#: inc/classes/admin/settings/class-page.php:991 +#, php-format +msgid "" +"When you enable preloading WP Rocket will generate the cache starting with " +"the links on your homepage followed by the sitemaps you specify. Preloading " +"is automatically triggered when you add or update content and can also be " +"manually triggered from the admin bar or from the %1$sWP Rocket " +"Dashboard%2$s." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:999 +msgid "Prefetch DNS Requests" +msgstr "DNS-Prefetch" + +#: inc/classes/admin/settings/class-page.php:1001 +msgid "" +"DNS prefetching can make external files load faster, especially on mobile " +"networks" +msgstr "" +"Kann das Laden externer Dateien beschleunigen, besonders über eine mobilen " +"Netzwerkverbindung." + +#: inc/classes/admin/settings/class-page.php:1015 +msgid "Activate Preloading" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1034 +msgid "Activate sitemap-based cache preloading" +msgstr "Sitemap-basiertes Füllen des Cache aktivieren" + +#: inc/classes/admin/settings/class-page.php:1053 +msgid "Sitemaps for preloading" +msgstr "Sitemaps für das Cache-Füllen" + +#: inc/classes/admin/settings/class-page.php:1057 +msgid "Specify XML sitemap(s) to be used for preloading" +msgstr "" +"Sitemap-Dateien (XML), die für das Füllen des Cache genutzt werden sollen" + +#: inc/classes/admin/settings/class-page.php:1067 +msgid "URLs to prefetch" +msgstr "Vorzeitig aufzulösende URLs" + +#: inc/classes/admin/settings/class-page.php:1068 +msgid "" +"Specify external hosts to be prefetched (no http:, one per " +"line)" +msgstr "" +"Vorzeitig aufzulösende externe Domains (kein http:, eine pro " +"Zeile)" + +#: inc/classes/admin/settings/class-page.php:1091 +msgid "Advanced Rules" +msgstr "Erweiterte Regeln" + +#: inc/classes/admin/settings/class-page.php:1092 +msgid "Fine-tune cache rules" +msgstr "Cache-Regeln abstimmen" + +#: inc/classes/admin/settings/class-page.php:1101 +msgid "" +"Sensitive pages like custom login/logout URLs should be excluded from cache." +msgstr "" +"Sensible Seiten, wie zum Beispiel eigene Login-/Logout-Seiten, sollten vom " +"Cache ausgeschlossen werden." + +#: inc/classes/admin/settings/class-page.php:1104 +msgctxt "plugin name" +msgid "WooCommerce" +msgstr "WooCommerce" + +#: inc/classes/admin/settings/class-page.php:1106 +msgctxt "plugin name" +msgid "Easy Digital Downloads" +msgstr "Easy Digital Downloads" + +#: inc/classes/admin/settings/class-page.php:1108 +msgctxt "plugin name" +msgid "iThemes Exchange" +msgstr "iThemes Exchange" + +#: inc/classes/admin/settings/class-page.php:1110 +msgctxt "plugin name" +msgid "Jigoshop" +msgstr "Jigoshop" + +#: inc/classes/admin/settings/class-page.php:1112 +msgctxt "plugin name" +msgid "WP-Shop" +msgstr "WP-Shop" + +#: inc/classes/admin/settings/class-page.php:1118 +#, php-format +msgid "" +"
      Cart, checkout and \"my account\" pages set in " +"%1$s%2$s%3$s will be detected and never cached by default." +msgstr "" +"
      Warenkorb-, Kassen- und „Mein Konto“-Seiten von " +"%1$s%2$s%3$s werden automatisch ermittelt und nie gecacht." + +#: inc/classes/admin/settings/class-page.php:1139 +msgid "Never Cache Cookies" +msgstr "Nie cachen (Cookies)" + +#: inc/classes/admin/settings/class-page.php:1158 +msgid "Cache Query String(s)" +msgstr "Cache für Query Strings" + +#: inc/classes/admin/settings/class-page.php:1161 +#, php-format +msgid "" +"%1$sCache for query strings%2$s enables you to force caching for specific " +"GET parameters." +msgstr "%1$sErstellt gesonderte Caches%2$s anhand bestimmter GET-Parameter." + +#: inc/classes/admin/settings/class-page.php:1175 +msgid "" +"Specify URLs of pages or posts that should never be cached (one per line)" +msgstr "" +"URLs von Seiten oder Beiträgen, die niemals gecacht werden sollen (eine pro " +"Zeile)" + +#: inc/classes/admin/settings/class-page.php:1176 +#: inc/classes/admin/settings/class-page.php:1204 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*) " +"wildcards to address multiple URLs under a given path." +msgstr "" +"Der Domain-Teil der URL wird automatisch entfernt.
      Nutze den Platzhalter " +"(.*), um alle URLs eines bestimmten Pfades anzusprechen." + +#: inc/classes/admin/settings/class-page.php:1185 +msgid "" +"Specify the IDs of cookies that, when set in the visitor's browser, should " +"prevent a page from getting cached (one per line)" +msgstr "" +"Cookie-IDs, die das Caching verhindern sollen, sobald sie im Browser gesetzt" +" sind (eine pro Zeile)" + +#: inc/classes/admin/settings/class-page.php:1193 +msgid "" +"Specify user agent strings that should never see cached pages (one per line)" +msgstr "" +"User Agent Strings, die niemals gecachte Seiten sehen sollten (einer pro " +"Zeile)" + +#: inc/classes/admin/settings/class-page.php:1194 +msgid "Use (.*) wildcards to detect parts of UA strings." +msgstr "Nutze den Platzhalter (.*), um Teile von UA Strings zu ermitteln." + +#: inc/classes/admin/settings/class-page.php:1203 +msgid "" +"Specify URLs you always want purged from cache whenever you update any post " +"or page (one per line)" +msgstr "" +"URLs, deren Cache immer mit gelöscht werden sollte, sobald andere Beiträge " +"oder Seiten aktualisiert werden (eine pro Zeile)" + +#: inc/classes/admin/settings/class-page.php:1212 +msgid "Specify query strings for caching (one per line)" +msgstr "Query Strings, die gecacht werden sollen (einer pro Zeile)" + +#: inc/classes/admin/settings/class-page.php:1240 +#: inc/deprecated/deprecated.php:1777 +msgid "Database" +msgstr "Datenbank" + +#: inc/classes/admin/settings/class-page.php:1241 +msgid "Optimize, reduce bloat" +msgstr "Aufräumen, optimieren" + +#: inc/classes/admin/settings/class-page.php:1250 +msgid "Post Cleanup" +msgstr "Beiträge/Seiten bereinigen" + +#: inc/classes/admin/settings/class-page.php:1252 +msgid "" +"Post revisions and drafts will be permanently deleted. Do not use this " +"option if you need to retain revisions or drafts." +msgstr "" +"Revisionen, Entwürfe und Papierkorb werden endgültig gelöscht. Nicht " +"aktivieren, wenn du Revisionen und Entwürfe noch benötigst!" + +#: inc/classes/admin/settings/class-page.php:1260 +msgid "Comments Cleanup" +msgstr "Kommentare bereinigen" + +#: inc/classes/admin/settings/class-page.php:1262 +msgid "Spam and trashed comments will be permanently deleted." +msgstr "Spam und Kommentare im Papierkorb werden endgültig gelöscht." + +#: inc/classes/admin/settings/class-page.php:1266 +msgid "Transients Cleanup" +msgstr "Transients bereinigen" + +#: inc/classes/admin/settings/class-page.php:1268 +msgid "" +"Transients are temporary options; they are safe to remove. They will be " +"automatically regenerated as your plugins require them." +msgstr "" +"Transients sind zeitlich begrenzte Optionen; sie können problemlos gelöscht " +"werden. Sobald deine Plugins sie benötigen, werden sie automatisch erneut " +"generiert." + +#: inc/classes/admin/settings/class-page.php:1272 +msgid "Database Cleanup" +msgstr "Datenbank bereinigen" + +#: inc/classes/admin/settings/class-page.php:1274 +msgid "Reduces overhead of database tables" +msgstr "Reduziert den Umfang von Datenbank-Tabellen." + +#: inc/classes/admin/settings/class-page.php:1278 +msgid "Automatic cleanup" +msgstr "Automatische Bereinigung" + +#: inc/classes/admin/settings/class-page.php:1291 +#, php-format +msgid "%s revision in your database." +msgid_plural "%s revisions in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1301 +#, php-format +msgid "%s draft in your database." +msgid_plural "%s drafts in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1311 +#, php-format +msgid "%s trashed post in your database." +msgid_plural "%s trashed posts in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1321 +#, php-format +msgid "%s spam comment in your database." +msgid_plural "%s spam comments in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1331 +#, php-format +msgid "%s trashed comment in your database." +msgid_plural "%s trashed comments in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1341 +#, php-format +msgid "%s expired transient in your database." +msgid_plural "%s expired transients in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1349 +msgid "All transients" +msgstr "Alle Transients" + +#: inc/classes/admin/settings/class-page.php:1351 +#, php-format +msgid "%s transient in your database." +msgid_plural "%s transients in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1359 +msgid "Optimize Tables" +msgstr "Tabellen optimieren" + +#: inc/classes/admin/settings/class-page.php:1361 +#, php-format +msgid "%s table to optimize in your database." +msgid_plural "%s tables to optimize in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1372 +msgid "Schedule Automatic Cleanup" +msgstr "Automatische Bereinigung terminieren" + +#: inc/classes/admin/settings/class-page.php:1384 +msgid "Frequency" +msgstr "Durchführung" + +#: inc/classes/admin/settings/class-page.php:1392 +msgid "Daily" +msgstr "täglich" + +#: inc/classes/admin/settings/class-page.php:1393 +msgid "Weekly" +msgstr "wöchentlich" + +#: inc/classes/admin/settings/class-page.php:1394 +msgid "Monthly" +msgstr "monatlich" + +#: inc/classes/admin/settings/class-page.php:1414 +msgid "Integrate your CDN" +msgstr "CDN integrieren" + +#: inc/classes/admin/settings/class-page.php:1426 +msgid "" +"All URLs of static files (CSS, JS, images) will be rewritten to the CNAME(s)" +" you provide." +msgstr "" +"Alle URLs statischer Dateien (CSS, JS, Bilder) werden auf den/die " +"eingetragenen CNAME(s) umgeschrieben." + +#: inc/classes/admin/settings/class-page.php:1428 +#, php-format +msgid "" +"Not required for services like Cloudflare and Sucuri. Please see our " +"available %1$sAdd-ons%2$s." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1469 +#, php-format +msgid "" +"%1$s%2$s Add-on%3$s is currently enabled. Configuration of the CDN settings " +"is not required for %2$s to work on your site." +msgid_plural "" +"%1$s%2$s Add-ons%3$s are currently enabled. Configuration of the CDN " +"settings is not required for %2$s to work on your site." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1484 +msgid "Enable Content Delivery Network" +msgstr "Content Delivery Network aktivieren" + +#: inc/classes/admin/settings/class-page.php:1493 +msgid "CDN CNAME(s)" +msgstr "CDN CNAME(s)" + +#: inc/classes/admin/settings/class-page.php:1494 +msgid "Specify the CNAME(s) below" +msgstr "CNAME(s) des CDNs hier eintragen" + +#: inc/classes/admin/settings/class-page.php:1501 +msgid "" +"Specify URL(s) of files that should not get served via CDN (one per line)." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1502 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*) " +"wildcards to exclude all files of a given file type located at a specific " +"path." +msgstr "" +"Der Domain-Teil der URL wird automatisch entfernt.
      Nutze den Platzhalter " +"(.*), um alle URLs eines bestimmten Pfades anzusprechen." + +#: inc/classes/admin/settings/class-page.php:1525 +#: inc/classes/admin/settings/class-page.php:1533 +msgid "Heartbeat" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1526 +msgid "Control WordPress Heartbeat API" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1534 +msgid "" +"Reducing or disabling the Heartbeat API’s activity can help save some of " +"your server’s resources." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1543 +msgid "Reduce or disable Heartbeat activity" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1544 +msgid "" +"Reducing activity will change Heartbeat frequency from one hit each minute " +"to one hit every 2 minutes." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1544 +msgid "" +"Disabling Heartbeat entirely may break plugins and themes using this API." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1558 +msgid "Do not limit" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1559 +msgid "Reduce activity" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1560 +msgid "Disable" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1568 +msgid "Control Heartbeat" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1577 +msgid "Behavior in backend" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1584 +msgid "Behavior in post editor" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1590 +msgid "Behavior in frontend" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1609 +msgid "Add-ons" +msgstr "Add-ons" + +#: inc/classes/admin/settings/class-page.php:1610 +msgid "Add more features" +msgstr "Erweiterungen aktivieren" + +#: inc/classes/admin/settings/class-page.php:1617 +msgid "One-click Rocket Add-ons" +msgstr "One-click Rocket Add-ons" + +#: inc/classes/admin/settings/class-page.php:1618 +msgid "" +"One-Click Add-ons are features extending available options without " +"configuration needed. Switch the option \"on\" to enable from this screen." +msgstr "" +"One-Click Add-ons erweitern den Funktionsumfang ohne weitere Konfiguration. " +"Aktiviere sie einfach, indem du den Schalter auf „An“ umlegst." + +#: inc/classes/admin/settings/class-page.php:1628 +msgid "Rocket Add-ons" +msgstr "Rocket Add-ons" + +#: inc/classes/admin/settings/class-page.php:1629 +msgid "Rocket Add-ons are complementary features extending available options." +msgstr "Rocket Add-ons erweitern den Funktionsumfang um zusätzliche Features." + +#: inc/classes/admin/settings/class-page.php:1642 +msgid "Google Tracking" +msgstr "Google Tracking" + +#: inc/classes/admin/settings/class-page.php:1648 +msgid "Improve browser caching for Google Analytics" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1650 +#, php-format +msgid "" +"WP Rocket will host these Google scripts locally on your server to help " +"satisfy the PageSpeed recommendation for Leverage browser " +"caching.
      %1$sLearn more%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1665 +msgid "Facebook Pixel" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1671 +msgid "Improve browser caching for Facebook Pixel" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1673 +#, php-format +msgid "" +"WP Rocket will host these Facebook Pixels locally on your server to help " +"satisfy the PageSpeed recommendation for Leverage browser " +"caching.
      %1$sLearn more%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1706 +msgid "Varnish" +msgstr "Varnish" + +#: inc/classes/admin/settings/class-page.php:1712 +msgid "If Varnish runs on your server, you must activate this add-on." +msgstr "" +"Du musst diese Einstellung aktivieren, wenn Varnish auf deinem Server aktiv " +"ist." + +#: inc/classes/admin/settings/class-page.php:1714 +#, php-format +msgid "" +"Varnish cache will be purged each time WP Rocket clears its cache to ensure " +"content is always up-to-date.
      %1$sLearn more%2$s" +msgstr "" +"Der Varnish-Cache wird automatisch jedes Mal geleert, wenn der Cache von WP " +"Rocket geleert wird, damit er immer aktuell ist.
      %1$sMehr erfahren%2$s" + +#: inc/classes/admin/settings/class-page.php:1729 +#: inc/classes/admin/settings/class-page.php:1789 +msgid "Cloudflare" +msgstr "Cloudflare" + +#: inc/classes/admin/settings/class-page.php:1735 +msgid "Integrate your Cloudflare account with this add-on." +msgstr "Integriere dein Cloudflare-Konto mit diesem Add-on." + +#: inc/classes/admin/settings/class-page.php:1736 +msgid "" +"Provide your account email, global API key, and domain to use options such " +"as clearing the Cloudflare cache and enabling optimal settings with WP " +"Rocket." +msgstr "" +"Damit du den Cloudflare-Cache leeren und die optimalen Einstellungen für WP " +"Rocket auswählen kannst, gib hier die folgenden in deinem Cloudflare-Konto " +"hinterlegten Daten ein: E-Mail-Adresse, globaler API-Schlüssel, Domain" + +#: inc/classes/admin/settings/class-page.php:1748 +msgid "Clear the Sucuri cache when WP Rocket’s cache is cleared." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1751 +msgid "" +"Provide your API key to clear the Sucuri cache when WP Rocket’s cache is " +"cleared." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1759 +#: inc/classes/admin/settings/class-page.php:1907 +msgid "Sucuri" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1765 +msgid "Synchronize Sucuri cache with this add-on." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1805 +msgid "Cloudflare credentials" +msgstr "Cloudflare-Zugangsdaten" + +#: inc/classes/admin/settings/class-page.php:1814 +msgid "Cloudflare settings" +msgstr "Cloudflare-Einstellungen" + +#: inc/classes/admin/settings/class-page.php:1828 +msgctxt "Cloudflare" +msgid "Global API key:" +msgstr "Globaler API-Schlüssel:" + +#: inc/classes/admin/settings/class-page.php:1829 +msgid "" +"https://support.cloudflare.com/hc/en-us/articles/200167836-Where-do-I-find-" +"my-Cloudflare-API-key-" +msgstr "" +"https://support.cloudflare.com/hc/en-us/articles/200167836-Where-do-I-find-" +"my-Cloudflare-API-key-" + +#: inc/classes/admin/settings/class-page.php:1829 +msgctxt "Cloudflare" +msgid "Find your API key" +msgstr "API-Schlüssel finden" + +#: inc/classes/admin/settings/class-page.php:1841 +msgctxt "Cloudflare" +msgid "Account email" +msgstr "E-Mail-Adresse" + +#: inc/classes/admin/settings/class-page.php:1850 +msgctxt "Cloudflare" +msgid "Zone ID" +msgstr "Zone ID" + +#: inc/classes/admin/settings/class-page.php:1860 +msgid "Development mode" +msgstr "Entwicklungsmodus" + +#: inc/classes/admin/settings/class-page.php:1862 +#, php-format +msgid "" +"Temporarily activate development mode on your website. This setting will " +"automatically turn off after 3 hours. %1$sLearn more%2$s" +msgstr "" +"Aktiviert vorübergehend den Entwicklungsmodus auf deiner Website. Diese " +"Einstellung wird nach 3 Stunden automatisch deaktiviert. %1$sMehr " +"erfahren%2$s" + +#: inc/classes/admin/settings/class-page.php:1870 +msgid "Optimal settings" +msgstr "Optimale Einstellungen" + +#: inc/classes/admin/settings/class-page.php:1871 +msgid "" +"Automatically enhances your Cloudflare configuration for speed, performance " +"grade and compatibility." +msgstr "" +"Verbessert deine Cloudflare-Konfiguration automatischen hinsichtlich " +"Geschwindigkeit, Leistungsfähigkeit und Kompatibilität." + +#: inc/classes/admin/settings/class-page.php:1879 +msgid "Relative protocol" +msgstr "Relatives Protokoll" + +#: inc/classes/admin/settings/class-page.php:1880 +msgid "" +"Should only be used with Cloudflare's flexible SSL feature. URLs of static " +"files (CSS, JS, images) will be rewritten to use // instead of http:// or " +"https://." +msgstr "" +"Sollte ausschließlich mit Flexible SSL von Cloudflare genutzt werden. URLs " +"statischer Dateien (CSS, JS, Bilder) werden auf // anstatt http:// oder " +"https:// umgeschrieben." + +#: inc/classes/admin/settings/class-page.php:1920 +msgid "Sucuri credentials" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1933 +msgctxt "Sucuri" +msgid "" +"Firewall API key (for plugin), must be in format {32 characters}/{32 " +"characters}:" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1934 +msgctxt "Sucuri" +msgid "Find your API key" +msgstr "API-Schlüssel finden" + +#: inc/classes/admin/settings/class-render.php:486 +#: inc/deprecated/deprecated.php:1296 +msgid "Upload file and import settings" +msgstr "Datei hochladen und Einstellungen importieren." + +#: inc/classes/admin/settings/class-settings.php:385 +msgid "" +"Sucuri Add-on: The API key for the Sucuri firewall must be in format " +"{32 characters}/{32 characters}." +msgstr "" + +#: inc/classes/admin/settings/class-settings.php:462 +#: inc/deprecated/deprecated.php:1247 +msgid "Settings saved." +msgstr "Einstellungen gespeichert." + +#: inc/classes/class-wp-rocket-requirements-check.php:148 +#, php-format +msgid "To function properly, %1$s %2$s requires at least:" +msgstr "Um richtig zu funktionieren, erfordert %1$s %2$s mindestens:" + +#: inc/classes/class-wp-rocket-requirements-check.php:152 +#, php-format +msgid "" +"PHP %1$s. To use this WP Rocket version, please ask your web host how to " +"upgrade your server to PHP %1$s or higher." +msgstr "" +"PHP %1$s. Um diese Version von WP Rocket zu nutzen, frage bei deinem " +"Webhosting nach einer Aktualisierung deines Servers auf PHP %1$s oder höher." + +#: inc/classes/class-wp-rocket-requirements-check.php:157 +#, php-format +msgid "" +"WordPress %1$s. To use this WP Rocket version, please upgrade WordPress to " +"version %1$s or higher." +msgstr "" +"WordPress %1$s. Um diese Version von WP Rocket zu nutzen, aktualisiere " +"WordPress auf version %1$s oder höher." + +#: inc/classes/class-wp-rocket-requirements-check.php:160 +msgid "" +"If you are not able to upgrade, you can rollback to the previous version by " +"using the button below." +msgstr "" +"Wenn eine Aktualisierung nicht möglich ist, kannst du das Button weiter " +"unten klicken, um die vorherige Version von WP Rocket wiederherzustellen." + +#: inc/classes/class-wp-rocket-requirements-check.php:162 +#: inc/deprecated/deprecated.php:1949 +#, php-format +msgid "Re-install version %s" +msgstr " Version %s wiederherstellen" + +#: inc/classes/logger/class-logger.php:253 +#: inc/classes/logger/class-logger.php:285 +msgid "The log file does not exist." +msgstr "" + +#: inc/classes/logger/class-logger.php:259 +#: inc/classes/logger/class-logger.php:291 +msgid "The log file could not be read." +msgstr "" + +#: inc/classes/logger/class-logger.php:278 +msgid "The logs are not saved into a file." +msgstr "" + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:88 +#: inc/classes/optimization/CSS/class-critical-css-generation.php:99 +#: inc/classes/optimization/CSS/class-critical-css-generation.php:110 +#: inc/classes/optimization/CSS/class-critical-css-generation.php:120 +#: inc/classes/optimization/CSS/class-critical-css-generation.php:142 +#, php-format +msgid "Critical CSS for %1$s not generated. Error: %2$s" +msgstr "Kritisches CSS für %1$s nicht erstellt. Fehler: %2$s" + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:99 +msgid "The API returned an invalid response code." +msgstr "Die API hat einen unvollständigen Antwort-Code zurückgegeben." + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:110 +msgid "The API returned an empty response." +msgstr "Die API hat eine leere Antwort zurückgegeben." + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:145 +#, php-format +msgid "The critical CSS content could not be saved as a file in %s." +msgstr "Kritisches CSS konnte nicht als Datei in %s gesichert werden." + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:154 +#, php-format +msgid "Critical CSS for %s generated." +msgstr "Kritisches CSS für %s erstellt." + +#: inc/classes/preload/class-homepage.php:83 +#, php-format +msgid "" +"Preload encountered an error. Could not gather links on %1$s because of the " +"following error: %2$s. %3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-homepage.php:96 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: %2$s. Security measures could be preventing access. " +"%3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-homepage.php:102 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: 404. Please make sure your homepage is accessible in your " +"browser. %2$sLearn more%3$s." +msgstr "" + +#: inc/classes/preload/class-homepage.php:108 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: 500. Please check with your web host about server access. " +"%2$sLearn more%3$s." +msgstr "" + +#: inc/classes/preload/class-homepage.php:114 +#, php-format +msgid "" +"Preload encountered an error. Could not gather links on %1$s because it " +"returned the following response code: %2$s. %3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:138 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not gather links on %1$s because" +" of the following error: %2$s. %3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:153 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: %2$s. Security measures could be preventing access." +" %3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:158 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: 404. Please make sure you entered the correct " +"sitemap URL and it is accessible in your browser. %2$sLearn more%3$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:163 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: 500. Please check with your web host about server " +"access. %2$sLearn more%3$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:168 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not gather links on %1$s because" +" it returned the following response code: %2$s. %3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:184 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not collect links from %1$s " +"because the file is empty. %2$sLearn more%3$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:205 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not collect links from %1$s " +"because of an error during the XML sitemap parsing. %2$sLearn more%3$s." +msgstr "" + +#: inc/classes/subscriber/Optimization/class-critical-css-subscriber.php:138 +#, php-format +msgid "" +"Critical CSS generation is currently running: %1$d of %2$d page types " +"completed. (Refresh this page to view progress)" +msgstr "" +"Kritisches CSS wird gerade neu erstellt: %1$d von %2$d Seiten-Typen " +"komplett. (Seite neu laden für aktuellen Stand)" + +#: inc/classes/subscriber/Optimization/class-critical-css-subscriber.php:189 +#, php-format +msgid "Critical CSS generation finished for %1$d of %2$d page types." +msgstr "Kritisches CSS erstellt für %1$d von %2$d Seiten-Typen." + +#: inc/classes/subscriber/Optimization/class-critical-css-subscriber.php:203 +msgid "Critical CSS generation encountered one or more errors." +msgstr "" + +#: inc/classes/subscriber/Optimization/class-critical-css-subscriber.php:203 +msgid "Learn more." +msgstr "" + +#: inc/classes/subscriber/Tools/class-cache-dir-size-check-subscriber.php:51 +#: inc/classes/subscriber/class-facebook-tracking-cache-busting-subscriber.php:97 +#: inc/classes/subscriber/class-google-tracking-cache-busting-subscriber.php:154 +#: inc/common/cron.php:33 +msgid "weekly" +msgstr "wöchentlich" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:148 +msgid "Database optimization process is running" +msgstr "Datenbank wird optimiert." + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:179 +msgid "" +"Database optimization process is complete. Everything was already optimized!" +msgstr "Datenbank-Optimierung abgeschlossen. Alles war bereits optimiert!" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:182 +msgid "" +"Database optimization process is complete. List of optimized items below:" +msgstr "" +"Datenbank-Optimierung abgeschlossen. Folgende Elemente wurden optimiert:" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:190 +#, php-format +msgid "%1$d %2$s optimized." +msgstr "%1$d %2$s optimiert." + +#: inc/classes/subscriber/admin/Settings/class-page-subscriber.php:137 +#: inc/deprecated/deprecated.php:1788 +#: views/settings/page-sections/tools.php:33 +msgid "Tools" +msgstr "Werkzeuge" + +#: inc/classes/subscriber/admin/Settings/class-page-subscriber.php:138 +msgid "Import, Export, Rollback" +msgstr "Import, Export, Wiederherstellung" + +#: inc/classes/subscriber/admin/Settings/class-page-subscriber.php:160 +#: views/settings/page-sections/imagify.php:13 +msgid "Image Optimization" +msgstr "" + +#: inc/classes/subscriber/admin/Settings/class-page-subscriber.php:161 +msgid "Compress your images" +msgstr "" + +#: inc/classes/subscriber/preload/class-preload-subscriber.php:212 +#, php-format +msgid "" +"Preload: WP Rocket has started preloading your website. Go to the %1$sWP " +"Rocket settings%2$s page to track progress." +msgstr "" + +#: inc/classes/subscriber/preload/class-preload-subscriber.php:246 +#, php-format +msgid "" +"Preload: %1$s uncached page has now been preloaded. (refresh to see " +"progress)" +msgid_plural "" +"Preload: %1$s uncached pages have now been preloaded. (refresh to see " +"progress)" +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/subscriber/preload/class-preload-subscriber.php:255 +msgid "The following error happened during gathering of the URLs to preload:" +msgid_plural "" +"The following errors happened during gathering of the URLs to preload:" +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/subscriber/preload/class-preload-subscriber.php:308 +#, php-format +msgid "Preload complete: %d pages have been cached." +msgstr "" + +#: inc/classes/subscriber/preload/class-sitemap-preload-subscriber.php:117 +#, php-format +msgid "" +"%1$sSimpleXML PHP extension%2$s is not enabled on your server. Please " +"contact your host to enable it before running sitemap-based cache " +"preloading." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:72 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"Please deactivate the following %s option which conflicts with WP Rocket " +"features:" +msgid_plural "" +"Please deactivate the following %s options which conflict with WP Rocket " +"features:" +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:145 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sdisable emoji%3$s conflicts with WP Rockets %2$sdisable emoji%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:167 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sremove query strings%3$s conflicts with WP Rocket %2$sremove query " +"strings%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:203 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sGZIP compression%3$s conflicts with WP Rocket %2$sGZIP " +"compression%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:239 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sbrowser caching%3$s conflicts with WP Rocket %2$sbrowser " +"caching%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:271 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$spage caching%3$s conflicts with WP Rocket %2$spage caching%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:305 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sasset optimization%3$s conflicts with WP Rocket %2$sfile " +"optimization%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:123 +#, php-format +msgid "Sucuri cache purge error: %s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:128 +msgid "" +"The Sucuri cache is being cleared. Note that it may take up to two minutes " +"for it to be fully flushed." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:242 +msgid "Sucuri firewall API key was not found." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:251 +msgid "Sucuri firewall API key is invalid." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:303 +msgid "Error when contacting Sucuri firewall API." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:313 +#, php-format +msgid "Error when contacting Sucuri firewall API. Error message was: %s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:324 +msgid "Could not get a response from the Sucuri firewall API." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:335 +msgid "Got an invalid response from the Sucuri firewall API." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:345 +msgid "The Sucuri firewall API returned an unknown error." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:348 +#, php-format +msgid "The Sucuri firewall API returned the following error: %s" +msgid_plural "The Sucuri firewall API returned the following errors: %s" +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/traits/trait-updater-api-tools.php:53 +#: inc/deprecated/3.3.php:760 inc/deprecated/3.3.php:769 +#, php-format +msgid "" +"An unexpected error occurred. Something may be wrong with WP-Rocket.me or " +"this server’s configuration. If you continue to have problems, contact support." +msgstr "" +"Ein unerwarteter Fehler ist aufgetreten. Vielleicht ist etwas auf wp-" +"rocket.me oder mit dieser Server-Einstellung schief gelaufen. Falls es " +"weiterhin Probleme geben sollte, kontaktiere den Support." + +#: inc/common/admin-bar.php:106 inc/common/admin-bar.php:260 +#: inc/functions/i18n.php:39 inc/functions/i18n.php:48 +msgid "All languages" +msgstr "Alle Sprachen" + +#: inc/common/admin-bar.php:133 +msgid "Clear this post" +msgstr "Lösche diesen Eintrag" + +#: inc/common/admin-bar.php:147 +msgid "Purge this URL" +msgstr "Entferne diese URL aus dem Cache" + +#: inc/common/admin-bar.php:163 +msgid "Purge OPcache" +msgstr "OPcache leeren" + +#: inc/common/admin-bar.php:180 +msgid "Regenerate Critical Path CSS" +msgstr "Kritisches CSS neu generieren" + +#: inc/common/admin-bar.php:196 +msgid "Clear Cloudflare cache" +msgstr "Cloudflare-Cache leeren" + +#: inc/common/admin-bar.php:217 inc/common/admin-bar.php:272 +#: views/settings/page-sections/dashboard.php:135 +msgid "Preload cache" +msgstr "Cache füllen" + +#: inc/common/admin-bar.php:287 views/settings/partials/documentation.php:13 +msgid "Documentation" +msgstr "Dokumentation" + +#: inc/common/cron.php:24 +#, php-format +msgid "%s clear" +msgstr "%s bereinigt" + +#: inc/common/cron.php:39 +msgid "monthly" +msgstr "monatlich" + +#: inc/common/purge.php:456 +#, php-format +msgid "Cloudflare cache purge error: %s" +msgstr "Fehler beim Löschen des Cloudflare-Caches: %s" + +#: inc/common/purge.php:461 +msgid "Cloudflare cache successfully purged" +msgstr "Cloudflare-Cache erfolgreich geleert" + +#: inc/deprecated/3.2.php:51 views/settings/page-sections/imagify.php:35 +msgid "Activate Imagify" +msgstr "Imagify aktivieren" + +#: inc/deprecated/3.2.php:51 +msgid "Install Imagify for Free" +msgstr "Imagify kostenfrei installieren" + +#: inc/deprecated/3.2.php:66 +msgid "" +"Speed up your website and boost your SEO by reducing image file sizes " +"without losing quality with Imagify." +msgstr "" +"Beschleunige deine Website und booste dein SEO, indem du deine Bilder mit " +"Imagify verlustfrei optimierst." + +#: inc/deprecated/3.2.php:71 +msgid "More details" +msgstr "Weitere Einzelheiten" + +#: inc/deprecated/3.2.php:227 +#, php-format +msgid "Sitemap preload: %d pages have been cached." +msgstr "Sitemap-Preload: %d Seiten gecacht." + +#: inc/deprecated/3.2.php:260 +#, php-format +msgid "" +"Sitemap preload: %d uncached pages have now been preloaded. (refresh to see " +"progress)" +msgstr "" +"Sitemap-Preload: %d Seiten wurden bis jetzt in den Cache geladen. (Seite " +"neu laden für aktuellen Stand)" + +#: inc/deprecated/deprecated.php:242 +msgid "JS files with Deferred Loading JavaScript" +msgstr "JS-Dateien mit verzögert geladenem JavaScript" + +#: inc/deprecated/deprecated.php:295 +msgid "Add URL" +msgstr "URL hinzufügen" + +#: inc/deprecated/deprecated.php:1279 views/settings/fields/import-form.php:22 +msgid "" +"Before you can upload your import file, you will need to fix the following " +"error:" +msgstr "" +"Bevor du deine Einstellungsdatei importieren kannst, musst du den folgenden " +"Fehler korrigieren." + +#: inc/deprecated/deprecated.php:1290 views/settings/fields/import-form.php:35 +#, php-format +msgid "Choose a file from your computer (maximum size: %s)" +msgstr "Wähle eine Datei von deinem Computer (maximale Größe: %s)" + +#: inc/deprecated/deprecated.php:1387 +msgid "Your Cloudflare credentials are valid." +msgstr "Deine Cloudflare-Zugangsdaten sind gültig." + +#: inc/deprecated/deprecated.php:1391 +msgid "Your Cloudflare credentials are invalid!" +msgstr "Deine Cloudflare-Zugangsdaten sind ungültig." + +#: inc/deprecated/deprecated.php:1455 +msgid "Save and optimize" +msgstr "Speichern und optimieren" + +#: inc/deprecated/deprecated.php:1455 +#: views/settings/page-sections/database.php:27 +msgid "Optimize" +msgstr "Optimieren" + +#: inc/deprecated/deprecated.php:1466 inc/deprecated/deprecated.php:1668 +msgctxt "screen-reader-text" +msgid "Note:" +msgstr "Hinweis:" + +#: inc/deprecated/deprecated.php:1472 +msgctxt "screen-reader-text" +msgid "Performance tip:" +msgstr "Performance-Tipp:" + +#: inc/deprecated/deprecated.php:1478 +msgctxt "screen-reader-text" +msgid "Third-party feature detected:" +msgstr "Drittanbieter-Funktion ermittelt:" + +#: inc/deprecated/deprecated.php:1490 inc/deprecated/deprecated.php:1674 +msgctxt "screen-reader-text" +msgid "Warning:" +msgstr "Warnung:" + +#: inc/deprecated/deprecated.php:1503 +msgctxt "button text" +msgid "Download settings" +msgstr "Einstellungen herunterladen" + +#: inc/deprecated/deprecated.php:1533 +msgid "Replace site's hostname with:" +msgstr "Ersetze den Hostnamen der Seite mit:" + +#: inc/deprecated/deprecated.php:1552 inc/deprecated/deprecated.php:1589 +#: inc/deprecated/deprecated.php:1617 views/settings/fields/cnames.php:32 +#: views/settings/fields/cnames.php:63 views/settings/fields/cnames.php:93 +msgid "reserved for" +msgstr "reserviert für" + +#: inc/deprecated/deprecated.php:1554 inc/deprecated/deprecated.php:1591 +#: inc/deprecated/deprecated.php:1619 views/settings/fields/cnames.php:35 +#: views/settings/fields/cnames.php:66 views/settings/fields/cnames.php:96 +msgid "All files" +msgstr "Alle Dateien" + +#: inc/deprecated/deprecated.php:1566 inc/deprecated/deprecated.php:1596 +#: inc/deprecated/deprecated.php:1624 views/settings/fields/cnames.php:47 +#: views/settings/fields/cnames.php:78 views/settings/fields/cnames.php:108 +msgid "Images" +msgstr "Bilder" + +#: inc/deprecated/deprecated.php:1637 views/settings/fields/cnames.php:119 +msgid "Add CNAME" +msgstr "CNAME hinzufügen" + +#: inc/deprecated/deprecated.php:1708 +msgid "Watch the video" +msgstr "Video ansehen." + +#: inc/deprecated/deprecated.php:1773 +msgid "Basic" +msgstr "Basis" + +#: inc/deprecated/deprecated.php:1774 +msgid "Static Files" +msgstr "Statische Dateien" + +#: inc/deprecated/deprecated.php:1776 +msgid "Advanced" +msgstr "Erweitert" + +#: inc/deprecated/deprecated.php:1946 +#, php-format +msgid "" +"%1$s %2$s requires at least PHP %3$s to function properly. To use this " +"version, please ask your web host how to upgrade your server to PHP %3$s or " +"higher. If you are not able to upgrade, you can rollback to the previous " +"version by using the button below." +msgstr "" +"%1$s %2$s erfordert mindestens PHP %3$s, um korrekt zu funktionieren. Frage " +"dein Webhosting nach einer Aktualisierung der PHP-Version auf %3$s oder " +"höher auf deinem Server. Falls eine Aktualisierung nicht möglich ist, nutze " +"das Button, um auf eine frühere Version zurückzusetzen." + +#: inc/functions/admin.php:23 +msgid "" +"There seems to be an issue validating your license. Please see the error " +"message below." +msgid_plural "" +"There seems to be an issue validating your license. You can see the error " +"messages below." +msgstr[0] "" +msgstr[1] "" + +#: inc/functions/admin.php:361 +msgid "Server type:" +msgstr "Server-Typ:" + +#: inc/functions/admin.php:370 +msgid "PHP version number:" +msgstr "PHP Versionsnummer:" + +#: inc/functions/admin.php:379 +msgid "WordPress version number:" +msgstr "WordPress Versionsnummer:" + +#: inc/functions/admin.php:388 +msgid "WordPress multisite:" +msgstr "WordPress Multisite:" + +#: inc/functions/admin.php:397 +msgid "Current theme:" +msgstr "Aktives Theme:" + +#: inc/functions/admin.php:406 +msgid "Current site language:" +msgstr "Aktive Sprache:" + +#: inc/functions/admin.php:415 +msgid "Active plugins:" +msgstr "Aktive Plugins:" + +#: inc/functions/admin.php:418 +msgid "Plugin names of all active plugins" +msgstr "Plugin-Namen aller aktiven Plugins" + +#: inc/functions/admin.php:424 +msgid "Anonymized WP Rocket settings:" +msgstr "Anonymisierte Einstellungen von WP Rocket:" + +#: inc/functions/admin.php:427 +msgid "Which WP Rocket settings are active" +msgstr "aktive Einstellungen in WP Rocket" + +#: inc/functions/cloudflare.php:14 +msgid "" +"Curl functions are disabled, they are required for the Cloudflare Add-on to " +"work correctly." +msgstr "" + +#: inc/functions/cloudflare.php:21 +msgid "Cloudflare Email and API key are not set" +msgstr "Cloudflare E-Mail und API-Schlüssel sind nicht gesetzt" + +#: inc/functions/cloudflare.php:52 +#, php-format +msgid "Missing Cloudflare zone ID. %s could not fix this automatically." +msgstr "" +"Fehlende Cloudflare Zone-ID. %s konnte dieses Problem nicht automatisch " +"beheben." + +#: inc/functions/cloudflare.php:58 +#, php-format +msgid "Read the %1$sdocumentation%2$s for further guidance." +msgstr "Lies die %1$sDokumentation%2$s für weitere Hinweise." + +#: inc/functions/cloudflare.php:60 +msgid "" +"https://docs.wp-rocket.me/article/18-using-wp-rocket-with-" +"cloudflare/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://de.docs.wp-rocket.me/article/434-wp-rocket-mit-cloudflare-" +"nutzen?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: inc/functions/cloudflare.php:100 +msgid "Connection to Cloudflare failed" +msgstr "Keine Verbindung mit Cloudflare möglich" + +#: inc/functions/cloudflare.php:122 +msgid "Choose a domain from the list" +msgstr "Wähle eine Domain aus der Liste" + +#: inc/functions/cloudflare.php:135 +msgid "No domain available in your Cloudflare account" +msgstr "Keine Domain in deinem Cloudflare-Konto verfügbar" + +#: inc/functions/options.php:580 inc/functions/options.php:619 +msgid "" +"License validation failed. Our server could not resolve the request from " +"your website." +msgstr "" + +#: inc/functions/options.php:580 inc/functions/options.php:619 +#, php-format +msgid "" +"Try clicking %1$sSave Changes%2$s below. If the error persists, follow " +"%3$sthis guide%4$s." +msgstr "" + +#: inc/functions/options.php:596 +msgid "" +"License validation failed. You may be using a nulled version of the plugin. " +"Please do the following:" +msgstr "" + +#: inc/functions/options.php:596 inc/functions/options.php:638 +#, php-format +msgid "Login to your WP Rocket %1$saccount%2$s" +msgstr "" + +#: inc/functions/options.php:596 inc/functions/options.php:638 +msgid "Download the zip file" +msgstr "" + +#: inc/functions/options.php:596 inc/functions/options.php:638 +msgid "Reinstall" +msgstr "" + +#: inc/functions/options.php:596 +#, php-format +msgid "" +"If you do not have a WP Rocket account, please %1$spurchase a license%2$s." +msgstr "" + +#: inc/functions/options.php:604 +msgid "" +"License validation failed. This user account does not exist in our database." +msgstr "" + +#: inc/functions/options.php:604 +msgid "To resolve, please contact support." +msgstr "" + +#: inc/functions/options.php:612 +msgid "License validation failed. This user account is blacklisted." +msgstr "" + +#: inc/functions/options.php:612 +#, php-format +msgid "Please see %1$sthis guide%2$s for more info." +msgstr "" + +#: inc/functions/options.php:632 +msgid "Your license is not valid." +msgstr "Deine Lizenz ist nicht gültig." + +#: inc/functions/options.php:632 +#, php-format +msgid "Make sure you have an active %1$sWP Rocket license%2$s." +msgstr "" + +#: inc/functions/options.php:634 +msgid "You have added as many sites as your current license allows." +msgstr "" + +#: inc/functions/options.php:634 +#, php-format +msgid "" +"Upgrade your %1$saccount%2$s or %3$stransfer your license%2$s to this " +"domain." +msgstr "" + +#: inc/functions/options.php:636 +msgid "This website is not allowed." +msgstr "Diese Domain ist nicht erlaubt." + +#: inc/functions/options.php:636 +#, php-format +msgid "Please %1$scontact support%2$s." +msgstr "" + +#: inc/functions/options.php:638 +msgid "This license key is not recognized." +msgstr "" + +#: inc/functions/options.php:638 +#, php-format +msgid "If the issue persists, please %1$scontact support%2$s." +msgstr "" + +#: inc/functions/options.php:644 +#, php-format +msgid "License validation failed: %s" +msgstr "" + +#: inc/vendors/classes/class-imagify-partner.php:531 +msgid "Plugin installed successfully." +msgstr "" + +#: inc/vendors/classes/class-imagify-partner.php:532 +msgid "Sorry, you are not allowed to install plugins on this site." +msgstr "" + +#: inc/vendors/classes/class-imagify-partner.php:533 +msgid "Sorry, you are not allowed to do that." +msgstr "" + +#: inc/vendors/classes/class-imagify-partner.php:534 +msgid "Plugin install failed." +msgstr "" + +#: inc/vendors/classes/class-imagify-partner.php:535 +msgid "Go back" +msgstr "" + +#: views/deactivation-intent/form.php:20 +msgid "Return" +msgstr "Zurück" + +#: views/deactivation-intent/form.php:21 +msgid "WP Rocket feedback" +msgstr "Feedback zu WP Rocket" + +#: views/deactivation-intent/form.php:23 +msgid "Close" +msgstr "Schließen" + +#: views/deactivation-intent/form.php:27 +msgid "May we have a little info about why you are deactivating?" +msgstr "Dürfen wir kurz fragen, warum du deaktivierst?" + +#: views/deactivation-intent/form.php:31 +msgid "" +"It is a temporary deactivation. I am just debugging an " +"issue." +msgstr "" +"Vorübergehende Deaktivierung. Ich beseitige nur ein " +"Problem." + +#: views/deactivation-intent/form.php:35 +msgid "The plugin broke my layout or some functionality." +msgstr "Das Plugin hat Layout oder Funktionen beschädigt." + +#: views/deactivation-intent/form.php:39 +msgid "My PageSpeed or GTMetrix score did not improve." +msgstr "" +"Mein Ergebnis bei PageSpeed oder GTmetrix hat sich nicht " +"verbessert." + +#: views/deactivation-intent/form.php:43 +msgid "I did not notice a difference in loading time." +msgstr "Ich habe keinen Unterschied in der Ladezeit bemerkt." + +#: views/deactivation-intent/form.php:47 +msgid "The plugin is too complicated to configure." +msgstr "Das Plugin ist zu kompliziert in der Handhabung." + +#: views/deactivation-intent/form.php:51 +msgid "My host already has its own caching system." +msgstr "Mein Webhosting hat bereits ein Cache-System." + +#: views/deactivation-intent/form.php:53 +msgid "What is the name of your web host?" +msgstr "Wie ist der Name deines Webhostings?" + +#: views/deactivation-intent/form.php:58 +msgid "Other" +msgstr "Sonstiges" + +#: views/deactivation-intent/form.php:60 +msgid "" +"Let us know why you are deactivating WP Rocket so we can improve the plugin" +msgstr "" +"Verrate uns, warum du WP Rocket deaktivierst, so dass wir es verbessern " +"können" + +#: views/deactivation-intent/form.php:68 +msgid "The plugin broke my layout or some functionality" +msgstr "Das Plugin hat Layout oder Funktionen beschädigt." + +#: views/deactivation-intent/form.php:69 +msgid "" +"This type of issue can usually be fixed by deactivating some options in WP " +"Rocket." +msgstr "" +"Diese Art von Problem kann meist mit dem Deaktivieren einiger Einstellungen " +"gelöst werden." + +#: views/deactivation-intent/form.php:70 +msgid "" +"Click \"Apply Safe Mode\" to quickly disable LazyLoad, File Optimization, " +"Embeds and CDN options. Then check your site to see if the issue has " +"resolved." +msgstr "" +"Klicke „Sicheren Modus anwenden“ um die Einstellungen für LazyLoad, Datei-" +"Optimierung, Embeds und CDN jetzt zu deaktivieren. Dann schau auf deiner " +"Website nach, ob die Probleme verschwunden sind." + +#: views/deactivation-intent/form.php:72 +msgid "Apply safe mode" +msgstr "Sicheren Modus anwenden" + +#: views/deactivation-intent/form.php:75 +msgid "Safe mode applied." +msgstr "Sicherer Modus wurde angewendet." + +#: views/deactivation-intent/form.php:76 +msgid "Review your site in a private/logged out browser window." +msgstr "" +"Öffne deine Website in einem privaten Browser-Fenster, so dass du nicht " +"eingeloggt bist." + +#: views/deactivation-intent/form.php:78 +msgid "" +"Is the issue fixed? Now you can reactivate options one at a time to " +"determine which one caused the problem. More info" +msgstr "" +"Problem gelöst? Nun kannst du deine Einstellungen der Reihe nach wieder " +"aktivieren und dabei herausfinden, welche das Problem verursacht hat. Mehr erfahren" + +#: views/deactivation-intent/form.php:81 +msgid "My PageSpeed or GT Metrix score did not improve" +msgstr "Mein Ergebnis bei PageSpeed oder GTmetrix hat sich nicht verbessert." + +#: views/deactivation-intent/form.php:82 +msgid "" +"WP Rocket makes your site faster. The PageSpeed grade or GTMetrix score are " +"not indicators of speed. Neither your real visitors, nor Google will ever " +"see your website’s “grade”. Speed is the only metric that matters for SEO " +"and conversions." +msgstr "" +"WP Rocket macht deine Website schneller. Das PageSpeed- oder GTmetrix-" +"Ergebnis hingegen zeigt nicht die tatsächliche Geschwindigkeit an. Weder " +"dein menschliches Publikum, noch Google sehen jemals deinen „Punktestand“. " +"Ladezeit ist die einzige Performance-Kennzahl, die wirklich für SEO und " +"Konversionen zählt." + +#: views/deactivation-intent/form.php:83 +msgid "Yoast, the expert on all things related to SEO for WordPress states:" +msgstr "Yoast, die SEO-Experten für WordPress, sagen:" + +#: views/deactivation-intent/form.php:84 +msgid "" +"[Google] just looks at how fast your website loads for users, so you don’t " +"have to obsess over that specific score. You have to make sure your website " +"is as fast as you can get it." +msgstr "" +"[Google] achtet darauf, wie schnell deine Website für deine Besucher/-innen " +"lädt, du brauchst also nicht einem bestimmten Punktestand hinter zu rennen. " +"Du musst sicherstellen, dass deine Website so schnell läuft, wie du sie " +"machen kannst." + +#: views/deactivation-intent/form.php:87 +msgid "" +"How to measure the load time of your site:
      https" +"://wp-rocket.me/blog/correctly-measure-websites-page-load-time/" +msgstr "" +"Wie du die Ladezeiten deiner Website richtig misst:
      https" +"://wp-rocket.me/blog/correctly-measure-websites-page-load-time/" + +#: views/deactivation-intent/form.php:88 +msgid "" +"Why you should not be chasing a PageSpeed score:
      https://wp-rocket.me/blog/the-truth-about-google-" +"pagespeed-insights/" +msgstr "" +"Warum es keinen Sinn macht, einem Punktestand hinterher zu laufen:
      https://wp-rocket.me/blog/the-truth-about-google-" +"pagespeed-insights/" + +#: views/deactivation-intent/form.php:91 +msgid "I did not notice a difference in loading time" +msgstr "Ich habe keinen Unterschied in der Ladezeit bemerkt." + +#: views/deactivation-intent/form.php:92 +msgid "" +"Make sure you look at your site while logged out to see the fast, cached " +"pages!" +msgstr "" +"Stelle sicher, dass du abgemeldet (ausgeloggt) bist, um schnelle, gecachte " +"Seiten zu sehen!" + +#: views/deactivation-intent/form.php:93 +msgid "" +"The best way to see the improvement WP Rocket provides is to perform speed " +"tests. Follow this guide to correctly measure the load time of your " +"website:
      https://wp-rocket.me/blog/correctly-measure-websites-page-" +"load-time/" +msgstr "" +"Die mit WP Rocket erzielten Verbesserungen siehst du am besten bei einem " +"Test. Hier gibt es eine Anleitung, wie du deine Ladezeiten korrekt messen " +"kannst:
      https://wp-rocket.me/blog/correctly-measure-websites-page-" +"load-time/" + +#: views/deactivation-intent/form.php:96 +msgid "The plugin is too complicated to configure" +msgstr "Das Plugin ist zu kompliziert in der Handhabung." + +#: views/deactivation-intent/form.php:97 +msgid "We are sorry to hear you are finding it difficult to use WP Rocket." +msgstr "Tut uns leid, dass du Schwierigkeiten mit WP Rocket hast!" + +#: views/deactivation-intent/form.php:98 +#, php-format +msgid "" +"WP Rocket is the only caching plugin that provides 80% of best practices in " +"speed optimization, by default. That means you do not have to do anything " +"besides activate WP Rocket and your site will already be faster!" +msgstr "" +"WP Rocket ist das einzige Caching-Plugin, das 80% der bewährten Techniken " +"zur Geschwindigkeitsverbesserung voll automatisch anwendet. Du musst nichts " +"weiter tun, außer WP Rocket zu aktivieren – deine Website wird schon " +"schneller sein!" + +#: views/deactivation-intent/form.php:99 +msgid "" +"The additional options are not required for a fast site, they are for fine-" +"tuning." +msgstr "" +"Alle weiteren Einstellungen sind nicht zwingend erforderlich für eine " +"schnellere Website; sie dienen der Fein-Abstimmung und Optimierung." + +#: views/deactivation-intent/form.php:100 +msgid "" +"To see the benefit WP Rocket is already providing, measure the speed of your" +" site using a tool like Pingdom:
      https" +"://wp-rocket.me/blog/correctly-measure-websites-page-load-time/" +msgstr "" +"Um zu sehen, was WP Rocket bereits für deine Website tut, kannst du einen " +"Dienst wie Pingdom nutzen:
      https://wp-rocket.me/blog/correctly-measure-websites-" +"page-load-time/" + +#: views/deactivation-intent/form.php:105 +msgid "Send & Deactivate" +msgstr "Senden und deaktivieren" + +#: views/deactivation-intent/form.php:106 +msgid "Cancel" +msgstr "Abbrechen" + +#: views/deactivation-intent/form.php:108 +msgid "Skip & Deactivate" +msgstr "Überspringen und deaktivieren" + +#: views/settings/fields/cache-lifespan.php:26 +msgid "Clear cache after" +msgstr "Cache löschen nach" + +#: views/settings/fields/cnames.php:49 views/settings/fields/cnames.php:80 +#: views/settings/fields/cnames.php:110 +msgid "CSS & JavaScript" +msgstr "CSS und JavaScript" + +#: views/settings/fields/cnames.php:50 views/settings/fields/cnames.php:81 +#: views/settings/fields/cnames.php:111 +msgid "JavaScript" +msgstr "JavaScript" + +#: views/settings/fields/cnames.php:51 views/settings/fields/cnames.php:82 +#: views/settings/fields/cnames.php:112 +msgid "CSS" +msgstr "CSS" + +#: views/settings/fields/import-form.php:29 +msgid "Import settings" +msgstr "Einstellungen importieren" + +#: views/settings/fields/one-click-addon.php:39 +#: views/settings/fields/rocket-addon.php:31 +#: views/settings/fields/sliding-checkbox.php:24 views/settings/page.php:54 +msgctxt "Active state of checkbox" +msgid "On" +msgstr "an" + +#: views/settings/fields/one-click-addon.php:40 +#: views/settings/fields/rocket-addon.php:32 +#: views/settings/fields/sliding-checkbox.php:25 views/settings/page.php:55 +msgctxt "Inactive state of checkbox" +msgid "Off" +msgstr "aus" + +#: views/settings/fields/one-click-addon.php:41 +#: views/settings/fields/rocket-addon.php:33 +msgid "Add-on status" +msgstr "Add-on Status" + +#: views/settings/fields/rocket-addon.php:56 +msgid "Modify options" +msgstr "Einstellungen bearbeiten" + +#: views/settings/page-sections/cloudflare.php:26 +msgid "Cloudflare Cache" +msgstr "Cloudflare Cache" + +#: views/settings/page-sections/cloudflare.php:33 +#: views/settings/page-sections/sucuri.php:34 +#, php-format +msgid "Purges cached resources for your website. %s" +msgstr "Löscht alle von Cloudflare gecachten Dateien deiner Website. %s" + +#: views/settings/page-sections/cloudflare.php:34 +msgid "https://support.cloudflare.com/hc/en-us/articles/200169246" +msgstr "https://support.cloudflare.com/hc/en-us/articles/200169246" + +#: views/settings/page-sections/cloudflare.php:34 +#: views/settings/page-sections/sucuri.php:35 +msgid "Learn more" +msgstr "Mehr erfahren" + +#: views/settings/page-sections/cloudflare.php:40 +msgid "Clear all Cloudflare cache files" +msgstr "Cloudflare Cache leeren" + +#: views/settings/page-sections/dashboard.php:37 +msgid "Congratulations!" +msgstr "Glückwunsch!" + +#: views/settings/page-sections/dashboard.php:39 +msgid "WP Rocket is now activated and already working for you." +msgstr "" + +#: views/settings/page-sections/dashboard.php:41 +msgid "Your website should be loading faster now!" +msgstr "" + +#: views/settings/page-sections/dashboard.php:43 +#, php-format +msgid "" +"To guarantee fast websites, WP Rocket applies 80% of web performance best " +"practices." +msgstr "" + +#: views/settings/page-sections/dashboard.php:43 +msgid "" +"We also enable options that provide immediate benefits to your website." +msgstr "" + +#: views/settings/page-sections/dashboard.php:44 +msgid "Continue to the options to further optimize your site!" +msgstr "Für weitere Optimierung kannst du deine Einstellungen bearbeiten!" + +#: views/settings/page-sections/dashboard.php:54 +msgid "My Account" +msgstr "Mein Konto" + +#: views/settings/page-sections/dashboard.php:60 +msgid "Refresh info" +msgstr "Anzeige aktualisieren" + +#: views/settings/page-sections/dashboard.php:74 +msgid "Expiration Date" +msgstr "Ablaufdatum" + +#: views/settings/page-sections/dashboard.php:83 +msgid "View my account" +msgstr "Konto ansehen" + +#: views/settings/page-sections/dashboard.php:103 +msgid "Quick Actions" +msgstr "Nützliche Links" + +#: views/settings/page-sections/dashboard.php:109 +msgid "Remove all cached files" +msgstr "Alle Cache-Dateien entfernen" + +#: views/settings/page-sections/dashboard.php:129 +msgid "Start cache preloading" +msgstr "Cache-Preload starten" + +#: views/settings/page-sections/dashboard.php:147 +msgid "Purge OPCache content" +msgstr "Inhalt von OPCache löschen" + +#: views/settings/page-sections/dashboard.php:153 +msgid "Purge OPCache" +msgstr "OPCache leeren" + +#: views/settings/page-sections/dashboard.php:164 +#: views/settings/page-sections/dashboard.php:170 +msgid "Regenerate Critical CSS" +msgstr "Kritisches CSS neu generieren" + +#: views/settings/page-sections/dashboard.php:186 +msgid "Frequently Asked Questions" +msgstr "Häufig gestellte Fragen" + +#: views/settings/page-sections/dashboard.php:199 +msgid "Still cannot find a solution?" +msgstr "Noch keine Lösung gefunden?" + +#: views/settings/page-sections/dashboard.php:200 +msgid "" +"Submit a ticket and get help from our friendly and knowledgeable Rocketeers." +msgstr "" +"Sende eine Support-Anfrage und lass dir von unseren freundlichen und " +"kompetenten Rocketeers helfen." + +#: views/settings/page-sections/dashboard.php:208 +msgid "Ask support" +msgstr "Support fragen" + +#: views/settings/page-sections/database.php:24 +msgid "Backup your database before you run a cleanup!" +msgstr "Sichere deine Datenbank, bevor du eine Bereinigung laufen lässt!" + +#: views/settings/page-sections/database.php:25 +msgid "" +"Once a database optimization has been performed, there is no way to undo it." +msgstr "Eine Datenbank-Optimierung kann nicht rückgängig gemacht werden." + +#: views/settings/page-sections/imagify.php:20 +#, php-format +msgid "" +"%1$sWP ROCKET%2$s created %3$sIMAGIFY%4$s %1$sfor best-in-class image " +"optimization.%2$s" +msgstr "" + +#: views/settings/page-sections/imagify.php:23 +msgid "" +"Compress image to make your website faster, all while maintaining image " +"quality." +msgstr "" + +#: views/settings/page-sections/imagify.php:24 +msgid "More on Imagify:" +msgstr "" + +#: views/settings/page-sections/imagify.php:26 +msgid "Imagify Plugin Page" +msgstr "" + +#: views/settings/page-sections/imagify.php:27 +msgid "Imagify Website" +msgstr "" + +#: views/settings/page-sections/imagify.php:28 +msgid "Review of Image Compression Plugins" +msgstr "" + +#: views/settings/page-sections/imagify.php:37 +msgid "Install Imagify" +msgstr "" + +#: views/settings/page-sections/license.php:21 +msgid "WP Rocket was not able to automatically validate your license." +msgstr "WP Rocket konnte deine Lizenz nicht automatisch überprüfen." + +#: views/settings/page-sections/license.php:26 +#, php-format +msgid "" +"Follow this tutorial, or contact support to get the engine started." +msgstr "" +"Folge dieser Anleitung, oder " +"kontaktiere den Support, um deine " +"Maschine ans Laufen zu bringen." + +#: views/settings/page-sections/license.php:26 +msgid "" +"https://docs.wp-rocket.me/article/100-resolving-problems-with-license-" +"validation/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://de.docs.wp-rocket.me/article/534-probleme-mit-lizenz-validierung-" +"beheben/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: views/settings/page-sections/sucuri.php:41 +msgid "Clear all Sucuri cache files" +msgstr "" + +#: views/settings/page-sections/tools.php:20 +#, php-format +msgid "Files size: %1$s. Number of entries: %2$s." +msgstr "" + +#: views/settings/page-sections/tools.php:23 +#, php-format +msgid "%1$sDownload the file%2$s." +msgstr "" + +#: views/settings/page-sections/tools.php:26 +#, php-format +msgid "%1$sDelete the file%2$s." +msgstr "" + +#: views/settings/page-sections/tools.php:37 +msgid "Export settings" +msgstr "Einstellungen exportieren" + +#: views/settings/page-sections/tools.php:38 +msgid "Download a backup file of your settings" +msgstr "Einstellungen herunterladen" + +#: views/settings/page-sections/tools.php:43 +msgid "Download settings" +msgstr "Einstellungen herunterladen" + +#: views/settings/page-sections/tools.php:56 +msgid "Rollback" +msgstr "Wiederherstellung" + +#: views/settings/page-sections/tools.php:60 +#, php-format +msgid "Has version %s caused an issue on your website?" +msgstr "Hat Version %s ein Problem auf deiner Website verursacht?" + +#: views/settings/page-sections/tools.php:62 +msgid "" +"You can rollback to the previous major version here.
      Then send us a " +"support request." +msgstr "" +" Hier kannst du eine frühere Hauptversion wiederherstellen.
      Danach " +"benachrichtige bitte unseren Support." + +#: views/settings/page-sections/tools.php:69 +#, php-format +msgid "Reinstall version %s" +msgstr " Version %s wiederherstellen" + +#: views/settings/page-sections/tools.php:85 +msgid "Debug mode" +msgstr "" + +#: views/settings/page-sections/tools.php:90 +msgid "Create a debug log file." +msgstr "" + +#: views/settings/page.php:16 +msgid "WP Rocket Settings" +msgstr "WP Rocket Einstellungen" + +#: views/settings/page.php:30 +#, php-format +msgid "version %s" +msgstr "Version %s" + +#: views/settings/page.php:40 +msgid "Save Changes" +msgstr "Änderungen speichern" + +#: views/settings/page.php:56 +msgid "Show Sidebar" +msgstr "Seitenleiste einblenden" + +#: views/settings/page.php:75 +msgid "Thanks for choosing to participate in the WP Rocket beta program!" +msgstr "" + +#: views/settings/page.php:76 +msgid "" +"A beta version is usually one that has new features and improvements, but we" +" want to test it a little more before full launch." +msgstr "" + +#: views/settings/page.php:77 +msgid "" +"We’d love it if you took our beta versions for a ride, but please keep in " +"mind that it might be less stable than our other releases. Don’t worry, you " +"can switch back to a full release version at any time." +msgstr "" + +#: views/settings/page.php:78 +msgid "" +"Your mission: please send all feedback about our beta versions, including " +"bug reports, to support@wp-rocket.me" +msgstr "" + +#: views/settings/page.php:80 +msgid "If you don’t want to join the beta program, simply close this window." +msgstr "" + +#: views/settings/page.php:82 +msgid "Activate Rocket Tester" +msgstr "" + +#: views/settings/page.php:93 +msgid "" +"Below is a detailed view of all data WP Rocket will collect if " +"granted permission." +msgstr "" +"Weiter unten findest du eine detaillierte Aufstellung der Daten, die WP " +"Rocket erhebt, wenn du zustimmst." + +#: views/settings/page.php:96 +msgid "" +"WP Rocket will never transmit any domain names or email addresses (except " +"for license validation), IP addresses, or third-party API keys." +msgstr "" +"WP Rocket wird niemals Domain-Namen, E-Mail-Adressen (außer zur " +"Lizenzprüfung), IP-Adressen, oder API-Schlüssel für Drittanbieter-Dienste " +"übermitteln." + +#: views/settings/page.php:98 +msgid "Activate Rocket analytics" +msgstr "Rocket Analytics aktivieren" + +#: views/settings/partials/documentation.php:14 +msgid "It is a great starting point to fix some of the most common issues." +msgstr "Ein guter Ausgangspunkt, um die häufigsten Probleme zu lösen." + +#: views/settings/partials/documentation.php:18 +msgid "Read the documentation" +msgstr "Lies die Dokumentation" + +#: views/settings/partials/sidebar.php:11 +msgid "How to correctly measure your website’s loading time" +msgstr "Ladezeiten deiner Website korrekt messen" + +#: views/settings/partials/sidebar.php:13 +msgid "" +"Learn how to use best practices to correctly measure your site's " +"performance." +msgstr "" +"Lerne, wie du bewährte Techniken einsetzen und die Performance deiner " +"Website richtig messen kannst." + +#: views/settings/partials/sidebar.php:14 +msgid "" +"https://wp-rocket.me/blog/correctly-measure-websites-page-load-" +"time/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://wp-rocket.me/blog/correctly-measure-websites-page-load-" +"time/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: views/settings/partials/sidebar.php:14 +msgid "Read our guide" +msgstr "Lies unsere Anleitung" + +#: views/settings/partials/sidebar.php:17 +msgid "Why Google PageSpeed grade should not matter" +msgstr "Warum Google PageSpeed nicht unbedingt relevant ist" + +#: views/settings/partials/sidebar.php:18 +msgid "" +"https://wp-rocket.me/blog/the-truth-about-google-pagespeed-" +"insights/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://wp-rocket.me/blog/the-truth-about-google-pagespeed-" +"insights/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: views/settings/partials/sidebar.php:18 +msgid "Read more" +msgstr "Mehr erfahren" + +#: views/settings/partials/sidebar.php:23 +msgid "You have not activated logged-in user cache." +msgstr "Personalisierter Cache ist nicht aktiviert." + +#: views/settings/partials/sidebar.php:24 +msgid "" +"Use a private browser to check your website's speed and visual appearance." +msgstr "" +"Nutze ein privates Browser-Fenster, um Geschwindigkeit und visuelles " +"Erscheinungsbild deiner Website zu prüfen." + +#: views/settings/sections/addons-container.php:23 +#: views/settings/sections/fields-container.php:27 +msgid "Need Help?" +msgstr "Brauchst du Hilfe?" diff --git a/wp-content/plugins/wp-rocket/languages/rocket-el.mo b/wp-content/plugins/wp-rocket/languages/rocket-el.mo new file mode 100644 index 0000000000000000000000000000000000000000..90197952790b65397a122cff0a3af6182fca2294 GIT binary patch literal 12144 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, 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: WP Rocket 3.3.7\n" +"Report-Msgid-Bugs-To: http://wp-rocket.me/\n" +"POT-Creation-Date: 2019-08-26 11:14-0400\n" +"PO-Revision-Date: 2019-08-26 15:14+0000\n" +"Last-Translator: Vasilis Manthos , 2019\n" +"Language-Team: Greek (https://www.transifex.com/wp-media/teams/18133/el/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: el\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 1.8.11\n" +"X-Poedit-Basepath: ..\n" +"X-Poedit-KeywordsList: __;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c\n" +"X-Poedit-SearchPath-0: .\n" +"X-Poedit-SearchPathExcluded-0: assets\n" +"X-Poedit-SearchPathExcluded-1: src\n" +"X-Poedit-SearchPathExcluded-2: vendor\n" +"X-Poedit-SearchPathExcluded-3: node_modules\n" +"X-Poedit-SearchPathExcluded-4: tests\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Textdomain-Support: yes\n" + +#: inc/3rd-party/hosting/flywheel.php:15 inc/3rd-party/hosting/godaddy.php:15 +#: inc/3rd-party/hosting/o2switch.php:15 +#: inc/3rd-party/hosting/pressidium.php:15 inc/3rd-party/hosting/savvii.php:15 +#: inc/3rd-party/hosting/wp-serveur.php:24 +#: inc/3rd-party/hosting/wpengine.php:15 +#, php-format +msgid "" +"Your site is hosted on %s, we have enabled Varnish auto-purge for " +"compatibility." +msgstr "" +"Το site σας φιλοξενείται στο %s. Έχουμε ενεργοποιήσει τον αυτόματο καθαρισμό" +" του Varnish για λόγους συμβατότητας." + +#: inc/3rd-party/hosting/kinsta.php:150 +#, php-format +msgid "" +"Your installation seems to be missing core Kinsta files managing Cache " +"clearing and CDN, which will prevent your Kinsta installation and WP Rocket " +"from working correctly. Please get in touch with Kinsta support through your" +" %1$sMyKinsta%2$s account to resolve this issue." +msgstr "" +"Φαίνεται ότι από την εγκατάστασή σας απουσιάζουν βασικά αρχεία για τη " +"διαχείριση της εκκαθάρισης της Cache και του CDN. Αυτό θα εμποδίσει την " +"ταυτόχρονη λειτουργία του WP Rocket με την εγκατάστασή σας στο Kinsta. " +"Παρακαλώ, επικοινωνήστε με την υποστήριξη του Kinsta μέσω του " +"%1$sMykinsta%2$s λογαριασμού σας, για να επιλύσετε αυτό το πρόβλημα." + +#: inc/3rd-party/plugins/jetpack.php:86 +msgid "Jetpack XML Sitemaps" +msgstr "Jetpack XML Sitemaps" + +#: inc/3rd-party/plugins/jetpack.php:88 +msgid "Preload the sitemap from the Jetpack plugin" +msgstr "Προφόρτωση του sitemap από το Jetpack plugin" + +#: inc/3rd-party/plugins/jetpack.php:96 +#: inc/3rd-party/plugins/seo/all-in-one-seo-pack.php:88 +#: inc/3rd-party/plugins/seo/rank-math-seo.php:34 +#: inc/3rd-party/plugins/seo/seopress.php:85 +#: inc/3rd-party/plugins/seo/the-seo-framework.php:123 +#: inc/3rd-party/plugins/seo/yoast-seo.php:86 +#, php-format +msgid "" +"We automatically detected the sitemap generated by the %s plugin. You can " +"check the option to preload it." +msgstr "" +"Αναγνωρίσαμε αυτόματα το sitemap που δημιουργήθηκε από το plugin %s. " +"Μπορείτε να ενεργοποιήσετε αυτή την επιλογή, για να γίνει προφόρτωσή του." + +#: inc/3rd-party/plugins/seo/all-in-one-seo-pack.php:86 +msgid "All in One SEO XML sitemap" +msgstr "All in One SEO XML sitemap" + +#: inc/3rd-party/plugins/seo/rank-math-seo.php:32 +msgid "Rank Math XML sitemap" +msgstr "" + +#: inc/3rd-party/plugins/seo/seopress.php:83 +msgid "SEOPress XML sitemap" +msgstr "" + +#: inc/3rd-party/plugins/seo/the-seo-framework.php:121 +msgid "The SEO Framework XML sitemap" +msgstr "" + +#: inc/3rd-party/plugins/seo/yoast-seo.php:84 +msgid "Yoast SEO XML sitemap" +msgstr "Yoast SEO XML sitemap" + +#: inc/admin/admin.php:13 inc/common/admin-bar.php:311 +#: inc/deprecated/deprecated.php:1789 +msgid "Support" +msgstr "Τεχνική Υποστήριξη" + +#: inc/admin/admin.php:15 +msgid "Docs" +msgstr "Εγχειρίδια Χρήσης" + +#: inc/admin/admin.php:17 inc/common/admin-bar.php:299 +msgid "FAQ" +msgstr "Συχνές Ερωτήσεις" + +#: inc/admin/admin.php:19 inc/common/admin-bar.php:46 +msgid "Settings" +msgstr "Ρυθμίσεις" + +#: inc/admin/admin.php:64 inc/admin/admin.php:86 inc/admin/admin.php:105 +msgid "Clear this cache" +msgstr "Εκκαθάριση της cache" + +#: inc/admin/admin.php:249 inc/admin/admin.php:264 +#: inc/classes/class-wp-rocket-requirements-check.php:204 +#: inc/classes/class-wp-rocket-requirements-check.php:214 +#, php-format +msgid "%s Update Rollback" +msgstr "%s Επιστροφή σε προηγούμενη έκδοση" + +#: inc/admin/admin.php:290 +#, php-format +msgid "%1$sReturn to WP Rocket%2$s or %3$sgo to Plugins page%2$s" +msgstr "" + +#: inc/admin/admin.php:529 +msgid "Settings import failed: you do not have the permissions to do this." +msgstr "" +"Η εισαγωγή των ρυθμίσεων απέτυχε: δεν έχετε την άδεια γι' αυτή την ενέργεια." + +#: inc/admin/admin.php:533 +msgid "Settings import failed: no file uploaded." +msgstr "Η εισαγωγή των ρυθμίσεων απέτυχε: δεν ανεβάσατε κάποιο αρχείο." + +#: inc/admin/admin.php:537 +msgid "Settings import failed: incorrect filename." +msgstr "Η εισαγωγή των ρυθμίσεων απέτυχε: λάθος όνομα αρχείου." + +#: inc/admin/admin.php:546 +msgid "Settings import failed: incorrect filetype." +msgstr "Η εισαγωγή των ρυθμίσεων απέτυχε: λάθος τύπος αρχείου." + +#: inc/admin/admin.php:554 +msgid "Settings import failed: " +msgstr "" + +#: inc/admin/admin.php:571 +msgid "Settings import failed: unexpected file content." +msgstr "" + +#: inc/admin/admin.php:592 +msgid "Settings imported and saved." +msgstr "Η εισαγωγή και αποθήκευση των ρυθμίσεων ολοκληρώθηκε." + +#: inc/admin/options.php:101 +#, php-format +msgid "Cloudflare development mode error: %s" +msgstr "Σφάλμα Cloudflare develoment mode: %s" + +#: inc/admin/options.php:107 +#, php-format +msgid "Cloudflare development mode %s" +msgstr "Cloudflare development mode %s" + +#: inc/admin/options.php:124 +#, php-format +msgid "Cloudflare cache level error: %s" +msgstr "Σφάλμα Cloudflare cache level: %s" + +#: inc/admin/options.php:128 +msgctxt "Cloudflare caching level" +msgid "Standard" +msgstr "Τυπικό" + +#: inc/admin/options.php:134 +#, php-format +msgid "Cloudflare cache level set to %s" +msgstr "Το επίπεδο cache του Cloudflare έχει οριστεί σε %s" + +#: inc/admin/options.php:146 +#, php-format +msgid "Cloudflare minification error: %s" +msgstr " Cloudflare σφάλμα ελαχιστοποίησης: 1%s" + +#: inc/admin/options.php:152 +#, php-format +msgid "Cloudflare minification %s" +msgstr "Ελαχιστοποίηση από το Cloudflare 1%s" + +#: inc/admin/options.php:164 +#, php-format +msgid "Cloudflare rocket loader error: %s" +msgstr "Σφάλμα Cloudflare rocket loader: %s" + +#: inc/admin/options.php:170 +#, php-format +msgid "Cloudflare rocket loader %s" +msgstr "Cloudflare rocket loader %s" + +#: inc/admin/options.php:182 +#, php-format +msgid "Cloudflare browser cache error: %s" +msgstr "Σφάλμα cache περιηγητή από Cloudflare: %s" + +#: inc/admin/options.php:188 +#, php-format +msgid "Cloudflare browser cache set to %s seconds" +msgstr "Η cache περιηγητή έχει οριστεί από το Cloudflare σε %s δευτερόλεπτα" + +#: inc/admin/options.php:241 inc/classes/admin/settings/class-page.php:692 +msgid "Excluded CSS Files" +msgstr "" + +#: inc/admin/options.php:242 inc/classes/admin/settings/class-page.php:784 +msgid "Excluded Inline JavaScript" +msgstr "" + +#: inc/admin/options.php:243 inc/classes/admin/settings/class-page.php:802 +msgid "Excluded JavaScript Files" +msgstr "" + +#: inc/admin/options.php:244 inc/classes/admin/settings/class-page.php:1128 +msgid "Never Cache URL(s)" +msgstr "" + +#: inc/admin/options.php:245 inc/classes/admin/settings/class-page.php:1144 +msgid "Never Cache User Agent(s)" +msgstr "" + +#: inc/admin/options.php:246 inc/classes/admin/settings/class-page.php:1149 +msgid "Always Purge URL(s)" +msgstr "" + +#: inc/admin/options.php:247 inc/classes/admin/settings/class-page.php:1443 +msgid "Exclude files from CDN" +msgstr "" + +#: inc/admin/options.php:265 +#, php-format +msgid "%1$s: %2$s." +msgstr "" + +#: inc/admin/options.php:275 +msgid "The following pattern is invalid and has been removed:" +msgid_plural "The following patterns are invalid and have been removed:" +msgstr[0] "" +msgstr[1] "" + +#: inc/admin/ui/meta-boxes.php:14 inc/admin/ui/notices.php:955 +#: inc/common/admin-bar.php:65 inc/common/admin-bar.php:118 +#: views/settings/page-sections/dashboard.php:115 +msgid "Clear cache" +msgstr "Εκκαθάριση cache" + +#: inc/admin/ui/meta-boxes.php:36 +msgid "WP Rocket Options" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:66 +msgid "Never cache this page" +msgstr "Απενεργοποίηση caching σε αυτήν τη σελίδα" + +#: inc/admin/ui/meta-boxes.php:70 +msgid "Activate these options on this post:" +msgstr "Ενεργοποίησε τις επιλογές γι' αυτό το άρθρο:" + +#: inc/admin/ui/meta-boxes.php:73 +msgid "LazyLoad for images" +msgstr "LazyLoad για εικόνες" + +#: inc/admin/ui/meta-boxes.php:74 +msgid "LazyLoad for iframes/videos" +msgstr "LazyLoad για iframes/videos" + +#: inc/admin/ui/meta-boxes.php:75 +#: inc/classes/admin/settings/class-page.php:615 +msgid "Minify HTML" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:76 +msgid "Minify/combine CSS" +msgstr "Ελαχιστοποίηση/συνδυασμός CSS" + +#: inc/admin/ui/meta-boxes.php:77 +msgid "Minify/combine JS" +msgstr "Ελαχιστοποίηση/συνδυασμός JS" + +#: inc/admin/ui/meta-boxes.php:78 +#: inc/classes/admin/settings/class-page.php:1413 +#: inc/classes/admin/settings/class-page.php:1424 +#: inc/deprecated/deprecated.php:1775 +msgid "CDN" +msgstr "CDN" + +#: inc/admin/ui/meta-boxes.php:79 +msgid "Optimize CSS Delivery" +msgstr "Βελτιστοποίηση Διανομής CSS" + +#: inc/admin/ui/meta-boxes.php:80 +msgid "Defer JS" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:86 +#, php-format +msgid "Activate first the %s option." +msgstr "Ενεργοποίησε πρώτα την 1%s επιλογή." + +#: inc/admin/ui/meta-boxes.php:102 +#, php-format +msgid "" +"%1$sNote:%2$s None of these options will be applied if this post has been " +"excluded from cache in the global cache settings." +msgstr "" + +#: inc/admin/ui/notices.php:24 inc/admin/ui/notices.php:34 +#, php-format +msgid "" +"%1$s has not been deactivated due to missing writing permissions.
      \n" +"Make %2$s writeable and retry deactivation, or force deactivation now:" +msgstr "" +"%1$s δεν έχει απενεργοποιηθεί λόγω απουσίας άδειας εγγραφής του αρχείου.
      \n" +"Αλλάξτε την άδεια του αρχείου %2$s σε εγγράψιμη και προσπαθήστε ξανά ή επιβάλλετε την απενεργοποίηση τώρα:" + +#: inc/admin/ui/notices.php:83 +#, php-format +msgid "" +"%s: One or more plugins have been enabled or disabled, " +"clear the cache if they affect the front end of your site." +msgstr "" + +#: inc/admin/ui/notices.php:196 +#, php-format +msgid "" +"%s: The following plugins are not compatible with this " +"plugin and may cause unexpected results:" +msgstr "" + +#: inc/admin/ui/notices.php:202 +msgid "Deactivate" +msgstr "Απενεργοποίησε" + +#: inc/admin/ui/notices.php:243 +msgid "" +"WP Rocket Footer JS is not an official add-on. It prevents some options in " +"WP Rocket from working correctly. Please deactivate it if you have problems." +msgstr "" + +#: inc/admin/ui/notices.php:283 +#, php-format +msgid "" +"Endurance Cache is currently enabled, which will conflict with WP Rocket " +"Cache. Please set the Endurance Cache cache level to Off (Level 0) on the " +"%1$sSettings > General%2$s page to prevent any issues." +msgstr "" + +#: inc/admin/ui/notices.php:305 +#, php-format +msgid "" +"%1$s: A custom permalink structure is required for the plugin to work " +"properly. %2$sGo to permalinks settings%3$s" +msgstr "" + +#: inc/admin/ui/notices.php:442 +#, php-format +msgid "" +"%s could not modify the .htaccess file due to missing writing permissions." +msgstr "" + +#: inc/admin/ui/notices.php:448 inc/admin/ui/notices.php:1032 +#, php-format +msgid "Troubleshoot: %1$sHow to make system files writeable%2$s" +msgstr "" + +#: inc/admin/ui/notices.php:450 inc/admin/ui/notices.php:1034 +msgid "" +"https://docs.wp-rocket.me/article/626-how-to-make-system-files-htaccess-wp-" +"config-writeable/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" + +#: inc/admin/ui/notices.php:456 +msgid "" +"Don’t worry, WP Rocket’s page caching and settings will still function " +"correctly." +msgstr "" + +#: inc/admin/ui/notices.php:456 +msgid "" +"For optimal performance, adding the following lines into your .htaccess is " +"recommended (not required):" +msgstr "" + +#: inc/admin/ui/notices.php:600 +#, php-format +msgid "" +"%1$s is good to go! %2$sTest your load time%4$s, or visit your " +"%3$ssettings%4$s." +msgstr "" + +#: inc/admin/ui/notices.php:721 +msgid "" +"Would you allow WP Rocket to collect non-sensitive diagnostic data from this" +" website?" +msgstr "" +"Θα επιτρέψετε στο WP Rocket να συλλέξει μη ευαίσθητα διαγνωστικά δεδομένα " +"από αυτόν τον ιστότοπο;" + +#: inc/admin/ui/notices.php:722 +msgid "This would help us to improve WP Rocket for you in the future." +msgstr "Αυτό θα μας βοηθήσει να βελτιώσουμε το WP Rocket για εσάς στο μέλλον." + +#: inc/admin/ui/notices.php:728 +msgid "What info will we collect?" +msgstr "Τι πληροφορίες συλλέγουμε;" + +#: inc/admin/ui/notices.php:733 +msgid "" +"Below is a detailed view of all data WP Rocket will collect if granted " +"permission. WP Rocket will never transmit any domain names or email " +"addresses (except for license validation), IP addresses, or third-party API " +"keys." +msgstr "" +"Παρακάτω δίνεται μια λεπτομερής απεικόνιση όλων των δεδομένων που θα " +"συγκεντρώσει το WP Rocket, εάν χορηγηθεί άδεια. Το WP Rocket δεν θα " +"μεταδόσει ποτέ ονόματα τομέα ή διευθύνσεις ηλεκτρονικού ταχυδρομείου (εκτός " +"από την επικύρωση άδειας), διευθύνσεις IP ή κλειδιά API τρίτου μέρους." + +#: inc/admin/ui/notices.php:742 +msgid "Yes, allow" +msgstr "Ναι, επιτρέπω" + +#: inc/admin/ui/notices.php:745 +msgid "No, thanks" +msgstr "Όχι, ευχαριστώ" + +#: inc/admin/ui/notices.php:783 +msgid "Thank you!" +msgstr "Ευχαριστούμε!" + +#: inc/admin/ui/notices.php:788 +msgid "WP Rocket now collects these metrics from your website:" +msgstr "Το WP Rocket συλλέγει αυτά τα στοιχεία από το site σου:" + +#: inc/admin/ui/notices.php:825 +#, php-format +msgid "%s: Cache cleared." +msgstr "%s: Έγινε εκκαθάριση της cache." + +#: inc/admin/ui/notices.php:830 +#, php-format +msgid "%s: Post cache cleared." +msgstr "%s: Έγινε εκκαθάριστη της cache του άρθρου." + +#: inc/admin/ui/notices.php:835 +#, php-format +msgid "%s: Term cache cleared." +msgstr "%s: Έγινε εκκαθάριση της cache των όρων ταξινομίας" + +#: inc/admin/ui/notices.php:840 +#, php-format +msgid "%s: User cache cleared." +msgstr "%s: Έγινε εκκαθάριση της cache χρήστη." + +#: inc/admin/ui/notices.php:910 +msgid "" +"The following scheduled event failed to run. This may indicate the CRON " +"system is not running properly, which can prevent some WP Rocket features " +"from working as intended:" +msgid_plural "" +"The following scheduled events failed to run. This may indicate the CRON " +"system is not running properly, which can prevent some WP Rocket features " +"from working as intended:" +msgstr[0] "" +msgstr[1] "" + +#: inc/admin/ui/notices.php:919 +msgid "Please contact your host to check if CRON is working." +msgstr "" + +#: inc/admin/ui/notices.php:958 +msgid "Stop Preload" +msgstr "" + +#: inc/admin/ui/notices.php:976 +msgid "Force deactivation " +msgstr "Αναγκαστική απενεργοποίηση" + +#: inc/admin/ui/notices.php:989 +msgid "The following code should have been written to this file:" +msgstr "" + +#: inc/admin/ui/notices.php:999 views/settings/page-sections/dashboard.php:45 +msgid "Dismiss this notice." +msgstr "Απορρίψτε την παρούσα ειδοποίηση." + +#: inc/admin/ui/notices.php:1020 +#, php-format +msgid "%s cannot configure itself due to missing writing permissions." +msgstr "" + +#: inc/admin/ui/notices.php:1026 +#, php-format +msgid "Affected file/folder: %s" +msgstr "" + +#: inc/classes/admin/Database/class-optimization.php:41 +#: inc/classes/admin/settings/class-page.php:1289 +msgid "Revisions" +msgstr "" + +#: inc/classes/admin/Database/class-optimization.php:42 +#: inc/classes/admin/settings/class-page.php:1299 +msgid "Auto Drafts" +msgstr "" + +#: inc/classes/admin/Database/class-optimization.php:43 +#: inc/classes/admin/settings/class-page.php:1309 +msgid "Trashed Posts" +msgstr "" + +#: inc/classes/admin/Database/class-optimization.php:44 +#: inc/classes/admin/settings/class-page.php:1319 +msgid "Spam Comments" +msgstr "" + +#: inc/classes/admin/Database/class-optimization.php:45 +#: inc/classes/admin/settings/class-page.php:1329 +msgid "Trashed Comments" +msgstr "" + +#: inc/classes/admin/Database/class-optimization.php:46 +#: inc/classes/admin/settings/class-page.php:1339 +msgid "Expired transients" +msgstr "" + +#: inc/classes/admin/Database/class-optimization.php:47 +msgid "Transients" +msgstr "" + +#: inc/classes/admin/Database/class-optimization.php:48 +msgid "Tables" +msgstr "" + +#: inc/classes/admin/class-logs.php:124 +msgid "The debug file could not be deleted." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:212 +#: inc/classes/admin/settings/class-page.php:213 +msgid "Unavailable" +msgstr "Μη διαθέσιμο" + +#: inc/classes/admin/settings/class-page.php:327 +#: inc/deprecated/deprecated.php:1791 +#: views/settings/page-sections/dashboard.php:72 +msgid "License" +msgstr "Άδεια Χρήσης" + +#: inc/classes/admin/settings/class-page.php:344 +msgid "API key" +msgstr "Κλειδί API" + +#: inc/classes/admin/settings/class-page.php:359 +msgid "Email address" +msgstr "Διεύθυνση Email" + +#: inc/classes/admin/settings/class-page.php:388 +msgid "Dashboard" +msgstr " Πίνακας Ελέγχου" + +#: inc/classes/admin/settings/class-page.php:389 +msgid "Get help, account info" +msgstr "Βοήθεια, πληροφορίες λογαριασμού" + +#: inc/classes/admin/settings/class-page.php:398 +msgid "My Status" +msgstr "Η Κατάστασή μου" + +#: inc/classes/admin/settings/class-page.php:408 views/settings/page.php:71 +msgid "Rocket Tester" +msgstr "Δοκιμαστής Rocket" + +#: inc/classes/admin/settings/class-page.php:409 +msgid "I am part of the WP Rocket Beta Testing Program." +msgstr "Είμαι μέρος του προγραμμάτος beta δοκιμών του WP Rocket." + +#: inc/classes/admin/settings/class-page.php:417 views/settings/page.php:89 +msgid "Rocket Analytics" +msgstr "Αναλυτικά Στοιχεία Rocket" + +#: inc/classes/admin/settings/class-page.php:419 +#, php-format +msgid "" +"I agree to share anonymous data with the development team to help improve WP" +" Rocket. %1$sWhat info will we collect?%2$s" +msgstr "" +"Συμφωνώ να μοιραστώ ανώνυμα δεδομένα με την ομάδα ανάπτυξης για να βοηθήσω " +"στη βελτίωση του WP Rocket. %1$s Τι πληροφορίες θα συλλέξουμε; %2$s" + +#: inc/classes/admin/settings/class-page.php:447 +msgid "Cache" +msgstr "Cache" + +#: inc/classes/admin/settings/class-page.php:448 +msgid "Basic cache options" +msgstr "Βασικές επιλογές cache" + +#: inc/classes/admin/settings/class-page.php:455 +msgid "Mobile Cache" +msgstr "Cache για κινητά" + +#: inc/classes/admin/settings/class-page.php:457 +msgid "Speed up your site for mobile visitors." +msgstr "Επιταχύνετε τον ιστότοπό σας για επισκέπτες από κινητά." + +#: inc/classes/admin/settings/class-page.php:462 +msgid "" +"We detected you use a plugin that requires a separate cache for mobile, and " +"automatically enabled this option for compatibility." +msgstr "" +"Εντοπίσαμε τη χρήση ενός plugin που απαιτεί ξεχωριστή μνήμη cache για κινητά" +" και ενεργοποίησαμε αυτόματα αυτήν την επιλογή για συμβατότητα." + +#: inc/classes/admin/settings/class-page.php:466 +msgid "User Cache" +msgstr "Cache Χρήστη" + +#: inc/classes/admin/settings/class-page.php:469 +#, php-format +msgid "" +"%1$sUser cache%2$s is great when you have user-specific or restricted " +"content on your website." +msgstr "" +"%1$sΗ cache χρηστών%2$s είναι σημαντική, όταν έχετε συγκεκριμένο περιεχόμενο" +" ανά χρήστη ή περιορισμό πρόσβασης σε περιεχόμενο στον ιστότοπό σας." + +#: inc/classes/admin/settings/class-page.php:477 +msgid "Cache Lifespan" +msgstr "Διάρκεια ζωής της Cache" + +#: inc/classes/admin/settings/class-page.php:480 +#, php-format +msgid "" +"Cache lifespan is the period of time after which all cache files are " +"removed.
      Enable %1$spreloading%2$s for the cache to be rebuilt " +"automatically after lifespan expiration." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:494 +msgid "Enable caching for logged-in WordPress users" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:502 +msgid "Enable caching for mobile devices" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:517 +msgid "Separate cache files for mobile devices" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:519 +#, php-format +msgid "" +"%1$sMobile cache%2$s works safest with both options enabled. When in doubt, " +"keep both." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:535 +msgid "" +"Specify time after which the global cache is cleared
      (0 = unlimited )" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:537 +#, php-format +msgid "" +"Reduce lifespan to 10 hours or less if you notice issues that seem to appear" +" periodically. %1$sWhy?%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:543 +msgid "Minutes" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:544 +msgid "Hours" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:545 +msgid "Days" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:571 +msgid "File Optimization" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:572 +msgid "Optimize CSS & JS" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:579 +msgid "Basic Settings" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:586 +#: inc/classes/admin/settings/class-page.php:596 +#: inc/classes/admin/settings/class-page.php:606 +#, php-format +msgid "" +"%1$s Minification is currently activated in Autoptimize. If" +" you want to use %2$s’s minification, disable those options in Autoptimize." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:589 +msgid "CSS Files" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:599 +msgid "JavaScript Files" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:619 +msgid "Minifying HTML removes whitespace and comments to reduce the size." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:630 +msgid "Combine Google Fonts files" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:631 +msgid "Combining Google Fonts will reduce the number of HTTP requests." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:639 +msgid "Remove query strings from static resources" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:641 +#, php-format +msgid "" +"Removes the version query string from static files (e.g. style.css?ver=1.0) " +"and encodes it into the filename instead (e.g. style-1.0.css). Can improve " +"your GTMetrix score. %1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:649 +msgid "Minify CSS files" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:650 +msgid "Minify CSS removes whitespace and comments to reduce the file size." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:663 +#: inc/classes/admin/settings/class-page.php:685 +#: inc/classes/admin/settings/class-page.php:755 +#: inc/classes/admin/settings/class-page.php:777 +msgid "This could break things!" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:664 +#: inc/classes/admin/settings/class-page.php:686 +#: inc/classes/admin/settings/class-page.php:756 +#: inc/classes/admin/settings/class-page.php:778 +msgid "" +"If you notice any errors on your website after having activated this " +"setting, just deactivate it again, and your site will be back to normal." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:665 +msgid "Activate minify CSS" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:670 +msgid "Combine CSS files (Enable Minify CSS files to select)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:672 +#, php-format +msgid "" +"Combine CSS merges all your files into 1, reducing HTTP requests. Not " +"recommended if your site uses HTTP/2. %1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:687 +msgid "Activate combine CSS" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:693 +msgid "" +"Specify URLs of CSS files to be excluded from minification and concatenation" +" (one per line)." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:694 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*).css " +"wildcards to exclude all CSS files located at a specific path." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:707 +msgid "Optimize CSS delivery" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:714 +#, php-format +msgctxt "WP Critical CSS compatibility" +msgid "" +"Optimize CSS Delivery is currently handled by the %1$s plugin. If you want " +"to use WP Rocket’s Optimize CSS Delivery option, disable the %1$s plugin." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:716 +#, php-format +msgid "" +"Optimize CSS delivery eliminates render-blocking CSS on your website for " +"faster perceived load time. %1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:727 +msgid "Fallback critical CSS" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:732 +#, php-format +msgid "" +"Provides a fallback if auto-generated critical path CSS is incomplete. " +"%1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:741 +msgid "Minify JavaScript files" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:742 +msgid "" +"Minify JavaScript removes whitespace and comments to reduce the file size." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:757 +msgid "Activate minify JavaScript" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:762 +msgid "" +"Combine JavaScript files (Enable Minify JavaScript files to select)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:764 +#, php-format +msgid "" +"Combine JavaScript files combines your site’s internal, 3rd party and inline" +" JS reducing HTTP requests. Not recommended if your site uses HTTP/2. " +"%1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:779 +msgid "Activate combine JavaScript" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:786 +#, php-format +msgid "" +"Specify patterns of inline JavaScript to be excluded from concatenation (one" +" per line). %1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:803 +msgid "" +"Specify URLs of JavaScript files to be excluded from minification and " +"concatenation (one per line)." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:804 +msgid "" +"Internal: The domain part of the URL will be stripped " +"automatically. Use (.*).js wildcards to exclude all JS files located at a " +"specific path." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:806 +#, php-format +msgid "" +"3rd Party: Use either the full URL path or only the domain " +"name, to exclude external JS. %1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:822 +msgid "Load JavaScript deferred" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:824 +#, php-format +msgid "" +"Load JavaScript deferred eliminates render-blocking JS on your site and can " +"improve load time. %1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:835 +msgid "Safe Mode for jQuery (recommended)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:836 +msgid "" +"Safe mode for jQuery for deferred JS ensures support for inline jQuery " +"references from themes and plugins by loading jQuery at the top of the " +"document as a render-blocking script.
      Deactivating may result in " +"broken functionality, test thoroughly!" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:861 +msgid "Media" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:862 +msgid "LazyLoad, emojis, embeds" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:869 +msgid "LazyLoad" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:872 +#, php-format +msgid "" +"It can improve actual and perceived loading time as images, iframes, and " +"videos will be loaded only as they enter (or about to enter) the viewport " +"and reduces the number of HTTP requests. %1$sMore Info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:879 +#, php-format +msgid "" +"Lazyload is currently activated in Autoptimize. If you want" +" to use %1$s’s lazyload, disable this option in Autoptimize." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:882 +msgid "Emoji 👻" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:884 +msgid "" +"Use default emoji of visitor's browser instead of loading emoji from " +"WordPress.org" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:888 +msgid "Embeds" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:890 +msgid "" +"Prevents others from embedding content from your site, prevents you from " +"embedding content from other (non-whitelisted) sites, and removes JavaScript" +" requests related to WordPress embeds" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:900 +msgid "Enable for images" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:911 +msgctxt "Avada" +msgid "" +"Lazyload for images is currently activated in Avada. If you want to use WP " +"Rocket’s LazyLoad, disable this option in Avada." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:919 +msgid "Enable for iframes and videos" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:934 +msgid "Replace YouTube iframe with preview image" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:935 +msgid "" +"This can significantly improve your loading time if you have a lot of " +"YouTube videos on a page." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:947 +msgid "Disable Emoji" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:948 +msgid "Disable Emoji will reduce the number of external HTTP requests." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:956 +msgid "Disable WordPress embeds" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:978 +#: inc/classes/admin/settings/class-page.php:988 +#: inc/deprecated/deprecated.php:1778 +msgid "Preload" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:979 +msgid "Generate cache files" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:991 +#, php-format +msgid "" +"When you enable preloading WP Rocket will generate the cache starting with " +"the links on your homepage followed by the sitemaps you specify. Preloading " +"is automatically triggered when you add or update content and can also be " +"manually triggered from the admin bar or from the %1$sWP Rocket " +"Dashboard%2$s." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:999 +msgid "Prefetch DNS Requests" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1001 +msgid "" +"DNS prefetching can make external files load faster, especially on mobile " +"networks" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1015 +msgid "Activate Preloading" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1034 +msgid "Activate sitemap-based cache preloading" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1053 +msgid "Sitemaps for preloading" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1057 +msgid "Specify XML sitemap(s) to be used for preloading" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1067 +msgid "URLs to prefetch" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1068 +msgid "" +"Specify external hosts to be prefetched (no http:, one per " +"line)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1091 +msgid "Advanced Rules" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1092 +msgid "Fine-tune cache rules" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1101 +msgid "" +"Sensitive pages like custom login/logout URLs should be excluded from cache." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1104 +msgctxt "plugin name" +msgid "WooCommerce" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1106 +msgctxt "plugin name" +msgid "Easy Digital Downloads" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1108 +msgctxt "plugin name" +msgid "iThemes Exchange" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1110 +msgctxt "plugin name" +msgid "Jigoshop" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1112 +msgctxt "plugin name" +msgid "WP-Shop" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1118 +#, php-format +msgid "" +"
      Cart, checkout and \"my account\" pages set in " +"%1$s%2$s%3$s will be detected and never cached by default." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1139 +msgid "Never Cache Cookies" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1158 +msgid "Cache Query String(s)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1161 +#, php-format +msgid "" +"%1$sCache for query strings%2$s enables you to force caching for specific " +"GET parameters." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1175 +msgid "" +"Specify URLs of pages or posts that should never be cached (one per line)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1176 +#: inc/classes/admin/settings/class-page.php:1204 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*) " +"wildcards to address multiple URLs under a given path." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1185 +msgid "" +"Specify the IDs of cookies that, when set in the visitor's browser, should " +"prevent a page from getting cached (one per line)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1193 +msgid "" +"Specify user agent strings that should never see cached pages (one per line)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1194 +msgid "Use (.*) wildcards to detect parts of UA strings." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1203 +msgid "" +"Specify URLs you always want purged from cache whenever you update any post " +"or page (one per line)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1212 +msgid "Specify query strings for caching (one per line)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1240 +#: inc/deprecated/deprecated.php:1777 +msgid "Database" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1241 +msgid "Optimize, reduce bloat" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1250 +msgid "Post Cleanup" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1252 +msgid "" +"Post revisions and drafts will be permanently deleted. Do not use this " +"option if you need to retain revisions or drafts." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1260 +msgid "Comments Cleanup" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1262 +msgid "Spam and trashed comments will be permanently deleted." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1266 +msgid "Transients Cleanup" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1268 +msgid "" +"Transients are temporary options; they are safe to remove. They will be " +"automatically regenerated as your plugins require them." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1272 +msgid "Database Cleanup" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1274 +msgid "Reduces overhead of database tables" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1278 +msgid "Automatic cleanup" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1291 +#, php-format +msgid "%s revision in your database." +msgid_plural "%s revisions in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1301 +#, php-format +msgid "%s draft in your database." +msgid_plural "%s drafts in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1311 +#, php-format +msgid "%s trashed post in your database." +msgid_plural "%s trashed posts in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1321 +#, php-format +msgid "%s spam comment in your database." +msgid_plural "%s spam comments in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1331 +#, php-format +msgid "%s trashed comment in your database." +msgid_plural "%s trashed comments in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1341 +#, php-format +msgid "%s expired transient in your database." +msgid_plural "%s expired transients in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1349 +msgid "All transients" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1351 +#, php-format +msgid "%s transient in your database." +msgid_plural "%s transients in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1359 +msgid "Optimize Tables" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1361 +#, php-format +msgid "%s table to optimize in your database." +msgid_plural "%s tables to optimize in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1372 +msgid "Schedule Automatic Cleanup" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1384 +msgid "Frequency" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1392 +msgid "Daily" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1393 +msgid "Weekly" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1394 +msgid "Monthly" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1414 +msgid "Integrate your CDN" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1426 +msgid "" +"All URLs of static files (CSS, JS, images) will be rewritten to the CNAME(s)" +" you provide." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1428 +#, php-format +msgid "" +"Not required for services like Cloudflare and Sucuri. Please see our " +"available %1$sAdd-ons%2$s." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1469 +#, php-format +msgid "" +"%1$s%2$s Add-on%3$s is currently enabled. Configuration of the CDN settings " +"is not required for %2$s to work on your site." +msgid_plural "" +"%1$s%2$s Add-ons%3$s are currently enabled. Configuration of the CDN " +"settings is not required for %2$s to work on your site." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1484 +msgid "Enable Content Delivery Network" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1493 +msgid "CDN CNAME(s)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1494 +msgid "Specify the CNAME(s) below" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1501 +msgid "" +"Specify URL(s) of files that should not get served via CDN (one per line)." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1502 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*) " +"wildcards to exclude all files of a given file type located at a specific " +"path." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1525 +#: inc/classes/admin/settings/class-page.php:1533 +msgid "Heartbeat" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1526 +msgid "Control WordPress Heartbeat API" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1534 +msgid "" +"Reducing or disabling the Heartbeat API’s activity can help save some of " +"your server’s resources." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1543 +msgid "Reduce or disable Heartbeat activity" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1544 +msgid "" +"Reducing activity will change Heartbeat frequency from one hit each minute " +"to one hit every 2 minutes." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1544 +msgid "" +"Disabling Heartbeat entirely may break plugins and themes using this API." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1558 +msgid "Do not limit" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1559 +msgid "Reduce activity" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1560 +msgid "Disable" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1568 +msgid "Control Heartbeat" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1577 +msgid "Behavior in backend" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1584 +msgid "Behavior in post editor" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1590 +msgid "Behavior in frontend" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1609 +msgid "Add-ons" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1610 +msgid "Add more features" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1617 +msgid "One-click Rocket Add-ons" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1618 +msgid "" +"One-Click Add-ons are features extending available options without " +"configuration needed. Switch the option \"on\" to enable from this screen." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1628 +msgid "Rocket Add-ons" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1629 +msgid "Rocket Add-ons are complementary features extending available options." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1642 +msgid "Google Tracking" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1648 +msgid "Improve browser caching for Google Analytics" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1650 +#, php-format +msgid "" +"WP Rocket will host these Google scripts locally on your server to help " +"satisfy the PageSpeed recommendation for Leverage browser " +"caching.
      %1$sLearn more%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1665 +msgid "Facebook Pixel" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1671 +msgid "Improve browser caching for Facebook Pixel" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1673 +#, php-format +msgid "" +"WP Rocket will host these Facebook Pixels locally on your server to help " +"satisfy the PageSpeed recommendation for Leverage browser " +"caching.
      %1$sLearn more%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1706 +msgid "Varnish" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1712 +msgid "If Varnish runs on your server, you must activate this add-on." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1714 +#, php-format +msgid "" +"Varnish cache will be purged each time WP Rocket clears its cache to ensure " +"content is always up-to-date.
      %1$sLearn more%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1729 +#: inc/classes/admin/settings/class-page.php:1789 +msgid "Cloudflare" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1735 +msgid "Integrate your Cloudflare account with this add-on." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1736 +msgid "" +"Provide your account email, global API key, and domain to use options such " +"as clearing the Cloudflare cache and enabling optimal settings with WP " +"Rocket." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1748 +msgid "Clear the Sucuri cache when WP Rocket’s cache is cleared." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1751 +msgid "" +"Provide your API key to clear the Sucuri cache when WP Rocket’s cache is " +"cleared." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1759 +#: inc/classes/admin/settings/class-page.php:1907 +msgid "Sucuri" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1765 +msgid "Synchronize Sucuri cache with this add-on." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1805 +msgid "Cloudflare credentials" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1814 +msgid "Cloudflare settings" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1828 +msgctxt "Cloudflare" +msgid "Global API key:" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1829 +msgid "" +"https://support.cloudflare.com/hc/en-us/articles/200167836-Where-do-I-find-" +"my-Cloudflare-API-key-" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1829 +msgctxt "Cloudflare" +msgid "Find your API key" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1841 +msgctxt "Cloudflare" +msgid "Account email" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1850 +msgctxt "Cloudflare" +msgid "Zone ID" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1860 +msgid "Development mode" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1862 +#, php-format +msgid "" +"Temporarily activate development mode on your website. This setting will " +"automatically turn off after 3 hours. %1$sLearn more%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1870 +msgid "Optimal settings" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1871 +msgid "" +"Automatically enhances your Cloudflare configuration for speed, performance " +"grade and compatibility." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1879 +msgid "Relative protocol" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1880 +msgid "" +"Should only be used with Cloudflare's flexible SSL feature. URLs of static " +"files (CSS, JS, images) will be rewritten to use // instead of http:// or " +"https://." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1920 +msgid "Sucuri credentials" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1933 +msgctxt "Sucuri" +msgid "" +"Firewall API key (for plugin), must be in format {32 characters}/{32 " +"characters}:" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1934 +msgctxt "Sucuri" +msgid "Find your API key" +msgstr "" + +#: inc/classes/admin/settings/class-render.php:486 +#: inc/deprecated/deprecated.php:1296 +msgid "Upload file and import settings" +msgstr "" + +#: inc/classes/admin/settings/class-settings.php:385 +msgid "" +"Sucuri Add-on: The API key for the Sucuri firewall must be in format " +"{32 characters}/{32 characters}." +msgstr "" + +#: inc/classes/admin/settings/class-settings.php:462 +#: inc/deprecated/deprecated.php:1247 +msgid "Settings saved." +msgstr "" + +#: inc/classes/class-wp-rocket-requirements-check.php:148 +#, php-format +msgid "To function properly, %1$s %2$s requires at least:" +msgstr "" + +#: inc/classes/class-wp-rocket-requirements-check.php:152 +#, php-format +msgid "" +"PHP %1$s. To use this WP Rocket version, please ask your web host how to " +"upgrade your server to PHP %1$s or higher." +msgstr "" + +#: inc/classes/class-wp-rocket-requirements-check.php:157 +#, php-format +msgid "" +"WordPress %1$s. To use this WP Rocket version, please upgrade WordPress to " +"version %1$s or higher." +msgstr "" + +#: inc/classes/class-wp-rocket-requirements-check.php:160 +msgid "" +"If you are not able to upgrade, you can rollback to the previous version by " +"using the button below." +msgstr "" + +#: inc/classes/class-wp-rocket-requirements-check.php:162 +#: inc/deprecated/deprecated.php:1949 +#, php-format +msgid "Re-install version %s" +msgstr "" + +#: inc/classes/logger/class-logger.php:253 +#: inc/classes/logger/class-logger.php:285 +msgid "The log file does not exist." +msgstr "" + +#: inc/classes/logger/class-logger.php:259 +#: inc/classes/logger/class-logger.php:291 +msgid "The log file could not be read." +msgstr "" + +#: inc/classes/logger/class-logger.php:278 +msgid "The logs are not saved into a file." +msgstr "" + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:88 +#: inc/classes/optimization/CSS/class-critical-css-generation.php:99 +#: inc/classes/optimization/CSS/class-critical-css-generation.php:110 +#: inc/classes/optimization/CSS/class-critical-css-generation.php:120 +#: inc/classes/optimization/CSS/class-critical-css-generation.php:142 +#, php-format +msgid "Critical CSS for %1$s not generated. Error: %2$s" +msgstr "" + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:99 +msgid "The API returned an invalid response code." +msgstr "" + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:110 +msgid "The API returned an empty response." +msgstr "" + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:145 +#, php-format +msgid "The critical CSS content could not be saved as a file in %s." +msgstr "" + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:154 +#, php-format +msgid "Critical CSS for %s generated." +msgstr "" + +#: inc/classes/preload/class-homepage.php:83 +#, php-format +msgid "" +"Preload encountered an error. Could not gather links on %1$s because of the " +"following error: %2$s. %3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-homepage.php:96 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: %2$s. Security measures could be preventing access. " +"%3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-homepage.php:102 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: 404. Please make sure your homepage is accessible in your " +"browser. %2$sLearn more%3$s." +msgstr "" + +#: inc/classes/preload/class-homepage.php:108 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: 500. Please check with your web host about server access. " +"%2$sLearn more%3$s." +msgstr "" + +#: inc/classes/preload/class-homepage.php:114 +#, php-format +msgid "" +"Preload encountered an error. Could not gather links on %1$s because it " +"returned the following response code: %2$s. %3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:138 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not gather links on %1$s because" +" of the following error: %2$s. %3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:153 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: %2$s. Security measures could be preventing access." +" %3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:158 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: 404. Please make sure you entered the correct " +"sitemap URL and it is accessible in your browser. %2$sLearn more%3$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:163 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: 500. Please check with your web host about server " +"access. %2$sLearn more%3$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:168 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not gather links on %1$s because" +" it returned the following response code: %2$s. %3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:184 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not collect links from %1$s " +"because the file is empty. %2$sLearn more%3$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:205 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not collect links from %1$s " +"because of an error during the XML sitemap parsing. %2$sLearn more%3$s." +msgstr "" + +#: inc/classes/subscriber/Optimization/class-critical-css-subscriber.php:138 +#, php-format +msgid "" +"Critical CSS generation is currently running: %1$d of %2$d page types " +"completed. (Refresh this page to view progress)" +msgstr "" + +#: inc/classes/subscriber/Optimization/class-critical-css-subscriber.php:189 +#, php-format +msgid "Critical CSS generation finished for %1$d of %2$d page types." +msgstr "" + +#: inc/classes/subscriber/Optimization/class-critical-css-subscriber.php:203 +msgid "Critical CSS generation encountered one or more errors." +msgstr "" + +#: inc/classes/subscriber/Optimization/class-critical-css-subscriber.php:203 +msgid "Learn more." +msgstr "" + +#: inc/classes/subscriber/Tools/class-cache-dir-size-check-subscriber.php:51 +#: inc/classes/subscriber/class-facebook-tracking-cache-busting-subscriber.php:97 +#: inc/classes/subscriber/class-google-tracking-cache-busting-subscriber.php:154 +#: inc/common/cron.php:33 +msgid "weekly" +msgstr "" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:148 +msgid "Database optimization process is running" +msgstr "" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:179 +msgid "" +"Database optimization process is complete. Everything was already optimized!" +msgstr "" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:182 +msgid "" +"Database optimization process is complete. List of optimized items below:" +msgstr "" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:190 +#, php-format +msgid "%1$d %2$s optimized." +msgstr "" + +#: inc/classes/subscriber/admin/Settings/class-page-subscriber.php:137 +#: inc/deprecated/deprecated.php:1788 +#: views/settings/page-sections/tools.php:33 +msgid "Tools" +msgstr "" + +#: inc/classes/subscriber/admin/Settings/class-page-subscriber.php:138 +msgid "Import, Export, Rollback" +msgstr "" + +#: inc/classes/subscriber/admin/Settings/class-page-subscriber.php:160 +#: views/settings/page-sections/imagify.php:13 +msgid "Image Optimization" +msgstr "" + +#: inc/classes/subscriber/admin/Settings/class-page-subscriber.php:161 +msgid "Compress your images" +msgstr "" + +#: inc/classes/subscriber/preload/class-preload-subscriber.php:212 +#, php-format +msgid "" +"Preload: WP Rocket has started preloading your website. Go to the %1$sWP " +"Rocket settings%2$s page to track progress." +msgstr "" + +#: inc/classes/subscriber/preload/class-preload-subscriber.php:246 +#, php-format +msgid "" +"Preload: %1$s uncached page has now been preloaded. (refresh to see " +"progress)" +msgid_plural "" +"Preload: %1$s uncached pages have now been preloaded. (refresh to see " +"progress)" +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/subscriber/preload/class-preload-subscriber.php:255 +msgid "The following error happened during gathering of the URLs to preload:" +msgid_plural "" +"The following errors happened during gathering of the URLs to preload:" +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/subscriber/preload/class-preload-subscriber.php:308 +#, php-format +msgid "Preload complete: %d pages have been cached." +msgstr "" + +#: inc/classes/subscriber/preload/class-sitemap-preload-subscriber.php:117 +#, php-format +msgid "" +"%1$sSimpleXML PHP extension%2$s is not enabled on your server. Please " +"contact your host to enable it before running sitemap-based cache " +"preloading." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:72 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"Please deactivate the following %s option which conflicts with WP Rocket " +"features:" +msgid_plural "" +"Please deactivate the following %s options which conflict with WP Rocket " +"features:" +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:145 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sdisable emoji%3$s conflicts with WP Rockets %2$sdisable emoji%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:167 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sremove query strings%3$s conflicts with WP Rocket %2$sremove query " +"strings%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:203 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sGZIP compression%3$s conflicts with WP Rocket %2$sGZIP " +"compression%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:239 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sbrowser caching%3$s conflicts with WP Rocket %2$sbrowser " +"caching%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:271 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$spage caching%3$s conflicts with WP Rocket %2$spage caching%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:305 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sasset optimization%3$s conflicts with WP Rocket %2$sfile " +"optimization%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:123 +#, php-format +msgid "Sucuri cache purge error: %s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:128 +msgid "" +"The Sucuri cache is being cleared. Note that it may take up to two minutes " +"for it to be fully flushed." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:242 +msgid "Sucuri firewall API key was not found." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:251 +msgid "Sucuri firewall API key is invalid." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:303 +msgid "Error when contacting Sucuri firewall API." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:313 +#, php-format +msgid "Error when contacting Sucuri firewall API. Error message was: %s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:324 +msgid "Could not get a response from the Sucuri firewall API." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:335 +msgid "Got an invalid response from the Sucuri firewall API." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:345 +msgid "The Sucuri firewall API returned an unknown error." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:348 +#, php-format +msgid "The Sucuri firewall API returned the following error: %s" +msgid_plural "The Sucuri firewall API returned the following errors: %s" +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/traits/trait-updater-api-tools.php:53 +#: inc/deprecated/3.3.php:760 inc/deprecated/3.3.php:769 +#, php-format +msgid "" +"An unexpected error occurred. Something may be wrong with WP-Rocket.me or " +"this server’s configuration. If you continue to have problems, contact support." +msgstr "" + +#: inc/common/admin-bar.php:106 inc/common/admin-bar.php:260 +#: inc/functions/i18n.php:39 inc/functions/i18n.php:48 +msgid "All languages" +msgstr "" + +#: inc/common/admin-bar.php:133 +msgid "Clear this post" +msgstr "" + +#: inc/common/admin-bar.php:147 +msgid "Purge this URL" +msgstr "" + +#: inc/common/admin-bar.php:163 +msgid "Purge OPcache" +msgstr "" + +#: inc/common/admin-bar.php:180 +msgid "Regenerate Critical Path CSS" +msgstr "" + +#: inc/common/admin-bar.php:196 +msgid "Clear Cloudflare cache" +msgstr "" + +#: inc/common/admin-bar.php:217 inc/common/admin-bar.php:272 +#: views/settings/page-sections/dashboard.php:135 +msgid "Preload cache" +msgstr "" + +#: inc/common/admin-bar.php:287 views/settings/partials/documentation.php:13 +msgid "Documentation" +msgstr "" + +#: inc/common/cron.php:24 +#, php-format +msgid "%s clear" +msgstr "" + +#: inc/common/cron.php:39 +msgid "monthly" +msgstr "" + +#: inc/common/purge.php:456 +#, php-format +msgid "Cloudflare cache purge error: %s" +msgstr "" + +#: inc/common/purge.php:461 +msgid "Cloudflare cache successfully purged" +msgstr "" + +#: inc/deprecated/3.2.php:51 views/settings/page-sections/imagify.php:35 +msgid "Activate Imagify" +msgstr "Ενεργοποίησε το Imagify" + +#: inc/deprecated/3.2.php:51 +msgid "Install Imagify for Free" +msgstr "Εγκατέστησε δωρεάν το Imagify" + +#: inc/deprecated/3.2.php:66 +msgid "" +"Speed up your website and boost your SEO by reducing image file sizes " +"without losing quality with Imagify." +msgstr "" +"Επιταχύνετε τον ιστότοπό σας και ενισχύστε το SEO μειώνοντας τα μεγέθη " +"αρχείων εικόνας χωρίς να χάσετε την ποιότητα, με το Imagify." + +#: inc/deprecated/3.2.php:71 +msgid "More details" +msgstr "Περισσότερες λεπτομέρειες" + +#: inc/deprecated/3.2.php:227 +#, php-format +msgid "Sitemap preload: %d pages have been cached." +msgstr "" + +#: inc/deprecated/3.2.php:260 +#, php-format +msgid "" +"Sitemap preload: %d uncached pages have now been preloaded. (refresh to see " +"progress)" +msgstr "" + +#: inc/deprecated/deprecated.php:242 +msgid "JS files with Deferred Loading JavaScript" +msgstr "" + +#: inc/deprecated/deprecated.php:295 +msgid "Add URL" +msgstr "" + +#: inc/deprecated/deprecated.php:1279 views/settings/fields/import-form.php:22 +msgid "" +"Before you can upload your import file, you will need to fix the following " +"error:" +msgstr "" + +#: inc/deprecated/deprecated.php:1290 views/settings/fields/import-form.php:35 +#, php-format +msgid "Choose a file from your computer (maximum size: %s)" +msgstr "" + +#: inc/deprecated/deprecated.php:1387 +msgid "Your Cloudflare credentials are valid." +msgstr "" + +#: inc/deprecated/deprecated.php:1391 +msgid "Your Cloudflare credentials are invalid!" +msgstr "" + +#: inc/deprecated/deprecated.php:1455 +msgid "Save and optimize" +msgstr "" + +#: inc/deprecated/deprecated.php:1455 +#: views/settings/page-sections/database.php:27 +msgid "Optimize" +msgstr "" + +#: inc/deprecated/deprecated.php:1466 inc/deprecated/deprecated.php:1668 +msgctxt "screen-reader-text" +msgid "Note:" +msgstr "" + +#: inc/deprecated/deprecated.php:1472 +msgctxt "screen-reader-text" +msgid "Performance tip:" +msgstr "" + +#: inc/deprecated/deprecated.php:1478 +msgctxt "screen-reader-text" +msgid "Third-party feature detected:" +msgstr "" + +#: inc/deprecated/deprecated.php:1490 inc/deprecated/deprecated.php:1674 +msgctxt "screen-reader-text" +msgid "Warning:" +msgstr "" + +#: inc/deprecated/deprecated.php:1503 +msgctxt "button text" +msgid "Download settings" +msgstr "" + +#: inc/deprecated/deprecated.php:1533 +msgid "Replace site's hostname with:" +msgstr "" + +#: inc/deprecated/deprecated.php:1552 inc/deprecated/deprecated.php:1589 +#: inc/deprecated/deprecated.php:1617 views/settings/fields/cnames.php:32 +#: views/settings/fields/cnames.php:63 views/settings/fields/cnames.php:93 +msgid "reserved for" +msgstr "" + +#: inc/deprecated/deprecated.php:1554 inc/deprecated/deprecated.php:1591 +#: inc/deprecated/deprecated.php:1619 views/settings/fields/cnames.php:35 +#: views/settings/fields/cnames.php:66 views/settings/fields/cnames.php:96 +msgid "All files" +msgstr "" + +#: inc/deprecated/deprecated.php:1566 inc/deprecated/deprecated.php:1596 +#: inc/deprecated/deprecated.php:1624 views/settings/fields/cnames.php:47 +#: views/settings/fields/cnames.php:78 views/settings/fields/cnames.php:108 +msgid "Images" +msgstr "" + +#: inc/deprecated/deprecated.php:1637 views/settings/fields/cnames.php:119 +msgid "Add CNAME" +msgstr "" + +#: inc/deprecated/deprecated.php:1708 +msgid "Watch the video" +msgstr "" + +#: inc/deprecated/deprecated.php:1773 +msgid "Basic" +msgstr "" + +#: inc/deprecated/deprecated.php:1774 +msgid "Static Files" +msgstr "" + +#: inc/deprecated/deprecated.php:1776 +msgid "Advanced" +msgstr "" + +#: inc/deprecated/deprecated.php:1946 +#, php-format +msgid "" +"%1$s %2$s requires at least PHP %3$s to function properly. To use this " +"version, please ask your web host how to upgrade your server to PHP %3$s or " +"higher. If you are not able to upgrade, you can rollback to the previous " +"version by using the button below." +msgstr "" + +#: inc/functions/admin.php:23 +msgid "" +"There seems to be an issue validating your license. Please see the error " +"message below." +msgid_plural "" +"There seems to be an issue validating your license. You can see the error " +"messages below." +msgstr[0] "" +msgstr[1] "" + +#: inc/functions/admin.php:361 +msgid "Server type:" +msgstr "" + +#: inc/functions/admin.php:370 +msgid "PHP version number:" +msgstr "" + +#: inc/functions/admin.php:379 +msgid "WordPress version number:" +msgstr "" + +#: inc/functions/admin.php:388 +msgid "WordPress multisite:" +msgstr "" + +#: inc/functions/admin.php:397 +msgid "Current theme:" +msgstr "" + +#: inc/functions/admin.php:406 +msgid "Current site language:" +msgstr "" + +#: inc/functions/admin.php:415 +msgid "Active plugins:" +msgstr "" + +#: inc/functions/admin.php:418 +msgid "Plugin names of all active plugins" +msgstr "" + +#: inc/functions/admin.php:424 +msgid "Anonymized WP Rocket settings:" +msgstr "" + +#: inc/functions/admin.php:427 +msgid "Which WP Rocket settings are active" +msgstr "" + +#: inc/functions/cloudflare.php:14 +msgid "" +"Curl functions are disabled, they are required for the Cloudflare Add-on to " +"work correctly." +msgstr "" + +#: inc/functions/cloudflare.php:21 +msgid "Cloudflare Email and API key are not set" +msgstr "" + +#: inc/functions/cloudflare.php:52 +#, php-format +msgid "Missing Cloudflare zone ID. %s could not fix this automatically." +msgstr "" + +#: inc/functions/cloudflare.php:58 +#, php-format +msgid "Read the %1$sdocumentation%2$s for further guidance." +msgstr "" + +#: inc/functions/cloudflare.php:60 +msgid "" +"https://docs.wp-rocket.me/article/18-using-wp-rocket-with-" +"cloudflare/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" + +#: inc/functions/cloudflare.php:100 +msgid "Connection to Cloudflare failed" +msgstr "" + +#: inc/functions/cloudflare.php:122 +msgid "Choose a domain from the list" +msgstr "" + +#: inc/functions/cloudflare.php:135 +msgid "No domain available in your Cloudflare account" +msgstr "" + +#: inc/functions/options.php:580 inc/functions/options.php:619 +msgid "" +"License validation failed. Our server could not resolve the request from " +"your website." +msgstr "" + +#: inc/functions/options.php:580 inc/functions/options.php:619 +#, php-format +msgid "" +"Try clicking %1$sSave Changes%2$s below. If the error persists, follow " +"%3$sthis guide%4$s." +msgstr "" + +#: inc/functions/options.php:596 +msgid "" +"License validation failed. You may be using a nulled version of the plugin. " +"Please do the following:" +msgstr "" + +#: inc/functions/options.php:596 inc/functions/options.php:638 +#, php-format +msgid "Login to your WP Rocket %1$saccount%2$s" +msgstr "" + +#: inc/functions/options.php:596 inc/functions/options.php:638 +msgid "Download the zip file" +msgstr "" + +#: inc/functions/options.php:596 inc/functions/options.php:638 +msgid "Reinstall" +msgstr "" + +#: inc/functions/options.php:596 +#, php-format +msgid "" +"If you do not have a WP Rocket account, please %1$spurchase a license%2$s." +msgstr "" + +#: inc/functions/options.php:604 +msgid "" +"License validation failed. This user account does not exist in our database." +msgstr "" + +#: inc/functions/options.php:604 +msgid "To resolve, please contact support." +msgstr "" + +#: inc/functions/options.php:612 +msgid "License validation failed. This user account is blacklisted." +msgstr "" + +#: inc/functions/options.php:612 +#, php-format +msgid "Please see %1$sthis guide%2$s for more info." +msgstr "" + +#: inc/functions/options.php:632 +msgid "Your license is not valid." +msgstr "" + +#: inc/functions/options.php:632 +#, php-format +msgid "Make sure you have an active %1$sWP Rocket license%2$s." +msgstr "" + +#: inc/functions/options.php:634 +msgid "You have added as many sites as your current license allows." +msgstr "" + +#: inc/functions/options.php:634 +#, php-format +msgid "" +"Upgrade your %1$saccount%2$s or %3$stransfer your license%2$s to this " +"domain." +msgstr "" + +#: inc/functions/options.php:636 +msgid "This website is not allowed." +msgstr "" + +#: inc/functions/options.php:636 +#, php-format +msgid "Please %1$scontact support%2$s." +msgstr "" + +#: inc/functions/options.php:638 +msgid "This license key is not recognized." +msgstr "" + +#: inc/functions/options.php:638 +#, php-format +msgid "If the issue persists, please %1$scontact support%2$s." +msgstr "" + +#: inc/functions/options.php:644 +#, php-format +msgid "License validation failed: %s" +msgstr "" + +#: inc/vendors/classes/class-imagify-partner.php:531 +msgid "Plugin installed successfully." +msgstr "" + +#: inc/vendors/classes/class-imagify-partner.php:532 +msgid "Sorry, you are not allowed to install plugins on this site." +msgstr "" + +#: inc/vendors/classes/class-imagify-partner.php:533 +msgid "Sorry, you are not allowed to do that." +msgstr "" + +#: inc/vendors/classes/class-imagify-partner.php:534 +msgid "Plugin install failed." +msgstr "" + +#: inc/vendors/classes/class-imagify-partner.php:535 +msgid "Go back" +msgstr "" + +#: views/deactivation-intent/form.php:20 +msgid "Return" +msgstr "" + +#: views/deactivation-intent/form.php:21 +msgid "WP Rocket feedback" +msgstr "" + +#: views/deactivation-intent/form.php:23 +msgid "Close" +msgstr "" + +#: views/deactivation-intent/form.php:27 +msgid "May we have a little info about why you are deactivating?" +msgstr "" + +#: views/deactivation-intent/form.php:31 +msgid "" +"It is a temporary deactivation. I am just debugging an " +"issue." +msgstr "" + +#: views/deactivation-intent/form.php:35 +msgid "The plugin broke my layout or some functionality." +msgstr "" + +#: views/deactivation-intent/form.php:39 +msgid "My PageSpeed or GTMetrix score did not improve." +msgstr "" + +#: views/deactivation-intent/form.php:43 +msgid "I did not notice a difference in loading time." +msgstr "" + +#: views/deactivation-intent/form.php:47 +msgid "The plugin is too complicated to configure." +msgstr "" + +#: views/deactivation-intent/form.php:51 +msgid "My host already has its own caching system." +msgstr "" + +#: views/deactivation-intent/form.php:53 +msgid "What is the name of your web host?" +msgstr "" + +#: views/deactivation-intent/form.php:58 +msgid "Other" +msgstr "" + +#: views/deactivation-intent/form.php:60 +msgid "" +"Let us know why you are deactivating WP Rocket so we can improve the plugin" +msgstr "" + +#: views/deactivation-intent/form.php:68 +msgid "The plugin broke my layout or some functionality" +msgstr "" + +#: views/deactivation-intent/form.php:69 +msgid "" +"This type of issue can usually be fixed by deactivating some options in WP " +"Rocket." +msgstr "" + +#: views/deactivation-intent/form.php:70 +msgid "" +"Click \"Apply Safe Mode\" to quickly disable LazyLoad, File Optimization, " +"Embeds and CDN options. Then check your site to see if the issue has " +"resolved." +msgstr "" + +#: views/deactivation-intent/form.php:72 +msgid "Apply safe mode" +msgstr "" + +#: views/deactivation-intent/form.php:75 +msgid "Safe mode applied." +msgstr "" + +#: views/deactivation-intent/form.php:76 +msgid "Review your site in a private/logged out browser window." +msgstr "" + +#: views/deactivation-intent/form.php:78 +msgid "" +"Is the issue fixed? Now you can reactivate options one at a time to " +"determine which one caused the problem. More info" +msgstr "" + +#: views/deactivation-intent/form.php:81 +msgid "My PageSpeed or GT Metrix score did not improve" +msgstr "" + +#: views/deactivation-intent/form.php:82 +msgid "" +"WP Rocket makes your site faster. The PageSpeed grade or GTMetrix score are " +"not indicators of speed. Neither your real visitors, nor Google will ever " +"see your website’s “grade”. Speed is the only metric that matters for SEO " +"and conversions." +msgstr "" + +#: views/deactivation-intent/form.php:83 +msgid "Yoast, the expert on all things related to SEO for WordPress states:" +msgstr "" + +#: views/deactivation-intent/form.php:84 +msgid "" +"[Google] just looks at how fast your website loads for users, so you don’t " +"have to obsess over that specific score. You have to make sure your website " +"is as fast as you can get it." +msgstr "" + +#: views/deactivation-intent/form.php:87 +msgid "" +"How to measure the load time of your site:
      https" +"://wp-rocket.me/blog/correctly-measure-websites-page-load-time/" +msgstr "" + +#: views/deactivation-intent/form.php:88 +msgid "" +"Why you should not be chasing a PageSpeed score:
      https://wp-rocket.me/blog/the-truth-about-google-" +"pagespeed-insights/" +msgstr "" + +#: views/deactivation-intent/form.php:91 +msgid "I did not notice a difference in loading time" +msgstr "" + +#: views/deactivation-intent/form.php:92 +msgid "" +"Make sure you look at your site while logged out to see the fast, cached " +"pages!" +msgstr "" + +#: views/deactivation-intent/form.php:93 +msgid "" +"The best way to see the improvement WP Rocket provides is to perform speed " +"tests. Follow this guide to correctly measure the load time of your " +"website:
      https://wp-rocket.me/blog/correctly-measure-websites-page-" +"load-time/" +msgstr "" + +#: views/deactivation-intent/form.php:96 +msgid "The plugin is too complicated to configure" +msgstr "" + +#: views/deactivation-intent/form.php:97 +msgid "We are sorry to hear you are finding it difficult to use WP Rocket." +msgstr "" + +#: views/deactivation-intent/form.php:98 +#, php-format +msgid "" +"WP Rocket is the only caching plugin that provides 80% of best practices in " +"speed optimization, by default. That means you do not have to do anything " +"besides activate WP Rocket and your site will already be faster!" +msgstr "" + +#: views/deactivation-intent/form.php:99 +msgid "" +"The additional options are not required for a fast site, they are for fine-" +"tuning." +msgstr "" + +#: views/deactivation-intent/form.php:100 +msgid "" +"To see the benefit WP Rocket is already providing, measure the speed of your" +" site using a tool like Pingdom:
      https" +"://wp-rocket.me/blog/correctly-measure-websites-page-load-time/" +msgstr "" + +#: views/deactivation-intent/form.php:105 +msgid "Send & Deactivate" +msgstr "" + +#: views/deactivation-intent/form.php:106 +msgid "Cancel" +msgstr "" + +#: views/deactivation-intent/form.php:108 +msgid "Skip & Deactivate" +msgstr "" + +#: views/settings/fields/cache-lifespan.php:26 +msgid "Clear cache after" +msgstr "" + +#: views/settings/fields/cnames.php:49 views/settings/fields/cnames.php:80 +#: views/settings/fields/cnames.php:110 +msgid "CSS & JavaScript" +msgstr "" + +#: views/settings/fields/cnames.php:50 views/settings/fields/cnames.php:81 +#: views/settings/fields/cnames.php:111 +msgid "JavaScript" +msgstr "" + +#: views/settings/fields/cnames.php:51 views/settings/fields/cnames.php:82 +#: views/settings/fields/cnames.php:112 +msgid "CSS" +msgstr "" + +#: views/settings/fields/import-form.php:29 +msgid "Import settings" +msgstr "" + +#: views/settings/fields/one-click-addon.php:39 +#: views/settings/fields/rocket-addon.php:31 +#: views/settings/fields/sliding-checkbox.php:24 views/settings/page.php:54 +msgctxt "Active state of checkbox" +msgid "On" +msgstr "" + +#: views/settings/fields/one-click-addon.php:40 +#: views/settings/fields/rocket-addon.php:32 +#: views/settings/fields/sliding-checkbox.php:25 views/settings/page.php:55 +msgctxt "Inactive state of checkbox" +msgid "Off" +msgstr "" + +#: views/settings/fields/one-click-addon.php:41 +#: views/settings/fields/rocket-addon.php:33 +msgid "Add-on status" +msgstr "" + +#: views/settings/fields/rocket-addon.php:56 +msgid "Modify options" +msgstr "" + +#: views/settings/page-sections/cloudflare.php:26 +msgid "Cloudflare Cache" +msgstr "" + +#: views/settings/page-sections/cloudflare.php:33 +#: views/settings/page-sections/sucuri.php:34 +#, php-format +msgid "Purges cached resources for your website. %s" +msgstr "" + +#: views/settings/page-sections/cloudflare.php:34 +msgid "https://support.cloudflare.com/hc/en-us/articles/200169246" +msgstr "" + +#: views/settings/page-sections/cloudflare.php:34 +#: views/settings/page-sections/sucuri.php:35 +msgid "Learn more" +msgstr "" + +#: views/settings/page-sections/cloudflare.php:40 +msgid "Clear all Cloudflare cache files" +msgstr "" + +#: views/settings/page-sections/dashboard.php:37 +msgid "Congratulations!" +msgstr "" + +#: views/settings/page-sections/dashboard.php:39 +msgid "WP Rocket is now activated and already working for you." +msgstr "" + +#: views/settings/page-sections/dashboard.php:41 +msgid "Your website should be loading faster now!" +msgstr "" + +#: views/settings/page-sections/dashboard.php:43 +#, php-format +msgid "" +"To guarantee fast websites, WP Rocket applies 80% of web performance best " +"practices." +msgstr "" + +#: views/settings/page-sections/dashboard.php:43 +msgid "" +"We also enable options that provide immediate benefits to your website." +msgstr "" + +#: views/settings/page-sections/dashboard.php:44 +msgid "Continue to the options to further optimize your site!" +msgstr "" + +#: views/settings/page-sections/dashboard.php:54 +msgid "My Account" +msgstr "" + +#: views/settings/page-sections/dashboard.php:60 +msgid "Refresh info" +msgstr "" + +#: views/settings/page-sections/dashboard.php:74 +msgid "Expiration Date" +msgstr "" + +#: views/settings/page-sections/dashboard.php:83 +msgid "View my account" +msgstr "" + +#: views/settings/page-sections/dashboard.php:103 +msgid "Quick Actions" +msgstr "" + +#: views/settings/page-sections/dashboard.php:109 +msgid "Remove all cached files" +msgstr "" + +#: views/settings/page-sections/dashboard.php:129 +msgid "Start cache preloading" +msgstr "" + +#: views/settings/page-sections/dashboard.php:147 +msgid "Purge OPCache content" +msgstr "" + +#: views/settings/page-sections/dashboard.php:153 +msgid "Purge OPCache" +msgstr "" + +#: views/settings/page-sections/dashboard.php:164 +#: views/settings/page-sections/dashboard.php:170 +msgid "Regenerate Critical CSS" +msgstr "" + +#: views/settings/page-sections/dashboard.php:186 +msgid "Frequently Asked Questions" +msgstr "" + +#: views/settings/page-sections/dashboard.php:199 +msgid "Still cannot find a solution?" +msgstr "" + +#: views/settings/page-sections/dashboard.php:200 +msgid "" +"Submit a ticket and get help from our friendly and knowledgeable Rocketeers." +msgstr "" + +#: views/settings/page-sections/dashboard.php:208 +msgid "Ask support" +msgstr "" + +#: views/settings/page-sections/database.php:24 +msgid "Backup your database before you run a cleanup!" +msgstr "" + +#: views/settings/page-sections/database.php:25 +msgid "" +"Once a database optimization has been performed, there is no way to undo it." +msgstr "" + +#: views/settings/page-sections/imagify.php:20 +#, php-format +msgid "" +"%1$sWP ROCKET%2$s created %3$sIMAGIFY%4$s %1$sfor best-in-class image " +"optimization.%2$s" +msgstr "" + +#: views/settings/page-sections/imagify.php:23 +msgid "" +"Compress image to make your website faster, all while maintaining image " +"quality." +msgstr "" + +#: views/settings/page-sections/imagify.php:24 +msgid "More on Imagify:" +msgstr "" + +#: views/settings/page-sections/imagify.php:26 +msgid "Imagify Plugin Page" +msgstr "" + +#: views/settings/page-sections/imagify.php:27 +msgid "Imagify Website" +msgstr "" + +#: views/settings/page-sections/imagify.php:28 +msgid "Review of Image Compression Plugins" +msgstr "" + +#: views/settings/page-sections/imagify.php:37 +msgid "Install Imagify" +msgstr "" + +#: views/settings/page-sections/license.php:21 +msgid "WP Rocket was not able to automatically validate your license." +msgstr "" + +#: views/settings/page-sections/license.php:26 +#, php-format +msgid "" +"Follow this tutorial, or contact support to get the engine started." +msgstr "" + +#: views/settings/page-sections/license.php:26 +msgid "" +"https://docs.wp-rocket.me/article/100-resolving-problems-with-license-" +"validation/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" + +#: views/settings/page-sections/sucuri.php:41 +msgid "Clear all Sucuri cache files" +msgstr "" + +#: views/settings/page-sections/tools.php:20 +#, php-format +msgid "Files size: %1$s. Number of entries: %2$s." +msgstr "" + +#: views/settings/page-sections/tools.php:23 +#, php-format +msgid "%1$sDownload the file%2$s." +msgstr "" + +#: views/settings/page-sections/tools.php:26 +#, php-format +msgid "%1$sDelete the file%2$s." +msgstr "" + +#: views/settings/page-sections/tools.php:37 +msgid "Export settings" +msgstr "" + +#: views/settings/page-sections/tools.php:38 +msgid "Download a backup file of your settings" +msgstr "" + +#: views/settings/page-sections/tools.php:43 +msgid "Download settings" +msgstr "" + +#: views/settings/page-sections/tools.php:56 +msgid "Rollback" +msgstr "" + +#: views/settings/page-sections/tools.php:60 +#, php-format +msgid "Has version %s caused an issue on your website?" +msgstr "" + +#: views/settings/page-sections/tools.php:62 +msgid "" +"You can rollback to the previous major version here.
      Then send us a " +"support request." +msgstr "" + +#: views/settings/page-sections/tools.php:69 +#, php-format +msgid "Reinstall version %s" +msgstr "" + +#: views/settings/page-sections/tools.php:85 +msgid "Debug mode" +msgstr "" + +#: views/settings/page-sections/tools.php:90 +msgid "Create a debug log file." +msgstr "" + +#: views/settings/page.php:16 +msgid "WP Rocket Settings" +msgstr "" + +#: views/settings/page.php:30 +#, php-format +msgid "version %s" +msgstr "" + +#: views/settings/page.php:40 +msgid "Save Changes" +msgstr "" + +#: views/settings/page.php:56 +msgid "Show Sidebar" +msgstr "" + +#: views/settings/page.php:75 +msgid "Thanks for choosing to participate in the WP Rocket beta program!" +msgstr "" + +#: views/settings/page.php:76 +msgid "" +"A beta version is usually one that has new features and improvements, but we" +" want to test it a little more before full launch." +msgstr "" + +#: views/settings/page.php:77 +msgid "" +"We’d love it if you took our beta versions for a ride, but please keep in " +"mind that it might be less stable than our other releases. Don’t worry, you " +"can switch back to a full release version at any time." +msgstr "" + +#: views/settings/page.php:78 +msgid "" +"Your mission: please send all feedback about our beta versions, including " +"bug reports, to support@wp-rocket.me" +msgstr "" + +#: views/settings/page.php:80 +msgid "If you don’t want to join the beta program, simply close this window." +msgstr "" + +#: views/settings/page.php:82 +msgid "Activate Rocket Tester" +msgstr "" + +#: views/settings/page.php:93 +msgid "" +"Below is a detailed view of all data WP Rocket will collect if " +"granted permission." +msgstr "" + +#: views/settings/page.php:96 +msgid "" +"WP Rocket will never transmit any domain names or email addresses (except " +"for license validation), IP addresses, or third-party API keys." +msgstr "" + +#: views/settings/page.php:98 +msgid "Activate Rocket analytics" +msgstr "" + +#: views/settings/partials/documentation.php:14 +msgid "It is a great starting point to fix some of the most common issues." +msgstr "" + +#: views/settings/partials/documentation.php:18 +msgid "Read the documentation" +msgstr "" + +#: views/settings/partials/sidebar.php:11 +msgid "How to correctly measure your website’s loading time" +msgstr "" + +#: views/settings/partials/sidebar.php:13 +msgid "" +"Learn how to use best practices to correctly measure your site's " +"performance." +msgstr "" + +#: views/settings/partials/sidebar.php:14 +msgid "" +"https://wp-rocket.me/blog/correctly-measure-websites-page-load-" +"time/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" + +#: views/settings/partials/sidebar.php:14 +msgid "Read our guide" +msgstr "" + +#: views/settings/partials/sidebar.php:17 +msgid "Why Google PageSpeed grade should not matter" +msgstr "" + +#: views/settings/partials/sidebar.php:18 +msgid "" +"https://wp-rocket.me/blog/the-truth-about-google-pagespeed-" +"insights/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" + +#: views/settings/partials/sidebar.php:18 +msgid "Read more" +msgstr "" + +#: views/settings/partials/sidebar.php:23 +msgid "You have not activated logged-in user cache." +msgstr "" + +#: views/settings/partials/sidebar.php:24 +msgid "" +"Use a private browser to check your website's speed and visual appearance." +msgstr "" + +#: views/settings/sections/addons-container.php:23 +#: views/settings/sections/fields-container.php:27 +msgid "Need Help?" +msgstr "" diff --git a/wp-content/plugins/wp-rocket/languages/rocket-es_ES.mo b/wp-content/plugins/wp-rocket/languages/rocket-es_ES.mo new file mode 100644 index 0000000000000000000000000000000000000000..760f9663ad4e54cfdb0e7017d434380549e38150 GIT binary patch literal 103939 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 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-rocket/languages/rocket-es_ES.po b/wp-content/plugins/wp-rocket/languages/rocket-es_ES.po new file mode 100644 index 0000000..250fce6 --- /dev/null +++ b/wp-content/plugins/wp-rocket/languages/rocket-es_ES.po @@ -0,0 +1,4220 @@ +# Copyright (C) 2016 WP Rocket +# This file is distributed under the same license as the WP Rocket package. +# Translators: +# Alice O., 2019 +# Orizhial , 2019 +# wpmedia , 2020 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: WP Rocket 3.4\n" +"Report-Msgid-Bugs-To: http://wp-rocket.me/\n" +"POT-Creation-Date: 2020-08-17 15:20-0400\n" +"PO-Revision-Date: 2019-08-26 15:14+0000\n" +"Last-Translator: wpmedia , 2020\n" +"Language-Team: Spanish (Spain) (https://www.transifex.com/wp-media/teams/18133/es_ES/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: es_ES\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 1.8.11\n" +"X-Poedit-Basepath: ..\n" +"X-Poedit-KeywordsList: __;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c\n" +"X-Poedit-SearchPath-0: .\n" +"X-Poedit-SearchPathExcluded-0: assets\n" +"X-Poedit-SearchPathExcluded-1: src\n" +"X-Poedit-SearchPathExcluded-2: vendor\n" +"X-Poedit-SearchPathExcluded-3: node_modules\n" +"X-Poedit-SearchPathExcluded-4: tests\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Textdomain-Support: yes\n" + +#: inc/3rd-party/hosting/flywheel.php:18 inc/3rd-party/hosting/godaddy.php:18 +#: inc/3rd-party/hosting/pressidium.php:18 +#: inc/3rd-party/hosting/wp-serveur.php:27 +#: inc/ThirdParty/Hostings/Cloudways.php:90 +#: inc/ThirdParty/Hostings/O2Switch.php:49 +#: inc/ThirdParty/Hostings/Savvii.php:50 +#: inc/ThirdParty/Hostings/WPEngine.php:47 inc/deprecated/3.6.php:698 +#: inc/deprecated/3.6.php:1005 +#, php-format +msgid "" +"Your site is hosted on %s, we have enabled Varnish auto-purge for " +"compatibility." +msgstr "" +"Tu sitio está hospedado en %s, y para garantizar la compatibilidad hemos " +"habilitado la opción para la purga automática de la caché Varnish." + +#: inc/3rd-party/hosting/kinsta.php:161 +#, php-format +msgid "" +"Your installation seems to be missing core Kinsta files managing Cache " +"clearing and CDN, which will prevent your Kinsta installation and WP Rocket " +"from working correctly. Please get in touch with Kinsta support through your" +" %1$sMyKinsta%2$s account to resolve this issue." +msgstr "" +"Parece que tu instalación no contiene los archivos de Kinsta para la gestión" +" del CDN y del vaciado de la caché: esto impedirá a tu instalación de Kinsta" +" y a WP Rocket de trabajar correctamente. Para solucionar el problema, por " +"favor ponte en contacto con el soporte Kinsta a través de tu cuenta " +"%1$sMyKinsta%2$s." + +#: inc/3rd-party/plugins/jetpack.php:86 +msgid "Jetpack XML Sitemaps" +msgstr "Mapas del sitio XML de Jetpack" + +#: inc/3rd-party/plugins/jetpack.php:88 +msgid "Preload the sitemap from the Jetpack plugin" +msgstr "Precargar el mapa del sitio del plugin Jetpack" + +#: inc/3rd-party/plugins/jetpack.php:96 +#: inc/3rd-party/plugins/seo/all-in-one-seo-pack.php:89 +#: inc/3rd-party/plugins/seo/rank-math-seo.php:34 +#: inc/3rd-party/plugins/seo/seopress.php:86 +#: inc/3rd-party/plugins/seo/the-seo-framework.php:144 +#: inc/3rd-party/plugins/seo/yoast-seo.php:87 +#, php-format +msgid "" +"We automatically detected the sitemap generated by the %s plugin. You can " +"check the option to preload it." +msgstr "" +"Hemos detectado automáticamente el mapa del sitio generado por el plugin %s." +" Puedes marcar la opción para precargarlo." + +#: inc/3rd-party/plugins/seo/all-in-one-seo-pack.php:87 +msgid "All in One SEO XML sitemap" +msgstr "Mapa del sitio XML de All in One SEO" + +#: inc/3rd-party/plugins/seo/rank-math-seo.php:32 +msgid "Rank Math XML sitemap" +msgstr "Mapa del sitio XML de Rank Math" + +#: inc/3rd-party/plugins/seo/seopress.php:84 +msgid "SEOPress XML sitemap" +msgstr "Mapa del sitio XML de SEOPress" + +#: inc/3rd-party/plugins/seo/the-seo-framework.php:142 +msgid "The SEO Framework XML sitemap" +msgstr "Mapa del sitio XML de The SEO Framework" + +#: inc/3rd-party/plugins/seo/yoast-seo.php:85 +msgid "Yoast SEO XML sitemap" +msgstr "Mapa del sitio XML de Yoast SEO" + +#: inc/Addon/Cloudflare/APIClient.php:309 +msgid "Ops Cloudflare did not provide any reply. Please try again later." +msgstr "" +"Ups, Cloudflare no ha respondido. Por favor intenta de nuevo más tarde." + +#: inc/Addon/Cloudflare/APIClient.php:318 inc/deprecated/3.5.php:122 +#: inc/deprecated/3.5.php:179 +msgid "Incorrect Cloudflare email address or API key." +msgstr "Email de Cloudflare o clave de API incorrectos." + +#: inc/Addon/Cloudflare/APIClient.php:322 +#: inc/Addon/Cloudflare/APIClient.php:335 +#: inc/Addon/Cloudflare/Cloudflare.php:112 +#: inc/Addon/Cloudflare/Cloudflare.php:144 +#: inc/classes/subscriber/Tools/class-detect-missing-tags-subscriber.php:157 +#: inc/deprecated/3.5.php:102 inc/deprecated/3.5.php:126 +#: inc/deprecated/3.5.php:139 inc/deprecated/3.5.php:167 +#: inc/deprecated/3.5.php:183 +#, php-format +msgid "Read the %1$sdocumentation%2$s for further guidance." +msgstr "Lee %1$sesta documentación%2$s para más información." + +#: inc/Addon/Cloudflare/APIClient.php:324 +#: inc/Addon/Cloudflare/APIClient.php:337 +#: inc/Addon/Cloudflare/Cloudflare.php:101 +#: inc/Addon/Cloudflare/Cloudflare.php:114 +#: inc/Addon/Cloudflare/Cloudflare.php:146 inc/deprecated/3.5.php:91 +#: inc/deprecated/3.5.php:104 inc/deprecated/3.5.php:128 +#: inc/deprecated/3.5.php:141 inc/deprecated/3.5.php:169 +#: inc/deprecated/3.5.php:185 inc/deprecated/3.5.php:218 +msgid "" +"https://docs.wp-rocket.me/article/18-using-wp-rocket-with-" +"cloudflare/?utm_source=wp_plugin&utm_medium=wp_rocket#add-on" +msgstr "" +"https://docs.wp-rocket.me/article/18-using-wp-rocket-with-" +"cloudflare/?utm_source=wp_plugin&utm_medium=wp_rocket#add-on" + +#: inc/Addon/Cloudflare/APIClient.php:331 inc/deprecated/3.5.php:135 +msgid "Incorrect Cloudflare Zone ID." +msgstr "Zona ID de Cloudflare incorrecta." + +#: inc/Addon/Cloudflare/Cloudflare.php:99 +#, php-format +msgid "" +"Cloudflare email and/or API key are not set. Read the %1$sdocumentation%2$s " +"for further guidance." +msgstr "" +"El email de la cuenta de Cloudflare y/o la clave de API no están " +"establecidas. Lee %1$sdocumentación%2$s para más instrucciones." + +#: inc/Addon/Cloudflare/Cloudflare.php:108 inc/deprecated/3.5.php:98 +msgid "Missing Cloudflare Zone ID." +msgstr "Zona ID de Cloudfare faltante." + +#: inc/Addon/Cloudflare/Cloudflare.php:140 inc/deprecated/3.5.php:163 +msgid "It looks like your domain is not set up on Cloudflare." +msgstr "Parece que tu dominio no está configurado en Cloudflare." + +#: inc/Addon/Cloudflare/Subscriber.php:215 inc/deprecated/3.5.php:597 +#, php-format +msgid "WP Rocket: %s" +msgstr "WP Rocket:1%s" + +#: inc/Addon/Cloudflare/Subscriber.php:220 inc/deprecated/3.5.php:602 +msgid "WP Rocket: Cloudflare cache successfully purged." +msgstr "WP Rocket:caché de Cloudflare limpiada con éxito." + +#: inc/Addon/Cloudflare/Subscriber.php:364 +#: inc/Addon/Cloudflare/Subscriber.php:370 +#: inc/Addon/Cloudflare/Subscriber.php:390 +#: inc/Addon/Cloudflare/Subscriber.php:401 +#: inc/Addon/Cloudflare/Subscriber.php:420 +#: inc/Addon/Cloudflare/Subscriber.php:426 +#: inc/Addon/Cloudflare/Subscriber.php:445 +#: inc/Addon/Cloudflare/Subscriber.php:451 +#: inc/Addon/Cloudflare/Subscriber.php:470 +#: inc/Addon/Cloudflare/Subscriber.php:476 +#: inc/Addon/Cloudflare/Subscriber.php:558 inc/admin/options.php:166 +#: inc/classes/subscriber/Tools/class-detect-missing-tags-subscriber.php:148 +msgid "WP Rocket: " +msgstr "WP Rocket:" + +#: inc/Addon/Cloudflare/Subscriber.php:364 +#, php-format +msgid "Cloudflare development mode error: %s" +msgstr "Error del modo desarrollo de Cloudflare: %s" + +#: inc/Addon/Cloudflare/Subscriber.php:370 +#, php-format +msgid "Cloudflare development mode %s" +msgstr "Modo desarrollo de Cloudflare %s" + +#: inc/Addon/Cloudflare/Subscriber.php:390 +#, php-format +msgid "Cloudflare cache level error: %s" +msgstr "Error del nivel de caché de Cloudflare: %s" + +#: inc/Addon/Cloudflare/Subscriber.php:395 +msgctxt "Cloudflare caching level" +msgid "Standard" +msgstr "Estándar" + +#: inc/Addon/Cloudflare/Subscriber.php:401 +#, php-format +msgid "Cloudflare cache level set to %s" +msgstr "El nivel de caché de Cloudflare se ha ajustado a %s" + +#: inc/Addon/Cloudflare/Subscriber.php:420 +#, php-format +msgid "Cloudflare minification error: %s" +msgstr "Error de minificación de Cloudflare: %s" + +#: inc/Addon/Cloudflare/Subscriber.php:426 +#, php-format +msgid "Cloudflare minification %s" +msgstr "Minificación de Cloudflare %s" + +#: inc/Addon/Cloudflare/Subscriber.php:445 +#, php-format +msgid "Cloudflare rocket loader error: %s" +msgstr "Error del Rocket Loader de Cloudflare: %s" + +#: inc/Addon/Cloudflare/Subscriber.php:451 +#, php-format +msgid "Cloudflare rocket loader %s" +msgstr "Rocket Loader de Cloudflare %s" + +#: inc/Addon/Cloudflare/Subscriber.php:470 +#, php-format +msgid "Cloudflare browser cache error: %s" +msgstr "Error de la caché del navegador de Cloudflare: %s" + +#: inc/Addon/Cloudflare/Subscriber.php:476 +#, php-format +msgid "Cloudflare browser cache set to %s seconds" +msgstr "La caché del navegador de Cloudflare está ajustada a %s segundos" + +#: inc/Addon/FacebookTracking/Subscriber.php:87 +#: inc/Addon/GoogleTracking/Subscriber.php:132 +#: inc/Engine/HealthCheck/CacheDirSizeCheck.php:88 +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:92 +msgid "weekly" +msgstr "semanal" + +#: inc/Engine/Admin/Settings/Page.php:171 +msgid "Save Changes" +msgstr "Guardar cambios" + +#: inc/Engine/Admin/Settings/Page.php:171 +msgid "Validate License" +msgstr "Validar licencia." + +#: inc/Engine/Admin/Settings/Page.php:236 +#: inc/Engine/Admin/Settings/Page.php:237 +msgid "Unavailable" +msgstr "No disponible" + +#: inc/Engine/Admin/Settings/Page.php:341 inc/deprecated/deprecated.php:1789 +#: views/settings/page-sections/dashboard.php:73 +msgid "License" +msgstr "Licencia" + +#: inc/Engine/Admin/Settings/Page.php:358 +msgid "API key" +msgstr "Clave de API" + +#: inc/Engine/Admin/Settings/Page.php:373 +msgid "Email address" +msgstr "Dirección de correo electrónico" + +#: inc/Engine/Admin/Settings/Page.php:399 +msgid "Dashboard" +msgstr "Escritorio" + +#: inc/Engine/Admin/Settings/Page.php:400 +msgid "Get help, account info" +msgstr "Ayuda e info de la cuenta" + +#: inc/Engine/Admin/Settings/Page.php:409 +msgid "My Status" +msgstr "Mi estado" + +#: inc/Engine/Admin/Settings/Page.php:419 views/settings/page.php:72 +msgid "Rocket Tester" +msgstr "Rocket Tester" + +#: inc/Engine/Admin/Settings/Page.php:420 +msgid "I am part of the WP Rocket Beta Testing Program." +msgstr "Participo en el Programa de Beta Testers de WP Rocket." + +#: inc/Engine/Admin/Settings/Page.php:428 views/settings/page.php:90 +msgid "Rocket Analytics" +msgstr "Analíticas de Rocket" + +#: inc/Engine/Admin/Settings/Page.php:430 +#, php-format +msgid "" +"I agree to share anonymous data with the development team to help improve WP" +" Rocket. %1$sWhat info will we collect?%2$s" +msgstr "" +"Estoy de acuerdo en compartir datos anónimos con el equipo de desarrollo " +"para ayudar a mejorar WP Rocket. %1$s¿Qué info recopilamos?%2$s" + +#: inc/Engine/Admin/Settings/Page.php:454 inc/Engine/Cache/WPCache.php:347 +msgid "Cache" +msgstr "Caché" + +#: inc/Engine/Admin/Settings/Page.php:455 +msgid "Basic cache options" +msgstr "Opciones básicas de la caché" + +#: inc/Engine/Admin/Settings/Page.php:462 +msgid "Mobile Cache" +msgstr "Caché móvil" + +#: inc/Engine/Admin/Settings/Page.php:464 +msgid "Speed up your site for mobile visitors." +msgstr "Acelera tu sitio web para los visitantes desde móvil." + +#: inc/Engine/Admin/Settings/Page.php:469 +msgid "" +"We detected you use a plugin that requires a separate cache for mobile, and " +"automatically enabled this option for compatibility." +msgstr "" +"Hemos detectado que estás usando un plugin que requiere una caché distinta " +"para los dispositivos móviles: para garantizar la compatibilidad, hemos " +"activado automáticamente esta opción." + +#: inc/Engine/Admin/Settings/Page.php:473 +msgid "User Cache" +msgstr "Caché de usuario" + +#: inc/Engine/Admin/Settings/Page.php:476 +#, php-format +msgid "" +"%1$sUser cache%2$s is great when you have user-specific or restricted " +"content on your website." +msgstr "" +"La %1$scaché usuario%2$s es muy útil cuando tu sitio incluye contenido " +"destinado exclusivamente a los usuarios registrados." + +#: inc/Engine/Admin/Settings/Page.php:484 +msgid "Cache Lifespan" +msgstr "Vida útil de la caché" + +#: inc/Engine/Admin/Settings/Page.php:487 +#, php-format +msgid "" +"Cache files older than the specified lifespan will be deleted.
      Enable " +"%1$spreloading%2$s for the cache to be rebuilt automatically after lifespan " +"expiration." +msgstr "" +"Los archivos de caché más viejos que la vida útil especificada serán " +"borrados.
      Habilita la %1$sprecarga%2$s para que la caché sea regenerada " +"automáticamente después de su expiración." + +#: inc/Engine/Admin/Settings/Page.php:501 +msgid "Enable caching for logged-in WordPress users" +msgstr "Habilitar la caché para los usuarios conectados a WordPress" + +#: inc/Engine/Admin/Settings/Page.php:509 +msgid "Enable caching for mobile devices" +msgstr "Habilitar la caché para dispositivos móviles" + +#: inc/Engine/Admin/Settings/Page.php:524 +msgid "Separate cache files for mobile devices" +msgstr "Guardar separadamente los archivos para dispositivos móviles" + +#: inc/Engine/Admin/Settings/Page.php:526 +#, php-format +msgid "" +"Most modern themes are responsive and should work without a separate cache. " +"Enable this only if you have a dedicated mobile theme or plugin. %1$sMore " +"info%2$s" +msgstr "" +"La mayoría de los temas modernos son responsivos y deberían funcionar sin " +"una caché separada. Habilita esto sólo si tienes un tema o un plugin " +"dedicado para móviles. %1$s Más información%2$s" + +#: inc/Engine/Admin/Settings/Page.php:542 +msgid "" +"Specify time after which the global cache is cleared
      (0 = unlimited )" +msgstr "" +"Especifica el tiempo tras del cual quieres borrar la caché global
      (0 = " +"ilimitado)" + +#: inc/Engine/Admin/Settings/Page.php:544 +#, php-format +msgid "" +"Reduce lifespan to 10 hours or less if you notice issues that seem to appear" +" periodically. %1$sWhy?%2$s" +msgstr "" +"Aconsejamos reducir la vida útil de la caché a 10 horas o menos, si se " +"verifican problemas con más frecuencia. %1$s¿Por qué?%2$s" + +#: inc/Engine/Admin/Settings/Page.php:550 +msgid "Minutes" +msgstr "Minutos" + +#: inc/Engine/Admin/Settings/Page.php:551 +msgid "Hours" +msgstr "Horas" + +#: inc/Engine/Admin/Settings/Page.php:552 +msgid "Days" +msgstr "Días" + +#: inc/Engine/Admin/Settings/Page.php:577 +#: views/settings/page-sections/tutorials.php:22 +msgid "File Optimization" +msgstr "Optimizar archivos" + +#: inc/Engine/Admin/Settings/Page.php:578 +msgid "Optimize CSS & JS" +msgstr "Optimizar CSS&JS" + +#: inc/Engine/Admin/Settings/Page.php:585 +msgid "CSS Files" +msgstr "Archivos CSS" + +#: inc/Engine/Admin/Settings/Page.php:592 +#: inc/Engine/Admin/Settings/Page.php:602 +#, php-format +msgid "" +"%1$s Minification is currently activated in Autoptimize. If" +" you want to use %2$s’s minification, disable those options in Autoptimize." +msgstr "" +"Actualmente la minificación %1$s está activada a través de " +"Autoptimize. Si quieres usar la minificación de %2$s, " +"desmarca esas opciones en Autoptimize." + +#: inc/Engine/Admin/Settings/Page.php:595 +msgid "JavaScript Files" +msgstr "Archivos JavaScript" + +#: inc/Engine/Admin/Settings/Page.php:611 +msgid "Minify CSS files" +msgstr "Minificar archivos CSS" + +#: inc/Engine/Admin/Settings/Page.php:612 +msgid "Minify CSS removes whitespace and comments to reduce the file size." +msgstr "" +"Minificar el CSS elimina los espacios blancos y los comentarios para reducir" +" el tamaño de archivo." + +#: inc/Engine/Admin/Settings/Page.php:625 +#: inc/Engine/Admin/Settings/Page.php:647 +#: inc/Engine/Admin/Settings/Page.php:729 +#: inc/Engine/Admin/Settings/Page.php:751 +msgid "This could break things!" +msgstr "¡Esto podría romper unas funcionalidades!" + +#: inc/Engine/Admin/Settings/Page.php:626 +#: inc/Engine/Admin/Settings/Page.php:648 +#: inc/Engine/Admin/Settings/Page.php:730 +#: inc/Engine/Admin/Settings/Page.php:752 +msgid "" +"If you notice any errors on your website after having activated this " +"setting, just deactivate it again, and your site will be back to normal." +msgstr "" +"Si notas cualquier error en tu sitio web después de la activación de esta " +"opción, desactívala: todo volverá a su estado normal." + +#: inc/Engine/Admin/Settings/Page.php:627 +msgid "Activate minify CSS" +msgstr "Activar minificación CSS" + +#: inc/Engine/Admin/Settings/Page.php:632 +msgid "Combine CSS files (Enable Minify CSS files to select)" +msgstr "" +"Combinar archivos CSS (es necesario activar antes la minificación " +"CSS)" + +#: inc/Engine/Admin/Settings/Page.php:634 +#, php-format +msgid "" +"Combine CSS merges all your files into 1, reducing HTTP requests. Not " +"recommended if your site uses HTTP/2. %1$sMore info%2$s" +msgstr "" +"Combinar el CSS junta todos los archivos en uno solo, reduciendo las " +"peticiones HTTP. No lo recomendamos si tu sitio web usa HTTP/2. %1$sMás " +"info%2$s" + +#: inc/Engine/Admin/Settings/Page.php:649 +msgid "Activate combine CSS" +msgstr "Activar combinación CSS" + +#: inc/Engine/Admin/Settings/Page.php:654 inc/admin/options.php:125 +msgid "Excluded CSS Files" +msgstr "Excluir los archivos CSS" + +#: inc/Engine/Admin/Settings/Page.php:655 +msgid "" +"Specify URLs of CSS files to be excluded from minification and concatenation" +" (one per line)." +msgstr "" +"Especificar los URLs de los archivos CSS que quieres excluir de la " +"minificación y concatenación (uno por línea)." + +#: inc/Engine/Admin/Settings/Page.php:656 +msgid "" +"Internal: The domain part of the URL will be stripped " +"automatically. Use (.*).css wildcards to exclude all CSS files located at a " +"specific path." +msgstr "" +"Archivos internos:la parte del URL relativa al dominio se " +"eliminará automáticamente. Usa los caracteres comodines (.*).css para " +"excluir todos los archivos JS de una ruta específica." + +#: inc/Engine/Admin/Settings/Page.php:658 +#, php-format +msgid "" +"3rd Party: Use either the full URL path or only the domain " +"name, to exclude external CSS. %1$sMore info%2$s" +msgstr "" +"Archivos de terceros:Utiliza la ruta del URL completa o " +"solo el nombre de dominio, para excluir el CSS externo. %1$sMás " +"información%2$s" + +#: inc/Engine/Admin/Settings/Page.php:671 +msgid "Optimize CSS delivery" +msgstr "Optimizar la entrega del CSS" + +#: inc/Engine/Admin/Settings/Page.php:678 +#, php-format +msgctxt "WP Critical CSS compatibility" +msgid "" +"Optimize CSS Delivery is currently handled by the %1$s plugin. If you want " +"to use WP Rocket’s Optimize CSS Delivery option, disable the %1$s plugin." +msgstr "" +"El plugin %1$s está gestionando la optimización de la entrega del CSS. Si " +"quieres usar la opción \"Optimizar la entrega del CSS\" de WP Rocket, tienes" +" que desactivar %1$s." + +#: inc/Engine/Admin/Settings/Page.php:680 +#, php-format +msgid "" +"Optimize CSS delivery eliminates render-blocking CSS on your website for " +"faster perceived load time. %1$sMore info%2$s" +msgstr "" +"Optimizar la entrega del CSS elimina el CSS que bloquea la visualización en " +"tu sitio web, acelerando el tiempo de carga percibido. %1$sMás info%2$s" + +#: inc/Engine/Admin/Settings/Page.php:691 +msgid "Fallback critical CSS" +msgstr "Ruta crítica CSS alternativa" + +#: inc/Engine/Admin/Settings/Page.php:696 +#, php-format +msgid "" +"Provides a fallback if auto-generated critical path CSS is incomplete. " +"%1$sMore info%2$s" +msgstr "" +"Proporciona una ruta alternativa si la ruta crítica del CSS que se ha auto-" +"generado no está completa. %1$sMás info%2$s" + +#: inc/Engine/Admin/Settings/Page.php:705 +msgid "Remove jQuery Migrate" +msgstr "Eliminar jQuery Migrate" + +#: inc/Engine/Admin/Settings/Page.php:707 +#, php-format +msgid "" +"Remove jQuery Migrate eliminates a JS file and can improve load time. " +"%1$sMore info%2$s" +msgstr "" +"Eliminar jQuery Migrate elimina un archivo JS y puede mejorar el tiempo de " +"carga.%1$sMas información%2$s" + +#: inc/Engine/Admin/Settings/Page.php:715 +msgid "Minify JavaScript files" +msgstr "Minificar archivos JavaScript" + +#: inc/Engine/Admin/Settings/Page.php:716 +msgid "" +"Minify JavaScript removes whitespace and comments to reduce the file size." +msgstr "" +"Minificar el JavaScript elimina los espacios blancos y los comentarios para " +"reducir el tamaño de archivo." + +#: inc/Engine/Admin/Settings/Page.php:731 +msgid "Activate minify JavaScript" +msgstr "Activar minificación JavaScript" + +#: inc/Engine/Admin/Settings/Page.php:736 +msgid "" +"Combine JavaScript files (Enable Minify JavaScript files to select)" +msgstr "" +"Combinar los archivos JavaScript (es necesario activar antes la " +"minificación JS)" + +#: inc/Engine/Admin/Settings/Page.php:738 +#, php-format +msgid "" +"Combine JavaScript files combines your site’s internal, 3rd party and inline" +" JS reducing HTTP requests. Not recommended if your site uses HTTP/2. " +"%1$sMore info%2$s" +msgstr "" +"Esta opción combina los archivos JavaScript internos, los de terceras partes" +" y el JS integrado, reduciendo las peticiones HTTPS. No la recomendamos si " +"tu sitio usa HTTP/2. %1$sMás info%2$s" + +#: inc/Engine/Admin/Settings/Page.php:753 +msgid "Activate combine JavaScript" +msgstr "Activar combinación JavaScript" + +#: inc/Engine/Admin/Settings/Page.php:758 inc/admin/options.php:126 +msgid "Excluded Inline JavaScript" +msgstr "El JavaScript integrado está excluído" + +#: inc/Engine/Admin/Settings/Page.php:760 +#, php-format +msgid "" +"Specify patterns of inline JavaScript to be excluded from concatenation (one" +" per line). %1$sMore info%2$s" +msgstr "" +"Especificar patrones de JavaScript integrado que quieres excluir de la " +"concatenación (uno por línea). %1$sMás info%2$s" + +#: inc/Engine/Admin/Settings/Page.php:776 inc/admin/options.php:127 +msgid "Excluded JavaScript Files" +msgstr "Excluir archivos JavaScript" + +#: inc/Engine/Admin/Settings/Page.php:777 +msgid "" +"Specify URLs of JavaScript files to be excluded from minification and " +"concatenation (one per line)." +msgstr "" +"Especificar los URLs de archivos JavaScript que quieres excluir de la " +"minificación y de la concatenación (uno por línea)." + +#: inc/Engine/Admin/Settings/Page.php:778 +msgid "" +"Internal: The domain part of the URL will be stripped " +"automatically. Use (.*).js wildcards to exclude all JS files located at a " +"specific path." +msgstr "" +"Archivos internos:la parte del URL relativa al dominio se " +"eliminará automáticamente. Usa los caracteres comodines para excluir todos " +"los archivos JS de una ruta específica." + +#: inc/Engine/Admin/Settings/Page.php:780 +#, php-format +msgid "" +"3rd Party: Use either the full URL path or only the domain " +"name, to exclude external JS. %1$sMore info%2$s" +msgstr "" +"Externos:Para excluir los JS externos, usa la ruta URL " +"completa o solo el nombre de dominio. %1$sMás info%2$s" + +#: inc/Engine/Admin/Settings/Page.php:796 +msgid "Load JavaScript deferred" +msgstr "Cargar archivos JavaScript de manera diferida" + +#: inc/Engine/Admin/Settings/Page.php:798 +#, php-format +msgid "" +"Load JavaScript deferred eliminates render-blocking JS on your site and can " +"improve load time. %1$sMore info%2$s" +msgstr "" +"Cargar el JavaScript de manera diferida elimina el JS que bloquea la " +"visualización en tu sitio web y puede mejorar el tiempo de carga. %1$sMás " +"info%2$s" + +#: inc/Engine/Admin/Settings/Page.php:809 +msgid "Safe Mode for jQuery (recommended)" +msgstr "Modo seguro para jQuery (recomendado)" + +#: inc/Engine/Admin/Settings/Page.php:810 +msgid "" +"Safe mode for jQuery for deferred JS ensures support for inline jQuery " +"references from themes and plugins by loading jQuery at the top of the " +"document as a render-blocking script.
      Deactivating may result in " +"broken functionality, test thoroughly!" +msgstr "" +"El Modo seguro para JS diferidos soporta todas la referencias integradas " +"jQuery de temas y plugins, ya que carga el jQuery por encima del documento " +"como un script que bloquea la visualización.
      Su desactivación puede " +"interrumpir algunas funcionalidades, ¡probar cuidadosamente!" + +#: inc/Engine/Admin/Settings/Page.php:822 +msgid "Delay JavaScript execution" +msgstr "Retrasar la ejecución de JavaScript" + +#: inc/Engine/Admin/Settings/Page.php:824 +#, php-format +msgid "" +"Improves performance by delaying the loading of JavaScript files until user " +"interaction (e.g. scroll, click). %1$sMore info%2$s" +msgstr "" +"Mejora el rendimiento retrasando la carga de los archivos JavaScript hasta " +"la interacción con el usuario (por ejemplo, desplazamiento, clic). %1$sMás " +"información%2$s" + +#: inc/Engine/Admin/Settings/Page.php:832 +msgid "Scripts to delay" +msgstr "Scripts a retrasar" + +#: inc/Engine/Admin/Settings/Page.php:833 +msgid "" +"Specify keywords that can identify inline or JavaScript files to be delayed " +"(one per line)." +msgstr "" +"Especifique palabras clave que puedan identificar los scripts en línea o " +"archivos JavaScript que se van a retrasar (uno por línea)." + +#: inc/Engine/Admin/Settings/Page.php:868 +msgid "Media" +msgstr "Medios" + +#: inc/Engine/Admin/Settings/Page.php:869 +msgid "LazyLoad, emojis, embeds, WebP" +msgstr "LazyLoad, emojis, embeds, WebP" + +#: inc/Engine/Admin/Settings/Page.php:878 +msgid "Avada" +msgstr "Avada" + +#: inc/Engine/Admin/Settings/Page.php:882 +msgid "Autoptimize" +msgstr "Autoptimize" + +#: inc/Engine/Admin/Settings/Page.php:927 +msgid "LazyLoad" +msgstr "LazyLoad" + +#: inc/Engine/Admin/Settings/Page.php:930 +#, php-format +msgid "" +"It can improve actual and perceived loading time as images, iframes, and " +"videos will be loaded only as they enter (or about to enter) the viewport " +"and reduces the number of HTTP requests. %1$sMore Info%2$s" +msgstr "" +"Puede mejorar ya sea el tiempo de carga real como el tiempo percibido, ya " +"que imágenes, iframes y videos se cargarán al entrar (o cuando están por " +"entrar) en la ventana gráfica. Esto reduce también el número de peticiones " +"HTTP. %1$sMás info%2$s" + +#: inc/Engine/Admin/Settings/Page.php:937 +#, php-format +msgid "" +"LazyLoad is currently activated in %2$s. If you want to use WP Rocket’s " +"LazyLoad, disable this option in %2$s." +msgstr "" +"LazyLoad está actualmente activada en %2$s. Si deseas usar la característica" +" LazyLoad de WP Rocket, desactiva esta opción en %2$s." + +#: inc/Engine/Admin/Settings/Page.php:940 +msgid "Emoji 👻" +msgstr "Emoji 👻" + +#: inc/Engine/Admin/Settings/Page.php:942 +msgid "" +"Use default emoji of visitor's browser instead of loading emoji from " +"WordPress.org" +msgstr "" +"Usa los emojis predeterminados del navegador de tus visitantes en vez de " +"cargar los emojis de WordPress.org" + +#: inc/Engine/Admin/Settings/Page.php:946 +msgid "Embeds" +msgstr "Contenido incrustado" + +#: inc/Engine/Admin/Settings/Page.php:948 +msgid "" +"Prevents others from embedding content from your site, prevents you from " +"embedding content from other (non-allowed) sites, and removes JavaScript " +"requests related to WordPress embeds" +msgstr "" +"Evita que otras personas incrusten contenido de su sitio, evita que usted " +"ingrese contenido de otros sitios (no permitidos) y elimina las solicitudes " +"de JavaScript relacionadas con las incrustaciones de WordPress" + +#: inc/Engine/Admin/Settings/Page.php:952 +msgid "WebP compatibility" +msgstr "Compatibilidad WebP" + +#: inc/Engine/Admin/Settings/Page.php:956 +#, php-format +msgid "" +"Enable this option if you would like WP Rocket to serve WebP images to " +"compatible browsers. Please note that WP Rocket cannot create WebP images " +"for you. To create WebP images we recommend %1$sImagify%2$s. %3$sMore " +"info%2$s" +msgstr "" +"Habilita esta opción si deseas que WP Rocket sirva imágenes WebP a " +"navegadores compatibles. Ten en cuenta que WP Rocket no puede crear imágenes" +" WebP por ti. Para crear imágenes WebP recomendamos %1$sImagify%2$s.%3$s Más" +" información%2$s" + +#: inc/Engine/Admin/Settings/Page.php:983 +msgid "Enable for images" +msgstr "Habilitar para las imágenes" + +#: inc/Engine/Admin/Settings/Page.php:995 +#, php-format +msgid "" +"LazyLoad for images is currently activated in %2$s. If you want to use " +"%1$s’s LazyLoad, disable this option in %2$s." +msgstr "" +"LazyLoad para imágenes está actualmente activada en %2$s. Si deseas usar la " +"opción LazyLoad de %1$s, desactiva esta opción en %2$s." + +#: inc/Engine/Admin/Settings/Page.php:1003 +msgid "Enable for iframes and videos" +msgstr "Habilitar para iframes y vídeos" + +#: inc/Engine/Admin/Settings/Page.php:1018 +msgid "Replace YouTube iframe with preview image" +msgstr "Remplaza el iframe de YouTube con una imagen en vista previa" + +#: inc/Engine/Admin/Settings/Page.php:1019 +msgid "" +"This can significantly improve your loading time if you have a lot of " +"YouTube videos on a page." +msgstr "" +"Esto puede mejorar considerablemente tu tiempo de carga si tienes muchos " +"vídeo en una página." + +#: inc/Engine/Admin/Settings/Page.php:1029 +#, php-format +msgid "Replace YouTube iframe with preview image is not compatible with %2$s." +msgstr "" +"Sustituir el iframe de YouTube por una imagen de previsualización no es " +"compatible con %2$s." + +#: inc/Engine/Admin/Settings/Page.php:1033 +msgid "Disable Emoji" +msgstr "Desactivar Emoji" + +#: inc/Engine/Admin/Settings/Page.php:1034 +msgid "Disable Emoji will reduce the number of external HTTP requests." +msgstr "Desactivar los Emojis reduce el número de peticiones HTTP externas." + +#: inc/Engine/Admin/Settings/Page.php:1042 +msgid "Disable WordPress embeds" +msgstr "Desactivar la función de WordPress para el contenido incrustado" + +#: inc/Engine/Admin/Settings/Page.php:1052 +#: inc/classes/subscriber/Media/class-webp-subscriber.php:362 +msgid "Enable WebP caching" +msgstr "Habilitar caché WebP" + +#: inc/Engine/Admin/Settings/Page.php:1072 inc/deprecated/deprecated.php:1776 +#: views/settings/page-sections/tutorials.php:30 +msgid "Preload" +msgstr "Precargar" + +#: inc/Engine/Admin/Settings/Page.php:1073 +msgid "Generate cache files, preload fonts" +msgstr "Generar archivos de caché, precargar fonts" + +#: inc/Engine/Admin/Settings/Page.php:1084 +msgid "Preload Cache" +msgstr "Precargar Caché" + +#: inc/Engine/Admin/Settings/Page.php:1087 +#, php-format +msgid "" +"When you enable preloading WP Rocket will generate the cache starting with " +"the links on your homepage followed by the sitemaps you specify. Preloading " +"is automatically triggered when you add or update content and can also be " +"manually triggered from the admin bar or from the %1$sWP Rocket " +"Dashboard%2$s." +msgstr "" +"Cuando activas la precarga, WP Rocket genera la caché empezando por los " +"enlaces en tu portada y luego pasa a los mapas del sitio que has " +"especificado. La precarga se dispara automáticamente cuando añades o " +"actualizas tu contenido; la puedes activar también manualmente desde la " +"barra de administración o desde el %1$sEscritorio WP Rocket%2$s. " + +#: inc/Engine/Admin/Settings/Page.php:1095 +msgid "Prefetch DNS Requests" +msgstr "Precarga de peticiones DNS" + +#: inc/Engine/Admin/Settings/Page.php:1097 +msgid "" +"DNS prefetching can make external files load faster, especially on mobile " +"networks" +msgstr "" +"La precarga de los DNS favorece una carga más rápida de los archivos " +"externos, especialmente en las redes móviles" + +#: inc/Engine/Admin/Settings/Page.php:1105 +msgid "Preload Fonts" +msgstr "Precargar Fonts" + +#: inc/Engine/Admin/Settings/Page.php:1108 +#, php-format +msgid "" +"Improves performance by helping browsers discover fonts in CSS files. " +"%1$sMore info%2$s" +msgstr "" +"Mejora el rendimiento al ayudar a los navegadores a encontrar fonts en " +"archivos CSS. %1$sMás información%2$s" + +#: inc/Engine/Admin/Settings/Page.php:1116 +msgid "Preload Links" +msgstr "Precargar Enlaces" + +#: inc/Engine/Admin/Settings/Page.php:1119 +#, php-format +msgid "" +"Link preloading improves the perceived load time by downloading a page when " +"a user hovers over the link. %1$sMore info%2$s" +msgstr "" +"La precarga de enlaces mejora el tiempo de carga percibido al descargar una " +"página cuando el usuario pasa el puntero del ratón por encima del enlace. " +"%1$sMás información%2$s" + +#: inc/Engine/Admin/Settings/Page.php:1133 +msgid "Activate Preloading" +msgstr "Activar la precarga" + +#: inc/Engine/Admin/Settings/Page.php:1152 +msgid "Activate sitemap-based cache preloading" +msgstr "Activar la función de precarga de caché a través del mapa del sitio" + +#: inc/Engine/Admin/Settings/Page.php:1171 +msgid "Sitemaps for preloading" +msgstr "Mapas del sitio para precargar" + +#: inc/Engine/Admin/Settings/Page.php:1175 +msgid "Specify XML sitemap(s) to be used for preloading" +msgstr "" +"Especificar el (o los) mapa(s) del sitio XML que quieres usar para la " +"precarga" + +#: inc/Engine/Admin/Settings/Page.php:1185 +msgid "URLs to prefetch" +msgstr "URLs para precargar" + +#: inc/Engine/Admin/Settings/Page.php:1186 +msgid "" +"Specify external hosts to be prefetched (no http:, one per " +"line)" +msgstr "" +"Especificar los servidores externos que quieres precargar (sin " +"http:, uno por línea)" + +#: inc/Engine/Admin/Settings/Page.php:1195 +msgid "Fonts to preload" +msgstr "Fonts a precargar" + +#: inc/Engine/Admin/Settings/Page.php:1196 +msgid "" +"Specify urls of the font files to be preloaded (one per line). Fonts must be" +" hosted on your own domain, or the domain you have specified on the CDN tab." +msgstr "" +"Especificar las direcciones URL de los archivos de fuentes que se van a " +"precargar (una por línea). Las fuentes deben estar alojadas en su propio " +"dominio o en el dominio que haya especificado en la pestaña CDN." + +#: inc/Engine/Admin/Settings/Page.php:1197 +msgid "" +"The domain part of the URL will be stripped automatically.
      Allowed font " +"extensions: otf, ttf, svg, woff, woff2." +msgstr "" +"La parte del dominio de la URL será removida automáticamente.
      " +"Extensiones de font permitidas: otf, ttf, svg, woff, woff2." + +#: inc/Engine/Admin/Settings/Page.php:1206 +msgid "Enable link preloading" +msgstr "Habilitar la precarga de enlaces" + +#: inc/Engine/Admin/Settings/Page.php:1225 +msgid "Advanced Rules" +msgstr "Reglas avanzadas" + +#: inc/Engine/Admin/Settings/Page.php:1226 +msgid "Fine-tune cache rules" +msgstr "Ajusta las reglas de caché" + +#: inc/Engine/Admin/Settings/Page.php:1235 +msgid "" +"Sensitive pages like custom login/logout URLs should be excluded from cache." +msgstr "" +"Las páginas confidenciales como los URLs de inicio/cerrar sesión deberían " +"ser excluidas de la caché." + +#: inc/Engine/Admin/Settings/Page.php:1238 +msgctxt "plugin name" +msgid "WooCommerce" +msgstr "WooCommerce" + +#: inc/Engine/Admin/Settings/Page.php:1240 +msgctxt "plugin name" +msgid "Easy Digital Downloads" +msgstr "Easy Digital Downloads" + +#: inc/Engine/Admin/Settings/Page.php:1242 +msgctxt "plugin name" +msgid "iThemes Exchange" +msgstr "iThemes Exchange" + +#: inc/Engine/Admin/Settings/Page.php:1244 +msgctxt "plugin name" +msgid "Jigoshop" +msgstr "Jigoshop" + +#: inc/Engine/Admin/Settings/Page.php:1246 +msgctxt "plugin name" +msgid "WP-Shop" +msgstr "WP-Shop" + +#: inc/Engine/Admin/Settings/Page.php:1252 +#, php-format +msgid "" +"
      Cart, checkout and \"my account\" pages set in " +"%1$s%2$s%3$s will be detected and never cached by default." +msgstr "" +"
      Las páginas del carrito, pago y ”mi cuenta” establecidas por " +"%1$s%2$s%3$s serán detectadas automáticamente y excluidas " +"de la caché." + +#: inc/Engine/Admin/Settings/Page.php:1262 inc/admin/options.php:128 +msgid "Never Cache URL(s)" +msgstr "Nunca poner en caché estos URLs" + +#: inc/Engine/Admin/Settings/Page.php:1273 +msgid "Never Cache Cookies" +msgstr "Nunca poner en caché estas Cookies" + +#: inc/Engine/Admin/Settings/Page.php:1278 inc/admin/options.php:129 +msgid "Never Cache User Agent(s)" +msgstr "Nunca poner en caché estos agentes de usuario" + +#: inc/Engine/Admin/Settings/Page.php:1283 inc/admin/options.php:130 +msgid "Always Purge URL(s)" +msgstr "Purgar siempre estos URLs" + +#: inc/Engine/Admin/Settings/Page.php:1292 +msgid "Cache Query String(s)" +msgstr "Poner en caché estos query strings" + +#: inc/Engine/Admin/Settings/Page.php:1295 +#, php-format +msgid "" +"%1$sCache for query strings%2$s enables you to force caching for specific " +"GET parameters." +msgstr "" +"La %1$scaché para los query strings%2$s te permite forzar la creación de una" +" caché para uno parámetros GET específicos." + +#: inc/Engine/Admin/Settings/Page.php:1309 +msgid "" +"Specify URLs of pages or posts that should never be cached (one per line)" +msgstr "" +"Especificar los URLs de las páginas o de las entradas que no deberían ser " +"copiadas en la caché (uno por línea)" + +#: inc/Engine/Admin/Settings/Page.php:1310 +#: inc/Engine/Admin/Settings/Page.php:1338 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*) " +"wildcards to address multiple URLs under a given path." +msgstr "" +"La porción de URL que contiene el dominio será eliminada " +"automáticamente.
      Puedes usar los caracteres comodines (.*) para gestionar" +" todos los URLs que se encuentran bajo una ruta específica." + +#: inc/Engine/Admin/Settings/Page.php:1319 +msgid "" +"Specify the IDs of cookies that, when set in the visitor's browser, should " +"prevent a page from getting cached (one per line)" +msgstr "" +"Especificar el ID de las cookies que, una vez activadas en el navegador del " +"usuario, deberían evitar que una página se copie en la caché (uno por línea)" + +#: inc/Engine/Admin/Settings/Page.php:1327 +msgid "" +"Specify user agent strings that should never see cached pages (one per line)" +msgstr "" +"Especificar los agentes de usuario que nunca deberían acceder a las páginas " +"en caché (una cadena por línea)" + +#: inc/Engine/Admin/Settings/Page.php:1328 +msgid "Use (.*) wildcards to detect parts of UA strings." +msgstr "" +"Usar los caracteres comodines (.*) para identificar partes del nombre del " +"agente de usuario." + +#: inc/Engine/Admin/Settings/Page.php:1337 +msgid "" +"Specify URLs you always want purged from cache whenever you update any post " +"or page (one per line)" +msgstr "" +"Especificar los URLs que quieres purgar de la caché cada vez que actualices " +"una entrada o una página (un URL por línea)" + +#: inc/Engine/Admin/Settings/Page.php:1346 +msgid "Specify query strings for caching (one per line)" +msgstr "" +"Especificar los query strings que quieres poner en caché (uno por línea):" + +#: inc/Engine/Admin/Settings/Page.php:1371 inc/deprecated/deprecated.php:1775 +msgid "Database" +msgstr "Base de datos" + +#: inc/Engine/Admin/Settings/Page.php:1372 +msgid "Optimize, reduce bloat" +msgstr "Optimiza, reduce lo sobrante" + +#: inc/Engine/Admin/Settings/Page.php:1381 +msgid "Post Cleanup" +msgstr "Limpieza de Entradas" + +#: inc/Engine/Admin/Settings/Page.php:1383 +msgid "" +"Post revisions and drafts will be permanently deleted. Do not use this " +"option if you need to retain revisions or drafts." +msgstr "" +"Las revisiones de entradas y los borradores se eliminarán permanentemente. " +"No usar esta opción si necesitas guardar las revisiones o los borradores." + +#: inc/Engine/Admin/Settings/Page.php:1391 +msgid "Comments Cleanup" +msgstr "Limpieza de Comentarios" + +#: inc/Engine/Admin/Settings/Page.php:1393 +msgid "Spam and trashed comments will be permanently deleted." +msgstr "Los comentarios spam y los descartados se eliminarán permanentemente." + +#: inc/Engine/Admin/Settings/Page.php:1397 +msgid "Transients Cleanup" +msgstr "Limpieza de Transients" + +#: inc/Engine/Admin/Settings/Page.php:1399 +msgid "" +"Transients are temporary options; they are safe to remove. They will be " +"automatically regenerated as your plugins require them." +msgstr "" +"Los transients son opciones temporales; puedes eliminarlas sin problemas. Se" +" volverán a regenerar en cuanto tus plugins las necesiten." + +#: inc/Engine/Admin/Settings/Page.php:1403 +msgid "Database Cleanup" +msgstr "Limpieza de la Base de Datos" + +#: inc/Engine/Admin/Settings/Page.php:1405 +msgid "Reduces overhead of database tables" +msgstr "Reduce el residuo a depurar de la tablas de la base de datos" + +#: inc/Engine/Admin/Settings/Page.php:1409 +msgid "Automatic cleanup" +msgstr "Limpieza automática" + +#: inc/Engine/Admin/Settings/Page.php:1420 +#: inc/classes/admin/Database/class-optimization.php:41 +msgid "Revisions" +msgstr "Revisiones" + +#: inc/Engine/Admin/Settings/Page.php:1422 +#, php-format +msgid "%s revision in your database." +msgid_plural "%s revisions in your database." +msgstr[0] "%s revisión en tu base de datos." +msgstr[1] "%s revisiones en tu base de datos." + +#: inc/Engine/Admin/Settings/Page.php:1430 +#: inc/classes/admin/Database/class-optimization.php:42 +msgid "Auto Drafts" +msgstr "Borradores automáticos" + +#: inc/Engine/Admin/Settings/Page.php:1432 +#, php-format +msgid "%s draft in your database." +msgid_plural "%s drafts in your database." +msgstr[0] "%s borrador en tu base de datos." +msgstr[1] "%s borradores en tu base de datos." + +#: inc/Engine/Admin/Settings/Page.php:1440 +#: inc/classes/admin/Database/class-optimization.php:43 +msgid "Trashed Posts" +msgstr "Entradas descartadas" + +#: inc/Engine/Admin/Settings/Page.php:1442 +#, php-format +msgid "%s trashed post in your database." +msgid_plural "%s trashed posts in your database." +msgstr[0] "%sentradas descartadas en tu base de datos." +msgstr[1] "%s entradas descartadas en tu base de datos." + +#: inc/Engine/Admin/Settings/Page.php:1450 +#: inc/classes/admin/Database/class-optimization.php:44 +msgid "Spam Comments" +msgstr "Comentarios spam" + +#: inc/Engine/Admin/Settings/Page.php:1452 +#, php-format +msgid "%s spam comment in your database." +msgid_plural "%s spam comments in your database." +msgstr[0] "%s comentario spam en tu base de datos." +msgstr[1] "%s comentarios spam en tu base de datos." + +#: inc/Engine/Admin/Settings/Page.php:1460 +#: inc/classes/admin/Database/class-optimization.php:45 +msgid "Trashed Comments" +msgstr "Comentarios descartados" + +#: inc/Engine/Admin/Settings/Page.php:1462 +#, php-format +msgid "%s trashed comment in your database." +msgid_plural "%s trashed comments in your database." +msgstr[0] "%s comentario descartado en tu base de datos." +msgstr[1] "%s comentarios descartados en tu base de datos." + +#: inc/Engine/Admin/Settings/Page.php:1470 +#: inc/classes/admin/Database/class-optimization.php:46 +msgid "Expired transients" +msgstr "Datos transitorios expirados" + +#: inc/Engine/Admin/Settings/Page.php:1472 +#, php-format +msgid "%s expired transient in your database." +msgid_plural "%s expired transients in your database." +msgstr[0] "%s dato transitorio expirado en tu base de datos." +msgstr[1] "%s datos transitorios expirados en tu base de datos." + +#: inc/Engine/Admin/Settings/Page.php:1480 +msgid "All transients" +msgstr "Todos los transients" + +#: inc/Engine/Admin/Settings/Page.php:1482 +#, php-format +msgid "%s transient in your database." +msgid_plural "%s transients in your database." +msgstr[0] "%s dato transitorio en tu base de datos" +msgstr[1] "%s datos transitorios en tu base de datos." + +#: inc/Engine/Admin/Settings/Page.php:1490 +msgid "Optimize Tables" +msgstr "Optimizar Tablas" + +#: inc/Engine/Admin/Settings/Page.php:1492 +#, php-format +msgid "%s table to optimize in your database." +msgid_plural "%s tables to optimize in your database." +msgstr[0] "%s tabla para optimizar en tu base de datos." +msgstr[1] "%s tablas para optimizar en tu base de datos." + +#: inc/Engine/Admin/Settings/Page.php:1503 +msgid "Schedule Automatic Cleanup" +msgstr "Programar Limpieza Automática" + +#: inc/Engine/Admin/Settings/Page.php:1515 +msgid "Frequency" +msgstr "Frecuencia" + +#: inc/Engine/Admin/Settings/Page.php:1523 +msgid "Daily" +msgstr "Diaria" + +#: inc/Engine/Admin/Settings/Page.php:1524 +msgid "Weekly" +msgstr "Semanal" + +#: inc/Engine/Admin/Settings/Page.php:1525 +msgid "Monthly" +msgstr "Mensual" + +#: inc/Engine/Admin/Settings/Page.php:1541 +#: inc/Engine/Admin/Settings/Page.php:1552 inc/admin/ui/meta-boxes.php:76 +#: inc/deprecated/deprecated.php:1773 +msgid "CDN" +msgstr "CDN" + +#: inc/Engine/Admin/Settings/Page.php:1542 +msgid "Integrate your CDN" +msgstr "Integrar tu CDN" + +#: inc/Engine/Admin/Settings/Page.php:1554 +msgid "" +"All URLs of static files (CSS, JS, images) will be rewritten to the CNAME(s)" +" you provide." +msgstr "" +"Todos los URLs de los archivos estáticos (CSS, JS, imágenes) serán " +"reescritos por el CNAME(s) que indicarás." + +#: inc/Engine/Admin/Settings/Page.php:1556 +#, php-format +msgid "" +"Not required for services like Cloudflare and Sucuri. Please see our " +"available %1$sAdd-ons%2$s." +msgstr "" +"No es necesario para servicios como Cloudflare y Sucuri. Verifica los %1" +"$sAdd-ons%2$s disponibles." + +#: inc/Engine/Admin/Settings/Page.php:1571 inc/admin/options.php:131 +msgid "Exclude files from CDN" +msgstr "Excluir archivos del CDN" + +#: inc/Engine/Admin/Settings/Page.php:1597 +#, php-format +msgid "" +"%1$s%2$s Add-on%3$s is currently enabled. Configuration of the CDN settings " +"is not required for %2$s to work on your site." +msgid_plural "" +"%1$s%2$s Add-ons%3$s are currently enabled. Configuration of the CDN " +"settings is not required for %2$s to work on your site." +msgstr[0] "" +"De momento el %1$s Add-on %2$s%3$s no está activo. La configuración de los " +"ajustes del CDN no es obligatoria para que %2$s funcione en tu web." +msgstr[1] "" +"De momento los %1$s Add-ons %2$s%3$s no están activos. La configuración de " +"los ajustes del CDN no es obligatoria para que %2$s funcione en tu web." + +#: inc/Engine/Admin/Settings/Page.php:1622 +msgid "Enable Content Delivery Network" +msgstr "Habilitar el Content Delivery Network" + +#: inc/Engine/Admin/Settings/Page.php:1631 +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:151 +msgid "CDN CNAME(s)" +msgstr "CNAME(S) del CDN" + +#: inc/Engine/Admin/Settings/Page.php:1632 +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:152 +msgid "Specify the CNAME(s) below" +msgstr "Especificar el CNAME(s) aquí abajo" + +#: inc/Engine/Admin/Settings/Page.php:1639 +msgid "" +"Specify URL(s) of files that should not get served via CDN (one per line)." +msgstr "" +"Especificar los URLs de los archivos que no tienen que servirse a través del" +" CDN (uno por línea)." + +#: inc/Engine/Admin/Settings/Page.php:1640 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*) " +"wildcards to exclude all files of a given file type located at a specific " +"path." +msgstr "" +"La porción de URL que contiene el dominio será eliminada " +"automáticamente.
      Puedes usar los caracteres comodines (.*) para excluir " +"todos los archivos que se encuentran bajo una ruta específica." + +#: inc/Engine/Admin/Settings/Page.php:1662 +#: inc/Engine/Admin/Settings/Page.php:1670 +msgid "Heartbeat" +msgstr "Heartbeat" + +#: inc/Engine/Admin/Settings/Page.php:1663 +msgid "Control WordPress Heartbeat API" +msgstr "Controla el API Heartbeat de WordPress" + +#: inc/Engine/Admin/Settings/Page.php:1671 +msgid "" +"Reducing or disabling the Heartbeat API’s activity can help save some of " +"your server’s resources." +msgstr "" +"Reducir o desactivar la actividad de la API Heartbeat puede ayudarte a " +"ahorrar unos recursos de tu servidor." + +#: inc/Engine/Admin/Settings/Page.php:1680 +msgid "Reduce or disable Heartbeat activity" +msgstr "Reduce o desactiva la actividad de Heartbeat" + +#: inc/Engine/Admin/Settings/Page.php:1681 +msgid "" +"Reducing activity will change Heartbeat frequency from one hit each minute " +"to one hit every 2 minutes." +msgstr "" +"Reducir la actividad cambiará la frecuencia de Heartbeat de una visita por " +"minuto a una visita cada 2 minutos." + +#: inc/Engine/Admin/Settings/Page.php:1681 +msgid "" +"Disabling Heartbeat entirely may break plugins and themes using this API." +msgstr "" +"Desactivar completamente el Heartbeat puede comprometer funcionalidades de " +"los temas y plugins que usan esta API." + +#: inc/Engine/Admin/Settings/Page.php:1695 +msgid "Do not limit" +msgstr "No limitar" + +#: inc/Engine/Admin/Settings/Page.php:1696 +msgid "Reduce activity" +msgstr "Reducir actividad" + +#: inc/Engine/Admin/Settings/Page.php:1697 +msgid "Disable" +msgstr "Desactivar" + +#: inc/Engine/Admin/Settings/Page.php:1705 +msgid "Control Heartbeat" +msgstr "Controlar Heartbeat" + +#: inc/Engine/Admin/Settings/Page.php:1714 +msgid "Behavior in backend" +msgstr "Comportamiento en backend" + +#: inc/Engine/Admin/Settings/Page.php:1721 +msgid "Behavior in post editor" +msgstr "Comportamiento en el editor de entradas" + +#: inc/Engine/Admin/Settings/Page.php:1727 +msgid "Behavior in frontend" +msgstr "Comportamiento en frontend" + +#: inc/Engine/Admin/Settings/Page.php:1743 +#: views/settings/page-sections/tutorials.php:36 +msgid "Add-ons" +msgstr "Add-on" + +#: inc/Engine/Admin/Settings/Page.php:1744 +msgid "Add more features" +msgstr "Añadir más opciones" + +#: inc/Engine/Admin/Settings/Page.php:1751 +msgid "One-click Rocket Add-ons" +msgstr "One-click Rocket Add-ons" + +#: inc/Engine/Admin/Settings/Page.php:1752 +msgid "" +"One-Click Add-ons are features extending available options without " +"configuration needed. Switch the option \"on\" to enable from this screen." +msgstr "" +"Los One-Click Add-ons son complementos extra que se añaden a las opciones ya" +" disponibles. No es necesaria ninguna configuración. Cambia la opción a ”on”" +" para activarla desde aquí." + +#: inc/Engine/Admin/Settings/Page.php:1762 +msgid "Rocket Add-ons" +msgstr "Rocket Add-on" + +#: inc/Engine/Admin/Settings/Page.php:1763 +msgid "Rocket Add-ons are complementary features extending available options." +msgstr "" +"Los Rocket Add-on son complementos extra que se añaden a las opciones ya " +"disponibles." + +#: inc/Engine/Admin/Settings/Page.php:1776 +msgid "Google Tracking" +msgstr "Google Tracking" + +#: inc/Engine/Admin/Settings/Page.php:1782 +msgid "Improve browser caching for Google Analytics" +msgstr "Mejora la caché del navegador para Google Analytics" + +#: inc/Engine/Admin/Settings/Page.php:1784 +#, php-format +msgid "" +"WP Rocket will host these Google scripts locally on your server to help " +"satisfy the PageSpeed recommendation for Leverage browser " +"caching.
      %1$sLearn more%2$s" +msgstr "" +"WP Rocket guardará localmente en tu servidor estos scripts para ayudarte a " +"satisfacer la recomendación de PageSpeed Leverage browser " +"caching(Aprovechar el almacenamiento en caché del " +"navegador).
      %1$sMás info%2$s" + +#: inc/Engine/Admin/Settings/Page.php:1799 +msgid "Facebook Pixel" +msgstr "Facebook Pixel" + +#: inc/Engine/Admin/Settings/Page.php:1805 +msgid "Improve browser caching for Facebook Pixel" +msgstr "Mejora la caché del navegador para Facebook Pixel " + +#: inc/Engine/Admin/Settings/Page.php:1807 +#, php-format +msgid "" +"WP Rocket will host these Facebook Pixels locally on your server to help " +"satisfy the PageSpeed recommendation for Leverage browser " +"caching.
      %1$sLearn more%2$s" +msgstr "" +"WP Rocket guardará estos Facebook Pixel localmente en tu servidor, para " +"ayudarte a cumplir con la recomendación PageSpeed Aprovechar el " +"almacenamiento en caché del navegador.
      %1$sMás info%2$s" + +#: inc/Engine/Admin/Settings/Page.php:1820 +#: inc/Engine/Admin/Settings/Page.php:1921 +msgid "Cloudflare" +msgstr "Cloudflare" + +#: inc/Engine/Admin/Settings/Page.php:1826 +msgid "Integrate your Cloudflare account with this add-on." +msgstr "Este complemento sirve para integrar tu cuenta de Cloudflare." + +#: inc/Engine/Admin/Settings/Page.php:1827 +msgid "" +"Provide your account email, global API key, and domain to use options such " +"as clearing the Cloudflare cache and enabling optimal settings with WP " +"Rocket." +msgstr "" +"Proporciona tu dirección de correo electrónico, la clave de API global y el " +"dominio: así aprovecharás de opciones como borrar la caché de Cloudflare y " +"activar los ajustes óptimos para trabajar con WP Rocket." + +#: inc/Engine/Admin/Settings/Page.php:1861 +msgid "Varnish" +msgstr "Varnish" + +#: inc/Engine/Admin/Settings/Page.php:1867 +msgid "If Varnish runs on your server, you must activate this add-on." +msgstr "Si tu servidor usa Varnish tienes que activar este complemento." + +#: inc/Engine/Admin/Settings/Page.php:1869 +#, php-format +msgid "" +"Varnish cache will be purged each time WP Rocket clears its cache to ensure " +"content is always up-to-date.
      %1$sLearn more%2$s" +msgstr "" +"La caché Varnish se borrará al mismo tiempo que la caché WP Rocket para " +"asegurar que el contenido esté siempre al día.
      %1$sMás info%2$s" + +#: inc/Engine/Admin/Settings/Page.php:1883 +msgid "Clear the Sucuri cache when WP Rocket’s cache is cleared." +msgstr "Borra la caché de Sucuri al mismo tiempo que la caché de WP Rocket." + +#: inc/Engine/Admin/Settings/Page.php:1886 +msgid "" +"Provide your API key to clear the Sucuri cache when WP Rocket’s cache is " +"cleared." +msgstr "" +"Ingresa tu clave API para borrar la caché de Sucuri al mismo tiempo que la " +"caché de WP Rocket." + +#: inc/Engine/Admin/Settings/Page.php:1894 +#: inc/Engine/Admin/Settings/Page.php:2038 +msgid "Sucuri" +msgstr "Sucuri" + +#: inc/Engine/Admin/Settings/Page.php:1900 +msgid "Synchronize Sucuri cache with this add-on." +msgstr "Sincronizar la caché de Sucuri con este complemento." + +#: inc/Engine/Admin/Settings/Page.php:1938 +msgid "Cloudflare credentials" +msgstr "Credenciales de Cloudflare" + +#: inc/Engine/Admin/Settings/Page.php:1947 +msgid "Cloudflare settings" +msgstr "Ajustes de Cloudflare" + +#: inc/Engine/Admin/Settings/Page.php:1961 +msgctxt "Cloudflare" +msgid "Global API key:" +msgstr "Clave de API global:" + +#: inc/Engine/Admin/Settings/Page.php:1962 +msgctxt "Cloudflare" +msgid "Find your API key" +msgstr "Encuentra tu clave de API" + +#: inc/Engine/Admin/Settings/Page.php:1974 +msgctxt "Cloudflare" +msgid "Account email" +msgstr "Dirección de correo electrónico" + +#: inc/Engine/Admin/Settings/Page.php:1983 +msgctxt "Cloudflare" +msgid "Zone ID" +msgstr "ID de zona" + +#: inc/Engine/Admin/Settings/Page.php:1993 +msgid "Development mode" +msgstr "Modo de desarrollo" + +#: inc/Engine/Admin/Settings/Page.php:1995 +#, php-format +msgid "" +"Temporarily activate development mode on your website. This setting will " +"automatically turn off after 3 hours. %1$sLearn more%2$s" +msgstr "" +"Activa temporalmente el modo desarrollador en tu sitio web. Esta opción se " +"desmarcará automáticamente pasadas 3 horas. %1$sMás info%2$s" + +#: inc/Engine/Admin/Settings/Page.php:2003 +msgid "Optimal settings" +msgstr "Ajustes óptimos" + +#: inc/Engine/Admin/Settings/Page.php:2004 +msgid "" +"Automatically enhances your Cloudflare configuration for speed, performance " +"grade and compatibility." +msgstr "" +"Mejora automáticamente tu configuración de Cloudflare para aumentar la " +"velocidad, la nota de rendimiento y la compatibilidad." + +#: inc/Engine/Admin/Settings/Page.php:2012 +msgid "Relative protocol" +msgstr "Protocolo relativo" + +#: inc/Engine/Admin/Settings/Page.php:2013 +msgid "" +"Should only be used with Cloudflare's flexible SSL feature. URLs of static " +"files (CSS, JS, images) will be rewritten to use // instead of http:// or " +"https://." +msgstr "" +"Debería ser usado exclusivamente a lado de la opción Flexible SSL de " +"Cloudflare. Los URLs de los archivos estáticos (CSS, JS, imágenes) serán " +"reescritos usando // en vez de http:// o https://." + +#: inc/Engine/Admin/Settings/Page.php:2051 +msgid "Sucuri credentials" +msgstr "Credenciales de acceso a Sucuri" + +#: inc/Engine/Admin/Settings/Page.php:2064 +msgctxt "Sucuri" +msgid "" +"Firewall API key (for plugin), must be in format {32 characters}/{32 " +"characters}:" +msgstr "" +"La clave API del cortafuegos (para el plugin), debe estar en formato " +"{32 caracteres}/{32 caracteres}:" + +#: inc/Engine/Admin/Settings/Page.php:2065 +msgctxt "Sucuri" +msgid "Find your API key" +msgstr "Encuentra tu clave de API" + +#: inc/Engine/Admin/Settings/Render.php:461 inc/deprecated/deprecated.php:1294 +msgid "Upload file and import settings" +msgstr "Cargar archivo e importar ajustes" + +#: inc/Engine/Admin/Settings/Settings.php:400 +msgid "" +"Sucuri Add-on: The API key for the Sucuri firewall must be in format " +"{32 characters}/{32 characters}." +msgstr "" +"Add-on Sucuri: la clave API del cortafuego Sucuri tiene que ser en formato " +"{32 caracteres}/{32 caracteres}." + +#: inc/Engine/Admin/Settings/Settings.php:491 +#: inc/deprecated/deprecated.php:1245 +msgid "Settings saved." +msgstr "Ajustes guardados." + +#: inc/Engine/Admin/Settings/Subscriber.php:141 +#: inc/deprecated/deprecated.php:1786 +#: views/settings/page-sections/tools.php:33 +msgid "Tools" +msgstr "Herramientas" + +#: inc/Engine/Admin/Settings/Subscriber.php:142 +msgid "Import, Export, Rollback" +msgstr "Importar, Exportar, Rollback" + +#: inc/Engine/Admin/Settings/Subscriber.php:163 +#: views/settings/page-sections/imagify.php:14 +msgid "Image Optimization" +msgstr "Optimización de imágenes" + +#: inc/Engine/Admin/Settings/Subscriber.php:164 +msgid "Compress your images" +msgstr "Comprimir tus imágenes" + +#: inc/Engine/Admin/Settings/Subscriber.php:181 +#: views/settings/page-sections/tutorials.php:45 +msgid "Tutorials" +msgstr "Tutoriales" + +#: inc/Engine/Admin/Settings/Subscriber.php:182 +msgid "Getting started and how to videos" +msgstr "Videos introductorios y de primeros pasos" + +#: inc/Engine/CDN/RocketCDN/APIClient.php:154 +msgid "RocketCDN is not available at the moment. Please retry later" +msgstr "" +"RocketCDN no está disponible en este momento. Por favor intenta más tarde." + +#: inc/Engine/CDN/RocketCDN/APIClient.php:171 +msgid "RocketCDN cache purge failed: Missing identifier parameter." +msgstr "" +"La limpieza de la caché de RocketCDN ha fallado: falta el parámetro de " +"identificación." + +#: inc/Engine/CDN/RocketCDN/APIClient.php:180 +msgid "RocketCDN cache purge failed: Missing user token." +msgstr "" +"La limpieza de la caché de RocketCDN ha fallado: falta el token de usuario." + +#: inc/Engine/CDN/RocketCDN/APIClient.php:199 +msgid "" +"RocketCDN cache purge failed: The API returned an unexpected response code." +msgstr "" +"La limpieza de la caché de RocketCDN ha fallado: el API ha retornado un " +"código de respuesta inesperado." + +#: inc/Engine/CDN/RocketCDN/APIClient.php:208 +msgid "RocketCDN cache purge failed: The API returned an empty response." +msgstr "" +"La limpieza de la caché de RocketCDN ha fallado: el API ha retornado una " +"respuesta vacía. " + +#: inc/Engine/CDN/RocketCDN/APIClient.php:217 +msgid "RocketCDN cache purge failed: The API returned an unexpected response." +msgstr "" +"La limpieza de la caché de RocketCDN ha fallado: el API ha retornado una " +"respuesta inesperada." + +#: inc/Engine/CDN/RocketCDN/APIClient.php:226 +#, php-format +msgid "RocketCDN cache purge failed: %s." +msgstr "La limpieza de la caché de RocketCDN ha fallado: %s" + +#: inc/Engine/CDN/RocketCDN/APIClient.php:234 +msgid "RocketCDN cache purge successful." +msgstr "Limpieza de la caché de RocketCDN realizada con éxito." + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:82 +msgid "Next Billing Date" +msgstr "Próxima fecha de cobro" + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:91 +msgid "No Subscription" +msgstr "No hay una suscripción" + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:127 +msgid "Your RocketCDN subscription is currently active." +msgstr "Tu suscripción de RocketCDN está actualmente activa." + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:133 +#, php-format +msgid "To use RocketCDN, replace your CNAME with %1$s%2$s%3$s." +msgstr "Para usar RocketCDN, reemplaza tu CNAME con %1$s%2$s%3$s" + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:144 +#, php-format +msgid "%1$sMore Info%2$s" +msgstr "%1$sMás información%2$s" + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:190 +msgid "Manage Subscription" +msgstr "Administrar Suscripción" + +#: inc/Engine/CDN/RocketCDN/RESTSubscriber.php:137 +msgid "RocketCDN enabled" +msgstr "RocketCDN activado" + +#: inc/Engine/CDN/RocketCDN/RESTSubscriber.php:160 +msgid "RocketCDN disabled" +msgstr "RocketCDN desactivado" + +#: inc/Engine/Cache/AdminSubscriber.php:118 inc/admin/admin.php:71 +#: inc/admin/admin.php:92 inc/deprecated/3.5.php:908 +msgid "Clear this cache" +msgstr "Borrar esta caché" + +#: inc/Engine/Cache/WPCache.php:330 +msgid "WP_CACHE value" +msgstr "valor de WP_CACHE" + +#: inc/Engine/Cache/WPCache.php:351 +msgid "" +"The WP_CACHE constant needs to be set to true for WP Rocket cache to work " +"properly" +msgstr "" +"La constante WP_CACHE necesita ser true para que la cache de WP Rocket " +"funcione correctamente" + +#: inc/Engine/Cache/WPCache.php:360 +msgid "WP_CACHE is set to true" +msgstr "WP_CACHE está establecida como true" + +#: inc/Engine/Cache/WPCache.php:368 +msgid "WP_CACHE is not set" +msgstr "WP_CACHE no está establecida" + +#: inc/Engine/Cache/WPCache.php:376 +msgid "WP_CACHE is set to false" +msgstr "WP_CACHE está establecida como false" + +#: inc/Engine/CriticalPath/APIClient.php:64 +#, php-format +msgid "Critical CSS for %1$s not generated. Error: %2$s" +msgstr "No se ha podido generar el CSS crítico para %1$s. Error: %2$s" + +#: inc/Engine/CriticalPath/APIClient.php:170 +#: inc/Engine/CriticalPath/DataManager.php:66 +#, php-format +msgid "" +"Critical CSS for %1$s on mobile not generated. Error: The API returned an " +"empty response." +msgstr "" +"El CSS Crítico para %1$s en móvil no ha sido generado. Error: La API regresó" +" una respuesta vacía." + +#: inc/Engine/CriticalPath/APIClient.php:173 +#: inc/Engine/CriticalPath/DataManager.php:69 +#, php-format +msgid "" +"Critical CSS for %1$s not generated. Error: The API returned an empty " +"response." +msgstr "" +"El CSS Crítico para %1$s no ha sido generado. Error: La API regresó una " +"respuesta vacía." + +#: inc/Engine/CriticalPath/APIClient.php:185 +#, php-format +msgid "Critical CSS for %1$s on mobile not generated." +msgstr "El CSS Crítico para %1$s en móvil no ha sido generado." + +#: inc/Engine/CriticalPath/APIClient.php:187 +#: inc/Engine/CriticalPath/ProcessorService.php:193 +#, php-format +msgid "Critical CSS for %1$s not generated." +msgstr "El CSS Crítico para %1$s no ha sido generado." + +#: inc/Engine/CriticalPath/APIClient.php:195 +#, php-format +msgid "" +"Critical CSS for %1$s on mobile not generated. Error: The API returned an " +"invalid response code." +msgstr "" +"El CSS Crítico para %1$s en móvil no ha sido generado. Error: La API regresó" +" una respuesta vacía." + +#: inc/Engine/CriticalPath/APIClient.php:197 +#, php-format +msgid "" +"Critical CSS for %1$s not generated. Error: The API returned an invalid " +"response code." +msgstr "" +"El CSS Crítico para %1$s no ha sido generado. Error: La API regresó una " +"respuesta vacía." + +#: inc/Engine/CriticalPath/APIClient.php:205 +#: inc/Engine/CriticalPath/ProcessorService.php:200 +#, php-format +msgid "Error: %1$s" +msgstr "Error: %1$s" + +#: inc/Engine/CriticalPath/Admin/Admin.php:260 +msgid "Regenerate Critical Path CSS" +msgstr "Regenera la ruta crítica del CSS" + +#: inc/Engine/CriticalPath/Admin/Post.php:132 +#: views/cpcss/metabox/generate.php:47 +msgid "Generate Specific CPCSS" +msgstr "Generar CPCSS Específico" + +#: inc/Engine/CriticalPath/Admin/Post.php:133 +#: views/cpcss/metabox/generate.php:45 +msgid "Regenerate specific CPCSS" +msgstr "Regenerar CPCSS Específico" + +#: inc/Engine/CriticalPath/Admin/Post.php:199 +msgid "%l to use this feature." +msgstr "%l para usar esta característica." + +#: inc/Engine/CriticalPath/Admin/Post.php:202 +#, php-format +msgid "Publish the %s" +msgstr "Publicar el %s" + +#: inc/Engine/CriticalPath/Admin/Post.php:203 +msgid "Enable Optimize CSS delivery in WP Rocket settings" +msgstr "Habilitar la Optimización de entrega CSS en los ajustes de WP Rocket" + +#: inc/Engine/CriticalPath/Admin/Post.php:204 +msgid "Enable Optimize CSS delivery in the options above" +msgstr "Habilita la Optimización de entrega CSS en las opciones de arriba" + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:147 +msgid "Critical CSS generation is currently running." +msgstr "La generación del CSS crítico se está ejecutando. " + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:152 +#: inc/Engine/Preload/PreloadSubscriber.php:242 +#, php-format +msgid "Go to the %1$sWP Rocket settings%2$s page to track progress." +msgstr "" +"Ve a la página de %1$sajustes de WP Rocket%2$s para seguir el proceso." + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:366 +#, php-format +msgid "" +"Critical CSS generation is currently running: %1$d of %2$d page types " +"completed. (Refresh this page to view progress)" +msgstr "" +"La generación del CSS crítico está actualmente en marcha: %1$d de %2$d tipos" +" de página completados. (Actualiza esta página para visualizar el avance)" + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:438 +#, php-format +msgid "Critical CSS generation finished for %1$d of %2$d page types." +msgstr "" +"La generación del CSS crítico se ha completado para %1$d de %2$d tipos de " +"página." + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:445 +msgid "Critical CSS generation encountered one or more errors." +msgstr "Se han producido errores en la generación del CSS crítico." + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:445 +msgid "Learn more." +msgstr "Más información." + +#: inc/Engine/CriticalPath/DataManager.php:102 +msgid "Critical CSS file for mobile does not exist" +msgstr "El CSS Crítico para móvil no existe" + +#: inc/Engine/CriticalPath/DataManager.php:104 +msgid "Critical CSS file does not exist" +msgstr "El CSS Crítico no existe" + +#: inc/Engine/CriticalPath/DataManager.php:116 +msgid "Critical CSS file for mobile cannot be deleted" +msgstr "El CSS Crítico para móvil no puede ser eliminado" + +#: inc/Engine/CriticalPath/DataManager.php:118 +msgid "Critical CSS file cannot be deleted" +msgstr "El CSS Crítico no puede ser eliminado" + +#: inc/Engine/CriticalPath/ProcessorService.php:186 +#, php-format +msgid "Mobile Critical CSS for %1$s not generated." +msgstr "El CSS Crítico Móvil para %1$s no ha sido generado." + +#: inc/Engine/CriticalPath/ProcessorService.php:227 +#, php-format +msgid "Critical CSS for %s in progress." +msgstr "CSS Crítico para %s en progreso." + +#: inc/Engine/CriticalPath/ProcessorService.php:261 +#, php-format +msgid "Mobile Critical CSS for %s generated." +msgstr "CSS Crítico Móvil para %s generado." + +#: inc/Engine/CriticalPath/ProcessorService.php:272 +#, php-format +msgid "Critical CSS for %s generated." +msgstr "El CSS crítico para %s ha sido generado." + +#: inc/Engine/CriticalPath/ProcessorService.php:294 +msgid "Critical CSS file deleted successfully." +msgstr "Archivo de CSS Crítico borrado con éxito." + +#: inc/Engine/CriticalPath/ProcessorService.php:316 +#, php-format +msgid "Mobile Critical CSS for %1$s timeout. Please retry a little later." +msgstr "" +"Timeout de CSS Crítico Móvil para %1$s. Por favor reintenta un poco más " +"tarde." + +#: inc/Engine/CriticalPath/ProcessorService.php:329 +#, php-format +msgid "Critical CSS for %1$s timeout. Please retry a little later." +msgstr "" +"Timeout de CSS Crítico para %1$s. Por favor reintenta un poco más tarde." + +#: inc/Engine/CriticalPath/RESTWP.php:141 +msgid "Mobile CPCSS generation not enabled." +msgstr "Generación de CPCSS para móvil no habilitada." + +#: inc/Engine/CriticalPath/RESTWPPost.php:36 +#: inc/Engine/CriticalPath/RESTWPPost.php:69 +msgid "Requested post does not exist." +msgstr "El post requerido no existe." + +#: inc/Engine/CriticalPath/RESTWPPost.php:46 +msgid "Cannot generate CPCSS for unpublished post." +msgstr "No se puede generar CPCSS para un post no publicado." + +#: inc/Engine/HealthCheck/HealthCheck.php:82 inc/deprecated/3.5.php:868 +msgid "" +"The following scheduled event failed to run. This may indicate the CRON " +"system is not running properly, which can prevent some WP Rocket features " +"from working as intended:" +msgid_plural "" +"The following scheduled events failed to run. This may indicate the CRON " +"system is not running properly, which can prevent some WP Rocket features " +"from working as intended:" +msgstr[0] "" +"El siguiente evento programado no se pudo ejecutar. Esto podría indicar que " +"el sistema CRON no está funcionando correctamente, lo que podría ocasionar " +"que algunas de características de WP Rocket no funcionen según lo previsto:" +msgstr[1] "" +"Los siguientes eventos programados no se pudieron ejecutar. Esto podría " +"indicar que el sistema CRON no está funcionando correctamente, lo que podría" +" ocasionar que algunas características de WP Rocket no funcionen según lo " +"previsto:" + +#: inc/Engine/HealthCheck/HealthCheck.php:88 inc/deprecated/3.5.php:877 +msgid "Please contact your host to check if CRON is working." +msgstr "" +"Por favor, contacta a tu proveedor de alojamiento para verificar si CRON " +"está funcionando." + +#: inc/Engine/HealthCheck/HealthCheck.php:142 +msgid "Scheduled Cache Purge" +msgstr "Limpieza de Caché Programada" + +#: inc/Engine/HealthCheck/HealthCheck.php:143 +msgid "Scheduled Database Optimization" +msgstr "Optimización Programada de Base de Datos" + +#: inc/Engine/HealthCheck/HealthCheck.php:144 +msgid "Database Optimization Process" +msgstr "Proceso de Optimización de Base de Datos" + +#: inc/Engine/HealthCheck/HealthCheck.php:145 +msgctxt "noun" +msgid "Preload" +msgstr "Precargar" + +#: inc/Engine/HealthCheck/HealthCheck.php:146 +msgid "Critical Path CSS Generation Process" +msgstr "Proceso de Generación de Ruta Crítica de CSS" + +#: inc/Engine/Optimization/DelayJS/Admin/Settings.php:92 +msgid "Restore Defaults" +msgstr "Restaurar a valores por defecto" + +#: inc/Engine/Preload/Homepage.php:153 +#, php-format +msgid "" +"Preload encountered an error. Could not gather links on %1$s because of the " +"following error: %2$s. %3$sLearn more%4$s." +msgstr "" +"Se ha producido un error durante la precarga. No ha sido posible juntar los " +"enlaces en %1$s a causa del error siguiente: %2$s. %3$sMás info%4$s." + +#: inc/Engine/Preload/Homepage.php:166 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: %2$s. Security measures could be preventing access. " +"%3$sLearn more%4$s." +msgstr "" +"Se ha producido un error durante la precarga. %1$s no es accesible a causa " +"del siguiente código de respuesta: %2$s. Es posible que las medidas de " +"seguridad estén impidiendo el acceso. %3$sMás info%4$s." + +#: inc/Engine/Preload/Homepage.php:172 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: 404. Please make sure your homepage is accessible in your " +"browser. %2$sLearn more%3$s." +msgstr "" +"Se ha producido un error durante la precarga. %1$s no es accesible a causa " +"del siguiente código de respuesta: 404. Asegúrate que tu página de inicio " +"sea accesible en tu navegador. %2$sMás info%3$s." + +#: inc/Engine/Preload/Homepage.php:178 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: 500. Please check with your web host about server access. " +"%2$sLearn more%3$s." +msgstr "" +"Se ha producido un error durante la precarga. %1$s no es accesible a causa " +"del siguiente código de respuesta: 500. Verifica los permisos de acceso al " +"servidor con tu proveedor de alojamiento web. %2$sMás info%3$s." + +#: inc/Engine/Preload/Homepage.php:184 +#, php-format +msgid "" +"Preload encountered an error. Could not gather links on %1$s because it " +"returned the following response code: %2$s. %3$sLearn more%4$s." +msgstr "" +"Se ha producido un error durante la precarga. No ha sido posible juntar los " +"enlaces en %1$s a causa del siguiente código de respuesta: %2$s. %3$sMás " +"info%4$s." + +#: inc/Engine/Preload/PreloadSubscriber.php:237 +msgid "Preload: WP Rocket has started preloading your website." +msgstr "Precarga: WP Rocket ha empezado a precargar tu sitio web. " + +#: inc/Engine/Preload/PreloadSubscriber.php:283 +#, php-format +msgid "" +"Preload: %1$s uncached page has now been preloaded. (refresh to see " +"progress)" +msgid_plural "" +"Preload: %1$s uncached pages have now been preloaded. (refresh to see " +"progress)" +msgstr[0] "" +"Precarga: se ha precargado %1$s página sin caché. (Actualiza para ver el " +"avance)" +msgstr[1] "" +"Precarga: se han precargado %1$s páginas sin caché. (Actualiza para ver el " +"avance)" + +#: inc/Engine/Preload/PreloadSubscriber.php:292 +msgid "The following error happened during gathering of the URLs to preload:" +msgid_plural "" +"The following errors happened during gathering of the URLs to preload:" +msgstr[0] "" +"Se ha generado el siguiente error durante la recopilación de las URLs para " +"precargar:" +msgstr[1] "" +"Se han generado los siguientes errores durante la recopilación de los URLs " +"para precargar:" + +#: inc/Engine/Preload/PreloadSubscriber.php:344 +#, php-format +msgid "Preload complete: %d pages have been cached." +msgstr "Precarga completa: %d páginas han sido almacenadas en la caché." + +#: inc/Engine/Preload/Sitemap.php:150 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not gather links on %1$s because" +" of the following error: %2$s. %3$sLearn more%4$s." +msgstr "" +"Se ha producido un error durante la precarga del mapa del sitio. No ha sido " +"posible juntar los enlaces en %1$s a causa del siguiente error: %2$s. " +"%3$sMás info%4$s." + +#: inc/Engine/Preload/Sitemap.php:165 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: %2$s. Security measures could be preventing access." +" %3$sLearn more%4$s." +msgstr "" +"Se ha producido un error durante la precarga. %1$s no es accesible a causa " +"del siguiente código de respuesta: %2$s. Es posible que las medidas de " +"seguridad estén impidiendo el acceso. %3$sMás info%4$s." + +#: inc/Engine/Preload/Sitemap.php:170 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: 404. Please make sure you entered the correct " +"sitemap URL and it is accessible in your browser. %2$sLearn more%3$s." +msgstr "" +"Se ha producido un error durante la precarga del mapa del sitio. %1$s no es " +"accesible a causa del siguiente código de respuesta: 404. Asegúrate de haber" +" añadido el URL correcto para el mapa del sitio y que sea accesible en tu " +"navegador. %2$sMás info%3$s." + +#: inc/Engine/Preload/Sitemap.php:175 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: 500. Please check with your web host about server " +"access. %2$sLearn more%3$s." +msgstr "" +"Se ha producido un error durante la precarga del mapa del sitio. %1$s no es " +"accesible a causa del siguiente código de respuesta: 500. Verifica los " +"permisos de acceso al servidor con tu proveedor de alojamiento web. %2$sMás " +"info%3$s." + +#: inc/Engine/Preload/Sitemap.php:180 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not gather links on %1$s because" +" it returned the following response code: %2$s. %3$sLearn more%4$s." +msgstr "" +"Se ha producido un error durante la precarga del mapa del sitio. No ha sido " +"posible juntar los enlaces en %1$s a causa del siguiente código de " +"respuesta: %2$s. %3$sMás info%4$s. " + +#: inc/Engine/Preload/Sitemap.php:196 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not collect links from %1$s " +"because the file is empty. %2$sLearn more%3$s." +msgstr "" +"Se ha producido un error durante la precarga del mapa del sitio. No ha sido " +"posible juntar los enlaces desde %1$s porque el archivo está vacío. %2$sMás " +"info%3$s." + +#: inc/Engine/Preload/Sitemap.php:217 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not collect links from %1$s " +"because of an error during the XML sitemap parsing. %2$sLearn more%3$s." +msgstr "" +"Se ha producido un error durante la precarga del mapa del sitio. No ha sido " +"posible juntar los enlaces desde %1$s a causa de un error durante el " +"análisis del mapa del sitio XML. %2$sMás info%3$s." + +#: inc/Engine/Preload/SitemapPreloadSubscriber.php:120 +#, php-format +msgid "" +"%1$sSimpleXML PHP extension%2$s is not enabled on your server. Please " +"contact your host to enable it before running sitemap-based cache " +"preloading." +msgstr "" +"%1$sLa extensión PHP SimpleXML%2$s no está habilitada en tu servidor. " +"Contacta con tu proveedor de hospedaje para habilitarla antes de activar la " +"precarga de la caché a través del mapa del sitio." + +#: inc/ThirdParty/Hostings/Cloudways.php:82 +#, php-format +msgid "" +"Varnish auto-purge will be automatically enabled once Varnish is enabled on " +"your %s server." +msgstr "" +"La purga automática de Varnish se habilitará una vez que el Varnish esté " +"habilitado en su %s servidor." + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:78 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"Please deactivate the following %s option which conflicts with WP Rocket " +"features:" +msgid_plural "" +"Please deactivate the following %s options which conflict with WP Rocket " +"features:" +msgstr[0] "" +"Por favor desactiva la siguiente opción %sque entra en conflicto con las " +"características de WP Rocket:" +msgstr[1] "" +"Por favor desactiva las siguientes opciones %s que entran en conflicto con " +"las características de WP Rocket:" + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:151 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sdisable emoji%3$s conflicts with WP Rockets %2$sdisable emoji%3$s" +msgstr "" +"La opción %2$sdesactivar emoji%3$s de %1$s entra en conflicto con la opción " +"%2$sdesactivar emoji%3$s de WP Rocket." + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:187 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sGZIP compression%3$s conflicts with WP Rocket %2$sGZIP " +"compression%3$s" +msgstr "" +"La %2$scompresión GZIP%3$s de %1$s entra en conflicto con la %2$scompresión " +"GZIP%3$s de WP Rocket." + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:223 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sbrowser caching%3$s conflicts with WP Rocket %2$sbrowser " +"caching%3$s" +msgstr "" +"La %2$scaché del navegador%3$s de %1$s entra en conflicto con la %2$scaché " +"del navegador%3$s de WP Rocket." + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:255 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$spage caching%3$s conflicts with WP Rocket %2$spage caching%3$s" +msgstr "" +"La %2$scaché de página%3$s de %1$s entra en conflicto con la %2$scaché de " +"página%3$s de WP Rocket." + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:289 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sasset optimization%3$s conflicts with WP Rocket %2$sfile " +"optimization%3$s" +msgstr "" +"%1$s%2$sla optimización de recursos%3$s entra en conflicto con la " +"%2$soptimización de archivos%3$s de WP Rocket" + +#: inc/ThirdParty/Plugins/Smush.php:110 inc/ThirdParty/Plugins/Smush.php:128 +msgid "Smush" +msgstr "Smush" + +#: inc/admin/admin.php:18 inc/common/admin-bar.php:367 +#: inc/deprecated/deprecated.php:1787 +msgid "Support" +msgstr "Soporte" + +#: inc/admin/admin.php:20 +msgid "Docs" +msgstr "Documentación" + +#: inc/admin/admin.php:22 inc/common/admin-bar.php:355 +msgid "FAQ" +msgstr "Preguntas Frecuentes" + +#: inc/admin/admin.php:24 inc/common/admin-bar.php:64 +msgid "Settings" +msgstr "Ajustes" + +#: inc/admin/admin.php:225 inc/admin/admin.php:240 +#: inc/classes/class-wp-rocket-requirements-check.php:203 +#: inc/classes/class-wp-rocket-requirements-check.php:214 +#, php-format +msgid "%s Update Rollback" +msgstr "Volver a la versión %s" + +#: inc/admin/admin.php:266 +#, php-format +msgid "%1$sReturn to WP Rocket%2$s or %3$sgo to Plugins page%2$s" +msgstr "%1$sVuelve a WP Rocket%2$s o %3$sve a la página Plugins%2$s" + +#: inc/admin/admin.php:503 +msgid "Settings import failed: you do not have the permissions to do this." +msgstr "" +"La importación de los ajustes ha fallado: no tienes permisos para realizar " +"esta acción." + +#: inc/admin/admin.php:507 +msgid "Settings import failed: no file uploaded." +msgstr "" +"La importación de los ajustes ha fallado: no se ha subido ningún archivo." + +#: inc/admin/admin.php:511 +msgid "Settings import failed: incorrect filename." +msgstr "" +"La importación de los ajustes ha fallado: nombre de archivo incorrecto." + +#: inc/admin/admin.php:522 +msgid "Settings import failed: incorrect filetype." +msgstr "La importación de los ajustes ha fallado: tipo de archivo incorrecto." + +#: inc/admin/admin.php:532 +msgid "Settings import failed: " +msgstr "La importación de los ajustes ha fallado:" + +#: inc/admin/admin.php:548 +msgid "Settings import failed: unexpected file content." +msgstr "" +"La importación de los ajustes ha fallado: el contenido del archivo es " +"inesperado." + +#: inc/admin/admin.php:569 +msgid "Settings imported and saved." +msgstr "Ajustes importados y guardados." + +#: inc/admin/options.php:149 +#, php-format +msgid "%1$s: %2$s." +msgstr "%1$s: %2$s." + +#: inc/admin/options.php:159 +msgid "The following pattern is invalid and has been removed:" +msgid_plural "The following patterns are invalid and have been removed:" +msgstr[0] "El siguiente patrón es inválido y ha sido eleminado:" +msgstr[1] "Los siguientes patrones son inválidos y han sido eleminados:" + +#: inc/admin/ui/meta-boxes.php:14 inc/admin/ui/notices.php:767 +#: inc/common/admin-bar.php:85 inc/common/admin-bar.php:137 +#: views/settings/page-sections/dashboard.php:124 +msgid "Clear cache" +msgstr "Borrar la caché" + +#: inc/admin/ui/meta-boxes.php:36 +msgid "WP Rocket Options" +msgstr "Ajustes de WP Rocket" + +#: inc/admin/ui/meta-boxes.php:65 +msgid "Never cache this page" +msgstr "Nunca poner en caché esta página" + +#: inc/admin/ui/meta-boxes.php:69 +msgid "Activate these options on this post:" +msgstr "Activar las opciones para esta entrada:" + +#: inc/admin/ui/meta-boxes.php:72 +msgid "LazyLoad for images" +msgstr "LazyLoad para imágenes" + +#: inc/admin/ui/meta-boxes.php:73 +msgid "LazyLoad for iframes/videos" +msgstr "LazyLoad para iframes/vídeos" + +#: inc/admin/ui/meta-boxes.php:74 +msgid "Minify/combine CSS" +msgstr "Minificar/combinar CSS" + +#: inc/admin/ui/meta-boxes.php:75 +msgid "Minify/combine JS" +msgstr "Minificar/combinar JS" + +#: inc/admin/ui/meta-boxes.php:77 +msgid "Optimize CSS Delivery" +msgstr "Optimizar la entrega del CSS" + +#: inc/admin/ui/meta-boxes.php:78 +msgid "Defer JS" +msgstr "JS diferido" + +#: inc/admin/ui/meta-boxes.php:84 +#, php-format +msgid "Activate first the %s option." +msgstr "Activar primero la opción %s ." + +#: inc/admin/ui/meta-boxes.php:100 +#, php-format +msgid "" +"%1$sNote:%2$s None of these options will be applied if this post has been " +"excluded from cache in the global cache settings." +msgstr "" +"%1$sNota:%2$s Ninguna de estas opciones se aplicará si la entrada ha sido " +"excluida de la caché en los ajustes globales." + +#: inc/admin/ui/notices.php:25 inc/admin/ui/notices.php:38 +#, php-format +msgid "" +"%1$s has not been deactivated due to missing writing permissions.
      \n" +"Make %2$s writeable and retry deactivation, or force deactivation now:" +msgstr "" +"%1$s no ha sido desactivado porque faltan unos permisos de escritura.
      \n" +"Haz %2$s editable y vuelve a intentar la desactivación, o fuérzala ahora:" + +#: inc/admin/ui/notices.php:91 +#, php-format +msgid "" +"%s: One or more plugins have been enabled or disabled, " +"clear the cache if they affect the front end of your site." +msgstr "" +"%s: Se ha activado o desactivado uno o más plugins, borra " +"la caché si notas un problema de visualización en tu sitio web." + +#: inc/admin/ui/notices.php:183 +msgid "" +"WP Rocket Cloudflare Add-on provides similar functionalities. They can not " +"be active at the same time." +msgstr "" +"El Add-on de Cloudflare de WP Rocket provee funcionalidades similares. Ambos" +" no pueden estar activos al mismo tiempo. " + +#: inc/admin/ui/notices.php:207 +#, php-format +msgid "" +"%s: The following plugins are not compatible with this " +"plugin and may cause unexpected results:" +msgstr "" +"%s: Los plugins siguientes no son compatibles con este " +"plugin y pueden provocar resultados inesperados:" + +#: inc/admin/ui/notices.php:213 +msgid "Deactivate" +msgstr "Desactivar" + +#: inc/admin/ui/notices.php:255 +msgid "" +"WP Rocket Footer JS is not an official add-on. It prevents some options in " +"WP Rocket from working correctly. Please deactivate it if you have problems." +msgstr "" +"El plugin WP Rocket Footer JS no es un plugin oficial. Puede impedir el " +"correcto funcionamiento de algunas opciones de WP Rocket. Por favor, " +"desactívalo si tienes problemas." + +#: inc/admin/ui/notices.php:295 +#, php-format +msgid "" +"Endurance Cache is currently enabled, which will conflict with WP Rocket " +"Cache. Please set the Endurance Cache cache level to Off (Level 0) on the " +"%1$sSettings > General%2$s page to prevent any issues." +msgstr "" +"Endurance Cache está actualmente activo, esto generará un conflicto con la " +"caché de WP Rocket. Por favor, establece el nivel de caché de Endurance " +"Cache a Off (Nivel 0) en la sección %1$sAjustes > General%2$s para evitar " +"inconvenientes." + +#: inc/admin/ui/notices.php:316 +#, php-format +msgid "" +"%1$s: A custom permalink structure is required for the plugin to work " +"properly. %2$sGo to permalinks settings%3$s" +msgstr "" +"%1$s: Se requiere una estructura personalizada de los enlaces permanentes " +"para que el plugin funcione correctamente. %2$sVe a los ajustes de los " +"enlaces permanentes%3$s" + +#: inc/admin/ui/notices.php:363 +#, php-format +msgid "" +"%s could not modify the .htaccess file due to missing writing permissions." +msgstr "" +"%s no pudo modificar el archivo .htaccess debido a la falta de permisos de " +"escritura. " + +#: inc/admin/ui/notices.php:369 inc/admin/ui/notices.php:844 +#, php-format +msgid "Troubleshoot: %1$sHow to make system files writeable%2$s" +msgstr "" +"Resolución del problema: %1$s¿Cómo hacer que los archivos de sistema sean " +"editables?%2$s" + +#: inc/admin/ui/notices.php:371 inc/admin/ui/notices.php:846 +msgid "" +"https://docs.wp-rocket.me/article/626-how-to-make-system-files-htaccess-wp-" +"config-writeable/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://es.docs.wp-rocket.me/article/872-como-hacer-para-que-los-archivos-" +"de-sistema-htaccess-wp-config-sean-" +"editables/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: inc/admin/ui/notices.php:377 +msgid "" +"Don’t worry, WP Rocket’s page caching and settings will still function " +"correctly." +msgstr "" +"No te preocupes, la caché de páginas y la configuración de WP Rocket aun " +"funcionarán correctamente." + +#: inc/admin/ui/notices.php:377 +msgid "" +"For optimal performance, adding the following lines into your .htaccess is " +"recommended (not required):" +msgstr "" +"Para un rendimiento óptimo, se recomienda añadir las siguientes líneas a tu " +".htaccess (no es requerido):" + +#: inc/admin/ui/notices.php:524 +#, php-format +msgid "" +"%1$s is good to go! %2$sTest your load time%4$s, or visit your " +"%3$ssettings%4$s." +msgstr "" +"%1$s está listo para partir! %2$sComprueba tu tiempo de carga%4$s, o " +"verifica tus %3$sajustes%4$s." + +#: inc/admin/ui/notices.php:597 +msgid "" +"Would you allow WP Rocket to collect non-sensitive diagnostic data from this" +" website?" +msgstr "" +"¿Permitirías a WP Rocket recopilar datos de diagnóstico no confidenciales " +"desde tu sitio web?" + +#: inc/admin/ui/notices.php:598 +msgid "This would help us to improve WP Rocket for you in the future." +msgstr "Esto nos ayudaría a mejorar WP Rocket para ti en un futuro." + +#: inc/admin/ui/notices.php:604 +msgid "What info will we collect?" +msgstr "¿Qué información recopilamos?" + +#: inc/admin/ui/notices.php:609 +msgid "" +"Below is a detailed view of all data WP Rocket will collect if granted " +"permission. WP Rocket will never transmit any domain names or email " +"addresses (except for license validation), IP addresses, or third-party API " +"keys." +msgstr "" +"Aquí abajo ves la lista detallada de todos los datos recopilados por WP " +"Rocket, si le has dado el permiso de hacerlo. WP Rocket no transmitirá " +"ningún nombre de dominio, ni direcciones de correo electrónico (salvo lo " +"necesario para la validación de la licencia), direcciones IP o claves API de" +" terceras partes." + +#: inc/admin/ui/notices.php:618 +msgid "Yes, allow" +msgstr "Si, estoy de acuerdo" + +#: inc/admin/ui/notices.php:621 +msgid "No, thanks" +msgstr "No, gracias" + +#: inc/admin/ui/notices.php:660 +msgid "Thank you!" +msgstr "¡Gracias!" + +#: inc/admin/ui/notices.php:665 +msgid "WP Rocket now collects these metrics from your website:" +msgstr "WP Rocket ahora recolectará estas métricas desde tu sitio web:" + +#: inc/admin/ui/notices.php:703 +#, php-format +msgid "%s: Cache cleared." +msgstr "%s: Caché borrada." + +#: inc/admin/ui/notices.php:710 +#, php-format +msgid "%s: Post cache cleared." +msgstr "%s: Caché borrada para la entrada." + +#: inc/admin/ui/notices.php:717 +#, php-format +msgid "%s: Term cache cleared." +msgstr "%s: Caché borrada para este término ." + +#: inc/admin/ui/notices.php:724 +#, php-format +msgid "%s: User cache cleared." +msgstr "%s: Caché de usuario borrada." + +#: inc/admin/ui/notices.php:770 +msgid "Stop Preload" +msgstr "Interrumpir la precarga" + +#: inc/admin/ui/notices.php:788 +msgid "Force deactivation " +msgstr "Forzar la desactivación " + +#: inc/admin/ui/notices.php:801 +msgid "The following code should have been written to this file:" +msgstr "El siguiente código debería haberse escrito en este archivo:" + +#: inc/admin/ui/notices.php:811 views/settings/page-sections/dashboard.php:46 +msgid "Dismiss this notice." +msgstr "Ignorar este aviso." + +#: inc/admin/ui/notices.php:832 +#, php-format +msgid "%s cannot configure itself due to missing writing permissions." +msgstr "%s no puede configurarse porque faltan unos permisos de escritura." + +#: inc/admin/ui/notices.php:838 +#, php-format +msgid "Affected file/folder: %s" +msgstr "Archivo/carpeta afectados: %s" + +#: inc/classes/admin/Database/class-optimization.php:47 +msgid "Transients" +msgstr "Datos transitorios" + +#: inc/classes/admin/Database/class-optimization.php:48 +msgid "Tables" +msgstr "Tablas" + +#: inc/classes/admin/class-logs.php:124 +msgid "The debug file could not be deleted." +msgstr "No ha sido posible eliminar el archivo de depuración." + +#: inc/classes/class-wp-rocket-requirements-check.php:147 +#, php-format +msgid "To function properly, %1$s %2$s requires at least:" +msgstr "Para funcionar correctamente, %1$s %2$s necesita por lo menos:" + +#: inc/classes/class-wp-rocket-requirements-check.php:151 +#, php-format +msgid "" +"PHP %1$s. To use this WP Rocket version, please ask your web host how to " +"upgrade your server to PHP %1$s or higher." +msgstr "" +"PHP %1$s. Para usar esta versión de WP Rocket, pide a tu proveedor de " +"alojamiento web de actualizar tu servidor a PHP %1$s o superior." + +#: inc/classes/class-wp-rocket-requirements-check.php:156 +#, php-format +msgid "" +"WordPress %1$s. To use this WP Rocket version, please upgrade WordPress to " +"version %1$s or higher." +msgstr "" +"WordPress %1$s. Para usar esta versión de WP Rocket, actualiza tu versión " +"WordPress a la %1$s o superior." + +#: inc/classes/class-wp-rocket-requirements-check.php:159 +msgid "" +"If you are not able to upgrade, you can rollback to the previous version by " +"using the button below." +msgstr "" +"Si no puedes actualizar, puedes volver a la versión precedente usando el " +"botón aquí abajo." + +#: inc/classes/class-wp-rocket-requirements-check.php:161 +#: inc/deprecated/deprecated.php:1947 +#, php-format +msgid "Re-install version %s" +msgstr "Reinstalar la versión %s" + +#: inc/classes/logger/class-logger.php:254 +#: inc/classes/logger/class-logger.php:286 +msgid "The log file does not exist." +msgstr "El archivo de registro no existe." + +#: inc/classes/logger/class-logger.php:260 +#: inc/classes/logger/class-logger.php:292 +msgid "The log file could not be read." +msgstr "El archivo de registro no se ha podido leer." + +#: inc/classes/logger/class-logger.php:279 +msgid "The logs are not saved into a file." +msgstr "Los registros no se han guardado en un archivo." + +#: inc/classes/subscriber/Cache/class-expired-cache-purge-subscriber.php:128 +msgid "WP Rocket Expired Cache Interval" +msgstr "Intérvalo de caché de WP Rocket expirado" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:269 +#, php-format +msgid "" +"You are using %1$s to serve WebP images so you do not need to enable this " +"option. If you prefer to have WP Rocket serve WebP for you instead, please " +"disable them from serving in %1$s. %2$sMore info%3$s" +msgid_plural "" +"You are using %1$s to serve WebP images so you do not need to enable this " +"option. If you prefer to have WP Rocket serve WebP for you instead, please " +"disable them from serving in %1$s. %2$sMore info%3$s" +msgstr[0] "" +"Estás usando %1$s para servir las imágenes WebP así que no necesitas activar" +" esta opción. Si prefieres que WP Rocket sirva las imágenes WebP por favor " +"desactiva la opción de servirlos en %1$s. %2$sMás información%3$s" +msgstr[1] "" +"Estás usando %1$s para servir las imágenes WebP así que no necesitas activar" +" esta opción. Si prefieres que WP Rocket sirva las imágenes WebP por favor " +"desactiva la opción de servirlos en %1$s. %2$sMás información%3$s" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:280 +msgid "WebP cache is disabled by filter." +msgstr "El almacenamiento en caché de WebP está desactivado por un filtro." + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:290 +#: inc/classes/subscriber/Media/class-webp-subscriber.php:316 +#, php-format +msgid "" +"You are using %1$s to convert images to WebP. If you want WP Rocket to serve" +" them for you, activate this option. %2$sMore info%3$s" +msgid_plural "" +"You are using %1$s to convert images to WebP. If you want WP Rocket to serve" +" them for you, activate this option. %2$sMore info%3$s" +msgstr[0] "" +"Estás usando %1$s para servir las imágenes WebP. Si prefieres que WP Rocket " +"sirva las imágenes WebP, activa esta opción. %2$sMás información%3$s" +msgstr[1] "" +"Estás usando %1$s para servir las imágenes WebP. Si prefieres que WP Rocket " +"sirva las imágenes WebP, activa esta opción. %2$sMás información%3$s" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:302 +#: inc/classes/subscriber/Media/class-webp-subscriber.php:328 +#, php-format +msgid "" +"You are using %1$s to convert images to WebP. WP Rocket will create separate" +" cache files to serve your WebP images. %2$sMore info%3$s" +msgid_plural "" +"You are using %1$s to convert images to WebP. WP Rocket will create separate" +" cache files to serve your WebP images. %2$sMore info%3$s" +msgstr[0] "" +"Estás usando %1$s para servir las imágenes WebP. WP Rocket creará archivos " +"de almacenamiento en caché diferentes para tus imágenes WebP. %2$sMás " +"información%3$s" +msgstr[1] "" +"Estás usando %1$s para servir las imágenes WebP. WP Rocket creará archivos " +"de almacenamiento en caché diferentes para tus imágenes WebP. %2$sMás " +"información%3$s" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:349 +#, php-format +msgid "" +"You don’t seem to be using a method to create and serve WebP that we are " +"auto-compatible with. If you are not using WebP do not enable this option. " +"%1$sMore info%2$s" +msgstr "" +"No parece que estés usando un método para crear y servir imágenes WebP que " +"sea automáticamente compatible. Si no estás usando WebP no actives esta " +"opción. %1$s Más información%2$s" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:354 +msgid "We have not detected any compatible WebP plugin!" +msgstr "No hemos detectado ningún plugin de WebP compatible!" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:357 +#, php-format +msgid "" +"If you activate this option WP Rocket will create separate cache files to " +"serve WebP images. Any WebP images you have on your site will be served from" +" these files to compatible browsers. If you don’t already have WebP images " +"on your site consider using %1$sImagify%3$s or another supported plugin. " +"%2$sMore info%3$s" +msgstr "" +"Si activas esta opción WP Rocket creará archivos de cache separados para " +"servir imágenes WebP. Cualquier imagen WebP que tengas en tu sitio será " +"servida desde estos archivos a los navegadores que sean compatibles. Si aún " +"no tienes imágenes WebP en tu sitio, considera usar %1$sImagify%3$s u otro " +"plugin soportado.%2$s Más información%3$s" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:369 +msgid "WP Rocket will create separate cache files to serve your WebP images." +msgstr "" +"WP Rocket creará archivos de cache separados para servir tus imágenes WebP." + +#: inc/classes/subscriber/Tools/class-detect-missing-tags-subscriber.php:151 +#, php-format +msgid "" +"Failed to detect the following requirement in your theme: closing %1$s." +msgid_plural "" +"Failed to detect the following requirements in your theme: closing %1$s." +msgstr[0] "" +"No se detectaron los siguientes requisitos en su tema: cierre %1$s." +msgstr[1] "" +"No se detectaron los siguientes requisitos en su tema: cierre %1$s." + +#: inc/classes/subscriber/Tools/class-detect-missing-tags-subscriber.php:159 +msgid "" +"https://docs.wp-rocket.me/article/99-pages-not-cached-or-minify-cssjs-not-" +"working/?utm_source=wp_plugin&utm_medium=wp_rocket#theme" +msgstr "" +"https://docs.wp-rocket.me/article/99-pages-not-cached-or-minify-cssjs-not-" +"working/?utm_source=wp_plugin&utm_medium=wp_rocket#theme" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:98 +msgid "monthly" +msgstr "mensual" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:211 +msgid "Database optimization process is running" +msgstr "El proceso de optimización de la base de datos está en marcha" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:242 +msgid "" +"Database optimization process is complete. Everything was already optimized!" +msgstr "" +"El proceso de optimización de la base de datos está completado. ¡Todo ya " +"estaba optimizado!" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:245 +msgid "" +"Database optimization process is complete. List of optimized items below:" +msgstr "" +"El proceso de optimización de la base de datos está completado. Lista de los" +" elementos optimizados:" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:253 +#, php-format +msgid "%1$d %2$s optimized." +msgstr "%1$d %2$s optimizado." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:116 +#, php-format +msgid "Sucuri cache purge error: %s" +msgstr "Error en la purga de la caché de Sucuri: %s" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:121 +msgid "" +"The Sucuri cache is being cleared. Note that it may take up to two minutes " +"for it to be fully flushed." +msgstr "" +"Estamos borrando la caché de Sucuri. Ten en cuenta que antes de que termine " +"el proceso de limpieza podrían pasar hasta 2 minutos." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:244 +msgid "Sucuri firewall API key was not found." +msgstr "No ha sido posible encontrar la clave API del cortafuegos de Sucuri." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:256 +msgid "Sucuri firewall API key is invalid." +msgstr "La clave API del cortafuegos de Sucuri no es válida." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:311 +msgid "Error when contacting Sucuri firewall API." +msgstr "Ha ocurrido un error al contactar la API del cortafuegos de Sucuri." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:324 +#, php-format +msgid "Error when contacting Sucuri firewall API. Error message was: %s" +msgstr "" +"Ha ocurrido un error al contactar la API del cortafuegos de Sucuri. El " +"mensaje de error decía: %s" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:338 +msgid "Could not get a response from the Sucuri firewall API." +msgstr "" +"No ha sido posible obtener respuesta de la API del cortafuegos de Sucuri." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:352 +msgid "Got an invalid response from the Sucuri firewall API." +msgstr "" +"Hemos obtenido una respuesta no válida de la API del cortafuegos de Sucuri." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:365 +msgid "The Sucuri firewall API returned an unknown error." +msgstr "La API del cortafuegos de Sucuri ha devuelto un error desconocido." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:368 +#, php-format +msgid "The Sucuri firewall API returned the following error: %s" +msgid_plural "The Sucuri firewall API returned the following errors: %s" +msgstr[0] "La API del cortafuegos Sucuri ha devuelto el siguiente error: %s" +msgstr[1] "" +"La API del cortafuegos de Sucuri ha devuelto los siguientes errores: %s" + +#: inc/classes/traits/trait-updater-api-tools.php:53 +#: inc/deprecated/3.3.php:761 inc/deprecated/3.3.php:770 +#, php-format +msgid "" +"An unexpected error occurred. Something may be wrong with WP-Rocket.me or " +"this server’s configuration. If you continue to have problems,
      contact support." +msgstr "" +"Ha ocurrido un error inesperado. Algo puede estar mal con wp-rocket.me o con" +" la configuración de este servidor. Si el problema persiste, contacta con el servicio de soporte." + +#: inc/common/admin-bar.php:125 inc/common/admin-bar.php:293 +#: inc/functions/i18n.php:41 inc/functions/i18n.php:51 +msgid "All languages" +msgstr "Todos los idiomas" + +#: inc/common/admin-bar.php:152 +msgid "Clear this post" +msgstr "Limpiar esta entrada" + +#: inc/common/admin-bar.php:166 +msgid "Purge this URL" +msgstr "Purgar esta URL" + +#: inc/common/admin-bar.php:192 +msgid "Purge OPcache" +msgstr "Purgar OPcache" + +#: inc/common/admin-bar.php:210 +msgid "Clear Cloudflare cache" +msgstr "Borrar la caché de Cloudflare" + +#: inc/common/admin-bar.php:228 +msgid "Purge Sucuri cache" +msgstr "Limpiar la caché de Sucuri" + +#: inc/common/admin-bar.php:251 inc/common/admin-bar.php:305 +#: views/settings/page-sections/dashboard.php:144 +msgid "Preload cache" +msgstr "Precargar la caché" + +#: inc/common/admin-bar.php:330 views/settings/fields/rocket-cdn.php:55 +msgid "Purge RocketCDN cache" +msgstr "Limpiar la caché de RocketCDN" + +#: inc/common/admin-bar.php:343 views/settings/partials/documentation.php:14 +msgid "Documentation" +msgstr "Documentación" + +#: inc/common/purge.php:557 +msgid "OPcache purge failed." +msgstr "La limpieza de OPcache falló." + +#: inc/common/purge.php:562 +msgid "OPcache successfully purged" +msgstr "Limpieza de OPcache finalizada con éxito" + +#: inc/deprecated/3.2.php:52 views/settings/page-sections/imagify.php:36 +msgid "Activate Imagify" +msgstr "Activar Imagify" + +#: inc/deprecated/3.2.php:52 +msgid "Install Imagify for Free" +msgstr "Instalar Imagify gratuitamente" + +#: inc/deprecated/3.2.php:67 +msgid "" +"Speed up your website and boost your SEO by reducing image file sizes " +"without losing quality with Imagify." +msgstr "" +"Acelera tu sitio web e impulsa tu SEO reduciendo el tamaño de las imágenes " +"sin perdida de calidad, gracias a Imagify." + +#: inc/deprecated/3.2.php:72 +msgid "More details" +msgstr "Más información" + +#: inc/deprecated/3.2.php:228 +#, php-format +msgid "Sitemap preload: %d pages have been cached." +msgstr "Precarga de mapa del sitio: se ha creado la caché para %d páginas." + +#: inc/deprecated/3.2.php:261 +#, php-format +msgid "" +"Sitemap preload: %d uncached pages have now been preloaded. (refresh to see " +"progress)" +msgstr "" +"Precarga de mapa del sitio: se han precargado %d páginas que no tenían una " +"caché. (Actualiza para ver el avance)" + +#: inc/deprecated/3.4.php:18 +msgid "Choose a domain from the list" +msgstr "Eligir un dominio desde la lista" + +#: inc/deprecated/3.4.php:31 +msgid "No domain available in your Cloudflare account" +msgstr "No hay dominio disponible en tu cuenta Cloudflare" + +#: inc/deprecated/3.5.php:81 inc/deprecated/3.5.php:205 +msgid "" +"Curl is disabled on your server. Please ask your host to enable it. This is " +"required for the Cloudflare Add-on to work correctly." +msgstr "" +"Curl está deshabilitado en tu servidor. Por favor, pídele a tu proveedor de " +"hosting que lo active. Esto es requerido para que el Add-on de Cloudflare " +"funcione correctamente." + +#: inc/deprecated/3.5.php:89 +#, php-format +msgid "" +"Cloudflare email, API key and Zone ID are not set. Read the " +"%1$sdocumentation%2$s for further guidance." +msgstr "" +"El correo de Cloudlfare, la clave de API y el ID de Zona no han sido " +"establecidos. Lee la%1$sdocumentación%2$s para más información" + +#: inc/deprecated/3.5.php:216 +#, php-format +msgid "" +"Cloudflare email and API key are not set. Read the %1$sdocumentation%2$s for" +" further guidance." +msgstr "" +"El correo de Cloudflare y la clave de API no han sido establecidos. Lee la " +"%1$sdocumentación%2$s par más información" + +#: inc/deprecated/3.5.php:281 +msgid "Connection to Cloudflare failed" +msgstr "La conexión a CloudFlare a fallado" + +#: inc/deprecated/DeprecatedClassTrait.php:54 +#, php-format +msgid "" +"The called class %1$s is deprecated since version %2$s! Use" +" %3$s instead." +msgstr "" +"¡La clase llamada %1$s está obsoleta desde la versión %2$s!" +" Puedes utilizar %3$s." + +#: inc/deprecated/DeprecatedClassTrait.php:65 +#, php-format +msgid "" +"The called class %1$s is deprecated since version %2$s!" +msgstr "" +"¡La clase llamada %1$s está obsoleta desde la versión %2$s!" + +#: inc/deprecated/deprecated.php:240 +msgid "JS files with Deferred Loading JavaScript" +msgstr "Archivos JS con carga JavaScript diferida" + +#: inc/deprecated/deprecated.php:293 +msgid "Add URL" +msgstr "Añadir URL" + +#: inc/deprecated/deprecated.php:1277 views/settings/fields/import-form.php:22 +msgid "" +"Before you can upload your import file, you will need to fix the following " +"error:" +msgstr "" +"Antes de poder cargar tu archivo de importación, necesitarás resolver el " +"siguiente error:" + +#: inc/deprecated/deprecated.php:1288 views/settings/fields/import-form.php:35 +#, php-format +msgid "Choose a file from your computer (maximum size: %s)" +msgstr "Elegir un archivo desde el ordenador (tamaño máximo: %s)" + +#: inc/deprecated/deprecated.php:1385 +msgid "Your Cloudflare credentials are valid." +msgstr "Tus credenciales Cloudflare son válidas." + +#: inc/deprecated/deprecated.php:1389 +msgid "Your Cloudflare credentials are invalid!" +msgstr "Tus credenciales Cloudflare no son válidas!" + +#: inc/deprecated/deprecated.php:1453 +msgid "Save and optimize" +msgstr "Guardar y optimizar" + +#: inc/deprecated/deprecated.php:1453 +msgid "Optimize" +msgstr "Optimizar" + +#: inc/deprecated/deprecated.php:1464 inc/deprecated/deprecated.php:1666 +msgctxt "screen-reader-text" +msgid "Note:" +msgstr "Nota:" + +#: inc/deprecated/deprecated.php:1470 +msgctxt "screen-reader-text" +msgid "Performance tip:" +msgstr "Consejo de rendimiento:" + +#: inc/deprecated/deprecated.php:1476 +msgctxt "screen-reader-text" +msgid "Third-party feature detected:" +msgstr "Detectada función de otro plugin:" + +#: inc/deprecated/deprecated.php:1488 inc/deprecated/deprecated.php:1672 +msgctxt "screen-reader-text" +msgid "Warning:" +msgstr "Advertencia:" + +#: inc/deprecated/deprecated.php:1501 +msgctxt "button text" +msgid "Download settings" +msgstr "Descargar ajustes" + +#: inc/deprecated/deprecated.php:1531 +msgid "Replace site's hostname with:" +msgstr "Reemplazar el nombre host del sitio con:" + +#: inc/deprecated/deprecated.php:1550 inc/deprecated/deprecated.php:1587 +#: inc/deprecated/deprecated.php:1615 views/settings/fields/cnames.php:32 +#: views/settings/fields/cnames.php:64 views/settings/fields/cnames.php:94 +msgid "reserved for" +msgstr "reservado para" + +#: inc/deprecated/deprecated.php:1552 inc/deprecated/deprecated.php:1589 +#: inc/deprecated/deprecated.php:1617 views/settings/fields/cnames.php:35 +#: views/settings/fields/cnames.php:67 views/settings/fields/cnames.php:97 +msgid "All files" +msgstr "Todos los archivos" + +#: inc/deprecated/deprecated.php:1564 inc/deprecated/deprecated.php:1594 +#: inc/deprecated/deprecated.php:1622 views/settings/fields/cnames.php:47 +#: views/settings/fields/cnames.php:79 views/settings/fields/cnames.php:109 +msgid "Images" +msgstr "Imágenes" + +#: inc/deprecated/deprecated.php:1635 views/settings/fields/cnames.php:120 +msgid "Add CNAME" +msgstr "Añadir CNAME" + +#: inc/deprecated/deprecated.php:1706 views/settings/partials/sidebar.php:16 +msgid "Watch the video" +msgstr "Mirar el vídeo" + +#: inc/deprecated/deprecated.php:1771 +msgid "Basic" +msgstr "Básicos" + +#: inc/deprecated/deprecated.php:1772 +msgid "Static Files" +msgstr "Archivos Estáticos" + +#: inc/deprecated/deprecated.php:1774 +msgid "Advanced" +msgstr "Avanzados" + +#: inc/deprecated/deprecated.php:1944 +#, php-format +msgid "" +"%1$s %2$s requires at least PHP %3$s to function properly. To use this " +"version, please ask your web host how to upgrade your server to PHP %3$s or " +"higher. If you are not able to upgrade, you can rollback to the previous " +"version by using the button below." +msgstr "" +"%1$s%2$s requiere por lo menos PHP %3$s para funcionar correctamente. Para " +"usar esta versión, pide a tu proveedor de alojamiento web actualizar tu " +"servidor a PHP %3$s o superior. Si no es posible hacerlo, puedes volver a la" +" versión precedente usando el botón aquí abajo." + +#: inc/functions/admin.php:23 +msgid "" +"There seems to be an issue validating your license. Please see the error " +"message below." +msgid_plural "" +"There seems to be an issue validating your license. You can see the error " +"messages below." +msgstr[0] "" +"Parece haber un problema con la validación de la licencia. Aquí abajo puedes" +" ver el mensaje de error." +msgstr[1] "" +"Parece haber un problema con la validación de tu licencia. Aquí abajo puedes" +" ver los mensajes de error." + +#: inc/functions/admin.php:363 +msgid "Server type:" +msgstr "Tipo de servidor:" + +#: inc/functions/admin.php:372 +msgid "PHP version number:" +msgstr "Número de versión PHP:" + +#: inc/functions/admin.php:381 +msgid "WordPress version number:" +msgstr "Número de versión WordPress:" + +#: inc/functions/admin.php:390 +msgid "WordPress multisite:" +msgstr "WordPress Multisitio:" + +#: inc/functions/admin.php:399 +msgid "Current theme:" +msgstr "Tema actual:" + +#: inc/functions/admin.php:408 +msgid "Current site language:" +msgstr "Idioma del sitio actual:" + +#: inc/functions/admin.php:417 +msgid "Active plugins:" +msgstr "Plugins activos:" + +#: inc/functions/admin.php:420 +msgid "Plugin names of all active plugins" +msgstr "Nombres de todos los plugins activos" + +#: inc/functions/admin.php:426 +msgid "Anonymized WP Rocket settings:" +msgstr "Ajustes anónimos de WP Rocket:" + +#: inc/functions/admin.php:429 +msgid "Which WP Rocket settings are active" +msgstr "Cuáles ajustes WP Rocket están activos" + +#: inc/functions/options.php:524 inc/functions/options.php:563 +msgid "" +"License validation failed. Our server could not resolve the request from " +"your website." +msgstr "" +"La validación de la licencia ha fallado. Nuestro servidor no ha podido " +"resolver la solicitud desde tu web." + +#: inc/functions/options.php:524 inc/functions/options.php:563 +#, php-format +msgid "" +"Try clicking %1$sSave Changes%2$s below. If the error persists, follow " +"%3$sthis guide%4$s." +msgstr "" +"Prueba a hacer clic en %1$sGuardar Cambios%2$s. Si el error persiste, sigue " +"%3$sesta guía%4$s." + +#: inc/functions/options.php:540 +msgid "" +"License validation failed. You may be using a nulled version of the plugin. " +"Please do the following:" +msgstr "" +"La validación de la licencia ha fallado. Es posible que estés usando una " +"versión pirata del plugin. Haz lo siguiente:" + +#: inc/functions/options.php:540 inc/functions/options.php:582 +#, php-format +msgid "Login to your WP Rocket %1$saccount%2$s" +msgstr "Inicia sesión en tu %1$scuenta%2$s WP Rocket" + +#: inc/functions/options.php:540 inc/functions/options.php:582 +msgid "Download the zip file" +msgstr "Descarga el archivo zip" + +#: inc/functions/options.php:540 inc/functions/options.php:582 +msgid "Reinstall" +msgstr "Reinstalar" + +#: inc/functions/options.php:540 +#, php-format +msgid "" +"If you do not have a WP Rocket account, please %1$spurchase a license%2$s." +msgstr "Si no tienes una cuenta WP Rocket, %1$scompra una licencia%2$s." + +#: inc/functions/options.php:548 +msgid "" +"License validation failed. This user account does not exist in our database." +msgstr "" +"La validación de la licencia ha fallado. Esta cuenta usuario no existe en " +"nuestra base de datos." + +#: inc/functions/options.php:548 +msgid "To resolve, please contact support." +msgstr "Para solucionarlo, contacta con el soporte." + +#: inc/functions/options.php:556 +msgid "License validation failed. This user account is blocked." +msgstr "" +"La validación de la licencia falló. Esta cuenta de usuario está bloqueada." + +#: inc/functions/options.php:556 +#, php-format +msgid "Please see %1$sthis guide%2$s for more info." +msgstr "Lee %1$sesta guía%2$s para más información." + +#: inc/functions/options.php:576 +msgid "Your license is not valid." +msgstr "Tu licencia no es válida." + +#: inc/functions/options.php:576 +#, php-format +msgid "Make sure you have an active %1$sWP Rocket license%2$s." +msgstr "Asegúrate que tienes una %1$slicencia de WP Rocket%2$s activa." + +#: inc/functions/options.php:578 +msgid "You have added as many sites as your current license allows." +msgstr "Has añadido tantas web como permite tu licencia. " + +#: inc/functions/options.php:578 +#, php-format +msgid "" +"Upgrade your %1$saccount%2$s or %3$stransfer your license%2$s to this " +"domain." +msgstr "" +"Actualiza tu %1$scuenta%2$s o %3$stransfiere tu licencia%2$s a este dominio." + +#: inc/functions/options.php:580 +msgid "This website is not allowed." +msgstr "Este sitio web no está autorizado." + +#: inc/functions/options.php:580 +#, php-format +msgid "Please %1$scontact support%2$s." +msgstr "Por favor %1$scontacta con el soporte%2$s." + +#: inc/functions/options.php:582 +msgid "This license key is not recognized." +msgstr "La clave de licencia no ha sido reconocida." + +#: inc/functions/options.php:582 +#, php-format +msgid "If the issue persists, please %1$scontact support%2$s." +msgstr "Si el problema persiste, %1$scontacta con el soporte%2$s." + +#: inc/functions/options.php:588 +#, php-format +msgid "License validation failed: %s" +msgstr "La validación de la licencia ha fallado: %s" + +#: inc/vendors/classes/class-imagify-partner.php:531 +msgid "Plugin installed successfully." +msgstr "El plugin se ha instalado con éxito." + +#: inc/vendors/classes/class-imagify-partner.php:532 +msgid "Sorry, you are not allowed to install plugins on this site." +msgstr "No tienes permisos para instalar plugins en este sitio." + +#: inc/vendors/classes/class-imagify-partner.php:533 +msgid "Sorry, you are not allowed to do that." +msgstr "No tienes permisos para hacerlo." + +#: inc/vendors/classes/class-imagify-partner.php:534 +msgid "Plugin install failed." +msgstr "La instalación del plugin ha fallado." + +#: inc/vendors/classes/class-imagify-partner.php:535 +msgid "Go back" +msgstr "Vuelve atrás" + +#: views/cpcss/activate-cpcss-mobile.php:13 +msgid "Optimize CSS delivery for mobile" +msgstr "Optimizar la entrega de CSS para móviles" + +#: views/cpcss/activate-cpcss-mobile.php:14 +msgid "" +"Your website currently uses the same Critical Path CSS for both desktop and " +"mobile." +msgstr "" +"Tu sitio web actualmente utiliza la misma Ruta Crítica de CSS para " +"escritorio y móvil. " + +#: views/cpcss/activate-cpcss-mobile.php:15 +msgid "Click the button to enable mobile-specific CPCSS for your site." +msgstr "" +"Click en el botón para habilitar CPCSS específico para móviles en tu sitio." + +#: views/cpcss/activate-cpcss-mobile.php:20 +#: views/settings/enable-google-fonts.php:19 +#, php-format +msgid "" +"This is a one-time action and this button will be removed afterwards. " +"%1$sMore info%2$s" +msgstr "" +"Esta es una acción de única vez y este botón será removido luego. %1$sMás " +"información%2$s" + +#: views/cpcss/activate-cpcss-mobile.php:30 +#, php-format +msgid "" +"Your site is now using mobile-specific critical path CSS. %1$sMore info%2$s" +msgstr "" +"Tu sitio ahora está utilizando una Ruta Crítica de CSS específica para " +"móviles. %1$sMás información%2$s" + +#: views/cpcss/activate-cpcss-mobile.php:39 +msgid "Generate Mobile Specific CPCSS" +msgstr "Generar CPCSS Específico para Móviles" + +#: views/cpcss/metabox/container.php:19 +msgid "Critical Path CSS" +msgstr "Ruta Crítica de CSS" + +#: views/cpcss/metabox/generate.php:23 +#, php-format +msgid "Generate specific Critical Path CSS for this post. %1$sMore info%2$s" +msgstr "" +"Generar Ruta Crítica de CSS específica para este post. %1$sMás " +"información%2$s" + +#: views/cpcss/metabox/generate.php:33 +#, php-format +msgid "This post uses specific Critical Path CSS. %1$sMore info%2$s" +msgstr "" +"Este post utiliza una Ruta Crítica de CSS específica. %1$sMás " +"información%2$s" + +#: views/cpcss/metabox/generate.php:56 +msgid "Revert back to the default CPCSS" +msgstr "Revertir al CPCSS por defecto" + +#: views/deactivation-intent/form.php:21 +msgid "Return" +msgstr "Regresar" + +#: views/deactivation-intent/form.php:22 +msgid "WP Rocket feedback" +msgstr "Opinionesn de WP Rocket" + +#: views/deactivation-intent/form.php:24 +msgid "Close" +msgstr "Cerrar" + +#: views/deactivation-intent/form.php:28 +msgid "May we have a little info about why you are deactivating?" +msgstr "" +"Podrías darnos más información sobre el porqué quieres desactivar WP Rocket?" + +#: views/deactivation-intent/form.php:35 +#, php-format +msgid "%1$sIt is a temporary deactivation.%2$s I am just debugging an issue." +msgstr "" +"%1$sEs una desactivación temporal%2$sSolo estoy chequeando un problema." + +#: views/deactivation-intent/form.php:44 +#, php-format +msgid "The plugin %1$sbroke my layout%2$s or some functionality." +msgstr "El plugin ha %1$sroto mi diseño%2$s o alguna funcionalidad" + +#: views/deactivation-intent/form.php:53 +#, php-format +msgid "My PageSpeed or GTMetrix %1$sscore did not improve.%2$s" +msgstr "%1$sMi puntuación en PageSpeed o en GTMetrix%2$s no ha mejorado" + +#: views/deactivation-intent/form.php:59 +msgid "I did not notice a difference in loading time." +msgstr "No he notado ninguna diferencia en el tiempo de carga." + +#: views/deactivation-intent/form.php:66 +#, php-format +msgid "The plugin is %1$stoo complicated to configure.%2$s" +msgstr "El plugin es %1$smuy complicado de configurar%2$s" + +#: views/deactivation-intent/form.php:72 +msgid "My host already has its own caching system." +msgstr "Mi servidor ya tiene su propio sistema de caché." + +#: views/deactivation-intent/form.php:74 +msgid "What is the name of your web host?" +msgstr "¿Cuál es el nombre de tu proveedor de alojamiento web?" + +#: views/deactivation-intent/form.php:79 +msgid "Other" +msgstr "Otro" + +#: views/deactivation-intent/form.php:81 +msgid "" +"Let us know why you are deactivating WP Rocket so we can improve the plugin" +msgstr "" +"Haznos saber por qué estás desactivando WP Rocket y ayúdanos a mejorar el " +"plugin" + +#: views/deactivation-intent/form.php:89 +msgid "The plugin broke my layout or some functionality" +msgstr "El plugin ha roto el diseño de la página u otra funcionalidad" + +#: views/deactivation-intent/form.php:90 +msgid "" +"This type of issue can usually be fixed by deactivating some options in WP " +"Rocket." +msgstr "" +"Este tipo de problema puede solucionarse generalmente desactivando algunas " +"opciones de WP Rocket." + +#: views/deactivation-intent/form.php:91 +msgid "" +"Click \"Apply Safe Mode\" to quickly disable LazyLoad, File Optimization, " +"Embeds and CDN options. Then check your site to see if the issue has " +"resolved." +msgstr "" +"Hacer clic en \"Activar modo seguro\" para desactivar rápidamente las " +"opciones LazyLoad, Optimizar archivos, contenido incrustado y CDN. Luego " +"revisa tu sitio web para ver si el problema se ha resuelto." + +#: views/deactivation-intent/form.php:93 +msgid "Apply safe mode" +msgstr "Activar modo seguro" + +#: views/deactivation-intent/form.php:96 +msgid "Safe mode applied." +msgstr "Modo seguro aplicado." + +#: views/deactivation-intent/form.php:97 +msgid "Review your site in a private/logged out browser window." +msgstr "Revisa tu sitio web en una nueva ventana de incógnito." + +#: views/deactivation-intent/form.php:102 +#, php-format +msgid "" +"Is the issue fixed? Now you can reactivate options one at a time to " +"determine which one caused the problem. %1$sMore info%2$s" +msgstr "" +"¿El problema está solucionado? Ahora puedes reactivar las opciones de una en" +" una para determinar cuál es la que causa el problema. %1$sMás " +"información%2$s" + +#: views/deactivation-intent/form.php:107 +msgid "My PageSpeed or GT Metrix score did not improve" +msgstr "Mi nota de PageSpeed o GTMetrix no ha mejorado" + +#: views/deactivation-intent/form.php:108 +msgid "" +"WP Rocket makes your site faster. The PageSpeed grade or GTMetrix score are " +"not indicators of speed. Neither your real visitors, nor Google will ever " +"see your website’s “grade”. Speed is the only metric that matters for SEO " +"and conversions." +msgstr "" +"WP Rocket hace tu sitio web más rápido. Las notas de PageSpeed o GTMetrix no" +" son un indicador de velocidad. Ni tus visitantes reales ni Google verán " +"nunca la ”nota” de tu sitio web. La velocidad es la única métrica que " +"importa para el posicionamiento y las conversiones." + +#: views/deactivation-intent/form.php:109 +msgid "Yoast, the expert on all things related to SEO for WordPress states:" +msgstr "" +"Los de Yoast, expertos en todo lo que concierne el SEO para WordPress, " +"afirman:" + +#: views/deactivation-intent/form.php:110 +msgid "" +"[Google] just looks at how fast your website loads for users, so you don’t " +"have to obsess over that specific score. You have to make sure your website " +"is as fast as you can get it." +msgstr "" +"[Google] solo se fija en la velocidad de carga de tu sitio web para quién lo" +" visita, entonces no hace falta obsesionarse sobre las notas específicas. " +"Tienes que asegurarte que tu sitio web sea lo más rápido posible." + +#: views/deactivation-intent/form.php:116 +#, php-format +msgid "" +"How to measure the load time of your site: %1$shttps://wp-rocket.me/blog" +"/correctly-measure-websites-page-load-time/%2$s" +msgstr "" +"Cómo medir el tiempo de carga de tu sitio: %1$shttps://wp-rocket.me/blog" +"/correctly-measure-websites-page-load-time/%2$s" + +#: views/deactivation-intent/form.php:122 +#, php-format +msgid "" +"Why you should not be chasing a PageSpeed score: %1$shttps://wp-" +"rocket.me/blog/the-truth-about-google-pagespeed-insights/%2$s" +msgstr "" +"Por qué no deberías estar persiguiendo una nota en PageSpeed: %1$shttps" +"://wp-rocket.me/blog/the-truth-about-google-pagespeed-insights/%2$s" + +#: views/deactivation-intent/form.php:127 +msgid "I did not notice a difference in loading time" +msgstr "No he notado ninguna diferencia en el tiempo de carga" + +#: views/deactivation-intent/form.php:128 +msgid "" +"Make sure you look at your site while logged out to see the fast, cached " +"pages!" +msgstr "" +"Asegúrate de revisar tu sitio web sin estar conectado a WordPress: solo así " +"verás las páginas en caché!" + +#: views/deactivation-intent/form.php:132 +#, php-format +msgid "" +"The best way to see the improvement WP Rocket provides is to perform speed " +"tests. Follow this guide to correctly measure the load time of your website:" +" %1$shttps://wp-rocket.me/blog/correctly-measure-websites-page-load-" +"time/%2$s" +msgstr "" +"La mejor forma de verificar la mejora que proporciona WP Rocket, es realizar" +" pruebas de velocidad. Sigue esta guía para medir correctamente el tiempo de" +" carga de tu sitio: %1$shttps://wp-rocket.me/blog/correctly-measure-" +"websites-page-load-time/%2$s" + +#: views/deactivation-intent/form.php:137 +msgid "The plugin is too complicated to configure" +msgstr "El plugin es demasiado complicado de configurar" + +#: views/deactivation-intent/form.php:138 +msgid "We are sorry to hear you are finding it difficult to use WP Rocket." +msgstr "Lamentamos que estés encontrando WP Rocket difícil de configurar." + +#: views/deactivation-intent/form.php:139 +#, php-format +msgid "" +"WP Rocket is the only caching plugin that provides 80% of best practices in " +"speed optimization, by default. That means you do not have to do anything " +"besides activate WP Rocket and your site will already be faster!" +msgstr "" +"WP Rocket es el único plugin de caché que aplica por defecto el 80% de las " +"prácticas recomendadas para la optimización de la velocidad. Esto significa " +"que no tendrás que hacer nada más que activar WP Rocket, ¡y tu sitio web " +"será en seguida más rápido!" + +#: views/deactivation-intent/form.php:140 +msgid "" +"The additional options are not required for a fast site, they are for fine-" +"tuning." +msgstr "" +"Las opciones adicionales no son obligatorias para obtener un sitio web más " +"rápido: se trata de medidas de ajuste." + +#: views/deactivation-intent/form.php:144 +#, php-format +msgid "" +"To see the benefit WP Rocket is already providing, measure the speed of your" +" site using a tool like Pingdom: %1$shttps://wp-rocket.me/blog/correctly-" +"measure-websites-page-load-time/%2$s" +msgstr "" +"Para ver el beneficio que WP Rocket ya está proporcionando, mide la " +"velocidad de tu sitio usando una herramienta como Pingdom: %1$shttps://wp-" +"rocket.me/blog/correctly-measure-websites-page-load-time/%2$s" + +#: views/deactivation-intent/form.php:151 +msgid "Send & Deactivate" +msgstr "Enviar y desactivar" + +#: views/deactivation-intent/form.php:152 +msgid "Cancel" +msgstr "Cancelar" + +#: views/deactivation-intent/form.php:154 +msgid "Skip & Deactivate" +msgstr "Saltar y desactivar" + +#: views/settings/enable-google-fonts.php:13 +msgid "Enable Google Font Optimization" +msgstr "Habilitar la optimización de Google Font" + +#: views/settings/enable-google-fonts.php:14 +msgid "" +"Improves font performance and combines multiple font requests to reduce the " +"number of HTTP requests." +msgstr "" +"Mejora el rendimiento de las fuentes y combina varias solicitudes de fuentes" +" para reducir el número de solicitudes HTTP." + +#: views/settings/enable-google-fonts.php:29 +#, php-format +msgid "" +"Google Fonts Optimization is now enabled for your site. %1$sMore info%2$s" +msgstr "" +"La Optimización de Google Fonts está ahora habilidata para tu sitio.%1$sMás " +"información%2$s" + +#: views/settings/enable-google-fonts.php:38 +msgid "Optimize Google Fonts" +msgstr "Optimizar Google Fonts" + +#: views/settings/fields/cache-lifespan.php:26 +msgid "Clear cache after" +msgstr "Borrar la caché después de" + +#: views/settings/fields/cnames.php:49 views/settings/fields/cnames.php:81 +#: views/settings/fields/cnames.php:111 +msgid "CSS & JavaScript" +msgstr "CSS y JavaScript" + +#: views/settings/fields/cnames.php:50 views/settings/fields/cnames.php:82 +#: views/settings/fields/cnames.php:112 +msgid "JavaScript" +msgstr "JavaScript" + +#: views/settings/fields/cnames.php:51 views/settings/fields/cnames.php:83 +#: views/settings/fields/cnames.php:113 +msgid "CSS" +msgstr "CSS" + +#: views/settings/fields/import-form.php:29 +msgid "Import settings" +msgstr "Importar ajustes" + +#: views/settings/fields/one-click-addon.php:40 +#: views/settings/fields/rocket-addon.php:31 +#: views/settings/fields/sliding-checkbox.php:25 views/settings/page.php:55 +msgctxt "Active state of checkbox" +msgid "On" +msgstr "On" + +#: views/settings/fields/one-click-addon.php:41 +#: views/settings/fields/rocket-addon.php:32 +#: views/settings/fields/sliding-checkbox.php:26 views/settings/page.php:56 +msgctxt "Inactive state of checkbox" +msgid "Off" +msgstr "Off" + +#: views/settings/fields/one-click-addon.php:42 +#: views/settings/fields/rocket-addon.php:33 +msgid "Add-on status" +msgstr "Estado del complemento" + +#: views/settings/fields/rocket-addon.php:56 +msgid "Modify options" +msgstr "Modificar opciones" + +#: views/settings/fields/rocket-cdn.php:29 +#: views/settings/fields/rocket-cdn.php:41 +msgid "CDN CNAME" +msgstr "CNAME CDN" + +#: views/settings/fields/rocket-cdn.php:62 +#, php-format +msgid "Purges RocketCDN cached resources for your website. %s" +msgstr "Purga los recursos almacenados de RocketCDN para tu sitio web. %s" + +#: views/settings/fields/rocket-cdn.php:63 +#: views/settings/page-sections/cloudflare.php:36 +#: views/settings/page-sections/sucuri.php:37 +msgid "Learn more" +msgstr "Leer más" + +#: views/settings/fields/rocket-cdn.php:72 +msgid "Clear all RocketCDN cache files" +msgstr "Limpiar todos los archivos de caché de RocketCDN" + +#: views/settings/page-sections/cloudflare.php:27 +msgid "Cloudflare Cache" +msgstr "Caché de Cloudflare" + +#: views/settings/page-sections/cloudflare.php:35 +#: views/settings/page-sections/sucuri.php:36 +#, php-format +msgid "Purges cached resources for your website. %s" +msgstr "Purga los recursos de tu sitio web copiados en la caché. %s" + +#: views/settings/page-sections/cloudflare.php:36 +msgid "https://support.cloudflare.com/hc/en-us/articles/200169246" +msgstr "https://support.cloudflare.com/hc/en-us/articles/200169246" + +#: views/settings/page-sections/cloudflare.php:45 +msgid "Clear all Cloudflare cache files" +msgstr "Borrar todos los archivos de caché Cloudflare" + +#: views/settings/page-sections/dashboard.php:38 +msgid "Congratulations!" +msgstr "¡Enhorabuena!" + +#: views/settings/page-sections/dashboard.php:40 +msgid "WP Rocket is now activated and already working for you." +msgstr "WP Rocket ya está activado y está trabajando para ti." + +#: views/settings/page-sections/dashboard.php:42 +msgid "Your website should be loading faster now!" +msgstr "Tu web debería estar cargando más rápida ahora!" + +#: views/settings/page-sections/dashboard.php:44 +#, php-format +msgid "" +"To guarantee fast websites, WP Rocket applies 80% of web performance best " +"practices." +msgstr "" +"Para garantizarte una web más rápida, WP Rocket aplica automáticamente el " +"80% de las prácticas recomendadas para mejorar el rendimiento web." + +#: views/settings/page-sections/dashboard.php:44 +msgid "" +"We also enable options that provide immediate benefits to your website." +msgstr "" +"También habilitamos opciones que dan beneficios inmediatos a tu sitio web." + +#: views/settings/page-sections/dashboard.php:45 +msgid "Continue to the options to further optimize your site!" +msgstr "Ve a las opciones para optimizar más a fondo tu sitio web!" + +#: views/settings/page-sections/dashboard.php:55 +msgid "My Account" +msgstr "Mi cuenta" + +#: views/settings/page-sections/dashboard.php:61 +msgid "Refresh info" +msgstr "Actualizar información" + +#: views/settings/page-sections/dashboard.php:75 +msgid "Expiration Date" +msgstr "Fecha de expiración" + +#: views/settings/page-sections/dashboard.php:84 +msgid "View my account" +msgstr "Ver mi cuenta" + +#: views/settings/page-sections/dashboard.php:111 +msgid "Quick Actions" +msgstr "Acciones rápidas" + +#: views/settings/page-sections/dashboard.php:118 +msgid "Remove all cached files" +msgstr "Elimina todos los archivos en la caché" + +#: views/settings/page-sections/dashboard.php:138 +msgid "Start cache preloading" +msgstr "Iniciar la precarga de la caché" + +#: views/settings/page-sections/dashboard.php:164 +msgid "Purge OPCache content" +msgstr "Purgar el contenido OPcache" + +#: views/settings/page-sections/dashboard.php:170 +msgid "Purge OPCache" +msgstr "Purgar OPcache" + +#: views/settings/page-sections/dashboard.php:181 +#: views/settings/page-sections/dashboard.php:187 +msgid "Regenerate Critical CSS" +msgstr "Regenerar la ruta crítica del CSS" + +#: views/settings/page-sections/dashboard.php:204 +msgid "Frequently Asked Questions" +msgstr "Preguntas Frecuentes" + +#: views/settings/page-sections/dashboard.php:217 +msgid "Still cannot find a solution?" +msgstr "¿Todavía nos has encontrado una solución?" + +#: views/settings/page-sections/dashboard.php:218 +msgid "" +"Submit a ticket and get help from our friendly and knowledgeable Rocketeers." +msgstr "" +"Envía un ticket y obtén la ayuda de nuestros expertos y atentos Rocketeers." + +#: views/settings/page-sections/dashboard.php:226 +msgid "Ask support" +msgstr "Pedir ayuda" + +#: views/settings/page-sections/database.php:25 +msgid "Backup your database before you run a cleanup!" +msgstr "¡Respalda tu base de datos antes de ejecutar su limpieza!" + +#: views/settings/page-sections/database.php:26 +msgid "" +"Once a database optimization has been performed, there is no way to undo it." +msgstr "" +"Una vez que la optimización de la base de datos se haya realizado, no hay " +"vuelta atrás." + +#: views/settings/page-sections/database.php:28 +msgid "Save Changes and Optimize" +msgstr "Guardar Cambios y Optimizar" + +#: views/settings/page-sections/imagify.php:21 +#, php-format +msgid "" +"%1$sWP ROCKET%2$s created %3$sIMAGIFY%4$s %1$sfor best-in-class image " +"optimization.%2$s" +msgstr "" +"%1$sWP ROCKET%2$s ha creado %3$sIMAGIFY%4$s%1$s para ofrecerte la mejor " +"optimización de imágenes.%2$s" + +#: views/settings/page-sections/imagify.php:24 +msgid "" +"Compress image to make your website faster, all while maintaining image " +"quality." +msgstr "" +"Comprime tus imágenes para hacer tu sitio más rápido, manteniendo intacta la" +" calidad de imagen." + +#: views/settings/page-sections/imagify.php:25 +msgid "More on Imagify:" +msgstr "Más sobre Imagify:" + +#: views/settings/page-sections/imagify.php:27 +msgid "Imagify Plugin Page" +msgstr "Página del plugin Imagify" + +#: views/settings/page-sections/imagify.php:28 +msgid "Imagify Website" +msgstr "Sitio Web de Imagify" + +#: views/settings/page-sections/imagify.php:29 +msgid "Review of Image Compression Plugins" +msgstr "Evaluación de los plugins de compresión de imagen" + +#: views/settings/page-sections/imagify.php:38 +msgid "Install Imagify" +msgstr "Instalar Imagify" + +#: views/settings/page-sections/license.php:22 +msgid "WP Rocket was not able to automatically validate your license." +msgstr "WP Rocket no ha podido validar automáticamente tu licencia." + +#: views/settings/page-sections/license.php:29 +#, php-format +msgid "Follow this %1$s, or contact %2$s to get the engine started." +msgstr "" +"Sigue este tutorial %1$s, o ponte en contacto %2$s para iniciar el motor." + +#: views/settings/page-sections/license.php:32 +#, php-format +msgid "%1$s%2$s%3$stutorial%4$s" +msgstr "%1$s%2$s%3$stutorial%4$s" + +#: views/settings/page-sections/license.php:34 +msgid "" +"https://docs.wp-rocket.me/article/100-resolving-problems-with-license-" +"validation/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://es.docs.wp-rocket.me/article/640-solucionar-problemas-con-la-" +"validacion-de-la-licencia/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: views/settings/page-sections/license.php:40 +#, php-format +msgid "%1$s%2$s%3$ssupport%4$s" +msgstr "%1$s%2$s%3$ssoporte%4$s" + +#: views/settings/page-sections/sucuri.php:46 +msgid "Clear all Sucuri cache files" +msgstr "Borrar todos los archivos de caché de Sucuri" + +#: views/settings/page-sections/tools.php:20 +#, php-format +msgid "Files size: %1$s. Number of entries: %2$s." +msgstr "Tamaño de los archivos: %1$s. Número de entradas: %2$s." + +#: views/settings/page-sections/tools.php:23 +#, php-format +msgid "%1$sDownload the file%2$s." +msgstr "%1$sDescarga el archivo%2$s." + +#: views/settings/page-sections/tools.php:26 +#, php-format +msgid "%1$sDelete the file%2$s." +msgstr "%1$sElimina el archivo%2$s." + +#: views/settings/page-sections/tools.php:37 +msgid "Export settings" +msgstr "Exportar ajustes" + +#: views/settings/page-sections/tools.php:38 +msgid "Download a backup file of your settings" +msgstr "Descargar una copia de seguridad de tus ajustes" + +#: views/settings/page-sections/tools.php:46 +msgid "Download settings" +msgstr "Descargar ajustes" + +#: views/settings/page-sections/tools.php:60 +msgid "Rollback" +msgstr "Rollback" + +#: views/settings/page-sections/tools.php:64 +#, php-format +msgid "Has version %s caused an issue on your website?" +msgstr "¿La versión %1$s ha causado algún problema en tu sitio web?" + +#: views/settings/page-sections/tools.php:69 +#, php-format +msgid "" +"You can rollback to the previous major version here.%sThen send us a support" +" request." +msgstr "" +"Aquí puedes regresar a la versión anterior. %sLuego nos puedes enviar un " +"ticket de soporte." + +#: views/settings/page-sections/tools.php:80 +#, php-format +msgid "Reinstall version %s" +msgstr "Reinstalar la versión %s" + +#: views/settings/page-sections/tools.php:106 +msgid "Debug mode" +msgstr "Modo de depuración" + +#: views/settings/page-sections/tools.php:111 +msgid "Create a debug log file." +msgstr "Crear un archivo de registro de depuración." + +#: views/settings/page-sections/tutorials.php:13 +#: views/settings/partials/getting-started.php:18 +msgid "Getting Started" +msgstr "Primeros Pasos" + +#: views/settings/page-sections/tutorials.php:15 +msgid "Getting Started with WP Rocket" +msgstr "Empezando con WP Rocket" + +#: views/settings/page-sections/tutorials.php:16 +#: views/settings/partials/getting-started.php:12 +msgid "Finding the Best Settings for Your Site" +msgstr "Encontrando los Mejores Ajustes Para tu Sitio" + +#: views/settings/page-sections/tutorials.php:17 +#: views/settings/partials/getting-started.php:13 +msgid "How to Check if WP Rocket is Caching Your Site" +msgstr "Como Verificar si WP Rocket está Almacenando en Caché tu Sitio Web " + +#: views/settings/page-sections/tutorials.php:18 +#: views/settings/partials/getting-started.php:14 +msgid "How to Measure the Speed of Your Site" +msgstr "Cómo Medir la Velocidad de tu Sitio Web" + +#: views/settings/page-sections/tutorials.php:24 +msgid "Troubleshooting Display Issues with File Optimization" +msgstr "Solucionar problemas de visualización con la Optimización de Archivos" + +#: views/settings/page-sections/tutorials.php:25 +msgid "How to Find the Right JavaScript to Exclude" +msgstr "Cómo Encontrar el JavaScript Correcto para Excluir" + +#: views/settings/page-sections/tutorials.php:26 +msgid "How External Content Slows Your Site" +msgstr "Cómo el Contenido Externo Ralentiza tu Sitio" + +#: views/settings/page-sections/tutorials.php:32 +msgid "How Preloading Works" +msgstr "Cómo funciona la Precarga" + +#: views/settings/page-sections/tutorials.php:38 +msgid "Set Up the Cloudflare Add-on" +msgstr "Configurar el Add-on de Cloudflare" + +#: views/settings/page.php:16 +msgid "WP Rocket Settings" +msgstr "Ajustes de WP Rocket" + +#: views/settings/page.php:30 +#, php-format +msgid "version %s" +msgstr "versión %s" + +#: views/settings/page.php:57 +msgid "Show Sidebar" +msgstr "Mostrar la barra lateral" + +#: views/settings/page.php:76 +msgid "Thanks for choosing to participate in the WP Rocket beta program!" +msgstr "¡Gracias por haber elegido ser parte del programa Beta de WP Rocket!" + +#: views/settings/page.php:77 +msgid "" +"A beta version is usually one that has new features and improvements, but we" +" want to test it a little more before full launch." +msgstr "" +"Una Beta es una versión que incluye nuevas funcionalidades y mejoras, pero " +"que queremos testar un poco más antes de lanzarla públicamente." + +#: views/settings/page.php:78 +msgid "" +"We’d love it if you took our beta versions for a ride, but please keep in " +"mind that it might be less stable than our other releases. Don’t worry, you " +"can switch back to a full release version at any time." +msgstr "" +"Nos encantaría si quisieras darte una vuelta con nuestras versiones Beta; " +"sin embargo, considera que podría tratarse de versiones menos estables que " +"las demás. No te preocupes, podrás volver a las versiones precedentes en " +"cualquier momento." + +#: views/settings/page.php:79 +msgid "" +"Your mission: please send all feedback about our beta versions, including " +"bug reports, to support@wp-rocket.me" +msgstr "" +"Tu misión: por favor, envíanos tu opinión sobre nuestras versiones Beta, " +"incluyendo informes de los fallos, a la dirección support@wp-rocket.me" + +#: views/settings/page.php:81 +msgid "If you don’t want to join the beta program, simply close this window." +msgstr "Si no quieres ser parte del programa Beta, cierra esta ventana." + +#: views/settings/page.php:83 +msgid "Activate Rocket Tester" +msgstr "Activar el Rocket Tester" + +#: views/settings/page.php:94 +msgid "" +"Below is a detailed view of all data WP Rocket will collect if " +"granted permission." +msgstr "" +"Aquí abajo te detallamos la lista de los datos que WP Rocket recolectará " +"si le otorgarás el permiso para hacerlo." + +#: views/settings/page.php:97 +msgid "" +"WP Rocket will never transmit any domain names or email addresses (except " +"for license validation), IP addresses, or third-party API keys." +msgstr "" +"WP Rocket no transmitirá ningún nombre de dominio, ni direcciones de correo " +"electrónico (salvo lo necesario para la validación de la licencia), " +"direcciones IP ni claves API de terceras partes." + +#: views/settings/page.php:99 +msgid "Activate Rocket analytics" +msgstr "Activar Rocket Analytics" + +#: views/settings/partials/documentation.php:15 +msgid "It is a great starting point to fix some of the most common issues." +msgstr "" +"Es un buen punto de partida para corregir algunos de los problemas más " +"comunes." + +#: views/settings/partials/documentation.php:22 +msgid "Read the documentation" +msgstr "Leer la documentación" + +#: views/settings/partials/getting-started.php:11 +msgid "What WP Rocket Does For You By Default" +msgstr "Qué Hace WP Rocket Para Ti de Forma Predenterminada" + +#: views/settings/partials/sidebar.php:12 +msgid "How to correctly measure your website’s loading time" +msgstr "¿Cómo medir correctamente el tiempo de carga de tu sitio web?" + +#: views/settings/partials/sidebar.php:14 +msgid "Check our tutorial and learn how to measure the speed of your site." +msgstr "" +"Lee nuestro tutorial y aprende cómo medir la velocidad de tu sitio web" + +#: views/settings/partials/sidebar.php:19 +msgid "" +"Learn how to use best practices to correctly measure your site's " +"performance." +msgstr "" +"Aprende a usar las prácticas recomendadas para medir correctamente el " +"rendimiento de tu sitio web." + +#: views/settings/partials/sidebar.php:20 +msgid "" +"https://wp-rocket.me/blog/correctly-measure-websites-page-load-" +"time/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://wp-rocket.me/blog/correctly-measure-websites-page-load-" +"time/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: views/settings/partials/sidebar.php:20 +msgid "Read our guide" +msgstr "Lee nuestra guía" + +#: views/settings/partials/sidebar.php:23 +msgid "Why Google PageSpeed grade should not matter" +msgstr "Por qué la nota de Google PageSpeed no debería importar" + +#: views/settings/partials/sidebar.php:24 +msgid "" +"https://wp-rocket.me/blog/the-truth-about-google-pagespeed-" +"insights/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://wp-rocket.me/blog/the-truth-about-google-pagespeed-" +"insights/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: views/settings/partials/sidebar.php:24 +msgid "Read more" +msgstr "Leer más" + +#: views/settings/partials/sidebar.php:29 +msgid "You have not activated logged-in user cache." +msgstr "No has activado la caché para los usuarios conectados." + +#: views/settings/partials/sidebar.php:30 +msgid "" +"Use a private browser to check your website's speed and visual appearance." +msgstr "" +"Usa una ventana privada del navegador para verificar la velocidad de tu " +"sitio web y su apariencia visual." + +#: views/settings/rocketcdn/cta-big.php:27 +#, php-format +msgid "Valid until %s only!" +msgstr "¡Válido solo hasta %s!" + +#: views/settings/rocketcdn/cta-big.php:36 +msgid "Speed up your website thanks to:" +msgstr "Acelera tu sitio web gracias a:" + +#: views/settings/rocketcdn/cta-big.php:42 +#, php-format +msgid "" +"High performance Content Delivery Network (CDN) with %1$sunlimited " +"bandwith%2$s" +msgstr "CDN de alto rendimiento con %1$sancho de banda ilimitado%2$s" + +#: views/settings/rocketcdn/cta-big.php:48 +#, php-format +msgid "" +"Easy configuration: the %1$sbest CDN settings%2$s are automatically applied" +msgstr "" +"Fácil configuración: la %1$smejor configuración de CDN%2$s es aplicada " +"automáticamente" + +#: views/settings/rocketcdn/cta-big.php:54 +#, php-format +msgid "" +"WP Rocket integration: the CDN option is %1$sautomatically configured%2$s in" +" our plugin" +msgstr "" +"Integración con WP Rocket: la opción CDN es %1$sautomáticamente " +"configurada%2$s en nuestro plugin" + +#: views/settings/rocketcdn/cta-big.php:69 +#, php-format +msgid "%s / month" +msgstr "%s/mes" + +#: views/settings/rocketcdn/cta-big.php:74 +msgid "Get Started" +msgstr "Comencemos" + +#: views/settings/rocketcdn/cta-big.php:80 +msgid "Learn more about RocketCDN" +msgstr "Saber más acerca de RocketCDN" + +#: views/settings/rocketcdn/cta-big.php:82 +msgid "Reduce this banner" +msgstr "Minimizar este banner" + +#: views/settings/rocketcdn/cta-big.php:88 +#, php-format +msgid "" +"* $%1$s/month for 12 months then $%2$s/month. You can cancel your " +"subscription at any time." +msgstr "" +"*$%1$s/mes por 12 meses luego $%2$s/mes. Puedes cancelar tu suscripción en " +"cualquier momento." + +#: views/settings/rocketcdn/cta-small.php:17 +msgid "" +"Speed up your website with RocketCDN, WP Rocket’s Content Delivery Network." +msgstr "Acelera tu sitio web con RocketCDN, el CDN de WP Rocket" + +#: views/settings/rocketcdn/cta-small.php:20 +#: views/settings/rocketcdn/promote-notice.php:13 +msgid "Learn More" +msgstr "Saber Más" + +#: views/settings/rocketcdn/dashboard-status.php:23 +msgid "RocketCDN is unavailable on local domains and staging sites." +msgstr "" +"RocketCDN no está disponible en dominios locales ni en sitios de prueba." + +#: views/settings/rocketcdn/dashboard-status.php:32 +msgid "Get RocketCDN" +msgstr "Obtén RocketCDN" + +#: views/settings/rocketcdn/promote-notice.php:11 +msgid "New!" +msgstr "¡Nuevo!" + +#: views/settings/rocketcdn/promote-notice.php:12 +msgid "" +"Speed up your website with RocketCDN, WP Rocket’s Content Delivery Network!" +msgstr "Acelera tu sitio web con RocketCDN, el CDN de WP Rocket" + +#: views/settings/sections/addons-container.php:24 +#: views/settings/sections/fields-container.php:28 +msgid "Need Help?" +msgstr "¿Necesitas ayuda?" diff --git a/wp-content/plugins/wp-rocket/languages/rocket-fi.mo b/wp-content/plugins/wp-rocket/languages/rocket-fi.mo new file mode 100644 index 0000000000000000000000000000000000000000..3380fc137e88f450f834969826bb8ff2bec482f6 GIT binary patch literal 74944 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 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-rocket/languages/rocket-fi.po b/wp-content/plugins/wp-rocket/languages/rocket-fi.po new file mode 100644 index 0000000..d583bd6 --- /dev/null +++ b/wp-content/plugins/wp-rocket/languages/rocket-fi.po @@ -0,0 +1,3311 @@ +# Copyright (C) 2016 WP Rocket +# This file is distributed under the same license as the WP Rocket package. +# Translators: +# wpmedia , 2019 +# timoleinio , 2019 +# Riku Turunen , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: WP Rocket 3.3.7\n" +"Report-Msgid-Bugs-To: http://wp-rocket.me/\n" +"POT-Creation-Date: 2019-08-26 11:14-0400\n" +"PO-Revision-Date: 2019-08-26 15:14+0000\n" +"Last-Translator: Riku Turunen , 2019\n" +"Language-Team: Finnish (https://www.transifex.com/wp-media/teams/18133/fi/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: fi\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 1.8.11\n" +"X-Poedit-Basepath: ..\n" +"X-Poedit-KeywordsList: __;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c\n" +"X-Poedit-SearchPath-0: .\n" +"X-Poedit-SearchPathExcluded-0: assets\n" +"X-Poedit-SearchPathExcluded-1: src\n" +"X-Poedit-SearchPathExcluded-2: vendor\n" +"X-Poedit-SearchPathExcluded-3: node_modules\n" +"X-Poedit-SearchPathExcluded-4: tests\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Textdomain-Support: yes\n" + +#: inc/3rd-party/hosting/flywheel.php:15 inc/3rd-party/hosting/godaddy.php:15 +#: inc/3rd-party/hosting/o2switch.php:15 +#: inc/3rd-party/hosting/pressidium.php:15 inc/3rd-party/hosting/savvii.php:15 +#: inc/3rd-party/hosting/wp-serveur.php:24 +#: inc/3rd-party/hosting/wpengine.php:15 +#, php-format +msgid "" +"Your site is hosted on %s, we have enabled Varnish auto-purge for " +"compatibility." +msgstr "" +"Sivustosi palveluntarjoaja on %s. Olemme kytkeneet päälle Varnishin " +"automaattisen tyhjennyksen yhteensopivuuden takaamiseksi." + +#: inc/3rd-party/hosting/kinsta.php:150 +#, php-format +msgid "" +"Your installation seems to be missing core Kinsta files managing Cache " +"clearing and CDN, which will prevent your Kinsta installation and WP Rocket " +"from working correctly. Please get in touch with Kinsta support through your" +" %1$sMyKinsta%2$s account to resolve this issue." +msgstr "" +"Palvelinympäristöstäsi näyttäisi puuttuvan Kinstan ydintiedostoja " +"välimuistin ja CDN:n hallintaan. Tämän vuoksi Kinsta-asennuksesi ja WP " +"Rocket eivät toimi täysin yhdessä. Ole hyvä ja ota yhteyttä Kinstan tukeen " +"ratkaistaksesi ongelman: %1$sMyKinsta %2$s " + +#: inc/3rd-party/plugins/jetpack.php:86 +msgid "Jetpack XML Sitemaps" +msgstr "Jetpack XML -sivukartat" + +#: inc/3rd-party/plugins/jetpack.php:88 +msgid "Preload the sitemap from the Jetpack plugin" +msgstr "Esilataa sivukartta Jetpack-lisäosasta" + +#: inc/3rd-party/plugins/jetpack.php:96 +#: inc/3rd-party/plugins/seo/all-in-one-seo-pack.php:88 +#: inc/3rd-party/plugins/seo/rank-math-seo.php:34 +#: inc/3rd-party/plugins/seo/seopress.php:85 +#: inc/3rd-party/plugins/seo/the-seo-framework.php:123 +#: inc/3rd-party/plugins/seo/yoast-seo.php:86 +#, php-format +msgid "" +"We automatically detected the sitemap generated by the %s plugin. You can " +"check the option to preload it." +msgstr "" +"Havaitsimme sivukartan, jonka on generoinut %s -lisäosa. Voit valita tämän " +"option esiladataksesi sen." + +#: inc/3rd-party/plugins/seo/all-in-one-seo-pack.php:86 +msgid "All in One SEO XML sitemap" +msgstr "All in One SEO XML -sivukartta" + +#: inc/3rd-party/plugins/seo/rank-math-seo.php:32 +msgid "Rank Math XML sitemap" +msgstr "Rank Math XML -sivukartta" + +#: inc/3rd-party/plugins/seo/seopress.php:83 +msgid "SEOPress XML sitemap" +msgstr "" + +#: inc/3rd-party/plugins/seo/the-seo-framework.php:121 +msgid "The SEO Framework XML sitemap" +msgstr "The SEO Framework XML -sivukartta" + +#: inc/3rd-party/plugins/seo/yoast-seo.php:84 +msgid "Yoast SEO XML sitemap" +msgstr "Yoast SEO XML -sivukartta" + +#: inc/admin/admin.php:13 inc/common/admin-bar.php:311 +#: inc/deprecated/deprecated.php:1789 +msgid "Support" +msgstr "Tuki" + +#: inc/admin/admin.php:15 +msgid "Docs" +msgstr "Dokumentaatio" + +#: inc/admin/admin.php:17 inc/common/admin-bar.php:299 +msgid "FAQ" +msgstr "UKK" + +#: inc/admin/admin.php:19 inc/common/admin-bar.php:46 +msgid "Settings" +msgstr "Asetukset" + +#: inc/admin/admin.php:64 inc/admin/admin.php:86 inc/admin/admin.php:105 +msgid "Clear this cache" +msgstr "Tyhjennä välimuisti" + +#: inc/admin/admin.php:249 inc/admin/admin.php:264 +#: inc/classes/class-wp-rocket-requirements-check.php:204 +#: inc/classes/class-wp-rocket-requirements-check.php:214 +#, php-format +msgid "%s Update Rollback" +msgstr "%s päivityksen peruutus" + +#: inc/admin/admin.php:290 +#, php-format +msgid "%1$sReturn to WP Rocket%2$s or %3$sgo to Plugins page%2$s" +msgstr "" +"%1$s Palataksesi WP Rocket %2$s tai %3$s, siirry lisäosat-sivulle %2$s" + +#: inc/admin/admin.php:529 +msgid "Settings import failed: you do not have the permissions to do this." +msgstr "Asetusten tuonti epäonnistui: sinulla ei ole riittäviä oikeuksia." + +#: inc/admin/admin.php:533 +msgid "Settings import failed: no file uploaded." +msgstr "Asetusten tuonti epäonnistui: ei ladattua tiedostoa." + +#: inc/admin/admin.php:537 +msgid "Settings import failed: incorrect filename." +msgstr "Asetusten tuonti epäonnistui: epäkelpo tiedostonimi." + +#: inc/admin/admin.php:546 +msgid "Settings import failed: incorrect filetype." +msgstr "Asetusten tuonti epäonnistui: epäkelpo tiedostotyyppi." + +#: inc/admin/admin.php:554 +msgid "Settings import failed: " +msgstr "Asetusten tuonti epäonnistui:" + +#: inc/admin/admin.php:571 +msgid "Settings import failed: unexpected file content." +msgstr "Asetusten tuonti epäonnistui: epäkelpo tiedostosisältö." + +#: inc/admin/admin.php:592 +msgid "Settings imported and saved." +msgstr "Asetukset tuotu ja tallennettu." + +#: inc/admin/options.php:101 +#, php-format +msgid "Cloudflare development mode error: %s" +msgstr "Cloudflare development -tilan virhe: %s" + +#: inc/admin/options.php:107 +#, php-format +msgid "Cloudflare development mode %s" +msgstr "Cloudflare development -tila %s" + +#: inc/admin/options.php:124 +#, php-format +msgid "Cloudflare cache level error: %s" +msgstr "Cloudflare cache level -virhe: %s" + +#: inc/admin/options.php:128 +msgctxt "Cloudflare caching level" +msgid "Standard" +msgstr "Standardi" + +#: inc/admin/options.php:134 +#, php-format +msgid "Cloudflare cache level set to %s" +msgstr "Cloudfrale cache level asetettu: %s" + +#: inc/admin/options.php:146 +#, php-format +msgid "Cloudflare minification error: %s" +msgstr "Cloudflare minification -virhe: %s" + +#: inc/admin/options.php:152 +#, php-format +msgid "Cloudflare minification %s" +msgstr "Cloudflare minification %s" + +#: inc/admin/options.php:164 +#, php-format +msgid "Cloudflare rocket loader error: %s" +msgstr "Cloudflare rocket loader -virhe: %s" + +#: inc/admin/options.php:170 +#, php-format +msgid "Cloudflare rocket loader %s" +msgstr "Cloudflare rocket loader %s" + +#: inc/admin/options.php:182 +#, php-format +msgid "Cloudflare browser cache error: %s" +msgstr "Cloudflare browser cache -virhe: %s" + +#: inc/admin/options.php:188 +#, php-format +msgid "Cloudflare browser cache set to %s seconds" +msgstr "Cloudflare browser cache asetettu %s sekuntiin" + +#: inc/admin/options.php:241 inc/classes/admin/settings/class-page.php:692 +msgid "Excluded CSS Files" +msgstr "Poissuljetut CSS -tiedostot" + +#: inc/admin/options.php:242 inc/classes/admin/settings/class-page.php:784 +msgid "Excluded Inline JavaScript" +msgstr "Sulje pois inline-JavaScript" + +#: inc/admin/options.php:243 inc/classes/admin/settings/class-page.php:802 +msgid "Excluded JavaScript Files" +msgstr "Pois suljetut JavaScript -tiedostot" + +#: inc/admin/options.php:244 inc/classes/admin/settings/class-page.php:1128 +msgid "Never Cache URL(s)" +msgstr "Välimuistista pois suljettavat URL-osoitteet" + +#: inc/admin/options.php:245 inc/classes/admin/settings/class-page.php:1144 +msgid "Never Cache User Agent(s)" +msgstr "Välimuistista pois suljettavat selain-agentit" + +#: inc/admin/options.php:246 inc/classes/admin/settings/class-page.php:1149 +msgid "Always Purge URL(s)" +msgstr "Tyhjennä aina välimuisti -osoitteet" + +#: inc/admin/options.php:247 inc/classes/admin/settings/class-page.php:1443 +msgid "Exclude files from CDN" +msgstr "Sulje pois CDN:stä" + +#: inc/admin/options.php:265 +#, php-format +msgid "%1$s: %2$s." +msgstr "" + +#: inc/admin/options.php:275 +msgid "The following pattern is invalid and has been removed:" +msgid_plural "The following patterns are invalid and have been removed:" +msgstr[0] "" +msgstr[1] "" + +#: inc/admin/ui/meta-boxes.php:14 inc/admin/ui/notices.php:955 +#: inc/common/admin-bar.php:65 inc/common/admin-bar.php:118 +#: views/settings/page-sections/dashboard.php:115 +msgid "Clear cache" +msgstr "Tyhjennä välimuisti" + +#: inc/admin/ui/meta-boxes.php:36 +msgid "WP Rocket Options" +msgstr "WP Rocket -asetukset" + +#: inc/admin/ui/meta-boxes.php:66 +msgid "Never cache this page" +msgstr "Ei välimuistia tälle sivulle" + +#: inc/admin/ui/meta-boxes.php:70 +msgid "Activate these options on this post:" +msgstr "Aktivoi nämä asetukset tälle postaukselle:" + +#: inc/admin/ui/meta-boxes.php:73 +msgid "LazyLoad for images" +msgstr "LazyLoad kuville" + +#: inc/admin/ui/meta-boxes.php:74 +msgid "LazyLoad for iframes/videos" +msgstr "LazyLoad iframeille/videoille" + +#: inc/admin/ui/meta-boxes.php:75 +#: inc/classes/admin/settings/class-page.php:615 +msgid "Minify HTML" +msgstr "Kutista HTML" + +#: inc/admin/ui/meta-boxes.php:76 +msgid "Minify/combine CSS" +msgstr "Kutista/yhdistä CSS" + +#: inc/admin/ui/meta-boxes.php:77 +msgid "Minify/combine JS" +msgstr "Kutista/yhdistä JS" + +#: inc/admin/ui/meta-boxes.php:78 +#: inc/classes/admin/settings/class-page.php:1413 +#: inc/classes/admin/settings/class-page.php:1424 +#: inc/deprecated/deprecated.php:1775 +msgid "CDN" +msgstr "CDN" + +#: inc/admin/ui/meta-boxes.php:79 +msgid "Optimize CSS Delivery" +msgstr "Optimoi CSS:n jakelu" + +#: inc/admin/ui/meta-boxes.php:80 +msgid "Defer JS" +msgstr "Puskuroi JS" + +#: inc/admin/ui/meta-boxes.php:86 +#, php-format +msgid "Activate first the %s option." +msgstr "Aktivoi ensin %s -asetus." + +#: inc/admin/ui/meta-boxes.php:102 +#, php-format +msgid "" +"%1$sNote:%2$s None of these options will be applied if this post has been " +"excluded from cache in the global cache settings." +msgstr "" +"%1$sHuomio: %2$s Mikään näistä asetuksista ei pure, mikäli tämä postaus on " +"suljettu pois välimuistista yleisissä välimuistin asetuksissa." + +#: inc/admin/ui/notices.php:24 inc/admin/ui/notices.php:34 +#, php-format +msgid "" +"%1$s has not been deactivated due to missing writing permissions.
      \n" +"Make %2$s writeable and retry deactivation, or force deactivation now:" +msgstr "" +"%1$s ei ole aktivoitu riittämättömien kirjoitusoikeuksien " +"vuoksi.
      Tee %2$s kirjoitettavaksi ja yritä deaktivointia" +" uudelleen, tai pakota deaktivointi nyt:" + +#: inc/admin/ui/notices.php:83 +#, php-format +msgid "" +"%s: One or more plugins have been enabled or disabled, " +"clear the cache if they affect the front end of your site." +msgstr "" +"%s: Yksi tai useampi lisäosa on otettu käyttöön tai " +"postettu käytöstä. Tyhjennä välimuisti mikäli ne vaikuttavat sivustosi " +"ulkoasuun." + +#: inc/admin/ui/notices.php:196 +#, php-format +msgid "" +"%s: The following plugins are not compatible with this " +"plugin and may cause unexpected results:" +msgstr "" +"%s: Seuraavat lisäosat eivät ole yhteensopivia tämän " +"lisäosan kanssa ja saattavat aiheuttaa erikoisia tilanteita:" + +#: inc/admin/ui/notices.php:202 +msgid "Deactivate" +msgstr "Ota pois käytöstä" + +#: inc/admin/ui/notices.php:243 +msgid "" +"WP Rocket Footer JS is not an official add-on. It prevents some options in " +"WP Rocket from working correctly. Please deactivate it if you have problems." +msgstr "" +"WP Rocket Footer JS ei ole virallinen lisäosa. Se estää joitakin WP " +"Rocket:in ominaisuuksia toimimasta oikein. Ole hyvä ja poista se käytöstä " +"mikäli törmäät ongelmiin." + +#: inc/admin/ui/notices.php:283 +#, php-format +msgid "" +"Endurance Cache is currently enabled, which will conflict with WP Rocket " +"Cache. Please set the Endurance Cache cache level to Off (Level 0) on the " +"%1$sSettings > General%2$s page to prevent any issues." +msgstr "" + +#: inc/admin/ui/notices.php:305 +#, php-format +msgid "" +"%1$s: A custom permalink structure is required for the plugin to work " +"properly. %2$sGo to permalinks settings%3$s" +msgstr "" +"%1$s: Mukautettu osoiterakenne on pakollinen, jotta tämä lisäosa toimisi " +"oikein. %2$sMene osoiterakenteen asetuksiin %3$s" + +#: inc/admin/ui/notices.php:442 +#, php-format +msgid "" +"%s could not modify the .htaccess file due to missing writing permissions." +msgstr "" + +#: inc/admin/ui/notices.php:448 inc/admin/ui/notices.php:1032 +#, php-format +msgid "Troubleshoot: %1$sHow to make system files writeable%2$s" +msgstr "" +"Vianetsintä: %1$sKuinka antaa järjestelmän tiedostoille kirjoitusoikeus %2$s" + +#: inc/admin/ui/notices.php:450 inc/admin/ui/notices.php:1034 +msgid "" +"https://docs.wp-rocket.me/article/626-how-to-make-system-files-htaccess-wp-" +"config-writeable/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://docs.wp-rocket.me/article/626-how-to-make-system-files-htaccess-wp-" +"config-writeable/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: inc/admin/ui/notices.php:456 +msgid "" +"Don’t worry, WP Rocket’s page caching and settings will still function " +"correctly." +msgstr "" + +#: inc/admin/ui/notices.php:456 +msgid "" +"For optimal performance, adding the following lines into your .htaccess is " +"recommended (not required):" +msgstr "" + +#: inc/admin/ui/notices.php:600 +#, php-format +msgid "" +"%1$s is good to go! %2$sTest your load time%4$s, or visit your " +"%3$ssettings%4$s." +msgstr "" +"%1$s on käyttövalmisvalmis! %2$sTestaa sivusilatausaika %4$s, tai tsekkaa " +"%3$s asetukset %4$s." + +#: inc/admin/ui/notices.php:721 +msgid "" +"Would you allow WP Rocket to collect non-sensitive diagnostic data from this" +" website?" +msgstr "" +"Sallitko WP Rocketin kerätä ei-sensitiivistä diagnostiikkadataa " +"verkkosivultasi?" + +#: inc/admin/ui/notices.php:722 +msgid "This would help us to improve WP Rocket for you in the future." +msgstr "" +"Tämä auttaisi meitä parantamaan WP Rocketin toimintaa tulevaisuudessa." + +#: inc/admin/ui/notices.php:728 +msgid "What info will we collect?" +msgstr "Mitä tietoja keräämme?" + +#: inc/admin/ui/notices.php:733 +msgid "" +"Below is a detailed view of all data WP Rocket will collect if granted " +"permission. WP Rocket will never transmit any domain names or email " +"addresses (except for license validation), IP addresses, or third-party API " +"keys." +msgstr "" +"Alla näet yksityiskohtaisesti kaiken datan jota WP Rocket kerää mikäli " +"sallit sen. WP Rocket ei koskaan siirrä domainin nimitietoja, " +"sähköpostiosoitteita (paitsi lisenssin vahvistuksen yhteydessä), IP-" +"osoitteita, tai kolmannen osapuolen API-avaimia." + +#: inc/admin/ui/notices.php:742 +msgid "Yes, allow" +msgstr "Kyllä, salli" + +#: inc/admin/ui/notices.php:745 +msgid "No, thanks" +msgstr "Ei kiitos" + +#: inc/admin/ui/notices.php:783 +msgid "Thank you!" +msgstr "Kiitos!" + +#: inc/admin/ui/notices.php:788 +msgid "WP Rocket now collects these metrics from your website:" +msgstr "WP Rocket kerää nyt seuraavat tiedot verkkosivustasi:" + +#: inc/admin/ui/notices.php:825 +#, php-format +msgid "%s: Cache cleared." +msgstr "%s: Välimuisti tyhjennetty." + +#: inc/admin/ui/notices.php:830 +#, php-format +msgid "%s: Post cache cleared." +msgstr "%s: Postauksen välimuisti tyhjennetty." + +#: inc/admin/ui/notices.php:835 +#, php-format +msgid "%s: Term cache cleared." +msgstr "%s: Avainsanan välimuisti tyhjennetty." + +#: inc/admin/ui/notices.php:840 +#, php-format +msgid "%s: User cache cleared." +msgstr "%s: Käyttäjän välimuisti tyhjennetty." + +#: inc/admin/ui/notices.php:910 +msgid "" +"The following scheduled event failed to run. This may indicate the CRON " +"system is not running properly, which can prevent some WP Rocket features " +"from working as intended:" +msgid_plural "" +"The following scheduled events failed to run. This may indicate the CRON " +"system is not running properly, which can prevent some WP Rocket features " +"from working as intended:" +msgstr[0] "" +msgstr[1] "" + +#: inc/admin/ui/notices.php:919 +msgid "Please contact your host to check if CRON is working." +msgstr "" + +#: inc/admin/ui/notices.php:958 +msgid "Stop Preload" +msgstr "Pysäytä esilataus" + +#: inc/admin/ui/notices.php:976 +msgid "Force deactivation " +msgstr "Pakota deaktivointi" + +#: inc/admin/ui/notices.php:989 +msgid "The following code should have been written to this file:" +msgstr "Alla olevan koodin olisi pitänyt päätyä tähän tiedostoon:" + +#: inc/admin/ui/notices.php:999 views/settings/page-sections/dashboard.php:45 +msgid "Dismiss this notice." +msgstr "Kuittaa tämä tiedote." + +#: inc/admin/ui/notices.php:1020 +#, php-format +msgid "%s cannot configure itself due to missing writing permissions." +msgstr "%s konfigurointi ei onnistunut puuttuvien kirjoitusoikeuksien vuoksi." + +#: inc/admin/ui/notices.php:1026 +#, php-format +msgid "Affected file/folder: %s" +msgstr "Tiedosto/kansio: %s" + +#: inc/classes/admin/Database/class-optimization.php:41 +#: inc/classes/admin/settings/class-page.php:1289 +msgid "Revisions" +msgstr "Versiot" + +#: inc/classes/admin/Database/class-optimization.php:42 +#: inc/classes/admin/settings/class-page.php:1299 +msgid "Auto Drafts" +msgstr "Automaattiset luonnokset" + +#: inc/classes/admin/Database/class-optimization.php:43 +#: inc/classes/admin/settings/class-page.php:1309 +msgid "Trashed Posts" +msgstr "Postaukset roskakorissa" + +#: inc/classes/admin/Database/class-optimization.php:44 +#: inc/classes/admin/settings/class-page.php:1319 +msgid "Spam Comments" +msgstr "Roskapostikommentit" + +#: inc/classes/admin/Database/class-optimization.php:45 +#: inc/classes/admin/settings/class-page.php:1329 +msgid "Trashed Comments" +msgstr "Kommentit roskakorissa" + +#: inc/classes/admin/Database/class-optimization.php:46 +#: inc/classes/admin/settings/class-page.php:1339 +msgid "Expired transients" +msgstr "Vanhentuneet transientit" + +#: inc/classes/admin/Database/class-optimization.php:47 +msgid "Transients" +msgstr "Transientit" + +#: inc/classes/admin/Database/class-optimization.php:48 +msgid "Tables" +msgstr "Taulut" + +#: inc/classes/admin/class-logs.php:124 +msgid "The debug file could not be deleted." +msgstr "Debug -tiedostoa ei voitu poistaa." + +#: inc/classes/admin/settings/class-page.php:212 +#: inc/classes/admin/settings/class-page.php:213 +msgid "Unavailable" +msgstr "Ei saatavilla" + +#: inc/classes/admin/settings/class-page.php:327 +#: inc/deprecated/deprecated.php:1791 +#: views/settings/page-sections/dashboard.php:72 +msgid "License" +msgstr "Lisenssi" + +#: inc/classes/admin/settings/class-page.php:344 +msgid "API key" +msgstr "API-avain" + +#: inc/classes/admin/settings/class-page.php:359 +msgid "Email address" +msgstr "Sähköpostiosoite" + +#: inc/classes/admin/settings/class-page.php:388 +msgid "Dashboard" +msgstr "Kojelauta" + +#: inc/classes/admin/settings/class-page.php:389 +msgid "Get help, account info" +msgstr "Pyydä apua, tilin tiedot" + +#: inc/classes/admin/settings/class-page.php:398 +msgid "My Status" +msgstr "Oma status" + +#: inc/classes/admin/settings/class-page.php:408 views/settings/page.php:71 +msgid "Rocket Tester" +msgstr "Rocket -testaaja" + +#: inc/classes/admin/settings/class-page.php:409 +msgid "I am part of the WP Rocket Beta Testing Program." +msgstr "Olen osa WP Rocket Betatestaus -ohjelmaa." + +#: inc/classes/admin/settings/class-page.php:417 views/settings/page.php:89 +msgid "Rocket Analytics" +msgstr "Rocket Analytiikka" + +#: inc/classes/admin/settings/class-page.php:419 +#, php-format +msgid "" +"I agree to share anonymous data with the development team to help improve WP" +" Rocket. %1$sWhat info will we collect?%2$s" +msgstr "" +"Annan luvan jakaa anonymisoitua dataani kehitystiimille auttaakseni WP " +"Rocket parentelua. %1$sMitä tietoja keräämme?%2$s" + +#: inc/classes/admin/settings/class-page.php:447 +msgid "Cache" +msgstr "Välimuisti" + +#: inc/classes/admin/settings/class-page.php:448 +msgid "Basic cache options" +msgstr "Välimuistin perusasetukset" + +#: inc/classes/admin/settings/class-page.php:455 +msgid "Mobile Cache" +msgstr "Mobiillivälimuisti" + +#: inc/classes/admin/settings/class-page.php:457 +msgid "Speed up your site for mobile visitors." +msgstr "Nopeuta sivustoasi mobiilikäyttäjille." + +#: inc/classes/admin/settings/class-page.php:462 +msgid "" +"We detected you use a plugin that requires a separate cache for mobile, and " +"automatically enabled this option for compatibility." +msgstr "" +"Havaitsimme lisäosan, joka tarvitsee erillisen välimuistin " +"mobiililaitteille. Asetimme tämän asetuksen päälle yhteensopivuuden " +"takaamiseksi." + +#: inc/classes/admin/settings/class-page.php:466 +msgid "User Cache" +msgstr "Käyttäjävälimuisti" + +#: inc/classes/admin/settings/class-page.php:469 +#, php-format +msgid "" +"%1$sUser cache%2$s is great when you have user-specific or restricted " +"content on your website." +msgstr "" +"%1$sKäyttäjävälimuisti%2$s on väkevä ominaisuus, jos sinulla on " +"käyttäjäkohtaista sisältöä sivullasi." + +#: inc/classes/admin/settings/class-page.php:477 +msgid "Cache Lifespan" +msgstr "Välimuistin elinikä" + +#: inc/classes/admin/settings/class-page.php:480 +#, php-format +msgid "" +"Cache lifespan is the period of time after which all cache files are " +"removed.
      Enable %1$spreloading%2$s for the cache to be rebuilt " +"automatically after lifespan expiration." +msgstr "" +"Välimuistin elinikä on aikaväli, jonka jälkeen koko välimuisti tyhjennetään." +"
      Salli %1$sesilataus%2$s välimuistille luodaksesi välimuistin " +"automaattisesti uudelleen eliniän loputtua." + +#: inc/classes/admin/settings/class-page.php:494 +msgid "Enable caching for logged-in WordPress users" +msgstr "Salli välimuisti kirjautuneille WordPress -käyttäjille" + +#: inc/classes/admin/settings/class-page.php:502 +msgid "Enable caching for mobile devices" +msgstr "Salli välimuisti mobiililaitteille" + +#: inc/classes/admin/settings/class-page.php:517 +msgid "Separate cache files for mobile devices" +msgstr "Erillinen välimuisti mobiililaitteille" + +#: inc/classes/admin/settings/class-page.php:519 +#, php-format +msgid "" +"%1$sMobile cache%2$s works safest with both options enabled. When in doubt, " +"keep both." +msgstr "" +"%1$sMobiilivälimuisti %2$s toimii parhaiten kun sallit molemmat asetukset. " +"Jos sinua epäilyttää, pidä molemmat päällä." + +#: inc/classes/admin/settings/class-page.php:535 +msgid "" +"Specify time after which the global cache is cleared
      (0 = unlimited )" +msgstr "" +"Määritä aika, jonka jälkeen globaali välimuisti tyhjennetään
      (0 = ei " +"aikarajaa)" + +#: inc/classes/admin/settings/class-page.php:537 +#, php-format +msgid "" +"Reduce lifespan to 10 hours or less if you notice issues that seem to appear" +" periodically. %1$sWhy?%2$s" +msgstr "" +"Pienennä elinikä kymmeneen tuntiin tai pienemmäksi, jos huomaat ongelmia " +"jotka tuntuvat katoavan säännöllisin väliajoin. %1$sMiksi?%2$s" + +#: inc/classes/admin/settings/class-page.php:543 +msgid "Minutes" +msgstr "Minuuttia" + +#: inc/classes/admin/settings/class-page.php:544 +msgid "Hours" +msgstr "Tuntia" + +#: inc/classes/admin/settings/class-page.php:545 +msgid "Days" +msgstr "Päivää" + +#: inc/classes/admin/settings/class-page.php:571 +msgid "File Optimization" +msgstr "Tiedostojen optimointi" + +#: inc/classes/admin/settings/class-page.php:572 +msgid "Optimize CSS & JS" +msgstr "Optimoi CSS & JS" + +#: inc/classes/admin/settings/class-page.php:579 +msgid "Basic Settings" +msgstr "Perusasetukset" + +#: inc/classes/admin/settings/class-page.php:586 +#: inc/classes/admin/settings/class-page.php:596 +#: inc/classes/admin/settings/class-page.php:606 +#, php-format +msgid "" +"%1$s Minification is currently activated in Autoptimize. If" +" you want to use %2$s’s minification, disable those options in Autoptimize." +msgstr "" +"%1$s Kutistus on aktivoitu Autoptimize:ssä. Jos haluat " +"käyttää %2$s -kutistusta, poista kyseiset asetukset Autoptimize:stä." + +#: inc/classes/admin/settings/class-page.php:589 +msgid "CSS Files" +msgstr "CSS -tiedostot" + +#: inc/classes/admin/settings/class-page.php:599 +msgid "JavaScript Files" +msgstr "JavaScript -tiedostot" + +#: inc/classes/admin/settings/class-page.php:619 +msgid "Minifying HTML removes whitespace and comments to reduce the size." +msgstr "" +"HTML:n kutistaminen positaa turhat välilyönnit ja kommentit pienentääkseen " +"tiedoston kokoa." + +#: inc/classes/admin/settings/class-page.php:630 +msgid "Combine Google Fonts files" +msgstr "Yhdistä Google Font -tiedostot" + +#: inc/classes/admin/settings/class-page.php:631 +msgid "Combining Google Fonts will reduce the number of HTTP requests." +msgstr "Google Font -tiedostojen yhdistäminen vähentää HTTP-kyselyjen määrää." + +#: inc/classes/admin/settings/class-page.php:639 +msgid "Remove query strings from static resources" +msgstr "Poista muuttujat staattisista tiedostoista" + +#: inc/classes/admin/settings/class-page.php:641 +#, php-format +msgid "" +"Removes the version query string from static files (e.g. style.css?ver=1.0) " +"and encodes it into the filename instead (e.g. style-1.0.css). Can improve " +"your GTMetrix score. %1$sMore info%2$s" +msgstr "" +"Poistaa muuttujat staattisten tiedstojen nimistä (esim. style.css=?ver1.0) " +"ja muuttaa sen staattiseksi tiedostonimeksi (esim. style-1.0.css). Voi " +"parantaa GTMetrix -pisteitä. %1$sLisätietoja%2$s" + +#: inc/classes/admin/settings/class-page.php:649 +msgid "Minify CSS files" +msgstr "Kutista CSS -tiedostot" + +#: inc/classes/admin/settings/class-page.php:650 +msgid "Minify CSS removes whitespace and comments to reduce the file size." +msgstr "" +"CSS -tiedstojen kutistaminen poistaa turhat välilyönnit ja kommentit " +"pienentääkseen tiedoston kokoa." + +#: inc/classes/admin/settings/class-page.php:663 +#: inc/classes/admin/settings/class-page.php:685 +#: inc/classes/admin/settings/class-page.php:755 +#: inc/classes/admin/settings/class-page.php:777 +msgid "This could break things!" +msgstr "Tämä saattaa rikkoa asioita!" + +#: inc/classes/admin/settings/class-page.php:664 +#: inc/classes/admin/settings/class-page.php:686 +#: inc/classes/admin/settings/class-page.php:756 +#: inc/classes/admin/settings/class-page.php:778 +msgid "" +"If you notice any errors on your website after having activated this " +"setting, just deactivate it again, and your site will be back to normal." +msgstr "" +"Jos huomaat virheitä sivustollasi tämän asetuksen aktivoinnin jälkeen, " +"poista tämä asetus käytöstä ja sivustosi toiminta palaa normaaliksi." + +#: inc/classes/admin/settings/class-page.php:665 +msgid "Activate minify CSS" +msgstr "Aktivoi CSS:n kutistus" + +#: inc/classes/admin/settings/class-page.php:670 +msgid "Combine CSS files (Enable Minify CSS files to select)" +msgstr "Yhdistä CSS -tiedostot (aktivoi CSS:n kutistus ensin)" + +#: inc/classes/admin/settings/class-page.php:672 +#, php-format +msgid "" +"Combine CSS merges all your files into 1, reducing HTTP requests. Not " +"recommended if your site uses HTTP/2. %1$sMore info%2$s" +msgstr "" +"CSS:n yhdistäminen yhdistää kaikki erilliset CSS -tiedostot yhdeksi, " +"vähentäen HTTP-kyselyiden määrää. Ei suositeltavaa, jos sivustosi käyttää " +"HTTP/2 -yhteyksiä. %1$sLisätietoja%2$s" + +#: inc/classes/admin/settings/class-page.php:687 +msgid "Activate combine CSS" +msgstr "Aktivoi CSS:n yhdistäminen" + +#: inc/classes/admin/settings/class-page.php:693 +msgid "" +"Specify URLs of CSS files to be excluded from minification and concatenation" +" (one per line)." +msgstr "" +"Määritä verkko-osoitteet niihin CSS -tiedostoihin jotka haluat sulkea pois " +"kutistuksesta ja yhdistämisestä (yksi osoite per rivi)." + +#: inc/classes/admin/settings/class-page.php:694 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*).css " +"wildcards to exclude all CSS files located at a specific path." +msgstr "" +"Verkkotunnus-osa poistetaan automaattisesti.
      Voit käyttää (.*).css " +"-jokereita sulkeaksesi pois kaikki CSS -tiedostot tietystä kansiosta." + +#: inc/classes/admin/settings/class-page.php:707 +msgid "Optimize CSS delivery" +msgstr "Optimoi CSS:n jakelu" + +#: inc/classes/admin/settings/class-page.php:714 +#, php-format +msgctxt "WP Critical CSS compatibility" +msgid "" +"Optimize CSS Delivery is currently handled by the %1$s plugin. If you want " +"to use WP Rocket’s Optimize CSS Delivery option, disable the %1$s plugin." +msgstr "" +"CSS:n optimoitu jakelua hoitaa tällä hetkellä %1$s -lisäosa. Jos haluat " +"käyttää WP Rocketin CSS:n optimoitua jakelua, poista käytöstä %1$s -lisäosa." + +#: inc/classes/admin/settings/class-page.php:716 +#, php-format +msgid "" +"Optimize CSS delivery eliminates render-blocking CSS on your website for " +"faster perceived load time. %1$sMore info%2$s" +msgstr "" +"CSS:n jakelun optimointi poistaa renderöinnin estävän CSS:n lataamisen " +"verkkosivultasi ja mahdollistaa nopeamman visuaalisen latausajan. " +"%1$sLisätietoa%2$s" + +#: inc/classes/admin/settings/class-page.php:727 +msgid "Fallback critical CSS" +msgstr "Kriittisen CSS:n turvaverkko" + +#: inc/classes/admin/settings/class-page.php:732 +#, php-format +msgid "" +"Provides a fallback if auto-generated critical path CSS is incomplete. " +"%1$sMore info%2$s" +msgstr "" +"Tarjoaa turvaverkon mikäli automaattisesti luotu kriittinen CSS on " +"virheellinen. %1$sLisätietoja%2$s" + +#: inc/classes/admin/settings/class-page.php:741 +msgid "Minify JavaScript files" +msgstr "Kutista JavaScript -tiedostot" + +#: inc/classes/admin/settings/class-page.php:742 +msgid "" +"Minify JavaScript removes whitespace and comments to reduce the file size." +msgstr "" +"JavaScript -tiedostojen kutistaminen poistaa turhat välilyönnit ja kommentit" +" pienentääkseen tiedoston kokoa." + +#: inc/classes/admin/settings/class-page.php:757 +msgid "Activate minify JavaScript" +msgstr "Aktivoi JavaScript:in kutistus" + +#: inc/classes/admin/settings/class-page.php:762 +msgid "" +"Combine JavaScript files (Enable Minify JavaScript files to select)" +msgstr "" +"Yhdistä JavaScript -tiedstot (salli JavaScript:in kutistaminen " +"ensin)" + +#: inc/classes/admin/settings/class-page.php:764 +#, php-format +msgid "" +"Combine JavaScript files combines your site’s internal, 3rd party and inline" +" JS reducing HTTP requests. Not recommended if your site uses HTTP/2. " +"%1$sMore info%2$s" +msgstr "" +"JavaScript:in yhdistäminen yhdistää sivustosi sisäiset, ulkoiset ja inline-" +"JavaScript -koodit yhteen vähentäen HTTP-pyyntöjä. Ei suositeltavaa jos " +"käytössäsi on HTTP/2. %1$sLisätietoja%2$s" + +#: inc/classes/admin/settings/class-page.php:779 +msgid "Activate combine JavaScript" +msgstr "Aktivoi JavaScript:in yhdistäminen" + +#: inc/classes/admin/settings/class-page.php:786 +#, php-format +msgid "" +"Specify patterns of inline JavaScript to be excluded from concatenation (one" +" per line). %1$sMore info%2$s" +msgstr "" +"Määritä sopivat kaaviot inline-JavaScriptille, jonka haluat sulkea pois " +"yhdistämisestä (yksi per rivi). %1$sLisätietoa%2$s" + +#: inc/classes/admin/settings/class-page.php:803 +msgid "" +"Specify URLs of JavaScript files to be excluded from minification and " +"concatenation (one per line)." +msgstr "" +"Määritä verkko-osoitteet pois suljettaville JavaScript -tiedostoille, joita " +"et halua mukaan kutistukseen ja yhdistämiseen (yksi per rivi)." + +#: inc/classes/admin/settings/class-page.php:804 +msgid "" +"Internal: The domain part of the URL will be stripped " +"automatically. Use (.*).js wildcards to exclude all JS files located at a " +"specific path." +msgstr "" +"Sisäiset: Verkko-osoitteen domain-osuus osoitteesta " +"jätetään automaattisesti pois. Käytä (.*).js -jokerimerkkiä sulkeaksesi pois" +" kaikki JS-tiedostot tietystä kansiosta." + +#: inc/classes/admin/settings/class-page.php:806 +#, php-format +msgid "" +"3rd Party: Use either the full URL path or only the domain " +"name, to exclude external JS. %1$sMore info%2$s" +msgstr "" +"Ulkoiset: Anna joko kokonainen URL, tai pelkkä domain-nimi " +"sulkeaksesi pois ulkoiset JS-tiedostot. %1$sLisätietoa%2$s" + +#: inc/classes/admin/settings/class-page.php:822 +msgid "Load JavaScript deferred" +msgstr "Lataa JavaScript puskuroidusti" + +#: inc/classes/admin/settings/class-page.php:824 +#, php-format +msgid "" +"Load JavaScript deferred eliminates render-blocking JS on your site and can " +"improve load time. %1$sMore info%2$s" +msgstr "" +"JavaScript:in lataaminen puskuroidusti poistaa renderöinnin estävän JS:n " +"lataamisen ja voi parantaa sivusi latausaikaa. %1$sLisätietoa%2$s" + +#: inc/classes/admin/settings/class-page.php:835 +msgid "Safe Mode for jQuery (recommended)" +msgstr "Turvallinen jQueryn lataaminen (suositeltu)" + +#: inc/classes/admin/settings/class-page.php:836 +msgid "" +"Safe mode for jQuery for deferred JS ensures support for inline jQuery " +"references from themes and plugins by loading jQuery at the top of the " +"document as a render-blocking script.
      Deactivating may result in " +"broken functionality, test thoroughly!" +msgstr "" +"jQueryn turvallinen lataaminen puskuroidun JS:n kanssa takaa " +"yhteensopivuuden inline-koodin kanssa, joka vaatii jQueryn. Turvallinen " +"lataaminen pakottaa jQueryn latauksen heti sivusi alussa.
      Tämän " +"deaktivointi voi rikkoa sivusi toiminnallisuutta, testaa " +"perusteellisesti!" + +#: inc/classes/admin/settings/class-page.php:861 +msgid "Media" +msgstr "Media" + +#: inc/classes/admin/settings/class-page.php:862 +msgid "LazyLoad, emojis, embeds" +msgstr "LazyLoad, emojit, sisällytykset" + +#: inc/classes/admin/settings/class-page.php:869 +msgid "LazyLoad" +msgstr "LazyLoad" + +#: inc/classes/admin/settings/class-page.php:872 +#, php-format +msgid "" +"It can improve actual and perceived loading time as images, iframes, and " +"videos will be loaded only as they enter (or about to enter) the viewport " +"and reduces the number of HTTP requests. %1$sMore Info%2$s" +msgstr "" +"Voi parantaa näkyvää ja todellista latausaikaa, sillä kuvat, iframet ja " +"videot ladataan vasta kun ne ilmestyvät (tai ovat juuri ilmestymässä) " +"näkyviin. Tämä vähentää HTTP-pyyntöjen määrää. %1$sLisätietoja%2$s" + +#: inc/classes/admin/settings/class-page.php:879 +#, php-format +msgid "" +"Lazyload is currently activated in Autoptimize. If you want" +" to use %1$s’s lazyload, disable this option in Autoptimize." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:882 +msgid "Emoji 👻" +msgstr "Emoji 👻" + +#: inc/classes/admin/settings/class-page.php:884 +msgid "" +"Use default emoji of visitor's browser instead of loading emoji from " +"WordPress.org" +msgstr "" +"Käytä käyttäjän selaimen oletus-emojitä, äläkä lataa niitä WordPress.org " +"-sivustolta" + +#: inc/classes/admin/settings/class-page.php:888 +msgid "Embeds" +msgstr "Sisällytykset" + +#: inc/classes/admin/settings/class-page.php:890 +msgid "" +"Prevents others from embedding content from your site, prevents you from " +"embedding content from other (non-whitelisted) sites, and removes JavaScript" +" requests related to WordPress embeds" +msgstr "" +"Estää muita sisällyttämästä sivusi sisältöä omille sivuilleen, estää sinua " +"sisällyttämästä (ei sallittujen) muita sivuja, sekä poistaa sisällytykseen " +"liittyvät JavaScript-koodit." + +#: inc/classes/admin/settings/class-page.php:900 +msgid "Enable for images" +msgstr "Käytä kuviin" + +#: inc/classes/admin/settings/class-page.php:911 +msgctxt "Avada" +msgid "" +"Lazyload for images is currently activated in Avada. If you want to use WP " +"Rocket’s LazyLoad, disable this option in Avada." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:919 +msgid "Enable for iframes and videos" +msgstr "Käytä iframeihin ja videoihin" + +#: inc/classes/admin/settings/class-page.php:934 +msgid "Replace YouTube iframe with preview image" +msgstr "Korvaa YouTuben iframe esikatselukuvalla" + +#: inc/classes/admin/settings/class-page.php:935 +msgid "" +"This can significantly improve your loading time if you have a lot of " +"YouTube videos on a page." +msgstr "" +"Tämä voi parantaa sivusi latausaikaa merkittävästi, jos sivullasi on paljon " +"YouTube -videoita." + +#: inc/classes/admin/settings/class-page.php:947 +msgid "Disable Emoji" +msgstr "Poista emojit käytöstä" + +#: inc/classes/admin/settings/class-page.php:948 +msgid "Disable Emoji will reduce the number of external HTTP requests." +msgstr "" +"Poistamalla emojit käytöstä, voit vähentää ulkoisten HTTP-kyselyjen määrää." + +#: inc/classes/admin/settings/class-page.php:956 +msgid "Disable WordPress embeds" +msgstr "Poista käytöstä WordPress -sisällytykset" + +#: inc/classes/admin/settings/class-page.php:978 +#: inc/classes/admin/settings/class-page.php:988 +#: inc/deprecated/deprecated.php:1778 +msgid "Preload" +msgstr "Esilataa" + +#: inc/classes/admin/settings/class-page.php:979 +msgid "Generate cache files" +msgstr "Luo välimuistitiedostot" + +#: inc/classes/admin/settings/class-page.php:991 +#, php-format +msgid "" +"When you enable preloading WP Rocket will generate the cache starting with " +"the links on your homepage followed by the sitemaps you specify. Preloading " +"is automatically triggered when you add or update content and can also be " +"manually triggered from the admin bar or from the %1$sWP Rocket " +"Dashboard%2$s." +msgstr "" +"Kun asetat päälle välimusitin esilatauksen, WP Rocket luo " +"välimuistitiedostot alkaen kotisivustasi ja siinä olevista linkeistä. Jos " +"olet ottanut käyttöön sivukartta-esilatauksen, myös niissä olevat sivut " +"esiladataan. Esilataus aloitetaan automaattisesti kun lisäät tai päivität " +"sivujasi, sekä se voidaan myös aloittaa manuaalisesti hallinta-valikosta tai" +" %1$sWP Rocket:in kojelaudasta%2$s." + +#: inc/classes/admin/settings/class-page.php:999 +msgid "Prefetch DNS Requests" +msgstr "Ennakkohae DNS-kyselyjä" + +#: inc/classes/admin/settings/class-page.php:1001 +msgid "" +"DNS prefetching can make external files load faster, especially on mobile " +"networks" +msgstr "" +"DNS-kyselyjen esilataaminen voi nopeuttaa ulkoisten tiedostojen lataamisen " +"etenkin mobiiliverkoissa" + +#: inc/classes/admin/settings/class-page.php:1015 +msgid "Activate Preloading" +msgstr "Aktivoi esilataus" + +#: inc/classes/admin/settings/class-page.php:1034 +msgid "Activate sitemap-based cache preloading" +msgstr "Aktivoi sivukartta-pohjainen esilataus" + +#: inc/classes/admin/settings/class-page.php:1053 +msgid "Sitemaps for preloading" +msgstr "Sivukartat esilatausta varten" + +#: inc/classes/admin/settings/class-page.php:1057 +msgid "Specify XML sitemap(s) to be used for preloading" +msgstr "Määritä XML-sivukartat, jotka luetaan esilataukseen" + +#: inc/classes/admin/settings/class-page.php:1067 +msgid "URLs to prefetch" +msgstr "URL-osoitteet esilataukseen" + +#: inc/classes/admin/settings/class-page.php:1068 +msgid "" +"Specify external hosts to be prefetched (no http:, one per " +"line)" +msgstr "" +"Määritä verkko-isännät jotka esiladataan (ei http:, yksi isäntä" +" per rivi)" + +#: inc/classes/admin/settings/class-page.php:1091 +msgid "Advanced Rules" +msgstr "Lisäasetukset" + +#: inc/classes/admin/settings/class-page.php:1092 +msgid "Fine-tune cache rules" +msgstr "Hienosäädä välimuistisääntöjä" + +#: inc/classes/admin/settings/class-page.php:1101 +msgid "" +"Sensitive pages like custom login/logout URLs should be excluded from cache." +msgstr "" +"Arkaluontoiset sivut, kuten räätälöidyt kirjautumis-sivut tulisi poissulkea " +"välimuistista." + +#: inc/classes/admin/settings/class-page.php:1104 +msgctxt "plugin name" +msgid "WooCommerce" +msgstr "WooCommerce" + +#: inc/classes/admin/settings/class-page.php:1106 +msgctxt "plugin name" +msgid "Easy Digital Downloads" +msgstr "Easy Digital Downloads" + +#: inc/classes/admin/settings/class-page.php:1108 +msgctxt "plugin name" +msgid "iThemes Exchange" +msgstr "iThemes Exchange" + +#: inc/classes/admin/settings/class-page.php:1110 +msgctxt "plugin name" +msgid "Jigoshop" +msgstr "Jigoshop" + +#: inc/classes/admin/settings/class-page.php:1112 +msgctxt "plugin name" +msgid "WP-Shop" +msgstr "WP-Shop" + +#: inc/classes/admin/settings/class-page.php:1118 +#, php-format +msgid "" +"
      Cart, checkout and \"my account\" pages set in " +"%1$s%2$s%3$s will be detected and never cached by default." +msgstr "" +"
      Ostoskori, kassa ja \"Oma tili\" -sivut, jotka on asetettu kohdassa " +"%1$s%2$s%3$s tunnistetaan automaattisesti eikä niitä ladata" +" välimuistiin." + +#: inc/classes/admin/settings/class-page.php:1139 +msgid "Never Cache Cookies" +msgstr "Välimuistista pois suljettavat evästeet" + +#: inc/classes/admin/settings/class-page.php:1158 +msgid "Cache Query String(s)" +msgstr "Muuttujat välimuistiin" + +#: inc/classes/admin/settings/class-page.php:1161 +#, php-format +msgid "" +"%1$sCache for query strings%2$s enables you to force caching for specific " +"GET parameters." +msgstr "" +"%1$sMuuttujat välimuistiin -optio%2$s mahdollistaa sinut pakottamaan tietyt " +"GET-parametrit välimuistiin." + +#: inc/classes/admin/settings/class-page.php:1175 +msgid "" +"Specify URLs of pages or posts that should never be cached (one per line)" +msgstr "" +"Määritä URL-osoitteet sivuista tai postauksista jotka aluat sulkea pois " +"välimuistista (yksi per rivi)" + +#: inc/classes/admin/settings/class-page.php:1176 +#: inc/classes/admin/settings/class-page.php:1204 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*) " +"wildcards to address multiple URLs under a given path." +msgstr "" +"Domain-osuus osoitteesta riisutaan automaattisesti.
      Käytä (.*) " +"-jokerimerkkiä sulkeaksesi pois useamman osoitteen samasta polusta." + +#: inc/classes/admin/settings/class-page.php:1185 +msgid "" +"Specify the IDs of cookies that, when set in the visitor's browser, should " +"prevent a page from getting cached (one per line)" +msgstr "" +"Määritä niiden evästeiden ID-tunnus jota kantavalle käyttäjälle ei koskaan " +"näytetä välimuistissa olevia sivuja (yksi per rivi)" + +#: inc/classes/admin/settings/class-page.php:1193 +msgid "" +"Specify user agent strings that should never see cached pages (one per line)" +msgstr "" +"Määritä selain-agentit joille ei näytetä koskaan välimuistissa olevaa sivua " +"(yksi per rivi)" + +#: inc/classes/admin/settings/class-page.php:1194 +msgid "Use (.*) wildcards to detect parts of UA strings." +msgstr "Käytä (.*) -jokerimerkkiä tunnistaaksesi osan selain-agentista." + +#: inc/classes/admin/settings/class-page.php:1203 +msgid "" +"Specify URLs you always want purged from cache whenever you update any post " +"or page (one per line)" +msgstr "" +"Määritä ereityiset verkko-osoitteet joiden välimuistin haluat aina tyhjentää" +" kun päivität jonkun sivun tai postauksen (yksi per rivi)" + +#: inc/classes/admin/settings/class-page.php:1212 +msgid "Specify query strings for caching (one per line)" +msgstr "Määritä osoitteen muuttujat välimuistia varten (yksi per rivi)" + +#: inc/classes/admin/settings/class-page.php:1240 +#: inc/deprecated/deprecated.php:1777 +msgid "Database" +msgstr "Tietokanta" + +#: inc/classes/admin/settings/class-page.php:1241 +msgid "Optimize, reduce bloat" +msgstr "Optimoi, vähennä turhaa bloattia" + +#: inc/classes/admin/settings/class-page.php:1250 +msgid "Post Cleanup" +msgstr "Postauksien putsaus" + +#: inc/classes/admin/settings/class-page.php:1252 +msgid "" +"Post revisions and drafts will be permanently deleted. Do not use this " +"option if you need to retain revisions or drafts." +msgstr "" +"Postauksien versiot ja luonnokset poistetaan pysyvästi. Älä käytä tätä " +"toimintoa jos haluat säilyttää eri versiot tai luonnokset." + +#: inc/classes/admin/settings/class-page.php:1260 +msgid "Comments Cleanup" +msgstr "Kommentien siivous" + +#: inc/classes/admin/settings/class-page.php:1262 +msgid "Spam and trashed comments will be permanently deleted." +msgstr "Roskapostit ja roskakoriin siirretyt kommentit poistetaan pysyvästi." + +#: inc/classes/admin/settings/class-page.php:1266 +msgid "Transients Cleanup" +msgstr "Transienttien siivous" + +#: inc/classes/admin/settings/class-page.php:1268 +msgid "" +"Transients are temporary options; they are safe to remove. They will be " +"automatically regenerated as your plugins require them." +msgstr "" +"Transientit ovat väliaikaisia \"asetuksia\"; ne on turvallista poistaa. " +"Transientit luodaan automaattisesti uudestaan niitä käyttävien lisäosien " +"toimesta." + +#: inc/classes/admin/settings/class-page.php:1272 +msgid "Database Cleanup" +msgstr "Tietokannan siivous" + +#: inc/classes/admin/settings/class-page.php:1274 +msgid "Reduces overhead of database tables" +msgstr "Vähentää tietokantataulujen hävikkiä" + +#: inc/classes/admin/settings/class-page.php:1278 +msgid "Automatic cleanup" +msgstr "Automaattinen siivous" + +#: inc/classes/admin/settings/class-page.php:1291 +#, php-format +msgid "%s revision in your database." +msgid_plural "%s revisions in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1301 +#, php-format +msgid "%s draft in your database." +msgid_plural "%s drafts in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1311 +#, php-format +msgid "%s trashed post in your database." +msgid_plural "%s trashed posts in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1321 +#, php-format +msgid "%s spam comment in your database." +msgid_plural "%s spam comments in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1331 +#, php-format +msgid "%s trashed comment in your database." +msgid_plural "%s trashed comments in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1341 +#, php-format +msgid "%s expired transient in your database." +msgid_plural "%s expired transients in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1349 +msgid "All transients" +msgstr "Kaikki transientit" + +#: inc/classes/admin/settings/class-page.php:1351 +#, php-format +msgid "%s transient in your database." +msgid_plural "%s transients in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1359 +msgid "Optimize Tables" +msgstr "Optimoi taulut" + +#: inc/classes/admin/settings/class-page.php:1361 +#, php-format +msgid "%s table to optimize in your database." +msgid_plural "%s tables to optimize in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1372 +msgid "Schedule Automatic Cleanup" +msgstr "Ajasta automaattinen siivous" + +#: inc/classes/admin/settings/class-page.php:1384 +msgid "Frequency" +msgstr "Toistuvuus" + +#: inc/classes/admin/settings/class-page.php:1392 +msgid "Daily" +msgstr "Päivittäin" + +#: inc/classes/admin/settings/class-page.php:1393 +msgid "Weekly" +msgstr "Viikottain" + +#: inc/classes/admin/settings/class-page.php:1394 +msgid "Monthly" +msgstr "Kuukausittain" + +#: inc/classes/admin/settings/class-page.php:1414 +msgid "Integrate your CDN" +msgstr "Integroi CDN-palveluntarjoajasi" + +#: inc/classes/admin/settings/class-page.php:1426 +msgid "" +"All URLs of static files (CSS, JS, images) will be rewritten to the CNAME(s)" +" you provide." +msgstr "" +"Kaikki staattisten tiedostojen (CSS, JS, kuvat) URL-osoitteet korvataan " +"antamallasi CNAME-tietueella." + +#: inc/classes/admin/settings/class-page.php:1428 +#, php-format +msgid "" +"Not required for services like Cloudflare and Sucuri. Please see our " +"available %1$sAdd-ons%2$s." +msgstr "" +"Ei vaadittu tietyissä palveluissa kuten Cloudflare ja Sucuri. Ole hyvä ja " +"katso saatavilla olevat %1$slisäosat%2$s." + +#: inc/classes/admin/settings/class-page.php:1469 +#, php-format +msgid "" +"%1$s%2$s Add-on%3$s is currently enabled. Configuration of the CDN settings " +"is not required for %2$s to work on your site." +msgid_plural "" +"%1$s%2$s Add-ons%3$s are currently enabled. Configuration of the CDN " +"settings is not required for %2$s to work on your site." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1484 +msgid "Enable Content Delivery Network" +msgstr "Aktivoi CDN (Content Delivery Network)" + +#: inc/classes/admin/settings/class-page.php:1493 +msgid "CDN CNAME(s)" +msgstr "CDN CNAME(t)" + +#: inc/classes/admin/settings/class-page.php:1494 +msgid "Specify the CNAME(s) below" +msgstr "Määritä CNAME(t) alle" + +#: inc/classes/admin/settings/class-page.php:1501 +msgid "" +"Specify URL(s) of files that should not get served via CDN (one per line)." +msgstr "" +"Määritä URL-osoitteet joiden tiedostoja ei tarjoilla CDN-palvelusta (yksi " +"per rivi)." + +#: inc/classes/admin/settings/class-page.php:1502 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*) " +"wildcards to exclude all files of a given file type located at a specific " +"path." +msgstr "" +"Domain-osuus URL-osoitteesta poistetaan automaattisesti.
      Käytä (.*) " +"-jokeria sulkeaksesi pois kaikki tiedostotyypit annetusta polusta." + +#: inc/classes/admin/settings/class-page.php:1525 +#: inc/classes/admin/settings/class-page.php:1533 +msgid "Heartbeat" +msgstr "Sydämen syke" + +#: inc/classes/admin/settings/class-page.php:1526 +msgid "Control WordPress Heartbeat API" +msgstr "Kontrolloi WordPressin Sydämen sykkeen rajapintaa" + +#: inc/classes/admin/settings/class-page.php:1534 +msgid "" +"Reducing or disabling the Heartbeat API’s activity can help save some of " +"your server’s resources." +msgstr "" +"Vähennä tai poista kokonaan käytöstä Sydämen sykkeen rajapinta " +"helpottaaksesi palvelimesi kuormaa." + +#: inc/classes/admin/settings/class-page.php:1543 +msgid "Reduce or disable Heartbeat activity" +msgstr "Vähennä tai poista Sydämen syke" + +#: inc/classes/admin/settings/class-page.php:1544 +msgid "" +"Reducing activity will change Heartbeat frequency from one hit each minute " +"to one hit every 2 minutes." +msgstr "" +"Sykkeen harvennus muuttaa yhden kyselyn minuutista joka toiseen minuuttiin." + +#: inc/classes/admin/settings/class-page.php:1544 +msgid "" +"Disabling Heartbeat entirely may break plugins and themes using this API." +msgstr "" +"Jos poistat Sykkeen kokonaan käytöstä, saatat rikkoa muiden lisäosien " +"toimivuuden." + +#: inc/classes/admin/settings/class-page.php:1558 +msgid "Do not limit" +msgstr "Älä rajoita" + +#: inc/classes/admin/settings/class-page.php:1559 +msgid "Reduce activity" +msgstr "Vähennetty syke" + +#: inc/classes/admin/settings/class-page.php:1560 +msgid "Disable" +msgstr "Poista käytöstä" + +#: inc/classes/admin/settings/class-page.php:1568 +msgid "Control Heartbeat" +msgstr "Kontrolloi Sydämen sykettä" + +#: inc/classes/admin/settings/class-page.php:1577 +msgid "Behavior in backend" +msgstr "Syke hallintasivulla" + +#: inc/classes/admin/settings/class-page.php:1584 +msgid "Behavior in post editor" +msgstr "Syke postauksen editorissa" + +#: inc/classes/admin/settings/class-page.php:1590 +msgid "Behavior in frontend" +msgstr "Syke julkisivulla" + +#: inc/classes/admin/settings/class-page.php:1609 +msgid "Add-ons" +msgstr "Lisäosat" + +#: inc/classes/admin/settings/class-page.php:1610 +msgid "Add more features" +msgstr "Lisää uusia ominaisuuksia" + +#: inc/classes/admin/settings/class-page.php:1617 +msgid "One-click Rocket Add-ons" +msgstr "Yhden klikkauksen Rocket -lisäosat" + +#: inc/classes/admin/settings/class-page.php:1618 +msgid "" +"One-Click Add-ons are features extending available options without " +"configuration needed. Switch the option \"on\" to enable from this screen." +msgstr "" +"Yhden klikkauksen lisäosat ovat ominaisuuksia, jotka laajentavat " +"käytettävissä olevia asetuksia helposti. Ota ominaisuus käyttöön tältä " +"sivulta." + +#: inc/classes/admin/settings/class-page.php:1628 +msgid "Rocket Add-ons" +msgstr "Rocket -lisäosat" + +#: inc/classes/admin/settings/class-page.php:1629 +msgid "Rocket Add-ons are complementary features extending available options." +msgstr "" +"Rocket -lisäosat ovat täydentäviä ominaisuuksia, jotka laajentavat " +"käytettävissä olevia ominaisuuksia." + +#: inc/classes/admin/settings/class-page.php:1642 +msgid "Google Tracking" +msgstr "Google Tracking" + +#: inc/classes/admin/settings/class-page.php:1648 +msgid "Improve browser caching for Google Analytics" +msgstr "Paranna selaimen välimuistia Google Analyticsille" + +#: inc/classes/admin/settings/class-page.php:1650 +#, php-format +msgid "" +"WP Rocket will host these Google scripts locally on your server to help " +"satisfy the PageSpeed recommendation for Leverage browser " +"caching.
      %1$sLearn more%2$s" +msgstr "" +"WP Rocket hostaa nämä Googlen scriptit lokaalisti palvelimellasi auttaakseen" +" PageSpeed -suosituksissa koskien Hyödynnä selaimen " +"välimuistia.
      %1$sLue lisää aiheesta%2$s" + +#: inc/classes/admin/settings/class-page.php:1665 +msgid "Facebook Pixel" +msgstr "Facebook Pixel" + +#: inc/classes/admin/settings/class-page.php:1671 +msgid "Improve browser caching for Facebook Pixel" +msgstr "Paranna selaimeen välimuistia Facebook Pixel:iä varten" + +#: inc/classes/admin/settings/class-page.php:1673 +#, php-format +msgid "" +"WP Rocket will host these Facebook Pixels locally on your server to help " +"satisfy the PageSpeed recommendation for Leverage browser " +"caching.
      %1$sLearn more%2$s" +msgstr "" +"WP Rocket hostaa nämä Facebook Pixel:it lokaalisti palvelimellasi " +"auttaakseen PageSpeed -suosituksissa koskien Hyödynnä selaimen " +"välimuistia.
      %1$sLue lisää aiheesta%2$s" + +#: inc/classes/admin/settings/class-page.php:1706 +msgid "Varnish" +msgstr "Varnish" + +#: inc/classes/admin/settings/class-page.php:1712 +msgid "If Varnish runs on your server, you must activate this add-on." +msgstr "" +"Jos sinulla on Varnish asennettuna palvelimellesi, ota tämä ominaisuus " +"käyttöön." + +#: inc/classes/admin/settings/class-page.php:1714 +#, php-format +msgid "" +"Varnish cache will be purged each time WP Rocket clears its cache to ensure " +"content is always up-to-date.
      %1$sLearn more%2$s" +msgstr "" +"Varnish-välimuisti tyhjennetään automaattisesti aina kun WP Rocket:in " +"välimuisti tyhjennetään.
      %1$sLue lisää%2$s" + +#: inc/classes/admin/settings/class-page.php:1729 +#: inc/classes/admin/settings/class-page.php:1789 +msgid "Cloudflare" +msgstr "Cloudflare" + +#: inc/classes/admin/settings/class-page.php:1735 +msgid "Integrate your Cloudflare account with this add-on." +msgstr "Integroi Cloudflare -tilisi tällä lisäosalla." + +#: inc/classes/admin/settings/class-page.php:1736 +msgid "" +"Provide your account email, global API key, and domain to use options such " +"as clearing the Cloudflare cache and enabling optimal settings with WP " +"Rocket." +msgstr "" +"Syötä tilisi sähköposti, globaali API-avain, sekä domain jotta voit käyttää " +"omainsuuksia kuten Cloudflaren välimusitin tyhjennus, sekä optimaaliset " +"asetukset WP Rocket:ille." + +#: inc/classes/admin/settings/class-page.php:1748 +msgid "Clear the Sucuri cache when WP Rocket’s cache is cleared." +msgstr "" +"Tyhjennä Sucuri:n välimuisti kun WP Rocket:in välimuisti tyhjennetään." + +#: inc/classes/admin/settings/class-page.php:1751 +msgid "" +"Provide your API key to clear the Sucuri cache when WP Rocket’s cache is " +"cleared." +msgstr "" +"Syötä API-avaimesi tyhjentääksesi Sucuri:n välimuistin automaattisesti." + +#: inc/classes/admin/settings/class-page.php:1759 +#: inc/classes/admin/settings/class-page.php:1907 +msgid "Sucuri" +msgstr "Sucuri" + +#: inc/classes/admin/settings/class-page.php:1765 +msgid "Synchronize Sucuri cache with this add-on." +msgstr "Synkronoi Sucuri:n välimuisti tällä lisäosalla." + +#: inc/classes/admin/settings/class-page.php:1805 +msgid "Cloudflare credentials" +msgstr "Cloudflare -tunnukset" + +#: inc/classes/admin/settings/class-page.php:1814 +msgid "Cloudflare settings" +msgstr "Cloudflare -asetukset" + +#: inc/classes/admin/settings/class-page.php:1828 +msgctxt "Cloudflare" +msgid "Global API key:" +msgstr "Globaali API-avain:" + +#: inc/classes/admin/settings/class-page.php:1829 +msgid "" +"https://support.cloudflare.com/hc/en-us/articles/200167836-Where-do-I-find-" +"my-Cloudflare-API-key-" +msgstr "" +"https://support.cloudflare.com/hc/en-us/articles/200167836-Where-do-I-find-" +"my-Cloudflare-API-key-" + +#: inc/classes/admin/settings/class-page.php:1829 +msgctxt "Cloudflare" +msgid "Find your API key" +msgstr "Löydä API-avaimesi" + +#: inc/classes/admin/settings/class-page.php:1841 +msgctxt "Cloudflare" +msgid "Account email" +msgstr "Tilisi sähköposti" + +#: inc/classes/admin/settings/class-page.php:1850 +msgctxt "Cloudflare" +msgid "Zone ID" +msgstr "Zone ID" + +#: inc/classes/admin/settings/class-page.php:1860 +msgid "Development mode" +msgstr "Kehitystila" + +#: inc/classes/admin/settings/class-page.php:1862 +#, php-format +msgid "" +"Temporarily activate development mode on your website. This setting will " +"automatically turn off after 3 hours. %1$sLearn more%2$s" +msgstr "" +"Aktivoi väliaikaisesti kehitystila. Tämä asetus poistetaan automaattiseesti " +"kolmen tunnin kuluttua. %1$sLue lisää%2$s" + +#: inc/classes/admin/settings/class-page.php:1870 +msgid "Optimal settings" +msgstr "Optimaaliset asetukset" + +#: inc/classes/admin/settings/class-page.php:1871 +msgid "" +"Automatically enhances your Cloudflare configuration for speed, performance " +"grade and compatibility." +msgstr "" +"Automaattisesti paranna Cloudflare:n asetuksia nopeuden ja yhteensopivuuden " +"suhteen." + +#: inc/classes/admin/settings/class-page.php:1879 +msgid "Relative protocol" +msgstr "Suhteellinen protokolla" + +#: inc/classes/admin/settings/class-page.php:1880 +msgid "" +"Should only be used with Cloudflare's flexible SSL feature. URLs of static " +"files (CSS, JS, images) will be rewritten to use // instead of http:// or " +"https://." +msgstr "" +"Tätä tulisi käyttää vain yhdessä Cloudflaren \"flexible SSL\" -ominaisuuden " +"kanssa. Staattisten tiedostojen (CSS, JS, kuvat) osoitteet " +"uudelleenkirjoitetaan muotoon //." + +#: inc/classes/admin/settings/class-page.php:1920 +msgid "Sucuri credentials" +msgstr "Sucuri -tunnukset" + +#: inc/classes/admin/settings/class-page.php:1933 +msgctxt "Sucuri" +msgid "" +"Firewall API key (for plugin), must be in format {32 characters}/{32 " +"characters}:" +msgstr "" +"Palomuurin API-avain (lisäosan), täytyy olla formaatissa {32 " +"characters}/{32 characters}:" + +#: inc/classes/admin/settings/class-page.php:1934 +msgctxt "Sucuri" +msgid "Find your API key" +msgstr "Löydä API-avaimesi" + +#: inc/classes/admin/settings/class-render.php:486 +#: inc/deprecated/deprecated.php:1296 +msgid "Upload file and import settings" +msgstr "Tallenna tiedosto ja tuo asetukset" + +#: inc/classes/admin/settings/class-settings.php:385 +msgid "" +"Sucuri Add-on: The API key for the Sucuri firewall must be in format " +"{32 characters}/{32 characters}." +msgstr "" +"Sucuri -lisäosa: API-avain täytyy olla muodossa {32 characters}/{32 " +"characters}." + +#: inc/classes/admin/settings/class-settings.php:462 +#: inc/deprecated/deprecated.php:1247 +msgid "Settings saved." +msgstr "Asetukset tallennettu." + +#: inc/classes/class-wp-rocket-requirements-check.php:148 +#, php-format +msgid "To function properly, %1$s %2$s requires at least:" +msgstr "Jotta tämä toimisi, %1$s %2$s vaatii vähintään:" + +#: inc/classes/class-wp-rocket-requirements-check.php:152 +#, php-format +msgid "" +"PHP %1$s. To use this WP Rocket version, please ask your web host how to " +"upgrade your server to PHP %1$s or higher." +msgstr "" +"PHP %1$s. Käyttääksesi tätä WP Rocket:in versiota, pyydä web-hostaajaasi " +"päivittämään palvelimesi PHP-versio PHP %1$s tai uudempaan." + +#: inc/classes/class-wp-rocket-requirements-check.php:157 +#, php-format +msgid "" +"WordPress %1$s. To use this WP Rocket version, please upgrade WordPress to " +"version %1$s or higher." +msgstr "" +"WordPress %1$s. Käyttääksesi tätä WP Rocket:in versiota, ole hyvä ja päivitä" +" WordPress vähintään versioon %1$s." + +#: inc/classes/class-wp-rocket-requirements-check.php:160 +msgid "" +"If you are not able to upgrade, you can rollback to the previous version by " +"using the button below." +msgstr "" +"Päivitys ei ole sallittu sinulle. Voit palata edelliseen versioon alla " +"olevasta painikkeesta." + +#: inc/classes/class-wp-rocket-requirements-check.php:162 +#: inc/deprecated/deprecated.php:1949 +#, php-format +msgid "Re-install version %s" +msgstr "Uudelleenasenna versio %s" + +#: inc/classes/logger/class-logger.php:253 +#: inc/classes/logger/class-logger.php:285 +msgid "The log file does not exist." +msgstr "Lokitiedostoa ei löydy." + +#: inc/classes/logger/class-logger.php:259 +#: inc/classes/logger/class-logger.php:291 +msgid "The log file could not be read." +msgstr "Lokitiedostoa ei pystytty lukemaan." + +#: inc/classes/logger/class-logger.php:278 +msgid "The logs are not saved into a file." +msgstr "Lokeja ei talleneta tiedostoon." + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:88 +#: inc/classes/optimization/CSS/class-critical-css-generation.php:99 +#: inc/classes/optimization/CSS/class-critical-css-generation.php:110 +#: inc/classes/optimization/CSS/class-critical-css-generation.php:120 +#: inc/classes/optimization/CSS/class-critical-css-generation.php:142 +#, php-format +msgid "Critical CSS for %1$s not generated. Error: %2$s" +msgstr "Kriittinen CSS sivulle %1$s ei generoitunut. Virhe: %2$s" + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:99 +msgid "The API returned an invalid response code." +msgstr "API palautti virheellisen vastauskoodin." + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:110 +msgid "The API returned an empty response." +msgstr "Api palautti tyhjän vastauksen." + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:145 +#, php-format +msgid "The critical CSS content could not be saved as a file in %s." +msgstr "Kriittistä CSS-sisältöä ei voitu tallentaa tiedostoksi kohteessa %s." + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:154 +#, php-format +msgid "Critical CSS for %s generated." +msgstr "Kriittinen CSS sivulle %s generoitu." + +#: inc/classes/preload/class-homepage.php:83 +#, php-format +msgid "" +"Preload encountered an error. Could not gather links on %1$s because of the " +"following error: %2$s. %3$sLearn more%4$s." +msgstr "" +"Esilatauksessa tapahtui virhe. Linkkejä ei voitu kerätä sivulta %1$s " +"seuraavan virheen takia: %2$s. %3$sLue lisää%4$s." + +#: inc/classes/preload/class-homepage.php:96 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: %2$s. Security measures could be preventing access. " +"%3$sLearn more%4$s." +msgstr "" +"Esilatauksessa tapahtui virhe. Sivu %1$s ei ole saatavilla ja se palautti " +"seuraavan virhekoodin: %2$s. Turvallisuusasetukset saattavat estää pääsyn " +"sivulle. %3$sLue lisää%4$s." + +#: inc/classes/preload/class-homepage.php:102 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: 404. Please make sure your homepage is accessible in your " +"browser. %2$sLearn more%3$s." +msgstr "" +"Esilatauksessa tapahtui virhe. Sivu %1$s ei ole saatavilla ja se palautti " +"virhekoodin 404 . Varmista että etusivusi on avattavissa selaimessasi. " +"%2$sLue lisää%3$s." + +#: inc/classes/preload/class-homepage.php:108 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: 500. Please check with your web host about server access. " +"%2$sLearn more%3$s." +msgstr "" +"Esilatauksessa tapahtui virhe. Sivu %1$s ei ole saatavilla ja se palautti " +"virhekoodin 500 . Tarkista palvelimesi asetukset. %2$sLue lisää%3$s." + +#: inc/classes/preload/class-homepage.php:114 +#, php-format +msgid "" +"Preload encountered an error. Could not gather links on %1$s because it " +"returned the following response code: %2$s. %3$sLearn more%4$s." +msgstr "" +"Esilatauksessa tapahtui virhe. Linkkejä ei voitu kerätä sivulta %1$s koska " +"se palautti virheen: %2$s. %3$sLue lisää%4$s." + +#: inc/classes/preload/class-sitemap.php:138 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not gather links on %1$s because" +" of the following error: %2$s. %3$sLearn more%4$s." +msgstr "" +"Sivukartan esilatauksessa tapahtui virhe. Linkkejä ei voitu kerätä sivulta " +"%1$s seuraavan virheen takia: %2$s. %3$sLue lisää%4$s." + +#: inc/classes/preload/class-sitemap.php:153 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: %2$s. Security measures could be preventing access." +" %3$sLearn more%4$s." +msgstr "" +"Sivukartan esilatauksessa tapahtui virhe. Sivu %1$s ei ole saatavilla ja se " +"palautti seuraavan virhekoodin: %2$s. Turvallisuusasetukset saattavat estää " +"pääsyn sivulle. %3$sLue lisää%4$s." + +#: inc/classes/preload/class-sitemap.php:158 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: 404. Please make sure you entered the correct " +"sitemap URL and it is accessible in your browser. %2$sLearn more%3$s." +msgstr "" +"Sivukartan esilatauksessa tapahtui virhe. Sivu %1$s ei ole saatavilla ja se " +"palautti virhekoodin 404 . Varmista että etusivusi on avattavissa " +"selaimessasi. %2$sLue lisää%3$s." + +#: inc/classes/preload/class-sitemap.php:163 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: 500. Please check with your web host about server " +"access. %2$sLearn more%3$s." +msgstr "" +"Sivukartan esilatauksessa tapahtui virhe. Sivu %1$s ei ole saatavilla ja se " +"palautti virhekoodin 500 . Tarkista palvelimesi asetukset. %2$sLue " +"lisää%3$s." + +#: inc/classes/preload/class-sitemap.php:168 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not gather links on %1$s because" +" it returned the following response code: %2$s. %3$sLearn more%4$s." +msgstr "" +"Sivukartan esilatauksessa tapahtui virhe. Linkkejä ei voitu kerätä sivulta " +"%1$s koska se palautti virheen: %2$s. %3$sLue lisää%4$s." + +#: inc/classes/preload/class-sitemap.php:184 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not collect links from %1$s " +"because the file is empty. %2$sLearn more%3$s." +msgstr "" +"Sivukartan esilatauksessa tapahtui virhe. Linkkejä ei voitu kerätä sivulta " +"%1$s koska tiedosto vaikuttaisi olevan tyhjä. %2$sLue lisää%3$s." + +#: inc/classes/preload/class-sitemap.php:205 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not collect links from %1$s " +"because of an error during the XML sitemap parsing. %2$sLearn more%3$s." +msgstr "" +"Sivukartan esilatauksessa tapahtui virhe. Linkkejä ei voitu kerätä sivulta " +"%1$s koska XML-sivukartan koostamisessa tapahtui virhe. %2$sLue lisää%3$s." + +#: inc/classes/subscriber/Optimization/class-critical-css-subscriber.php:138 +#, php-format +msgid "" +"Critical CSS generation is currently running: %1$d of %2$d page types " +"completed. (Refresh this page to view progress)" +msgstr "" +"Kriittisen CSS:n generointi on parhaillaan käynnissä: %1$d / %2$d " +"sivutyypistä on valmis. (Päivitä tämä sivu nähdäksesi etenemisen)" + +#: inc/classes/subscriber/Optimization/class-critical-css-subscriber.php:189 +#, php-format +msgid "Critical CSS generation finished for %1$d of %2$d page types." +msgstr "Kriittisen CSS:n generointi valmistunut %1$d / %2$d sivutyypille." + +#: inc/classes/subscriber/Optimization/class-critical-css-subscriber.php:203 +msgid "Critical CSS generation encountered one or more errors." +msgstr "Kriittisen CSS:n generoinnissa tapahtui virhe." + +#: inc/classes/subscriber/Optimization/class-critical-css-subscriber.php:203 +msgid "Learn more." +msgstr "Lue lisää." + +#: inc/classes/subscriber/Tools/class-cache-dir-size-check-subscriber.php:51 +#: inc/classes/subscriber/class-facebook-tracking-cache-busting-subscriber.php:97 +#: inc/classes/subscriber/class-google-tracking-cache-busting-subscriber.php:154 +#: inc/common/cron.php:33 +msgid "weekly" +msgstr "viikottain" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:148 +msgid "Database optimization process is running" +msgstr "Tietokannan optimointi on parhaillaan käynnissä" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:179 +msgid "" +"Database optimization process is complete. Everything was already optimized!" +msgstr "Tietokannan optimointi on valmis. Kaikki oli jo optimoitu!" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:182 +msgid "" +"Database optimization process is complete. List of optimized items below:" +msgstr "Tietokannan optimointi on valmis. Alla lista optimoiduista kohteista:" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:190 +#, php-format +msgid "%1$d %2$s optimized." +msgstr "%1$d %2$s optimoitu" + +#: inc/classes/subscriber/admin/Settings/class-page-subscriber.php:137 +#: inc/deprecated/deprecated.php:1788 +#: views/settings/page-sections/tools.php:33 +msgid "Tools" +msgstr "Työkalut" + +#: inc/classes/subscriber/admin/Settings/class-page-subscriber.php:138 +msgid "Import, Export, Rollback" +msgstr "Tuo, vie ja palauta" + +#: inc/classes/subscriber/admin/Settings/class-page-subscriber.php:160 +#: views/settings/page-sections/imagify.php:13 +msgid "Image Optimization" +msgstr "Kuvien optimointi" + +#: inc/classes/subscriber/admin/Settings/class-page-subscriber.php:161 +msgid "Compress your images" +msgstr "Pakkaa kuvat" + +#: inc/classes/subscriber/preload/class-preload-subscriber.php:212 +#, php-format +msgid "" +"Preload: WP Rocket has started preloading your website. Go to the %1$sWP " +"Rocket settings%2$s page to track progress." +msgstr "" +"Esilataus: WP Rocket on aloittanut sivustosi välimuistin esilatauksen. " +"Siirry %1$sWP Rocket -asetuksiin%2$s nähdäksesi etenemisen." + +#: inc/classes/subscriber/preload/class-preload-subscriber.php:246 +#, php-format +msgid "" +"Preload: %1$s uncached page has now been preloaded. (refresh to see " +"progress)" +msgid_plural "" +"Preload: %1$s uncached pages have now been preloaded. (refresh to see " +"progress)" +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/subscriber/preload/class-preload-subscriber.php:255 +msgid "The following error happened during gathering of the URLs to preload:" +msgid_plural "" +"The following errors happened during gathering of the URLs to preload:" +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/subscriber/preload/class-preload-subscriber.php:308 +#, php-format +msgid "Preload complete: %d pages have been cached." +msgstr "" + +#: inc/classes/subscriber/preload/class-sitemap-preload-subscriber.php:117 +#, php-format +msgid "" +"%1$sSimpleXML PHP extension%2$s is not enabled on your server. Please " +"contact your host to enable it before running sitemap-based cache " +"preloading." +msgstr "" +"%1$sSimpleXML PHP -lisäosa %2$s ei ole aktivoituna palvelimellasi. Ole hyvä " +"ja pyydä ylläpitäjääsi aktivoimaan se ennen kuin yrität ajaa sivukarttaan " +"pohjautuvaa välimuistin esilatausta." + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:72 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"Please deactivate the following %s option which conflicts with WP Rocket " +"features:" +msgid_plural "" +"Please deactivate the following %s options which conflict with WP Rocket " +"features:" +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:145 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sdisable emoji%3$s conflicts with WP Rockets %2$sdisable emoji%3$s" +msgstr "" +"%1$s %2$s poista emoji%3$s on ristiriidassa WP Rocketin %2$spoista emoji%3$s" +" kanssa" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:167 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sremove query strings%3$s conflicts with WP Rocket %2$sremove query " +"strings%3$s" +msgstr "" +"%1$s %2$spoista muuttujat%3$s on ristiriidassa WP Rocketin %2$spoista " +"muutujat%3$s kanssa" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:203 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sGZIP compression%3$s conflicts with WP Rocket %2$sGZIP " +"compression%3$s" +msgstr "" +"%1$s %2$sGZIP-pakkaus%3$s on ristiriidassa WP Rocketin %2$sGZIP-" +"pakkauksen%3$s kanssa" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:239 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sbrowser caching%3$s conflicts with WP Rocket %2$sbrowser " +"caching%3$s" +msgstr "" +"%1$s %2$sselaimen välimuisti%3$s on ristiriidassa WP Rocketin %2$sselaimen " +"välimuistin%3$s kanssa" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:271 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$spage caching%3$s conflicts with WP Rocket %2$spage caching%3$s" +msgstr "" +"%1$s %2$ssivujen välimuisti%3$s on ristiriidassa WP Rocketin %2$ssivujen " +"välimuistin%3$s kanssa" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:305 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sasset optimization%3$s conflicts with WP Rocket %2$sfile " +"optimization%3$s" +msgstr "" +"%1$s %2$sresurssien optimointi%3$s on ristiriidassa WP Rocketin " +"%2$sresurssien optimoinnin%3$s kanssa" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:123 +#, php-format +msgid "Sucuri cache purge error: %s" +msgstr "Sucurin välimuistin tyhjennysvirhe: %s" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:128 +msgid "" +"The Sucuri cache is being cleared. Note that it may take up to two minutes " +"for it to be fully flushed." +msgstr "" +"Sucurin välimuistia tyhjennetään. Huomioi, että operaatio voi kestää pari " +"minuuttia." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:242 +msgid "Sucuri firewall API key was not found." +msgstr "Sucurin palomuurin API-avainta ei löytynyt." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:251 +msgid "Sucuri firewall API key is invalid." +msgstr "Sucurin palomuurin API-avain on virheellinen." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:303 +msgid "Error when contacting Sucuri firewall API." +msgstr "Virhe yhteydessä Sucurin palomuurin rajapintaan." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:313 +#, php-format +msgid "Error when contacting Sucuri firewall API. Error message was: %s" +msgstr "" +"Tapahtui virhe otettaessa yhteyttä Sucurin palomuurin rajapintaan. " +"Virheilmoitus oli: %s" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:324 +msgid "Could not get a response from the Sucuri firewall API." +msgstr "Sucurin palomuurin rajapinnalta ei saatu vastausta." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:335 +msgid "Got an invalid response from the Sucuri firewall API." +msgstr "Sucurin palomuurin rajapinta palautti virheellisen vastauksen." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:345 +msgid "The Sucuri firewall API returned an unknown error." +msgstr "Sucurin palomuurin rajapinta palautti tuntemattoman virheen." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:348 +#, php-format +msgid "The Sucuri firewall API returned the following error: %s" +msgid_plural "The Sucuri firewall API returned the following errors: %s" +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/traits/trait-updater-api-tools.php:53 +#: inc/deprecated/3.3.php:760 inc/deprecated/3.3.php:769 +#, php-format +msgid "" +"An unexpected error occurred. Something may be wrong with WP-Rocket.me or " +"this server’s configuration. If you continue to have problems, contact support." +msgstr "" +"Odottamaton virhe. Vika voi olla joko WP-Rocket.me:n päässä tai tämän " +"palvelimen asetuksissa. Jos ongelmat jatkuvat, ota yhteys " +"tukeen." + +#: inc/common/admin-bar.php:106 inc/common/admin-bar.php:260 +#: inc/functions/i18n.php:39 inc/functions/i18n.php:48 +msgid "All languages" +msgstr "Kaikki kielet" + +#: inc/common/admin-bar.php:133 +msgid "Clear this post" +msgstr "Tyhjennä tämä sivu" + +#: inc/common/admin-bar.php:147 +msgid "Purge this URL" +msgstr "Tyhjennä tämä osoite" + +#: inc/common/admin-bar.php:163 +msgid "Purge OPcache" +msgstr "Tyhjennä OPcache" + +#: inc/common/admin-bar.php:180 +msgid "Regenerate Critical Path CSS" +msgstr "Uudellenluo kriittinen CSS" + +#: inc/common/admin-bar.php:196 +msgid "Clear Cloudflare cache" +msgstr "Tyhjennä Cloudflaren välimuisti" + +#: inc/common/admin-bar.php:217 inc/common/admin-bar.php:272 +#: views/settings/page-sections/dashboard.php:135 +msgid "Preload cache" +msgstr "Esilataa välimuisti" + +#: inc/common/admin-bar.php:287 views/settings/partials/documentation.php:13 +msgid "Documentation" +msgstr "Dokumentaatio" + +#: inc/common/cron.php:24 +#, php-format +msgid "%s clear" +msgstr "%s tyhjennä" + +#: inc/common/cron.php:39 +msgid "monthly" +msgstr "kuukausittain" + +#: inc/common/purge.php:456 +#, php-format +msgid "Cloudflare cache purge error: %s" +msgstr "Cloudflaren välimuistin tyhjennyksen virhe: %s" + +#: inc/common/purge.php:461 +msgid "Cloudflare cache successfully purged" +msgstr "Cloudflaren välimuisti tyhjennetty" + +#: inc/deprecated/3.2.php:51 views/settings/page-sections/imagify.php:35 +msgid "Activate Imagify" +msgstr "Aktivoi Imagify" + +#: inc/deprecated/3.2.php:51 +msgid "Install Imagify for Free" +msgstr "Asenna ilmainen Imagify" + +#: inc/deprecated/3.2.php:66 +msgid "" +"Speed up your website and boost your SEO by reducing image file sizes " +"without losing quality with Imagify." +msgstr "" +"Nopeuta sivustoasi ja paranna SEO-tuloksiasi pienemtämällä kuviesi kokoa " +"tinkimättä laadusta Imagifyn avulla." + +#: inc/deprecated/3.2.php:71 +msgid "More details" +msgstr "Lisätietoja" + +#: inc/deprecated/3.2.php:227 +#, php-format +msgid "Sitemap preload: %d pages have been cached." +msgstr "Sivukartan esilataus: %d sivua on välimuistissa." + +#: inc/deprecated/3.2.php:260 +#, php-format +msgid "" +"Sitemap preload: %d uncached pages have now been preloaded. (refresh to see " +"progress)" +msgstr "" +"Sivukartan esilataus: %d sivua on nyt esiladattu. (päivitä sivua nähdäksesi " +"etenemisen)" + +#: inc/deprecated/deprecated.php:242 +msgid "JS files with Deferred Loading JavaScript" +msgstr "JS -tiedostot jotka on puskuroitu" + +#: inc/deprecated/deprecated.php:295 +msgid "Add URL" +msgstr "Lisää osoite" + +#: inc/deprecated/deprecated.php:1279 views/settings/fields/import-form.php:22 +msgid "" +"Before you can upload your import file, you will need to fix the following " +"error:" +msgstr "" +"Ennen kuin voit tallentaa tuontitiedoston, sinun pitää korjata seuraavat " +"virheet:" + +#: inc/deprecated/deprecated.php:1290 views/settings/fields/import-form.php:35 +#, php-format +msgid "Choose a file from your computer (maximum size: %s)" +msgstr "Valitse tiedosto koneeltasi (maksimi tiedostokoko: %s)" + +#: inc/deprecated/deprecated.php:1387 +msgid "Your Cloudflare credentials are valid." +msgstr "Cloudflare -tunnuksesi ovat oikein." + +#: inc/deprecated/deprecated.php:1391 +msgid "Your Cloudflare credentials are invalid!" +msgstr "Cloudflare -tunnuksesi ovat virheelliset!" + +#: inc/deprecated/deprecated.php:1455 +msgid "Save and optimize" +msgstr "Tallenna ja optimoi" + +#: inc/deprecated/deprecated.php:1455 +#: views/settings/page-sections/database.php:27 +msgid "Optimize" +msgstr "Optimoi" + +#: inc/deprecated/deprecated.php:1466 inc/deprecated/deprecated.php:1668 +msgctxt "screen-reader-text" +msgid "Note:" +msgstr "Huom:" + +#: inc/deprecated/deprecated.php:1472 +msgctxt "screen-reader-text" +msgid "Performance tip:" +msgstr "Suorituskykyvinkki:" + +#: inc/deprecated/deprecated.php:1478 +msgctxt "screen-reader-text" +msgid "Third-party feature detected:" +msgstr "Ulkopuolinen ominaisuus havaittu:" + +#: inc/deprecated/deprecated.php:1490 inc/deprecated/deprecated.php:1674 +msgctxt "screen-reader-text" +msgid "Warning:" +msgstr "Varoitus:" + +#: inc/deprecated/deprecated.php:1503 +msgctxt "button text" +msgid "Download settings" +msgstr "Latausasetukset" + +#: inc/deprecated/deprecated.php:1533 +msgid "Replace site's hostname with:" +msgstr "Korvaa sivuston osoite:" + +#: inc/deprecated/deprecated.php:1552 inc/deprecated/deprecated.php:1589 +#: inc/deprecated/deprecated.php:1617 views/settings/fields/cnames.php:32 +#: views/settings/fields/cnames.php:63 views/settings/fields/cnames.php:93 +msgid "reserved for" +msgstr "varattu" + +#: inc/deprecated/deprecated.php:1554 inc/deprecated/deprecated.php:1591 +#: inc/deprecated/deprecated.php:1619 views/settings/fields/cnames.php:35 +#: views/settings/fields/cnames.php:66 views/settings/fields/cnames.php:96 +msgid "All files" +msgstr "Kaikki tiedostot" + +#: inc/deprecated/deprecated.php:1566 inc/deprecated/deprecated.php:1596 +#: inc/deprecated/deprecated.php:1624 views/settings/fields/cnames.php:47 +#: views/settings/fields/cnames.php:78 views/settings/fields/cnames.php:108 +msgid "Images" +msgstr "Kuvat" + +#: inc/deprecated/deprecated.php:1637 views/settings/fields/cnames.php:119 +msgid "Add CNAME" +msgstr "Lisää CNAME" + +#: inc/deprecated/deprecated.php:1708 +msgid "Watch the video" +msgstr "Katso video" + +#: inc/deprecated/deprecated.php:1773 +msgid "Basic" +msgstr "Perus" + +#: inc/deprecated/deprecated.php:1774 +msgid "Static Files" +msgstr "Staattiset tiedostot" + +#: inc/deprecated/deprecated.php:1776 +msgid "Advanced" +msgstr "Edistynyt" + +#: inc/deprecated/deprecated.php:1946 +#, php-format +msgid "" +"%1$s %2$s requires at least PHP %3$s to function properly. To use this " +"version, please ask your web host how to upgrade your server to PHP %3$s or " +"higher. If you are not able to upgrade, you can rollback to the previous " +"version by using the button below." +msgstr "" +"%1$s%2$s tarvitsee vähintään PHP:n version %3$s toimiakseen. Käyttääksesi " +"tätä versiota, pyydä palvelimesi ylläpitäjältä ohjeita kuinka saat " +"päivitettyä PHP:n vähintään versioon %3$s. Jos et pysty päivittämään PHP:ta," +" voit palata edelliseen versioon alla olevalla painikkeella." + +#: inc/functions/admin.php:23 +msgid "" +"There seems to be an issue validating your license. Please see the error " +"message below." +msgid_plural "" +"There seems to be an issue validating your license. You can see the error " +"messages below." +msgstr[0] "" +msgstr[1] "" + +#: inc/functions/admin.php:361 +msgid "Server type:" +msgstr "Palvelimen tyyppi:" + +#: inc/functions/admin.php:370 +msgid "PHP version number:" +msgstr "PHP:n versio:" + +#: inc/functions/admin.php:379 +msgid "WordPress version number:" +msgstr "WordPress:in versio:" + +#: inc/functions/admin.php:388 +msgid "WordPress multisite:" +msgstr "WordPress multisite:" + +#: inc/functions/admin.php:397 +msgid "Current theme:" +msgstr "Nykyinen teema:" + +#: inc/functions/admin.php:406 +msgid "Current site language:" +msgstr "Sivuston nykyinen kieli:" + +#: inc/functions/admin.php:415 +msgid "Active plugins:" +msgstr "Aktiiviset lisäosat:" + +#: inc/functions/admin.php:418 +msgid "Plugin names of all active plugins" +msgstr "Aktiivisten lisäosien nimet" + +#: inc/functions/admin.php:424 +msgid "Anonymized WP Rocket settings:" +msgstr "Anonymisoidut WP Rocket -asetukset:" + +#: inc/functions/admin.php:427 +msgid "Which WP Rocket settings are active" +msgstr "Mitkä WP Rocket:in asetukset on aktivoitu" + +#: inc/functions/cloudflare.php:14 +msgid "" +"Curl functions are disabled, they are required for the Cloudflare Add-on to " +"work correctly." +msgstr "" + +#: inc/functions/cloudflare.php:21 +msgid "Cloudflare Email and API key are not set" +msgstr "Cloudflaren sähköposti ja API-avain on asettamatta" + +#: inc/functions/cloudflare.php:52 +#, php-format +msgid "Missing Cloudflare zone ID. %s could not fix this automatically." +msgstr "" +"Cloudflaren zone ID puuttuu. %s ongelmaa ei pystytty korjaamaan " +"automaattisesti." + +#: inc/functions/cloudflare.php:58 +#, php-format +msgid "Read the %1$sdocumentation%2$s for further guidance." +msgstr "Lue %1$sdokumentaatio%2$s saadaksesi lisätietoja." + +#: inc/functions/cloudflare.php:60 +msgid "" +"https://docs.wp-rocket.me/article/18-using-wp-rocket-with-" +"cloudflare/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://docs.wp-rocket.me/article/18-using-wp-rocket-with-" +"cloudflare/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: inc/functions/cloudflare.php:100 +msgid "Connection to Cloudflare failed" +msgstr "Yhteys Cloudflareen epäonnistui" + +#: inc/functions/cloudflare.php:122 +msgid "Choose a domain from the list" +msgstr "Valitse verkkotunnus listalta" + +#: inc/functions/cloudflare.php:135 +msgid "No domain available in your Cloudflare account" +msgstr "Cloudflare -tililtäsi ei löytynyt yhtään verkkotunnusta" + +#: inc/functions/options.php:580 inc/functions/options.php:619 +msgid "" +"License validation failed. Our server could not resolve the request from " +"your website." +msgstr "" +"Lisenssin varmennus epäonnistui. Palvelimemme ei pystynyt käsittelemään " +"pyyntöäsi." + +#: inc/functions/options.php:580 inc/functions/options.php:619 +#, php-format +msgid "" +"Try clicking %1$sSave Changes%2$s below. If the error persists, follow " +"%3$sthis guide%4$s." +msgstr "" +"Yritä klikata %1$sTallenna muutokset%2$s -painiketta. Jos virhe toistuu, " +"seuraa %3$stätä ohjetta%4$s." + +#: inc/functions/options.php:596 +msgid "" +"License validation failed. You may be using a nulled version of the plugin. " +"Please do the following:" +msgstr "" +"Lisenssin varmennus epäonnistui. Syynä voi olla, että käytät epäkelpoa " +"versiota lisäosasta. Ole hyvä ja toimi seuraavasti:" + +#: inc/functions/options.php:596 inc/functions/options.php:638 +#, php-format +msgid "Login to your WP Rocket %1$saccount%2$s" +msgstr "Kirjaudu WP Rocket %1$s-tilillesi%2$s" + +#: inc/functions/options.php:596 inc/functions/options.php:638 +msgid "Download the zip file" +msgstr "Lataa zip-paketti" + +#: inc/functions/options.php:596 inc/functions/options.php:638 +msgid "Reinstall" +msgstr "Asenna uudelleen" + +#: inc/functions/options.php:596 +#, php-format +msgid "" +"If you do not have a WP Rocket account, please %1$spurchase a license%2$s." +msgstr "" +"Jos sinulla ei ole WP Rocket -tiliä, ole hyvä ja %1$sosta lisenssi%2$s." + +#: inc/functions/options.php:604 +msgid "" +"License validation failed. This user account does not exist in our database." +msgstr "" +"Lisenssin varmennus epäonnistui. Tätä käyttäjää ei löydy tietokannastamme." + +#: inc/functions/options.php:604 +msgid "To resolve, please contact support." +msgstr "Ratkaistaksesi ongelma, ota yhteys tukeemme." + +#: inc/functions/options.php:612 +msgid "License validation failed. This user account is blacklisted." +msgstr "Lisenssin varmennus epäonnistui. Tämä käyttäjätili on bannattu." + +#: inc/functions/options.php:612 +#, php-format +msgid "Please see %1$sthis guide%2$s for more info." +msgstr "Ole hyvä ja katso %1$stästä oppaasta%2$s lisätietoja." + +#: inc/functions/options.php:632 +msgid "Your license is not valid." +msgstr "Lisenssi ei ole validi." + +#: inc/functions/options.php:632 +#, php-format +msgid "Make sure you have an active %1$sWP Rocket license%2$s." +msgstr "" +"Ole hyvä ja varmista, että sinulla on aktiivinen %1$sWP Rocket " +"-lisenssi%2$s." + +#: inc/functions/options.php:634 +msgid "You have added as many sites as your current license allows." +msgstr "Olet lisännyt maksimimäärän sivuja jonka lisenssisi sallii." + +#: inc/functions/options.php:634 +#, php-format +msgid "" +"Upgrade your %1$saccount%2$s or %3$stransfer your license%2$s to this " +"domain." +msgstr "" +"Päivitä %1$stilisi%2$s tai %3$ssiirrä%2$s lisenssisi tälle " +"verkkotunnukselle." + +#: inc/functions/options.php:636 +msgid "This website is not allowed." +msgstr "Tämä verkkosivusto ei ole sallittu." + +#: inc/functions/options.php:636 +#, php-format +msgid "Please %1$scontact support%2$s." +msgstr "Ole hyvä ja %1$sota yhteys tukeen%2$s." + +#: inc/functions/options.php:638 +msgid "This license key is not recognized." +msgstr "Lisenssiavainta ei tunnistettu." + +#: inc/functions/options.php:638 +#, php-format +msgid "If the issue persists, please %1$scontact support%2$s." +msgstr "Jos ongelma jatkuu, ole hyvä ja %1$sota yhteys tukeen%2$s." + +#: inc/functions/options.php:644 +#, php-format +msgid "License validation failed: %s" +msgstr "Lisenssin varmennus epäonnistui: %s" + +#: inc/vendors/classes/class-imagify-partner.php:531 +msgid "Plugin installed successfully." +msgstr "Lisäosa asennettu." + +#: inc/vendors/classes/class-imagify-partner.php:532 +msgid "Sorry, you are not allowed to install plugins on this site." +msgstr "" +"Pahoittelut, sinulla ei ole oikeuksia asentaa lisäosia tälle sivustolle." + +#: inc/vendors/classes/class-imagify-partner.php:533 +msgid "Sorry, you are not allowed to do that." +msgstr "Pahoittelut, sinulla ei ole oikeuksia tehdä tätä." + +#: inc/vendors/classes/class-imagify-partner.php:534 +msgid "Plugin install failed." +msgstr "Lisäosan asennus epäonnistui." + +#: inc/vendors/classes/class-imagify-partner.php:535 +msgid "Go back" +msgstr "Mene takaisin" + +#: views/deactivation-intent/form.php:20 +msgid "Return" +msgstr "Palaa" + +#: views/deactivation-intent/form.php:21 +msgid "WP Rocket feedback" +msgstr "WP Rocket -palaute" + +#: views/deactivation-intent/form.php:23 +msgid "Close" +msgstr "Sulje" + +#: views/deactivation-intent/form.php:27 +msgid "May we have a little info about why you are deactivating?" +msgstr "Voisimmeko saada lisätietoja miksi haluat poistaa lisäosan käytöstä?" + +#: views/deactivation-intent/form.php:31 +msgid "" +"It is a temporary deactivation. I am just debugging an " +"issue." +msgstr "" +"Välikaikainen deaktivointi. Koitan vain ratkaista ongelmaa." + +#: views/deactivation-intent/form.php:35 +msgid "The plugin broke my layout or some functionality." +msgstr "Lisäosa rikkoi ulkoasuni tai osan toiminnoista." + +#: views/deactivation-intent/form.php:39 +msgid "My PageSpeed or GTMetrix score did not improve." +msgstr "" +"Sivustoni PageSpeed tai GTMetrix -arvosanat eivät " +"parantuneet." + +#: views/deactivation-intent/form.php:43 +msgid "I did not notice a difference in loading time." +msgstr "En huomannut mitään eroa latausajoissa." + +#: views/deactivation-intent/form.php:47 +msgid "The plugin is too complicated to configure." +msgstr "Lisäosa on liian monimutkainen konfiguroida." + +#: views/deactivation-intent/form.php:51 +msgid "My host already has its own caching system." +msgstr "Web-hostaajallani on jo käytössä välimuistiohjelmisto." + +#: views/deactivation-intent/form.php:53 +msgid "What is the name of your web host?" +msgstr "Minkä niminen web-hostaajasi on?" + +#: views/deactivation-intent/form.php:58 +msgid "Other" +msgstr "Muu" + +#: views/deactivation-intent/form.php:60 +msgid "" +"Let us know why you are deactivating WP Rocket so we can improve the plugin" +msgstr "" +"Kerro meille miksi haluat deaktivoida WP Rocket:in, jotta osaamme parantaa " +"sitä jatkossa" + +#: views/deactivation-intent/form.php:68 +msgid "The plugin broke my layout or some functionality" +msgstr "Lisäosa rikkoi ulkoasun tai osan toiminnoista" + +#: views/deactivation-intent/form.php:69 +msgid "" +"This type of issue can usually be fixed by deactivating some options in WP " +"Rocket." +msgstr "" +"Tämänkaltaiset ongelmat voidaan yleensä ratkaista poistamalla käytöstä " +"joitakin WP Rocket:in toimintoja." + +#: views/deactivation-intent/form.php:70 +msgid "" +"Click \"Apply Safe Mode\" to quickly disable LazyLoad, File Optimization, " +"Embeds and CDN options. Then check your site to see if the issue has " +"resolved." +msgstr "" +"Klikka \"aktivoi turvallinen tila\" kytkeäksesi nopeasti pois päältä " +"LadyZoad:in, tiedostojen optimoinnin, sisällytykset ja CDN-asetukset. Katso " +"sitten ratkesiko ongelmasi." + +#: views/deactivation-intent/form.php:72 +msgid "Apply safe mode" +msgstr "Aktivoi turvallinen tila" + +#: views/deactivation-intent/form.php:75 +msgid "Safe mode applied." +msgstr "Turvallinen tila aktivoitu." + +#: views/deactivation-intent/form.php:76 +msgid "Review your site in a private/logged out browser window." +msgstr "Tarkista sivustosi yksityisessä selainikkunassa." + +#: views/deactivation-intent/form.php:78 +msgid "" +"Is the issue fixed? Now you can reactivate options one at a time to " +"determine which one caused the problem. More info" +msgstr "" +"Korjaantuiko ongelma? Voit nyt mennä ja ottaa käyttöön asetuksia yksi " +"kerrallaan löytääksesi mikä asetus aiheutti ongelman. Lisätietoja" + +#: views/deactivation-intent/form.php:81 +msgid "My PageSpeed or GT Metrix score did not improve" +msgstr "Sivustoni PageSpeed tai GTMetrix -arvosanat eivät parantuneet." + +#: views/deactivation-intent/form.php:82 +msgid "" +"WP Rocket makes your site faster. The PageSpeed grade or GTMetrix score are " +"not indicators of speed. Neither your real visitors, nor Google will ever " +"see your website’s “grade”. Speed is the only metric that matters for SEO " +"and conversions." +msgstr "" +"WP Rocket tekee sivuistasi nopeammat. PageSpeed -arvosana tai GTMetrix " +"-pisteet eivät mittaa sivusi nopeutta. Kukaan sivusi todellisista " +"kävijöistä, tai Googlen hakurobotti ei koskaan näe sivusi \"arvosanaa\". " +"Nopeus on ainoa mittari, jolla on merkitystä SEO-näkyvyydessä." + +#: views/deactivation-intent/form.php:83 +msgid "Yoast, the expert on all things related to SEO for WordPress states:" +msgstr "Yoast, kaikkeen SEO:on liittyvän ammattilainen, sanoo:" + +#: views/deactivation-intent/form.php:84 +msgid "" +"[Google] just looks at how fast your website loads for users, so you don’t " +"have to obsess over that specific score. You have to make sure your website " +"is as fast as you can get it." +msgstr "" +"[Google] katsoo ainoastaan kuinka noeasti sivustosi latautuu vierailijalle, " +"joten sinun ei tarvitse olla pakkomielteinen yksittäisen arvosanan vuoksi. " +"Sinun täytyy pitää ainoastaan huoli, että verkkosivusi on niin nopea kuin " +"mahdollista." + +#: views/deactivation-intent/form.php:87 +msgid "" +"How to measure the load time of your site:
      https" +"://wp-rocket.me/blog/correctly-measure-websites-page-load-time/" +msgstr "" +"Kuinka mitata sivustosi nopeus:
      https" +"://wp-rocket.me/blog/correctly-measure-websites-page-load-time/" + +#: views/deactivation-intent/form.php:88 +msgid "" +"Why you should not be chasing a PageSpeed score:
      https://wp-rocket.me/blog/the-truth-about-google-" +"pagespeed-insights/" +msgstr "" +"Miksi sinun ei tulisi jahdata PageSpeed -pisteitä:
      https://wp-rocket.me/blog/the-truth-about-google-" +"pagespeed-insights" + +#: views/deactivation-intent/form.php:91 +msgid "I did not notice a difference in loading time" +msgstr "En huomannut eroa latausajoissa" + +#: views/deactivation-intent/form.php:92 +msgid "" +"Make sure you look at your site while logged out to see the fast, cached " +"pages!" +msgstr "" +"Varmista, että testaat sivuasi ilman että olet kirjautunut sisään nähdäksesi" +" nopeat, välimuistiin lisätyt sivut!" + +#: views/deactivation-intent/form.php:93 +msgid "" +"The best way to see the improvement WP Rocket provides is to perform speed " +"tests. Follow this guide to correctly measure the load time of your " +"website:
      https://wp-rocket.me/blog/correctly-measure-websites-page-" +"load-time/" +msgstr "" +"Paras tapa nähdä WP Rocket:in tekemät parannukset on suorittaa " +"nopeustestejä. Seuraa tätä ohjetta mitataksesi sivustosi latausajan " +"oikein:
      https://wp-rocket.me/blog/correctly-measure-websites-page-" +"load-time/" + +#: views/deactivation-intent/form.php:96 +msgid "The plugin is too complicated to configure" +msgstr "Lisäosa on liian monimutkainen konfiguroida" + +#: views/deactivation-intent/form.php:97 +msgid "We are sorry to hear you are finding it difficult to use WP Rocket." +msgstr "Olemme pahoillamme että koet WP Rocket:in liian monimutkaiseksi." + +#: views/deactivation-intent/form.php:98 +#, php-format +msgid "" +"WP Rocket is the only caching plugin that provides 80% of best practices in " +"speed optimization, by default. That means you do not have to do anything " +"besides activate WP Rocket and your site will already be faster!" +msgstr "" +"WP Rocket on ainoa välimuisti-lisäosa, joka tarjoaa 80% mahdollisista " +"nopeutus-metodeista oletusasetuksilla. Tämä tarkoittaa sitä, että sinun ei " +"tarvitse käytännössä tehdä mitään muuta kuin aktivoida WP Rocket tehdäksesi " +"sivustasi nopeamman!" + +#: views/deactivation-intent/form.php:99 +msgid "" +"The additional options are not required for a fast site, they are for fine-" +"tuning." +msgstr "" +"Valinnaiset asetukset eivät ole pakollisia sivuston nopeuttamisen kannalta, " +"ne ovat hienosäätöä varten." + +#: views/deactivation-intent/form.php:100 +msgid "" +"To see the benefit WP Rocket is already providing, measure the speed of your" +" site using a tool like Pingdom:
      https" +"://wp-rocket.me/blog/correctly-measure-websites-page-load-time/" +msgstr "" +"Nähdäksesi WP Rocket:in tarjoamat edut, mittaa sivustosi nopeus sopivalla " +"työkalulla, kuten Pingdomilla:
      https" +"://wp-rocket.me/blog/correctly-measure-websites-page-load-time/" + +#: views/deactivation-intent/form.php:105 +msgid "Send & Deactivate" +msgstr "Lähetä & deaktivoi" + +#: views/deactivation-intent/form.php:106 +msgid "Cancel" +msgstr "Peruuta" + +#: views/deactivation-intent/form.php:108 +msgid "Skip & Deactivate" +msgstr "Ohita & deaktivoi" + +#: views/settings/fields/cache-lifespan.php:26 +msgid "Clear cache after" +msgstr "Tyhjennä välimuisti" + +#: views/settings/fields/cnames.php:49 views/settings/fields/cnames.php:80 +#: views/settings/fields/cnames.php:110 +msgid "CSS & JavaScript" +msgstr "CSS & JavaScript" + +#: views/settings/fields/cnames.php:50 views/settings/fields/cnames.php:81 +#: views/settings/fields/cnames.php:111 +msgid "JavaScript" +msgstr "JavaScript" + +#: views/settings/fields/cnames.php:51 views/settings/fields/cnames.php:82 +#: views/settings/fields/cnames.php:112 +msgid "CSS" +msgstr "CSS" + +#: views/settings/fields/import-form.php:29 +msgid "Import settings" +msgstr "Tuo asetukset" + +#: views/settings/fields/one-click-addon.php:39 +#: views/settings/fields/rocket-addon.php:31 +#: views/settings/fields/sliding-checkbox.php:24 views/settings/page.php:54 +msgctxt "Active state of checkbox" +msgid "On" +msgstr "Päällä" + +#: views/settings/fields/one-click-addon.php:40 +#: views/settings/fields/rocket-addon.php:32 +#: views/settings/fields/sliding-checkbox.php:25 views/settings/page.php:55 +msgctxt "Inactive state of checkbox" +msgid "Off" +msgstr "Pois" + +#: views/settings/fields/one-click-addon.php:41 +#: views/settings/fields/rocket-addon.php:33 +msgid "Add-on status" +msgstr "Lisäosan tila" + +#: views/settings/fields/rocket-addon.php:56 +msgid "Modify options" +msgstr "Muokkaa asetuksia" + +#: views/settings/page-sections/cloudflare.php:26 +msgid "Cloudflare Cache" +msgstr "Cloudflare -välimuisti" + +#: views/settings/page-sections/cloudflare.php:33 +#: views/settings/page-sections/sucuri.php:34 +#, php-format +msgid "Purges cached resources for your website. %s" +msgstr "Tyhjentää välimuistiin ladatut resurssit. %s" + +#: views/settings/page-sections/cloudflare.php:34 +msgid "https://support.cloudflare.com/hc/en-us/articles/200169246" +msgstr "https://support.cloudflare.com/hc/en-us/articles/200169246" + +#: views/settings/page-sections/cloudflare.php:34 +#: views/settings/page-sections/sucuri.php:35 +msgid "Learn more" +msgstr "Lue lisää" + +#: views/settings/page-sections/cloudflare.php:40 +msgid "Clear all Cloudflare cache files" +msgstr "Tyhjennä kaikki Cloudflaren välimuistin tiedostot" + +#: views/settings/page-sections/dashboard.php:37 +msgid "Congratulations!" +msgstr "Onnittelut!" + +#: views/settings/page-sections/dashboard.php:39 +msgid "WP Rocket is now activated and already working for you." +msgstr "WP Rocket on nyt aktivoitu ja käytössäsi." + +#: views/settings/page-sections/dashboard.php:41 +msgid "Your website should be loading faster now!" +msgstr "Sivustosi pitäisi latautua nyt nopeammin!" + +#: views/settings/page-sections/dashboard.php:43 +#, php-format +msgid "" +"To guarantee fast websites, WP Rocket applies 80% of web performance best " +"practices." +msgstr "" +"Taatakseen nopeat verkkosivut, WP Rocket käyttää automaattisesti 80% " +"parhaista suorituskykykäytännöistä." + +#: views/settings/page-sections/dashboard.php:43 +msgid "" +"We also enable options that provide immediate benefits to your website." +msgstr "" +"Tarjoamme myös lisäasetuksia, joilla saat välitöntä lisähyötyä sivustollesi." + +#: views/settings/page-sections/dashboard.php:44 +msgid "Continue to the options to further optimize your site!" +msgstr "Jatka asetuksiin optimoidaksesi sivuasi vielä enemmän!" + +#: views/settings/page-sections/dashboard.php:54 +msgid "My Account" +msgstr "Oma tili" + +#: views/settings/page-sections/dashboard.php:60 +msgid "Refresh info" +msgstr "Päivitä tiedot" + +#: views/settings/page-sections/dashboard.php:74 +msgid "Expiration Date" +msgstr "Päättymisaika" + +#: views/settings/page-sections/dashboard.php:83 +msgid "View my account" +msgstr "Näytä oma tilini" + +#: views/settings/page-sections/dashboard.php:103 +msgid "Quick Actions" +msgstr "Pikatoiminnot" + +#: views/settings/page-sections/dashboard.php:109 +msgid "Remove all cached files" +msgstr "Tyhjennä kaikki välimuistit" + +#: views/settings/page-sections/dashboard.php:129 +msgid "Start cache preloading" +msgstr "Aloita esilataus" + +#: views/settings/page-sections/dashboard.php:147 +msgid "Purge OPCache content" +msgstr "Tyhjennä OPCache:n sisältö" + +#: views/settings/page-sections/dashboard.php:153 +msgid "Purge OPCache" +msgstr "Tyhjennä OPcache" + +#: views/settings/page-sections/dashboard.php:164 +#: views/settings/page-sections/dashboard.php:170 +msgid "Regenerate Critical CSS" +msgstr "Luo uudelleen kriittinen CSS" + +#: views/settings/page-sections/dashboard.php:186 +msgid "Frequently Asked Questions" +msgstr "Usein Kysytyt Kysymykset" + +#: views/settings/page-sections/dashboard.php:199 +msgid "Still cannot find a solution?" +msgstr "Etkö löytänyt ratkaisua?" + +#: views/settings/page-sections/dashboard.php:200 +msgid "" +"Submit a ticket and get help from our friendly and knowledgeable Rocketeers." +msgstr "" +"Lähetä meille tukitiketti ja saa apua ystävälliseltä ja ammattitaitoiselta " +"Rakettiryhmältämme." + +#: views/settings/page-sections/dashboard.php:208 +msgid "Ask support" +msgstr "Pyydä tukea" + +#: views/settings/page-sections/database.php:24 +msgid "Backup your database before you run a cleanup!" +msgstr "Varmuuskopioi tietokantasi ennen kuin suoritat siivouksen!" + +#: views/settings/page-sections/database.php:25 +msgid "" +"Once a database optimization has been performed, there is no way to undo it." +msgstr "Kun tietokanta on optimoitu, toimintoa ei voi peruuttaa." + +#: views/settings/page-sections/imagify.php:20 +#, php-format +msgid "" +"%1$sWP ROCKET%2$s created %3$sIMAGIFY%4$s %1$sfor best-in-class image " +"optimization.%2$s" +msgstr "" +"%1$sWP ROCKET%2$s loi %3$sIMAGIFY:n%4$s%1$s tarjotakseen parasta kuvien " +"optimointia.%2$s" + +#: views/settings/page-sections/imagify.php:23 +msgid "" +"Compress image to make your website faster, all while maintaining image " +"quality." +msgstr "" +"Pakkaa kuvasi tehdäksesi sivustostasi nopeamman, kuitenkin säilyttäen hyvän " +"kuvanlaadun." + +#: views/settings/page-sections/imagify.php:24 +msgid "More on Imagify:" +msgstr "Lisätietoja Imagify:stä:" + +#: views/settings/page-sections/imagify.php:26 +msgid "Imagify Plugin Page" +msgstr "Imagify -lisäosan sivu" + +#: views/settings/page-sections/imagify.php:27 +msgid "Imagify Website" +msgstr "Imagify:n verkkosivu" + +#: views/settings/page-sections/imagify.php:28 +msgid "Review of Image Compression Plugins" +msgstr "Kuvanpakkauslisäosien arvostelu" + +#: views/settings/page-sections/imagify.php:37 +msgid "Install Imagify" +msgstr "Asenna Imagify" + +#: views/settings/page-sections/license.php:21 +msgid "WP Rocket was not able to automatically validate your license." +msgstr "WP Rocket ei pystynyt automaattisesti varmistamaan lisenssiäsi." + +#: views/settings/page-sections/license.php:26 +#, php-format +msgid "" +"Follow this tutorial, or contact support to get the engine started." +msgstr "" +"Seuraa tätä tutoriaalia, tai ota " +"yhteys tukeen saadaksesi moottorin " +"hyrräämään." + +#: views/settings/page-sections/license.php:26 +msgid "" +"https://docs.wp-rocket.me/article/100-resolving-problems-with-license-" +"validation/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://docs.wp-rocket.me/article/100-resolving-problems-with-license-" +"validation/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: views/settings/page-sections/sucuri.php:41 +msgid "Clear all Sucuri cache files" +msgstr "Tyhjennä Sucuri:n välimuisti" + +#: views/settings/page-sections/tools.php:20 +#, php-format +msgid "Files size: %1$s. Number of entries: %2$s." +msgstr "Tiedostokoko: %1$s. Tietueita yhteensä: %2$s.D" + +#: views/settings/page-sections/tools.php:23 +#, php-format +msgid "%1$sDownload the file%2$s." +msgstr "%1$sLadataan tiedostoa %2$s." + +#: views/settings/page-sections/tools.php:26 +#, php-format +msgid "%1$sDelete the file%2$s." +msgstr "%1$sPoista tiedosto%2$s." + +#: views/settings/page-sections/tools.php:37 +msgid "Export settings" +msgstr "Vie asetukset" + +#: views/settings/page-sections/tools.php:38 +msgid "Download a backup file of your settings" +msgstr "Lataa asetustesi varmuuskopio" + +#: views/settings/page-sections/tools.php:43 +msgid "Download settings" +msgstr "Latausasetukset" + +#: views/settings/page-sections/tools.php:56 +msgid "Rollback" +msgstr "Palauta" + +#: views/settings/page-sections/tools.php:60 +#, php-format +msgid "Has version %s caused an issue on your website?" +msgstr "Onko versio %s aiheuttanut ongelmia?" + +#: views/settings/page-sections/tools.php:62 +msgid "" +"You can rollback to the previous major version here.
      Then send us a " +"support request." +msgstr "" +"Voit palata takaisin edelliseen täysversioon täältä.
      Tämän jälkeen lähetä" +" meille tukipyyntö." + +#: views/settings/page-sections/tools.php:69 +#, php-format +msgid "Reinstall version %s" +msgstr "Asenna uudelleen versio %s" + +#: views/settings/page-sections/tools.php:85 +msgid "Debug mode" +msgstr "Vianetsintä-tila" + +#: views/settings/page-sections/tools.php:90 +msgid "Create a debug log file." +msgstr "Luo vianetsintä-loki." + +#: views/settings/page.php:16 +msgid "WP Rocket Settings" +msgstr "WP Rocket asetukset" + +#: views/settings/page.php:30 +#, php-format +msgid "version %s" +msgstr "versio %s" + +#: views/settings/page.php:40 +msgid "Save Changes" +msgstr "Tallenna muutokset" + +#: views/settings/page.php:56 +msgid "Show Sidebar" +msgstr "Näytä sivupalkki" + +#: views/settings/page.php:75 +msgid "Thanks for choosing to participate in the WP Rocket beta program!" +msgstr "Kiitos kun päätit osallistua WP Rocket Beta -testiohjelmaan!" + +#: views/settings/page.php:76 +msgid "" +"A beta version is usually one that has new features and improvements, but we" +" want to test it a little more before full launch." +msgstr "" +"Beta-versio on yleensä versio, jossa on uusia ominaisuuksia ja parannuksia, " +"mutta niitä halutaan testata ensin hieman ennen julkaisua." + +#: views/settings/page.php:77 +msgid "" +"We’d love it if you took our beta versions for a ride, but please keep in " +"mind that it might be less stable than our other releases. Don’t worry, you " +"can switch back to a full release version at any time." +msgstr "" +"On huippua, jos haluat testata beta-versioitamme. Muista kuitenkin, että " +"beta-versiot saattavat olla epävakaita, mutta älä huoli, voit palata koska " +"tahansa edelliseen versioon." + +#: views/settings/page.php:78 +msgid "" +"Your mission: please send all feedback about our beta versions, including " +"bug reports, to support@wp-rocket.me" +msgstr "" +"Tehtäväsi: lähetä meille palautetta beta-versioista bugiraporttien muodossa " +"osoitteeseen support@wp-rocket.me" + +#: views/settings/page.php:80 +msgid "If you don’t want to join the beta program, simply close this window." +msgstr "Jos et halua liittyä beta-ohjelmaan, voit sulkea tämän ikkunan." + +#: views/settings/page.php:82 +msgid "Activate Rocket Tester" +msgstr "Aktivoi Rocket Testaaja -tila" + +#: views/settings/page.php:93 +msgid "" +"Below is a detailed view of all data WP Rocket will collect if " +"granted permission." +msgstr "" +"Alla on yksityiskohtainen lista datasta jonka WP Rocket kerää jos " +"annat sille luvan tehdä niin." + +#: views/settings/page.php:96 +msgid "" +"WP Rocket will never transmit any domain names or email addresses (except " +"for license validation), IP addresses, or third-party API keys." +msgstr "" +"WP Rocket ei koskaan lähetä tietoja verkkotunnuksista, sähköposteista " +"(paitsi lisenssin varmistuksen yhteydessä), IP-osoitteista tai kolmannen " +"osapuolen API-avaimista." + +#: views/settings/page.php:98 +msgid "Activate Rocket analytics" +msgstr "Aktivoi Rocket -analytiikka" + +#: views/settings/partials/documentation.php:14 +msgid "It is a great starting point to fix some of the most common issues." +msgstr "Tämä on hyvä lähtökohta korjataksesi useimmat ongelmat." + +#: views/settings/partials/documentation.php:18 +msgid "Read the documentation" +msgstr "Lue dokumentaatio" + +#: views/settings/partials/sidebar.php:11 +msgid "How to correctly measure your website’s loading time" +msgstr "Kuinka mittaat sivustosi nopeuden oikeaoppisesti" + +#: views/settings/partials/sidebar.php:13 +msgid "" +"Learn how to use best practices to correctly measure your site's " +"performance." +msgstr "Lue kuinka mittaat sivustosi nopeuden oikein." + +#: views/settings/partials/sidebar.php:14 +msgid "" +"https://wp-rocket.me/blog/correctly-measure-websites-page-load-" +"time/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://wp-rocket.me/blog/correctly-measure-websites-page-load-" +"time/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: views/settings/partials/sidebar.php:14 +msgid "Read our guide" +msgstr "Lue ohjeemme" + +#: views/settings/partials/sidebar.php:17 +msgid "Why Google PageSpeed grade should not matter" +msgstr "Miksi Googlen PageSpeed -arvosanalla ei pitäisi olla merkitystä" + +#: views/settings/partials/sidebar.php:18 +msgid "" +"https://wp-rocket.me/blog/the-truth-about-google-pagespeed-" +"insights/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://wp-rocket.me/blog/the-truth-about-google-pagespeed-" +"insights/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: views/settings/partials/sidebar.php:18 +msgid "Read more" +msgstr "Lue lisää" + +#: views/settings/partials/sidebar.php:23 +msgid "You have not activated logged-in user cache." +msgstr "Et ole aktivoinut välimuistia kirjautuneille käyttäjille." + +#: views/settings/partials/sidebar.php:24 +msgid "" +"Use a private browser to check your website's speed and visual appearance." +msgstr "" +"Käytä yksityistä selainikkunaa tarkistaaksesi sivustosi nopeuden ja " +"visuaalisen ulkoasun." + +#: views/settings/sections/addons-container.php:23 +#: views/settings/sections/fields-container.php:27 +msgid "Need Help?" +msgstr "Tarvitseko apua?" diff --git a/wp-content/plugins/wp-rocket/languages/rocket-fr_CA.mo b/wp-content/plugins/wp-rocket/languages/rocket-fr_CA.mo new file mode 100644 index 0000000000000000000000000000000000000000..47a2b71c1f8409f959d5fb99191cbdd975e03faf GIT binary patch literal 102163 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�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 Xi}#Qgq*)Q&2B@xn`)cy02MGT+l$E4< literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-rocket/languages/rocket-fr_CA.po b/wp-content/plugins/wp-rocket/languages/rocket-fr_CA.po new file mode 100644 index 0000000..6636a1a --- /dev/null +++ b/wp-content/plugins/wp-rocket/languages/rocket-fr_CA.po @@ -0,0 +1,4137 @@ +# Copyright (C) 2016 WP Rocket +# This file is distributed under the same license as the WP Rocket package. +# Translators: +# wpmedia , 2019 +# Jean-Francois Arseneault , 2020 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: WP Rocket 3.4\n" +"Report-Msgid-Bugs-To: http://wp-rocket.me/\n" +"POT-Creation-Date: 2020-06-08 11:57-0400\n" +"PO-Revision-Date: 2019-08-26 15:14+0000\n" +"Last-Translator: Jean-Francois Arseneault , 2020\n" +"Language-Team: French (Canada) (https://www.transifex.com/wp-media/teams/18133/fr_CA/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: fr_CA\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Poedit 1.8.11\n" +"X-Poedit-Basepath: ..\n" +"X-Poedit-KeywordsList: __;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c\n" +"X-Poedit-SearchPath-0: .\n" +"X-Poedit-SearchPathExcluded-0: assets\n" +"X-Poedit-SearchPathExcluded-1: src\n" +"X-Poedit-SearchPathExcluded-2: vendor\n" +"X-Poedit-SearchPathExcluded-3: node_modules\n" +"X-Poedit-SearchPathExcluded-4: tests\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Textdomain-Support: yes\n" + +#: inc/3rd-party/hosting/flywheel.php:18 inc/3rd-party/hosting/godaddy.php:18 +#: inc/3rd-party/hosting/o2switch.php:17 +#: inc/3rd-party/hosting/pressidium.php:18 inc/3rd-party/hosting/savvii.php:18 +#: inc/3rd-party/hosting/wp-serveur.php:27 +#: inc/3rd-party/hosting/wpengine.php:18 +#: inc/ThirdParty/Hostings/Cloudways.php:66 +#, php-format +msgid "" +"Your site is hosted on %s, we have enabled Varnish auto-purge for " +"compatibility." +msgstr "" +"Votre site est hébergé chez %s, nous avons activé la purge automatisée de " +"Varnish pour la compatibilité." + +#: inc/3rd-party/hosting/kinsta.php:161 +#, php-format +msgid "" +"Your installation seems to be missing core Kinsta files managing Cache " +"clearing and CDN, which will prevent your Kinsta installation and WP Rocket " +"from working correctly. Please get in touch with Kinsta support through your" +" %1$sMyKinsta%2$s account to resolve this issue." +msgstr "" +"Des fichiers Kinsta de base, gérant l'effacement du cache et du CDN, " +"semblent manquer dans votre installation, ce qui empêchera Kinsta et WP " +"Rocket de fonctionner correctement. Veuillez contacter le support Kinsta via" +" votre compte %1$sMyKinsta%2$s pour résoudre ce problème." + +#: inc/3rd-party/plugins/jetpack.php:86 +msgid "Jetpack XML Sitemaps" +msgstr "Sitemaps XML Jetpack" + +#: inc/3rd-party/plugins/jetpack.php:88 +msgid "Preload the sitemap from the Jetpack plugin" +msgstr "Précharger le sitemap de l'extension Jetpack" + +#: inc/3rd-party/plugins/jetpack.php:96 +#: inc/3rd-party/plugins/seo/all-in-one-seo-pack.php:89 +#: inc/3rd-party/plugins/seo/rank-math-seo.php:34 +#: inc/3rd-party/plugins/seo/seopress.php:86 +#: inc/3rd-party/plugins/seo/the-seo-framework.php:144 +#: inc/3rd-party/plugins/seo/yoast-seo.php:87 +#, php-format +msgid "" +"We automatically detected the sitemap generated by the %s plugin. You can " +"check the option to preload it." +msgstr "" +"Nous avons automatiquement détecté le sitemap généré par l'extension %s. " +"Vous pouvez cocher l'option pour l'inclure dans le préchargement." + +#: inc/3rd-party/plugins/seo/all-in-one-seo-pack.php:87 +msgid "All in One SEO XML sitemap" +msgstr "Sitemap XML All in One SEO" + +#: inc/3rd-party/plugins/seo/rank-math-seo.php:32 +msgid "Rank Math XML sitemap" +msgstr "Sitemap XML de Rank Math" + +#: inc/3rd-party/plugins/seo/seopress.php:84 +msgid "SEOPress XML sitemap" +msgstr "Sitemap XML SEOPress" + +#: inc/3rd-party/plugins/seo/the-seo-framework.php:142 +msgid "The SEO Framework XML sitemap" +msgstr "Le sitemap XML de The SEO Framework" + +#: inc/3rd-party/plugins/seo/yoast-seo.php:85 +msgid "Yoast SEO XML sitemap" +msgstr "Sitemap XML Yoast SEO" + +#: inc/Addon/Cloudflare/APIClient.php:309 +msgid "Ops Cloudflare did not provide any reply. Please try again later." +msgstr "" +"Oups, Cloudflare n'a pas répondu. Veuillez essayer de nouveau plus tard." + +#: inc/Addon/Cloudflare/APIClient.php:318 inc/deprecated/3.5.php:122 +#: inc/deprecated/3.5.php:179 +msgid "Incorrect Cloudflare email address or API key." +msgstr "Courriel et clé d’API Cloudflare incorrects." + +#: inc/Addon/Cloudflare/APIClient.php:322 +#: inc/Addon/Cloudflare/APIClient.php:335 +#: inc/Addon/Cloudflare/Cloudflare.php:112 +#: inc/Addon/Cloudflare/Cloudflare.php:144 +#: inc/classes/subscriber/Tools/class-detect-missing-tags-subscriber.php:157 +#: inc/deprecated/3.5.php:102 inc/deprecated/3.5.php:126 +#: inc/deprecated/3.5.php:139 inc/deprecated/3.5.php:167 +#: inc/deprecated/3.5.php:183 +#, php-format +msgid "Read the %1$sdocumentation%2$s for further guidance." +msgstr "Lisez la %1$sdocumentation%2$s pour de l’aide additionnelle." + +#: inc/Addon/Cloudflare/APIClient.php:324 +#: inc/Addon/Cloudflare/APIClient.php:337 +#: inc/Addon/Cloudflare/Cloudflare.php:101 +#: inc/Addon/Cloudflare/Cloudflare.php:114 +#: inc/Addon/Cloudflare/Cloudflare.php:146 inc/deprecated/3.5.php:91 +#: inc/deprecated/3.5.php:104 inc/deprecated/3.5.php:128 +#: inc/deprecated/3.5.php:141 inc/deprecated/3.5.php:169 +#: inc/deprecated/3.5.php:185 inc/deprecated/3.5.php:218 +msgid "" +"https://docs.wp-rocket.me/article/18-using-wp-rocket-with-" +"cloudflare/?utm_source=wp_plugin&utm_medium=wp_rocket#add-on" +msgstr "" +"https://docs.wp-rocket.me/article/18-using-wp-rocket-with-" +"cloudflare/?utm_source=wp_plugin&utm_medium=wp_rocket#add-on" + +#: inc/Addon/Cloudflare/APIClient.php:331 inc/deprecated/3.5.php:135 +msgid "Incorrect Cloudflare Zone ID." +msgstr "Zone iD de Cloudflare incorrecte." + +#: inc/Addon/Cloudflare/Cloudflare.php:99 +#, php-format +msgid "" +"Cloudflare email and/or API key are not set. Read the %1$sdocumentation%2$s " +"for further guidance." +msgstr "" +"Le courriel ou la clé d'API de Cloudflare ne sont pas configurés. Lire la " +"%1$sdocumentation%2$s pour plus d'information." + +#: inc/Addon/Cloudflare/Cloudflare.php:108 inc/deprecated/3.5.php:98 +msgid "Missing Cloudflare Zone ID." +msgstr "Zone ID de Cloudflare manquant." + +#: inc/Addon/Cloudflare/Cloudflare.php:140 inc/deprecated/3.5.php:163 +msgid "It looks like your domain is not set up on Cloudflare." +msgstr "On dirait que votre domaine n'est pas configuré dans Cloudflare." + +#: inc/Addon/Cloudflare/Subscriber.php:215 inc/deprecated/3.5.php:597 +#, php-format +msgid "WP Rocket: %s" +msgstr "WP Rocket : %s" + +#: inc/Addon/Cloudflare/Subscriber.php:220 inc/deprecated/3.5.php:602 +msgid "WP Rocket: Cloudflare cache successfully purged." +msgstr "WP Rocket: Cache de Cloudflare purgé avec succès." + +#: inc/Addon/Cloudflare/Subscriber.php:364 +#: inc/Addon/Cloudflare/Subscriber.php:370 +#: inc/Addon/Cloudflare/Subscriber.php:390 +#: inc/Addon/Cloudflare/Subscriber.php:401 +#: inc/Addon/Cloudflare/Subscriber.php:420 +#: inc/Addon/Cloudflare/Subscriber.php:426 +#: inc/Addon/Cloudflare/Subscriber.php:445 +#: inc/Addon/Cloudflare/Subscriber.php:451 +#: inc/Addon/Cloudflare/Subscriber.php:470 +#: inc/Addon/Cloudflare/Subscriber.php:476 +#: inc/Addon/Cloudflare/Subscriber.php:558 inc/admin/options.php:171 +#: inc/classes/subscriber/Tools/class-detect-missing-tags-subscriber.php:148 +msgid "WP Rocket: " +msgstr "WP Rocket : " + +#: inc/Addon/Cloudflare/Subscriber.php:364 +#, php-format +msgid "Cloudflare development mode error: %s" +msgstr "Erreur du mode développement de Cloudflare : %s" + +#: inc/Addon/Cloudflare/Subscriber.php:370 +#, php-format +msgid "Cloudflare development mode %s" +msgstr "Mode développement de Cloudflare %s" + +#: inc/Addon/Cloudflare/Subscriber.php:390 +#, php-format +msgid "Cloudflare cache level error: %s" +msgstr "Erreur du niveau de cache de Cloudflare : %s" + +#: inc/Addon/Cloudflare/Subscriber.php:395 +msgctxt "Cloudflare caching level" +msgid "Standard" +msgstr "Standard" + +#: inc/Addon/Cloudflare/Subscriber.php:401 +#, php-format +msgid "Cloudflare cache level set to %s" +msgstr "Niveau de cache de Cloudflare défini à %s" + +#: inc/Addon/Cloudflare/Subscriber.php:420 +#, php-format +msgid "Cloudflare minification error: %s" +msgstr "Erreur de la minification Cloudflare : %s" + +#: inc/Addon/Cloudflare/Subscriber.php:426 +#, php-format +msgid "Cloudflare minification %s" +msgstr "Minification Cloudflare %s" + +#: inc/Addon/Cloudflare/Subscriber.php:445 +#, php-format +msgid "Cloudflare rocket loader error: %s" +msgstr "Erreur du Rocket Loader de Cloudflare : %s" + +#: inc/Addon/Cloudflare/Subscriber.php:451 +#, php-format +msgid "Cloudflare rocket loader %s" +msgstr "Rocket Loader de Cloudflare %s" + +#: inc/Addon/Cloudflare/Subscriber.php:470 +#, php-format +msgid "Cloudflare browser cache error: %s" +msgstr "Erreur du cache navigateur Cloudflare : %s" + +#: inc/Addon/Cloudflare/Subscriber.php:476 +#, php-format +msgid "Cloudflare browser cache set to %s seconds" +msgstr "Cache navigateur de Cloudflare défini à %s secondes" + +#: inc/Addon/FacebookTracking/Subscriber.php:87 +#: inc/Addon/GoogleTracking/Subscriber.php:134 +#: inc/Engine/HealthCheck/CacheDirSizeCheck.php:88 +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:92 +msgid "weekly" +msgstr "hebdomadaire" + +#: inc/Engine/Admin/Settings/Page.php:171 +msgid "Save Changes" +msgstr "Enregistrer les modifications" + +#: inc/Engine/Admin/Settings/Page.php:171 +msgid "Validate License" +msgstr "Valider la licence" + +#: inc/Engine/Admin/Settings/Page.php:201 +#: inc/Engine/Admin/Settings/Page.php:202 +msgid "Unavailable" +msgstr "Indisponible" + +#: inc/Engine/Admin/Settings/Page.php:306 inc/deprecated/deprecated.php:1789 +#: views/settings/page-sections/dashboard.php:73 +msgid "License" +msgstr "Licence" + +#: inc/Engine/Admin/Settings/Page.php:323 +msgid "API key" +msgstr "Clé d’API" + +#: inc/Engine/Admin/Settings/Page.php:338 +msgid "Email address" +msgstr "Adresse courriel" + +#: inc/Engine/Admin/Settings/Page.php:364 +msgid "Dashboard" +msgstr "Tableau de bord" + +#: inc/Engine/Admin/Settings/Page.php:365 +msgid "Get help, account info" +msgstr "Aide, info du compte" + +#: inc/Engine/Admin/Settings/Page.php:374 +msgid "My Status" +msgstr "Ma situation" + +#: inc/Engine/Admin/Settings/Page.php:384 views/settings/page.php:72 +msgid "Rocket Tester" +msgstr "Testeur Rocket" + +#: inc/Engine/Admin/Settings/Page.php:385 +msgid "I am part of the WP Rocket Beta Testing Program." +msgstr "Je participe au Beta Testing de WP Rocket." + +#: inc/Engine/Admin/Settings/Page.php:393 views/settings/page.php:90 +msgid "Rocket Analytics" +msgstr "Analytiques Rocket" + +#: inc/Engine/Admin/Settings/Page.php:395 +#, php-format +msgid "" +"I agree to share anonymous data with the development team to help improve WP" +" Rocket. %1$sWhat info will we collect?%2$s" +msgstr "" +"J'accepte de partager des données anonymes avec l'équipe de développement " +"pour aider à améliorer WP Rocket. %1$sQuelles informations recueillerons-" +"nous?%2$s" + +#: inc/Engine/Admin/Settings/Page.php:419 +msgid "Cache" +msgstr "Cache" + +#: inc/Engine/Admin/Settings/Page.php:420 +msgid "Basic cache options" +msgstr "Options de base de la cache" + +#: inc/Engine/Admin/Settings/Page.php:427 +msgid "Mobile Cache" +msgstr "Cache mobile" + +#: inc/Engine/Admin/Settings/Page.php:429 +msgid "Speed up your site for mobile visitors." +msgstr "Accélérez votre site pour vos visiteurs mobile." + +#: inc/Engine/Admin/Settings/Page.php:434 +msgid "" +"We detected you use a plugin that requires a separate cache for mobile, and " +"automatically enabled this option for compatibility." +msgstr "" +"Nous avons détecté que vous utilisiez une extension qui nécessite un cache " +"séparé pour mobile, et avons automatiquement activé cette option pour " +"assurer la compatibilité." + +#: inc/Engine/Admin/Settings/Page.php:438 +msgid "User Cache" +msgstr "Cache utilisateur" + +#: inc/Engine/Admin/Settings/Page.php:441 +#, php-format +msgid "" +"%1$sUser cache%2$s is great when you have user-specific or restricted " +"content on your website." +msgstr "" +"%1$sLe cache utilisateur%2$s est parfait si vous avez du contenu spécifique " +"ou restreint pour vos utilisateurs sur votre site." + +#: inc/Engine/Admin/Settings/Page.php:449 +msgid "Cache Lifespan" +msgstr "Délai de nettoyage du cache" + +#: inc/Engine/Admin/Settings/Page.php:452 +#, php-format +msgid "" +"Cache files older than the specified lifespan will be deleted.
      Enable " +"%1$spreloading%2$s for the cache to be rebuilt automatically after lifespan " +"expiration." +msgstr "" +"Les fichiers en cache plus vieux que la durée de vie spécifiée seront " +"effacés.
      Activer %1$spré-chargement %2$s pour que le cache soit généré de" +" nouveau automatiquement après l'expiration de la durée de vie." + +#: inc/Engine/Admin/Settings/Page.php:466 +msgid "Enable caching for logged-in WordPress users" +msgstr "Activer la mise en cache pour les utilisateurs WordPress connectés" + +#: inc/Engine/Admin/Settings/Page.php:474 +msgid "Enable caching for mobile devices" +msgstr "Activer la mise en cache pour les appareils mobiles" + +#: inc/Engine/Admin/Settings/Page.php:489 +msgid "Separate cache files for mobile devices" +msgstr "Créer un fichier de cache distinct pour les appareils mobiles" + +#: inc/Engine/Admin/Settings/Page.php:491 +#, php-format +msgid "" +"Most modern themes are responsive and should work without a separate cache. " +"Enable this only if you have a dedicated mobile theme or plugin. %1$sMore " +"info%2$s" +msgstr "" +"La majorité des thèmes sont responsives et devraient fonctionner sans cache " +"séparée. Activer ceci seulement si vous avez un thème mobile dédié ou une " +"extension. %1$sPlus d'info%2$s" + +#: inc/Engine/Admin/Settings/Page.php:507 +msgid "" +"Specify time after which the global cache is cleared
      (0 = unlimited )" +msgstr "" +"Indiquez le nombre d’heures après quoi le cache global doit être vidé
      (0 " +"= illimité)" + +#: inc/Engine/Admin/Settings/Page.php:509 +#, php-format +msgid "" +"Reduce lifespan to 10 hours or less if you notice issues that seem to appear" +" periodically. %1$sWhy?%2$s" +msgstr "" +"Réduisez le délai à 10 heures ou moins si vous remarquez des problèmes " +"apparaissant de façon intermittente. %1$sPourquoi ?%2$s" + +#: inc/Engine/Admin/Settings/Page.php:515 +msgid "Minutes" +msgstr "Minutes" + +#: inc/Engine/Admin/Settings/Page.php:516 +msgid "Hours" +msgstr "Heures" + +#: inc/Engine/Admin/Settings/Page.php:517 +msgid "Days" +msgstr "Jours" + +#: inc/Engine/Admin/Settings/Page.php:542 +#: views/settings/page-sections/tutorials.php:22 +msgid "File Optimization" +msgstr "Optimisation des fichiers" + +#: inc/Engine/Admin/Settings/Page.php:543 +msgid "Optimize CSS & JS" +msgstr "Optimiser le CSS et le JS" + +#: inc/Engine/Admin/Settings/Page.php:550 +msgid "Basic Settings" +msgstr "Options de base" + +#: inc/Engine/Admin/Settings/Page.php:553 +#: inc/Engine/Admin/Settings/Page.php:563 +#: inc/Engine/Admin/Settings/Page.php:573 +#, php-format +msgid "" +"%1$s Minification is currently activated in Autoptimize. If" +" you want to use %2$s’s minification, disable those options in Autoptimize." +msgstr "" +"La minification %1$s est actuellement activée dans " +"Autoptimize. Si vous souhaitez utiliser la minification de " +"%2$s, désactivez ces options dans Autoptimize." + +#: inc/Engine/Admin/Settings/Page.php:556 +msgid "CSS Files" +msgstr "Fichiers CSS" + +#: inc/Engine/Admin/Settings/Page.php:566 +msgid "JavaScript Files" +msgstr "Fichiers JavaScript" + +#: inc/Engine/Admin/Settings/Page.php:582 inc/admin/ui/meta-boxes.php:74 +msgid "Minify HTML" +msgstr "Minifier le HTML" + +#: inc/Engine/Admin/Settings/Page.php:586 +msgid "Minifying HTML removes whitespace and comments to reduce the size." +msgstr "" +"Minifier le HTML supprime les espaces et les commentaires afin de réduire le" +" poids." + +#: inc/Engine/Admin/Settings/Page.php:597 +msgid "Optimize Google Fonts" +msgstr "Optimiser Google Fonts" + +#: inc/Engine/Admin/Settings/Page.php:599 +#, php-format +msgid "" +"Improves font performance and combines multiple font requests to reduce the " +"number of HTTP requests. %1$sMore info%2$s" +msgstr "" +"Améliore la performance des fontes et combine plusieurs requêtes de fontes " +"pour réduire le nobre d'appels HTTP. %1$sPlus d'info%2$s" + +#: inc/Engine/Admin/Settings/Page.php:607 +msgid "Minify CSS files" +msgstr "Minifier les fichiers CSS" + +#: inc/Engine/Admin/Settings/Page.php:608 +msgid "Minify CSS removes whitespace and comments to reduce the file size." +msgstr "" +"Minifier le CSS supprime les espaces et les commentaires afin de réduire le " +"poids des fichiers." + +#: inc/Engine/Admin/Settings/Page.php:621 +#: inc/Engine/Admin/Settings/Page.php:643 +#: inc/Engine/Admin/Settings/Page.php:723 +#: inc/Engine/Admin/Settings/Page.php:745 +msgid "This could break things!" +msgstr "Ceci pourrait briser des choses!" + +#: inc/Engine/Admin/Settings/Page.php:622 +#: inc/Engine/Admin/Settings/Page.php:644 +#: inc/Engine/Admin/Settings/Page.php:724 +#: inc/Engine/Admin/Settings/Page.php:746 +msgid "" +"If you notice any errors on your website after having activated this " +"setting, just deactivate it again, and your site will be back to normal." +msgstr "" +"Si vous remarquez des erreurs sur votre site après avoir activé cette " +"option, il vous suffit de la désactiver et votre site sera de retour à la " +"normale." + +#: inc/Engine/Admin/Settings/Page.php:623 +msgid "Activate minify CSS" +msgstr "Activer la minification CSS" + +#: inc/Engine/Admin/Settings/Page.php:628 +msgid "Combine CSS files (Enable Minify CSS files to select)" +msgstr "" +"Combiner les fichiers CSS (activez la minification CSS pour " +"sélectionner)" + +#: inc/Engine/Admin/Settings/Page.php:630 +#, php-format +msgid "" +"Combine CSS merges all your files into 1, reducing HTTP requests. Not " +"recommended if your site uses HTTP/2. %1$sMore info%2$s" +msgstr "" +"Combiner le CSS condense tous vos fichiers en un seul, réduisant le nombre " +"de requêtes HTTP. Ces réglages ne sont pas recommandés si votre site utilise" +" HTTP/2. %1$sPlus d'infos%2$s" + +#: inc/Engine/Admin/Settings/Page.php:645 +msgid "Activate combine CSS" +msgstr "Activer la combinaison CSS" + +#: inc/Engine/Admin/Settings/Page.php:650 inc/admin/options.php:130 +msgid "Excluded CSS Files" +msgstr "Fichiers CSS à exclure" + +#: inc/Engine/Admin/Settings/Page.php:651 +msgid "" +"Specify URLs of CSS files to be excluded from minification and concatenation" +" (one per line)." +msgstr "" +"Indiquez l’URL des fichiers CSS à exclure de la minification et de la " +"concaténation (une par ligne)" + +#: inc/Engine/Admin/Settings/Page.php:652 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*).css " +"wildcards to exclude all CSS files located at a specific path." +msgstr "" +"Le nom de domaine sera supprimé automatiquement de l'URL.
      Utilisez les " +"expressions régulières (.*).css pour exclure tous les fichiers CSS pour un " +"chemin donné." + +#: inc/Engine/Admin/Settings/Page.php:665 +msgid "Optimize CSS delivery" +msgstr "Optimiser le chargement du CSS" + +#: inc/Engine/Admin/Settings/Page.php:672 +#, php-format +msgctxt "WP Critical CSS compatibility" +msgid "" +"Optimize CSS Delivery is currently handled by the %1$s plugin. If you want " +"to use WP Rocket’s Optimize CSS Delivery option, disable the %1$s plugin." +msgstr "" +"L'option d'optimiser le chargement du CSS est présentement fournie par " +"l'extension %1$s. Si vous désirez utiliser l'option d'optimisation de " +"chargement de CSS de WP Rocket, veuilez désactiver l'extension %1$s." + +#: inc/Engine/Admin/Settings/Page.php:674 +#, php-format +msgid "" +"Optimize CSS delivery eliminates render-blocking CSS on your website for " +"faster perceived load time. %1$sMore info%2$s" +msgstr "" +"Élimine le CSS bloquant l’affichage de votre site pour un temps perçu de " +"chargement plus rapide. %1$sPlus d'infos%2$s" + +#: inc/Engine/Admin/Settings/Page.php:685 +msgid "Fallback critical CSS" +msgstr "CSS critique de secours" + +#: inc/Engine/Admin/Settings/Page.php:690 +#, php-format +msgid "" +"Provides a fallback if auto-generated critical path CSS is incomplete. " +"%1$sMore info%2$s" +msgstr "" +"Fournit une option de secours si le CSS critique auto-généré est " +"incomplet.%1$sPlus d'infos%2$s" + +#: inc/Engine/Admin/Settings/Page.php:699 +msgid "Remove jQuery Migrate" +msgstr "Enlever jQuery Migrate" + +#: inc/Engine/Admin/Settings/Page.php:701 +#, php-format +msgid "" +"Remove jQuery Migrate eliminates a JS file and can improve load time. " +"%1$sMore info%2$s" +msgstr "" +"Enlever jQuery Migrate peut éliminer un fichier JS et peut améliorer le " +"temps de chargement. %1$s Plus d'info %2$s" + +#: inc/Engine/Admin/Settings/Page.php:709 +msgid "Minify JavaScript files" +msgstr "Minifier les fichiers JS" + +#: inc/Engine/Admin/Settings/Page.php:710 +msgid "" +"Minify JavaScript removes whitespace and comments to reduce the file size." +msgstr "" +"Minifier le JavaScript supprime les espace et les commentaires afin de " +"réduire le poids des fichiers." + +#: inc/Engine/Admin/Settings/Page.php:725 +msgid "Activate minify JavaScript" +msgstr "Activer la minification JavaScript" + +#: inc/Engine/Admin/Settings/Page.php:730 +msgid "" +"Combine JavaScript files (Enable Minify JavaScript files to select)" +msgstr "" +"Combiner les fichiers JavaScript (activez la minification JavaScript " +"pour sélectionner)" + +#: inc/Engine/Admin/Settings/Page.php:732 +#, php-format +msgid "" +"Combine JavaScript files combines your site’s internal, 3rd party and inline" +" JS reducing HTTP requests. Not recommended if your site uses HTTP/2. " +"%1$sMore info%2$s" +msgstr "" +"Combine vos fichiers JavaScript, les fichiers tiers et le inline JS en un " +"seul fichier, réduisant le nombre de requêtes HTTP. Ces réglages ne sont pas" +" recommandés si votre site utilise HTTP/2.%1$sPlus d'infos%2$s" + +#: inc/Engine/Admin/Settings/Page.php:747 +msgid "Activate combine JavaScript" +msgstr "Activer la combinaison JavaScript" + +#: inc/Engine/Admin/Settings/Page.php:752 inc/admin/options.php:131 +msgid "Excluded Inline JavaScript" +msgstr "JavaScript inline exclu" + +#: inc/Engine/Admin/Settings/Page.php:754 +#, php-format +msgid "" +"Specify patterns of inline JavaScript to be excluded from concatenation (one" +" per line). %1$sMore info%2$s" +msgstr "" +"Indiquez les patterns du code JavaScript inline à exclure de la " +"concaténation (un par ligne).%1$sMore info%2$s" + +#: inc/Engine/Admin/Settings/Page.php:770 inc/admin/options.php:132 +msgid "Excluded JavaScript Files" +msgstr "Fichiers JavaScript exclus" + +#: inc/Engine/Admin/Settings/Page.php:771 +msgid "" +"Specify URLs of JavaScript files to be excluded from minification and " +"concatenation (one per line)." +msgstr "" +"Indiquez l’URL des fichiers JavaScript à exclure de la minification et de la" +" concaténation (une par ligne)" + +#: inc/Engine/Admin/Settings/Page.php:772 +msgid "" +"Internal: The domain part of the URL will be stripped " +"automatically. Use (.*).js wildcards to exclude all JS files located at a " +"specific path." +msgstr "" +"Interne :Le nom de domaine sera supprimé automatiquement de" +" l’URL. Utilisez les expressions régulières (.*).js afin d’exclure tous les " +"fichiers JS pour un chemin donné." + +#: inc/Engine/Admin/Settings/Page.php:774 +#, php-format +msgid "" +"3rd Party: Use either the full URL path or only the domain " +"name, to exclude external JS. %1$sMore info%2$s" +msgstr "" +"Tierce-partie : Utilisez soit l'URL complet ou seulement le" +" nom de domaine afin d'exclure le JS externe. %1$sPlus d'info%2$s" + +#: inc/Engine/Admin/Settings/Page.php:790 +msgid "Load JavaScript deferred" +msgstr "Charger les fichiers JavaScript en différé" + +#: inc/Engine/Admin/Settings/Page.php:792 +#, php-format +msgid "" +"Load JavaScript deferred eliminates render-blocking JS on your site and can " +"improve load time. %1$sMore info%2$s" +msgstr "" +"Charger les fichiers JavaScript en différé élimine le blocage de l’affichage" +" de votre site dû au JS et peux améliorer le temps de chargement perçu. " +"%1$sPlus d'infos%2$s" + +#: inc/Engine/Admin/Settings/Page.php:803 +msgid "Safe Mode for jQuery (recommended)" +msgstr "Mode sécuritaire pour jQuery (recommandé)" + +#: inc/Engine/Admin/Settings/Page.php:804 +msgid "" +"Safe mode for jQuery for deferred JS ensures support for inline jQuery " +"references from themes and plugins by loading jQuery at the top of the " +"document as a render-blocking script.
      Deactivating may result in " +"broken functionality, test thoroughly!" +msgstr "" +"Le mode sécuritaire pour jQuery pour le chargement différé des JS assure le " +"support des références jQuery en ligne des thèmes et des plugins en " +"chargeant jQuery tout en haut du document comme un script bloquant " +"l’affichage.
      Sa désactivation peut entraîner des problèmes " +"fonctionnels, à tester soigneusement!" + +#: inc/Engine/Admin/Settings/Page.php:833 +msgid "Media" +msgstr "Média" + +#: inc/Engine/Admin/Settings/Page.php:834 +msgid "LazyLoad, emojis, embeds, WebP" +msgstr "LazyLoad, emojis, embeds, WebP" + +#: inc/Engine/Admin/Settings/Page.php:842 +msgid "Avada" +msgstr "Avada" + +#: inc/Engine/Admin/Settings/Page.php:846 +msgid "Autoptimize" +msgstr "Autoptimize" + +#: inc/Engine/Admin/Settings/Page.php:878 +msgid "LazyLoad" +msgstr "Chargement différé" + +#: inc/Engine/Admin/Settings/Page.php:881 +#, php-format +msgid "" +"It can improve actual and perceived loading time as images, iframes, and " +"videos will be loaded only as they enter (or about to enter) the viewport " +"and reduces the number of HTTP requests. %1$sMore Info%2$s" +msgstr "" +"Peut améliorer le temps de chargement réel et perçu car les images, iframes " +"et vidéos ne seront chargées que lorsqu'elles entreront (ou seront sur le " +"point d'entrer) dans la zone visible. Réduit le nombre de requêtes HTTP. " +"%1$sPlus d'informations.%2$s" + +#: inc/Engine/Admin/Settings/Page.php:888 +#, php-format +msgid "" +"LazyLoad is currently activated in %2$s. If you want to use WP Rocket’s " +"LazyLoad, disable this option in %2$s." +msgstr "" +"LazyLoad est présentement activé dans %2$s. Si vous désirez utiliser le " +"LazyLoad de WP Rocket, désactivez cette option dans %2$s." + +#: inc/Engine/Admin/Settings/Page.php:891 +msgid "Emoji 👻" +msgstr "Emoji 👻" + +#: inc/Engine/Admin/Settings/Page.php:893 +msgid "" +"Use default emoji of visitor's browser instead of loading emoji from " +"WordPress.org" +msgstr "" +"Utiliser les emoji du navigateur de vos visiteurs au lieu de charger celles " +"de WordPress.org" + +#: inc/Engine/Admin/Settings/Page.php:897 +msgid "Embeds" +msgstr "Insertions" + +#: inc/Engine/Admin/Settings/Page.php:899 +msgid "" +"Prevents others from embedding content from your site, prevents you from " +"embedding content from other (non-whitelisted) sites, and removes JavaScript" +" requests related to WordPress embeds" +msgstr "" +"Empêche les autres d’insérer du contenu de votre site dans le leur et vous " +"empêche d'incorporer du contenu des autres sites (qui n’est pas sur votre " +"liste blanche) et retire les requêtes JavaScript liées aux insertions " +"WordPress" + +#: inc/Engine/Admin/Settings/Page.php:903 +msgid "WebP compatibility" +msgstr "Compatibilité WebP" + +#: inc/Engine/Admin/Settings/Page.php:907 +#, php-format +msgid "" +"Enable this option if you would like WP Rocket to serve WebP images to " +"compatible browsers. Please note that WP Rocket cannot create WebP images " +"for you. To create WebP images we recommend %1$sImagify%2$s. %3$sMore " +"info%2$s" +msgstr "" +"Activez cette option si vous désirez que WP Rocket serve les images WebP au " +"navigateurs compatibles. Veuillez noter que WP Rocket ne peut pas créer " +"d'images WebP pour vous. Pour créez des images WebP nous recommandons " +"%1$sImagify%2$s. %3$sPlus d'info %2$s" + +#: inc/Engine/Admin/Settings/Page.php:934 +msgid "Enable for images" +msgstr "Activer pour les images" + +#: inc/Engine/Admin/Settings/Page.php:946 +#, php-format +msgid "" +"LazyLoad for images is currently activated in %2$s. If you want to use " +"%1$s’s LazyLoad, disable this option in %2$s." +msgstr "" +"LazyLoad pour les images est présentement activé dans %2$s. Si vous désirez " +"utiliser le LazyLoad de %1$s, désactivez cette option dans %2$s." + +#: inc/Engine/Admin/Settings/Page.php:954 +msgid "Enable for iframes and videos" +msgstr "Activer pour les iframes et vidéos" + +#: inc/Engine/Admin/Settings/Page.php:969 +msgid "Replace YouTube iframe with preview image" +msgstr "Remplacer l'iframe YouTube par une image d'aperçu" + +#: inc/Engine/Admin/Settings/Page.php:970 +msgid "" +"This can significantly improve your loading time if you have a lot of " +"YouTube videos on a page." +msgstr "" +"Ceci peut considérablement améliorer votre vitesse de chargement si vous " +"avez beaucoup de vidéos YouTube sur une page." + +#: inc/Engine/Admin/Settings/Page.php:982 +msgid "Disable Emoji" +msgstr "Désactiver les emojis" + +#: inc/Engine/Admin/Settings/Page.php:983 +msgid "Disable Emoji will reduce the number of external HTTP requests." +msgstr "Réduit le nombre de requêtes HTTP externes" + +#: inc/Engine/Admin/Settings/Page.php:991 +msgid "Disable WordPress embeds" +msgstr "Désactiver les insertions de WordPress" + +#: inc/Engine/Admin/Settings/Page.php:1001 +#: inc/classes/subscriber/Media/class-webp-subscriber.php:362 +msgid "Enable WebP caching" +msgstr "Activer le caching WebP" + +#: inc/Engine/Admin/Settings/Page.php:1021 inc/deprecated/deprecated.php:1776 +#: views/settings/page-sections/tutorials.php:30 +msgid "Preload" +msgstr "Préchargement" + +#: inc/Engine/Admin/Settings/Page.php:1022 +msgid "Generate cache files, preload fonts" +msgstr "Générer les fichiers de cache, précharger les fontes" + +#: inc/Engine/Admin/Settings/Page.php:1032 +msgid "Preload Cache" +msgstr "Précharger la cache" + +#: inc/Engine/Admin/Settings/Page.php:1035 +#, php-format +msgid "" +"When you enable preloading WP Rocket will generate the cache starting with " +"the links on your homepage followed by the sitemaps you specify. Preloading " +"is automatically triggered when you add or update content and can also be " +"manually triggered from the admin bar or from the %1$sWP Rocket " +"Dashboard%2$s." +msgstr "" +"Lorsque vous activez le préchargement, WP Rocket générera le cache en " +"commençant par les liens sur votre page d'accueil en poursuivant par les " +"sitemaps que vous spécifierez. Le préchargement est automatiquement activé " +"lorsque vous ajoutez ou mettez à jour du contenu et peut également être " +"manuellement activé à partir de la barre d'administration ou à partir du " +"%1$stableau de bord WP Rocket%2$s." + +#: inc/Engine/Admin/Settings/Page.php:1043 +msgid "Prefetch DNS Requests" +msgstr "Préchargement des requêtes DNS" + +#: inc/Engine/Admin/Settings/Page.php:1045 +msgid "" +"DNS prefetching can make external files load faster, especially on mobile " +"networks" +msgstr "" +"Le préchargement des requêtes DNS peut permettre aux ressources externes de " +"charger plus rapidement, surtout sur les réseaux mobiles." + +#: inc/Engine/Admin/Settings/Page.php:1053 +msgid "Preload Fonts" +msgstr "Précharger les fontes" + +#: inc/Engine/Admin/Settings/Page.php:1056 +#, php-format +msgid "" +"Improves performance by helping browsers discover fonts in CSS files. " +"%1$sMore info%2$s" +msgstr "" +"Améliore les performances en aidant les navigateurs à découvrir les fontes " +"dans les ficheirs CSS. %1$sPlus d'info%2$s" + +#: inc/Engine/Admin/Settings/Page.php:1070 +msgid "Activate Preloading" +msgstr "Activer le pré-chargement" + +#: inc/Engine/Admin/Settings/Page.php:1089 +msgid "Activate sitemap-based cache preloading" +msgstr "Activer le préchargement du sitemap selon votre sitemap" + +#: inc/Engine/Admin/Settings/Page.php:1108 +msgid "Sitemaps for preloading" +msgstr "Sitemap pour le préchargement" + +#: inc/Engine/Admin/Settings/Page.php:1112 +msgid "Specify XML sitemap(s) to be used for preloading" +msgstr "Indiquez la ou les sitemap(s) XML à utiliser pour le préchargemen" + +#: inc/Engine/Admin/Settings/Page.php:1122 +msgid "URLs to prefetch" +msgstr "URLs à précharger" + +#: inc/Engine/Admin/Settings/Page.php:1123 +msgid "" +"Specify external hosts to be prefetched (no http:, one per " +"line)" +msgstr "" +"Indiquez les hôtes externes à précharger (sans http:, un par " +"ligne)" + +#: inc/Engine/Admin/Settings/Page.php:1132 +msgid "Fonts to preload" +msgstr "Fontes à précharger" + +#: inc/Engine/Admin/Settings/Page.php:1133 +msgid "" +"Specify urls of the font files to be preloaded (one per line). Fonts must be" +" hosted on your own domain." +msgstr "" +"Spécifiez les adresses URLs des fichiers de fontes à être pré-chargées (une " +"par ligne). Les fonts doivent être hébergées sur votre propre domaine." + +#: inc/Engine/Admin/Settings/Page.php:1134 +msgid "" +"The domain part of the URL will be stripped automatically.
      Allowed font " +"extensions: otf, ttf, svg, woff, woff2." +msgstr "" +"La portion domaine de l'URL sera retirée automatiquement.
      Extensions de " +"fontes permises : otf, ttf, svg, woff, woff2." + +#: inc/Engine/Admin/Settings/Page.php:1154 +msgid "Advanced Rules" +msgstr "Règles avancées" + +#: inc/Engine/Admin/Settings/Page.php:1155 +msgid "Fine-tune cache rules" +msgstr "Affiner les règles du cache" + +#: inc/Engine/Admin/Settings/Page.php:1164 +msgid "" +"Sensitive pages like custom login/logout URLs should be excluded from cache." +msgstr "" +"Les pages sensibles telles que les URLs de connexion / déconnexion " +"personnalisés doivent être exclus du cache." + +#: inc/Engine/Admin/Settings/Page.php:1167 +msgctxt "plugin name" +msgid "WooCommerce" +msgstr "WooCommerce" + +#: inc/Engine/Admin/Settings/Page.php:1169 +msgctxt "plugin name" +msgid "Easy Digital Downloads" +msgstr "Easy Digital Downloads" + +#: inc/Engine/Admin/Settings/Page.php:1171 +msgctxt "plugin name" +msgid "iThemes Exchange" +msgstr "iThemes Exchange" + +#: inc/Engine/Admin/Settings/Page.php:1173 +msgctxt "plugin name" +msgid "Jigoshop" +msgstr "Jigoshop" + +#: inc/Engine/Admin/Settings/Page.php:1175 +msgctxt "plugin name" +msgid "WP-Shop" +msgstr "WP-Shop" + +#: inc/Engine/Admin/Settings/Page.php:1181 +#, php-format +msgid "" +"
      Cart, checkout and \"my account\" pages set in " +"%1$s%2$s%3$s will be detected and never cached by default." +msgstr "" +"
      Les pages panier, commande et \"mon compte\" réglées dans " +"%1$s%2$s%3$s seront automatiquement détectées et exclues du" +" cache par défaut." + +#: inc/Engine/Admin/Settings/Page.php:1191 inc/admin/options.php:133 +msgid "Never Cache URL(s)" +msgstr "Ne jamais mettre en cache ces URL(s)" + +#: inc/Engine/Admin/Settings/Page.php:1202 +msgid "Never Cache Cookies" +msgstr "Ne jamais mettre en cache ces témoins" + +#: inc/Engine/Admin/Settings/Page.php:1207 inc/admin/options.php:134 +msgid "Never Cache User Agent(s)" +msgstr "Ne jamais mettre en cache ces agents utilisateurs" + +#: inc/Engine/Admin/Settings/Page.php:1212 inc/admin/options.php:135 +msgid "Always Purge URL(s)" +msgstr "Toujours purger ces URL(s)" + +#: inc/Engine/Admin/Settings/Page.php:1221 +msgid "Cache Query String(s)" +msgstr "Cacher les “Query String(s)”" + +#: inc/Engine/Admin/Settings/Page.php:1224 +#, php-format +msgid "" +"%1$sCache for query strings%2$s enables you to force caching for specific " +"GET parameters." +msgstr "" +"%1$sCacher les “Query Strings”%2$s vous permet de forcer la mise en cache de" +" paramètres GET spécifiques." + +#: inc/Engine/Admin/Settings/Page.php:1238 +msgid "" +"Specify URLs of pages or posts that should never be cached (one per line)" +msgstr "" +"Indiquez les URLs des pages ou articles qui doivent être exclus de la mise " +"en cache (un par ligne)" + +#: inc/Engine/Admin/Settings/Page.php:1239 +#: inc/Engine/Admin/Settings/Page.php:1267 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*) " +"wildcards to address multiple URLs under a given path." +msgstr "" +"Le nom de domaine sera supprimé automatiquement de l'URL .
      Utilisez les " +"expressions régulières (.*) pour exclure plusieurs URLs pour un chemin " +"donné." + +#: inc/Engine/Admin/Settings/Page.php:1248 +msgid "" +"Specify the IDs of cookies that, when set in the visitor's browser, should " +"prevent a page from getting cached (one per line)" +msgstr "" +"Indiquez les identifiants des témoins qui, lorsqu'ils sont déposés dans le " +"navigateur du visiteur, devraient empêcher la mise en cache de la page (un " +"par ligne)" + +#: inc/Engine/Admin/Settings/Page.php:1256 +msgid "" +"Specify user agent strings that should never see cached pages (one per line)" +msgstr "" +"Indiquez les chaînes des agents utilisateurs qui ne devraient jamais voir " +"les pages mises en cache (une par ligne)" + +#: inc/Engine/Admin/Settings/Page.php:1257 +msgid "Use (.*) wildcards to detect parts of UA strings." +msgstr "" +"Utilisez les expressions régulières (.*) pour détecter les parties des " +"chaînes des agents utilisateurs." + +#: inc/Engine/Admin/Settings/Page.php:1266 +msgid "" +"Specify URLs you always want purged from cache whenever you update any post " +"or page (one per line)" +msgstr "" +"Indiquez les URLs dont vous voulez systématiquement vider le cache lorsque " +"vous mettez à jour n'importe quel article ou page (une par ligne)" + +#: inc/Engine/Admin/Settings/Page.php:1275 +msgid "Specify query strings for caching (one per line)" +msgstr "" +"Indiquez les “query strings” qui peuvent être mises en cache (une par ligne)" + +#: inc/Engine/Admin/Settings/Page.php:1300 inc/deprecated/deprecated.php:1775 +msgid "Database" +msgstr "Base de données" + +#: inc/Engine/Admin/Settings/Page.php:1301 +msgid "Optimize, reduce bloat" +msgstr "Optimiser & nettoyer" + +#: inc/Engine/Admin/Settings/Page.php:1310 +msgid "Post Cleanup" +msgstr "Nettoyage des contenus" + +#: inc/Engine/Admin/Settings/Page.php:1312 +msgid "" +"Post revisions and drafts will be permanently deleted. Do not use this " +"option if you need to retain revisions or drafts." +msgstr "" +"Les révisions et les brouillons seront supprimés définitivement. N'utilisez " +"pas cette option si vous devez conserver vos révisions et brouillons." + +#: inc/Engine/Admin/Settings/Page.php:1320 +msgid "Comments Cleanup" +msgstr "Nettoyage des commentaires" + +#: inc/Engine/Admin/Settings/Page.php:1322 +msgid "Spam and trashed comments will be permanently deleted." +msgstr "Les Spams et les commentaires mis à la corbeille seront supprimés" + +#: inc/Engine/Admin/Settings/Page.php:1326 +msgid "Transients Cleanup" +msgstr "Nettoyage des transients" + +#: inc/Engine/Admin/Settings/Page.php:1328 +msgid "" +"Transients are temporary options; they are safe to remove. They will be " +"automatically regenerated as your plugins require them." +msgstr "" +"Les “transients” sont des options temporaires, leur suppression est sans " +"danger. Elles seront automatiquement régénérées si vos extensions en ont " +"besoin." + +#: inc/Engine/Admin/Settings/Page.php:1332 +msgid "Database Cleanup" +msgstr "Nettoyage de la base de données" + +#: inc/Engine/Admin/Settings/Page.php:1334 +msgid "Reduces overhead of database tables" +msgstr "Récupère l’espace inutilisé des tables de la base de données" + +#: inc/Engine/Admin/Settings/Page.php:1338 +msgid "Automatic cleanup" +msgstr "Nettoyage automatique" + +#: inc/Engine/Admin/Settings/Page.php:1349 +#: inc/classes/admin/Database/class-optimization.php:41 +msgid "Revisions" +msgstr "Révisions" + +#: inc/Engine/Admin/Settings/Page.php:1351 +#, php-format +msgid "%s revision in your database." +msgid_plural "%s revisions in your database." +msgstr[0] "%s révision dans votre base de données." +msgstr[1] "%s révisions dans votre base de données." + +#: inc/Engine/Admin/Settings/Page.php:1359 +#: inc/classes/admin/Database/class-optimization.php:42 +msgid "Auto Drafts" +msgstr "Brouillons automatiques" + +#: inc/Engine/Admin/Settings/Page.php:1361 +#, php-format +msgid "%s draft in your database." +msgid_plural "%s drafts in your database." +msgstr[0] "%s brouillon dans votre base de données." +msgstr[1] "%s brouillons dans votre base de données." + +#: inc/Engine/Admin/Settings/Page.php:1369 +#: inc/classes/admin/Database/class-optimization.php:43 +msgid "Trashed Posts" +msgstr "Contenus dans la corbeille" + +#: inc/Engine/Admin/Settings/Page.php:1371 +#, php-format +msgid "%s trashed post in your database." +msgid_plural "%s trashed posts in your database." +msgstr[0] "%s articles à la corbeille dans votre base de données." +msgstr[1] "%sarticles à la corbeille dans votre base de données." + +#: inc/Engine/Admin/Settings/Page.php:1379 +#: inc/classes/admin/Database/class-optimization.php:44 +msgid "Spam Comments" +msgstr "Commentaires indésirables" + +#: inc/Engine/Admin/Settings/Page.php:1381 +#, php-format +msgid "%s spam comment in your database." +msgid_plural "%s spam comments in your database." +msgstr[0] "%s commentaire de SPAM dans votre base de données." +msgstr[1] "%s commentaires de SPAM dans votre base de données." + +#: inc/Engine/Admin/Settings/Page.php:1389 +#: inc/classes/admin/Database/class-optimization.php:45 +msgid "Trashed Comments" +msgstr "Commentaires à la corbeille" + +#: inc/Engine/Admin/Settings/Page.php:1391 +#, php-format +msgid "%s trashed comment in your database." +msgid_plural "%s trashed comments in your database." +msgstr[0] "%s commentaire à la corbeille dans votre base de données." +msgstr[1] "%s commentaires à la corbeille dans votre base de données." + +#: inc/Engine/Admin/Settings/Page.php:1399 +#: inc/classes/admin/Database/class-optimization.php:46 +msgid "Expired transients" +msgstr "Transients expirés" + +#: inc/Engine/Admin/Settings/Page.php:1401 +#, php-format +msgid "%s expired transient in your database." +msgid_plural "%s expired transients in your database." +msgstr[0] "%s transient expiré dans votre base de données." +msgstr[1] "%s transients expirés dans votre base de données." + +#: inc/Engine/Admin/Settings/Page.php:1409 +msgid "All transients" +msgstr "Tous les transients" + +#: inc/Engine/Admin/Settings/Page.php:1411 +#, php-format +msgid "%s transient in your database." +msgid_plural "%s transients in your database." +msgstr[0] "%s transient dans votre base de données." +msgstr[1] "%s transients dans votre base de données." + +#: inc/Engine/Admin/Settings/Page.php:1419 +msgid "Optimize Tables" +msgstr "Optimiser les tables" + +#: inc/Engine/Admin/Settings/Page.php:1421 +#, php-format +msgid "%s table to optimize in your database." +msgid_plural "%s tables to optimize in your database." +msgstr[0] "%s table à optimiser dans votre base de données." +msgstr[1] "%s tables à optimiser dans votre base de données." + +#: inc/Engine/Admin/Settings/Page.php:1432 +msgid "Schedule Automatic Cleanup" +msgstr "Planifier le nettoyage automatique" + +#: inc/Engine/Admin/Settings/Page.php:1444 +msgid "Frequency" +msgstr "Fréquence" + +#: inc/Engine/Admin/Settings/Page.php:1452 +msgid "Daily" +msgstr "Quotidien" + +#: inc/Engine/Admin/Settings/Page.php:1453 +msgid "Weekly" +msgstr "Hebdomadaire" + +#: inc/Engine/Admin/Settings/Page.php:1454 +msgid "Monthly" +msgstr "Mensuel" + +#: inc/Engine/Admin/Settings/Page.php:1470 +#: inc/Engine/Admin/Settings/Page.php:1481 inc/admin/ui/meta-boxes.php:77 +#: inc/deprecated/deprecated.php:1773 +msgid "CDN" +msgstr "CDN" + +#: inc/Engine/Admin/Settings/Page.php:1471 +msgid "Integrate your CDN" +msgstr "Intégrer votre CDN" + +#: inc/Engine/Admin/Settings/Page.php:1483 +msgid "" +"All URLs of static files (CSS, JS, images) will be rewritten to the CNAME(s)" +" you provide." +msgstr "" +"Tous les URLs de vos fichiers statiques (CSS, JS, images) seront ré-écrits " +"avec le CNAME fourni." + +#: inc/Engine/Admin/Settings/Page.php:1485 +#, php-format +msgid "" +"Not required for services like Cloudflare and Sucuri. Please see our " +"available %1$sAdd-ons%2$s." +msgstr "" +"Non requis pour les services tels que Cloudflare et Sucuri. Veuillez " +"consulter nos %1$sAjouts%2$s disponibles." + +#: inc/Engine/Admin/Settings/Page.php:1500 inc/admin/options.php:136 +msgid "Exclude files from CDN" +msgstr "Exclure des fichiers du CDN" + +#: inc/Engine/Admin/Settings/Page.php:1526 +#, php-format +msgid "" +"%1$s%2$s Add-on%3$s is currently enabled. Configuration of the CDN settings " +"is not required for %2$s to work on your site." +msgid_plural "" +"%1$s%2$s Add-ons%3$s are currently enabled. Configuration of the CDN " +"settings is not required for %2$s to work on your site." +msgstr[0] "" +"%1$s%2$s Des ajouts%3$s sont présentement activés. La configuration des " +"réglages du CDN n'est pas requise pour que %2$s fonctionne sur votre site." +msgstr[1] "" +"%1$s%2$s Des ajouts%3$s sont présentement activés. La configuration des " +"réglages du CDN n'est pas requise pour que %2$s fonctionne sur votre site." + +#: inc/Engine/Admin/Settings/Page.php:1551 +msgid "Enable Content Delivery Network" +msgstr "Activer le Content Delivery Network." + +#: inc/Engine/Admin/Settings/Page.php:1560 +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:151 +msgid "CDN CNAME(s)" +msgstr "CNAME(s) du CDN" + +#: inc/Engine/Admin/Settings/Page.php:1561 +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:152 +msgid "Specify the CNAME(s) below" +msgstr "Indiquez le(s) CNAME(s) ci-dessous" + +#: inc/Engine/Admin/Settings/Page.php:1568 +msgid "" +"Specify URL(s) of files that should not get served via CDN (one per line)." +msgstr "" +"Indiquez les URLs des fichiers qui ne doivent pas être servies par le CDN " +"(une par ligne)." + +#: inc/Engine/Admin/Settings/Page.php:1569 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*) " +"wildcards to exclude all files of a given file type located at a specific " +"path." +msgstr "" +"Le nom de domaine sera supprimé automatiquement de l'URL .
      Utilisez les " +"expressions régulières (.*) pour exclure plusieurs URLs pour un chemin " +"donné." + +#: inc/Engine/Admin/Settings/Page.php:1591 +#: inc/Engine/Admin/Settings/Page.php:1599 +msgid "Heartbeat" +msgstr "Battement de coeur" + +#: inc/Engine/Admin/Settings/Page.php:1592 +msgid "Control WordPress Heartbeat API" +msgstr "Contrôler l'API du battement de coeur de WordPress" + +#: inc/Engine/Admin/Settings/Page.php:1600 +msgid "" +"Reducing or disabling the Heartbeat API’s activity can help save some of " +"your server’s resources." +msgstr "" +"Réduire ou désactiver l'API du signal de battement de coeur peut aider à " +"économier des ressources serveur." + +#: inc/Engine/Admin/Settings/Page.php:1609 +msgid "Reduce or disable Heartbeat activity" +msgstr "Réduire ou désactiver le signal de battement de coeur" + +#: inc/Engine/Admin/Settings/Page.php:1610 +msgid "" +"Reducing activity will change Heartbeat frequency from one hit each minute " +"to one hit every 2 minutes." +msgstr "" +"Réduire l'activité changera la fréquence de battement de coeur de une " +"pulsation par minute à une pulsation aux 2 minutes." + +#: inc/Engine/Admin/Settings/Page.php:1610 +msgid "" +"Disabling Heartbeat entirely may break plugins and themes using this API." +msgstr "" +"Désactiver le battement de coeur complètement peut briser les extensions et " +"thèmes utilisant cet API." + +#: inc/Engine/Admin/Settings/Page.php:1624 +msgid "Do not limit" +msgstr "Ne pas limiter" + +#: inc/Engine/Admin/Settings/Page.php:1625 +msgid "Reduce activity" +msgstr "Réduire l'activité" + +#: inc/Engine/Admin/Settings/Page.php:1626 +msgid "Disable" +msgstr "Désactiver" + +#: inc/Engine/Admin/Settings/Page.php:1634 +msgid "Control Heartbeat" +msgstr "Contrôler le battement de coeur" + +#: inc/Engine/Admin/Settings/Page.php:1643 +msgid "Behavior in backend" +msgstr "Comportement dans le tableau de bord" + +#: inc/Engine/Admin/Settings/Page.php:1650 +msgid "Behavior in post editor" +msgstr "Comportement dans l'éditeur" + +#: inc/Engine/Admin/Settings/Page.php:1656 +msgid "Behavior in frontend" +msgstr "Comportement sur le site" + +#: inc/Engine/Admin/Settings/Page.php:1672 +#: views/settings/page-sections/tutorials.php:36 +msgid "Add-ons" +msgstr "Ajouts" + +#: inc/Engine/Admin/Settings/Page.php:1673 +msgid "Add more features" +msgstr "Ajouter des fonctionnalités" + +#: inc/Engine/Admin/Settings/Page.php:1680 +msgid "One-click Rocket Add-ons" +msgstr "Ajouts Rockets en un clic" + +#: inc/Engine/Admin/Settings/Page.php:1681 +msgid "" +"One-Click Add-ons are features extending available options without " +"configuration needed. Switch the option \"on\" to enable from this screen." +msgstr "" +"Les ajouts en un clic offrent des fonctionnalités complémentaires en " +"augmentant les options déjà disponibles sans besoin de configuration. Mettez" +" l'option à \"ON\" pour l'activer depuis cet écran." + +#: inc/Engine/Admin/Settings/Page.php:1691 +msgid "Rocket Add-ons" +msgstr "Ajouts Rocket" + +#: inc/Engine/Admin/Settings/Page.php:1692 +msgid "Rocket Add-ons are complementary features extending available options." +msgstr "" +"Les ajouts Rockets offrent des fonctionnalités complémentaires augmentant " +"les options déjà disponibles." + +#: inc/Engine/Admin/Settings/Page.php:1705 +msgid "Google Tracking" +msgstr "Suivi Google" + +#: inc/Engine/Admin/Settings/Page.php:1711 +msgid "Improve browser caching for Google Analytics" +msgstr "Améliore le cache navigateur pour Google Analytics" + +#: inc/Engine/Admin/Settings/Page.php:1713 +#, php-format +msgid "" +"WP Rocket will host these Google scripts locally on your server to help " +"satisfy the PageSpeed recommendation for Leverage browser " +"caching.
      %1$sLearn more%2$s" +msgstr "" +"WP Rocket hébergera ces scripts Google localement sur votre serveur pour " +"aider à satisfaire la recommandation de PageSpeed ​​pour Exploiter la " +"mise en cache du navigateur.
      %1$sEn savoir plus%2$s" + +#: inc/Engine/Admin/Settings/Page.php:1728 +msgid "Facebook Pixel" +msgstr "Pixel Facebook" + +#: inc/Engine/Admin/Settings/Page.php:1734 +msgid "Improve browser caching for Facebook Pixel" +msgstr "Améliorer le caching pour le pixel Facebook" + +#: inc/Engine/Admin/Settings/Page.php:1736 +#, php-format +msgid "" +"WP Rocket will host these Facebook Pixels locally on your server to help " +"satisfy the PageSpeed recommendation for Leverage browser " +"caching.
      %1$sLearn more%2$s" +msgstr "" +"WP Rocket hébergera ces pixels Facebook localement sur votre serveur afin de" +" satisfaire aux recommendations de PageSpeed pour Leverage browser " +"caching.
      %1$sPlus d'info%2$s" + +#: inc/Engine/Admin/Settings/Page.php:1749 +#: inc/Engine/Admin/Settings/Page.php:1850 +msgid "Cloudflare" +msgstr "Cloudflare" + +#: inc/Engine/Admin/Settings/Page.php:1755 +msgid "Integrate your Cloudflare account with this add-on." +msgstr "Intégrez votre compte Cloudflare avec cet add-on" + +#: inc/Engine/Admin/Settings/Page.php:1756 +msgid "" +"Provide your account email, global API key, and domain to use options such " +"as clearing the Cloudflare cache and enabling optimal settings with WP " +"Rocket." +msgstr "" +"Entrez l’adresse courriel, la clé d’API globale et le domaine de votre " +"compte Cloudflare afin d’ajouter l’option de purger le cache Cloudflare et " +"activer les réglages optimaux pour fonctionner avec WP Rocket." + +#: inc/Engine/Admin/Settings/Page.php:1790 +msgid "Varnish" +msgstr "Varnish" + +#: inc/Engine/Admin/Settings/Page.php:1796 +msgid "If Varnish runs on your server, you must activate this add-on." +msgstr "Si votre serveur utilise Varnish, vous devez activer cet add-on" + +#: inc/Engine/Admin/Settings/Page.php:1798 +#, php-format +msgid "" +"Varnish cache will be purged each time WP Rocket clears its cache to ensure " +"content is always up-to-date.
      %1$sLearn more%2$s" +msgstr "" +"Le cache Varnish sera purgé à chaque fois que WP Rocket purgera son cache " +"pour vous assurer que le contenu soit toujours à jour.
      %1$sEn savoir " +"plus%2$s" + +#: inc/Engine/Admin/Settings/Page.php:1812 +msgid "Clear the Sucuri cache when WP Rocket’s cache is cleared." +msgstr "Vider le cache Sucuri quand le cache de WP Rocket est vidé." + +#: inc/Engine/Admin/Settings/Page.php:1815 +msgid "" +"Provide your API key to clear the Sucuri cache when WP Rocket’s cache is " +"cleared." +msgstr "" +"Fournir votre clé d'API afin de vider le cache Sucuri quand le cache de WP " +"Rocket sera vidé." + +#: inc/Engine/Admin/Settings/Page.php:1823 +#: inc/Engine/Admin/Settings/Page.php:1967 +msgid "Sucuri" +msgstr "Sucuri" + +#: inc/Engine/Admin/Settings/Page.php:1829 +msgid "Synchronize Sucuri cache with this add-on." +msgstr "Synchronisez le cache Sucuri avec cet add-on." + +#: inc/Engine/Admin/Settings/Page.php:1867 +msgid "Cloudflare credentials" +msgstr "Accès Cloudflare" + +#: inc/Engine/Admin/Settings/Page.php:1876 +msgid "Cloudflare settings" +msgstr "Réglages Cloudflare" + +#: inc/Engine/Admin/Settings/Page.php:1890 +msgctxt "Cloudflare" +msgid "Global API key:" +msgstr "Clé d’API globale :" + +#: inc/Engine/Admin/Settings/Page.php:1891 +msgctxt "Cloudflare" +msgid "Find your API key" +msgstr "Trouver votre clé d’API" + +#: inc/Engine/Admin/Settings/Page.php:1903 +msgctxt "Cloudflare" +msgid "Account email" +msgstr "Courriel du compte" + +#: inc/Engine/Admin/Settings/Page.php:1912 +msgctxt "Cloudflare" +msgid "Zone ID" +msgstr "Identifiant de zone" + +#: inc/Engine/Admin/Settings/Page.php:1922 +msgid "Development mode" +msgstr "Mode développement" + +#: inc/Engine/Admin/Settings/Page.php:1924 +#, php-format +msgid "" +"Temporarily activate development mode on your website. This setting will " +"automatically turn off after 3 hours. %1$sLearn more%2$s" +msgstr "" +"Active temporairement le mode développement sur votre site. Ce réglage se " +"désactivera automatiquement après 3 heures. %1$sEn savoir plus%2$s" + +#: inc/Engine/Admin/Settings/Page.php:1932 +msgid "Optimal settings" +msgstr "Réglages optimaux" + +#: inc/Engine/Admin/Settings/Page.php:1933 +msgid "" +"Automatically enhances your Cloudflare configuration for speed, performance " +"grade and compatibility." +msgstr "" +"Améliore automatiquement votre configuration Cloudflare pour la rapidité de " +"chargement, les notes de performance et la compatibilité." + +#: inc/Engine/Admin/Settings/Page.php:1941 +msgid "Relative protocol" +msgstr "Relatif au protocole" + +#: inc/Engine/Admin/Settings/Page.php:1942 +msgid "" +"Should only be used with Cloudflare's flexible SSL feature. URLs of static " +"files (CSS, JS, images) will be rewritten to use // instead of http:// or " +"https://." +msgstr "" +"Ne devrait être utilisé qu’avec la fonction Flexible SSL de Cloudflare. Les " +"URLs de vos fichiers statiques (CSS, JS, images) seront ré-écrits pour " +"utiliser // au lieu de http:// ou https://." + +#: inc/Engine/Admin/Settings/Page.php:1980 +msgid "Sucuri credentials" +msgstr "Accès Sucuri" + +#: inc/Engine/Admin/Settings/Page.php:1993 +msgctxt "Sucuri" +msgid "" +"Firewall API key (for plugin), must be in format {32 characters}/{32 " +"characters}:" +msgstr "" +"La clé d'API du pare-feu (pour cette extension) doit être au format " +"{32 caractères}/{32 caractères}:" + +#: inc/Engine/Admin/Settings/Page.php:1994 +msgctxt "Sucuri" +msgid "Find your API key" +msgstr "Trouver votre clé d’API" + +#: inc/Engine/Admin/Settings/Render.php:461 inc/deprecated/deprecated.php:1294 +msgid "Upload file and import settings" +msgstr "Envoyer le fichier et importer les réglages" + +#: inc/Engine/Admin/Settings/Settings.php:405 +msgid "" +"Sucuri Add-on: The API key for the Sucuri firewall must be in format " +"{32 characters}/{32 characters}." +msgstr "" +"Ajout Sucuri : la clé d'API pour le pare-feu Sucuri doit être au format " +"{32 caractères}/{32 caractères}." + +#: inc/Engine/Admin/Settings/Settings.php:496 +#: inc/deprecated/deprecated.php:1245 +msgid "Settings saved." +msgstr "Réglages sauvegardés." + +#: inc/Engine/Admin/Settings/Subscriber.php:114 +#: inc/deprecated/deprecated.php:1786 +#: views/settings/page-sections/tools.php:33 +msgid "Tools" +msgstr "Outils" + +#: inc/Engine/Admin/Settings/Subscriber.php:115 +msgid "Import, Export, Rollback" +msgstr "Import, export, restauration" + +#: inc/Engine/Admin/Settings/Subscriber.php:136 +#: views/settings/page-sections/imagify.php:14 +msgid "Image Optimization" +msgstr "Optimisation des images" + +#: inc/Engine/Admin/Settings/Subscriber.php:137 +msgid "Compress your images" +msgstr "Compresser vos images" + +#: inc/Engine/Admin/Settings/Subscriber.php:154 +#: views/settings/page-sections/tutorials.php:45 +msgid "Tutorials" +msgstr "Tutoriels" + +#: inc/Engine/Admin/Settings/Subscriber.php:155 +msgid "Getting started and how to videos" +msgstr "Bien démarrer et vidéos d'assistance" + +#: inc/Engine/CDN/RocketCDN/APIClient.php:154 +msgid "RocketCDN is not available at the moment. Please retry later" +msgstr "" +"RocketCDN n'est pas disponible pour le moment. Veuillez ré-essayer plus " +"tard." + +#: inc/Engine/CDN/RocketCDN/APIClient.php:171 +msgid "RocketCDN cache purge failed: Missing identifier parameter." +msgstr "" +"La purge du cache RocketCDN a échoué : identifiant de réglage manquant." + +#: inc/Engine/CDN/RocketCDN/APIClient.php:180 +msgid "RocketCDN cache purge failed: Missing user token." +msgstr "" +"La purge du cache RocketCDN a échoué : identifiant d'utilisateur manquant." + +#: inc/Engine/CDN/RocketCDN/APIClient.php:199 +msgid "" +"RocketCDN cache purge failed: The API returned an unexpected response code." +msgstr "" +"La purge du cache RocketCDN a échoué : l'API a retourné un code de réponse " +"inattendu." + +#: inc/Engine/CDN/RocketCDN/APIClient.php:208 +msgid "RocketCDN cache purge failed: The API returned an empty response." +msgstr "" +"La purge du cache RocketCDN a échoué : l'API a retourné une réponse vide." + +#: inc/Engine/CDN/RocketCDN/APIClient.php:217 +msgid "RocketCDN cache purge failed: The API returned an unexpected response." +msgstr "" +"La purge du cache RocketCDN a échoué : l'API a retourné une réponse " +"inattendue." + +#: inc/Engine/CDN/RocketCDN/APIClient.php:226 +#, php-format +msgid "RocketCDN cache purge failed: %s." +msgstr "La purge du cache RocketCDN a échoué : %s." + +#: inc/Engine/CDN/RocketCDN/APIClient.php:234 +msgid "RocketCDN cache purge successful." +msgstr "La purge du cache de RocketCDN a été effectuée avec succès." + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:82 +msgid "Next Billing Date" +msgstr "Prochaine date de facturation" + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:91 +msgid "No Subscription" +msgstr "Aucun abonnement" + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:127 +msgid "Your RocketCDN subscription is currently active." +msgstr "Votre abonnement à RocketCDN est présentement activé." + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:133 +#, php-format +msgid "To use RocketCDN, replace your CNAME with %1$s%2$s%3$s." +msgstr "Pour utiliser RocketCDN, remplacer votre CNAME avec %1$s%2$s%3$s." + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:144 +#, php-format +msgid "%1$sMore Info%2$s" +msgstr "%1$sPlus d'Info%2$s" + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:190 +msgid "Manage Subscription" +msgstr "Gérer l'abonnement" + +#: inc/Engine/CDN/RocketCDN/RESTSubscriber.php:134 +msgid "RocketCDN enabled" +msgstr "RocketCDN activé" + +#: inc/Engine/CDN/RocketCDN/RESTSubscriber.php:156 +msgid "RocketCDN disabled" +msgstr "RocketCDN désactivé" + +#: inc/Engine/Cache/AdminSubscriber.php:102 inc/admin/admin.php:71 +#: inc/admin/admin.php:92 inc/deprecated/3.5.php:908 +msgid "Clear this cache" +msgstr "Vider ce cache" + +#: inc/Engine/CriticalPath/APIClient.php:64 +#, php-format +msgid "Critical CSS for %1$s not generated. Error: %2$s" +msgstr "Le CSS critique pour %1$s n'a pas été généré. Erreur : %2$s" + +#: inc/Engine/CriticalPath/APIClient.php:170 +#: inc/Engine/CriticalPath/DataManager.php:66 +#, php-format +msgid "" +"Critical CSS for %1$s on mobile not generated. Error: The API returned an " +"empty response." +msgstr "" +"CSS critique aux mobiles pour %1$s non-généré. Erreur : l'API a retourné une" +" réponse vide." + +#: inc/Engine/CriticalPath/APIClient.php:173 +#: inc/Engine/CriticalPath/DataManager.php:69 +#, php-format +msgid "" +"Critical CSS for %1$s not generated. Error: The API returned an empty " +"response." +msgstr "" +"CSS critique pour %1$s non généré. Erreur : l'API a retourné une réponse " +"vide." + +#: inc/Engine/CriticalPath/APIClient.php:185 +#, php-format +msgid "Critical CSS for %1$s on mobile not generated." +msgstr "CSS critique aux mobiles pour %1$s non-généré." + +#: inc/Engine/CriticalPath/APIClient.php:187 +#: inc/Engine/CriticalPath/ProcessorService.php:193 +#, php-format +msgid "Critical CSS for %1$s not generated." +msgstr "CSS critique pour %1$s non-généré." + +#: inc/Engine/CriticalPath/APIClient.php:195 +#, php-format +msgid "" +"Critical CSS for %1$s on mobile not generated. Error: The API returned an " +"invalid response code." +msgstr "" +"CSS critique aux mobiles pour %1$s non-généré. Erreur : l'API a retourné un " +"code de réponse invalide." + +#: inc/Engine/CriticalPath/APIClient.php:197 +#, php-format +msgid "" +"Critical CSS for %1$s not generated. Error: The API returned an invalid " +"response code." +msgstr "" +"CSS critique pour %1$s non-généré. Erreur : l'API a retourné un code de " +"réponse invalide" + +#: inc/Engine/CriticalPath/APIClient.php:205 +#: inc/Engine/CriticalPath/ProcessorService.php:200 +#, php-format +msgid "Error: %1$s" +msgstr "Erreur : %1$s" + +#: inc/Engine/CriticalPath/Admin/Admin.php:260 +msgid "Regenerate Critical Path CSS" +msgstr "Régénérer le CSS critique" + +#: inc/Engine/CriticalPath/Admin/Post.php:132 +#: views/cpcss/metabox/generate.php:47 +msgid "Generate Specific CPCSS" +msgstr "Générer le CPCSS spécifique" + +#: inc/Engine/CriticalPath/Admin/Post.php:133 +#: views/cpcss/metabox/generate.php:45 +msgid "Regenerate specific CPCSS" +msgstr "Regénérer le CPCSS spécifique" + +#: inc/Engine/CriticalPath/Admin/Post.php:199 +msgid "%l to use this feature." +msgstr "%l pour utiliser cette fonction." + +#: inc/Engine/CriticalPath/Admin/Post.php:202 +#, php-format +msgid "Publish the %s" +msgstr "Publier le %s" + +#: inc/Engine/CriticalPath/Admin/Post.php:203 +msgid "Enable Optimize CSS delivery in WP Rocket settings" +msgstr "" +"Activer l'optimisation du chargement du CSS dans les réglages de WP Rocket" + +#: inc/Engine/CriticalPath/Admin/Post.php:204 +msgid "Enable Optimize CSS delivery in the options above" +msgstr "Activer l'optimisation du chargement du CSS dans les options ci-haut" + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:149 +msgid "Critical CSS generation is currently running." +msgstr "La génération du CSS critique est en cours." + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:154 +#: inc/Engine/Preload/PreloadSubscriber.php:242 +#, php-format +msgid "Go to the %1$sWP Rocket settings%2$s page to track progress." +msgstr "" +"Allez à la page des %1$sparamètres WP Rocket %2$s afin d'en suivre " +"l'évolution." + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:368 +#, php-format +msgid "" +"Critical CSS generation is currently running: %1$d of %2$d page types " +"completed. (Refresh this page to view progress)" +msgstr "" +"La génération du CSS critique est en cours : %1$d de %2$d de types de " +"contenus complétés. (Rafraîchir pour voir la progression)" + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:440 +#, php-format +msgid "Critical CSS generation finished for %1$d of %2$d page types." +msgstr "" +"La génération du CSS critique est terminée pour %1$d des %2$d types de " +"contenus." + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:447 +msgid "Critical CSS generation encountered one or more errors." +msgstr "La génération du CSS critique a rencontré une ou plusieurs erreur(s)." + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:447 +msgid "Learn more." +msgstr "En savoir plus." + +#: inc/Engine/CriticalPath/DataManager.php:102 +msgid "Critical CSS file for mobile does not exist" +msgstr "Fichier critique CSS pour mobiles n'existe pas" + +#: inc/Engine/CriticalPath/DataManager.php:104 +msgid "Critical CSS file does not exist" +msgstr "Fichier critique CSS n'existe pas" + +#: inc/Engine/CriticalPath/DataManager.php:116 +msgid "Critical CSS file for mobile cannot be deleted" +msgstr "Fichier critique CSS pour mobiles ne peut être effacé" + +#: inc/Engine/CriticalPath/DataManager.php:118 +msgid "Critical CSS file cannot be deleted" +msgstr "Fichier critique CSS ne peut être effacé" + +#: inc/Engine/CriticalPath/ProcessorService.php:186 +#, php-format +msgid "Mobile Critical CSS for %1$s not generated." +msgstr "Le CSS critique aux mobiles pour %1$s n'a pas été généré." + +#: inc/Engine/CriticalPath/ProcessorService.php:227 +#, php-format +msgid "Critical CSS for %s in progress." +msgstr "Le CSS critique pour %s est en cours." + +#: inc/Engine/CriticalPath/ProcessorService.php:261 +#, php-format +msgid "Mobile Critical CSS for %s generated." +msgstr "Le CSS critique aux mobiles pour %s est généré." + +#: inc/Engine/CriticalPath/ProcessorService.php:272 +#, php-format +msgid "Critical CSS for %s generated." +msgstr "Le CSS critique pour %s a été généré." + +#: inc/Engine/CriticalPath/ProcessorService.php:294 +msgid "Critical CSS file deleted successfully." +msgstr "Fichier de CSS critique effacé avec succès" + +#: inc/Engine/CriticalPath/ProcessorService.php:316 +#, php-format +msgid "Mobile Critical CSS for %1$s timeout. Please retry a little later." +msgstr "" +"Délai d'attente du CSS critique aux mobiles pour %1$s. Veuillez essayer de " +"nouveau plus tard." + +#: inc/Engine/CriticalPath/ProcessorService.php:329 +#, php-format +msgid "Critical CSS for %1$s timeout. Please retry a little later." +msgstr "" +"Délai d'attente pour le CSS critique pour %1$s. Veuillez essayer de nouveau " +"plus tard." + +#: inc/Engine/CriticalPath/RESTWP.php:130 +msgid "Mobile CPCSS generation not enabled." +msgstr "Génération du CPCSS pour mobiles non-activé" + +#: inc/Engine/CriticalPath/RESTWPPost.php:36 +#: inc/Engine/CriticalPath/RESTWPPost.php:69 +msgid "Requested post does not exist." +msgstr "L'article demandé n'existe pas" + +#: inc/Engine/CriticalPath/RESTWPPost.php:46 +msgid "Cannot generate CPCSS for unpublished post." +msgstr "Impossible de générer le CPCSS pour les articles non-publiés" + +#: inc/Engine/HealthCheck/HealthCheck.php:82 inc/deprecated/3.5.php:868 +msgid "" +"The following scheduled event failed to run. This may indicate the CRON " +"system is not running properly, which can prevent some WP Rocket features " +"from working as intended:" +msgid_plural "" +"The following scheduled events failed to run. This may indicate the CRON " +"system is not running properly, which can prevent some WP Rocket features " +"from working as intended:" +msgstr[0] "" +"L'évènement planifié suivant n'a pas fonctionné. Ceci pourrait indiquer que " +"le système CRON ne fonctionne pas correctement, ce qui peut prévenir " +"certaines fonctionnalités WP Rocket de fonctionner tel que prévu :" +msgstr[1] "" +"Les évènements planifiés suivants n'ont pas fonctionné. Ceci pourrait " +"indiquer que le système CRON ne fonctionne pas correctement, ce qui peut " +"prévenir certaines fonctionnalités WP Rocket de fonctionner tel que prévu :" + +#: inc/Engine/HealthCheck/HealthCheck.php:88 inc/deprecated/3.5.php:877 +msgid "Please contact your host to check if CRON is working." +msgstr "" +"Veuillez contacter votre hébergeur afin de valider si le CRON est " +"fonctionnel." + +#: inc/Engine/HealthCheck/HealthCheck.php:142 +msgid "Scheduled Cache Purge" +msgstr "Purge planifiée de la cache" + +#: inc/Engine/HealthCheck/HealthCheck.php:143 +msgid "Scheduled Database Optimization" +msgstr "Optimisation planifiée de la base de données" + +#: inc/Engine/HealthCheck/HealthCheck.php:144 +msgid "Database Optimization Process" +msgstr "Processus d'optimisation de la base de données" + +#: inc/Engine/HealthCheck/HealthCheck.php:145 +msgctxt "noun" +msgid "Preload" +msgstr "Préchargement" + +#: inc/Engine/HealthCheck/HealthCheck.php:146 +msgid "Critical Path CSS Generation Process" +msgstr "Processus de génération du CSS pour chemin critique" + +#: inc/Engine/Preload/Homepage.php:153 +#, php-format +msgid "" +"Preload encountered an error. Could not gather links on %1$s because of the " +"following error: %2$s. %3$sLearn more%4$s." +msgstr "" +"Le pré-chargement a rencontré une erreur. Impossible de récupérer les liens " +"de %1$s dû à l'erreur suivante : %2$s. %3$sPlus d'info%4$s." + +#: inc/Engine/Preload/Homepage.php:166 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: %2$s. Security measures could be preventing access. " +"%3$sLearn more%4$s." +msgstr "" +"Le pré-chargement a rencontré une erreur. %1$s n'est pas accessible dû au " +"code de réponse suivant : %2$s. Des mesures de sécurité pourraient prévénir " +"l'accès. %3$sPlus d'info%4$s." + +#: inc/Engine/Preload/Homepage.php:172 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: 404. Please make sure your homepage is accessible in your " +"browser. %2$sLearn more%3$s." +msgstr "" +"Le pré-chargement a rencontré une erreur. %1$s n'est pas accessible dû au " +"code de réponse suivant : 404. Veuillez vous assurer que la page d'Accueil " +"est accessible à partir de votre navigateur. %2$sPlus d'info%3$s." + +#: inc/Engine/Preload/Homepage.php:178 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: 500. Please check with your web host about server access. " +"%2$sLearn more%3$s." +msgstr "" +"Le pré-chargement a rencontré une erreur. %1$s n'est pas accessible dû au " +"code de réponse suivant : 500. Veuillez vérifier avec votre hébergeur web " +"concernant l'accès à votre serveur. %2$sPlus d'info%3$s." + +#: inc/Engine/Preload/Homepage.php:184 +#, php-format +msgid "" +"Preload encountered an error. Could not gather links on %1$s because it " +"returned the following response code: %2$s. %3$sLearn more%4$s." +msgstr "" +"Le pré-chargement a rencontré une erreur. Impossible de récupérer les liens " +"sur %1$s parce que le code d'erreur suivant a été retourné : %2$s. %3$sPlus " +"d'info%4$s." + +#: inc/Engine/Preload/PreloadSubscriber.php:237 +msgid "Preload: WP Rocket has started preloading your website." +msgstr "Pré-chargement : WP Rocket a démarré le pré-chargement de votre site" + +#: inc/Engine/Preload/PreloadSubscriber.php:283 +#, php-format +msgid "" +"Preload: %1$s uncached page has now been preloaded. (refresh to see " +"progress)" +msgid_plural "" +"Preload: %1$s uncached pages have now been preloaded. (refresh to see " +"progress)" +msgstr[0] "" +"Préchargement : %1$s page n'étant pas dans le cache a maintenant été " +"préchargée. (rafraîchir pour constater le progrès)" +msgstr[1] "" +"Préchargement : %1$s pages n'étant pas dans le cache on maintenant été " +"préchargées. (rafraîchir pour constater le progrès)" + +#: inc/Engine/Preload/PreloadSubscriber.php:292 +msgid "The following error happened during gathering of the URLs to preload:" +msgid_plural "" +"The following errors happened during gathering of the URLs to preload:" +msgstr[0] "" +"L'erreur suivante est survenue lors de la collecte des URLs à précharger :" +msgstr[1] "" +"Les erreurs suivantes sont survenues lors de la collecte des URLs à " +"précharger :" + +#: inc/Engine/Preload/PreloadSubscriber.php:344 +#, php-format +msgid "Preload complete: %d pages have been cached." +msgstr "Pré-chargement complété : %d pages ont été mises en cache." + +#: inc/Engine/Preload/Sitemap.php:150 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not gather links on %1$s because" +" of the following error: %2$s. %3$sLearn more%4$s." +msgstr "" +"Le chargement du sitemap a rencontré une erreur. Impossible de récupérer les" +" liens sur %1$s à cause de l'erreur suivante : %2$s. %3$sPlus d'info%4$s." + +#: inc/Engine/Preload/Sitemap.php:165 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: %2$s. Security measures could be preventing access." +" %3$sLearn more%4$s." +msgstr "" +"Le chargement du sitemap a rencontré une erreur. %1$s n'est pas accessible " +"dû au messag d'erreur suivant : %2$s. Des mesures de sécurité pourraient " +"empêche l'accès. %3$sPlus d'info%4$s." + +#: inc/Engine/Preload/Sitemap.php:170 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: 404. Please make sure you entered the correct " +"sitemap URL and it is accessible in your browser. %2$sLearn more%3$s." +msgstr "" +"Le chargement du sitemap a rencontré une erreur. %1$s n'est pas accessible " +"dû au code d'erreur suivant : 404. Veuillez vous assurrer que vous avec " +"entré le bon URL pour le sitemap et qu'il est accessible à partir de votre " +"navigateur. %2$sPlus d'info%3$s." + +#: inc/Engine/Preload/Sitemap.php:175 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: 500. Please check with your web host about server " +"access. %2$sLearn more%3$s." +msgstr "" +"Le chargement du sitemap a rencontré une erreur. %1$s n'est pas accessible " +"dû au code d'erreur suivant : 500. Veuillez vérifier avec votre hébergeur " +"web concernant l'accès à votre serveur. %2$sPlus d'info%3$s." + +#: inc/Engine/Preload/Sitemap.php:180 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not gather links on %1$s because" +" it returned the following response code: %2$s. %3$sLearn more%4$s." +msgstr "" +"Le chargement du sitemap a rencontré une erreur. Impossible de récupérer les" +" liens sur %1$s parce que le code d'erreur suivant a été retourné : %2$s. " +"%3$sPlus d'info%4$s." + +#: inc/Engine/Preload/Sitemap.php:196 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not collect links from %1$s " +"because the file is empty. %2$sLearn more%3$s." +msgstr "" +"Le chargement du sitemap a rencontré une erreur. Impossible de récupérer les" +" liens sur %1$s parce que le fichier est vide. %2$sPlus d'info%3$s." + +#: inc/Engine/Preload/Sitemap.php:217 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not collect links from %1$s " +"because of an error during the XML sitemap parsing. %2$sLearn more%3$s." +msgstr "" +"Le chargement du sitemap a rencontré une erreur. Impossible de récupérer les" +" liens sur %1$s à cause d'une erreur durant la lecture du sitemap XML. " +"%2$sPlus d'info%3$s." + +#: inc/Engine/Preload/SitemapPreloadSubscriber.php:120 +#, php-format +msgid "" +"%1$sSimpleXML PHP extension%2$s is not enabled on your server. Please " +"contact your host to enable it before running sitemap-based cache " +"preloading." +msgstr "" +"%1$sL'extension PHP SimpleXML%2$s n'est pas activée sur votre serveur. " +"Veuillez contacter votre hébergeur afin qu'il l'active avant de pouvoir " +"utiliser le pré-chargement du cache par sitemap." + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:78 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"Please deactivate the following %s option which conflicts with WP Rocket " +"features:" +msgid_plural "" +"Please deactivate the following %s options which conflict with WP Rocket " +"features:" +msgstr[0] "" +"Veuillez désactiver l'option %s qui entre en conflit avec les " +"fonctionnalités de WP Rocket :" +msgstr[1] "" +"Veuillez désactiver les %s options suivantes qui entrent en conflit avec les" +" fonctionnalités de WP Rocket :" + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:151 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sdisable emoji%3$s conflicts with WP Rockets %2$sdisable emoji%3$s" +msgstr "" +"%1$s %2$sdésactivation des emojis%3$s entre en conflit avec la " +"%2$sdésactivation des emojis%3$s de WP Rocket" + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:187 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sGZIP compression%3$s conflicts with WP Rocket %2$sGZIP " +"compression%3$s" +msgstr "" +"%1$s %2$scompression GZIP%3$s entre en conflit avec la %2$scompression " +"GZIP%3$s avec WP Rocket" + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:223 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sbrowser caching%3$s conflicts with WP Rocket %2$sbrowser " +"caching%3$s" +msgstr "" +"%1$s %2$scaching du fureteur%3$s entre en conflit avec le %2$scaching du " +"fureteur%3$s de WP Rocket" + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:255 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$spage caching%3$s conflicts with WP Rocket %2$spage caching%3$s" +msgstr "" +"%1$s %2$scaching de page%3$s entre en conflit le %2$spage caching%3$s de WP " +"Rocket" + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:289 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sasset optimization%3$s conflicts with WP Rocket %2$sfile " +"optimization%3$s" +msgstr "" +"%1$s %2$sl'optimisation des fichiers%3$s entre en conflit avec " +"%2$sl'optimisation des fichiers%3$s de WP Rocket" + +#: inc/ThirdParty/Plugins/Smush.php:110 inc/ThirdParty/Plugins/Smush.php:128 +msgid "Smush" +msgstr "Smush" + +#: inc/admin/admin.php:18 inc/common/admin-bar.php:367 +#: inc/deprecated/deprecated.php:1787 +msgid "Support" +msgstr "Soutien" + +#: inc/admin/admin.php:20 +msgid "Docs" +msgstr "Documents" + +#: inc/admin/admin.php:22 inc/common/admin-bar.php:355 +msgid "FAQ" +msgstr "FAQ" + +#: inc/admin/admin.php:24 inc/common/admin-bar.php:64 +msgid "Settings" +msgstr "Réglages" + +#: inc/admin/admin.php:225 inc/admin/admin.php:240 +#: inc/classes/class-wp-rocket-requirements-check.php:203 +#: inc/classes/class-wp-rocket-requirements-check.php:214 +#, php-format +msgid "%s Update Rollback" +msgstr "Retour à la version %s" + +#: inc/admin/admin.php:266 +#, php-format +msgid "%1$sReturn to WP Rocket%2$s or %3$sgo to Plugins page%2$s" +msgstr "" +"%1$sRetourner à WP Rocket%2$s ou %3$saller à la page des extensions%2$s" + +#: inc/admin/admin.php:515 +msgid "Settings import failed: you do not have the permissions to do this." +msgstr "" +"L'import des réglages a échoué : vous n'avez pas les permissions nécessaires" +" pour faire ceci." + +#: inc/admin/admin.php:519 +msgid "Settings import failed: no file uploaded." +msgstr "L'import des réglages a échoué : aucun fichier téléversé." + +#: inc/admin/admin.php:523 +msgid "Settings import failed: incorrect filename." +msgstr "L'import des réglages a échoué : nom de fichier incorrect." + +#: inc/admin/admin.php:534 +msgid "Settings import failed: incorrect filetype." +msgstr "L'import des réglages a échoué : type de fichier incorrect." + +#: inc/admin/admin.php:544 +msgid "Settings import failed: " +msgstr "Échec de l'import des réglages :" + +#: inc/admin/admin.php:560 +msgid "Settings import failed: unexpected file content." +msgstr "Échec de l'import des réglages : contenu du fichier incorrect." + +#: inc/admin/admin.php:581 +msgid "Settings imported and saved." +msgstr "Réglages importés et sauvegardés." + +#: inc/admin/options.php:154 +#, php-format +msgid "%1$s: %2$s." +msgstr "%1$s: %2$s." + +#: inc/admin/options.php:164 +msgid "The following pattern is invalid and has been removed:" +msgid_plural "The following patterns are invalid and have been removed:" +msgstr[0] "Le modèle suivant est non-valide et a été retiré :" +msgstr[1] "Les modèles suivants sont non-valides et ont été retirés :" + +#: inc/admin/ui/meta-boxes.php:14 inc/admin/ui/notices.php:806 +#: inc/common/admin-bar.php:85 inc/common/admin-bar.php:137 +#: views/settings/page-sections/dashboard.php:124 +msgid "Clear cache" +msgstr "Vider le cache" + +#: inc/admin/ui/meta-boxes.php:36 +msgid "WP Rocket Options" +msgstr "Options WP Rocket" + +#: inc/admin/ui/meta-boxes.php:65 +msgid "Never cache this page" +msgstr "Ne jamais mettre en cache cette page" + +#: inc/admin/ui/meta-boxes.php:69 +msgid "Activate these options on this post:" +msgstr "Activer ces options sur cette page :" + +#: inc/admin/ui/meta-boxes.php:72 +msgid "LazyLoad for images" +msgstr "Chargement différé des images" + +#: inc/admin/ui/meta-boxes.php:73 +msgid "LazyLoad for iframes/videos" +msgstr "Chargement différé des iframes et vidéos" + +#: inc/admin/ui/meta-boxes.php:75 +msgid "Minify/combine CSS" +msgstr "Minifier / combiner le CSS" + +#: inc/admin/ui/meta-boxes.php:76 +msgid "Minify/combine JS" +msgstr "Minifier / combiner le JS" + +#: inc/admin/ui/meta-boxes.php:78 +msgid "Optimize CSS Delivery" +msgstr "Optimiser le chargement du CSS" + +#: inc/admin/ui/meta-boxes.php:79 +msgid "Defer JS" +msgstr "Différer le JS" + +#: inc/admin/ui/meta-boxes.php:85 +#, php-format +msgid "Activate first the %s option." +msgstr "Activer d’abord l’option de %s." + +#: inc/admin/ui/meta-boxes.php:101 +#, php-format +msgid "" +"%1$sNote:%2$s None of these options will be applied if this post has been " +"excluded from cache in the global cache settings." +msgstr "" +"%1$sNote:%2$s Aucune de ces options ne sera appliquée à ce contenu s'il a " +"été exclu des paramètres globaux de gestion du cache." + +#: inc/admin/ui/notices.php:25 inc/admin/ui/notices.php:38 +#, php-format +msgid "" +"%1$s has not been deactivated due to missing writing permissions.
      \n" +"Make %2$s writeable and retry deactivation, or force deactivation now:" +msgstr "" +"%1$s n'a pas été désactivé en raisons de l'absence des permissions d'écriture.
      \n" +"Rendez %2$s inscriptible et réessayez de désactiver, ou forcez la désactivation maintenant :" + +#: inc/admin/ui/notices.php:91 +#, php-format +msgid "" +"%s: One or more plugins have been enabled or disabled, " +"clear the cache if they affect the front end of your site." +msgstr "" +"%s: Une ou plusieurs extensions ont été activées ou " +"désactivées, videz le cache si elles influent sur l’apparence de votre site." + +#: inc/admin/ui/notices.php:187 +msgid "" +"WP Rocket Cloudflare Add-on provides similar functionalities. They can not " +"be active at the same time." +msgstr "" +"L'ajout Cloudflare de WP Rocket offre des fonctionnalités similaires. Elles " +"ne peuvent être actives en même temps." + +#: inc/admin/ui/notices.php:211 +#, php-format +msgid "" +"%s: The following plugins are not compatible with this " +"plugin and may cause unexpected results:" +msgstr "" +"%s: Les extensions suivantes ne sont pas compatibles avec " +"cette extension et peuvent générer des résultats inattendus :" + +#: inc/admin/ui/notices.php:217 +msgid "Deactivate" +msgstr "Désactiver" + +#: inc/admin/ui/notices.php:259 +msgid "" +"WP Rocket Footer JS is not an official add-on. It prevents some options in " +"WP Rocket from working correctly. Please deactivate it if you have problems." +msgstr "" +"WP Rocket Footer JS n'est pas un ajout officiel. Il prévient certaines " +"options dans WP Rocket de fonctionner correctement. Veuillez le désactiver " +"si vous avez des problèmes." + +#: inc/admin/ui/notices.php:299 +#, php-format +msgid "" +"Endurance Cache is currently enabled, which will conflict with WP Rocket " +"Cache. Please set the Endurance Cache cache level to Off (Level 0) on the " +"%1$sSettings > General%2$s page to prevent any issues." +msgstr "" +"Endurance Cache est présentement activé, ce qui peut causer conflit avec le " +"cache de WP Rocket. Veuillez configurer le niveau de Endurance Cache à " +"\"Off\" (Niveau 0) sur la page %1$sParamètres > Général%2$s afin de prévenir" +" tout problème." + +#: inc/admin/ui/notices.php:320 +#, php-format +msgid "" +"%1$s: A custom permalink structure is required for the plugin to work " +"properly. %2$sGo to permalinks settings%3$s" +msgstr "" +"%1$s: Une structure de permalien personnalisée est requise pour que cette " +"extension fonctionne. %2$sRendez-vous aux réglages des permaliens%3$s" + +#: inc/admin/ui/notices.php:402 +#, php-format +msgid "" +"%s could not modify the .htaccess file due to missing writing permissions." +msgstr "" +"%s n'a pas pu modifier le fichier .htaccess dû à l'absence de permissions " +"d'écriture.." + +#: inc/admin/ui/notices.php:408 inc/admin/ui/notices.php:883 +#, php-format +msgid "Troubleshoot: %1$sHow to make system files writeable%2$s" +msgstr "" +"Pour résoudre le problème : %1$sComment rendre les fichiers systèmes " +"accessible à l'écriture%2$s" + +#: inc/admin/ui/notices.php:410 inc/admin/ui/notices.php:885 +msgid "" +"https://docs.wp-rocket.me/article/626-how-to-make-system-files-htaccess-wp-" +"config-writeable/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://fr.docs.wp-rocket.me/article/945-fichiers-systemes-accessible-" +"ecriture/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: inc/admin/ui/notices.php:416 +msgid "" +"Don’t worry, WP Rocket’s page caching and settings will still function " +"correctly." +msgstr "" +"Pas d'inquiétude, la mise en cache de pages et les paramètres fonctionneront" +" correctement." + +#: inc/admin/ui/notices.php:416 +msgid "" +"For optimal performance, adding the following lines into your .htaccess is " +"recommended (not required):" +msgstr "" +"Pour une performance optimale, il est recommandé d'ajouter les lignes " +"suivantes à votre fichier .htaccess (optionnel) :" + +#: inc/admin/ui/notices.php:563 +#, php-format +msgid "" +"%1$s is good to go! %2$sTest your load time%4$s, or visit your " +"%3$ssettings%4$s." +msgstr "" +"%1$s est prêt à décoller ! %2$sTestez votre temps de chargement%4$s, ou " +"jetez un oeil aux %3$sréglages%4$s." + +#: inc/admin/ui/notices.php:636 +msgid "" +"Would you allow WP Rocket to collect non-sensitive diagnostic data from this" +" website?" +msgstr "" +"Autorisez-vous WP Rocket à recueillir des données de diagnostic non-" +"sensibles de ce site web ?" + +#: inc/admin/ui/notices.php:637 +msgid "This would help us to improve WP Rocket for you in the future." +msgstr "Cela nous aiderait à améliorer WP Rocket pour vous dans le futur." + +#: inc/admin/ui/notices.php:643 +msgid "What info will we collect?" +msgstr "Quelles infos recueillerons-nous ?" + +#: inc/admin/ui/notices.php:648 +msgid "" +"Below is a detailed view of all data WP Rocket will collect if granted " +"permission. WP Rocket will never transmit any domain names or email " +"addresses (except for license validation), IP addresses, or third-party API " +"keys." +msgstr "" +"Vous trouverez ci-dessous une vue détaillée de toutes les données que WP " +"Rocket recueillera si vous nous le permettez. WP Rocket ne transmettra " +"jamais de noms de domaine ou d'adresses courriel (sauf pour la validation de" +" licence), d'adresses IP ou de clés d’API tierce-partie." + +#: inc/admin/ui/notices.php:657 +msgid "Yes, allow" +msgstr "Oui, autoriser" + +#: inc/admin/ui/notices.php:660 +msgid "No, thanks" +msgstr "Non, merci" + +#: inc/admin/ui/notices.php:699 +msgid "Thank you!" +msgstr "Merci!" + +#: inc/admin/ui/notices.php:704 +msgid "WP Rocket now collects these metrics from your website:" +msgstr "WP Rocket recueille désormais ces données de votre site web :" + +#: inc/admin/ui/notices.php:742 +#, php-format +msgid "%s: Cache cleared." +msgstr "%s : Cache vidé." + +#: inc/admin/ui/notices.php:749 +#, php-format +msgid "%s: Post cache cleared." +msgstr "%s : Cache des articles vidé." + +#: inc/admin/ui/notices.php:756 +#, php-format +msgid "%s: Term cache cleared." +msgstr "%s : Cache des termes vidé." + +#: inc/admin/ui/notices.php:763 +#, php-format +msgid "%s: User cache cleared." +msgstr "%s : Cache des utilisateurs vidé." + +#: inc/admin/ui/notices.php:809 +msgid "Stop Preload" +msgstr "Cesser le pré-chargement" + +#: inc/admin/ui/notices.php:827 +msgid "Force deactivation " +msgstr "Forcer la désactivation " + +#: inc/admin/ui/notices.php:840 +msgid "The following code should have been written to this file:" +msgstr "Le code suivant aurait dû être écrit dans ce fichier :" + +#: inc/admin/ui/notices.php:850 views/settings/page-sections/dashboard.php:46 +msgid "Dismiss this notice." +msgstr "Ne pas tenir compte de cet avertissement." + +#: inc/admin/ui/notices.php:871 +#, php-format +msgid "%s cannot configure itself due to missing writing permissions." +msgstr "" +"%s ne peut pas s’auto-configurer en raison de l'absence de permissions en " +"écriture." + +#: inc/admin/ui/notices.php:877 +#, php-format +msgid "Affected file/folder: %s" +msgstr "Fichier/dossier affecté : %s" + +#: inc/classes/admin/Database/class-optimization.php:47 +msgid "Transients" +msgstr "Transients" + +#: inc/classes/admin/Database/class-optimization.php:48 +msgid "Tables" +msgstr "Tables" + +#: inc/classes/admin/class-logs.php:124 +msgid "The debug file could not be deleted." +msgstr "Le fichier de debug n'a pu être effacé." + +#: inc/classes/class-wp-rocket-requirements-check.php:147 +#, php-format +msgid "To function properly, %1$s %2$s requires at least:" +msgstr "Pour fonctionner correctement, %1$s %2$s nécessite au moins :" + +#: inc/classes/class-wp-rocket-requirements-check.php:151 +#, php-format +msgid "" +"PHP %1$s. To use this WP Rocket version, please ask your web host how to " +"upgrade your server to PHP %1$s or higher." +msgstr "" +"PHP %1$s. Pour utiliser cette version de WP Rocket, demandez à votre " +"hébergeur comment mettre à niveau votre serveur vers PHP %1$s ou supérieur." + +#: inc/classes/class-wp-rocket-requirements-check.php:156 +#, php-format +msgid "" +"WordPress %1$s. To use this WP Rocket version, please upgrade WordPress to " +"version %1$s or higher." +msgstr "" +"WordPress %1$s. Pour utiliser cette version de WP Rocket, mettez à jour " +"WordPress à la version %1$s ou plus récente." + +#: inc/classes/class-wp-rocket-requirements-check.php:159 +msgid "" +"If you are not able to upgrade, you can rollback to the previous version by " +"using the button below." +msgstr "" +"Si vous n'êtes pas en mesure d’effectuer le rehaussement, vous pouvez " +"restaurer WP Rocket à sa version précédente en utilisant le bouton ci-" +"dessous." + +#: inc/classes/class-wp-rocket-requirements-check.php:161 +#: inc/deprecated/deprecated.php:1947 +#, php-format +msgid "Re-install version %s" +msgstr "Réinstaller la version %s" + +#: inc/classes/logger/class-logger.php:254 +#: inc/classes/logger/class-logger.php:286 +msgid "The log file does not exist." +msgstr "Le fichier de log n'existe pas." + +#: inc/classes/logger/class-logger.php:260 +#: inc/classes/logger/class-logger.php:292 +msgid "The log file could not be read." +msgstr "Le fichier de log n'a pu être lu." + +#: inc/classes/logger/class-logger.php:279 +msgid "The logs are not saved into a file." +msgstr "Les logs n'ont pu être sauvés dans un fichier." + +#: inc/classes/subscriber/Cache/class-expired-cache-purge-subscriber.php:128 +msgid "WP Rocket Expired Cache Interval" +msgstr "Intervalle d'expiration du cache WP Rocket" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:269 +#, php-format +msgid "" +"You are using %1$s to serve WebP images so you do not need to enable this " +"option. If you prefer to have WP Rocket serve WebP for you instead, please " +"disable them from serving in %1$s. %2$sMore info%3$s" +msgid_plural "" +"You are using %1$s to serve WebP images so you do not need to enable this " +"option. If you prefer to have WP Rocket serve WebP for you instead, please " +"disable them from serving in %1$s. %2$sMore info%3$s" +msgstr[0] "" +"Vous utilisez %1$s pour servir les images WebP donc vous n'avez pas besoin " +"d'activer cette option. Si vous préférez que WP Rocket serve les fichiers " +"WebP pour vous à la place, veuillez les désactiver d'être servis par %1$s. " +"%2$sPlus d'info%3$s" +msgstr[1] "" +"Vous utilisez %1$s pour servir les images WebP donc vous n'avez pas besoin " +"d'activer cette option. Si vous préférez que WP Rocket serve les fichiers " +"WebP pour vous à la place, veuillez les désactiver d'être servis par %1$s. " +"%2$sPlus d'info%3$s" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:280 +msgid "WebP cache is disabled by filter." +msgstr "La mise en cache de WebP est désactivée par filtre." + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:290 +#: inc/classes/subscriber/Media/class-webp-subscriber.php:316 +#, php-format +msgid "" +"You are using %1$s to convert images to WebP. If you want WP Rocket to serve" +" them for you, activate this option. %2$sMore info%3$s" +msgid_plural "" +"You are using %1$s to convert images to WebP. If you want WP Rocket to serve" +" them for you, activate this option. %2$sMore info%3$s" +msgstr[0] "" +"Vous utilisez %1$s pour convertir vos images à WebP. Si vous voulez que WP " +"Rocket les serve pour vous, activez cette options. %2$sPlus d'info %3$s" +msgstr[1] "" +"Vous utilisez %1$s pour convertir vos images à WebP. Si vous voulez que WP " +"Rocket les serve pour vous, activez cette options. %2$sPlus d'info %3$s" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:302 +#: inc/classes/subscriber/Media/class-webp-subscriber.php:328 +#, php-format +msgid "" +"You are using %1$s to convert images to WebP. WP Rocket will create separate" +" cache files to serve your WebP images. %2$sMore info%3$s" +msgid_plural "" +"You are using %1$s to convert images to WebP. WP Rocket will create separate" +" cache files to serve your WebP images. %2$sMore info%3$s" +msgstr[0] "" +"Vous utilisez %1$s pour convertir des images à WebP. WP Rocket va créer des " +"fichiers de cache séparés afin de servir vos images WebP. %2$sPlus d'info " +"%3$s" +msgstr[1] "" +"Vous utilisez %1$s pour convertir des images à WebP. WP Rocket va créer des " +"fichiers de cache séparés afin de servir vos images WebP. %2$sPlus d'info " +"%3$s" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:349 +#, php-format +msgid "" +"You don’t seem to be using a method to create and serve WebP that we are " +"auto-compatible with. If you are not using WebP do not enable this option. " +"%1$sMore info%2$s" +msgstr "" +"Vous ne semblez pas utiliser une méthode pour créer et servir des WebP avec " +"laquelle nous sommes compatibles automatiquement. Si vous n'utilisez pas " +"WebP, n'activez pas cette option. %1$sPlus d'info %2$s" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:354 +msgid "We have not detected any compatible WebP plugin!" +msgstr "Nous n'avons pas détecté d'extension compatible avec WebP!" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:357 +#, php-format +msgid "" +"If you activate this option WP Rocket will create separate cache files to " +"serve WebP images. Any WebP images you have on your site will be served from" +" these files to compatible browsers. If you don’t already have WebP images " +"on your site consider using %1$sImagify%3$s or another supported plugin. " +"%2$sMore info%3$s" +msgstr "" +"Si vous activez cette option, WP Rocket va créer des fichiers de cache " +"séparés pour servir les images WebP. Toute image WebP que vous avez sur " +"votre site sera service de ces fichiers pour les navigateurs compatibles. Si" +" vous n'avez pas déjà d'images WebP sur votre site, considérez utiliser " +"%1$sImagify%3$s ou une autre extension supportée. %2$sPlus d'info%3$s" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:369 +msgid "WP Rocket will create separate cache files to serve your WebP images." +msgstr "" +"WP Rocket va créer des fichier de cache séparés afin de servir vos images " +"WebP" + +#: inc/classes/subscriber/Tools/class-detect-missing-tags-subscriber.php:151 +#, php-format +msgid "" +"Failed to detect the following requirement in your theme: closing %1$s." +msgid_plural "" +"Failed to detect the following requirements in your theme: closing %1$s." +msgstr[0] "" +"Échec de la détection du requis suivant de votre thème : fermer %1$s." +msgstr[1] "" +"Échec de la détection des requis suivants de votre thème : fermer %1$s." + +#: inc/classes/subscriber/Tools/class-detect-missing-tags-subscriber.php:159 +msgid "" +"https://docs.wp-rocket.me/article/99-pages-not-cached-or-minify-cssjs-not-" +"working/?utm_source=wp_plugin&utm_medium=wp_rocket#theme" +msgstr "" +"https://docs.wp-rocket.me/article/99-pages-not-cached-or-minify-cssjs-not-" +"working/?utm_source=wp_plugin&utm_medium=wp_rocket#theme" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:98 +msgid "monthly" +msgstr "mensuel" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:211 +msgid "Database optimization process is running" +msgstr "L'optimisation de la base de données est en cours" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:242 +msgid "" +"Database optimization process is complete. Everything was already optimized!" +msgstr "" +"L'optimisation de la base de donnée est terminée. Tout était déjà optimisé!" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:245 +msgid "" +"Database optimization process is complete. List of optimized items below:" +msgstr "" +"L'optimisation de la base de donnée est terminée. Voici la liste des " +"optimisations effectuées :" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:253 +#, php-format +msgid "%1$d %2$s optimized." +msgstr "%1$d %2$s optimisé(s)." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:116 +#, php-format +msgid "Sucuri cache purge error: %s" +msgstr "Erreur lors de la purge du cache Sucuri : %s" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:121 +msgid "" +"The Sucuri cache is being cleared. Note that it may take up to two minutes " +"for it to be fully flushed." +msgstr "" +"Le cache Sucuri est en cours de purge. Notez que ceci peut prendre jusqu'à " +"deux minutes avant d'être complété." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:244 +msgid "Sucuri firewall API key was not found." +msgstr "La clé d'API du pare-feu Sucuri n'a pu être trouvée." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:256 +msgid "Sucuri firewall API key is invalid." +msgstr "La clé d'API du pare-feu Sucuri est invalide." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:311 +msgid "Error when contacting Sucuri firewall API." +msgstr "Erreur de communication pour l'API du pare-feu Sucuri." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:324 +#, php-format +msgid "Error when contacting Sucuri firewall API. Error message was: %s" +msgstr "" +"Erreur lors de la communication avec l'API du pare-feu Sucuri. Le message " +"d'erreur était : %s" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:338 +msgid "Could not get a response from the Sucuri firewall API." +msgstr "Impossible d'obtenir une réponse de l'API du pare-feu Sucuri." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:352 +msgid "Got an invalid response from the Sucuri firewall API." +msgstr "Reçu une réponse invalide de l'API du pare-feu Sucuri." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:365 +msgid "The Sucuri firewall API returned an unknown error." +msgstr "L'API du pare-feu Sucuri a retourné une erreur inconnue." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:368 +#, php-format +msgid "The Sucuri firewall API returned the following error: %s" +msgid_plural "The Sucuri firewall API returned the following errors: %s" +msgstr[0] "L'API du pare-feu Sucuri a retourné l'erreur suivante : %s" +msgstr[1] "L'API du pare-feu Sucuri a retourné les erreurs suivantes : %s" + +#: inc/classes/traits/trait-updater-api-tools.php:53 +#: inc/deprecated/3.3.php:761 inc/deprecated/3.3.php:770 +#, php-format +msgid "" +"An unexpected error occurred. Something may be wrong with WP-Rocket.me or " +"this server’s configuration. If you continue to have problems, contact support." +msgstr "" +"Une erreur inattendue s’est produite. Quelque chose ne va pas avec WP-" +"Rocket.me ou avec la configuration de ce serveur. Si vous continuez à avoir " +"des problèmes, contactez notre soutien technique." + +#: inc/common/admin-bar.php:125 inc/common/admin-bar.php:293 +#: inc/functions/i18n.php:41 inc/functions/i18n.php:51 +msgid "All languages" +msgstr "Toutes les langues" + +#: inc/common/admin-bar.php:152 +msgid "Clear this post" +msgstr "Vider cet article" + +#: inc/common/admin-bar.php:166 +msgid "Purge this URL" +msgstr "Purger cet URL" + +#: inc/common/admin-bar.php:192 +msgid "Purge OPcache" +msgstr "Vider OPcache" + +#: inc/common/admin-bar.php:210 +msgid "Clear Cloudflare cache" +msgstr "Vider le cache Cloudflare" + +#: inc/common/admin-bar.php:228 +msgid "Purge Sucuri cache" +msgstr "Purger le cache Sucuri" + +#: inc/common/admin-bar.php:251 inc/common/admin-bar.php:305 +#: views/settings/page-sections/dashboard.php:144 +msgid "Preload cache" +msgstr "Précharger le cache" + +#: inc/common/admin-bar.php:330 views/settings/fields/rocket-cdn.php:55 +msgid "Purge RocketCDN cache" +msgstr "Purger le cache RocketCDN" + +#: inc/common/admin-bar.php:343 views/settings/partials/documentation.php:14 +msgid "Documentation" +msgstr "Documentation" + +#: inc/common/purge.php:569 +msgid "OPcache purge failed." +msgstr "La purge de OpCache a échoué." + +#: inc/common/purge.php:574 +msgid "OPcache successfully purged" +msgstr "OpCache purgé avec succès" + +#: inc/deprecated/3.2.php:52 views/settings/page-sections/imagify.php:36 +msgid "Activate Imagify" +msgstr "Activer Imagify" + +#: inc/deprecated/3.2.php:52 +msgid "Install Imagify for Free" +msgstr "Installer Imagify gratuitement" + +#: inc/deprecated/3.2.php:67 +msgid "" +"Speed up your website and boost your SEO by reducing image file sizes " +"without losing quality with Imagify." +msgstr "" +"Accélérez votre site web et améliorez votre référencement en réduisant le " +"poids de vos image sans perte de qualité avec Imagify." + +#: inc/deprecated/3.2.php:72 +msgid "More details" +msgstr "Plus de détails" + +#: inc/deprecated/3.2.php:228 +#, php-format +msgid "Sitemap preload: %d pages have been cached." +msgstr "Pré-chargement du Sitemap : %d pages ont été mises en cache." + +#: inc/deprecated/3.2.php:261 +#, php-format +msgid "" +"Sitemap preload: %d uncached pages have now been preloaded. (refresh to see " +"progress)" +msgstr "" +"Pré-chargement du Sitemap : %d pages ont été pré-chargées. (rafraîchir pour " +"voir la progression)" + +#: inc/deprecated/3.4.php:18 +msgid "Choose a domain from the list" +msgstr "Choisissez un domaine dans la liste" + +#: inc/deprecated/3.4.php:31 +msgid "No domain available in your Cloudflare account" +msgstr "Aucun domaine disponible dans votre compte Cloudflare" + +#: inc/deprecated/3.5.php:81 inc/deprecated/3.5.php:205 +msgid "" +"Curl is disabled on your server. Please ask your host to enable it. This is " +"required for the Cloudflare Add-on to work correctly." +msgstr "" +"CURL est désactivé sur votre serveur. Veuillez demander à votre hébergeur de" +" l'activer. Ceci est requis pour que l'ajout Cloudflare fonctionne " +"correctement." + +#: inc/deprecated/3.5.php:89 +#, php-format +msgid "" +"Cloudflare email, API key and Zone ID are not set. Read the " +"%1$sdocumentation%2$s for further guidance." +msgstr "" +"Le courriel, la clé d'API et le Zone ID de Cloudflare de sont pas définis. " +"Lisez la %1$sdocumentation%2$s pour plus d'assistance." + +#: inc/deprecated/3.5.php:216 +#, php-format +msgid "" +"Cloudflare email and API key are not set. Read the %1$sdocumentation%2$s for" +" further guidance." +msgstr "" +"Le courriel et la clé d'API de Cloudflare ne sont pas configurés. Lisez la " +"%1$sdocumentation%2$s pour plus d'assistance." + +#: inc/deprecated/3.5.php:281 +msgid "Connection to Cloudflare failed" +msgstr "La connexion à Cloudflare a échoué" + +#: inc/deprecated/DeprecatedClassTrait.php:54 +#, php-format +msgid "" +"The called class %1$s is deprecated since version %2$s! Use" +" %3$s instead." +msgstr "" +"La classe appelée %1$s est obsolète depuis la version %2$s!" +" Utilisez %3$s à la place." + +#: inc/deprecated/DeprecatedClassTrait.php:65 +#, php-format +msgid "" +"The called class %1$s is deprecated since version %2$s!" +msgstr "" +"La classe appelée %1$s est obsolète depuis la version %2$s!" + +#: inc/deprecated/deprecated.php:240 +msgid "JS files with Deferred Loading JavaScript" +msgstr "Fichiers JS en chargement différé du JavaScript" + +#: inc/deprecated/deprecated.php:293 +msgid "Add URL" +msgstr "Ajouter un URL" + +#: inc/deprecated/deprecated.php:1277 views/settings/fields/import-form.php:22 +msgid "" +"Before you can upload your import file, you will need to fix the following " +"error:" +msgstr "" +"Avant de pouvoir envoyer votre fichier d’import, vous devez régler l’erreur " +"suivante :" + +#: inc/deprecated/deprecated.php:1288 views/settings/fields/import-form.php:35 +#, php-format +msgid "Choose a file from your computer (maximum size: %s)" +msgstr "Choisissez un fichier de votre ordinateur (poids maximum : %s)" + +#: inc/deprecated/deprecated.php:1385 +msgid "Your Cloudflare credentials are valid." +msgstr "Vos accès Cloudflare sont valides." + +#: inc/deprecated/deprecated.php:1389 +msgid "Your Cloudflare credentials are invalid!" +msgstr "Vos accès Cloudflare sont invalides!" + +#: inc/deprecated/deprecated.php:1453 +msgid "Save and optimize" +msgstr "Sauvegarder et optimiser" + +#: inc/deprecated/deprecated.php:1453 +msgid "Optimize" +msgstr "Optimiser" + +#: inc/deprecated/deprecated.php:1464 inc/deprecated/deprecated.php:1666 +msgctxt "screen-reader-text" +msgid "Note:" +msgstr "Note :" + +#: inc/deprecated/deprecated.php:1470 +msgctxt "screen-reader-text" +msgid "Performance tip:" +msgstr "Truc de performance :" + +#: inc/deprecated/deprecated.php:1476 +msgctxt "screen-reader-text" +msgid "Third-party feature detected:" +msgstr "Autre fonctionnalité détectée :" + +#: inc/deprecated/deprecated.php:1488 inc/deprecated/deprecated.php:1672 +msgctxt "screen-reader-text" +msgid "Warning:" +msgstr "Attention : " + +#: inc/deprecated/deprecated.php:1501 +msgctxt "button text" +msgid "Download settings" +msgstr "Télécharger les réglages" + +#: inc/deprecated/deprecated.php:1531 +msgid "Replace site's hostname with:" +msgstr "Remplacer le nom d’hôte du site par :" + +#: inc/deprecated/deprecated.php:1550 inc/deprecated/deprecated.php:1587 +#: inc/deprecated/deprecated.php:1615 views/settings/fields/cnames.php:32 +#: views/settings/fields/cnames.php:64 views/settings/fields/cnames.php:94 +msgid "reserved for" +msgstr "réservé pour" + +#: inc/deprecated/deprecated.php:1552 inc/deprecated/deprecated.php:1589 +#: inc/deprecated/deprecated.php:1617 views/settings/fields/cnames.php:35 +#: views/settings/fields/cnames.php:67 views/settings/fields/cnames.php:97 +msgid "All files" +msgstr "Tous les fichiers" + +#: inc/deprecated/deprecated.php:1564 inc/deprecated/deprecated.php:1594 +#: inc/deprecated/deprecated.php:1622 views/settings/fields/cnames.php:47 +#: views/settings/fields/cnames.php:79 views/settings/fields/cnames.php:109 +msgid "Images" +msgstr "Images" + +#: inc/deprecated/deprecated.php:1635 views/settings/fields/cnames.php:120 +msgid "Add CNAME" +msgstr "Ajouter un CNAME" + +#: inc/deprecated/deprecated.php:1706 views/settings/partials/sidebar.php:16 +msgid "Watch the video" +msgstr "Voir la vidéo" + +#: inc/deprecated/deprecated.php:1771 +msgid "Basic" +msgstr "Base" + +#: inc/deprecated/deprecated.php:1772 +msgid "Static Files" +msgstr "Fichiers statiques" + +#: inc/deprecated/deprecated.php:1774 +msgid "Advanced" +msgstr "Avancé" + +#: inc/deprecated/deprecated.php:1944 +#, php-format +msgid "" +"%1$s %2$s requires at least PHP %3$s to function properly. To use this " +"version, please ask your web host how to upgrade your server to PHP %3$s or " +"higher. If you are not able to upgrade, you can rollback to the previous " +"version by using the button below." +msgstr "" +"%1$s %2$s requiert au moins PHP %3$s pour fonctionner correctement. Pour " +"utiliser cette version, demandez à votre hébergeur de mettre à jour votre " +"serveur vers PHP %3$s ou plus. Si cette mise-à-jour n'est pas possible, vous" +" pouvez revenir à la version précédente en utilisant le bouton ci-dessous." + +#: inc/functions/admin.php:23 +msgid "" +"There seems to be an issue validating your license. Please see the error " +"message below." +msgid_plural "" +"There seems to be an issue validating your license. You can see the error " +"messages below." +msgstr[0] "" +"Il semble y avoir un problème à confirmer votre licence. Vous pouvez voir le" +" message d'erreur ci-dessous." +msgstr[1] "" +"Il semble y avoir un problème à confirmer votre licence. Vous pouvez voir " +"les messages d'erreur ci-dessous." + +#: inc/functions/admin.php:363 +msgid "Server type:" +msgstr "Type de serveur :" + +#: inc/functions/admin.php:372 +msgid "PHP version number:" +msgstr "Version PHP :" + +#: inc/functions/admin.php:381 +msgid "WordPress version number:" +msgstr "Version de WordPress :" + +#: inc/functions/admin.php:390 +msgid "WordPress multisite:" +msgstr "WordPress Multisite :" + +#: inc/functions/admin.php:399 +msgid "Current theme:" +msgstr "Thème actif :" + +#: inc/functions/admin.php:408 +msgid "Current site language:" +msgstr "Langage du site :" + +#: inc/functions/admin.php:417 +msgid "Active plugins:" +msgstr "Extensions actives :" + +#: inc/functions/admin.php:420 +msgid "Plugin names of all active plugins" +msgstr "Noms de toutes les extensions actives" + +#: inc/functions/admin.php:426 +msgid "Anonymized WP Rocket settings:" +msgstr "Réglages de WP Rocket anonymisés :" + +#: inc/functions/admin.php:429 +msgid "Which WP Rocket settings are active" +msgstr "Quels sont les réglages activés de WP Rocket" + +#: inc/functions/options.php:544 inc/functions/options.php:583 +msgid "" +"License validation failed. Our server could not resolve the request from " +"your website." +msgstr "" +"Échec de la validation de la licence. Notre serveur ne peut compléter la " +"requête de votre site web." + +#: inc/functions/options.php:544 inc/functions/options.php:583 +#, php-format +msgid "" +"Try clicking %1$sSave Changes%2$s below. If the error persists, follow " +"%3$sthis guide%4$s." +msgstr "" +"Essayez de cliquer %1$sSauvegarder les changements%2$s ci-dessous. Si " +"l'erreur persiste, suivez %3$sce guide%4$s." + +#: inc/functions/options.php:560 +msgid "" +"License validation failed. You may be using a nulled version of the plugin. " +"Please do the following:" +msgstr "" +"La validation de votre licence a échoué. Vous utilisez peut-être une version" +" piratée de cette extension. Veuillez suivre les points suivants :" + +#: inc/functions/options.php:560 inc/functions/options.php:602 +#, php-format +msgid "Login to your WP Rocket %1$saccount%2$s" +msgstr "Connectez-vous à votre %1$scompte%2$s WP Rocket" + +#: inc/functions/options.php:560 inc/functions/options.php:602 +msgid "Download the zip file" +msgstr "Télécharger le fichier ZIP" + +#: inc/functions/options.php:560 inc/functions/options.php:602 +msgid "Reinstall" +msgstr "Réinstaller" + +#: inc/functions/options.php:560 +#, php-format +msgid "" +"If you do not have a WP Rocket account, please %1$spurchase a license%2$s." +msgstr "" +"Si vous n'avez pas de compte WP Rocket, svp %1$sacheter une licence%2$s." + +#: inc/functions/options.php:568 +msgid "" +"License validation failed. This user account does not exist in our database." +msgstr "" +"Échec de validation de la licence. Le compte d'usager n'existe pas dans " +"notre base de données." + +#: inc/functions/options.php:568 +msgid "To resolve, please contact support." +msgstr "Pour résoudre, svp contacter le soutien technique." + +#: inc/functions/options.php:576 +msgid "License validation failed. This user account is blacklisted." +msgstr "" +"Échec de validation de la licence. Ce compte usager est sur notre liste " +"noire." + +#: inc/functions/options.php:576 +#, php-format +msgid "Please see %1$sthis guide%2$s for more info." +msgstr "Veuillez consulter %1$sce guide%2$s pour plus d'info." + +#: inc/functions/options.php:596 +msgid "Your license is not valid." +msgstr "Votre licence n’est pas valide." + +#: inc/functions/options.php:596 +#, php-format +msgid "Make sure you have an active %1$sWP Rocket license%2$s." +msgstr "Assurez-vous d'avoir une licence %1$sactive de WP Rocket %2$s." + +#: inc/functions/options.php:598 +msgid "You have added as many sites as your current license allows." +msgstr "" +"Vous avez ajouté autant de sites que votre licence actuelle le permet." + +#: inc/functions/options.php:598 +#, php-format +msgid "" +"Upgrade your %1$saccount%2$s or %3$stransfer your license%2$s to this " +"domain." +msgstr "" +"Rehausser votre %1$scompte%2$s ou %3$stransférer votre licence%2$s à ce " +"domaine." + +#: inc/functions/options.php:600 +msgid "This website is not allowed." +msgstr "Ce site n'est pas autorisé." + +#: inc/functions/options.php:600 +#, php-format +msgid "Please %1$scontact support%2$s." +msgstr "Svp %1$scontacter le soutien technique%2$s." + +#: inc/functions/options.php:602 +msgid "This license key is not recognized." +msgstr "La clé de licence n'est pas reconnue." + +#: inc/functions/options.php:602 +#, php-format +msgid "If the issue persists, please %1$scontact support%2$s." +msgstr "Si le problème persiste, svp %1$scontacter le soutien technique%2$s." + +#: inc/functions/options.php:608 +#, php-format +msgid "License validation failed: %s" +msgstr "Échec de validation de la licence : %s" + +#: inc/vendors/classes/class-imagify-partner.php:531 +msgid "Plugin installed successfully." +msgstr "Extension installée avec succés." + +#: inc/vendors/classes/class-imagify-partner.php:532 +msgid "Sorry, you are not allowed to install plugins on this site." +msgstr "" +"Désolé, vous n'avez pas les droits requis pour installer des extensions sur " +"ce site." + +#: inc/vendors/classes/class-imagify-partner.php:533 +msgid "Sorry, you are not allowed to do that." +msgstr "Désolé, vous n'avez pas droit de faire cela." + +#: inc/vendors/classes/class-imagify-partner.php:534 +msgid "Plugin install failed." +msgstr "Installation de l'extension échouée." + +#: inc/vendors/classes/class-imagify-partner.php:535 +msgid "Go back" +msgstr "Retour en arrière" + +#: views/cpcss/activate-cpcss-mobile.php:13 +msgid "Optimize CSS delivery for mobile" +msgstr "Optimiser la livraison du CSS pour les mobiles" + +#: views/cpcss/activate-cpcss-mobile.php:14 +msgid "" +"Your website currently uses the same Critical Path CSS for both desktop and " +"mobile." +msgstr "" +"Votre site web utiliser le même chemin critique de CSS pour les ordinateurs " +"et mobiles." + +#: views/cpcss/activate-cpcss-mobile.php:15 +msgid "Click the button to enable mobile-specific CPCSS for your site." +msgstr "" +"Peser le bouton pour activer le CPCSS spécifique aux mobiles pour votre " +"site." + +#: views/cpcss/activate-cpcss-mobile.php:20 +#, php-format +msgid "" +"This is a one-time action and this button will be removed afterwards. " +"%1$sMore info%2$s" +msgstr "" +"Ceci est une action unique et ce bouton sera retiré ensuite. %1$sPlus " +"d'info%2$s" + +#: views/cpcss/activate-cpcss-mobile.php:30 +#, php-format +msgid "" +"Your site is now using mobile-specific critical path CSS. %1$sMore info%2$s" +msgstr "" +"Votre site présentement un chemin critique CSS spécifique aux mobiles. " +"%1$sPlus d'info%2$s" + +#: views/cpcss/activate-cpcss-mobile.php:39 +msgid "Generate Mobile Specific CPCSS" +msgstr "Générer CPCSS spécifique aux mobiles" + +#: views/cpcss/metabox/container.php:19 +msgid "Critical Path CSS" +msgstr "CSS du chemin critique" + +#: views/cpcss/metabox/generate.php:23 +#, php-format +msgid "Generate specific Critical Path CSS for this post. %1$sMore info%2$s" +msgstr "Générer un chemin critique CSS pour cet article. %1$sPlus d'info%2$s" + +#: views/cpcss/metabox/generate.php:33 +#, php-format +msgid "This post uses specific Critical Path CSS. %1$sMore info%2$s" +msgstr "Cet article utilise un chemin critique de CSS. %1$sPlus d'info%2$s" + +#: views/cpcss/metabox/generate.php:56 +msgid "Revert back to the default CPCSS" +msgstr "Retourner au CPCSS par défaut" + +#: views/deactivation-intent/form.php:21 +msgid "Return" +msgstr "Retour" + +#: views/deactivation-intent/form.php:22 +msgid "WP Rocket feedback" +msgstr "Commentaires sur WP Rocket" + +#: views/deactivation-intent/form.php:24 +msgid "Close" +msgstr "Fermer" + +#: views/deactivation-intent/form.php:28 +msgid "May we have a little info about why you are deactivating?" +msgstr "" +"Pouvons-nous avoir quelques infos sur les raisons pour lesquelles vous " +"désactivez?" + +#: views/deactivation-intent/form.php:35 +#, php-format +msgid "%1$sIt is a temporary deactivation.%2$s I am just debugging an issue." +msgstr "" +"%1$sCeci est une désactivation temporaire.%2$s Je ne fais que diagnostiquer " +"un problème." + +#: views/deactivation-intent/form.php:44 +#, php-format +msgid "The plugin %1$sbroke my layout%2$s or some functionality." +msgstr "L'extension %1$s a brisé ma mise en page %2$s ou une fonctionnalité." + +#: views/deactivation-intent/form.php:53 +#, php-format +msgid "My PageSpeed or GTMetrix %1$sscore did not improve.%2$s" +msgstr "Mon résultat PageSpeed ou GTMetrix %1$s ne s'est pas amélioré.%2$s" + +#: views/deactivation-intent/form.php:59 +msgid "I did not notice a difference in loading time." +msgstr "Je n'ai pas remarqué de différence dans le temps de chargement." + +#: views/deactivation-intent/form.php:66 +#, php-format +msgid "The plugin is %1$stoo complicated to configure.%2$s" +msgstr "L'extensions est %1$s trop compliquée à configurer.%2$s" + +#: views/deactivation-intent/form.php:72 +msgid "My host already has its own caching system." +msgstr "Mon hébergeur a déjà son propre système de cache." + +#: views/deactivation-intent/form.php:74 +msgid "What is the name of your web host?" +msgstr "Quel est le nom de votre hébergeur ?" + +#: views/deactivation-intent/form.php:79 +msgid "Other" +msgstr "Autre" + +#: views/deactivation-intent/form.php:81 +msgid "" +"Let us know why you are deactivating WP Rocket so we can improve the plugin" +msgstr "" +"Dites-nous pourquoi vous désactivez WP Rocket afin que nous puissions " +"améliorer l’extension" + +#: views/deactivation-intent/form.php:89 +msgid "The plugin broke my layout or some functionality" +msgstr "Le plugin a cassé mon site ou certaines fonctionnalités." + +#: views/deactivation-intent/form.php:90 +msgid "" +"This type of issue can usually be fixed by deactivating some options in WP " +"Rocket." +msgstr "" +"Ce type de problème peut généralement être résolu en désactivant certaines " +"options de WP Rocket." + +#: views/deactivation-intent/form.php:91 +msgid "" +"Click \"Apply Safe Mode\" to quickly disable LazyLoad, File Optimization, " +"Embeds and CDN options. Then check your site to see if the issue has " +"resolved." +msgstr "" +"Cliquez sur \"Appliquer le mode sécuritaire” pour désactiver immédiatement " +"les options de chargement différé, d’optimisation des fichiers, insertions " +"et CDN. Vérifiez ensuite votre site pour voir si le problème est résolu." + +#: views/deactivation-intent/form.php:93 +msgid "Apply safe mode" +msgstr "Appliquer le mode sécuritaire" + +#: views/deactivation-intent/form.php:96 +msgid "Safe mode applied." +msgstr "Mode sécuritaire appliqué." + +#: views/deactivation-intent/form.php:97 +msgid "Review your site in a private/logged out browser window." +msgstr "" +"Vérifiez votre site dans une fenêtre de navigateur privée / déconnectée." + +#: views/deactivation-intent/form.php:102 +#, php-format +msgid "" +"Is the issue fixed? Now you can reactivate options one at a time to " +"determine which one caused the problem. %1$sMore info%2$s" +msgstr "" +"Est-ce que le problème est réglé? Vous pouvez maintenant réactiver les " +"options unes à la fois afin de déterminer laquelle a causé le problème. " +"%1$sPlus d'info%2$s" + +#: views/deactivation-intent/form.php:107 +msgid "My PageSpeed or GT Metrix score did not improve" +msgstr "Mes notes PageSpeed ou GTMetrix ne se sont pas améliorées" + +#: views/deactivation-intent/form.php:108 +msgid "" +"WP Rocket makes your site faster. The PageSpeed grade or GTMetrix score are " +"not indicators of speed. Neither your real visitors, nor Google will ever " +"see your website’s “grade”. Speed is the only metric that matters for SEO " +"and conversions." +msgstr "" +"WP Rocket rend votre site plus rapide. Les notes PageSpeed ou GTMetrix ne " +"sont pas des indicateurs de vitesse. Ni vos visiteurs réels, ni Google ne " +"verront jamais la “note” de votre site. La vitesse est la seule mesure qui " +"compte pour le référencement et les conversions." + +#: views/deactivation-intent/form.php:109 +msgid "Yoast, the expert on all things related to SEO for WordPress states:" +msgstr "" +"Yoast, l'expert de tout ce qui concerne le référencement pour WordPress " +"affirme :" + +#: views/deactivation-intent/form.php:110 +msgid "" +"[Google] just looks at how fast your website loads for users, so you don’t " +"have to obsess over that specific score. You have to make sure your website " +"is as fast as you can get it." +msgstr "" +"[Google] ne fait que regarder la vitesse de chargement de votre site web " +"pour les utilisateurs, vous n'avez donc pas à vous soucier de cette note en " +"particulier. Vous devez vous assurer que votre site web est aussi rapide que" +" possible." + +#: views/deactivation-intent/form.php:116 +#, php-format +msgid "" +"How to measure the load time of your site: %1$shttps://wp-rocket.me/blog" +"/correctly-measure-websites-page-load-time/%2$s" +msgstr "" +"Comment mesurer correctement le temps de chargement de votre site : " +"%1$shttps://wp-rocket.me/fr/blog/mesurer-temps-chargement/ %2$s" + +#: views/deactivation-intent/form.php:122 +#, php-format +msgid "" +"Why you should not be chasing a PageSpeed score: %1$shttps://wp-" +"rocket.me/blog/the-truth-about-google-pagespeed-insights/%2$s" +msgstr "" +"Pourquoi vous ne devriez pas pourchasser à tout prix un résultat PageSpeed :" +" %1$shttps://wp-rocket.me/fr/blog/note-pagespeed-ne-compte-pas/ %2$s" + +#: views/deactivation-intent/form.php:127 +msgid "I did not notice a difference in loading time" +msgstr "Je n'ai pas remarqué de différence dans le temps de chargement." + +#: views/deactivation-intent/form.php:128 +msgid "" +"Make sure you look at your site while logged out to see the fast, cached " +"pages!" +msgstr "" +"Assurez-vous de consulter votre site en étant déconnecté afin de voir la " +"différence et de voir les pages mises en cache!" + +#: views/deactivation-intent/form.php:132 +#, php-format +msgid "" +"The best way to see the improvement WP Rocket provides is to perform speed " +"tests. Follow this guide to correctly measure the load time of your website:" +" %1$shttps://wp-rocket.me/blog/correctly-measure-websites-page-load-" +"time/%2$s" +msgstr "" +"La meilleure façon de voir les améliorations que WP Rocket offre est " +"d'effectuer des tests de performance. Suivez ce guide afin de correctement " +"mesurer le temps de chargement de votre site web : %1$shttps://wp-" +"rocket.me/fr/blog/mesurer-temps-chargement/%2$s" + +#: views/deactivation-intent/form.php:137 +msgid "The plugin is too complicated to configure" +msgstr "L’extension est trop compliquée à configurer" + +#: views/deactivation-intent/form.php:138 +msgid "We are sorry to hear you are finding it difficult to use WP Rocket." +msgstr "" +"Nous sommes désolés d'apprendre que vous trouvez l'utilisation de WP Rocket " +"compliquée." + +#: views/deactivation-intent/form.php:139 +#, php-format +msgid "" +"WP Rocket is the only caching plugin that provides 80% of best practices in " +"speed optimization, by default. That means you do not have to do anything " +"besides activate WP Rocket and your site will already be faster!" +msgstr "" +"WP Rocket est la seule extension de cache qui fournit par défaut 80% des " +"meilleures pratiques en optimisation de vitesse. Cela signifie que vous " +"n'avez rien d'autre à faire que d'activer WP Rocket et votre site sera déjà " +"plus rapide!" + +#: views/deactivation-intent/form.php:140 +msgid "" +"The additional options are not required for a fast site, they are for fine-" +"tuning." +msgstr "" +"Les options supplémentaires ne sont pas nécessaires pour un site rapide, " +"elles servent à affiner votre configuration." + +#: views/deactivation-intent/form.php:144 +#, php-format +msgid "" +"To see the benefit WP Rocket is already providing, measure the speed of your" +" site using a tool like Pingdom: %1$shttps://wp-rocket.me/blog/correctly-" +"measure-websites-page-load-time/%2$s" +msgstr "" +"Pour voir les avantages que WP Rocket vous procure déjà, mesurer la " +"performance de votre site en utilisant un outil tel que Pingdom : %1$shttps" +"://wp-rocket.me/fr/blog/mesurer-temps-chargement/%2$s" + +#: views/deactivation-intent/form.php:151 +msgid "Send & Deactivate" +msgstr "Envoyer et désactiver" + +#: views/deactivation-intent/form.php:152 +msgid "Cancel" +msgstr "Annuler" + +#: views/deactivation-intent/form.php:154 +msgid "Skip & Deactivate" +msgstr "Passer et désactiver" + +#: views/settings/fields/cache-lifespan.php:26 +msgid "Clear cache after" +msgstr "Vider le cache après" + +#: views/settings/fields/cnames.php:49 views/settings/fields/cnames.php:81 +#: views/settings/fields/cnames.php:111 +msgid "CSS & JavaScript" +msgstr "CSS et JavaScript" + +#: views/settings/fields/cnames.php:50 views/settings/fields/cnames.php:82 +#: views/settings/fields/cnames.php:112 +msgid "JavaScript" +msgstr "JavaScript" + +#: views/settings/fields/cnames.php:51 views/settings/fields/cnames.php:83 +#: views/settings/fields/cnames.php:113 +msgid "CSS" +msgstr "CSS" + +#: views/settings/fields/import-form.php:29 +msgid "Import settings" +msgstr "Importer les réglages" + +#: views/settings/fields/one-click-addon.php:40 +#: views/settings/fields/rocket-addon.php:31 +#: views/settings/fields/sliding-checkbox.php:25 views/settings/page.php:55 +msgctxt "Active state of checkbox" +msgid "On" +msgstr "On" + +#: views/settings/fields/one-click-addon.php:41 +#: views/settings/fields/rocket-addon.php:32 +#: views/settings/fields/sliding-checkbox.php:26 views/settings/page.php:56 +msgctxt "Inactive state of checkbox" +msgid "Off" +msgstr "Off" + +#: views/settings/fields/one-click-addon.php:42 +#: views/settings/fields/rocket-addon.php:33 +msgid "Add-on status" +msgstr "État de l’ajout" + +#: views/settings/fields/rocket-addon.php:56 +msgid "Modify options" +msgstr "Modifier les options" + +#: views/settings/fields/rocket-cdn.php:29 +#: views/settings/fields/rocket-cdn.php:41 +msgid "CDN CNAME" +msgstr "Nom du CDN" + +#: views/settings/fields/rocket-cdn.php:62 +#, php-format +msgid "Purges RocketCDN cached resources for your website. %s" +msgstr "Purge les ressources en cache de votre site web dans RocketCDN. %s" + +#: views/settings/fields/rocket-cdn.php:63 +#: views/settings/page-sections/cloudflare.php:36 +#: views/settings/page-sections/sucuri.php:37 +msgid "Learn more" +msgstr "En savoir plus" + +#: views/settings/fields/rocket-cdn.php:72 +msgid "Clear all RocketCDN cache files" +msgstr "Effacer tous les fichiers de cache de RocketCDN" + +#: views/settings/page-sections/cloudflare.php:27 +msgid "Cloudflare Cache" +msgstr "Cache de Cloudflare" + +#: views/settings/page-sections/cloudflare.php:35 +#: views/settings/page-sections/sucuri.php:36 +#, php-format +msgid "Purges cached resources for your website. %s" +msgstr "Purge les ressources mises en cache de votre site web. %s" + +#: views/settings/page-sections/cloudflare.php:36 +msgid "https://support.cloudflare.com/hc/en-us/articles/200169246" +msgstr "https://support.cloudflare.com/hc/en-us/articles/200169246" + +#: views/settings/page-sections/cloudflare.php:45 +msgid "Clear all Cloudflare cache files" +msgstr "Effacer tous les fichiers en cache de Cloudflare" + +#: views/settings/page-sections/dashboard.php:38 +msgid "Congratulations!" +msgstr "Félicitations!" + +#: views/settings/page-sections/dashboard.php:40 +msgid "WP Rocket is now activated and already working for you." +msgstr "WP Rocket est maintenant activé et prêt à travailler pour vous." + +#: views/settings/page-sections/dashboard.php:42 +msgid "Your website should be loading faster now!" +msgstr "Votre site web devrait se charger plus rapidement maintenant!" + +#: views/settings/page-sections/dashboard.php:44 +#, php-format +msgid "" +"To guarantee fast websites, WP Rocket applies 80% of web performance best " +"practices." +msgstr "" +"Pour garantir des sites rapides, WP Rocket applique 80% des meilleures " +"pratiques en terme de performance wev." + +#: views/settings/page-sections/dashboard.php:44 +msgid "" +"We also enable options that provide immediate benefits to your website." +msgstr "" +"Nous activons également des options qui fournissent des bénéfices immédiats " +"à votre site." + +#: views/settings/page-sections/dashboard.php:45 +msgid "Continue to the options to further optimize your site!" +msgstr "" +"Continuez avec les options si vous souhaitez optimiser votre site davantage!" + +#: views/settings/page-sections/dashboard.php:55 +msgid "My Account" +msgstr "Mon compte" + +#: views/settings/page-sections/dashboard.php:61 +msgid "Refresh info" +msgstr "Actualiser l’information" + +#: views/settings/page-sections/dashboard.php:75 +msgid "Expiration Date" +msgstr "Date d'expiration" + +#: views/settings/page-sections/dashboard.php:84 +msgid "View my account" +msgstr "Voir mon compte" + +#: views/settings/page-sections/dashboard.php:111 +msgid "Quick Actions" +msgstr "Actions rapides" + +#: views/settings/page-sections/dashboard.php:118 +msgid "Remove all cached files" +msgstr "Supprimer tous les fichiers du cache" + +#: views/settings/page-sections/dashboard.php:138 +msgid "Start cache preloading" +msgstr "Démarrer le préchargement du cache" + +#: views/settings/page-sections/dashboard.php:164 +msgid "Purge OPCache content" +msgstr "Vider le contenu OPcache" + +#: views/settings/page-sections/dashboard.php:170 +msgid "Purge OPCache" +msgstr "Purger OPcache" + +#: views/settings/page-sections/dashboard.php:181 +#: views/settings/page-sections/dashboard.php:187 +msgid "Regenerate Critical CSS" +msgstr "Régénérer le CSS critique" + +#: views/settings/page-sections/dashboard.php:204 +msgid "Frequently Asked Questions" +msgstr "Foire aux questions" + +#: views/settings/page-sections/dashboard.php:217 +msgid "Still cannot find a solution?" +msgstr "Toujours pas trouvé de solution?" + +#: views/settings/page-sections/dashboard.php:218 +msgid "" +"Submit a ticket and get help from our friendly and knowledgeable Rocketeers." +msgstr "Envoyez un ticket et obtenez l'aide de nos sympathiques Rocketeers." + +#: views/settings/page-sections/dashboard.php:226 +msgid "Ask support" +msgstr "Demandez au soutien" + +#: views/settings/page-sections/database.php:25 +msgid "Backup your database before you run a cleanup!" +msgstr "Faites une sauvegarde de votre base de données avant tout nettoyage!" + +#: views/settings/page-sections/database.php:26 +msgid "" +"Once a database optimization has been performed, there is no way to undo it." +msgstr "" +"Une fois qu’une optimisation de base de données est amorcée, les changements" +" sont irréversibles." + +#: views/settings/page-sections/database.php:28 +msgid "Save Changes and Optimize" +msgstr "Sauvegarder changements et optimiser" + +#: views/settings/page-sections/imagify.php:21 +#, php-format +msgid "" +"%1$sWP ROCKET%2$s created %3$sIMAGIFY%4$s %1$sfor best-in-class image " +"optimization.%2$s" +msgstr "" +"%1$sWP ROCKET%2$s a créé %3$sIMAGIFY%4$s %1$spour la meilleure optimisation " +"des images.%2$s" + +#: views/settings/page-sections/imagify.php:24 +msgid "" +"Compress image to make your website faster, all while maintaining image " +"quality." +msgstr "" +"Compresser les images afin d'accélérer votre site, tout en maintenant la " +"qualité des images." + +#: views/settings/page-sections/imagify.php:25 +msgid "More on Imagify:" +msgstr "Plus d'info sur Imagify :" + +#: views/settings/page-sections/imagify.php:27 +msgid "Imagify Plugin Page" +msgstr "Page web de l'extension Imagify" + +#: views/settings/page-sections/imagify.php:28 +msgid "Imagify Website" +msgstr "Site web d'Imagify" + +#: views/settings/page-sections/imagify.php:29 +msgid "Review of Image Compression Plugins" +msgstr "Revue des extensions de compression d'images" + +#: views/settings/page-sections/imagify.php:38 +msgid "Install Imagify" +msgstr "Installer Imagify" + +#: views/settings/page-sections/license.php:22 +msgid "WP Rocket was not able to automatically validate your license." +msgstr "" +"WP Rocket n'a pas été en mesure de valider automatiquement votre licence." + +#: views/settings/page-sections/license.php:29 +#, php-format +msgid "Follow this %1$s, or contact %2$s to get the engine started." +msgstr "Suivre ce %1$s, ou contactez %2$s pour démarrer le système." + +#: views/settings/page-sections/license.php:32 +#, php-format +msgid "%1$s%2$s%3$stutorial%4$s" +msgstr "%1$s%2$s%3$stutoriel%4$s" + +#: views/settings/page-sections/license.php:34 +msgid "" +"https://docs.wp-rocket.me/article/100-resolving-problems-with-license-" +"validation/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://fr.docs.wp-rocket.me/article/257-resoudre-les-problemes-de-" +"validation-de-licence/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: views/settings/page-sections/license.php:40 +#, php-format +msgid "%1$s%2$s%3$ssupport%4$s" +msgstr "%1$s%2$s%3$ssupport%4$s" + +#: views/settings/page-sections/sucuri.php:46 +msgid "Clear all Sucuri cache files" +msgstr "Effacer tous les fichier de cache Sucuri" + +#: views/settings/page-sections/tools.php:20 +#, php-format +msgid "Files size: %1$s. Number of entries: %2$s." +msgstr "Taille du fichier : %1$s. Nombre d'entrées : %2$s." + +#: views/settings/page-sections/tools.php:23 +#, php-format +msgid "%1$sDownload the file%2$s." +msgstr "%1$sTélécharger le fichier%2$s." + +#: views/settings/page-sections/tools.php:26 +#, php-format +msgid "%1$sDelete the file%2$s." +msgstr "%1$sEffacer le fichier%2$s." + +#: views/settings/page-sections/tools.php:37 +msgid "Export settings" +msgstr "Exporter les réglages" + +#: views/settings/page-sections/tools.php:38 +msgid "Download a backup file of your settings" +msgstr "Télécharger un fichier de sauvegarde de vos réglages" + +#: views/settings/page-sections/tools.php:46 +msgid "Download settings" +msgstr "Télécharger les réglages" + +#: views/settings/page-sections/tools.php:60 +msgid "Rollback" +msgstr "Restauration" + +#: views/settings/page-sections/tools.php:64 +#, php-format +msgid "Has version %s caused an issue on your website?" +msgstr "La version %s vous pose des problèmes?" + +#: views/settings/page-sections/tools.php:69 +#, php-format +msgid "" +"You can rollback to the previous major version here.%sThen send us a support" +" request." +msgstr "" +"Vous pouvez retourner à la précédente version majeure ici.%sPuis envoyez-" +"nous une requête de soutien technique." + +#: views/settings/page-sections/tools.php:80 +#, php-format +msgid "Reinstall version %s" +msgstr "Réinstaller la version %s" + +#: views/settings/page-sections/tools.php:106 +msgid "Debug mode" +msgstr "Mode debug" + +#: views/settings/page-sections/tools.php:111 +msgid "Create a debug log file." +msgstr "Créer un fichier de debug." + +#: views/settings/page-sections/tutorials.php:13 +#: views/settings/partials/getting-started.php:18 +msgid "Getting Started" +msgstr "Bien démarrer" + +#: views/settings/page-sections/tutorials.php:15 +msgid "Getting Started with WP Rocket" +msgstr "Pour démarrer avec WP Rocket" + +#: views/settings/page-sections/tutorials.php:16 +#: views/settings/partials/getting-started.php:12 +msgid "Finding the Best Settings for Your Site" +msgstr "Trouver les meilleurs réglages pour votre site" + +#: views/settings/page-sections/tutorials.php:17 +#: views/settings/partials/getting-started.php:13 +msgid "How to Check if WP Rocket is Caching Your Site" +msgstr "Comment valider que WP Rocket a mis en cache votre site" + +#: views/settings/page-sections/tutorials.php:18 +#: views/settings/partials/getting-started.php:14 +msgid "How to Measure the Speed of Your Site" +msgstr "Comment mesurer la vitesse de votre site" + +#: views/settings/page-sections/tutorials.php:24 +msgid "Troubleshooting Display Issues with File Optimization" +msgstr "" +"Diagnostiquer les problèmes d'affichage avec l'optimisation des fichiers" + +#: views/settings/page-sections/tutorials.php:25 +msgid "How to Find the Right JavaScript to Exclude" +msgstr "Comment trouver le bon Javascript à exclure" + +#: views/settings/page-sections/tutorials.php:26 +msgid "How External Content Slows Your Site" +msgstr "Comment les contenus externes ralentissent votre site." + +#: views/settings/page-sections/tutorials.php:32 +msgid "How Preloading Works" +msgstr "Comment le pré-chargement fonctionne" + +#: views/settings/page-sections/tutorials.php:38 +msgid "Set Up the Cloudflare Add-on" +msgstr "Configurer l'extension Cloudflare" + +#: views/settings/page.php:16 +msgid "WP Rocket Settings" +msgstr "Réglages de WP Rocket" + +#: views/settings/page.php:30 +#, php-format +msgid "version %s" +msgstr "version %s" + +#: views/settings/page.php:57 +msgid "Show Sidebar" +msgstr "Afficher la colonne latérale" + +#: views/settings/page.php:76 +msgid "Thanks for choosing to participate in the WP Rocket beta program!" +msgstr "" +"Merci d'avoir choisi de participer dans le programme beta de WP Rocket!" + +#: views/settings/page.php:77 +msgid "" +"A beta version is usually one that has new features and improvements, but we" +" want to test it a little more before full launch." +msgstr "" +"Une version beta offre typiquement de nouvelles fonctionnalités et " +"améliorations, mais nous désirons la tester un peu plus avant le lancement " +"officiel." + +#: views/settings/page.php:78 +msgid "" +"We’d love it if you took our beta versions for a ride, but please keep in " +"mind that it might be less stable than our other releases. Don’t worry, you " +"can switch back to a full release version at any time." +msgstr "" +"Nous aimerions beaucoup que vous essayiez nos versions beta, mais gardez en " +"tête que ceci pourrait être moins stable que nos autres versions. Aucune " +"inquiétude, vous pouvez revenir à une version stable à tout moment." + +#: views/settings/page.php:79 +msgid "" +"Your mission: please send all feedback about our beta versions, including " +"bug reports, to support@wp-rocket.me" +msgstr "" +"Votre mission : veuillez nous rapporter vos commentaires à propos de nos " +"versions beta, incluant les bogues trouvés, à support@wp-rocket.me" + +#: views/settings/page.php:81 +msgid "If you don’t want to join the beta program, simply close this window." +msgstr "" +"Si vous ne désirez pas joindre le programme beta, simplement fermer cette " +"fenêtre." + +#: views/settings/page.php:83 +msgid "Activate Rocket Tester" +msgstr "Activer Rocket Tester" + +#: views/settings/page.php:94 +msgid "" +"Below is a detailed view of all data WP Rocket will collect if " +"granted permission." +msgstr "" +"Vous trouverez ci-dessous une vue détaillée des données que WP Rocket " +"recueillera si l'autorisation lui est accordée." + +#: views/settings/page.php:97 +msgid "" +"WP Rocket will never transmit any domain names or email addresses (except " +"for license validation), IP addresses, or third-party API keys." +msgstr "" +"WP Rocket ne transmettra jamais de noms de domaine ou d'adresses courriels " +"(sauf pour la validation de licence), d'adresses IP ou de clés d’API tierce-" +"partie." + +#: views/settings/page.php:99 +msgid "Activate Rocket analytics" +msgstr "Activer analytiques de Rocket" + +#: views/settings/partials/documentation.php:15 +msgid "It is a great starting point to fix some of the most common issues." +msgstr "" +"C'est un excellent point de départ pour résoudre certains des problèmes les " +"plus fréquents." + +#: views/settings/partials/documentation.php:22 +msgid "Read the documentation" +msgstr "Lire la documentation" + +#: views/settings/partials/getting-started.php:11 +msgid "What WP Rocket Does For You By Default" +msgstr "Ce que fait WP Rocket pour vous par défaut" + +#: views/settings/partials/sidebar.php:12 +msgid "How to correctly measure your website’s loading time" +msgstr "Comment bien mesurer le temps de chargement de votre site web" + +#: views/settings/partials/sidebar.php:14 +msgid "Check our tutorial and learn how to measure the speed of your site." +msgstr "" +"Consultez notre tutoriel et apprenez comment mesurer la vitesse de votre " +"site." + +#: views/settings/partials/sidebar.php:19 +msgid "" +"Learn how to use best practices to correctly measure your site's " +"performance." +msgstr "Apprenez comment bien mesurer les performances de votre site web." + +#: views/settings/partials/sidebar.php:20 +msgid "" +"https://wp-rocket.me/blog/correctly-measure-websites-page-load-" +"time/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://wp-rocket.me/fr/blog/mesurer-temps-" +"chargement/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: views/settings/partials/sidebar.php:20 +msgid "Read our guide" +msgstr "Lire notre guide" + +#: views/settings/partials/sidebar.php:23 +msgid "Why Google PageSpeed grade should not matter" +msgstr "" +"Pourquoi vous ne devriez pas vous soucier des notes de Google PageSpeed" + +#: views/settings/partials/sidebar.php:24 +msgid "" +"https://wp-rocket.me/blog/the-truth-about-google-pagespeed-" +"insights/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://wp-rocket.me/blog/the-truth-about-google-pagespeed-" +"insights/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: views/settings/partials/sidebar.php:24 +msgid "Read more" +msgstr "En savoir plus" + +#: views/settings/partials/sidebar.php:29 +msgid "You have not activated logged-in user cache." +msgstr "Vous n'avez pas activé le cache pour utilisateurs connectés." + +#: views/settings/partials/sidebar.php:30 +msgid "" +"Use a private browser to check your website's speed and visual appearance." +msgstr "" +"Utilisez un navigateur privé pour vérifier la vitesse et l’aspect visuel de " +"votre site web." + +#: views/settings/rocketcdn/cta-big.php:27 +#, php-format +msgid "Valid until %s only!" +msgstr "Valide seulement jusqu'à %s!" + +#: views/settings/rocketcdn/cta-big.php:36 +msgid "Speed up your website thanks to:" +msgstr "Accélérez votre site web grâce à :" + +#: views/settings/rocketcdn/cta-big.php:42 +#, php-format +msgid "" +"High performance Content Delivery Network (CDN) with %1$sunlimited " +"bandwith%2$s" +msgstr "" +"Réseau de livraison de contenu (CDN) haute performance avec %1$s bande " +"passante illimitée %2$s" + +#: views/settings/rocketcdn/cta-big.php:48 +#, php-format +msgid "" +"Easy configuration: the %1$sbest CDN settings%2$s are automatically applied" +msgstr "" +"Configuration simplifiée : les %1$smeilleurs réglages CDN%2$s sont " +"automatiquement appliqués" + +#: views/settings/rocketcdn/cta-big.php:54 +#, php-format +msgid "" +"WP Rocket integration: the CDN option is %1$sautomatically configured%2$s in" +" our plugin" +msgstr "" +"Intégration WP Rocket : l'option CDN est %1$sautomatiquement configurée%2$s " +"dans notre extension" + +#: views/settings/rocketcdn/cta-big.php:69 +#, php-format +msgid "%s / month" +msgstr "%s / mois" + +#: views/settings/rocketcdn/cta-big.php:74 +msgid "Get Started" +msgstr "Démarrez" + +#: views/settings/rocketcdn/cta-big.php:80 +msgid "Learn more about RocketCDN" +msgstr "En savoir plus sur RocketCDN" + +#: views/settings/rocketcdn/cta-big.php:82 +msgid "Reduce this banner" +msgstr "Réduire cette bannière" + +#: views/settings/rocketcdn/cta-big.php:88 +#, php-format +msgid "" +"* $%1$s/month for 12 months then $%2$s/month. You can cancel your " +"subscription at any time." +msgstr "" +"* %1$s $/mois pour 12 mois puis %2$s $/mois. Vous pouvez annuler votre " +"abonnement en tout temps." + +#: views/settings/rocketcdn/cta-small.php:17 +msgid "" +"Speed up your website with RocketCDN, WP Rocket’s Content Delivery Network." +msgstr "" +"Accélérez votre site web avec RocketCDN, le réseau de livraison de contenu " +"de WP Rocket." + +#: views/settings/rocketcdn/cta-small.php:20 +#: views/settings/rocketcdn/promote-notice.php:13 +msgid "Learn More" +msgstr "En savoir plus" + +#: views/settings/rocketcdn/dashboard-status.php:23 +msgid "RocketCDN is unavailable on local domains and staging sites." +msgstr "" +"RocketCDN est indisponible pour les domaines locaux et les sites de test." + +#: views/settings/rocketcdn/dashboard-status.php:32 +msgid "Get RocketCDN" +msgstr "Obtenir RocketCDN" + +#: views/settings/rocketcdn/promote-notice.php:11 +msgid "New!" +msgstr "Nouveau!" + +#: views/settings/rocketcdn/promote-notice.php:12 +msgid "" +"Speed up your website with RocketCDN, WP Rocket’s Content Delivery Network!" +msgstr "" +"Accélérez votre site web avec RocketCDN, le réseau de livraison de contenu " +"de WP Rocket." + +#: views/settings/sections/addons-container.php:24 +#: views/settings/sections/fields-container.php:28 +msgid "Need Help?" +msgstr "Besoin d'aide ?" diff --git a/wp-content/plugins/wp-rocket/languages/rocket-fr_FR.mo b/wp-content/plugins/wp-rocket/languages/rocket-fr_FR.mo new file mode 100644 index 0000000000000000000000000000000000000000..1af735a5aca0cfa27d9391911efb04c16fecccf0 GIT binary patch literal 104030 zcmdR%2b^71wg1luNbgdmoCHD=$jqcrhma5^g+R)XNeBTX+?lyEbCWyw4)@+kG6;fT z!;TaMr70)~mWO~MVj+TJ!7lGTpJI8oXT=A$=hOf9x7I%8CX*0s|NnnJIr-ha&pErU zz1G@muf5NA_Sycrh`%qsAc_tFU$K7_eP+8T`uP;aM$t|)qv%E8&fuTH!@wKBLr;mK zF7U(P@4%gAMbQCZG&_n81P%oC-Zbzca6Y&S{7AUJ&#FyUjsdEk6-Z}9ctOTnAL zlfZ-LMA0?ia_|E1C*VqO!D*h~E#NMMKMd{zJ_1sd=o{b};EOt==y-57xCFc&qzcgw z!MWgg{!{z_sP`TK_1?1}|DsbVoYH+IsQSGv;0FVK7Cevm?}C?rGv`Oq`@sjnE5N}8 zQ8Wzx4AlMePxt!$8+aSx6$_*27Vvjq2l!SpKMedTNL8b!!IyzE&WxgWf%k$tf@d#^ zqP@Tizx zfjfhDgUa`QQ2q2UxI6fz5dUp(C&E7j_W*whiVpr4RKM>}BP*R@Q2l-}xI1_qxCi(y zQ02N8{2=%ksCHPt)XQ@{xGUjz2fP1}gqCa4+!6aQ|9R`QHrg0p1So z2Yv{=6?`0gA-JX++6ONJJHeYk_0RXf8Q@<)_2-P`Q51t`fQN%?!9&2;fohLC!M(xz zz>~qpK$YhOE4c55H1aJ_%0DL1@0Dl1vfJ@Ku{5}lo{jY+eyJtY< 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, 2020 +# wpmedia , 2020 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: WP Rocket 3.4\n" +"Report-Msgid-Bugs-To: http://wp-rocket.me/\n" +"POT-Creation-Date: 2020-08-25 17:35-0400\n" +"PO-Revision-Date: 2019-08-26 15:14+0000\n" +"Last-Translator: wpmedia , 2020\n" +"Language-Team: French (France) (https://www.transifex.com/wp-media/teams/18133/fr_FR/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: fr_FR\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Poedit 1.8.11\n" +"X-Poedit-Basepath: ..\n" +"X-Poedit-KeywordsList: __;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c\n" +"X-Poedit-SearchPath-0: .\n" +"X-Poedit-SearchPathExcluded-0: assets\n" +"X-Poedit-SearchPathExcluded-1: src\n" +"X-Poedit-SearchPathExcluded-2: vendor\n" +"X-Poedit-SearchPathExcluded-3: node_modules\n" +"X-Poedit-SearchPathExcluded-4: tests\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Textdomain-Support: yes\n" + +#: inc/3rd-party/hosting/flywheel.php:18 inc/3rd-party/hosting/godaddy.php:18 +#: inc/3rd-party/hosting/pressidium.php:18 +#: inc/3rd-party/hosting/wp-serveur.php:27 +#: inc/ThirdParty/Hostings/Cloudways.php:90 +#: inc/ThirdParty/Hostings/O2Switch.php:49 +#: inc/ThirdParty/Hostings/Savvii.php:50 +#: inc/ThirdParty/Hostings/WPEngine.php:47 inc/deprecated/3.6.php:698 +#: inc/deprecated/3.6.php:1005 +#, php-format +msgid "" +"Your site is hosted on %s, we have enabled Varnish auto-purge for " +"compatibility." +msgstr "" +"Votre site est hébergé chez %s, nous avons activé l'auto-purge Varnish pour " +"la compatibilité." + +#: inc/3rd-party/hosting/kinsta.php:161 +#, php-format +msgid "" +"Your installation seems to be missing core Kinsta files managing Cache " +"clearing and CDN, which will prevent your Kinsta installation and WP Rocket " +"from working correctly. Please get in touch with Kinsta support through your" +" %1$sMyKinsta%2$s account to resolve this issue." +msgstr "" +"Des fichiers Kinsta de base, gérant l'effacement du cache et du CDN, " +"semblent manquer dans votre installation, ce qui empêchera Kinsta et WP " +"Rocket de fonctionner correctement. Veuillez contacter le support Kinsta via" +" votre compte %1$sMyKinsta%2$s pour résoudre ce problème." + +#: inc/3rd-party/plugins/jetpack.php:86 +msgid "Jetpack XML Sitemaps" +msgstr "Sitemaps XML de Jetpack" + +#: inc/3rd-party/plugins/jetpack.php:88 +msgid "Preload the sitemap from the Jetpack plugin" +msgstr "Précharger le sitemap de l'extension Jetpack" + +#: inc/3rd-party/plugins/jetpack.php:96 +#: inc/3rd-party/plugins/seo/all-in-one-seo-pack.php:89 +#: inc/3rd-party/plugins/seo/rank-math-seo.php:34 +#: inc/3rd-party/plugins/seo/seopress.php:86 +#: inc/3rd-party/plugins/seo/the-seo-framework.php:144 +#: inc/3rd-party/plugins/seo/yoast-seo.php:87 +#, php-format +msgid "" +"We automatically detected the sitemap generated by the %s plugin. You can " +"check the option to preload it." +msgstr "" +"Nous avons automatiquement détecté le sitemap généré par l'extension %s. " +"Vous pouvez cocher l'option pour l'inclure dans le préchargement." + +#: inc/3rd-party/plugins/seo/all-in-one-seo-pack.php:87 +msgid "All in One SEO XML sitemap" +msgstr "Sitemap XML de All in One SEO" + +#: inc/3rd-party/plugins/seo/rank-math-seo.php:32 +msgid "Rank Math XML sitemap" +msgstr "Sitemap XML de Rank Math" + +#: inc/3rd-party/plugins/seo/seopress.php:84 +msgid "SEOPress XML sitemap" +msgstr "Sitemap XML de SEOPress" + +#: inc/3rd-party/plugins/seo/the-seo-framework.php:142 +msgid "The SEO Framework XML sitemap" +msgstr "Sitemap XML de SEO Framework" + +#: inc/3rd-party/plugins/seo/yoast-seo.php:85 +msgid "Yoast SEO XML sitemap" +msgstr "Sitemap XML de Yoast SEO" + +#: inc/Addon/Cloudflare/APIClient.php:309 +msgid "Ops Cloudflare did not provide any reply. Please try again later." +msgstr "" +"Oups, Cloudflare n’a fourni aucune réponse. Veuillez essayer plus tard s’il " +"vous plaît." + +#: inc/Addon/Cloudflare/APIClient.php:318 inc/deprecated/3.5.php:122 +#: inc/deprecated/3.5.php:179 +msgid "Incorrect Cloudflare email address or API key." +msgstr "L’email ou l’API key Cloudflare incorrect." + +#: inc/Addon/Cloudflare/APIClient.php:322 +#: inc/Addon/Cloudflare/APIClient.php:335 +#: inc/Addon/Cloudflare/Cloudflare.php:112 +#: inc/Addon/Cloudflare/Cloudflare.php:144 +#: inc/classes/subscriber/Tools/class-detect-missing-tags-subscriber.php:157 +#: inc/deprecated/3.5.php:102 inc/deprecated/3.5.php:126 +#: inc/deprecated/3.5.php:139 inc/deprecated/3.5.php:167 +#: inc/deprecated/3.5.php:183 +#, php-format +msgid "Read the %1$sdocumentation%2$s for further guidance." +msgstr "Lisez la %1$sdocumentation%2$s pour plus d'indication." + +#: inc/Addon/Cloudflare/APIClient.php:324 +#: inc/Addon/Cloudflare/APIClient.php:337 +#: inc/Addon/Cloudflare/Cloudflare.php:101 +#: inc/Addon/Cloudflare/Cloudflare.php:114 +#: inc/Addon/Cloudflare/Cloudflare.php:146 inc/deprecated/3.5.php:91 +#: inc/deprecated/3.5.php:104 inc/deprecated/3.5.php:128 +#: inc/deprecated/3.5.php:141 inc/deprecated/3.5.php:169 +#: inc/deprecated/3.5.php:185 inc/deprecated/3.5.php:218 +msgid "" +"https://docs.wp-rocket.me/article/18-using-wp-rocket-with-" +"cloudflare/?utm_source=wp_plugin&utm_medium=wp_rocket#add-on" +msgstr "" +"https://fr.docs.wp-rocket.me/article/247-utiliser-wp-rocket-avec-" +"cloudflare/?utm_source=wp_plugin&utm_medium=wp_rocket#add-on" + +#: inc/Addon/Cloudflare/APIClient.php:331 inc/deprecated/3.5.php:135 +msgid "Incorrect Cloudflare Zone ID." +msgstr "Le Zone ID de Cloudflare est incorrect." + +#: inc/Addon/Cloudflare/Cloudflare.php:99 +#, php-format +msgid "" +"Cloudflare email and/or API key are not set. Read the %1$sdocumentation%2$s " +"for further guidance." +msgstr "" +"L'email Cloudflare et/ou l’API Key ne sont pas définis. Lisez la " +"%1$sdocumentation%2$s pour plus d'informations." + +#: inc/Addon/Cloudflare/Cloudflare.php:108 inc/deprecated/3.5.php:98 +msgid "Missing Cloudflare Zone ID." +msgstr "Il manque le Zone ID de Cloudflare " + +#: inc/Addon/Cloudflare/Cloudflare.php:140 inc/deprecated/3.5.php:163 +msgid "It looks like your domain is not set up on Cloudflare." +msgstr "Il semble que votre domaine ne soit pas configuré sur Cloudflare." + +#: inc/Addon/Cloudflare/Subscriber.php:215 inc/deprecated/3.5.php:597 +#, php-format +msgid "WP Rocket: %s" +msgstr "WP Rocket : %s" + +#: inc/Addon/Cloudflare/Subscriber.php:220 inc/deprecated/3.5.php:602 +msgid "WP Rocket: Cloudflare cache successfully purged." +msgstr "" +"WP Rocket : Le cache Cloudflare a été purgé avec succès." + +#: inc/Addon/Cloudflare/Subscriber.php:364 +#: inc/Addon/Cloudflare/Subscriber.php:370 +#: inc/Addon/Cloudflare/Subscriber.php:390 +#: inc/Addon/Cloudflare/Subscriber.php:401 +#: inc/Addon/Cloudflare/Subscriber.php:420 +#: inc/Addon/Cloudflare/Subscriber.php:426 +#: inc/Addon/Cloudflare/Subscriber.php:445 +#: inc/Addon/Cloudflare/Subscriber.php:451 +#: inc/Addon/Cloudflare/Subscriber.php:470 +#: inc/Addon/Cloudflare/Subscriber.php:476 +#: inc/Addon/Cloudflare/Subscriber.php:558 inc/admin/options.php:166 +#: inc/classes/subscriber/Tools/class-detect-missing-tags-subscriber.php:148 +msgid "WP Rocket: " +msgstr "WP Rocket :" + +#: inc/Addon/Cloudflare/Subscriber.php:364 +#, php-format +msgid "Cloudflare development mode error: %s" +msgstr "Erreur du mode développement de CloudFlare : %s" + +#: inc/Addon/Cloudflare/Subscriber.php:370 +#, php-format +msgid "Cloudflare development mode %s" +msgstr "Mode développement de CloudFlare %s" + +#: inc/Addon/Cloudflare/Subscriber.php:390 +#, php-format +msgid "Cloudflare cache level error: %s" +msgstr "Erreur du niveau de cache de CloudFlare : %s" + +#: inc/Addon/Cloudflare/Subscriber.php:395 +msgctxt "Cloudflare caching level" +msgid "Standard" +msgstr "Standard" + +#: inc/Addon/Cloudflare/Subscriber.php:401 +#, php-format +msgid "Cloudflare cache level set to %s" +msgstr "Niveau de cache de Cloudflare défini à %s" + +#: inc/Addon/Cloudflare/Subscriber.php:420 +#, php-format +msgid "Cloudflare minification error: %s" +msgstr "Erreur de la minification CloudFlare : %s" + +#: inc/Addon/Cloudflare/Subscriber.php:426 +#, php-format +msgid "Cloudflare minification %s" +msgstr "Minification CloudFlare %s" + +#: inc/Addon/Cloudflare/Subscriber.php:445 +#, php-format +msgid "Cloudflare rocket loader error: %s" +msgstr "Erreur du Rocket Loader de CloudFlare : %s" + +#: inc/Addon/Cloudflare/Subscriber.php:451 +#, php-format +msgid "Cloudflare rocket loader %s" +msgstr "Rocket Loader de CloudFlare %s" + +#: inc/Addon/Cloudflare/Subscriber.php:470 +#, php-format +msgid "Cloudflare browser cache error: %s" +msgstr "Erreur du cache navigateur CloudFlare : %s" + +#: inc/Addon/Cloudflare/Subscriber.php:476 +#, php-format +msgid "Cloudflare browser cache set to %s seconds" +msgstr "Cache navigateur de Cloudflare défini à %s secondes" + +#: inc/Addon/FacebookTracking/Subscriber.php:87 +#: inc/Addon/GoogleTracking/Subscriber.php:132 +#: inc/Engine/HealthCheck/CacheDirSizeCheck.php:88 +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:92 +msgid "weekly" +msgstr "hebdomadaire" + +#: inc/Engine/Admin/Settings/Page.php:171 +msgid "Save Changes" +msgstr "Enregistrer les modifications" + +#: inc/Engine/Admin/Settings/Page.php:171 +msgid "Validate License" +msgstr "Valider la licence" + +#: inc/Engine/Admin/Settings/Page.php:236 +#: inc/Engine/Admin/Settings/Page.php:237 +msgid "Unavailable" +msgstr "Indisponible" + +#: inc/Engine/Admin/Settings/Page.php:341 inc/deprecated/deprecated.php:1789 +#: views/settings/page-sections/dashboard.php:73 +msgid "License" +msgstr "Licence" + +#: inc/Engine/Admin/Settings/Page.php:358 +msgid "API key" +msgstr "Clé API" + +#: inc/Engine/Admin/Settings/Page.php:373 +msgid "Email address" +msgstr "Adresse e-mail" + +#: inc/Engine/Admin/Settings/Page.php:399 +msgid "Dashboard" +msgstr "Tableau de bord" + +#: inc/Engine/Admin/Settings/Page.php:400 +msgid "Get help, account info" +msgstr "Aide, info du compte" + +#: inc/Engine/Admin/Settings/Page.php:409 +msgid "My Status" +msgstr "Ma situation" + +#: inc/Engine/Admin/Settings/Page.php:419 views/settings/page.php:72 +msgid "Rocket Tester" +msgstr "Rocket Tester" + +#: inc/Engine/Admin/Settings/Page.php:420 +msgid "I am part of the WP Rocket Beta Testing Program." +msgstr "Je participe au Beta Testing de WP Rocket." + +#: inc/Engine/Admin/Settings/Page.php:428 views/settings/page.php:90 +msgid "Rocket Analytics" +msgstr "Rocket Analytics" + +#: inc/Engine/Admin/Settings/Page.php:430 +#, php-format +msgid "" +"I agree to share anonymous data with the development team to help improve WP" +" Rocket. %1$sWhat info will we collect?%2$s" +msgstr "" +"J'accepte de partager des données anonymes avec l'équipe de développement " +"pour aider à améliorer WP Rocket. %1$sQuelles informations collecterons-nous" +" ?%2$s" + +#: inc/Engine/Admin/Settings/Page.php:454 inc/Engine/Cache/WPCache.php:347 +msgid "Cache" +msgstr "Cache" + +#: inc/Engine/Admin/Settings/Page.php:455 +msgid "Basic cache options" +msgstr "Options de base" + +#: inc/Engine/Admin/Settings/Page.php:462 +msgid "Mobile Cache" +msgstr "Cache mobile" + +#: inc/Engine/Admin/Settings/Page.php:464 +msgid "Speed up your site for mobile visitors." +msgstr "Accélérez votre site pour vos visiteurs mobile." + +#: inc/Engine/Admin/Settings/Page.php:469 +msgid "" +"We detected you use a plugin that requires a separate cache for mobile, and " +"automatically enabled this option for compatibility." +msgstr "" +"Nous avons détecté que vous utilisiez un plugin qui nécessite un cache " +"séparé pour mobile, et activé automatiquement cette option pour la " +"compatibilité." + +#: inc/Engine/Admin/Settings/Page.php:473 +msgid "User Cache" +msgstr "Cache utilisateur" + +#: inc/Engine/Admin/Settings/Page.php:476 +#, php-format +msgid "" +"%1$sUser cache%2$s is great when you have user-specific or restricted " +"content on your website." +msgstr "" +"%1$sLe cache utilisateur%2$s est parfait si vous avez du contenu spécifique " +"ou restreint pour vos utilisateurs sur votre site." + +#: inc/Engine/Admin/Settings/Page.php:484 +msgid "Cache Lifespan" +msgstr "Délai de nettoyage du cache" + +#: inc/Engine/Admin/Settings/Page.php:487 +#, php-format +msgid "" +"Cache files older than the specified lifespan will be deleted.
      Enable " +"%1$spreloading%2$s for the cache to be rebuilt automatically after lifespan " +"expiration." +msgstr "" +"Les fichiers de cache plus anciens que le délai de purge seront " +"supprimés.
      Activez %1$sle préchargement%2$s pour que le cache soit " +"rechargé automatiquement après ce délai." + +#: inc/Engine/Admin/Settings/Page.php:501 +msgid "Enable caching for logged-in WordPress users" +msgstr "Activer la mise en cache pour les utilisateurs WordPress connectés" + +#: inc/Engine/Admin/Settings/Page.php:509 +msgid "Enable caching for mobile devices" +msgstr "Activer la mise en cache pour les appareils mobile" + +#: inc/Engine/Admin/Settings/Page.php:524 +msgid "Separate cache files for mobile devices" +msgstr " Créer un fichier de cache à part pour les mobiles" + +#: inc/Engine/Admin/Settings/Page.php:526 +#, php-format +msgid "" +"Most modern themes are responsive and should work without a separate cache. " +"Enable this only if you have a dedicated mobile theme or plugin. %1$sMore " +"info%2$s" +msgstr "" +"La plupart des thèmes modernes sont responsives et devraient fonctionner " +"sans cache séparé. Activez ceci seulement si vous avez un thème ou un plugin" +" mobile dédié. %1$sPlus d'infos%2$s" + +#: inc/Engine/Admin/Settings/Page.php:542 +msgid "" +"Specify time after which the global cache is cleared
      (0 = unlimited )" +msgstr "" +"Indiquez le temps après lequel le cache global doit être vidé
      (0 = " +"illimité)" + +#: inc/Engine/Admin/Settings/Page.php:544 +#, php-format +msgid "" +"Reduce lifespan to 10 hours or less if you notice issues that seem to appear" +" periodically. %1$sWhy?%2$s" +msgstr "" +"Réduisez ce délai à 10 heures ou moins si vous remarquez des problèmes " +"apparaissant seulement périodiquement.%1$sPourquoi ?%2$s" + +#: inc/Engine/Admin/Settings/Page.php:550 +msgid "Minutes" +msgstr "Minutes" + +#: inc/Engine/Admin/Settings/Page.php:551 +msgid "Hours" +msgstr "Heures" + +#: inc/Engine/Admin/Settings/Page.php:552 +msgid "Days" +msgstr "Jours" + +#: inc/Engine/Admin/Settings/Page.php:577 +#: views/settings/page-sections/tutorials.php:22 +msgid "File Optimization" +msgstr "Optimisation des fichiers" + +#: inc/Engine/Admin/Settings/Page.php:578 +msgid "Optimize CSS & JS" +msgstr "Optimisez CSS & JS" + +#: inc/Engine/Admin/Settings/Page.php:585 +msgid "CSS Files" +msgstr "Fichiers CSS" + +#: inc/Engine/Admin/Settings/Page.php:592 +#: inc/Engine/Admin/Settings/Page.php:602 +#, php-format +msgid "" +"%1$s Minification is currently activated in Autoptimize. If" +" you want to use %2$s’s minification, disable those options in Autoptimize." +msgstr "" +"La minification %1$s est actuellement activée dans " +"Autoptimize. Si vous souhaitez utiliser la minification de " +"%2$s, désactivez ces options dans Autoptimize." + +#: inc/Engine/Admin/Settings/Page.php:595 +msgid "JavaScript Files" +msgstr "Fichiers JavaScript" + +#: inc/Engine/Admin/Settings/Page.php:611 +msgid "Minify CSS files" +msgstr "Minifier les fichiers CSS" + +#: inc/Engine/Admin/Settings/Page.php:612 +msgid "Minify CSS removes whitespace and comments to reduce the file size." +msgstr "" +"Supprime les espace et les commentaires afin de réduire la taille des " +"fichiers CSS." + +#: inc/Engine/Admin/Settings/Page.php:625 +#: inc/Engine/Admin/Settings/Page.php:647 +#: inc/Engine/Admin/Settings/Page.php:729 +#: inc/Engine/Admin/Settings/Page.php:751 +msgid "This could break things!" +msgstr "Ceci pourrait casser des choses sur votre site !" + +#: inc/Engine/Admin/Settings/Page.php:626 +#: inc/Engine/Admin/Settings/Page.php:648 +#: inc/Engine/Admin/Settings/Page.php:730 +#: inc/Engine/Admin/Settings/Page.php:752 +msgid "" +"If you notice any errors on your website after having activated this " +"setting, just deactivate it again, and your site will be back to normal." +msgstr "" +"Si vous remarquez des problèmes sur votre site Web après avoir activé cette " +"option, il vous suffit simplement de la désactiver et votre site sera de " +"nouveau normal." + +#: inc/Engine/Admin/Settings/Page.php:627 +msgid "Activate minify CSS" +msgstr "Activer la minification CSS" + +#: inc/Engine/Admin/Settings/Page.php:632 +msgid "Combine CSS files (Enable Minify CSS files to select)" +msgstr "" +"Combiner les fichiers CSS (activez la minification CSS pour pouvoir " +"séléctionner)" + +#: inc/Engine/Admin/Settings/Page.php:634 +#, php-format +msgid "" +"Combine CSS merges all your files into 1, reducing HTTP requests. Not " +"recommended if your site uses HTTP/2. %1$sMore info%2$s" +msgstr "" +"Condense tous vos fichiers CSS en un seul fichier, réduit le nombre de requêtes HTTP.\n" +"Ces réglages ne sont pas recommandés si votre site utilise le HTTP/2. %1$sPlus d'infos%2$s" + +#: inc/Engine/Admin/Settings/Page.php:649 +msgid "Activate combine CSS" +msgstr "Activer la combinaison CSS" + +#: inc/Engine/Admin/Settings/Page.php:654 inc/admin/options.php:125 +msgid "Excluded CSS Files" +msgstr "Fichiers CSS à exclure" + +#: inc/Engine/Admin/Settings/Page.php:655 +msgid "" +"Specify URLs of CSS files to be excluded from minification and concatenation" +" (one per line)." +msgstr "" +"Indiquez l’URL des fichiers CSS à exclure de la minification et de la " +"concaténation (une par ligne)" + +#: inc/Engine/Admin/Settings/Page.php:656 +msgid "" +"Internal: The domain part of the URL will be stripped " +"automatically. Use (.*).css wildcards to exclude all CSS files located at a " +"specific path." +msgstr "" +"Interne :Le nom de domaine sera supprimé automatiquement de" +" l'URL. Utilisez les expressions régulières (.*).css afin d’exclure tous les" +" fichiers CSS pour un chemin donné." + +#: inc/Engine/Admin/Settings/Page.php:658 +#, php-format +msgid "" +"3rd Party: Use either the full URL path or only the domain " +"name, to exclude external CSS. %1$sMore info%2$s" +msgstr "" +"Tiers : Utilisez le chemin complet de l'URL, ou seulement " +"le nom de domaine, pour exclure les fichiers CSS externes. %1$sPlus " +"d'infos%2$s" + +#: inc/Engine/Admin/Settings/Page.php:671 +msgid "Optimize CSS delivery" +msgstr "Optimiser le chargement du CSS" + +#: inc/Engine/Admin/Settings/Page.php:678 +#, php-format +msgctxt "WP Critical CSS compatibility" +msgid "" +"Optimize CSS Delivery is currently handled by the %1$s plugin. If you want " +"to use WP Rocket’s Optimize CSS Delivery option, disable the %1$s plugin." +msgstr "" +"Le Chargement Optimisé du CSS est actuellement géré par le plugin %1$s. Si " +"vous souhaitez utiliser l’option Chargement Optimisé du CSS de WP Rocket, " +"désactivez %1$s." + +#: inc/Engine/Admin/Settings/Page.php:680 +#, php-format +msgid "" +"Optimize CSS delivery eliminates render-blocking CSS on your website for " +"faster perceived load time. %1$sMore info%2$s" +msgstr "" +"Élimine le CSS bloquant le rendu de votre site pour un meilleur temps de " +"chargement perçu. %1$sPlus d'infos%2$s" + +#: inc/Engine/Admin/Settings/Page.php:691 +msgid "Fallback critical CSS" +msgstr "Critical CSS de secours" + +#: inc/Engine/Admin/Settings/Page.php:696 +#, php-format +msgid "" +"Provides a fallback if auto-generated critical path CSS is incomplete. " +"%1$sMore info%2$s" +msgstr "" +"Fourni un critical path CSS de secours si celui auto-généré est " +"incomplet.%1$sPlus d'infos%2$s" + +#: inc/Engine/Admin/Settings/Page.php:705 +msgid "Remove jQuery Migrate" +msgstr "Supprimer jQuery Migrate" + +#: inc/Engine/Admin/Settings/Page.php:707 +#, php-format +msgid "" +"Remove jQuery Migrate eliminates a JS file and can improve load time. " +"%1$sMore info%2$s" +msgstr "" +"Supprimer jQuery Migrate élimine un fichier JS et peut améliorer le temps de" +" chargement. %1$sPlus d'infos%2$s" + +#: inc/Engine/Admin/Settings/Page.php:715 +msgid "Minify JavaScript files" +msgstr "Minifier les fichiers JS" + +#: inc/Engine/Admin/Settings/Page.php:716 +msgid "" +"Minify JavaScript removes whitespace and comments to reduce the file size." +msgstr "" +"Supprime les espace et les commentaires afin de réduire la taille des " +"fichiers JS." + +#: inc/Engine/Admin/Settings/Page.php:731 +msgid "Activate minify JavaScript" +msgstr "Activer la minification JavaScript" + +#: inc/Engine/Admin/Settings/Page.php:736 +msgid "" +"Combine JavaScript files (Enable Minify JavaScript files to select)" +msgstr "" +"Combiner les fichiers JavaScript (activez la minification JS pour " +"pouvoir séléctionner)" + +#: inc/Engine/Admin/Settings/Page.php:738 +#, php-format +msgid "" +"Combine JavaScript files combines your site’s internal, 3rd party and inline" +" JS reducing HTTP requests. Not recommended if your site uses HTTP/2. " +"%1$sMore info%2$s" +msgstr "" +"Combine vos fichiers JavaScript, les fichiers tiers et le inline JS en un " +"seul fichier, réduisant le nombre de requêtes HTTP. Ces réglages ne sont pas" +" recommandés si votre site utilise HTTP/2. %1$sPlus d'infos%2$s" + +#: inc/Engine/Admin/Settings/Page.php:753 +msgid "Activate combine JavaScript" +msgstr "Activer la combinaison JavaScript" + +#: inc/Engine/Admin/Settings/Page.php:758 inc/admin/options.php:126 +msgid "Excluded Inline JavaScript" +msgstr "JavaScript inline exclu" + +#: inc/Engine/Admin/Settings/Page.php:760 +#, php-format +msgid "" +"Specify patterns of inline JavaScript to be excluded from concatenation (one" +" per line). %1$sMore info%2$s" +msgstr "" +"Indiquez les patterns du code JavaScript inline à exclure de la " +"concaténation (un par ligne).%1$sPlus d'infos%2$s" + +#: inc/Engine/Admin/Settings/Page.php:776 inc/admin/options.php:127 +msgid "Excluded JavaScript Files" +msgstr "Fichiers JavaScript exclus" + +#: inc/Engine/Admin/Settings/Page.php:777 +msgid "" +"Specify URLs of JavaScript files to be excluded from minification and " +"concatenation (one per line)." +msgstr "" +"Indiquez l’URL des fichiers JavaScript à exclure de la minification et de la" +" concaténation (une par ligne)" + +#: inc/Engine/Admin/Settings/Page.php:778 +msgid "" +"Internal: The domain part of the URL will be stripped " +"automatically. Use (.*).js wildcards to exclude all JS files located at a " +"specific path." +msgstr "" +"Interne :Le nom de domaine sera supprimé automatiquement de" +" l'URL. Utilisez les expressions régulières (.*).js afin d’exclure tous les " +"fichiers JS pour un chemin donné." + +#: inc/Engine/Admin/Settings/Page.php:780 +#, php-format +msgid "" +"3rd Party: Use either the full URL path or only the domain " +"name, to exclude external JS. %1$sMore info%2$s" +msgstr "" +"Tiers : Utilisez le chemin complet de l'URL, ou seulement " +"le nom de domaine, pour exclure les fichiers JS externes. %1$sPlus " +"d'infos%2$s" + +#: inc/Engine/Admin/Settings/Page.php:796 +msgid "Load JavaScript deferred" +msgstr "Charger le JavaScript en différé" + +#: inc/Engine/Admin/Settings/Page.php:798 +#, php-format +msgid "" +"Load JavaScript deferred eliminates render-blocking JS on your site and can " +"improve load time. %1$sMore info%2$s" +msgstr "" +"Élimine le JS bloquant le rendu de votre site pour un meilleur temps de " +"chargement perçu. %1$sPlus d'infos%2$s" + +#: inc/Engine/Admin/Settings/Page.php:809 +msgid "Safe Mode for jQuery (recommended)" +msgstr "Mode sécurisé pour jQuery (recommandé)" + +#: inc/Engine/Admin/Settings/Page.php:810 +msgid "" +"Safe mode for jQuery for deferred JS ensures support for inline jQuery " +"references from themes and plugins by loading jQuery at the top of the " +"document as a render-blocking script.
      Deactivating may result in " +"broken functionality, test thoroughly!" +msgstr "" +"Le mode sécurisé pour jQuery pour les JS différés assure le support des " +"références jQuery inline des thèmes et des plugins en chargeant jQuery tout " +"en haut du document comme un script bloquant le rendu.
      Sa " +"désactivation peut entraîner des problèmes fonctionnels, à tester " +"soigneusement !" + +#: inc/Engine/Admin/Settings/Page.php:823 inc/admin/ui/meta-boxes.php:79 +msgid "Delay JavaScript execution" +msgstr "Reporter l'exécution JavaScript" + +#: inc/Engine/Admin/Settings/Page.php:825 +#, php-format +msgid "" +"Improves performance by delaying the loading of JavaScript files until user " +"interaction (e.g. scroll, click). %1$sMore info%2$s" +msgstr "" +"Améliore les performances en retardant le chargement des fichiers JavaScript" +" jusqu'à l'interaction avec l'utilisateur (ex: défilement, clic). %1$sPlus " +"d'infos%2$s" + +#: inc/Engine/Admin/Settings/Page.php:833 +msgid "Scripts to delay" +msgstr "Scripts à reporter" + +#: inc/Engine/Admin/Settings/Page.php:834 +msgid "" +"Specify keywords that can identify inline or JavaScript files to be delayed " +"(one per line)." +msgstr "" +"Précisez les mots clés qui permettent d'identifier les fichiers JavaScript " +"ou le JS inline à reporter (un par ligne)." + +#: inc/Engine/Admin/Settings/Page.php:835 +msgid "" +"A curated list of scripts that are safe to delay is provided. They may not " +"all apply to your website and it is safe to leave the list as-is unless you " +"face issues." +msgstr "" +"Une liste de scripts qui peuvent être reportés en toute sécurité est " +"fournie. Ils peuvent ne pas s'appliquer tous à votre site web et il est " +"possible de laisser la liste telle quelle, sauf si vous rencontrez des " +"problèmes." + +#: inc/Engine/Admin/Settings/Page.php:870 +msgid "Media" +msgstr "Média" + +#: inc/Engine/Admin/Settings/Page.php:871 +msgid "LazyLoad, emojis, embeds, WebP" +msgstr "LazyLoad, emojis, embeds, WebP" + +#: inc/Engine/Admin/Settings/Page.php:880 +msgid "Avada" +msgstr "Avada" + +#: inc/Engine/Admin/Settings/Page.php:884 +msgid "Autoptimize" +msgstr "Autoptimize" + +#: inc/Engine/Admin/Settings/Page.php:929 +msgid "LazyLoad" +msgstr "LazyLoad" + +#: inc/Engine/Admin/Settings/Page.php:932 +#, php-format +msgid "" +"It can improve actual and perceived loading time as images, iframes, and " +"videos will be loaded only as they enter (or about to enter) the viewport " +"and reduces the number of HTTP requests. %1$sMore Info%2$s" +msgstr "" +"Cela peut améliorer le temps de chargement réel et perçu car les images, les" +" iframes et les vidéos ne seront chargées que lorsqu'elles entreront (ou sur" +" le point d'entrer) dans la fenêtre. Réduit le nombre de requêtes " +"HTTP.%1$sPlus d'infos%2$s" + +#: inc/Engine/Admin/Settings/Page.php:939 +#, php-format +msgid "" +"LazyLoad is currently activated in %2$s. If you want to use WP Rocket’s " +"LazyLoad, disable this option in %2$s." +msgstr "" +"Le Lazyload est actuellement activé dans %2$s. Si vous souhaitez utiliser le" +" Lazyload de WP Rocket, désactivez cette option dans %2$s." + +#: inc/Engine/Admin/Settings/Page.php:942 +msgid "Emoji 👻" +msgstr "Emoji 👻" + +#: inc/Engine/Admin/Settings/Page.php:944 +msgid "" +"Use default emoji of visitor's browser instead of loading emoji from " +"WordPress.org" +msgstr "" +"Utiliser les emoji du navigateur de vos visiteurs au lieu de charger celles " +"de WordPress.org" + +#: inc/Engine/Admin/Settings/Page.php:948 +msgid "Embeds" +msgstr "Embeds" + +#: inc/Engine/Admin/Settings/Page.php:950 +msgid "" +"Prevents others from embedding content from your site, prevents you from " +"embedding content from other (non-allowed) sites, and removes JavaScript " +"requests related to WordPress embeds" +msgstr "" +"Empêche les autres d'intégrer du contenu de votre site dans le leur et vous " +"empêche d'incorporer du contenu des autres sites (non autorisés), retire les" +" requêtes JavaScript liées aux embeds WordPress" + +#: inc/Engine/Admin/Settings/Page.php:954 +msgid "WebP compatibility" +msgstr "Compatibilité WebP" + +#: inc/Engine/Admin/Settings/Page.php:958 +#, php-format +msgid "" +"Enable this option if you would like WP Rocket to serve WebP images to " +"compatible browsers. Please note that WP Rocket cannot create WebP images " +"for you. To create WebP images we recommend %1$sImagify%2$s. %3$sMore " +"info%2$s" +msgstr "" +"Activez cette option si vous souhaitez que WP Rocket serve les images WebP " +"aux navigateurs compatibles. Veuillez noter que WP Rocket ne peut pas créer " +"d'images WebP pour vous. Pour créer des images WebP, nous vous recommandons " +"%1$sImagify%2$s. %3$sPlus d'infos%2$s" + +#: inc/Engine/Admin/Settings/Page.php:985 +msgid "Enable for images" +msgstr "Activer pour les images" + +#: inc/Engine/Admin/Settings/Page.php:997 +#, php-format +msgid "" +"LazyLoad for images is currently activated in %2$s. If you want to use " +"%1$s’s LazyLoad, disable this option in %2$s." +msgstr "" +"Le Lazyload est actuellement activé dans %2$s. Si vous souhaitez utiliser le" +" Lazyload de %1$s, désactivez cette option dans %2$s." + +#: inc/Engine/Admin/Settings/Page.php:1005 +msgid "Enable for iframes and videos" +msgstr "Activer sur les iframes et vidéos" + +#: inc/Engine/Admin/Settings/Page.php:1020 +msgid "Replace YouTube iframe with preview image" +msgstr "Remplacer l'iframe Youtube par une image d'aperçu" + +#: inc/Engine/Admin/Settings/Page.php:1021 +msgid "" +"This can significantly improve your loading time if you have a lot of " +"YouTube videos on a page." +msgstr "" +"Cela peut considérablement améliorer votre chargement si vous avez beaucoup " +"de vidéos Youtube sur une page." + +#: inc/Engine/Admin/Settings/Page.php:1031 +#, php-format +msgid "Replace YouTube iframe with preview image is not compatible with %2$s." +msgstr "" +"Remplacer l'iframe Youtube par une image d’aperçu n’est pas compatible avec " +"%2$s." + +#: inc/Engine/Admin/Settings/Page.php:1035 +msgid "Disable Emoji" +msgstr "Désactiver les emojis" + +#: inc/Engine/Admin/Settings/Page.php:1036 +msgid "Disable Emoji will reduce the number of external HTTP requests." +msgstr "Réduit le nombre de requêtes HTTP externes" + +#: inc/Engine/Admin/Settings/Page.php:1044 +msgid "Disable WordPress embeds" +msgstr "Désactiver les embeds de WordPress" + +#: inc/Engine/Admin/Settings/Page.php:1054 +#: inc/classes/subscriber/Media/class-webp-subscriber.php:362 +msgid "Enable WebP caching" +msgstr "Activer la mise en cache pour WebP" + +#: inc/Engine/Admin/Settings/Page.php:1074 inc/deprecated/deprecated.php:1776 +#: views/settings/page-sections/tutorials.php:30 +msgid "Preload" +msgstr "Préchargement" + +#: inc/Engine/Admin/Settings/Page.php:1075 +msgid "Generate cache files, preload fonts" +msgstr "Générez le cache, préchargez les polices" + +#: inc/Engine/Admin/Settings/Page.php:1086 +msgid "Preload Cache" +msgstr "Préchargement du cache" + +#: inc/Engine/Admin/Settings/Page.php:1089 +#, php-format +msgid "" +"When you enable preloading WP Rocket will generate the cache starting with " +"the links on your homepage followed by the sitemaps you specify. Preloading " +"is automatically triggered when you add or update content and can also be " +"manually triggered from the admin bar or from the %1$sWP Rocket " +"Dashboard%2$s." +msgstr "" +"Lorsque vous activez le préchargement, WP Rocket génère le cache en " +"commençant par les liens de votre page d'accueil, suivis des sitemaps que " +"vous spécifiez. Le préchargement est automatiquement déclenché lorsque vous " +"ajoutez ou mettez à jour du contenu et peut également être déclenché " +"manuellement à partir de la barre d'admin ou du %1$stableau de bord de WP " +"Rocket%2$s." + +#: inc/Engine/Admin/Settings/Page.php:1097 +msgid "Prefetch DNS Requests" +msgstr "Préchargement des requêtes DNS" + +#: inc/Engine/Admin/Settings/Page.php:1099 +msgid "" +"DNS prefetching can make external files load faster, especially on mobile " +"networks" +msgstr "" +"Le préchargement des requêtes DNS peut permettre aux ressources externes de " +"charger plus rapidement, surtout sur les réseaux mobiles." + +#: inc/Engine/Admin/Settings/Page.php:1107 +msgid "Preload Fonts" +msgstr "Préchargement des polices" + +#: inc/Engine/Admin/Settings/Page.php:1110 +#, php-format +msgid "" +"Improves performance by helping browsers discover fonts in CSS files. " +"%1$sMore info%2$s" +msgstr "" +"Améliore les performances en aidant les navigateurs à découvrir les polices " +"contenues dans les fichiers CSS. %1$sPlus d'infos%2$s" + +#: inc/Engine/Admin/Settings/Page.php:1118 +msgid "Preload Links" +msgstr "Préchargement des liens" + +#: inc/Engine/Admin/Settings/Page.php:1121 +#, php-format +msgid "" +"Link preloading improves the perceived load time by downloading a page when " +"a user hovers over the link. %1$sMore info%2$s" +msgstr "" +"Le préchargement des liens améliore le temps de chargement perçu en " +"téléchargeant une page lorsqu'un utilisateur survole le lien. %1$sPlus " +"d'info%2$s" + +#: inc/Engine/Admin/Settings/Page.php:1135 +msgid "Activate Preloading" +msgstr "Activer le préchargement" + +#: inc/Engine/Admin/Settings/Page.php:1154 +msgid "Activate sitemap-based cache preloading" +msgstr "Activer le préchargement du sitemap" + +#: inc/Engine/Admin/Settings/Page.php:1173 +msgid "Sitemaps for preloading" +msgstr "Sitemaps à précharger" + +#: inc/Engine/Admin/Settings/Page.php:1177 +msgid "Specify XML sitemap(s) to be used for preloading" +msgstr "Indiquez le ou les sitemap(s) XML à utiliser pour le préchargement" + +#: inc/Engine/Admin/Settings/Page.php:1187 +msgid "URLs to prefetch" +msgstr "URLs à précharger" + +#: inc/Engine/Admin/Settings/Page.php:1188 +msgid "" +"Specify external hosts to be prefetched (no http:, one per " +"line)" +msgstr "" +"Indiquez les hôtes externes à précharger (sans http:, un par " +"ligne)" + +#: inc/Engine/Admin/Settings/Page.php:1197 +msgid "Fonts to preload" +msgstr "Polices à précharger" + +#: inc/Engine/Admin/Settings/Page.php:1198 +msgid "" +"Specify urls of the font files to be preloaded (one per line). Fonts must be" +" hosted on your own domain, or the domain you have specified on the CDN tab." +msgstr "" +"Indiquez les URLs des fichiers de police à précharger (une par ligne). Les " +"polices doivent être hébergées sur votre propre domaine, ou le domaine que " +"vous avez spécifié dans l'onglet CDN." + +#: inc/Engine/Admin/Settings/Page.php:1199 +msgid "" +"The domain part of the URL will be stripped automatically.
      Allowed font " +"extensions: otf, ttf, svg, woff, woff2." +msgstr "" +"Le nom de domaine sera supprimé automatiquement de l’URL.
      Extensions de " +"police autorisées : otf, ttf, svg, woff, woff2." + +#: inc/Engine/Admin/Settings/Page.php:1208 +msgid "Enable link preloading" +msgstr "Activer le préchargement des liens" + +#: inc/Engine/Admin/Settings/Page.php:1227 +msgid "Advanced Rules" +msgstr "Règles avancées" + +#: inc/Engine/Admin/Settings/Page.php:1228 +msgid "Fine-tune cache rules" +msgstr "Affinez les règles du cache" + +#: inc/Engine/Admin/Settings/Page.php:1237 +msgid "" +"Sensitive pages like custom login/logout URLs should be excluded from cache." +msgstr "" +"Les pages sensibles telles que les URLs de connexion / déconnexion " +"personnalisées doivent être exclues du cache." + +#: inc/Engine/Admin/Settings/Page.php:1240 +msgctxt "plugin name" +msgid "WooCommerce" +msgstr "WooCommerce" + +#: inc/Engine/Admin/Settings/Page.php:1242 +msgctxt "plugin name" +msgid "Easy Digital Downloads" +msgstr "Easy Digital Downloads" + +#: inc/Engine/Admin/Settings/Page.php:1244 +msgctxt "plugin name" +msgid "iThemes Exchange" +msgstr "iThemes Exchange" + +#: inc/Engine/Admin/Settings/Page.php:1246 +msgctxt "plugin name" +msgid "Jigoshop" +msgstr "Jigoshop" + +#: inc/Engine/Admin/Settings/Page.php:1248 +msgctxt "plugin name" +msgid "WP-Shop" +msgstr "WP-Shop" + +#: inc/Engine/Admin/Settings/Page.php:1254 +#, php-format +msgid "" +"
      Cart, checkout and \"my account\" pages set in " +"%1$s%2$s%3$s will be detected and never cached by default." +msgstr "" +"
      Les pages panier, commande et \"mon compte\" réglées dans " +"%1$s%2$s%3$s seront automatiquement détectées et exclues du" +" cache par défaut." + +#: inc/Engine/Admin/Settings/Page.php:1264 inc/admin/options.php:128 +msgid "Never Cache URL(s)" +msgstr "Ne jamais mettre en cache ces URL(s)" + +#: inc/Engine/Admin/Settings/Page.php:1275 +msgid "Never Cache Cookies" +msgstr "Ne jamais mettre en cache ces Cookies" + +#: inc/Engine/Admin/Settings/Page.php:1280 inc/admin/options.php:129 +msgid "Never Cache User Agent(s)" +msgstr "Ne jamais mettre en cache ces User Agents" + +#: inc/Engine/Admin/Settings/Page.php:1285 inc/admin/options.php:130 +msgid "Always Purge URL(s)" +msgstr "Toujours purger ces URL(s)" + +#: inc/Engine/Admin/Settings/Page.php:1294 +msgid "Cache Query String(s)" +msgstr "Cacher les Query String(s)" + +#: inc/Engine/Admin/Settings/Page.php:1297 +#, php-format +msgid "" +"%1$sCache for query strings%2$s enables you to force caching for specific " +"GET parameters." +msgstr "" +"%1$sCacher les Query Strings%2$s vous permet de forcer la mise en cache de " +"paramètres GET spécifiques." + +#: inc/Engine/Admin/Settings/Page.php:1311 +msgid "" +"Specify URLs of pages or posts that should never be cached (one per line)" +msgstr "" +"Indiquez les URLs des pages ou des articles qui doivent être exclues de la " +"mise en cache (une par ligne)" + +#: inc/Engine/Admin/Settings/Page.php:1312 +#: inc/Engine/Admin/Settings/Page.php:1340 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*) " +"wildcards to address multiple URLs under a given path." +msgstr "" +"Le nom de domaine sera supprimé automatiquement de l'URL .
      Utilisez les " +"expressions régulières (.*) pour exclure plusieurs URLs pour un chemin " +"donné." + +#: inc/Engine/Admin/Settings/Page.php:1321 +msgid "" +"Specify the IDs of cookies that, when set in the visitor's browser, should " +"prevent a page from getting cached (one per line)" +msgstr "" +"Indiquez les IDs des cookies qui, lorsqu'ils sont déposés dans le navigateur" +" du visiteur, devraient empêcher la mise en cache de la page (un par ligne)" + +#: inc/Engine/Admin/Settings/Page.php:1329 +msgid "" +"Specify user agent strings that should never see cached pages (one per line)" +msgstr "" +"Indiquez les chaînes de user agent qui ne devraient jamais voir les pages " +"mises en cache (une par ligne)" + +#: inc/Engine/Admin/Settings/Page.php:1330 +msgid "Use (.*) wildcards to detect parts of UA strings." +msgstr "" +"Utilisez les expressions régulières (.*) détecter les parties des chaînes " +"des UA." + +#: inc/Engine/Admin/Settings/Page.php:1339 +msgid "" +"Specify URLs you always want purged from cache whenever you update any post " +"or page (one per line)" +msgstr "" +"Indiquez les URLs dont vous voulez systématiquement vider le cache lorsque " +"vous mettez à jour n'importe quel article ou page (une par ligne)" + +#: inc/Engine/Admin/Settings/Page.php:1348 +msgid "Specify query strings for caching (one per line)" +msgstr "" +"Indiquez les query strings qui peuvent être mises en cache (une par ligne)" + +#: inc/Engine/Admin/Settings/Page.php:1373 inc/deprecated/deprecated.php:1775 +msgid "Database" +msgstr "Base de données" + +#: inc/Engine/Admin/Settings/Page.php:1374 +msgid "Optimize, reduce bloat" +msgstr "Optimisez & nettoyez" + +#: inc/Engine/Admin/Settings/Page.php:1383 +msgid "Post Cleanup" +msgstr "Nettoyage des contenus" + +#: inc/Engine/Admin/Settings/Page.php:1385 +msgid "" +"Post revisions and drafts will be permanently deleted. Do not use this " +"option if you need to retain revisions or drafts." +msgstr "" +"Les révisions et les brouillons seront supprimés définitivement. N'utilisez " +"pas cette option si vous souhaitez conserver vos révisions et brouillons." + +#: inc/Engine/Admin/Settings/Page.php:1393 +msgid "Comments Cleanup" +msgstr "Nettoyage des commentaires" + +#: inc/Engine/Admin/Settings/Page.php:1395 +msgid "Spam and trashed comments will be permanently deleted." +msgstr "Les Spams et les commentaires mis à la corbeille seront supprimés" + +#: inc/Engine/Admin/Settings/Page.php:1399 +msgid "Transients Cleanup" +msgstr "Nettoyage des transients" + +#: inc/Engine/Admin/Settings/Page.php:1401 +msgid "" +"Transients are temporary options; they are safe to remove. They will be " +"automatically regenerated as your plugins require them." +msgstr "" +"Les transients sont des options temporaires, leur suppression est sans " +"risque. Elles seront automatiquement régénérées si vos plugins en ont " +"besoin." + +#: inc/Engine/Admin/Settings/Page.php:1405 +msgid "Database Cleanup" +msgstr "Nettoyage de la base de données" + +#: inc/Engine/Admin/Settings/Page.php:1407 +msgid "Reduces overhead of database tables" +msgstr "Réduit les tables de la base de données" + +#: inc/Engine/Admin/Settings/Page.php:1411 +msgid "Automatic cleanup" +msgstr "Nettoyage automatique" + +#: inc/Engine/Admin/Settings/Page.php:1422 +#: inc/classes/admin/Database/class-optimization.php:41 +msgid "Revisions" +msgstr "Révisions" + +#: inc/Engine/Admin/Settings/Page.php:1424 +#, php-format +msgid "%s revision in your database." +msgid_plural "%s revisions in your database." +msgstr[0] "%s révision dans votre base de données." +msgstr[1] "%s révisions dans votre base de données." + +#: inc/Engine/Admin/Settings/Page.php:1432 +#: inc/classes/admin/Database/class-optimization.php:42 +msgid "Auto Drafts" +msgstr "Brouillons auto" + +#: inc/Engine/Admin/Settings/Page.php:1434 +#, php-format +msgid "%s draft in your database." +msgid_plural "%s drafts in your database." +msgstr[0] "%s brouillon dans votre base de données." +msgstr[1] "%s brouillons dans votre base de données." + +#: inc/Engine/Admin/Settings/Page.php:1442 +#: inc/classes/admin/Database/class-optimization.php:43 +msgid "Trashed Posts" +msgstr "Contenus dans la corbeille" + +#: inc/Engine/Admin/Settings/Page.php:1444 +#, php-format +msgid "%s trashed post in your database." +msgid_plural "%s trashed posts in your database." +msgstr[0] "%s contenu à la corbeille dans votre base de données." +msgstr[1] "%s contenus à la corbeille dans votre base de données." + +#: inc/Engine/Admin/Settings/Page.php:1452 +#: inc/classes/admin/Database/class-optimization.php:44 +msgid "Spam Comments" +msgstr "Commentaires indésirables" + +#: inc/Engine/Admin/Settings/Page.php:1454 +#, php-format +msgid "%s spam comment in your database." +msgid_plural "%s spam comments in your database." +msgstr[0] "%s commentaire indésirable dans votre base de données." +msgstr[1] "%s commentaires indésirables dans votre base de données." + +#: inc/Engine/Admin/Settings/Page.php:1462 +#: inc/classes/admin/Database/class-optimization.php:45 +msgid "Trashed Comments" +msgstr "Commentaires à la corbeille" + +#: inc/Engine/Admin/Settings/Page.php:1464 +#, php-format +msgid "%s trashed comment in your database." +msgid_plural "%s trashed comments in your database." +msgstr[0] "%s commentaire mis à la corbeille dans votre base de données." +msgstr[1] "%s commentaires mis à la corbeille dans votre base de données." + +#: inc/Engine/Admin/Settings/Page.php:1472 +#: inc/classes/admin/Database/class-optimization.php:46 +msgid "Expired transients" +msgstr "Transients expirés" + +#: inc/Engine/Admin/Settings/Page.php:1474 +#, php-format +msgid "%s expired transient in your database." +msgid_plural "%s expired transients in your database." +msgstr[0] "%s transient expiré dans votre base de données." +msgstr[1] "%s transients expirés dans votre base de données." + +#: inc/Engine/Admin/Settings/Page.php:1482 +msgid "All transients" +msgstr "Tous les transients" + +#: inc/Engine/Admin/Settings/Page.php:1484 +#, php-format +msgid "%s transient in your database." +msgid_plural "%s transients in your database." +msgstr[0] "%s transient dans votre base de données." +msgstr[1] "%s transients dans votre base de données." + +#: inc/Engine/Admin/Settings/Page.php:1492 +msgid "Optimize Tables" +msgstr "Optimiser les tables" + +#: inc/Engine/Admin/Settings/Page.php:1494 +#, php-format +msgid "%s table to optimize in your database." +msgid_plural "%s tables to optimize in your database." +msgstr[0] "%s table à optimiser dans votre base de données." +msgstr[1] "%s tables à optimiser dans votre base de données." + +#: inc/Engine/Admin/Settings/Page.php:1505 +msgid "Schedule Automatic Cleanup" +msgstr "Planifier le nettoyage automatique" + +#: inc/Engine/Admin/Settings/Page.php:1517 +msgid "Frequency" +msgstr "Fréquence" + +#: inc/Engine/Admin/Settings/Page.php:1525 +msgid "Daily" +msgstr "Journalier" + +#: inc/Engine/Admin/Settings/Page.php:1526 +msgid "Weekly" +msgstr "Hebdomadaire" + +#: inc/Engine/Admin/Settings/Page.php:1527 +msgid "Monthly" +msgstr "Mensuel" + +#: inc/Engine/Admin/Settings/Page.php:1543 +#: inc/Engine/Admin/Settings/Page.php:1554 inc/admin/ui/meta-boxes.php:76 +#: inc/deprecated/deprecated.php:1773 +msgid "CDN" +msgstr "CDN" + +#: inc/Engine/Admin/Settings/Page.php:1544 +msgid "Integrate your CDN" +msgstr "Intégrez votre CDN" + +#: inc/Engine/Admin/Settings/Page.php:1556 +msgid "" +"All URLs of static files (CSS, JS, images) will be rewritten to the CNAME(s)" +" you provide." +msgstr "" +"Toutes les URLs de vos fichiers statiques (CSS, JS, images) seront ré-" +"écrites avec le CNAME fourni." + +#: inc/Engine/Admin/Settings/Page.php:1558 +#, php-format +msgid "" +"Not required for services like Cloudflare and Sucuri. Please see our " +"available %1$sAdd-ons%2$s." +msgstr "" +"Non requis pour des services comme Cloudflare et Sucuri. Veuillez consulter " +"nos %1$sAdd-ons%2$s disponibles." + +#: inc/Engine/Admin/Settings/Page.php:1573 inc/admin/options.php:131 +msgid "Exclude files from CDN" +msgstr "Exclure des fichiers du CDN" + +#: inc/Engine/Admin/Settings/Page.php:1599 +#, php-format +msgid "" +"%1$s%2$s Add-on%3$s is currently enabled. Configuration of the CDN settings " +"is not required for %2$s to work on your site." +msgid_plural "" +"%1$s%2$s Add-ons%3$s are currently enabled. Configuration of the CDN " +"settings is not required for %2$s to work on your site." +msgstr[0] "" +"L' %1$s add-on %2$s%3$s est actuellement activé. La configuration des " +"paramètres CDN n’est pas nécessaire pour que %2$s fonctionne sur votre site." +msgstr[1] "" +"Les %1$s add-ons %2$s%3$s sont actuellement activés. La configuration des " +"paramètres CDN n’est pas nécessaire pour que %2$s fonctionne sur votre site." + +#: inc/Engine/Admin/Settings/Page.php:1624 +msgid "Enable Content Delivery Network" +msgstr "Activer le Content Delivery Network." + +#: inc/Engine/Admin/Settings/Page.php:1633 +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:151 +msgid "CDN CNAME(s)" +msgstr "CNAME(s) CDN" + +#: inc/Engine/Admin/Settings/Page.php:1634 +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:152 +msgid "Specify the CNAME(s) below" +msgstr "Indiquez le(s) CNAME(s) ci-dessous" + +#: inc/Engine/Admin/Settings/Page.php:1641 +msgid "" +"Specify URL(s) of files that should not get served via CDN (one per line)." +msgstr "" +"Indiquez les URLs des fichiers qui ne doivent pas être servies par le CDN " +"(une par ligne)." + +#: inc/Engine/Admin/Settings/Page.php:1642 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*) " +"wildcards to exclude all files of a given file type located at a specific " +"path." +msgstr "" +"Le nom de domaine sera supprimé automatiquement de l'URL .
      Utilisez les " +"expressions régulières (.*) pour exclure plusieurs URLs pour un chemin " +"donné." + +#: inc/Engine/Admin/Settings/Page.php:1664 +#: inc/Engine/Admin/Settings/Page.php:1672 +msgid "Heartbeat" +msgstr "Heartbeat" + +#: inc/Engine/Admin/Settings/Page.php:1665 +msgid "Control WordPress Heartbeat API" +msgstr "Contrôlez l'API WordPress Heartbeat" + +#: inc/Engine/Admin/Settings/Page.php:1673 +msgid "" +"Reducing or disabling the Heartbeat API’s activity can help save some of " +"your server’s resources." +msgstr "" +"Réduire ou désactiver l’activité de l’API Heartbeat peut permettre " +"d’économiser certaines ressources de votre serveur." + +#: inc/Engine/Admin/Settings/Page.php:1682 +msgid "Reduce or disable Heartbeat activity" +msgstr "Réduire ou désactiver l'activité Heartbeat" + +#: inc/Engine/Admin/Settings/Page.php:1683 +msgid "" +"Reducing activity will change Heartbeat frequency from one hit each minute " +"to one hit every 2 minutes." +msgstr "" +"La réduction de l'activité fera passer la fréquence Heartbeat d'un coup " +"toutes les minutes à un coup toutes les 2 minutes." + +#: inc/Engine/Admin/Settings/Page.php:1683 +msgid "" +"Disabling Heartbeat entirely may break plugins and themes using this API." +msgstr "" +"La désactivation complète de Heartbeat peut endommager les plugins et les " +"thèmes utilisant cette API." + +#: inc/Engine/Admin/Settings/Page.php:1697 +msgid "Do not limit" +msgstr "Ne pas limiter" + +#: inc/Engine/Admin/Settings/Page.php:1698 +msgid "Reduce activity" +msgstr "Réduire l'activité" + +#: inc/Engine/Admin/Settings/Page.php:1699 +msgid "Disable" +msgstr "Désactiver" + +#: inc/Engine/Admin/Settings/Page.php:1707 +msgid "Control Heartbeat" +msgstr "Contrôler Heartbeat" + +#: inc/Engine/Admin/Settings/Page.php:1716 +msgid "Behavior in backend" +msgstr "Comportement en Backend" + +#: inc/Engine/Admin/Settings/Page.php:1723 +msgid "Behavior in post editor" +msgstr "Comportement dans l’éditeur d'article" + +#: inc/Engine/Admin/Settings/Page.php:1729 +msgid "Behavior in frontend" +msgstr "Comportement en Frontend" + +#: inc/Engine/Admin/Settings/Page.php:1745 +#: views/settings/page-sections/tutorials.php:36 +msgid "Add-ons" +msgstr "Add-ons" + +#: inc/Engine/Admin/Settings/Page.php:1746 +msgid "Add more features" +msgstr "Ajoutez des fonctionnalités" + +#: inc/Engine/Admin/Settings/Page.php:1753 +msgid "One-click Rocket Add-ons" +msgstr "One-click Rocket Add-ons" + +#: inc/Engine/Admin/Settings/Page.php:1754 +msgid "" +"One-Click Add-ons are features extending available options without " +"configuration needed. Switch the option \"on\" to enable from this screen." +msgstr "" +"Ce sont des fonctionnalités complémentaires étendant les option déjà " +"disponibles sans besoin de configuration. Mettez l'option sur \"ON\" pour " +"l'activer depuis cet écran." + +#: inc/Engine/Admin/Settings/Page.php:1764 +msgid "Rocket Add-ons" +msgstr "Rocket Add-ons" + +#: inc/Engine/Admin/Settings/Page.php:1765 +msgid "Rocket Add-ons are complementary features extending available options." +msgstr "" +"Ce sont de simples fonctionnalités complémentaires étendant les option déjà " +"disponibles." + +#: inc/Engine/Admin/Settings/Page.php:1778 +msgid "Google Tracking" +msgstr "Google Tracking" + +#: inc/Engine/Admin/Settings/Page.php:1784 +msgid "Improve browser caching for Google Analytics" +msgstr "Améliore le cache navigateur pour Google Analytics" + +#: inc/Engine/Admin/Settings/Page.php:1786 +#, php-format +msgid "" +"WP Rocket will host these Google scripts locally on your server to help " +"satisfy the PageSpeed recommendation for Leverage browser " +"caching.
      %1$sLearn more%2$s" +msgstr "" +"WP Rocket hébergera ces scripts Google localement sur votre serveur pour " +"aider à satisfaire la recommandation de PageSpeed ​​pour Exploiter la " +"mise en cache du navigateur.
      %1$sEn savoir plus%2$s" + +#: inc/Engine/Admin/Settings/Page.php:1801 +msgid "Facebook Pixel" +msgstr "Facebook Pixel" + +#: inc/Engine/Admin/Settings/Page.php:1807 +msgid "Improve browser caching for Facebook Pixel" +msgstr "Améliore le cache navigateur pour Facebook Pixel" + +#: inc/Engine/Admin/Settings/Page.php:1809 +#, php-format +msgid "" +"WP Rocket will host these Facebook Pixels locally on your server to help " +"satisfy the PageSpeed recommendation for Leverage browser " +"caching.
      %1$sLearn more%2$s" +msgstr "" +"WP Rocket hébergera les scripts Facebook Pixel localement sur votre serveur " +"pour aider à satisfaire la recommandation de PageSpeed ​​pour Exploiter " +"la mise en cache du navigateur.
      %1$sEn savoir plus%2$s" + +#: inc/Engine/Admin/Settings/Page.php:1822 +#: inc/Engine/Admin/Settings/Page.php:1923 +msgid "Cloudflare" +msgstr "CloudFlare" + +#: inc/Engine/Admin/Settings/Page.php:1828 +msgid "Integrate your Cloudflare account with this add-on." +msgstr "Intégrez votre compte Cloudflare avec cet add-on" + +#: inc/Engine/Admin/Settings/Page.php:1829 +msgid "" +"Provide your account email, global API key, and domain to use options such " +"as clearing the Cloudflare cache and enabling optimal settings with WP " +"Rocket." +msgstr "" +"Entrez l’adresse e-mail, la clé API globale et le domaine de votre compte " +"CloudFlare pour pouvoir purger le cache Cloudflare et bénéficier des " +"réglages optimaux pour WP Rocket." + +#: inc/Engine/Admin/Settings/Page.php:1863 +msgid "Varnish" +msgstr "Varnish" + +#: inc/Engine/Admin/Settings/Page.php:1869 +msgid "If Varnish runs on your server, you must activate this add-on." +msgstr "Si votre serveur utilise Varnish, vous devez activer cet add-on" + +#: inc/Engine/Admin/Settings/Page.php:1871 +#, php-format +msgid "" +"Varnish cache will be purged each time WP Rocket clears its cache to ensure " +"content is always up-to-date.
      %1$sLearn more%2$s" +msgstr "" +"Le cache Varnish sera purgé à chaque fois que WP Rocket purgera son cache " +"pour vous assurer que le contenu soit toujours à jour.
      %1$sEn savoir " +"plus%2$s" + +#: inc/Engine/Admin/Settings/Page.php:1885 +msgid "Clear the Sucuri cache when WP Rocket’s cache is cleared." +msgstr "Effacez le cache Sucuri lorsque le cache de WP Rocket est effacé." + +#: inc/Engine/Admin/Settings/Page.php:1888 +msgid "" +"Provide your API key to clear the Sucuri cache when WP Rocket’s cache is " +"cleared." +msgstr "" +"Fournissez votre clé API pour vider le cache Sucuri lorsque le cache de WP " +"Rocket est effacé." + +#: inc/Engine/Admin/Settings/Page.php:1896 +#: inc/Engine/Admin/Settings/Page.php:2040 +msgid "Sucuri" +msgstr "Sucuri" + +#: inc/Engine/Admin/Settings/Page.php:1902 +msgid "Synchronize Sucuri cache with this add-on." +msgstr "Synchronisez le cache Sucuri avec cet add-on." + +#: inc/Engine/Admin/Settings/Page.php:1940 +msgid "Cloudflare credentials" +msgstr "Accès CloudFlare" + +#: inc/Engine/Admin/Settings/Page.php:1949 +msgid "Cloudflare settings" +msgstr "Réglages CloudFlare" + +#: inc/Engine/Admin/Settings/Page.php:1963 +msgctxt "Cloudflare" +msgid "Global API key:" +msgstr "Clé API globale :" + +#: inc/Engine/Admin/Settings/Page.php:1964 +msgctxt "Cloudflare" +msgid "Find your API key" +msgstr "Trouver votre clé API" + +#: inc/Engine/Admin/Settings/Page.php:1976 +msgctxt "Cloudflare" +msgid "Account email" +msgstr "E-mail du compte" + +#: inc/Engine/Admin/Settings/Page.php:1985 +msgctxt "Cloudflare" +msgid "Zone ID" +msgstr "Zone ID" + +#: inc/Engine/Admin/Settings/Page.php:1995 +msgid "Development mode" +msgstr "Mode développement" + +#: inc/Engine/Admin/Settings/Page.php:1997 +#, php-format +msgid "" +"Temporarily activate development mode on your website. This setting will " +"automatically turn off after 3 hours. %1$sLearn more%2$s" +msgstr "" +"Active temporairement le mode développement sur votre site. Ce réglage se " +"désactivera automatiquement après 3 heures. %1$sEn savoir plus%2$s" + +#: inc/Engine/Admin/Settings/Page.php:2005 +msgid "Optimal settings" +msgstr "Réglages optimaux" + +#: inc/Engine/Admin/Settings/Page.php:2006 +msgid "" +"Automatically enhances your Cloudflare configuration for speed, performance " +"grade and compatibility." +msgstr "" +"Améliore automatiquement votre configuration Cloudflare pour le temps de " +"chargement, les notes de performance et la compatibilité." + +#: inc/Engine/Admin/Settings/Page.php:2014 +msgid "Relative protocol" +msgstr "Protocol relatif" + +#: inc/Engine/Admin/Settings/Page.php:2015 +msgid "" +"Should only be used with Cloudflare's flexible SSL feature. URLs of static " +"files (CSS, JS, images) will be rewritten to use // instead of http:// or " +"https://." +msgstr "" +"Ne devrait être utilisé qu’avec la fonction Flexible SSL de CloudFlare. Les " +"URLs de vos fichiers statiques (CSS, JS, images) seront ré-écrites pour " +"utiliser // au lieu de http:// ou https:// ." + +#: inc/Engine/Admin/Settings/Page.php:2053 +msgid "Sucuri credentials" +msgstr "Accès Sucuri" + +#: inc/Engine/Admin/Settings/Page.php:2066 +msgctxt "Sucuri" +msgid "" +"Firewall API key (for plugin), must be in format {32 characters}/{32 " +"characters}:" +msgstr "" +"Firewall API key (for plugin), format doit être au format {32 " +"caractères}/{32 caractères} :" + +#: inc/Engine/Admin/Settings/Page.php:2067 +msgctxt "Sucuri" +msgid "Find your API key" +msgstr "Trouver votre clé API" + +#: inc/Engine/Admin/Settings/Render.php:461 inc/deprecated/deprecated.php:1294 +msgid "Upload file and import settings" +msgstr "Envoyer le fichier et importer les réglages" + +#: inc/Engine/Admin/Settings/Settings.php:400 +msgid "" +"Sucuri Add-on: The API key for the Sucuri firewall must be in format " +"{32 characters}/{32 characters}." +msgstr "" +"Add-on Sucuri : La clé API pour le Sucuri firewall doit être au format " +"{32 caractères}/{32 caractères}." + +#: inc/Engine/Admin/Settings/Settings.php:491 +#: inc/deprecated/deprecated.php:1245 +msgid "Settings saved." +msgstr "Réglages enregistrés." + +#: inc/Engine/Admin/Settings/Subscriber.php:141 +#: inc/deprecated/deprecated.php:1786 +#: views/settings/page-sections/tools.php:33 +msgid "Tools" +msgstr "Outils" + +#: inc/Engine/Admin/Settings/Subscriber.php:142 +msgid "Import, Export, Rollback" +msgstr "Importez, exportez, restaurez" + +#: inc/Engine/Admin/Settings/Subscriber.php:163 +#: views/settings/page-sections/imagify.php:14 +msgid "Image Optimization" +msgstr "Optimisation des images" + +#: inc/Engine/Admin/Settings/Subscriber.php:164 +msgid "Compress your images" +msgstr "Compressez vos images" + +#: inc/Engine/Admin/Settings/Subscriber.php:181 +#: views/settings/page-sections/tutorials.php:45 +msgid "Tutorials" +msgstr "Tutoriels" + +#: inc/Engine/Admin/Settings/Subscriber.php:182 +msgid "Getting started and how to videos" +msgstr "Prise en main et tutos vidéos" + +#: inc/Engine/CDN/RocketCDN/APIClient.php:154 +msgid "RocketCDN is not available at the moment. Please retry later" +msgstr "" +"RocketCDN n'est pas disponible pour le moment. Veuillez réessayer plus tard." + +#: inc/Engine/CDN/RocketCDN/APIClient.php:171 +msgid "RocketCDN cache purge failed: Missing identifier parameter." +msgstr "" +"La purge du cache de RocketCDN a échoué : Paramètre d'identification " +"manquant." + +#: inc/Engine/CDN/RocketCDN/APIClient.php:180 +msgid "RocketCDN cache purge failed: Missing user token." +msgstr "La purge du cache de RocketCDN a échoué : Jeton utilisateur manquant." + +#: inc/Engine/CDN/RocketCDN/APIClient.php:199 +msgid "" +"RocketCDN cache purge failed: The API returned an unexpected response code." +msgstr "" +"La purge du cache de RocketCDN a échoué : L'API a renvoyé un code réponse " +"inattendu." + +#: inc/Engine/CDN/RocketCDN/APIClient.php:208 +msgid "RocketCDN cache purge failed: The API returned an empty response." +msgstr "" +"La purge du cache de RocketCDN a échoué : L'API a renvoyé une réponse vide." + +#: inc/Engine/CDN/RocketCDN/APIClient.php:217 +msgid "RocketCDN cache purge failed: The API returned an unexpected response." +msgstr "" +"La purge du cache de RocketCDN a échoué : L'API a renvoyé une réponse " +"inattendue." + +#: inc/Engine/CDN/RocketCDN/APIClient.php:226 +#, php-format +msgid "RocketCDN cache purge failed: %s." +msgstr "La purge du cache de RocketCDN a échoué : %s." + +#: inc/Engine/CDN/RocketCDN/APIClient.php:234 +msgid "RocketCDN cache purge successful." +msgstr "Purge du cache de RocketCDN réussie." + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:82 +msgid "Next Billing Date" +msgstr "Prochaine date de facturation" + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:91 +msgid "No Subscription" +msgstr "Pas d'abonnement" + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:127 +msgid "Your RocketCDN subscription is currently active." +msgstr "Votre abonnement RocketCDN est actuellement actif." + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:133 +#, php-format +msgid "To use RocketCDN, replace your CNAME with %1$s%2$s%3$s." +msgstr "Pour utiliser RocketCDN, remplacez votre CNAME par %1$s%2$s%3$s." + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:144 +#, php-format +msgid "%1$sMore Info%2$s" +msgstr "%1$sPlus d'infos%2$s" + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:190 +msgid "Manage Subscription" +msgstr "Gérer l'abonnement" + +#: inc/Engine/CDN/RocketCDN/RESTSubscriber.php:137 +msgid "RocketCDN enabled" +msgstr "RocketCDN activé" + +#: inc/Engine/CDN/RocketCDN/RESTSubscriber.php:160 +msgid "RocketCDN disabled" +msgstr "RocketCDN désactivé" + +#: inc/Engine/Cache/AdminSubscriber.php:118 inc/admin/admin.php:71 +#: inc/admin/admin.php:92 inc/deprecated/3.5.php:908 +msgid "Clear this cache" +msgstr "Vider ce cache" + +#: inc/Engine/Cache/WPCache.php:330 +msgid "WP_CACHE value" +msgstr "valeur de WP_CACHE" + +#: inc/Engine/Cache/WPCache.php:351 +msgid "" +"The WP_CACHE constant needs to be set to true for WP Rocket cache to work " +"properly" +msgstr "" +"La constante WP_CACHE doit être définie à true pour que le cache de WP " +"Rocket fonctionne correctement" + +#: inc/Engine/Cache/WPCache.php:360 +msgid "WP_CACHE is set to true" +msgstr "WP_CACHE est réglée sur true" + +#: inc/Engine/Cache/WPCache.php:368 +msgid "WP_CACHE is not set" +msgstr "WP_CACHE n’est pas définie" + +#: inc/Engine/Cache/WPCache.php:376 +msgid "WP_CACHE is set to false" +msgstr "WP_CACHE est réglée sur false" + +#: inc/Engine/CriticalPath/APIClient.php:64 +#, php-format +msgid "Critical CSS for %1$s not generated. Error: %2$s" +msgstr "Le Critical CSS pour %1$s n'a pas été généré. Erreur : %2$s" + +#: inc/Engine/CriticalPath/APIClient.php:170 +#: inc/Engine/CriticalPath/DataManager.php:66 +#, php-format +msgid "" +"Critical CSS for %1$s on mobile not generated. Error: The API returned an " +"empty response." +msgstr "" +"Le Critical CSS pour %1$s n'a pas été généré. Erreur : L'API a renvoyé une " +"réponse vide." + +#: inc/Engine/CriticalPath/APIClient.php:173 +#: inc/Engine/CriticalPath/DataManager.php:69 +#, php-format +msgid "" +"Critical CSS for %1$s not generated. Error: The API returned an empty " +"response." +msgstr "" +"Le Critical CSS pour %1$s n'a pas été généré. Erreur : L'API a renvoyé une " +"réponse vide." + +#: inc/Engine/CriticalPath/APIClient.php:185 +#, php-format +msgid "Critical CSS for %1$s on mobile not generated." +msgstr "Le Critical CSS pour %1$s sur mobile n'a pas été généré." + +#: inc/Engine/CriticalPath/APIClient.php:187 +#: inc/Engine/CriticalPath/ProcessorService.php:193 +#, php-format +msgid "Critical CSS for %1$s not generated." +msgstr "Le Critical CSS pour %1$s n'a pas été généré." + +#: inc/Engine/CriticalPath/APIClient.php:195 +#, php-format +msgid "" +"Critical CSS for %1$s on mobile not generated. Error: The API returned an " +"invalid response code." +msgstr "" +"Le Critical CSS pour %1$s sur mobile n'a pas été généré. Erreur : L'API a " +"renvoyé une réponse vide." + +#: inc/Engine/CriticalPath/APIClient.php:197 +#, php-format +msgid "" +"Critical CSS for %1$s not generated. Error: The API returned an invalid " +"response code." +msgstr "" +"Le Critical CSS pour %1$s n'a pas été généré. Erreur : L'API a renvoyé une " +"réponse vide." + +#: inc/Engine/CriticalPath/APIClient.php:205 +#: inc/Engine/CriticalPath/ProcessorService.php:200 +#, php-format +msgid "Error: %1$s" +msgstr "Erreur : %1$s" + +#: inc/Engine/CriticalPath/Admin/Admin.php:260 +msgid "Regenerate Critical Path CSS" +msgstr "Régénérer Critical path CSS" + +#: inc/Engine/CriticalPath/Admin/Post.php:132 +#: views/cpcss/metabox/generate.php:47 +msgid "Generate Specific CPCSS" +msgstr "Générer un CPCSS spécifique" + +#: inc/Engine/CriticalPath/Admin/Post.php:133 +#: views/cpcss/metabox/generate.php:45 +msgid "Regenerate specific CPCSS" +msgstr "Regénérer un CPCSS spécifique" + +#: inc/Engine/CriticalPath/Admin/Post.php:199 +msgid "%l to use this feature." +msgstr "%l pour utiliser cette fonction." + +#: inc/Engine/CriticalPath/Admin/Post.php:202 +#, php-format +msgid "Publish the %s" +msgstr "Publié le %s" + +#: inc/Engine/CriticalPath/Admin/Post.php:203 +msgid "Enable Optimize CSS delivery in WP Rocket settings" +msgstr "" +"Activez l’option Optimiser le chargement du CSS dans les réglages de WP " +"Rocket" + +#: inc/Engine/CriticalPath/Admin/Post.php:204 +msgid "Enable Optimize CSS delivery in the options above" +msgstr "" +"Activez l’option Optimiser le chargement du CSS dans les réglages ci-dessus" + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:147 +msgid "Critical CSS generation is currently running." +msgstr "La génération du Critical CSS est en cours." + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:152 +#: inc/Engine/Preload/PreloadSubscriber.php:242 +#, php-format +msgid "Go to the %1$sWP Rocket settings%2$s page to track progress." +msgstr "" +"Rendez-vous aux %1$sréglages de WP Rocket%2$s pour suivre la progression." + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:366 +#, php-format +msgid "" +"Critical CSS generation is currently running: %1$d of %2$d page types " +"completed. (Refresh this page to view progress)" +msgstr "" +"La génération du Critical CSS est en cours : %1$d de %2$d de types de page " +"complétés. (Rafraîchir pour voir la progression)" + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:438 +#, php-format +msgid "Critical CSS generation finished for %1$d of %2$d page types." +msgstr "" +"La génération du Critical CSS est en terminée : %1$d de %2$d de types de " +"page." + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:445 +msgid "Critical CSS generation encountered one or more errors." +msgstr "La génération du CSS critique a rencontré une ou plusieurs erreur(s)." + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:445 +msgid "Learn more." +msgstr "En savoir plus." + +#: inc/Engine/CriticalPath/DataManager.php:102 +msgid "Critical CSS file for mobile does not exist" +msgstr "Le fichier Critical CSS pour mobile n’existe pas" + +#: inc/Engine/CriticalPath/DataManager.php:104 +msgid "Critical CSS file does not exist" +msgstr "Le fichier Critical CSS n’existe pas" + +#: inc/Engine/CriticalPath/DataManager.php:116 +msgid "Critical CSS file for mobile cannot be deleted" +msgstr "Le fichier Critical CSS pour mobile ne peut être supprimé" + +#: inc/Engine/CriticalPath/DataManager.php:118 +msgid "Critical CSS file cannot be deleted" +msgstr "Le fichier Critical CSS ne peut être supprimé" + +#: inc/Engine/CriticalPath/ProcessorService.php:186 +#, php-format +msgid "Mobile Critical CSS for %1$s not generated." +msgstr "Le Critical CSS mobile pour %1$s n'a pas été généré." + +#: inc/Engine/CriticalPath/ProcessorService.php:227 +#, php-format +msgid "Critical CSS for %s in progress." +msgstr "Critical CSS pour %s en cours." + +#: inc/Engine/CriticalPath/ProcessorService.php:261 +#, php-format +msgid "Mobile Critical CSS for %s generated." +msgstr "Critical CSS mobile pour %s généré." + +#: inc/Engine/CriticalPath/ProcessorService.php:272 +#, php-format +msgid "Critical CSS for %s generated." +msgstr "Critical CSS pour %s généré." + +#: inc/Engine/CriticalPath/ProcessorService.php:294 +msgid "Critical CSS file deleted successfully." +msgstr "Le fichier Critical CSS a bien été supprimé." + +#: inc/Engine/CriticalPath/ProcessorService.php:316 +#, php-format +msgid "Mobile Critical CSS for %1$s timeout. Please retry a little later." +msgstr "" +"Timeout pour le Critical CSS mobile de%1$s. Veuillez réessayer un peu plus " +"tard." + +#: inc/Engine/CriticalPath/ProcessorService.php:329 +#, php-format +msgid "Critical CSS for %1$s timeout. Please retry a little later." +msgstr "" +"Timeout pour le Critical CSS de%1$s. Veuillez réessayer un peu plus tard." + +#: inc/Engine/CriticalPath/RESTWP.php:141 +msgid "Mobile CPCSS generation not enabled." +msgstr "Génération du Critical CSS mobile non activée" + +#: inc/Engine/CriticalPath/RESTWPPost.php:36 +#: inc/Engine/CriticalPath/RESTWPPost.php:69 +msgid "Requested post does not exist." +msgstr "Le post demandé n'existe pas." + +#: inc/Engine/CriticalPath/RESTWPPost.php:46 +msgid "Cannot generate CPCSS for unpublished post." +msgstr "Impossible de générer un CPCSS pour un post non publié." + +#: inc/Engine/HealthCheck/HealthCheck.php:82 inc/deprecated/3.5.php:868 +msgid "" +"The following scheduled event failed to run. This may indicate the CRON " +"system is not running properly, which can prevent some WP Rocket features " +"from working as intended:" +msgid_plural "" +"The following scheduled events failed to run. This may indicate the CRON " +"system is not running properly, which can prevent some WP Rocket features " +"from working as intended:" +msgstr[0] "" +"L’événement planifié suivant n'a pas eu lieu. Cela peut indiquer que le " +"système CRON ne fonctionne pas correctement, ce qui peut empêcher certaines " +"fonctions de WP Rocket de fonctionner comme prévu :" +msgstr[1] "" +"Les événements planifiés suivants n'ont pas eu lieu. Cela peut indiquer que " +"le système CRON ne fonctionne pas correctement, ce qui peut empêcher " +"certaines fonctions de WP Rocket de fonctionner comme prévu :" + +#: inc/Engine/HealthCheck/HealthCheck.php:88 inc/deprecated/3.5.php:877 +msgid "Please contact your host to check if CRON is working." +msgstr "Veuillez contacter votre hébergeur pour vérifier si CRON fonctionne." + +#: inc/Engine/HealthCheck/HealthCheck.php:142 +msgid "Scheduled Cache Purge" +msgstr "Purge de cache planifiée" + +#: inc/Engine/HealthCheck/HealthCheck.php:143 +msgid "Scheduled Database Optimization" +msgstr "Optimisation de la base de données planifiée" + +#: inc/Engine/HealthCheck/HealthCheck.php:144 +msgid "Database Optimization Process" +msgstr "Optimisation de la base de données" + +#: inc/Engine/HealthCheck/HealthCheck.php:145 +msgctxt "noun" +msgid "Preload" +msgstr "Préchargement" + +#: inc/Engine/HealthCheck/HealthCheck.php:146 +msgid "Critical Path CSS Generation Process" +msgstr "La génération du Critical Path CSS" + +#: inc/Engine/Optimization/DelayJS/Admin/Settings.php:104 +msgid "Restore Defaults" +msgstr "Rétablir la liste par défaut" + +#: inc/Engine/Preload/Homepage.php:153 +#, php-format +msgid "" +"Preload encountered an error. Could not gather links on %1$s because of the " +"following error: %2$s. %3$sLearn more%4$s." +msgstr "" +"Le préchargement a rencontré un problème. Impossible de collecter les lien " +"sur %1$s en raison de cette erreur : %2$s.%3$sEn savoir plus%4$s." + +#: inc/Engine/Preload/Homepage.php:166 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: %2$s. Security measures could be preventing access. " +"%3$sLearn more%4$s." +msgstr "" +"Le préchargement a rencontré un problème. %1$s n'est pas accessible en " +"raison de cette réponse :%2$s. Des mesures de sécurité pourraient en " +"empêcher l’accès. %3$sEn savoir plus%4$s." + +#: inc/Engine/Preload/Homepage.php:172 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: 404. Please make sure your homepage is accessible in your " +"browser. %2$sLearn more%3$s." +msgstr "" +"Le préchargement a rencontré un problème. %1$s n'est pas accessible en " +"raison de cette réponse : 404. Assurez-vous que votre page d'accueil est " +"bien accessible depuis votre navigateur. %2$sEn savoir plus%3$s." + +#: inc/Engine/Preload/Homepage.php:178 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: 500. Please check with your web host about server access. " +"%2$sLearn more%3$s." +msgstr "" +"Le préchargement a rencontré un problème. %1$s n'est pas accessible en " +"raison de cette réponse : 500. Veuillez vérifier auprès de votre hébergeur " +"les accès au serveur. %2$sEn savoir plus%3$s." + +#: inc/Engine/Preload/Homepage.php:184 +#, php-format +msgid "" +"Preload encountered an error. Could not gather links on %1$s because it " +"returned the following response code: %2$s. %3$sLearn more%4$s." +msgstr "" +"Le préchargement du Sitemap a rencontré un problème. Impossible de collecter" +" les lien depuis %1$s en raison de ce code réponse : %2$s. %3$sEn savoir " +"plus%4$s." + +#: inc/Engine/Preload/PreloadSubscriber.php:237 +msgid "Preload: WP Rocket has started preloading your website." +msgstr "Préchargement : WP Rocket a commencé à précharger votre site." + +#: inc/Engine/Preload/PreloadSubscriber.php:283 +#, php-format +msgid "" +"Preload: %1$s uncached page has now been preloaded. (refresh to see " +"progress)" +msgid_plural "" +"Preload: %1$s uncached pages have now been preloaded. (refresh to see " +"progress)" +msgstr[0] "" +"Préchargement : %1$s page a été pré-chargée. (rafraîchir pour voir la " +"progression)" +msgstr[1] "" +"Préchargement : %1$s pages ont été pré-chargées. (rafraîchir pour voir la " +"progression)" + +#: inc/Engine/Preload/PreloadSubscriber.php:292 +msgid "The following error happened during gathering of the URLs to preload:" +msgid_plural "" +"The following errors happened during gathering of the URLs to preload:" +msgstr[0] "" +"L’erreur suivante s'est produite lors de la collecte des URLs à précharger :" +msgstr[1] "" +"Les erreurs suivantes se sont produites lors de la collecte des URLs à " +"précharger :" + +#: inc/Engine/Preload/PreloadSubscriber.php:344 +#, php-format +msgid "Preload complete: %d pages have been cached." +msgstr "Préchargement terminé : %d pages ont été mises en cache." + +#: inc/Engine/Preload/Sitemap.php:150 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not gather links on %1$s because" +" of the following error: %2$s. %3$sLearn more%4$s." +msgstr "" +"Le préchargement du sitemap a rencontré un problème. Impossible de collecter" +" les lien sur %1$s en raison de cette erreur : %2$s.%3$sEn savoir plus%4$s." + +#: inc/Engine/Preload/Sitemap.php:165 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: %2$s. Security measures could be preventing access." +" %3$sLearn more%4$s." +msgstr "" +"Le préchargement du sitemap a rencontré un problème. %1$s n'est pas " +"accessible en raison de cette réponse :%2$s. Des mesures de sécurité " +"pourraient en empêcher l’accès. %3$sEn savoir plus%4$s." + +#: inc/Engine/Preload/Sitemap.php:170 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: 404. Please make sure you entered the correct " +"sitemap URL and it is accessible in your browser. %2$sLearn more%3$s." +msgstr "" +"Le préchargement du sitemap a rencontré un problème. %1$s n'est pas " +"accessible en raison de cette réponse : 404. Assurez-vous d’avoir bien " +"renseigné l’URL de votre sitemap et qu'elle est bien accessible depuis votre" +" navigateur. %2$sEn savoir plus%3$s." + +#: inc/Engine/Preload/Sitemap.php:175 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: 500. Please check with your web host about server " +"access. %2$sLearn more%3$s." +msgstr "" +"Le préchargement du Sitemap a rencontré un problème. %1$s n'est pas " +"accessible et renvoie ce code réponse : 500. Veuillez vérifier auprès de " +"votre hébergeur les accès au serveur. %2$sEn savoir plus%3$s." + +#: inc/Engine/Preload/Sitemap.php:180 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not gather links on %1$s because" +" it returned the following response code: %2$s. %3$sLearn more%4$s." +msgstr "" +"Le préchargement du Sitemap a rencontré un problème. Impossible de collecter" +" les lien depuis %1$s en raison de ce code réponse : %2$s. %3$sEn savoir " +"plus%4$s." + +#: inc/Engine/Preload/Sitemap.php:196 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not collect links from %1$s " +"because the file is empty. %2$sLearn more%3$s." +msgstr "" +"Le préchargement du Sitemap a rencontré un problème. Impossible de collecter" +" les lien depuis %1$s car le fichier est vide. %2$sEn savoir plus%3$s." + +#: inc/Engine/Preload/Sitemap.php:217 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not collect links from %1$s " +"because of an error during the XML sitemap parsing. %2$sLearn more%3$s." +msgstr "" +"Le préchargement du Sitemap a rencontré un problème. Impossible de collecter" +" les lien depuis %1$s à cause d’une erreur lors de l’analyse du Sitemap XML." +" %2$sEn savoir plus%3$s." + +#: inc/Engine/Preload/SitemapPreloadSubscriber.php:120 +#, php-format +msgid "" +"%1$sSimpleXML PHP extension%2$s is not enabled on your server. Please " +"contact your host to enable it before running sitemap-based cache " +"preloading." +msgstr "" +"%1$sL'extension PHP SimpleXML%2$s n'est pas activé sur votre serveur. " +"Veuillez contacter votre hébergeur pour l'activer avant d'exécuter le " +"préchargement du cache basé sur le sitemap." + +#: inc/ThirdParty/Hostings/Cloudways.php:82 +#, php-format +msgid "" +"Varnish auto-purge will be automatically enabled once Varnish is enabled on " +"your %s server." +msgstr "" +"L'auto-purge du Varnish sera automatiquement activée dès que Varnish sera " +"activé sur votre serveur %s." + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:78 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"Please deactivate the following %s option which conflicts with WP Rocket " +"features:" +msgid_plural "" +"Please deactivate the following %s options which conflict with WP Rocket " +"features:" +msgstr[0] "" +"Veuillez désactiver %s option qui entre en conflit avec les fonctions de WP " +"Rocket :" +msgstr[1] "" +"Veuillez désactiver les %s options suivantes qui entrent en conflit avec les" +" fonctions de WP Rocket :" + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:151 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sdisable emoji%3$s conflicts with WP Rockets %2$sdisable emoji%3$s" +msgstr "" +"%2$sDésactiver les emojis%3$s de %1$s est en conflit avec %2$sDésactiver les" +" emojis%3$s de WP Rocket" + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:187 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sGZIP compression%3$s conflicts with WP Rocket %2$sGZIP " +"compression%3$s" +msgstr "" +"%2$sLa compression Gzip%3$s de %1$s est en conflit avec %2$sla compression " +"Gzip%3$s de WP Rocket" + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:223 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sbrowser caching%3$s conflicts with WP Rocket %2$sbrowser " +"caching%3$s" +msgstr "" +"%2$sLe cache navigateur %3$s de %1$s est en conflit avec %2$sle cache " +"navigateur %3$s de WP Rocket" + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:255 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$spage caching%3$s conflicts with WP Rocket %2$spage caching%3$s" +msgstr "" +"%2$sLa mise en cache de page %3$s de %1$s est en conflit avec %2$sla mise en" +" cache de page %3$s de WP Rocket" + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:289 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sasset optimization%3$s conflicts with WP Rocket %2$sfile " +"optimization%3$s" +msgstr "" +"%2$sL'optimisation des fichiers %3$s de %1$s est en conflit avec " +"%2$sl'optimisation des fichiers%3$s de WP Rocket" + +#: inc/ThirdParty/Plugins/Smush.php:110 inc/ThirdParty/Plugins/Smush.php:128 +msgid "Smush" +msgstr "Smush" + +#: inc/admin/admin.php:18 inc/common/admin-bar.php:367 +#: inc/deprecated/deprecated.php:1787 +msgid "Support" +msgstr "Support" + +#: inc/admin/admin.php:20 +msgid "Docs" +msgstr "Docs" + +#: inc/admin/admin.php:22 inc/common/admin-bar.php:355 +msgid "FAQ" +msgstr "FAQ" + +#: inc/admin/admin.php:24 inc/common/admin-bar.php:64 +msgid "Settings" +msgstr "Réglages" + +#: inc/admin/admin.php:225 inc/admin/admin.php:240 +#: inc/classes/class-wp-rocket-requirements-check.php:203 +#: inc/classes/class-wp-rocket-requirements-check.php:214 +#, php-format +msgid "%s Update Rollback" +msgstr "Retour à la version %s" + +#: inc/admin/admin.php:266 +#, php-format +msgid "%1$sReturn to WP Rocket%2$s or %3$sgo to Plugins page%2$s" +msgstr "%1$sRetour à WP Rocket%2$s ou %3$sà la page des Plugins%2$s" + +#: inc/admin/admin.php:503 +msgid "Settings import failed: you do not have the permissions to do this." +msgstr "" +"L'import des réglages a échoué : Vous n'avez pas les permissions suffisantes" +" pour faire ceci." + +#: inc/admin/admin.php:507 +msgid "Settings import failed: no file uploaded." +msgstr "L'import des réglages a échoué : aucun fichier téléversé." + +#: inc/admin/admin.php:511 +msgid "Settings import failed: incorrect filename." +msgstr "L'import des réglages a échoué : nom de fichier incorrect." + +#: inc/admin/admin.php:522 +msgid "Settings import failed: incorrect filetype." +msgstr "L'import des réglages a échoué : type de fichier incorrect." + +#: inc/admin/admin.php:532 +msgid "Settings import failed: " +msgstr "L'import des réglages a échoué :" + +#: inc/admin/admin.php:548 +msgid "Settings import failed: unexpected file content." +msgstr "L'import des réglages a échoué : type de fichier incorrect." + +#: inc/admin/admin.php:569 +msgid "Settings imported and saved." +msgstr "Réglages importés et sauvegardés." + +#: inc/admin/options.php:149 +#, php-format +msgid "%1$s: %2$s." +msgstr "%1$s: %2$s." + +#: inc/admin/options.php:159 +msgid "The following pattern is invalid and has been removed:" +msgid_plural "The following patterns are invalid and have been removed:" +msgstr[0] "Le pattern suivant est invalide et a été supprimé :" +msgstr[1] "Les patterns suivants sont invalides et ont été supprimés :" + +#: inc/admin/ui/meta-boxes.php:14 inc/admin/ui/notices.php:768 +#: inc/common/admin-bar.php:85 inc/common/admin-bar.php:137 +#: views/settings/page-sections/dashboard.php:124 +msgid "Clear cache" +msgstr "Vider le cache" + +#: inc/admin/ui/meta-boxes.php:36 +msgid "WP Rocket Options" +msgstr "Options WP Rocket" + +#: inc/admin/ui/meta-boxes.php:65 +msgid "Never cache this page" +msgstr "Ne jamais mettre en cache cette page" + +#: inc/admin/ui/meta-boxes.php:69 +msgid "Activate these options on this post:" +msgstr "Activer ces options sur cette page :" + +#: inc/admin/ui/meta-boxes.php:72 +msgid "LazyLoad for images" +msgstr "LazyLoad sur les images" + +#: inc/admin/ui/meta-boxes.php:73 +msgid "LazyLoad for iframes/videos" +msgstr "LazyLoad sur les iframes et vidéos" + +#: inc/admin/ui/meta-boxes.php:74 +msgid "Minify/combine CSS" +msgstr "Minifier / combiner le CSS" + +#: inc/admin/ui/meta-boxes.php:75 +msgid "Minify/combine JS" +msgstr "Minifier / combiner le JS" + +#: inc/admin/ui/meta-boxes.php:77 +msgid "Optimize CSS Delivery" +msgstr "Optimiser le chargement du CSS" + +#: inc/admin/ui/meta-boxes.php:78 +msgid "Defer JS" +msgstr "Defer JS" + +#: inc/admin/ui/meta-boxes.php:85 +#, php-format +msgid "Activate first the %s option." +msgstr "Activer d’abord l’option de %s." + +#: inc/admin/ui/meta-boxes.php:101 +#, php-format +msgid "" +"%1$sNote:%2$s None of these options will be applied if this post has been " +"excluded from cache in the global cache settings." +msgstr "" +"%1$sRemarque :%2$s Ces options ne seront pas appliquées si vous avez exclu " +"cette page du cache dans les réglages généraux de WP Rocket." + +#: inc/admin/ui/notices.php:25 inc/admin/ui/notices.php:38 +#, php-format +msgid "" +"%1$s has not been deactivated due to missing writing permissions.
      \n" +"Make %2$s writeable and retry deactivation, or force deactivation now:" +msgstr "" +"%1$s n'a pas été désactivé en raisons de l'absence des permissions d'écriture.
      \n" +"Rendez %2$s inscriptible et réessayez de désactiver, ou forcez la désactivation maintenant :" + +#: inc/admin/ui/notices.php:91 +#, php-format +msgid "" +"%s: One or more plugins have been enabled or disabled, " +"clear the cache if they affect the front end of your site." +msgstr "" +"%s: Une ou plusieurs extensions ont été activées ou " +"désactivées, videz le cache si elles influent sur le front de votre site." + +#: inc/admin/ui/notices.php:184 +msgid "" +"WP Rocket Cloudflare Add-on provides similar functionalities. They can not " +"be active at the same time." +msgstr "" +"l’Add-on Cloudflare de WP Rocket fournit les même fonctionnalités. Ils ne " +"peuvent pas être activés en même temps." + +#: inc/admin/ui/notices.php:208 +#, php-format +msgid "" +"%s: The following plugins are not compatible with this " +"plugin and may cause unexpected results:" +msgstr "" +"%s: Les extensions suivantes ne sont pas compatibles avec " +"WP Rocket et vont générer des résultats inattendus :" + +#: inc/admin/ui/notices.php:214 +msgid "Deactivate" +msgstr "Désactiver" + +#: inc/admin/ui/notices.php:256 +msgid "" +"WP Rocket Footer JS is not an official add-on. It prevents some options in " +"WP Rocket from working correctly. Please deactivate it if you have problems." +msgstr "" +"WP Rocket Footer JS n'est pas un add-on officiel. Il empêche certaines " +"options de WP Rocket de fonctionner correctement. Veuillez le désactiver si " +"vous avez des problèmes." + +#: inc/admin/ui/notices.php:296 +#, php-format +msgid "" +"Endurance Cache is currently enabled, which will conflict with WP Rocket " +"Cache. Please set the Endurance Cache cache level to Off (Level 0) on the " +"%1$sSettings > General%2$s page to prevent any issues." +msgstr "" +"Endurance Cache est actuellement activé, et sera en conflit avec le cache de" +" WP Rocket. Veuillez régler Endurance Cache sur Off (Niveau 0) sur la page " +"%1$sRéglages > Général%2$s pour éviter tout problème." + +#: inc/admin/ui/notices.php:317 +#, php-format +msgid "" +"%1$s: A custom permalink structure is required for the plugin to work " +"properly. %2$sGo to permalinks settings%3$s" +msgstr "" +"%1$s: Une structure de permalien personnalisée est requise pour que WP " +"Rocket fonctionne. %2$sRendez-vous aux réglages des permaliens%3$s" + +#: inc/admin/ui/notices.php:364 +#, php-format +msgid "" +"%s could not modify the .htaccess file due to missing writing permissions." +msgstr "" +"%s n'a pas pu modifier le fichier .htaccess en raison d'un défaut de " +"permissions en écriture." + +#: inc/admin/ui/notices.php:370 inc/admin/ui/notices.php:845 +#, php-format +msgid "Troubleshoot: %1$sHow to make system files writeable%2$s" +msgstr "" +"Pour résoudre le problème : %1$sComment rendre les fichiers systèmes " +"accessible à l'écriture%2$s" + +#: inc/admin/ui/notices.php:372 inc/admin/ui/notices.php:847 +msgid "" +"https://docs.wp-rocket.me/article/626-how-to-make-system-files-htaccess-wp-" +"config-writeable/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://fr.docs.wp-rocket.me/article/945-fichiers-systemes-accessible-" +"ecriture/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: inc/admin/ui/notices.php:378 +msgid "" +"Don’t worry, WP Rocket’s page caching and settings will still function " +"correctly." +msgstr "" +"Ne vous inquiétez pas, la mise en cache des pages et les réglages de WP " +"Rocket fonctionneront toujours correctement." + +#: inc/admin/ui/notices.php:378 +msgid "" +"For optimal performance, adding the following lines into your .htaccess is " +"recommended (not required):" +msgstr "" +"Pour des performances optimales, il est recommandé d'ajouter les lignes " +"suivantes dans votre fichier .htaccess (pas obligatoire) :" + +#: inc/admin/ui/notices.php:525 +#, php-format +msgid "" +"%1$s is good to go! %2$sTest your load time%4$s, or visit your " +"%3$ssettings%4$s." +msgstr "" +"%1$s est prêt à décoller ! %2$sTestez votre temps de chargement%4$s, ou " +"jetez un oeil aux %3$sréglages%4$s." + +#: inc/admin/ui/notices.php:598 +msgid "" +"Would you allow WP Rocket to collect non-sensitive diagnostic data from this" +" website?" +msgstr "" +"Autorisez-vous WP Rocket à collecter les données de diagnostic non sensibles" +" de votre site web ?" + +#: inc/admin/ui/notices.php:599 +msgid "This would help us to improve WP Rocket for you in the future." +msgstr "Cela nous aiderait à améliorer WP Rocket pour vous dans le futur." + +#: inc/admin/ui/notices.php:605 +msgid "What info will we collect?" +msgstr "Quelles infos collecterons-nous ?" + +#: inc/admin/ui/notices.php:610 +msgid "" +"Below is a detailed view of all data WP Rocket will collect if granted " +"permission. WP Rocket will never transmit any domain names or email " +"addresses (except for license validation), IP addresses, or third-party API " +"keys." +msgstr "" +"Vous trouverez ci-dessous une vue détaillée de toutes les données que WP " +"Rocket collectera si l'autorisation lui est accordée. WP Rocket ne " +"transmettra jamais de noms de domaine ou d'adresses email (sauf pour la " +"validation de licence), d'adresses IP ou de clés API tierces." + +#: inc/admin/ui/notices.php:619 +msgid "Yes, allow" +msgstr "Oui, j'autorise" + +#: inc/admin/ui/notices.php:622 +msgid "No, thanks" +msgstr "Non, merci" + +#: inc/admin/ui/notices.php:661 +msgid "Thank you!" +msgstr "Merci !" + +#: inc/admin/ui/notices.php:666 +msgid "WP Rocket now collects these metrics from your website:" +msgstr "WP Rocket collecte désormais ces données sur votre site web :" + +#: inc/admin/ui/notices.php:704 +#, php-format +msgid "%s: Cache cleared." +msgstr "%s : Cache vidé." + +#: inc/admin/ui/notices.php:711 +#, php-format +msgid "%s: Post cache cleared." +msgstr "%s : Cache Article vidé." + +#: inc/admin/ui/notices.php:718 +#, php-format +msgid "%s: Term cache cleared." +msgstr "%s : Cache Terme vidé." + +#: inc/admin/ui/notices.php:725 +#, php-format +msgid "%s: User cache cleared." +msgstr "%s : Cache Utilisateur vidé." + +#: inc/admin/ui/notices.php:771 +msgid "Stop Preload" +msgstr "Arrêter le préchargement" + +#: inc/admin/ui/notices.php:789 +msgid "Force deactivation " +msgstr "Forcer la désactivation" + +#: inc/admin/ui/notices.php:802 +msgid "The following code should have been written to this file:" +msgstr "Le code suivant aurait dû être écrit sur ce fichier :" + +#: inc/admin/ui/notices.php:812 views/settings/page-sections/dashboard.php:46 +msgid "Dismiss this notice." +msgstr "Ne pas tenir compte de cet avertissement." + +#: inc/admin/ui/notices.php:833 +#, php-format +msgid "%s cannot configure itself due to missing writing permissions." +msgstr "" +"%s ne peut pas se configurer seul en raison de l'absence de permissions en " +"écriture." + +#: inc/admin/ui/notices.php:839 +#, php-format +msgid "Affected file/folder: %s" +msgstr "Fichier/dossier affecté : %s" + +#: inc/classes/admin/Database/class-optimization.php:47 +msgid "Transients" +msgstr "Transients" + +#: inc/classes/admin/Database/class-optimization.php:48 +msgid "Tables" +msgstr "Tables" + +#: inc/classes/admin/class-logs.php:124 +msgid "The debug file could not be deleted." +msgstr "Le fichier de debug n'a pas pu être suppprimé." + +#: inc/classes/class-wp-rocket-requirements-check.php:147 +#, php-format +msgid "To function properly, %1$s %2$s requires at least:" +msgstr "Pour fonctionner correctement, nécessite au moins %1$s %2$s :" + +#: inc/classes/class-wp-rocket-requirements-check.php:151 +#, php-format +msgid "" +"PHP %1$s. To use this WP Rocket version, please ask your web host how to " +"upgrade your server to PHP %1$s or higher." +msgstr "" +"PHP %1$s. Pour utiliser cette version de WP Rocket, demandez à votre " +"hébergeur comment mettre à niveau votre serveur vers PHP %1$s ou supérieur." + +#: inc/classes/class-wp-rocket-requirements-check.php:156 +#, php-format +msgid "" +"WordPress %1$s. To use this WP Rocket version, please upgrade WordPress to " +"version %1$s or higher." +msgstr "" +"WordPress %1$s. Pour utiliser cette version de WP Rocket, mettez à jour " +"WordPress à la version %1$s ou plus récente." + +#: inc/classes/class-wp-rocket-requirements-check.php:159 +msgid "" +"If you are not able to upgrade, you can rollback to the previous version by " +"using the button below." +msgstr "" +"Si vous n'êtes pas en mesure de faire l'upgrade, vous pouvez restaurer WP " +"Rocket à sa version précédente en cliquant ci-dessous." + +#: inc/classes/class-wp-rocket-requirements-check.php:161 +#: inc/deprecated/deprecated.php:1947 +#, php-format +msgid "Re-install version %s" +msgstr "Réinstaller la version %s" + +#: inc/classes/dependencies/wp-media/background-processing/wp-background-process.php:439 +#, php-format +msgid "Every %d Minutes" +msgstr "Toutes les %d minutes" + +#: inc/classes/logger/class-logger.php:254 +#: inc/classes/logger/class-logger.php:286 +msgid "The log file does not exist." +msgstr "Le fichier de log n'existe pas." + +#: inc/classes/logger/class-logger.php:260 +#: inc/classes/logger/class-logger.php:292 +msgid "The log file could not be read." +msgstr "Le fichier de log n'a pu être lu." + +#: inc/classes/logger/class-logger.php:279 +msgid "The logs are not saved into a file." +msgstr "Les logs ne sont pas enregistrés dans un fichier." + +#: inc/classes/subscriber/Cache/class-expired-cache-purge-subscriber.php:128 +msgid "WP Rocket Expired Cache Interval" +msgstr "Intervalle de cache de WP Rocket expiré" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:269 +#, php-format +msgid "" +"You are using %1$s to serve WebP images so you do not need to enable this " +"option. If you prefer to have WP Rocket serve WebP for you instead, please " +"disable them from serving in %1$s. %2$sMore info%3$s" +msgid_plural "" +"You are using %1$s to serve WebP images so you do not need to enable this " +"option. If you prefer to have WP Rocket serve WebP for you instead, please " +"disable them from serving in %1$s. %2$sMore info%3$s" +msgstr[0] "" +"Vous utilisez %1$s pour servir les images WebP, vous n'avez donc pas besoin " +"d'activer cette option. Si vous préférez que WP Rocket serve les WebP pour " +"vous, veuillez désactiver %1$s. %2$sPlus d'infos%3$s" +msgstr[1] "" +"Vous utilisez %1$s pour servir les images WebP, vous n'avez donc pas besoin " +"d'activer cette option. Si vous préférez que WP Rocket serve les WebP pour " +"vous, veuillez désactiver %1$s. %2$sPlus d'infos%3$s" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:280 +msgid "WebP cache is disabled by filter." +msgstr "Le cache WebP est désactivé par un filtre." + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:290 +#: inc/classes/subscriber/Media/class-webp-subscriber.php:316 +#, php-format +msgid "" +"You are using %1$s to convert images to WebP. If you want WP Rocket to serve" +" them for you, activate this option. %2$sMore info%3$s" +msgid_plural "" +"You are using %1$s to convert images to WebP. If you want WP Rocket to serve" +" them for you, activate this option. %2$sMore info%3$s" +msgstr[0] "" +"Vous utilisez %1$s pour convertir les images en WebP. Si vous voulez que WP " +"Rocket les serve pour vous, activez cette option. %2$sPlus d'infos%3$s" +msgstr[1] "" +"Vous utilisez %1$s pour convertir les images en WebP. Si vous voulez que WP " +"Rocket les serve pour vous, activez cette option. %2$sPlus d'infos%3$s" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:302 +#: inc/classes/subscriber/Media/class-webp-subscriber.php:328 +#, php-format +msgid "" +"You are using %1$s to convert images to WebP. WP Rocket will create separate" +" cache files to serve your WebP images. %2$sMore info%3$s" +msgid_plural "" +"You are using %1$s to convert images to WebP. WP Rocket will create separate" +" cache files to serve your WebP images. %2$sMore info%3$s" +msgstr[0] "" +"Vous utilisez %1$s pour convertir les images en WebP. WP Rocket créera des " +"fichiers cache séparés pour servir vos images WebP. %2$sPlus d'infos%3$s" +msgstr[1] "" +"Vous utilisez %1$s pour convertir les images en WebP. WP Rocket créera des " +"fichiers cache séparés pour servir vos images WebP. %2$sPlus d'infos%3$s" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:349 +#, php-format +msgid "" +"You don’t seem to be using a method to create and serve WebP that we are " +"auto-compatible with. If you are not using WebP do not enable this option. " +"%1$sMore info%2$s" +msgstr "" +"Vous ne semblez pas utiliser de méthode avec laquelle nous sommes " +"compatibles pour créer et servir les WebP. Si vous n'utilisez pas les WebP, " +"n'activez pas cette option. %1$sPlus d'infos%2$s" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:354 +msgid "We have not detected any compatible WebP plugin!" +msgstr "Nous n'avons détecté aucun plugin WebP compatible !" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:357 +#, php-format +msgid "" +"If you activate this option WP Rocket will create separate cache files to " +"serve WebP images. Any WebP images you have on your site will be served from" +" these files to compatible browsers. If you don’t already have WebP images " +"on your site consider using %1$sImagify%3$s or another supported plugin. " +"%2$sMore info%3$s" +msgstr "" +"Si vous activez cette option, WP Rocket créera des fichiers cache séparés " +"pour servir les images WebP. Toutes les images WebP que vous avez sur votre " +"site seront servies à partir de ces fichiers vers les navigateurs " +"compatibles. Si vous n'avez pas encore d'images WebP sur votre site, pensez " +"à utiliser %1$sImagify%3$s ou un autre plugin compatible. %2$sPlus " +"d'infos%3$s" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:369 +msgid "WP Rocket will create separate cache files to serve your WebP images." +msgstr "" +"WP Rocket créera des fichiers cache séparés pour servir vos images WebP." + +#: inc/classes/subscriber/Tools/class-detect-missing-tags-subscriber.php:151 +#, php-format +msgid "" +"Failed to detect the following requirement in your theme: closing %1$s." +msgid_plural "" +"Failed to detect the following requirements in your theme: closing %1$s." +msgstr[0] "" +"Impossible de détecter l'exigence suivante dans votre thème : fermeture de " +"%1$s." +msgstr[1] "" +"Impossible de détecter les exigences suivantes dans votre thème : fermeture " +"de %1$s." + +#: inc/classes/subscriber/Tools/class-detect-missing-tags-subscriber.php:159 +msgid "" +"https://docs.wp-rocket.me/article/99-pages-not-cached-or-minify-cssjs-not-" +"working/?utm_source=wp_plugin&utm_medium=wp_rocket#theme" +msgstr "" +"https://fr.docs.wp-rocket.me/article/264-les-pages-ne-sont-pas-mises-en-" +"cache-ou-la-minification-css-et-js-ne-fonctionne-" +"pas/?utm_source=wp_plugin&utm_medium=wp_rocket#theme" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:98 +msgid "monthly" +msgstr "mensuel" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:211 +msgid "Database optimization process is running" +msgstr "L'optimisation de la base de données est en cours" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:242 +msgid "" +"Database optimization process is complete. Everything was already optimized!" +msgstr "" +"L'optimisation de la base de donnée est terminée. Tout était déjà optimisé !" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:245 +msgid "" +"Database optimization process is complete. List of optimized items below:" +msgstr "" +"L'optimisation de la base de donnée est terminée. Voici la liste des " +"optimisations effectuées :" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:253 +#, php-format +msgid "%1$d %2$s optimized." +msgstr "%1$d %2$s optimisé(s)." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:116 +#, php-format +msgid "Sucuri cache purge error: %s" +msgstr "Erreur lors de la purge du cache Sucuri : %s" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:121 +msgid "" +"The Sucuri cache is being cleared. Note that it may take up to two minutes " +"for it to be fully flushed." +msgstr "" +"Le cache Sucuri est en train d'être effacé. Notez que le vidage complet peut" +" prendre jusqu'à deux minutes." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:244 +msgid "Sucuri firewall API key was not found." +msgstr "L’API Key du Firewall Sucuri est introuvable." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:256 +msgid "Sucuri firewall API key is invalid." +msgstr "L’API Key du Firewall Sucuri n'est pas valide." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:311 +msgid "Error when contacting Sucuri firewall API." +msgstr "Erreur lors du contact avec l’API Key du Firewall Sucuri." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:324 +#, php-format +msgid "Error when contacting Sucuri firewall API. Error message was: %s" +msgstr "" +"Erreur lors du contact avec l’API Key du Firewall Sucuri. Message d’erreur " +"reçu : %s" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:338 +msgid "Could not get a response from the Sucuri firewall API." +msgstr "Impossible d’obtenir une réponse de l’API Key du Firewall Sucuri." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:352 +msgid "Got an invalid response from the Sucuri firewall API." +msgstr "Réponse invalide de l’API Key du Firewall Sucuri." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:365 +msgid "The Sucuri firewall API returned an unknown error." +msgstr "L'API Key du Firewall Sucuri a retourné une erreur inconnue." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:368 +#, php-format +msgid "The Sucuri firewall API returned the following error: %s" +msgid_plural "The Sucuri firewall API returned the following errors: %s" +msgstr[0] "L'API Key du Firewall Sucuri a retourné cette erreur : %s" +msgstr[1] "L'API Key du Firewall Sucuri a retourné ces erreurs : %s" + +#: inc/classes/traits/trait-updater-api-tools.php:53 +#: inc/deprecated/3.3.php:761 inc/deprecated/3.3.php:770 +#, php-format +msgid "" +"An unexpected error occurred. Something may be wrong with WP-Rocket.me or " +"this server’s configuration. If you continue to have problems, contact support." +msgstr "" +"Une erreur inattendue s’est produite. Quelque chose ne va pas avec WP-" +"Rocket.me ou avec la configuration de ce serveur. Si vous continuez à avoir " +"des problèmes, contactez notre support." + +#: inc/common/admin-bar.php:125 inc/common/admin-bar.php:293 +#: inc/functions/i18n.php:41 inc/functions/i18n.php:51 +msgid "All languages" +msgstr "Toutes les langues" + +#: inc/common/admin-bar.php:152 +msgid "Clear this post" +msgstr "Vider cet article" + +#: inc/common/admin-bar.php:166 +msgid "Purge this URL" +msgstr "Purger cette URL" + +#: inc/common/admin-bar.php:192 +msgid "Purge OPcache" +msgstr "Vider OPcache" + +#: inc/common/admin-bar.php:210 +msgid "Clear Cloudflare cache" +msgstr "Vider le cache CloudFlare" + +#: inc/common/admin-bar.php:228 +msgid "Purge Sucuri cache" +msgstr "Vider cache Sucuri" + +#: inc/common/admin-bar.php:251 inc/common/admin-bar.php:305 +#: views/settings/page-sections/dashboard.php:144 +msgid "Preload cache" +msgstr "Précharger le cache" + +#: inc/common/admin-bar.php:330 views/settings/fields/rocket-cdn.php:55 +msgid "Purge RocketCDN cache" +msgstr "Purger le cache de RocketCDN" + +#: inc/common/admin-bar.php:343 views/settings/partials/documentation.php:14 +msgid "Documentation" +msgstr "Documentation" + +#: inc/common/purge.php:557 +msgid "OPcache purge failed." +msgstr "La purge OPcache a échouée." + +#: inc/common/purge.php:562 +msgid "OPcache successfully purged" +msgstr "OPcache purgé avec succès " + +#: inc/deprecated/3.2.php:52 views/settings/page-sections/imagify.php:36 +msgid "Activate Imagify" +msgstr "Activer Imagify" + +#: inc/deprecated/3.2.php:52 +msgid "Install Imagify for Free" +msgstr "Installer Imagify gratuitement" + +#: inc/deprecated/3.2.php:67 +msgid "" +"Speed up your website and boost your SEO by reducing image file sizes " +"without losing quality with Imagify." +msgstr "" +"Accélérez votre site Internet et améliorez votre référencement en réduisant " +"le poids de vos image sans perte de qualité avec Imagify." + +#: inc/deprecated/3.2.php:72 +msgid "More details" +msgstr "Plus de détails" + +#: inc/deprecated/3.2.php:228 +#, php-format +msgid "Sitemap preload: %d pages have been cached." +msgstr "Préchargement du Sitemap : %d pages ont été mises en cache." + +#: inc/deprecated/3.2.php:261 +#, php-format +msgid "" +"Sitemap preload: %d uncached pages have now been preloaded. (refresh to see " +"progress)" +msgstr "" +"Préchargement du Sitemap : %d pages ont été pré-chargées. (rafraîchir pour " +"voir la progression)" + +#: inc/deprecated/3.4.php:18 +msgid "Choose a domain from the list" +msgstr "Choisissez un domaine dans la liste" + +#: inc/deprecated/3.4.php:31 +msgid "No domain available in your Cloudflare account" +msgstr "Aucun domaine disponible dans votre compte CloudFlare" + +#: inc/deprecated/3.5.php:81 inc/deprecated/3.5.php:205 +msgid "" +"Curl is disabled on your server. Please ask your host to enable it. This is " +"required for the Cloudflare Add-on to work correctly." +msgstr "" +"Curl est désactivé sur votre serveur. Veuillez demander à votre hébergeur de" +" l'activer. Ceci est nécessaire pour que l’add-on Cloudflare fonctionne " +"correctement." + +#: inc/deprecated/3.5.php:89 +#, php-format +msgid "" +"Cloudflare email, API key and Zone ID are not set. Read the " +"%1$sdocumentation%2$s for further guidance." +msgstr "" +"L'email Cloudflare, l’API Key et le Zone ID ne sont pas définis. Lisez la " +"documentation %1$sdocumentation%2$s pour plus d'informations." + +#: inc/deprecated/3.5.php:216 +#, php-format +msgid "" +"Cloudflare email and API key are not set. Read the %1$sdocumentation%2$s for" +" further guidance." +msgstr "" +"L'email Cloudflare et l’API Key ne sont pas définis. Lisez la " +"%1$sdocumentation%2$s pour plus d'informations." + +#: inc/deprecated/3.5.php:281 +msgid "Connection to Cloudflare failed" +msgstr "La connexion à CloudFlare a échoué" + +#: inc/deprecated/DeprecatedClassTrait.php:54 +#, php-format +msgid "" +"The called class %1$s is deprecated since version %2$s! Use" +" %3$s instead." +msgstr "" +"La class nommée %1$s est obsolète depuis la version %2$s ! " +"Utilisez %3$s à la place." + +#: inc/deprecated/DeprecatedClassTrait.php:65 +#, php-format +msgid "" +"The called class %1$s is deprecated since version %2$s!" +msgstr "" +"La class nommée %1$s est obsolète depuis la version %2$s !" + +#: inc/deprecated/deprecated.php:240 +msgid "JS files with Deferred Loading JavaScript" +msgstr "Fichiers JS en chargement différé" + +#: inc/deprecated/deprecated.php:293 +msgid "Add URL" +msgstr "Ajouter une URL" + +#: inc/deprecated/deprecated.php:1277 views/settings/fields/import-form.php:22 +msgid "" +"Before you can upload your import file, you will need to fix the following " +"error:" +msgstr "" +"Avant de pouvoir envoyer votre fichier à importer, vous devez régler les " +"erreurs suivantes :" + +#: inc/deprecated/deprecated.php:1288 views/settings/fields/import-form.php:35 +#, php-format +msgid "Choose a file from your computer (maximum size: %s)" +msgstr "Choisissez un fichier sur votre ordinateur (taille maximum : %s)" + +#: inc/deprecated/deprecated.php:1385 +msgid "Your Cloudflare credentials are valid." +msgstr "Vos accès CloudFlare sont valides." + +#: inc/deprecated/deprecated.php:1389 +msgid "Your Cloudflare credentials are invalid!" +msgstr "Vos accès CloudFlare sont invalides !" + +#: inc/deprecated/deprecated.php:1453 +msgid "Save and optimize" +msgstr "Sauvegarder et optimiser" + +#: inc/deprecated/deprecated.php:1453 +msgid "Optimize" +msgstr "Optimiser" + +#: inc/deprecated/deprecated.php:1464 inc/deprecated/deprecated.php:1666 +msgctxt "screen-reader-text" +msgid "Note:" +msgstr "Note :" + +#: inc/deprecated/deprecated.php:1470 +msgctxt "screen-reader-text" +msgid "Performance tip:" +msgstr "Performance :" + +#: inc/deprecated/deprecated.php:1476 +msgctxt "screen-reader-text" +msgid "Third-party feature detected:" +msgstr "Autre fonctionnalité détectée :" + +#: inc/deprecated/deprecated.php:1488 inc/deprecated/deprecated.php:1672 +msgctxt "screen-reader-text" +msgid "Warning:" +msgstr "Attention : " + +#: inc/deprecated/deprecated.php:1501 +msgctxt "button text" +msgid "Download settings" +msgstr "Télécharger les réglages" + +#: inc/deprecated/deprecated.php:1531 +msgid "Replace site's hostname with:" +msgstr "Remplacer le nom d’hôte du site par :" + +#: inc/deprecated/deprecated.php:1550 inc/deprecated/deprecated.php:1587 +#: inc/deprecated/deprecated.php:1615 views/settings/fields/cnames.php:32 +#: views/settings/fields/cnames.php:64 views/settings/fields/cnames.php:94 +msgid "reserved for" +msgstr "reservé à / aux" + +#: inc/deprecated/deprecated.php:1552 inc/deprecated/deprecated.php:1589 +#: inc/deprecated/deprecated.php:1617 views/settings/fields/cnames.php:35 +#: views/settings/fields/cnames.php:67 views/settings/fields/cnames.php:97 +msgid "All files" +msgstr "Tous les fichiers" + +#: inc/deprecated/deprecated.php:1564 inc/deprecated/deprecated.php:1594 +#: inc/deprecated/deprecated.php:1622 views/settings/fields/cnames.php:47 +#: views/settings/fields/cnames.php:79 views/settings/fields/cnames.php:109 +msgid "Images" +msgstr "Images" + +#: inc/deprecated/deprecated.php:1635 views/settings/fields/cnames.php:120 +msgid "Add CNAME" +msgstr "Ajouter un CNAME" + +#: inc/deprecated/deprecated.php:1706 views/settings/partials/sidebar.php:16 +msgid "Watch the video" +msgstr "Voir la vidéo" + +#: inc/deprecated/deprecated.php:1771 +msgid "Basic" +msgstr "Options de base" + +#: inc/deprecated/deprecated.php:1772 +msgid "Static Files" +msgstr "Fichiers Statiques" + +#: inc/deprecated/deprecated.php:1774 +msgid "Advanced" +msgstr "Options avancées" + +#: inc/deprecated/deprecated.php:1944 +#, php-format +msgid "" +"%1$s %2$s requires at least PHP %3$s to function properly. To use this " +"version, please ask your web host how to upgrade your server to PHP %3$s or " +"higher. If you are not able to upgrade, you can rollback to the previous " +"version by using the button below." +msgstr "" +"%1$s %2$s requiert au moins PHP %3$s pour fonctionner correctement. Pour " +"utiliser cette version, demandez à votre hébergeur de mettre à jour votre " +"serveur vers PHP %3$s au minimum. Si cette mise à jour n'est pas possible, " +"vous pouvez revenir à la version précédente en utilisant le bouton ci-" +"dessous." + +#: inc/functions/admin.php:23 +msgid "" +"There seems to be an issue validating your license. Please see the error " +"message below." +msgid_plural "" +"There seems to be an issue validating your license. You can see the error " +"messages below." +msgstr[0] "" +"Il semble y avoir un problème avec la validation de votre licence. Vous " +"pouvez voir le message d'erreur ci-dessous." +msgstr[1] "" +"Il semble y avoir un problème avec la validation de votre licence. Vous " +"pouvez voir les messages d'erreur ci-dessous." + +#: inc/functions/admin.php:363 +msgid "Server type:" +msgstr "Type de serveur :" + +#: inc/functions/admin.php:372 +msgid "PHP version number:" +msgstr "Version PHP :" + +#: inc/functions/admin.php:381 +msgid "WordPress version number:" +msgstr "Version de WordPress :" + +#: inc/functions/admin.php:390 +msgid "WordPress multisite:" +msgstr "WordPress Multisite :" + +#: inc/functions/admin.php:399 +msgid "Current theme:" +msgstr "Thème actif :" + +#: inc/functions/admin.php:408 +msgid "Current site language:" +msgstr "Langage du site :" + +#: inc/functions/admin.php:417 +msgid "Active plugins:" +msgstr "Extensions actives :" + +#: inc/functions/admin.php:420 +msgid "Plugin names of all active plugins" +msgstr "Noms des toutes les extensions actives" + +#: inc/functions/admin.php:426 +msgid "Anonymized WP Rocket settings:" +msgstr "Réglages de WP Rocket anonymes :" + +#: inc/functions/admin.php:429 +msgid "Which WP Rocket settings are active" +msgstr "Quels sont les réglages de WP Rocket activés" + +#: inc/functions/options.php:527 inc/functions/options.php:566 +msgid "" +"License validation failed. Our server could not resolve the request from " +"your website." +msgstr "" +"La validation de la licence a échoué. Notre serveur n'a pas pu résoudre la " +"demande de votre site Web.." + +#: inc/functions/options.php:527 inc/functions/options.php:566 +#, php-format +msgid "" +"Try clicking %1$sSave Changes%2$s below. If the error persists, follow " +"%3$sthis guide%4$s." +msgstr "" +"Essayez de cliquer sur %1$sEnregistrer les modifications%2$s ci-dessous. Si " +"l’erreur persiste, suivez les instructions de %3$sce guide%4$s." + +#: inc/functions/options.php:543 +msgid "" +"License validation failed. You may be using a nulled version of the plugin. " +"Please do the following:" +msgstr "" +"La validation de la licence a échoué. Vous utilisez peut-être une version " +"cackée du plugin. Veuillez faire la chose suivante :" + +#: inc/functions/options.php:543 inc/functions/options.php:585 +#, php-format +msgid "Login to your WP Rocket %1$saccount%2$s" +msgstr "Connectez-vous à votre %1$scompte%2$s WP Rocket" + +#: inc/functions/options.php:543 inc/functions/options.php:585 +msgid "Download the zip file" +msgstr "Télécharger le fichier zip." + +#: inc/functions/options.php:543 inc/functions/options.php:585 +msgid "Reinstall" +msgstr "Réinstaller" + +#: inc/functions/options.php:543 +#, php-format +msgid "" +"If you do not have a WP Rocket account, please %1$spurchase a license%2$s." +msgstr "" +"Si vous ne possédez pas de compte WP Rocket, veuillez %1$sacheter une " +"licence%2$s." + +#: inc/functions/options.php:551 +msgid "" +"License validation failed. This user account does not exist in our database." +msgstr "" +"La validation de la licence a échoué. Ce compte utilisateur n'existe pas " +"dans notre base de données." + +#: inc/functions/options.php:551 +msgid "To resolve, please contact support." +msgstr "Pour résoudre ce problème, veuillez contacter le support." + +#: inc/functions/options.php:559 +msgid "License validation failed. This user account is blocked." +msgstr "" +"La validation de la licence a échoué. Ce compte utilisateur est bloqué." + +#: inc/functions/options.php:559 +#, php-format +msgid "Please see %1$sthis guide%2$s for more info." +msgstr "Veuillez consulter %1$sce guide%2$s pour plus d’informations." + +#: inc/functions/options.php:579 +msgid "Your license is not valid." +msgstr "Votre licence n’est pas correcte." + +#: inc/functions/options.php:579 +#, php-format +msgid "Make sure you have an active %1$sWP Rocket license%2$s." +msgstr "Assurez-vous que vous avez une %1$slicence WP Rocket%2$s active." + +#: inc/functions/options.php:581 +msgid "You have added as many sites as your current license allows." +msgstr "" +"Vous avez ajouté autant de sites que votre licence actuelle vous le permet." + +#: inc/functions/options.php:581 +#, php-format +msgid "" +"Upgrade your %1$saccount%2$s or %3$stransfer your license%2$s to this " +"domain." +msgstr "" +"Mettez à niveau votre %1$scompte%2$s ou %3$stransfèrez votre licence%2$s " +"vers ce domaine." + +#: inc/functions/options.php:583 +msgid "This website is not allowed." +msgstr "Ce site n'est pas autorisé." + +#: inc/functions/options.php:583 +#, php-format +msgid "Please %1$scontact support%2$s." +msgstr "Veuillez %1$scontacter le support%2$s." + +#: inc/functions/options.php:585 +msgid "This license key is not recognized." +msgstr "Cette clé de licence n'est pas reconnue." + +#: inc/functions/options.php:585 +#, php-format +msgid "If the issue persists, please %1$scontact support%2$s." +msgstr "Si le problème persiste, veuillez %1$scontacter le support%2$s." + +#: inc/functions/options.php:591 +#, php-format +msgid "License validation failed: %s" +msgstr "La validation de la licence a échoué : %s" + +#: inc/vendors/classes/class-imagify-partner.php:531 +msgid "Plugin installed successfully." +msgstr "Plugin installé avec succès." + +#: inc/vendors/classes/class-imagify-partner.php:532 +msgid "Sorry, you are not allowed to install plugins on this site." +msgstr "Désolé, vous n'êtes pas autorisé à installer des plugins sur ce site." + +#: inc/vendors/classes/class-imagify-partner.php:533 +msgid "Sorry, you are not allowed to do that." +msgstr "Désolé, vous n'êtes pas autorisé à faire ça." + +#: inc/vendors/classes/class-imagify-partner.php:534 +msgid "Plugin install failed." +msgstr "L'installation du plugin a échoué." + +#: inc/vendors/classes/class-imagify-partner.php:535 +msgid "Go back" +msgstr "Revenir en arrière" + +#: views/cpcss/activate-cpcss-mobile.php:13 +msgid "Optimize CSS delivery for mobile" +msgstr "Optimiser le chargement du CSS pour mobile" + +#: views/cpcss/activate-cpcss-mobile.php:14 +msgid "" +"Your website currently uses the same Critical Path CSS for both desktop and " +"mobile." +msgstr "" +"Votre site web utilise actuellement le même Critical Path CSS pour les " +"ordinateurs de bureau et les mobiles." + +#: views/cpcss/activate-cpcss-mobile.php:15 +msgid "Click the button to enable mobile-specific CPCSS for your site." +msgstr "" +"Cliquez sur le bouton pour activer le CPCSS spécifique aux mobiles pour " +"votre site." + +#: views/cpcss/activate-cpcss-mobile.php:20 +#: views/settings/enable-google-fonts.php:19 +#, php-format +msgid "" +"This is a one-time action and this button will be removed afterwards. " +"%1$sMore info%2$s" +msgstr "" +"Il s'agit d'une action unique et ce bouton sera supprimé par la suite. " +"%1$sPlus d'info%2$s" + +#: views/cpcss/activate-cpcss-mobile.php:30 +#, php-format +msgid "" +"Your site is now using mobile-specific critical path CSS. %1$sMore info%2$s" +msgstr "" +"Votre site utilise un Critical Path CSS spécifique pour mobile. %1$sPlus " +"d'infos%2$s" + +#: views/cpcss/activate-cpcss-mobile.php:39 +msgid "Generate Mobile Specific CPCSS" +msgstr "Générer un CPCSS spécifique aux mobiles" + +#: views/cpcss/metabox/container.php:19 +msgid "Critical Path CSS" +msgstr "Critical Path CSS" + +#: views/cpcss/metabox/generate.php:23 +#, php-format +msgid "Generate specific Critical Path CSS for this post. %1$sMore info%2$s" +msgstr "" +"Générer un Critical Path CSS spécifique pour ce post. %1$sPlus d'infos%2$s" + +#: views/cpcss/metabox/generate.php:33 +#, php-format +msgid "This post uses specific Critical Path CSS. %1$sMore info%2$s" +msgstr "Ce post utilise un Critical Path CSS spécifique. %1$sPlus d'infos%2$s" + +#: views/cpcss/metabox/generate.php:56 +msgid "Revert back to the default CPCSS" +msgstr "Revenir au CPCSS par défaut" + +#: views/deactivation-intent/form.php:21 +msgid "Return" +msgstr "Retour" + +#: views/deactivation-intent/form.php:22 +msgid "WP Rocket feedback" +msgstr "Feedback sur WP Rocket" + +#: views/deactivation-intent/form.php:24 +msgid "Close" +msgstr "Fermer" + +#: views/deactivation-intent/form.php:28 +msgid "May we have a little info about why you are deactivating?" +msgstr "" +"Pouvons-nous avoir quelques infos sur les raisons pour lesquelles vous " +"désactivez ?" + +#: views/deactivation-intent/form.php:35 +#, php-format +msgid "%1$sIt is a temporary deactivation.%2$s I am just debugging an issue." +msgstr "" +"%1$sC'est une désactivation temporaire.%2$s Je ne fais que débugger un " +"problème." + +#: views/deactivation-intent/form.php:44 +#, php-format +msgid "The plugin %1$sbroke my layout%2$s or some functionality." +msgstr "Le plugin a %1$scassé mon site%2$s ou certaines fonctionnalités." + +#: views/deactivation-intent/form.php:53 +#, php-format +msgid "My PageSpeed or GTMetrix %1$sscore did not improve.%2$s" +msgstr "Mon score PageSpeed ou GT Metrix %1$sne s'est pas amélioré.%2$s" + +#: views/deactivation-intent/form.php:59 +msgid "I did not notice a difference in loading time." +msgstr "Je n'ai pas remarqué de différence dans le temps de chargement." + +#: views/deactivation-intent/form.php:66 +#, php-format +msgid "The plugin is %1$stoo complicated to configure.%2$s" +msgstr "Le plugin est %1$strop compliqué à configurer.%2$s" + +#: views/deactivation-intent/form.php:72 +msgid "My host already has its own caching system." +msgstr "Mon hébergeur a déjà son propre système de cache." + +#: views/deactivation-intent/form.php:74 +msgid "What is the name of your web host?" +msgstr "Quel est le nom de votre hébergeur ?" + +#: views/deactivation-intent/form.php:79 +msgid "Other" +msgstr "Autre" + +#: views/deactivation-intent/form.php:81 +msgid "" +"Let us know why you are deactivating WP Rocket so we can improve the plugin" +msgstr "" +"Dites-nous pourquoi vous désactivez WP Rocket afin que nous puissions " +"améliorer le plugin" + +#: views/deactivation-intent/form.php:89 +msgid "The plugin broke my layout or some functionality" +msgstr "Le plugin a cassé mon site ou certaines fonctionnalités." + +#: views/deactivation-intent/form.php:90 +msgid "" +"This type of issue can usually be fixed by deactivating some options in WP " +"Rocket." +msgstr "" +"Ce type de problème peut généralement être résolu en désactivant certaines " +"options de WP Rocket." + +#: views/deactivation-intent/form.php:91 +msgid "" +"Click \"Apply Safe Mode\" to quickly disable LazyLoad, File Optimization, " +"Embeds and CDN options. Then check your site to see if the issue has " +"resolved." +msgstr "" +"Cliquez sur \"Appliquer le mode sécurisé\" pour désactiver immédiatement les" +" options de LazyLoad, d’optimisation des fichiers, embeds et CDN. Vérifiez " +"ensuite votre site pour voir si le problème est résolu." + +#: views/deactivation-intent/form.php:93 +msgid "Apply safe mode" +msgstr "Appliquer le mode sécurisé" + +#: views/deactivation-intent/form.php:96 +msgid "Safe mode applied." +msgstr "Mode sécurisé appliqué." + +#: views/deactivation-intent/form.php:97 +msgid "Review your site in a private/logged out browser window." +msgstr "" +"Vérifez votre site dans une fenêtre privée/déconnecté de votre navigateur." + +#: views/deactivation-intent/form.php:102 +#, php-format +msgid "" +"Is the issue fixed? Now you can reactivate options one at a time to " +"determine which one caused the problem. %1$sMore info%2$s" +msgstr "" +"Le problème est-il résolu ? Vous pouvez maintenant réactiver les options une" +" par une pour déterminer celle qui a causé le problème. %1$sPlus d'infos%2$s" + +#: views/deactivation-intent/form.php:107 +msgid "My PageSpeed or GT Metrix score did not improve" +msgstr "Mon score PageSpeed ou GT Metrix ne s'est pas amélioré" + +#: views/deactivation-intent/form.php:108 +msgid "" +"WP Rocket makes your site faster. The PageSpeed grade or GTMetrix score are " +"not indicators of speed. Neither your real visitors, nor Google will ever " +"see your website’s “grade”. Speed is the only metric that matters for SEO " +"and conversions." +msgstr "" +"WP Rocket rend votre site plus rapide. La note PageSpeed ou GTMetrix ne sont" +" pas des indicateurs de vitesse. Ni vos visiteurs rééls, ni Google ne " +"verront jamais la «Note» de votre site Web. La vitesse est la seule mesure " +"qui compte pour le SEO et vos conversions." + +#: views/deactivation-intent/form.php:109 +msgid "Yoast, the expert on all things related to SEO for WordPress states:" +msgstr "" +"Yoast, l'expert de tout ce qui concerne le SEO dans WordPress affirme :" + +#: views/deactivation-intent/form.php:110 +msgid "" +"[Google] just looks at how fast your website loads for users, so you don’t " +"have to obsess over that specific score. You have to make sure your website " +"is as fast as you can get it." +msgstr "" +"[Google] ne fait que regarder la vitesse de chargement de votre site web " +"pour les utilisateurs, vous n'avez donc pas à vous soucier de ce score en " +"particulier, vous devez vous assurer que votre site web est aussi rapide que" +" possible." + +#: views/deactivation-intent/form.php:116 +#, php-format +msgid "" +"How to measure the load time of your site: %1$shttps://wp-rocket.me/blog" +"/correctly-measure-websites-page-load-time/%2$s" +msgstr "" +"Comment mesurer le temps de chargement de votre site : %1$shttps://wp-" +"rocket.me/fr/blog/mesurer-temps-chargement/%2$s" + +#: views/deactivation-intent/form.php:122 +#, php-format +msgid "" +"Why you should not be chasing a PageSpeed score: %1$shttps://wp-" +"rocket.me/blog/the-truth-about-google-pagespeed-insights/%2$s" +msgstr "" +"Pourquoi vous ne devriez pas vous soucier des scores de PageSpeed : " +"%1$shttps://wp-rocket.me/fr/blog/note-pagespeed-ne-compte-pas/%2$s" + +#: views/deactivation-intent/form.php:127 +msgid "I did not notice a difference in loading time" +msgstr "Je n'ai pas remarqué de différence dans le temps de chargement." + +#: views/deactivation-intent/form.php:128 +msgid "" +"Make sure you look at your site while logged out to see the fast, cached " +"pages!" +msgstr "" +"Assurez-vous de consulter votre site en étant déconnecté afin de voir la " +"différence, de voir les pages mises en cache !" + +#: views/deactivation-intent/form.php:132 +#, php-format +msgid "" +"The best way to see the improvement WP Rocket provides is to perform speed " +"tests. Follow this guide to correctly measure the load time of your website:" +" %1$shttps://wp-rocket.me/blog/correctly-measure-websites-page-load-" +"time/%2$s" +msgstr "" +"La meilleur façon de voir les améliorations apportées par WP Rocket est " +"d’effectuer des tests. Suivez ce guide pour mesurer correctement le temps de" +" chargement de votre site : %1$shttps://wp-rocket.me/fr/blog/mesurer-temps-" +"chargement/%2$s" + +#: views/deactivation-intent/form.php:137 +msgid "The plugin is too complicated to configure" +msgstr "Le plugin est trop compliqué à configurer" + +#: views/deactivation-intent/form.php:138 +msgid "We are sorry to hear you are finding it difficult to use WP Rocket." +msgstr "" +"Nous sommes désolés d'apprendre que vous trouvez l'utilisation de WP Rocket " +"compliquée." + +#: views/deactivation-intent/form.php:139 +#, php-format +msgid "" +"WP Rocket is the only caching plugin that provides 80% of best practices in " +"speed optimization, by default. That means you do not have to do anything " +"besides activate WP Rocket and your site will already be faster!" +msgstr "" +"WP Rocket est le seul plugin de cache qui fournit, par défaut, 90% des " +"meilleures pratiques en optimisation de vitesse. Cela signifie que vous " +"n'avez rien d'autre à faire que d'activer WP Rocket et votre site sera déjà " +"plus rapide !" + +#: views/deactivation-intent/form.php:140 +msgid "" +"The additional options are not required for a fast site, they are for fine-" +"tuning." +msgstr "" +"Les options supplémentaires ne sont pas nécessaires pour un site rapide, " +"elles servent juste d'affinage." + +#: views/deactivation-intent/form.php:144 +#, php-format +msgid "" +"To see the benefit WP Rocket is already providing, measure the speed of your" +" site using a tool like Pingdom: %1$shttps://wp-rocket.me/blog/correctly-" +"measure-websites-page-load-time/%2$s" +msgstr "" +"Pour voir les améliorations qu'apporte WP Rocket, mesurez le temps de " +"chargement de votre site avec un outils comme Pingdom : %1$shttps://wp-" +"rocket.me/fr/blog/mesurer-temps-chargement/%2$s" + +#: views/deactivation-intent/form.php:151 +msgid "Send & Deactivate" +msgstr "Envoyer & Désactiver" + +#: views/deactivation-intent/form.php:152 +msgid "Cancel" +msgstr "Annuler" + +#: views/deactivation-intent/form.php:154 +msgid "Skip & Deactivate" +msgstr "Passer & Désactiver" + +#: views/settings/enable-google-fonts.php:13 +msgid "Enable Google Font Optimization" +msgstr "Active l’Optimisation des Google Fonts" + +#: views/settings/enable-google-fonts.php:14 +msgid "" +"Improves font performance and combines multiple font requests to reduce the " +"number of HTTP requests." +msgstr "" +"Améliore les performances des polices et combine plusieurs requêtes de " +"polices pour réduire le nombre de requêtes HTTP." + +#: views/settings/enable-google-fonts.php:29 +#, php-format +msgid "" +"Google Fonts Optimization is now enabled for your site. %1$sMore info%2$s" +msgstr "" +"L’Optimization des Google Fonts est désormais activée sur votre site. " +"%1$sPlus d'infos%2$s" + +#: views/settings/enable-google-fonts.php:38 +msgid "Optimize Google Fonts" +msgstr "Optimiser les Google Fonts" + +#: views/settings/fields/cache-lifespan.php:26 +msgid "Clear cache after" +msgstr "Vider le cache après" + +#: views/settings/fields/cnames.php:49 views/settings/fields/cnames.php:81 +#: views/settings/fields/cnames.php:111 +msgid "CSS & JavaScript" +msgstr "CSS & JavaScript" + +#: views/settings/fields/cnames.php:50 views/settings/fields/cnames.php:82 +#: views/settings/fields/cnames.php:112 +msgid "JavaScript" +msgstr "Javascript" + +#: views/settings/fields/cnames.php:51 views/settings/fields/cnames.php:83 +#: views/settings/fields/cnames.php:113 +msgid "CSS" +msgstr "CSS" + +#: views/settings/fields/import-form.php:29 +msgid "Import settings" +msgstr "Importer les réglages" + +#: views/settings/fields/one-click-addon.php:40 +#: views/settings/fields/rocket-addon.php:31 +#: views/settings/fields/sliding-checkbox.php:25 views/settings/page.php:55 +msgctxt "Active state of checkbox" +msgid "On" +msgstr "On" + +#: views/settings/fields/one-click-addon.php:41 +#: views/settings/fields/rocket-addon.php:32 +#: views/settings/fields/sliding-checkbox.php:26 views/settings/page.php:56 +msgctxt "Inactive state of checkbox" +msgid "Off" +msgstr "Off" + +#: views/settings/fields/one-click-addon.php:42 +#: views/settings/fields/rocket-addon.php:33 +msgid "Add-on status" +msgstr "État de l'Add-on" + +#: views/settings/fields/rocket-addon.php:56 +msgid "Modify options" +msgstr "Modifier les options" + +#: views/settings/fields/rocket-cdn.php:29 +#: views/settings/fields/rocket-cdn.php:41 +msgid "CDN CNAME" +msgstr "CNAME CDN" + +#: views/settings/fields/rocket-cdn.php:62 +#, php-format +msgid "Purges RocketCDN cached resources for your website. %s" +msgstr "Purge les ressources mises en cache de votre RocketCDN. %s" + +#: views/settings/fields/rocket-cdn.php:63 +#: views/settings/page-sections/cloudflare.php:36 +#: views/settings/page-sections/sucuri.php:37 +msgid "Learn more" +msgstr "En savoir plus" + +#: views/settings/fields/rocket-cdn.php:72 +msgid "Clear all RocketCDN cache files" +msgstr "Purge tous les fichiers mis en cache de RocketCDN" + +#: views/settings/page-sections/cloudflare.php:27 +msgid "Cloudflare Cache" +msgstr "Cache de CloudFlare" + +#: views/settings/page-sections/cloudflare.php:35 +#: views/settings/page-sections/sucuri.php:36 +#, php-format +msgid "Purges cached resources for your website. %s" +msgstr "Purge les ressources mises en cache de votre site web. %s" + +#: views/settings/page-sections/cloudflare.php:36 +msgid "https://support.cloudflare.com/hc/en-us/articles/200169246" +msgstr "https://support.cloudflare.com/hc/en-us/articles/200169246" + +#: views/settings/page-sections/cloudflare.php:45 +msgid "Clear all Cloudflare cache files" +msgstr "Vider le cache CloudFlare" + +#: views/settings/page-sections/dashboard.php:38 +msgid "Congratulations!" +msgstr "Félicitations !" + +#: views/settings/page-sections/dashboard.php:40 +msgid "WP Rocket is now activated and already working for you." +msgstr "WP Rocket est maintenant activé et travaille déjà pour vous." + +#: views/settings/page-sections/dashboard.php:42 +msgid "Your website should be loading faster now!" +msgstr "Votre site devrait être déjà plus rapide !" + +#: views/settings/page-sections/dashboard.php:44 +#, php-format +msgid "" +"To guarantee fast websites, WP Rocket applies 80% of web performance best " +"practices." +msgstr "" +"Pour garantir des sites rapides, WP Rocket applique 80% des bonnes pratiques" +" de performances Web." + +#: views/settings/page-sections/dashboard.php:44 +msgid "" +"We also enable options that provide immediate benefits to your website." +msgstr "" +"Nous activons aussi les options qui profitent immédiatement à votre site." + +#: views/settings/page-sections/dashboard.php:45 +msgid "Continue to the options to further optimize your site!" +msgstr "" +"Continuez avec les options si vous souhaitez optimiser encore plus votre " +"site !" + +#: views/settings/page-sections/dashboard.php:55 +msgid "My Account" +msgstr "Mon compte" + +#: views/settings/page-sections/dashboard.php:61 +msgid "Refresh info" +msgstr "Actualiser" + +#: views/settings/page-sections/dashboard.php:75 +msgid "Expiration Date" +msgstr "Date d'expiration" + +#: views/settings/page-sections/dashboard.php:84 +msgid "View my account" +msgstr "Mon compte" + +#: views/settings/page-sections/dashboard.php:111 +msgid "Quick Actions" +msgstr "Actions rapides" + +#: views/settings/page-sections/dashboard.php:118 +msgid "Remove all cached files" +msgstr "Supprimer tous les fichiers du cache" + +#: views/settings/page-sections/dashboard.php:138 +msgid "Start cache preloading" +msgstr "Démarrer le préchargement du cache" + +#: views/settings/page-sections/dashboard.php:164 +msgid "Purge OPCache content" +msgstr "Vider le contenu OPcache" + +#: views/settings/page-sections/dashboard.php:170 +msgid "Purge OPCache" +msgstr "Vider OPcache" + +#: views/settings/page-sections/dashboard.php:181 +#: views/settings/page-sections/dashboard.php:187 +msgid "Regenerate Critical CSS" +msgstr "Régénérer le Critical CSS" + +#: views/settings/page-sections/dashboard.php:204 +msgid "Frequently Asked Questions" +msgstr "Foire aux questions" + +#: views/settings/page-sections/dashboard.php:217 +msgid "Still cannot find a solution?" +msgstr "Toujours pas trouvé de solution ?" + +#: views/settings/page-sections/dashboard.php:218 +msgid "" +"Submit a ticket and get help from our friendly and knowledgeable Rocketeers." +msgstr "" +"Envoyez un ticket ci-dessous et obtenez l'aide de nos sympathiques " +"Rocketeers." + +#: views/settings/page-sections/dashboard.php:226 +msgid "Ask support" +msgstr "Demandez au Support" + +#: views/settings/page-sections/database.php:25 +msgid "Backup your database before you run a cleanup!" +msgstr "Faites une sauvegarde de votre base de données avant tout nettoyage !" + +#: views/settings/page-sections/database.php:26 +msgid "" +"Once a database optimization has been performed, there is no way to undo it." +msgstr "Toute optimisation faite de la base de donnée est irréversible." + +#: views/settings/page-sections/database.php:28 +msgid "Save Changes and Optimize" +msgstr "Sauvegarder et optimiser" + +#: views/settings/page-sections/imagify.php:21 +#, php-format +msgid "" +"%1$sWP ROCKET%2$s created %3$sIMAGIFY%4$s %1$sfor best-in-class image " +"optimization.%2$s" +msgstr "" +"%1$sWP ROCKET%2$s a créé %3$sIMAGIFY%4$s %1$spour une optimisation d'image " +"de première classe.%2$s" + +#: views/settings/page-sections/imagify.php:24 +msgid "" +"Compress image to make your website faster, all while maintaining image " +"quality." +msgstr "" +"Compressez vos images pour rendre votre site Web plus rapide, tout en " +"maintenant leurs qualités." + +#: views/settings/page-sections/imagify.php:25 +msgid "More on Imagify:" +msgstr "Plus sur Imagify :" + +#: views/settings/page-sections/imagify.php:27 +msgid "Imagify Plugin Page" +msgstr "Page du plugin" + +#: views/settings/page-sections/imagify.php:28 +msgid "Imagify Website" +msgstr "Site web Imagify" + +#: views/settings/page-sections/imagify.php:29 +msgid "Review of Image Compression Plugins" +msgstr "Comparatif des plugins de compression d'images" + +#: views/settings/page-sections/imagify.php:38 +msgid "Install Imagify" +msgstr "Installer Imagify" + +#: views/settings/page-sections/license.php:22 +msgid "WP Rocket was not able to automatically validate your license." +msgstr "" +"WP Rocket n'a pas été en mesure de valider automatiquement votre licence." + +#: views/settings/page-sections/license.php:29 +#, php-format +msgid "Follow this %1$s, or contact %2$s to get the engine started." +msgstr "Suivez ce %1$s, ou contactez %2$s pour pourvoir démarrer la machine." + +#: views/settings/page-sections/license.php:32 +#, php-format +msgid "%1$s%2$s%3$stutorial%4$s" +msgstr "%1$s%2$s%3$stutoriel%4$s" + +#: views/settings/page-sections/license.php:34 +msgid "" +"https://docs.wp-rocket.me/article/100-resolving-problems-with-license-" +"validation/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://fr.docs.wp-rocket.me/article/257-resoudre-les-problemes-de-" +"validation-de-licence/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: views/settings/page-sections/license.php:40 +#, php-format +msgid "%1$s%2$s%3$ssupport%4$s" +msgstr "%1$s%2$s%3$ssupport%4$s" + +#: views/settings/page-sections/sucuri.php:46 +msgid "Clear all Sucuri cache files" +msgstr "Supprimer tous les fichiers du cache Sucuri" + +#: views/settings/page-sections/tools.php:20 +#, php-format +msgid "Files size: %1$s. Number of entries: %2$s." +msgstr "Taille des fichiers : %1$s. Nombre d’entrées : %2$s." + +#: views/settings/page-sections/tools.php:23 +#, php-format +msgid "%1$sDownload the file%2$s." +msgstr "%1$sTélécharger le fichier%2$s." + +#: views/settings/page-sections/tools.php:26 +#, php-format +msgid "%1$sDelete the file%2$s." +msgstr "%1$sSupprimer le fichier%2$s." + +#: views/settings/page-sections/tools.php:37 +msgid "Export settings" +msgstr "Exporter les réglages" + +#: views/settings/page-sections/tools.php:38 +msgid "Download a backup file of your settings" +msgstr "Télécharger un fichier de sauvegarde de vos réglages" + +#: views/settings/page-sections/tools.php:46 +msgid "Download settings" +msgstr "Télécharger les réglages" + +#: views/settings/page-sections/tools.php:60 +msgid "Rollback" +msgstr "Restauration" + +#: views/settings/page-sections/tools.php:64 +#, php-format +msgid "Has version %s caused an issue on your website?" +msgstr "La version %s vous pose des problèmes ?" + +#: views/settings/page-sections/tools.php:69 +#, php-format +msgid "" +"You can rollback to the previous major version here.%sThen send us a support" +" request." +msgstr "" +"Vous pouvez restaurez la version majeure précédente. %sPuis envoyez-nous une" +" demande de support." + +#: views/settings/page-sections/tools.php:80 +#, php-format +msgid "Reinstall version %s" +msgstr "Réinstaller la version %s" + +#: views/settings/page-sections/tools.php:106 +msgid "Debug mode" +msgstr "Debug mode" + +#: views/settings/page-sections/tools.php:111 +msgid "Create a debug log file." +msgstr "Créez un fichier log de debug." + +#: views/settings/page-sections/tutorials.php:13 +#: views/settings/partials/getting-started.php:18 +msgid "Getting Started" +msgstr "Prise en main" + +#: views/settings/page-sections/tutorials.php:15 +msgid "Getting Started with WP Rocket" +msgstr "Premiers pas avec WP Rocket" + +#: views/settings/page-sections/tutorials.php:16 +#: views/settings/partials/getting-started.php:12 +msgid "Finding the Best Settings for Your Site" +msgstr "Trouver les meilleurs réglages pour votre site" + +#: views/settings/page-sections/tutorials.php:17 +#: views/settings/partials/getting-started.php:13 +msgid "How to Check if WP Rocket is Caching Your Site" +msgstr "Comment vérifier si WP Rocket met en cache votre site" + +#: views/settings/page-sections/tutorials.php:18 +#: views/settings/partials/getting-started.php:14 +msgid "How to Measure the Speed of Your Site" +msgstr "Comment mesurer la vitesse de votre site" + +#: views/settings/page-sections/tutorials.php:24 +msgid "Troubleshooting Display Issues with File Optimization" +msgstr "" +"Résolution des problèmes d'affichage liés à l'Optimisation des Fichiers" + +#: views/settings/page-sections/tutorials.php:25 +msgid "How to Find the Right JavaScript to Exclude" +msgstr "Comment trouver le bon fichier JS à exclure" + +#: views/settings/page-sections/tutorials.php:26 +msgid "How External Content Slows Your Site" +msgstr "Comment le contenu externe ralentit votre site" + +#: views/settings/page-sections/tutorials.php:32 +msgid "How Preloading Works" +msgstr "Comment fonctionne le préchargement" + +#: views/settings/page-sections/tutorials.php:38 +msgid "Set Up the Cloudflare Add-on" +msgstr "Configurer l’add-on Cloudflare" + +#: views/settings/page.php:16 +msgid "WP Rocket Settings" +msgstr "Réglages de WP Rocket" + +#: views/settings/page.php:30 +#, php-format +msgid "version %s" +msgstr "version %s" + +#: views/settings/page.php:57 +msgid "Show Sidebar" +msgstr "Afficher la barre latérale" + +#: views/settings/page.php:76 +msgid "Thanks for choosing to participate in the WP Rocket beta program!" +msgstr "Merci d'avoir choisi de participer au programme bêta de WP Rocket !" + +#: views/settings/page.php:77 +msgid "" +"A beta version is usually one that has new features and improvements, but we" +" want to test it a little more before full launch." +msgstr "" +"Une version bêta est généralement une version dotée de nouvelles " +"fonctionnalités et améliorations, mais nous souhaitons la tester un peu " +"plus, avant son lancement définitif." + +#: views/settings/page.php:78 +msgid "" +"We’d love it if you took our beta versions for a ride, but please keep in " +"mind that it might be less stable than our other releases. Don’t worry, you " +"can switch back to a full release version at any time." +msgstr "" +"Vous pouvez tester nos versions bêta avec grand plaisir, mais gardez bien à " +"l’esprit qu’elle sera moins stable que nos autres versions. Ne vous " +"inquiétez pas, vous pouvez revenir à une version stable à tout moment." + +#: views/settings/page.php:79 +msgid "" +"Your mission: please send all feedback about our beta versions, including " +"bug reports, to support@wp-rocket.me" +msgstr "" +"Votre mission : envoyer tous vos commentaires sur nos versions beta, y " +"compris les rapports de bugs, à support@wp-rocket.me" + +#: views/settings/page.php:81 +msgid "If you don’t want to join the beta program, simply close this window." +msgstr "" +"Si vous ne souhaitez pas rejoindre le programme beta, fermez simplement " +"cette fenêtre." + +#: views/settings/page.php:83 +msgid "Activate Rocket Tester" +msgstr "Activer Rocket Tester" + +#: views/settings/page.php:94 +msgid "" +"Below is a detailed view of all data WP Rocket will collect if " +"granted permission." +msgstr "" +"Vous trouverez ci-dessous une vue détaillée de toutes les données que WP " +"Rocket collectera si l'autorisation lui est accordée." + +#: views/settings/page.php:97 +msgid "" +"WP Rocket will never transmit any domain names or email addresses (except " +"for license validation), IP addresses, or third-party API keys." +msgstr "" +"WP Rocket ne transmettra jamais de noms de domaine ou d'adresses email (sauf" +" pour la validation de licence), d'adresses IP ou de clés API tierces." + +#: views/settings/page.php:99 +msgid "Activate Rocket analytics" +msgstr "Activer Rocket Analytics" + +#: views/settings/partials/documentation.php:15 +msgid "It is a great starting point to fix some of the most common issues." +msgstr "" +"C'est un excellent point de départ pour résoudre certains des problèmes les " +"plus fréquents." + +#: views/settings/partials/documentation.php:22 +msgid "Read the documentation" +msgstr "Lire la documentation" + +#: views/settings/partials/getting-started.php:11 +msgid "What WP Rocket Does For You By Default" +msgstr "Ce que WP Rocket fait pour vous par défaut" + +#: views/settings/partials/sidebar.php:12 +msgid "How to correctly measure your website’s loading time" +msgstr "Comment bien mesurer le temps de chargement de votre site Web" + +#: views/settings/partials/sidebar.php:14 +msgid "Check our tutorial and learn how to measure the speed of your site." +msgstr "Consultez notre tuto et apprenez à mesurer la vitesse de votre site." + +#: views/settings/partials/sidebar.php:19 +msgid "" +"Learn how to use best practices to correctly measure your site's " +"performance." +msgstr "Apprenez comment bien mesurer les performances de votre site Web." + +#: views/settings/partials/sidebar.php:20 +msgid "" +"https://wp-rocket.me/blog/correctly-measure-websites-page-load-" +"time/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://wp-rocket.me/fr/blog/mesurer-temps-" +"chargement/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: views/settings/partials/sidebar.php:20 +msgid "Read our guide" +msgstr "Lire notre guide" + +#: views/settings/partials/sidebar.php:23 +msgid "Why Google PageSpeed grade should not matter" +msgstr "" +"Pourquoi vous ne devriez pas vous soucier des notes de Google PageSpeed" + +#: views/settings/partials/sidebar.php:24 +msgid "" +"https://wp-rocket.me/blog/the-truth-about-google-pagespeed-" +"insights/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://wp-rocket.me/blog/the-truth-about-google-pagespeed-" +"insights/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: views/settings/partials/sidebar.php:24 +msgid "Read more" +msgstr "En savoir plus" + +#: views/settings/partials/sidebar.php:29 +msgid "You have not activated logged-in user cache." +msgstr "Vous n'avez pas activé le cache utilisateur." + +#: views/settings/partials/sidebar.php:30 +msgid "" +"Use a private browser to check your website's speed and visual appearance." +msgstr "" +"Utilisez un navigateur privé pour vérifier la vitesse et l’aspect visuel de " +"votre site Web." + +#: views/settings/rocketcdn/cta-big.php:27 +#, php-format +msgid "Valid until %s only!" +msgstr "Valable uniquement jusqu'au %s !" + +#: views/settings/rocketcdn/cta-big.php:36 +msgid "Speed up your website thanks to:" +msgstr "Accélérez votre site web grâce à :" + +#: views/settings/rocketcdn/cta-big.php:42 +#, php-format +msgid "" +"High performance Content Delivery Network (CDN) with %1$sunlimited " +"bandwith%2$s" +msgstr "" +"CDN (Content Delivery Network) de haute performance à %1$sbande passante " +"illimitée%2$s" + +#: views/settings/rocketcdn/cta-big.php:48 +#, php-format +msgid "" +"Easy configuration: the %1$sbest CDN settings%2$s are automatically applied" +msgstr "" +"Configuration simple : les %1$smeilleurs réglages CDN%2$s sont " +"automatiquement appliqués" + +#: views/settings/rocketcdn/cta-big.php:54 +#, php-format +msgid "" +"WP Rocket integration: the CDN option is %1$sautomatically configured%2$s in" +" our plugin" +msgstr "" +"Intégration à WP Rocket : l'option CDN est %1$sautomatiquement " +"configurée%2$s dans notre plugin" + +#: views/settings/rocketcdn/cta-big.php:69 +#, php-format +msgid "%s / month" +msgstr "%s / mois" + +#: views/settings/rocketcdn/cta-big.php:74 +msgid "Get Started" +msgstr "S'abonner" + +#: views/settings/rocketcdn/cta-big.php:80 +msgid "Learn more about RocketCDN" +msgstr "En savoir plus sur RocketCDN" + +#: views/settings/rocketcdn/cta-big.php:82 +msgid "Reduce this banner" +msgstr "Réduire cette bannière" + +#: views/settings/rocketcdn/cta-big.php:88 +#, php-format +msgid "" +"* $%1$s/month for 12 months then $%2$s/month. You can cancel your " +"subscription at any time." +msgstr "" +"* %1$s$/mois pendant 12 mois puis %2$s$/mois. Vous pouvez annuler votre " +"abonnement à tout moment." + +#: views/settings/rocketcdn/cta-small.php:17 +msgid "" +"Speed up your website with RocketCDN, WP Rocket’s Content Delivery Network." +msgstr "Accélérez votre site web grâce à RocketCDN, le CDN de WP Rocket." + +#: views/settings/rocketcdn/cta-small.php:20 +#: views/settings/rocketcdn/promote-notice.php:13 +msgid "Learn More" +msgstr "En savoir plus" + +#: views/settings/rocketcdn/dashboard-status.php:23 +msgid "RocketCDN is unavailable on local domains and staging sites." +msgstr "RocketCDN n'est pas disponible en local et sur les sites tests." + +#: views/settings/rocketcdn/dashboard-status.php:32 +msgid "Get RocketCDN" +msgstr "Obtenir RocketCDN" + +#: views/settings/rocketcdn/promote-notice.php:11 +msgid "New!" +msgstr "Nouveau !" + +#: views/settings/rocketcdn/promote-notice.php:12 +msgid "" +"Speed up your website with RocketCDN, WP Rocket’s Content Delivery Network!" +msgstr "Accélérez votre site web grâce à RocketCDN, le CDN de WP Rocket." + +#: views/settings/sections/addons-container.php:24 +#: views/settings/sections/fields-container.php:28 +msgid "Need Help?" +msgstr "Besoin d'aide ?" diff --git a/wp-content/plugins/wp-rocket/languages/rocket-gl_ES.mo b/wp-content/plugins/wp-rocket/languages/rocket-gl_ES.mo new file mode 100644 index 0000000000000000000000000000000000000000..418e7b9a1dd75c5b0931f60c1340c4d09f247dd8 GIT binary patch literal 945 zcmaJ=!EVz)5G{g}kDNIy5{Fb|ZEqaFT`QM{w5n)?l?3R`TGms?VDDPH>n8aSevfZq z9Jh&(s*E)9%$v6}Z|(8l*RTGZp}jzVgZ>WvCHfG(vlxAYzy&@#&cRZne}Q!LCa2%Q z*itJ_exzifYv&ps1e=DMJ=w1z@Y1g4_jaAx>Hs|UW&lsQ5&$BMNv>x*=!k{d-I$5?0945 zhu%~x2g=dau0hofwk~KYoRJW@7RG{`d|O@7_{i&q-GiYsC3Rk^f|K}X=?;oH+0XLQ zsx_jbSK8E;6V>cfI~gUU4<`df-cATRPrN&N4GN5K+HjI;6z>T0W1lfB^*Oy178>E! zocR6`{Q|pYxik_?h;%h_-wF?y>gqAvqi{s~aF0GtIvnWpqs}D=BiAYFry<_pxx#EKt2T$cBM6J{-JWDIPOOn9 zDI-oEK;_z;WJUOKbPidq^R|N1L&x2M*#DI2)<~H4o5D%IDtEZGTbJt^*N86Lru&UJ I*%2$s." +msgstr "" + +#: inc/admin/options.php:275 +msgid "The following pattern is invalid and has been removed:" +msgid_plural "The following patterns are invalid and have been removed:" +msgstr[0] "" +msgstr[1] "" + +#: inc/admin/ui/meta-boxes.php:14 inc/admin/ui/notices.php:955 +#: inc/common/admin-bar.php:65 inc/common/admin-bar.php:118 +#: views/settings/page-sections/dashboard.php:115 +msgid "Clear cache" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:36 +msgid "WP Rocket Options" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:66 +msgid "Never cache this page" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:70 +msgid "Activate these options on this post:" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:73 +msgid "LazyLoad for images" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:74 +msgid "LazyLoad for iframes/videos" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:75 +#: inc/classes/admin/settings/class-page.php:615 +msgid "Minify HTML" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:76 +msgid "Minify/combine CSS" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:77 +msgid "Minify/combine JS" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:78 +#: inc/classes/admin/settings/class-page.php:1413 +#: inc/classes/admin/settings/class-page.php:1424 +#: inc/deprecated/deprecated.php:1775 +msgid "CDN" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:79 +msgid "Optimize CSS Delivery" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:80 +msgid "Defer JS" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:86 +#, php-format +msgid "Activate first the %s option." +msgstr "" + +#: inc/admin/ui/meta-boxes.php:102 +#, php-format +msgid "" +"%1$sNote:%2$s None of these options will be applied if this post has been " +"excluded from cache in the global cache settings." +msgstr "" + +#: inc/admin/ui/notices.php:24 inc/admin/ui/notices.php:34 +#, php-format +msgid "" +"%1$s has not been deactivated due to missing writing permissions.
      \n" +"Make %2$s writeable and retry deactivation, or force deactivation now:" +msgstr "" + +#: inc/admin/ui/notices.php:83 +#, php-format +msgid "" +"%s: One or more plugins have been enabled or disabled, " +"clear the cache if they affect the front end of your site." +msgstr "" + +#: inc/admin/ui/notices.php:196 +#, php-format +msgid "" +"%s: The following plugins are not compatible with this " +"plugin and may cause unexpected results:" +msgstr "" + +#: inc/admin/ui/notices.php:202 +msgid "Deactivate" +msgstr "" + +#: inc/admin/ui/notices.php:243 +msgid "" +"WP Rocket Footer JS is not an official add-on. It prevents some options in " +"WP Rocket from working correctly. Please deactivate it if you have problems." +msgstr "" + +#: inc/admin/ui/notices.php:283 +#, php-format +msgid "" +"Endurance Cache is currently enabled, which will conflict with WP Rocket " +"Cache. Please set the Endurance Cache cache level to Off (Level 0) on the " +"%1$sSettings > General%2$s page to prevent any issues." +msgstr "" + +#: inc/admin/ui/notices.php:305 +#, php-format +msgid "" +"%1$s: A custom permalink structure is required for the plugin to work " +"properly. %2$sGo to permalinks settings%3$s" +msgstr "" + +#: inc/admin/ui/notices.php:442 +#, php-format +msgid "" +"%s could not modify the .htaccess file due to missing writing permissions." +msgstr "" + +#: inc/admin/ui/notices.php:448 inc/admin/ui/notices.php:1032 +#, php-format +msgid "Troubleshoot: %1$sHow to make system files writeable%2$s" +msgstr "" + +#: inc/admin/ui/notices.php:450 inc/admin/ui/notices.php:1034 +msgid "" +"https://docs.wp-rocket.me/article/626-how-to-make-system-files-htaccess-wp-" +"config-writeable/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" + +#: inc/admin/ui/notices.php:456 +msgid "" +"Don’t worry, WP Rocket’s page caching and settings will still function " +"correctly." +msgstr "" + +#: inc/admin/ui/notices.php:456 +msgid "" +"For optimal performance, adding the following lines into your .htaccess is " +"recommended (not required):" +msgstr "" + +#: inc/admin/ui/notices.php:600 +#, php-format +msgid "" +"%1$s is good to go! %2$sTest your load time%4$s, or visit your " +"%3$ssettings%4$s." +msgstr "" + +#: inc/admin/ui/notices.php:721 +msgid "" +"Would you allow WP Rocket to collect non-sensitive diagnostic data from this" +" website?" +msgstr "" + +#: inc/admin/ui/notices.php:722 +msgid "This would help us to improve WP Rocket for you in the future." +msgstr "" + +#: inc/admin/ui/notices.php:728 +msgid "What info will we collect?" +msgstr "" + +#: inc/admin/ui/notices.php:733 +msgid "" +"Below is a detailed view of all data WP Rocket will collect if granted " +"permission. WP Rocket will never transmit any domain names or email " +"addresses (except for license validation), IP addresses, or third-party API " +"keys." +msgstr "" + +#: inc/admin/ui/notices.php:742 +msgid "Yes, allow" +msgstr "" + +#: inc/admin/ui/notices.php:745 +msgid "No, thanks" +msgstr "" + +#: inc/admin/ui/notices.php:783 +msgid "Thank you!" +msgstr "" + +#: inc/admin/ui/notices.php:788 +msgid "WP Rocket now collects these metrics from your website:" +msgstr "" + +#: inc/admin/ui/notices.php:825 +#, php-format +msgid "%s: Cache cleared." +msgstr "" + +#: inc/admin/ui/notices.php:830 +#, php-format +msgid "%s: Post cache cleared." +msgstr "" + +#: inc/admin/ui/notices.php:835 +#, php-format +msgid "%s: Term cache cleared." +msgstr "" + +#: inc/admin/ui/notices.php:840 +#, php-format +msgid "%s: User cache cleared." +msgstr "" + +#: inc/admin/ui/notices.php:910 +msgid "" +"The following scheduled event failed to run. This may indicate the CRON " +"system is not running properly, which can prevent some WP Rocket features " +"from working as intended:" +msgid_plural "" +"The following scheduled events failed to run. This may indicate the CRON " +"system is not running properly, which can prevent some WP Rocket features " +"from working as intended:" +msgstr[0] "" +msgstr[1] "" + +#: inc/admin/ui/notices.php:919 +msgid "Please contact your host to check if CRON is working." +msgstr "" + +#: inc/admin/ui/notices.php:958 +msgid "Stop Preload" +msgstr "" + +#: inc/admin/ui/notices.php:976 +msgid "Force deactivation " +msgstr "" + +#: inc/admin/ui/notices.php:989 +msgid "The following code should have been written to this file:" +msgstr "" + +#: inc/admin/ui/notices.php:999 views/settings/page-sections/dashboard.php:45 +msgid "Dismiss this notice." +msgstr "" + +#: inc/admin/ui/notices.php:1020 +#, php-format +msgid "%s cannot configure itself due to missing writing permissions." +msgstr "" + +#: inc/admin/ui/notices.php:1026 +#, php-format +msgid "Affected file/folder: %s" +msgstr "" + +#: inc/classes/admin/Database/class-optimization.php:41 +#: inc/classes/admin/settings/class-page.php:1289 +msgid "Revisions" +msgstr "" + +#: inc/classes/admin/Database/class-optimization.php:42 +#: inc/classes/admin/settings/class-page.php:1299 +msgid "Auto Drafts" +msgstr "" + +#: inc/classes/admin/Database/class-optimization.php:43 +#: inc/classes/admin/settings/class-page.php:1309 +msgid "Trashed Posts" +msgstr "" + +#: inc/classes/admin/Database/class-optimization.php:44 +#: inc/classes/admin/settings/class-page.php:1319 +msgid "Spam Comments" +msgstr "" + +#: inc/classes/admin/Database/class-optimization.php:45 +#: inc/classes/admin/settings/class-page.php:1329 +msgid "Trashed Comments" +msgstr "" + +#: inc/classes/admin/Database/class-optimization.php:46 +#: inc/classes/admin/settings/class-page.php:1339 +msgid "Expired transients" +msgstr "" + +#: inc/classes/admin/Database/class-optimization.php:47 +msgid "Transients" +msgstr "" + +#: inc/classes/admin/Database/class-optimization.php:48 +msgid "Tables" +msgstr "" + +#: inc/classes/admin/class-logs.php:124 +msgid "The debug file could not be deleted." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:212 +#: inc/classes/admin/settings/class-page.php:213 +msgid "Unavailable" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:327 +#: inc/deprecated/deprecated.php:1791 +#: views/settings/page-sections/dashboard.php:72 +msgid "License" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:344 +msgid "API key" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:359 +msgid "Email address" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:388 +msgid "Dashboard" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:389 +msgid "Get help, account info" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:398 +msgid "My Status" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:408 views/settings/page.php:71 +msgid "Rocket Tester" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:409 +msgid "I am part of the WP Rocket Beta Testing Program." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:417 views/settings/page.php:89 +msgid "Rocket Analytics" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:419 +#, php-format +msgid "" +"I agree to share anonymous data with the development team to help improve WP" +" Rocket. %1$sWhat info will we collect?%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:447 +msgid "Cache" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:448 +msgid "Basic cache options" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:455 +msgid "Mobile Cache" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:457 +msgid "Speed up your site for mobile visitors." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:462 +msgid "" +"We detected you use a plugin that requires a separate cache for mobile, and " +"automatically enabled this option for compatibility." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:466 +msgid "User Cache" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:469 +#, php-format +msgid "" +"%1$sUser cache%2$s is great when you have user-specific or restricted " +"content on your website." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:477 +msgid "Cache Lifespan" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:480 +#, php-format +msgid "" +"Cache lifespan is the period of time after which all cache files are " +"removed.
      Enable %1$spreloading%2$s for the cache to be rebuilt " +"automatically after lifespan expiration." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:494 +msgid "Enable caching for logged-in WordPress users" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:502 +msgid "Enable caching for mobile devices" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:517 +msgid "Separate cache files for mobile devices" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:519 +#, php-format +msgid "" +"%1$sMobile cache%2$s works safest with both options enabled. When in doubt, " +"keep both." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:535 +msgid "" +"Specify time after which the global cache is cleared
      (0 = unlimited )" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:537 +#, php-format +msgid "" +"Reduce lifespan to 10 hours or less if you notice issues that seem to appear" +" periodically. %1$sWhy?%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:543 +msgid "Minutes" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:544 +msgid "Hours" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:545 +msgid "Days" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:571 +msgid "File Optimization" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:572 +msgid "Optimize CSS & JS" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:579 +msgid "Basic Settings" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:586 +#: inc/classes/admin/settings/class-page.php:596 +#: inc/classes/admin/settings/class-page.php:606 +#, php-format +msgid "" +"%1$s Minification is currently activated in Autoptimize. If" +" you want to use %2$s’s minification, disable those options in Autoptimize." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:589 +msgid "CSS Files" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:599 +msgid "JavaScript Files" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:619 +msgid "Minifying HTML removes whitespace and comments to reduce the size." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:630 +msgid "Combine Google Fonts files" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:631 +msgid "Combining Google Fonts will reduce the number of HTTP requests." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:639 +msgid "Remove query strings from static resources" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:641 +#, php-format +msgid "" +"Removes the version query string from static files (e.g. style.css?ver=1.0) " +"and encodes it into the filename instead (e.g. style-1.0.css). Can improve " +"your GTMetrix score. %1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:649 +msgid "Minify CSS files" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:650 +msgid "Minify CSS removes whitespace and comments to reduce the file size." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:663 +#: inc/classes/admin/settings/class-page.php:685 +#: inc/classes/admin/settings/class-page.php:755 +#: inc/classes/admin/settings/class-page.php:777 +msgid "This could break things!" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:664 +#: inc/classes/admin/settings/class-page.php:686 +#: inc/classes/admin/settings/class-page.php:756 +#: inc/classes/admin/settings/class-page.php:778 +msgid "" +"If you notice any errors on your website after having activated this " +"setting, just deactivate it again, and your site will be back to normal." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:665 +msgid "Activate minify CSS" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:670 +msgid "Combine CSS files (Enable Minify CSS files to select)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:672 +#, php-format +msgid "" +"Combine CSS merges all your files into 1, reducing HTTP requests. Not " +"recommended if your site uses HTTP/2. %1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:687 +msgid "Activate combine CSS" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:693 +msgid "" +"Specify URLs of CSS files to be excluded from minification and concatenation" +" (one per line)." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:694 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*).css " +"wildcards to exclude all CSS files located at a specific path." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:707 +msgid "Optimize CSS delivery" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:714 +#, php-format +msgctxt "WP Critical CSS compatibility" +msgid "" +"Optimize CSS Delivery is currently handled by the %1$s plugin. If you want " +"to use WP Rocket’s Optimize CSS Delivery option, disable the %1$s plugin." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:716 +#, php-format +msgid "" +"Optimize CSS delivery eliminates render-blocking CSS on your website for " +"faster perceived load time. %1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:727 +msgid "Fallback critical CSS" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:732 +#, php-format +msgid "" +"Provides a fallback if auto-generated critical path CSS is incomplete. " +"%1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:741 +msgid "Minify JavaScript files" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:742 +msgid "" +"Minify JavaScript removes whitespace and comments to reduce the file size." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:757 +msgid "Activate minify JavaScript" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:762 +msgid "" +"Combine JavaScript files (Enable Minify JavaScript files to select)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:764 +#, php-format +msgid "" +"Combine JavaScript files combines your site’s internal, 3rd party and inline" +" JS reducing HTTP requests. Not recommended if your site uses HTTP/2. " +"%1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:779 +msgid "Activate combine JavaScript" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:786 +#, php-format +msgid "" +"Specify patterns of inline JavaScript to be excluded from concatenation (one" +" per line). %1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:803 +msgid "" +"Specify URLs of JavaScript files to be excluded from minification and " +"concatenation (one per line)." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:804 +msgid "" +"Internal: The domain part of the URL will be stripped " +"automatically. Use (.*).js wildcards to exclude all JS files located at a " +"specific path." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:806 +#, php-format +msgid "" +"3rd Party: Use either the full URL path or only the domain " +"name, to exclude external JS. %1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:822 +msgid "Load JavaScript deferred" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:824 +#, php-format +msgid "" +"Load JavaScript deferred eliminates render-blocking JS on your site and can " +"improve load time. %1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:835 +msgid "Safe Mode for jQuery (recommended)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:836 +msgid "" +"Safe mode for jQuery for deferred JS ensures support for inline jQuery " +"references from themes and plugins by loading jQuery at the top of the " +"document as a render-blocking script.
      Deactivating may result in " +"broken functionality, test thoroughly!" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:861 +msgid "Media" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:862 +msgid "LazyLoad, emojis, embeds" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:869 +msgid "LazyLoad" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:872 +#, php-format +msgid "" +"It can improve actual and perceived loading time as images, iframes, and " +"videos will be loaded only as they enter (or about to enter) the viewport " +"and reduces the number of HTTP requests. %1$sMore Info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:879 +#, php-format +msgid "" +"Lazyload is currently activated in Autoptimize. If you want" +" to use %1$s’s lazyload, disable this option in Autoptimize." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:882 +msgid "Emoji 👻" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:884 +msgid "" +"Use default emoji of visitor's browser instead of loading emoji from " +"WordPress.org" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:888 +msgid "Embeds" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:890 +msgid "" +"Prevents others from embedding content from your site, prevents you from " +"embedding content from other (non-whitelisted) sites, and removes JavaScript" +" requests related to WordPress embeds" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:900 +msgid "Enable for images" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:911 +msgctxt "Avada" +msgid "" +"Lazyload for images is currently activated in Avada. If you want to use WP " +"Rocket’s LazyLoad, disable this option in Avada." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:919 +msgid "Enable for iframes and videos" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:934 +msgid "Replace YouTube iframe with preview image" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:935 +msgid "" +"This can significantly improve your loading time if you have a lot of " +"YouTube videos on a page." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:947 +msgid "Disable Emoji" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:948 +msgid "Disable Emoji will reduce the number of external HTTP requests." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:956 +msgid "Disable WordPress embeds" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:978 +#: inc/classes/admin/settings/class-page.php:988 +#: inc/deprecated/deprecated.php:1778 +msgid "Preload" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:979 +msgid "Generate cache files" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:991 +#, php-format +msgid "" +"When you enable preloading WP Rocket will generate the cache starting with " +"the links on your homepage followed by the sitemaps you specify. Preloading " +"is automatically triggered when you add or update content and can also be " +"manually triggered from the admin bar or from the %1$sWP Rocket " +"Dashboard%2$s." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:999 +msgid "Prefetch DNS Requests" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1001 +msgid "" +"DNS prefetching can make external files load faster, especially on mobile " +"networks" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1015 +msgid "Activate Preloading" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1034 +msgid "Activate sitemap-based cache preloading" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1053 +msgid "Sitemaps for preloading" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1057 +msgid "Specify XML sitemap(s) to be used for preloading" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1067 +msgid "URLs to prefetch" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1068 +msgid "" +"Specify external hosts to be prefetched (no http:, one per " +"line)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1091 +msgid "Advanced Rules" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1092 +msgid "Fine-tune cache rules" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1101 +msgid "" +"Sensitive pages like custom login/logout URLs should be excluded from cache." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1104 +msgctxt "plugin name" +msgid "WooCommerce" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1106 +msgctxt "plugin name" +msgid "Easy Digital Downloads" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1108 +msgctxt "plugin name" +msgid "iThemes Exchange" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1110 +msgctxt "plugin name" +msgid "Jigoshop" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1112 +msgctxt "plugin name" +msgid "WP-Shop" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1118 +#, php-format +msgid "" +"
      Cart, checkout and \"my account\" pages set in " +"%1$s%2$s%3$s will be detected and never cached by default." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1139 +msgid "Never Cache Cookies" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1158 +msgid "Cache Query String(s)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1161 +#, php-format +msgid "" +"%1$sCache for query strings%2$s enables you to force caching for specific " +"GET parameters." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1175 +msgid "" +"Specify URLs of pages or posts that should never be cached (one per line)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1176 +#: inc/classes/admin/settings/class-page.php:1204 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*) " +"wildcards to address multiple URLs under a given path." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1185 +msgid "" +"Specify the IDs of cookies that, when set in the visitor's browser, should " +"prevent a page from getting cached (one per line)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1193 +msgid "" +"Specify user agent strings that should never see cached pages (one per line)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1194 +msgid "Use (.*) wildcards to detect parts of UA strings." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1203 +msgid "" +"Specify URLs you always want purged from cache whenever you update any post " +"or page (one per line)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1212 +msgid "Specify query strings for caching (one per line)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1240 +#: inc/deprecated/deprecated.php:1777 +msgid "Database" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1241 +msgid "Optimize, reduce bloat" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1250 +msgid "Post Cleanup" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1252 +msgid "" +"Post revisions and drafts will be permanently deleted. Do not use this " +"option if you need to retain revisions or drafts." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1260 +msgid "Comments Cleanup" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1262 +msgid "Spam and trashed comments will be permanently deleted." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1266 +msgid "Transients Cleanup" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1268 +msgid "" +"Transients are temporary options; they are safe to remove. They will be " +"automatically regenerated as your plugins require them." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1272 +msgid "Database Cleanup" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1274 +msgid "Reduces overhead of database tables" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1278 +msgid "Automatic cleanup" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1291 +#, php-format +msgid "%s revision in your database." +msgid_plural "%s revisions in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1301 +#, php-format +msgid "%s draft in your database." +msgid_plural "%s drafts in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1311 +#, php-format +msgid "%s trashed post in your database." +msgid_plural "%s trashed posts in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1321 +#, php-format +msgid "%s spam comment in your database." +msgid_plural "%s spam comments in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1331 +#, php-format +msgid "%s trashed comment in your database." +msgid_plural "%s trashed comments in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1341 +#, php-format +msgid "%s expired transient in your database." +msgid_plural "%s expired transients in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1349 +msgid "All transients" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1351 +#, php-format +msgid "%s transient in your database." +msgid_plural "%s transients in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1359 +msgid "Optimize Tables" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1361 +#, php-format +msgid "%s table to optimize in your database." +msgid_plural "%s tables to optimize in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1372 +msgid "Schedule Automatic Cleanup" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1384 +msgid "Frequency" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1392 +msgid "Daily" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1393 +msgid "Weekly" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1394 +msgid "Monthly" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1414 +msgid "Integrate your CDN" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1426 +msgid "" +"All URLs of static files (CSS, JS, images) will be rewritten to the CNAME(s)" +" you provide." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1428 +#, php-format +msgid "" +"Not required for services like Cloudflare and Sucuri. Please see our " +"available %1$sAdd-ons%2$s." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1469 +#, php-format +msgid "" +"%1$s%2$s Add-on%3$s is currently enabled. Configuration of the CDN settings " +"is not required for %2$s to work on your site." +msgid_plural "" +"%1$s%2$s Add-ons%3$s are currently enabled. Configuration of the CDN " +"settings is not required for %2$s to work on your site." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1484 +msgid "Enable Content Delivery Network" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1493 +msgid "CDN CNAME(s)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1494 +msgid "Specify the CNAME(s) below" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1501 +msgid "" +"Specify URL(s) of files that should not get served via CDN (one per line)." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1502 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*) " +"wildcards to exclude all files of a given file type located at a specific " +"path." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1525 +#: inc/classes/admin/settings/class-page.php:1533 +msgid "Heartbeat" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1526 +msgid "Control WordPress Heartbeat API" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1534 +msgid "" +"Reducing or disabling the Heartbeat API’s activity can help save some of " +"your server’s resources." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1543 +msgid "Reduce or disable Heartbeat activity" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1544 +msgid "" +"Reducing activity will change Heartbeat frequency from one hit each minute " +"to one hit every 2 minutes." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1544 +msgid "" +"Disabling Heartbeat entirely may break plugins and themes using this API." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1558 +msgid "Do not limit" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1559 +msgid "Reduce activity" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1560 +msgid "Disable" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1568 +msgid "Control Heartbeat" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1577 +msgid "Behavior in backend" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1584 +msgid "Behavior in post editor" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1590 +msgid "Behavior in frontend" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1609 +msgid "Add-ons" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1610 +msgid "Add more features" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1617 +msgid "One-click Rocket Add-ons" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1618 +msgid "" +"One-Click Add-ons are features extending available options without " +"configuration needed. Switch the option \"on\" to enable from this screen." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1628 +msgid "Rocket Add-ons" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1629 +msgid "Rocket Add-ons are complementary features extending available options." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1642 +msgid "Google Tracking" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1648 +msgid "Improve browser caching for Google Analytics" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1650 +#, php-format +msgid "" +"WP Rocket will host these Google scripts locally on your server to help " +"satisfy the PageSpeed recommendation for Leverage browser " +"caching.
      %1$sLearn more%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1665 +msgid "Facebook Pixel" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1671 +msgid "Improve browser caching for Facebook Pixel" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1673 +#, php-format +msgid "" +"WP Rocket will host these Facebook Pixels locally on your server to help " +"satisfy the PageSpeed recommendation for Leverage browser " +"caching.
      %1$sLearn more%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1706 +msgid "Varnish" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1712 +msgid "If Varnish runs on your server, you must activate this add-on." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1714 +#, php-format +msgid "" +"Varnish cache will be purged each time WP Rocket clears its cache to ensure " +"content is always up-to-date.
      %1$sLearn more%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1729 +#: inc/classes/admin/settings/class-page.php:1789 +msgid "Cloudflare" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1735 +msgid "Integrate your Cloudflare account with this add-on." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1736 +msgid "" +"Provide your account email, global API key, and domain to use options such " +"as clearing the Cloudflare cache and enabling optimal settings with WP " +"Rocket." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1748 +msgid "Clear the Sucuri cache when WP Rocket’s cache is cleared." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1751 +msgid "" +"Provide your API key to clear the Sucuri cache when WP Rocket’s cache is " +"cleared." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1759 +#: inc/classes/admin/settings/class-page.php:1907 +msgid "Sucuri" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1765 +msgid "Synchronize Sucuri cache with this add-on." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1805 +msgid "Cloudflare credentials" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1814 +msgid "Cloudflare settings" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1828 +msgctxt "Cloudflare" +msgid "Global API key:" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1829 +msgid "" +"https://support.cloudflare.com/hc/en-us/articles/200167836-Where-do-I-find-" +"my-Cloudflare-API-key-" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1829 +msgctxt "Cloudflare" +msgid "Find your API key" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1841 +msgctxt "Cloudflare" +msgid "Account email" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1850 +msgctxt "Cloudflare" +msgid "Zone ID" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1860 +msgid "Development mode" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1862 +#, php-format +msgid "" +"Temporarily activate development mode on your website. This setting will " +"automatically turn off after 3 hours. %1$sLearn more%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1870 +msgid "Optimal settings" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1871 +msgid "" +"Automatically enhances your Cloudflare configuration for speed, performance " +"grade and compatibility." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1879 +msgid "Relative protocol" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1880 +msgid "" +"Should only be used with Cloudflare's flexible SSL feature. URLs of static " +"files (CSS, JS, images) will be rewritten to use // instead of http:// or " +"https://." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1920 +msgid "Sucuri credentials" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1933 +msgctxt "Sucuri" +msgid "" +"Firewall API key (for plugin), must be in format {32 characters}/{32 " +"characters}:" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1934 +msgctxt "Sucuri" +msgid "Find your API key" +msgstr "" + +#: inc/classes/admin/settings/class-render.php:486 +#: inc/deprecated/deprecated.php:1296 +msgid "Upload file and import settings" +msgstr "" + +#: inc/classes/admin/settings/class-settings.php:385 +msgid "" +"Sucuri Add-on: The API key for the Sucuri firewall must be in format " +"{32 characters}/{32 characters}." +msgstr "" + +#: inc/classes/admin/settings/class-settings.php:462 +#: inc/deprecated/deprecated.php:1247 +msgid "Settings saved." +msgstr "" + +#: inc/classes/class-wp-rocket-requirements-check.php:148 +#, php-format +msgid "To function properly, %1$s %2$s requires at least:" +msgstr "" + +#: inc/classes/class-wp-rocket-requirements-check.php:152 +#, php-format +msgid "" +"PHP %1$s. To use this WP Rocket version, please ask your web host how to " +"upgrade your server to PHP %1$s or higher." +msgstr "" + +#: inc/classes/class-wp-rocket-requirements-check.php:157 +#, php-format +msgid "" +"WordPress %1$s. To use this WP Rocket version, please upgrade WordPress to " +"version %1$s or higher." +msgstr "" + +#: inc/classes/class-wp-rocket-requirements-check.php:160 +msgid "" +"If you are not able to upgrade, you can rollback to the previous version by " +"using the button below." +msgstr "" + +#: inc/classes/class-wp-rocket-requirements-check.php:162 +#: inc/deprecated/deprecated.php:1949 +#, php-format +msgid "Re-install version %s" +msgstr "" + +#: inc/classes/logger/class-logger.php:253 +#: inc/classes/logger/class-logger.php:285 +msgid "The log file does not exist." +msgstr "" + +#: inc/classes/logger/class-logger.php:259 +#: inc/classes/logger/class-logger.php:291 +msgid "The log file could not be read." +msgstr "" + +#: inc/classes/logger/class-logger.php:278 +msgid "The logs are not saved into a file." +msgstr "" + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:88 +#: inc/classes/optimization/CSS/class-critical-css-generation.php:99 +#: inc/classes/optimization/CSS/class-critical-css-generation.php:110 +#: inc/classes/optimization/CSS/class-critical-css-generation.php:120 +#: inc/classes/optimization/CSS/class-critical-css-generation.php:142 +#, php-format +msgid "Critical CSS for %1$s not generated. Error: %2$s" +msgstr "" + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:99 +msgid "The API returned an invalid response code." +msgstr "" + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:110 +msgid "The API returned an empty response." +msgstr "" + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:145 +#, php-format +msgid "The critical CSS content could not be saved as a file in %s." +msgstr "" + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:154 +#, php-format +msgid "Critical CSS for %s generated." +msgstr "" + +#: inc/classes/preload/class-homepage.php:83 +#, php-format +msgid "" +"Preload encountered an error. Could not gather links on %1$s because of the " +"following error: %2$s. %3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-homepage.php:96 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: %2$s. Security measures could be preventing access. " +"%3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-homepage.php:102 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: 404. Please make sure your homepage is accessible in your " +"browser. %2$sLearn more%3$s." +msgstr "" + +#: inc/classes/preload/class-homepage.php:108 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: 500. Please check with your web host about server access. " +"%2$sLearn more%3$s." +msgstr "" + +#: inc/classes/preload/class-homepage.php:114 +#, php-format +msgid "" +"Preload encountered an error. Could not gather links on %1$s because it " +"returned the following response code: %2$s. %3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:138 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not gather links on %1$s because" +" of the following error: %2$s. %3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:153 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: %2$s. Security measures could be preventing access." +" %3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:158 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: 404. Please make sure you entered the correct " +"sitemap URL and it is accessible in your browser. %2$sLearn more%3$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:163 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: 500. Please check with your web host about server " +"access. %2$sLearn more%3$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:168 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not gather links on %1$s because" +" it returned the following response code: %2$s. %3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:184 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not collect links from %1$s " +"because the file is empty. %2$sLearn more%3$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:205 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not collect links from %1$s " +"because of an error during the XML sitemap parsing. %2$sLearn more%3$s." +msgstr "" + +#: inc/classes/subscriber/Optimization/class-critical-css-subscriber.php:138 +#, php-format +msgid "" +"Critical CSS generation is currently running: %1$d of %2$d page types " +"completed. (Refresh this page to view progress)" +msgstr "" + +#: inc/classes/subscriber/Optimization/class-critical-css-subscriber.php:189 +#, php-format +msgid "Critical CSS generation finished for %1$d of %2$d page types." +msgstr "" + +#: inc/classes/subscriber/Optimization/class-critical-css-subscriber.php:203 +msgid "Critical CSS generation encountered one or more errors." +msgstr "" + +#: inc/classes/subscriber/Optimization/class-critical-css-subscriber.php:203 +msgid "Learn more." +msgstr "" + +#: inc/classes/subscriber/Tools/class-cache-dir-size-check-subscriber.php:51 +#: inc/classes/subscriber/class-facebook-tracking-cache-busting-subscriber.php:97 +#: inc/classes/subscriber/class-google-tracking-cache-busting-subscriber.php:154 +#: inc/common/cron.php:33 +msgid "weekly" +msgstr "" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:148 +msgid "Database optimization process is running" +msgstr "" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:179 +msgid "" +"Database optimization process is complete. Everything was already optimized!" +msgstr "" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:182 +msgid "" +"Database optimization process is complete. List of optimized items below:" +msgstr "" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:190 +#, php-format +msgid "%1$d %2$s optimized." +msgstr "" + +#: inc/classes/subscriber/admin/Settings/class-page-subscriber.php:137 +#: inc/deprecated/deprecated.php:1788 +#: views/settings/page-sections/tools.php:33 +msgid "Tools" +msgstr "" + +#: inc/classes/subscriber/admin/Settings/class-page-subscriber.php:138 +msgid "Import, Export, Rollback" +msgstr "" + +#: inc/classes/subscriber/admin/Settings/class-page-subscriber.php:160 +#: views/settings/page-sections/imagify.php:13 +msgid "Image Optimization" +msgstr "" + +#: inc/classes/subscriber/admin/Settings/class-page-subscriber.php:161 +msgid "Compress your images" +msgstr "" + +#: inc/classes/subscriber/preload/class-preload-subscriber.php:212 +#, php-format +msgid "" +"Preload: WP Rocket has started preloading your website. Go to the %1$sWP " +"Rocket settings%2$s page to track progress." +msgstr "" + +#: inc/classes/subscriber/preload/class-preload-subscriber.php:246 +#, php-format +msgid "" +"Preload: %1$s uncached page has now been preloaded. (refresh to see " +"progress)" +msgid_plural "" +"Preload: %1$s uncached pages have now been preloaded. (refresh to see " +"progress)" +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/subscriber/preload/class-preload-subscriber.php:255 +msgid "The following error happened during gathering of the URLs to preload:" +msgid_plural "" +"The following errors happened during gathering of the URLs to preload:" +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/subscriber/preload/class-preload-subscriber.php:308 +#, php-format +msgid "Preload complete: %d pages have been cached." +msgstr "" + +#: inc/classes/subscriber/preload/class-sitemap-preload-subscriber.php:117 +#, php-format +msgid "" +"%1$sSimpleXML PHP extension%2$s is not enabled on your server. Please " +"contact your host to enable it before running sitemap-based cache " +"preloading." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:72 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"Please deactivate the following %s option which conflicts with WP Rocket " +"features:" +msgid_plural "" +"Please deactivate the following %s options which conflict with WP Rocket " +"features:" +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:145 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sdisable emoji%3$s conflicts with WP Rockets %2$sdisable emoji%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:167 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sremove query strings%3$s conflicts with WP Rocket %2$sremove query " +"strings%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:203 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sGZIP compression%3$s conflicts with WP Rocket %2$sGZIP " +"compression%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:239 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sbrowser caching%3$s conflicts with WP Rocket %2$sbrowser " +"caching%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:271 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$spage caching%3$s conflicts with WP Rocket %2$spage caching%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:305 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sasset optimization%3$s conflicts with WP Rocket %2$sfile " +"optimization%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:123 +#, php-format +msgid "Sucuri cache purge error: %s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:128 +msgid "" +"The Sucuri cache is being cleared. Note that it may take up to two minutes " +"for it to be fully flushed." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:242 +msgid "Sucuri firewall API key was not found." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:251 +msgid "Sucuri firewall API key is invalid." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:303 +msgid "Error when contacting Sucuri firewall API." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:313 +#, php-format +msgid "Error when contacting Sucuri firewall API. Error message was: %s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:324 +msgid "Could not get a response from the Sucuri firewall API." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:335 +msgid "Got an invalid response from the Sucuri firewall API." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:345 +msgid "The Sucuri firewall API returned an unknown error." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:348 +#, php-format +msgid "The Sucuri firewall API returned the following error: %s" +msgid_plural "The Sucuri firewall API returned the following errors: %s" +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/traits/trait-updater-api-tools.php:53 +#: inc/deprecated/3.3.php:760 inc/deprecated/3.3.php:769 +#, php-format +msgid "" +"An unexpected error occurred. Something may be wrong with WP-Rocket.me or " +"this server’s configuration. If you continue to have problems, contact support." +msgstr "" + +#: inc/common/admin-bar.php:106 inc/common/admin-bar.php:260 +#: inc/functions/i18n.php:39 inc/functions/i18n.php:48 +msgid "All languages" +msgstr "" + +#: inc/common/admin-bar.php:133 +msgid "Clear this post" +msgstr "" + +#: inc/common/admin-bar.php:147 +msgid "Purge this URL" +msgstr "" + +#: inc/common/admin-bar.php:163 +msgid "Purge OPcache" +msgstr "" + +#: inc/common/admin-bar.php:180 +msgid "Regenerate Critical Path CSS" +msgstr "" + +#: inc/common/admin-bar.php:196 +msgid "Clear Cloudflare cache" +msgstr "" + +#: inc/common/admin-bar.php:217 inc/common/admin-bar.php:272 +#: views/settings/page-sections/dashboard.php:135 +msgid "Preload cache" +msgstr "" + +#: inc/common/admin-bar.php:287 views/settings/partials/documentation.php:13 +msgid "Documentation" +msgstr "" + +#: inc/common/cron.php:24 +#, php-format +msgid "%s clear" +msgstr "" + +#: inc/common/cron.php:39 +msgid "monthly" +msgstr "" + +#: inc/common/purge.php:456 +#, php-format +msgid "Cloudflare cache purge error: %s" +msgstr "" + +#: inc/common/purge.php:461 +msgid "Cloudflare cache successfully purged" +msgstr "" + +#: inc/deprecated/3.2.php:51 views/settings/page-sections/imagify.php:35 +msgid "Activate Imagify" +msgstr "" + +#: inc/deprecated/3.2.php:51 +msgid "Install Imagify for Free" +msgstr "" + +#: inc/deprecated/3.2.php:66 +msgid "" +"Speed up your website and boost your SEO by reducing image file sizes " +"without losing quality with Imagify." +msgstr "" + +#: inc/deprecated/3.2.php:71 +msgid "More details" +msgstr "" + +#: inc/deprecated/3.2.php:227 +#, php-format +msgid "Sitemap preload: %d pages have been cached." +msgstr "" + +#: inc/deprecated/3.2.php:260 +#, php-format +msgid "" +"Sitemap preload: %d uncached pages have now been preloaded. (refresh to see " +"progress)" +msgstr "" + +#: inc/deprecated/deprecated.php:242 +msgid "JS files with Deferred Loading JavaScript" +msgstr "" + +#: inc/deprecated/deprecated.php:295 +msgid "Add URL" +msgstr "" + +#: inc/deprecated/deprecated.php:1279 views/settings/fields/import-form.php:22 +msgid "" +"Before you can upload your import file, you will need to fix the following " +"error:" +msgstr "" + +#: inc/deprecated/deprecated.php:1290 views/settings/fields/import-form.php:35 +#, php-format +msgid "Choose a file from your computer (maximum size: %s)" +msgstr "" + +#: inc/deprecated/deprecated.php:1387 +msgid "Your Cloudflare credentials are valid." +msgstr "" + +#: inc/deprecated/deprecated.php:1391 +msgid "Your Cloudflare credentials are invalid!" +msgstr "" + +#: inc/deprecated/deprecated.php:1455 +msgid "Save and optimize" +msgstr "" + +#: inc/deprecated/deprecated.php:1455 +#: views/settings/page-sections/database.php:27 +msgid "Optimize" +msgstr "" + +#: inc/deprecated/deprecated.php:1466 inc/deprecated/deprecated.php:1668 +msgctxt "screen-reader-text" +msgid "Note:" +msgstr "" + +#: inc/deprecated/deprecated.php:1472 +msgctxt "screen-reader-text" +msgid "Performance tip:" +msgstr "" + +#: inc/deprecated/deprecated.php:1478 +msgctxt "screen-reader-text" +msgid "Third-party feature detected:" +msgstr "" + +#: inc/deprecated/deprecated.php:1490 inc/deprecated/deprecated.php:1674 +msgctxt "screen-reader-text" +msgid "Warning:" +msgstr "" + +#: inc/deprecated/deprecated.php:1503 +msgctxt "button text" +msgid "Download settings" +msgstr "" + +#: inc/deprecated/deprecated.php:1533 +msgid "Replace site's hostname with:" +msgstr "" + +#: inc/deprecated/deprecated.php:1552 inc/deprecated/deprecated.php:1589 +#: inc/deprecated/deprecated.php:1617 views/settings/fields/cnames.php:32 +#: views/settings/fields/cnames.php:63 views/settings/fields/cnames.php:93 +msgid "reserved for" +msgstr "" + +#: inc/deprecated/deprecated.php:1554 inc/deprecated/deprecated.php:1591 +#: inc/deprecated/deprecated.php:1619 views/settings/fields/cnames.php:35 +#: views/settings/fields/cnames.php:66 views/settings/fields/cnames.php:96 +msgid "All files" +msgstr "" + +#: inc/deprecated/deprecated.php:1566 inc/deprecated/deprecated.php:1596 +#: inc/deprecated/deprecated.php:1624 views/settings/fields/cnames.php:47 +#: views/settings/fields/cnames.php:78 views/settings/fields/cnames.php:108 +msgid "Images" +msgstr "" + +#: inc/deprecated/deprecated.php:1637 views/settings/fields/cnames.php:119 +msgid "Add CNAME" +msgstr "" + +#: inc/deprecated/deprecated.php:1708 +msgid "Watch the video" +msgstr "" + +#: inc/deprecated/deprecated.php:1773 +msgid "Basic" +msgstr "" + +#: inc/deprecated/deprecated.php:1774 +msgid "Static Files" +msgstr "" + +#: inc/deprecated/deprecated.php:1776 +msgid "Advanced" +msgstr "" + +#: inc/deprecated/deprecated.php:1946 +#, php-format +msgid "" +"%1$s %2$s requires at least PHP %3$s to function properly. To use this " +"version, please ask your web host how to upgrade your server to PHP %3$s or " +"higher. If you are not able to upgrade, you can rollback to the previous " +"version by using the button below." +msgstr "" + +#: inc/functions/admin.php:23 +msgid "" +"There seems to be an issue validating your license. Please see the error " +"message below." +msgid_plural "" +"There seems to be an issue validating your license. You can see the error " +"messages below." +msgstr[0] "" +msgstr[1] "" + +#: inc/functions/admin.php:361 +msgid "Server type:" +msgstr "" + +#: inc/functions/admin.php:370 +msgid "PHP version number:" +msgstr "" + +#: inc/functions/admin.php:379 +msgid "WordPress version number:" +msgstr "" + +#: inc/functions/admin.php:388 +msgid "WordPress multisite:" +msgstr "" + +#: inc/functions/admin.php:397 +msgid "Current theme:" +msgstr "" + +#: inc/functions/admin.php:406 +msgid "Current site language:" +msgstr "" + +#: inc/functions/admin.php:415 +msgid "Active plugins:" +msgstr "" + +#: inc/functions/admin.php:418 +msgid "Plugin names of all active plugins" +msgstr "" + +#: inc/functions/admin.php:424 +msgid "Anonymized WP Rocket settings:" +msgstr "" + +#: inc/functions/admin.php:427 +msgid "Which WP Rocket settings are active" +msgstr "" + +#: inc/functions/cloudflare.php:14 +msgid "" +"Curl functions are disabled, they are required for the Cloudflare Add-on to " +"work correctly." +msgstr "" + +#: inc/functions/cloudflare.php:21 +msgid "Cloudflare Email and API key are not set" +msgstr "" + +#: inc/functions/cloudflare.php:52 +#, php-format +msgid "Missing Cloudflare zone ID. %s could not fix this automatically." +msgstr "" + +#: inc/functions/cloudflare.php:58 +#, php-format +msgid "Read the %1$sdocumentation%2$s for further guidance." +msgstr "" + +#: inc/functions/cloudflare.php:60 +msgid "" +"https://docs.wp-rocket.me/article/18-using-wp-rocket-with-" +"cloudflare/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" + +#: inc/functions/cloudflare.php:100 +msgid "Connection to Cloudflare failed" +msgstr "" + +#: inc/functions/cloudflare.php:122 +msgid "Choose a domain from the list" +msgstr "" + +#: inc/functions/cloudflare.php:135 +msgid "No domain available in your Cloudflare account" +msgstr "" + +#: inc/functions/options.php:580 inc/functions/options.php:619 +msgid "" +"License validation failed. Our server could not resolve the request from " +"your website." +msgstr "" + +#: inc/functions/options.php:580 inc/functions/options.php:619 +#, php-format +msgid "" +"Try clicking %1$sSave Changes%2$s below. If the error persists, follow " +"%3$sthis guide%4$s." +msgstr "" + +#: inc/functions/options.php:596 +msgid "" +"License validation failed. You may be using a nulled version of the plugin. " +"Please do the following:" +msgstr "" + +#: inc/functions/options.php:596 inc/functions/options.php:638 +#, php-format +msgid "Login to your WP Rocket %1$saccount%2$s" +msgstr "" + +#: inc/functions/options.php:596 inc/functions/options.php:638 +msgid "Download the zip file" +msgstr "" + +#: inc/functions/options.php:596 inc/functions/options.php:638 +msgid "Reinstall" +msgstr "" + +#: inc/functions/options.php:596 +#, php-format +msgid "" +"If you do not have a WP Rocket account, please %1$spurchase a license%2$s." +msgstr "" + +#: inc/functions/options.php:604 +msgid "" +"License validation failed. This user account does not exist in our database." +msgstr "" + +#: inc/functions/options.php:604 +msgid "To resolve, please contact support." +msgstr "" + +#: inc/functions/options.php:612 +msgid "License validation failed. This user account is blacklisted." +msgstr "" + +#: inc/functions/options.php:612 +#, php-format +msgid "Please see %1$sthis guide%2$s for more info." +msgstr "" + +#: inc/functions/options.php:632 +msgid "Your license is not valid." +msgstr "" + +#: inc/functions/options.php:632 +#, php-format +msgid "Make sure you have an active %1$sWP Rocket license%2$s." +msgstr "" + +#: inc/functions/options.php:634 +msgid "You have added as many sites as your current license allows." +msgstr "" + +#: inc/functions/options.php:634 +#, php-format +msgid "" +"Upgrade your %1$saccount%2$s or %3$stransfer your license%2$s to this " +"domain." +msgstr "" + +#: inc/functions/options.php:636 +msgid "This website is not allowed." +msgstr "" + +#: inc/functions/options.php:636 +#, php-format +msgid "Please %1$scontact support%2$s." +msgstr "" + +#: inc/functions/options.php:638 +msgid "This license key is not recognized." +msgstr "" + +#: inc/functions/options.php:638 +#, php-format +msgid "If the issue persists, please %1$scontact support%2$s." +msgstr "" + +#: inc/functions/options.php:644 +#, php-format +msgid "License validation failed: %s" +msgstr "" + +#: inc/vendors/classes/class-imagify-partner.php:531 +msgid "Plugin installed successfully." +msgstr "" + +#: inc/vendors/classes/class-imagify-partner.php:532 +msgid "Sorry, you are not allowed to install plugins on this site." +msgstr "" + +#: inc/vendors/classes/class-imagify-partner.php:533 +msgid "Sorry, you are not allowed to do that." +msgstr "" + +#: inc/vendors/classes/class-imagify-partner.php:534 +msgid "Plugin install failed." +msgstr "" + +#: inc/vendors/classes/class-imagify-partner.php:535 +msgid "Go back" +msgstr "" + +#: views/deactivation-intent/form.php:20 +msgid "Return" +msgstr "" + +#: views/deactivation-intent/form.php:21 +msgid "WP Rocket feedback" +msgstr "" + +#: views/deactivation-intent/form.php:23 +msgid "Close" +msgstr "" + +#: views/deactivation-intent/form.php:27 +msgid "May we have a little info about why you are deactivating?" +msgstr "" + +#: views/deactivation-intent/form.php:31 +msgid "" +"It is a temporary deactivation. I am just debugging an " +"issue." +msgstr "" + +#: views/deactivation-intent/form.php:35 +msgid "The plugin broke my layout or some functionality." +msgstr "" + +#: views/deactivation-intent/form.php:39 +msgid "My PageSpeed or GTMetrix score did not improve." +msgstr "" + +#: views/deactivation-intent/form.php:43 +msgid "I did not notice a difference in loading time." +msgstr "" + +#: views/deactivation-intent/form.php:47 +msgid "The plugin is too complicated to configure." +msgstr "" + +#: views/deactivation-intent/form.php:51 +msgid "My host already has its own caching system." +msgstr "" + +#: views/deactivation-intent/form.php:53 +msgid "What is the name of your web host?" +msgstr "" + +#: views/deactivation-intent/form.php:58 +msgid "Other" +msgstr "" + +#: views/deactivation-intent/form.php:60 +msgid "" +"Let us know why you are deactivating WP Rocket so we can improve the plugin" +msgstr "" + +#: views/deactivation-intent/form.php:68 +msgid "The plugin broke my layout or some functionality" +msgstr "" + +#: views/deactivation-intent/form.php:69 +msgid "" +"This type of issue can usually be fixed by deactivating some options in WP " +"Rocket." +msgstr "" + +#: views/deactivation-intent/form.php:70 +msgid "" +"Click \"Apply Safe Mode\" to quickly disable LazyLoad, File Optimization, " +"Embeds and CDN options. Then check your site to see if the issue has " +"resolved." +msgstr "" + +#: views/deactivation-intent/form.php:72 +msgid "Apply safe mode" +msgstr "" + +#: views/deactivation-intent/form.php:75 +msgid "Safe mode applied." +msgstr "" + +#: views/deactivation-intent/form.php:76 +msgid "Review your site in a private/logged out browser window." +msgstr "" + +#: views/deactivation-intent/form.php:78 +msgid "" +"Is the issue fixed? Now you can reactivate options one at a time to " +"determine which one caused the problem. More info" +msgstr "" + +#: views/deactivation-intent/form.php:81 +msgid "My PageSpeed or GT Metrix score did not improve" +msgstr "" + +#: views/deactivation-intent/form.php:82 +msgid "" +"WP Rocket makes your site faster. The PageSpeed grade or GTMetrix score are " +"not indicators of speed. Neither your real visitors, nor Google will ever " +"see your website’s “grade”. Speed is the only metric that matters for SEO " +"and conversions." +msgstr "" + +#: views/deactivation-intent/form.php:83 +msgid "Yoast, the expert on all things related to SEO for WordPress states:" +msgstr "" + +#: views/deactivation-intent/form.php:84 +msgid "" +"[Google] just looks at how fast your website loads for users, so you don’t " +"have to obsess over that specific score. You have to make sure your website " +"is as fast as you can get it." +msgstr "" + +#: views/deactivation-intent/form.php:87 +msgid "" +"How to measure the load time of your site:
      https" +"://wp-rocket.me/blog/correctly-measure-websites-page-load-time/" +msgstr "" + +#: views/deactivation-intent/form.php:88 +msgid "" +"Why you should not be chasing a PageSpeed score:
      https://wp-rocket.me/blog/the-truth-about-google-" +"pagespeed-insights/" +msgstr "" + +#: views/deactivation-intent/form.php:91 +msgid "I did not notice a difference in loading time" +msgstr "" + +#: views/deactivation-intent/form.php:92 +msgid "" +"Make sure you look at your site while logged out to see the fast, cached " +"pages!" +msgstr "" + +#: views/deactivation-intent/form.php:93 +msgid "" +"The best way to see the improvement WP Rocket provides is to perform speed " +"tests. Follow this guide to correctly measure the load time of your " +"website:
      https://wp-rocket.me/blog/correctly-measure-websites-page-" +"load-time/" +msgstr "" + +#: views/deactivation-intent/form.php:96 +msgid "The plugin is too complicated to configure" +msgstr "" + +#: views/deactivation-intent/form.php:97 +msgid "We are sorry to hear you are finding it difficult to use WP Rocket." +msgstr "" + +#: views/deactivation-intent/form.php:98 +#, php-format +msgid "" +"WP Rocket is the only caching plugin that provides 80% of best practices in " +"speed optimization, by default. That means you do not have to do anything " +"besides activate WP Rocket and your site will already be faster!" +msgstr "" + +#: views/deactivation-intent/form.php:99 +msgid "" +"The additional options are not required for a fast site, they are for fine-" +"tuning." +msgstr "" + +#: views/deactivation-intent/form.php:100 +msgid "" +"To see the benefit WP Rocket is already providing, measure the speed of your" +" site using a tool like Pingdom:
      https" +"://wp-rocket.me/blog/correctly-measure-websites-page-load-time/" +msgstr "" + +#: views/deactivation-intent/form.php:105 +msgid "Send & Deactivate" +msgstr "" + +#: views/deactivation-intent/form.php:106 +msgid "Cancel" +msgstr "" + +#: views/deactivation-intent/form.php:108 +msgid "Skip & Deactivate" +msgstr "" + +#: views/settings/fields/cache-lifespan.php:26 +msgid "Clear cache after" +msgstr "" + +#: views/settings/fields/cnames.php:49 views/settings/fields/cnames.php:80 +#: views/settings/fields/cnames.php:110 +msgid "CSS & JavaScript" +msgstr "" + +#: views/settings/fields/cnames.php:50 views/settings/fields/cnames.php:81 +#: views/settings/fields/cnames.php:111 +msgid "JavaScript" +msgstr "" + +#: views/settings/fields/cnames.php:51 views/settings/fields/cnames.php:82 +#: views/settings/fields/cnames.php:112 +msgid "CSS" +msgstr "" + +#: views/settings/fields/import-form.php:29 +msgid "Import settings" +msgstr "" + +#: views/settings/fields/one-click-addon.php:39 +#: views/settings/fields/rocket-addon.php:31 +#: views/settings/fields/sliding-checkbox.php:24 views/settings/page.php:54 +msgctxt "Active state of checkbox" +msgid "On" +msgstr "" + +#: views/settings/fields/one-click-addon.php:40 +#: views/settings/fields/rocket-addon.php:32 +#: views/settings/fields/sliding-checkbox.php:25 views/settings/page.php:55 +msgctxt "Inactive state of checkbox" +msgid "Off" +msgstr "" + +#: views/settings/fields/one-click-addon.php:41 +#: views/settings/fields/rocket-addon.php:33 +msgid "Add-on status" +msgstr "" + +#: views/settings/fields/rocket-addon.php:56 +msgid "Modify options" +msgstr "" + +#: views/settings/page-sections/cloudflare.php:26 +msgid "Cloudflare Cache" +msgstr "" + +#: views/settings/page-sections/cloudflare.php:33 +#: views/settings/page-sections/sucuri.php:34 +#, php-format +msgid "Purges cached resources for your website. %s" +msgstr "" + +#: views/settings/page-sections/cloudflare.php:34 +msgid "https://support.cloudflare.com/hc/en-us/articles/200169246" +msgstr "" + +#: views/settings/page-sections/cloudflare.php:34 +#: views/settings/page-sections/sucuri.php:35 +msgid "Learn more" +msgstr "" + +#: views/settings/page-sections/cloudflare.php:40 +msgid "Clear all Cloudflare cache files" +msgstr "" + +#: views/settings/page-sections/dashboard.php:37 +msgid "Congratulations!" +msgstr "" + +#: views/settings/page-sections/dashboard.php:39 +msgid "WP Rocket is now activated and already working for you." +msgstr "" + +#: views/settings/page-sections/dashboard.php:41 +msgid "Your website should be loading faster now!" +msgstr "" + +#: views/settings/page-sections/dashboard.php:43 +#, php-format +msgid "" +"To guarantee fast websites, WP Rocket applies 80% of web performance best " +"practices." +msgstr "" + +#: views/settings/page-sections/dashboard.php:43 +msgid "" +"We also enable options that provide immediate benefits to your website." +msgstr "" + +#: views/settings/page-sections/dashboard.php:44 +msgid "Continue to the options to further optimize your site!" +msgstr "" + +#: views/settings/page-sections/dashboard.php:54 +msgid "My Account" +msgstr "" + +#: views/settings/page-sections/dashboard.php:60 +msgid "Refresh info" +msgstr "" + +#: views/settings/page-sections/dashboard.php:74 +msgid "Expiration Date" +msgstr "" + +#: views/settings/page-sections/dashboard.php:83 +msgid "View my account" +msgstr "" + +#: views/settings/page-sections/dashboard.php:103 +msgid "Quick Actions" +msgstr "" + +#: views/settings/page-sections/dashboard.php:109 +msgid "Remove all cached files" +msgstr "" + +#: views/settings/page-sections/dashboard.php:129 +msgid "Start cache preloading" +msgstr "" + +#: views/settings/page-sections/dashboard.php:147 +msgid "Purge OPCache content" +msgstr "" + +#: views/settings/page-sections/dashboard.php:153 +msgid "Purge OPCache" +msgstr "" + +#: views/settings/page-sections/dashboard.php:164 +#: views/settings/page-sections/dashboard.php:170 +msgid "Regenerate Critical CSS" +msgstr "" + +#: views/settings/page-sections/dashboard.php:186 +msgid "Frequently Asked Questions" +msgstr "" + +#: views/settings/page-sections/dashboard.php:199 +msgid "Still cannot find a solution?" +msgstr "" + +#: views/settings/page-sections/dashboard.php:200 +msgid "" +"Submit a ticket and get help from our friendly and knowledgeable Rocketeers." +msgstr "" + +#: views/settings/page-sections/dashboard.php:208 +msgid "Ask support" +msgstr "" + +#: views/settings/page-sections/database.php:24 +msgid "Backup your database before you run a cleanup!" +msgstr "" + +#: views/settings/page-sections/database.php:25 +msgid "" +"Once a database optimization has been performed, there is no way to undo it." +msgstr "" + +#: views/settings/page-sections/imagify.php:20 +#, php-format +msgid "" +"%1$sWP ROCKET%2$s created %3$sIMAGIFY%4$s %1$sfor best-in-class image " +"optimization.%2$s" +msgstr "" + +#: views/settings/page-sections/imagify.php:23 +msgid "" +"Compress image to make your website faster, all while maintaining image " +"quality." +msgstr "" + +#: views/settings/page-sections/imagify.php:24 +msgid "More on Imagify:" +msgstr "" + +#: views/settings/page-sections/imagify.php:26 +msgid "Imagify Plugin Page" +msgstr "" + +#: views/settings/page-sections/imagify.php:27 +msgid "Imagify Website" +msgstr "" + +#: views/settings/page-sections/imagify.php:28 +msgid "Review of Image Compression Plugins" +msgstr "" + +#: views/settings/page-sections/imagify.php:37 +msgid "Install Imagify" +msgstr "" + +#: views/settings/page-sections/license.php:21 +msgid "WP Rocket was not able to automatically validate your license." +msgstr "" + +#: views/settings/page-sections/license.php:26 +#, php-format +msgid "" +"Follow this tutorial, or contact support to get the engine started." +msgstr "" + +#: views/settings/page-sections/license.php:26 +msgid "" +"https://docs.wp-rocket.me/article/100-resolving-problems-with-license-" +"validation/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" + +#: views/settings/page-sections/sucuri.php:41 +msgid "Clear all Sucuri cache files" +msgstr "" + +#: views/settings/page-sections/tools.php:20 +#, php-format +msgid "Files size: %1$s. Number of entries: %2$s." +msgstr "" + +#: views/settings/page-sections/tools.php:23 +#, php-format +msgid "%1$sDownload the file%2$s." +msgstr "" + +#: views/settings/page-sections/tools.php:26 +#, php-format +msgid "%1$sDelete the file%2$s." +msgstr "" + +#: views/settings/page-sections/tools.php:37 +msgid "Export settings" +msgstr "" + +#: views/settings/page-sections/tools.php:38 +msgid "Download a backup file of your settings" +msgstr "" + +#: views/settings/page-sections/tools.php:43 +msgid "Download settings" +msgstr "" + +#: views/settings/page-sections/tools.php:56 +msgid "Rollback" +msgstr "" + +#: views/settings/page-sections/tools.php:60 +#, php-format +msgid "Has version %s caused an issue on your website?" +msgstr "" + +#: views/settings/page-sections/tools.php:62 +msgid "" +"You can rollback to the previous major version here.
      Then send us a " +"support request." +msgstr "" + +#: views/settings/page-sections/tools.php:69 +#, php-format +msgid "Reinstall version %s" +msgstr "" + +#: views/settings/page-sections/tools.php:85 +msgid "Debug mode" +msgstr "" + +#: views/settings/page-sections/tools.php:90 +msgid "Create a debug log file." +msgstr "" + +#: views/settings/page.php:16 +msgid "WP Rocket Settings" +msgstr "" + +#: views/settings/page.php:30 +#, php-format +msgid "version %s" +msgstr "" + +#: views/settings/page.php:40 +msgid "Save Changes" +msgstr "" + +#: views/settings/page.php:56 +msgid "Show Sidebar" +msgstr "" + +#: views/settings/page.php:75 +msgid "Thanks for choosing to participate in the WP Rocket beta program!" +msgstr "" + +#: views/settings/page.php:76 +msgid "" +"A beta version is usually one that has new features and improvements, but we" +" want to test it a little more before full launch." +msgstr "" + +#: views/settings/page.php:77 +msgid "" +"We’d love it if you took our beta versions for a ride, but please keep in " +"mind that it might be less stable than our other releases. Don’t worry, you " +"can switch back to a full release version at any time." +msgstr "" + +#: views/settings/page.php:78 +msgid "" +"Your mission: please send all feedback about our beta versions, including " +"bug reports, to support@wp-rocket.me" +msgstr "" + +#: views/settings/page.php:80 +msgid "If you don’t want to join the beta program, simply close this window." +msgstr "" + +#: views/settings/page.php:82 +msgid "Activate Rocket Tester" +msgstr "" + +#: views/settings/page.php:93 +msgid "" +"Below is a detailed view of all data WP Rocket will collect if " +"granted permission." +msgstr "" + +#: views/settings/page.php:96 +msgid "" +"WP Rocket will never transmit any domain names or email addresses (except " +"for license validation), IP addresses, or third-party API keys." +msgstr "" + +#: views/settings/page.php:98 +msgid "Activate Rocket analytics" +msgstr "" + +#: views/settings/partials/documentation.php:14 +msgid "It is a great starting point to fix some of the most common issues." +msgstr "" + +#: views/settings/partials/documentation.php:18 +msgid "Read the documentation" +msgstr "" + +#: views/settings/partials/sidebar.php:11 +msgid "How to correctly measure your website’s loading time" +msgstr "" + +#: views/settings/partials/sidebar.php:13 +msgid "" +"Learn how to use best practices to correctly measure your site's " +"performance." +msgstr "" + +#: views/settings/partials/sidebar.php:14 +msgid "" +"https://wp-rocket.me/blog/correctly-measure-websites-page-load-" +"time/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" + +#: views/settings/partials/sidebar.php:14 +msgid "Read our guide" +msgstr "" + +#: views/settings/partials/sidebar.php:17 +msgid "Why Google PageSpeed grade should not matter" +msgstr "" + +#: views/settings/partials/sidebar.php:18 +msgid "" +"https://wp-rocket.me/blog/the-truth-about-google-pagespeed-" +"insights/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" + +#: views/settings/partials/sidebar.php:18 +msgid "Read more" +msgstr "" + +#: views/settings/partials/sidebar.php:23 +msgid "You have not activated logged-in user cache." +msgstr "" + +#: views/settings/partials/sidebar.php:24 +msgid "" +"Use a private browser to check your website's speed and visual appearance." +msgstr "" + +#: views/settings/sections/addons-container.php:23 +#: views/settings/sections/fields-container.php:27 +msgid "Need Help?" +msgstr "" diff --git a/wp-content/plugins/wp-rocket/languages/rocket-he_IL.mo b/wp-content/plugins/wp-rocket/languages/rocket-he_IL.mo new file mode 100644 index 0000000000000000000000000000000000000000..cfd5ccee9efd27cca8e61e61e529495257982165 GIT binary patch literal 9619 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 X*3KK7d%-(%uUjWMN)km1DTe, 2019 +# Yoni Mantin , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: WP Rocket 3.3.7\n" +"Report-Msgid-Bugs-To: http://wp-rocket.me/\n" +"POT-Creation-Date: 2019-08-26 11:14-0400\n" +"PO-Revision-Date: 2019-08-26 15:14+0000\n" +"Last-Translator: Yoni Mantin , 2019\n" +"Language-Team: Hebrew (Israel) (https://www.transifex.com/wp-media/teams/18133/he_IL/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: he_IL\n" +"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;\n" +"X-Generator: Poedit 1.8.11\n" +"X-Poedit-Basepath: ..\n" +"X-Poedit-KeywordsList: __;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c\n" +"X-Poedit-SearchPath-0: .\n" +"X-Poedit-SearchPathExcluded-0: assets\n" +"X-Poedit-SearchPathExcluded-1: src\n" +"X-Poedit-SearchPathExcluded-2: vendor\n" +"X-Poedit-SearchPathExcluded-3: node_modules\n" +"X-Poedit-SearchPathExcluded-4: tests\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Textdomain-Support: yes\n" + +#: inc/3rd-party/hosting/flywheel.php:15 inc/3rd-party/hosting/godaddy.php:15 +#: inc/3rd-party/hosting/o2switch.php:15 +#: inc/3rd-party/hosting/pressidium.php:15 inc/3rd-party/hosting/savvii.php:15 +#: inc/3rd-party/hosting/wp-serveur.php:24 +#: inc/3rd-party/hosting/wpengine.php:15 +#, php-format +msgid "" +"Your site is hosted on %s, we have enabled Varnish auto-purge for " +"compatibility." +msgstr "" + +#: inc/3rd-party/hosting/kinsta.php:150 +#, php-format +msgid "" +"Your installation seems to be missing core Kinsta files managing Cache " +"clearing and CDN, which will prevent your Kinsta installation and WP Rocket " +"from working correctly. Please get in touch with Kinsta support through your" +" %1$sMyKinsta%2$s account to resolve this issue." +msgstr "" + +#: inc/3rd-party/plugins/jetpack.php:86 +msgid "Jetpack XML Sitemaps" +msgstr "מפות אתר XML של Jetpack" + +#: inc/3rd-party/plugins/jetpack.php:88 +msgid "Preload the sitemap from the Jetpack plugin" +msgstr "טען מראש את מפת האתר מתוסף ה-Jetpack" + +#: inc/3rd-party/plugins/jetpack.php:96 +#: inc/3rd-party/plugins/seo/all-in-one-seo-pack.php:88 +#: inc/3rd-party/plugins/seo/rank-math-seo.php:34 +#: inc/3rd-party/plugins/seo/seopress.php:85 +#: inc/3rd-party/plugins/seo/the-seo-framework.php:123 +#: inc/3rd-party/plugins/seo/yoast-seo.php:86 +#, php-format +msgid "" +"We automatically detected the sitemap generated by the %s plugin. You can " +"check the option to preload it." +msgstr "" + +#: inc/3rd-party/plugins/seo/all-in-one-seo-pack.php:86 +msgid "All in One SEO XML sitemap" +msgstr "" + +#: inc/3rd-party/plugins/seo/rank-math-seo.php:32 +msgid "Rank Math XML sitemap" +msgstr "" + +#: inc/3rd-party/plugins/seo/seopress.php:83 +msgid "SEOPress XML sitemap" +msgstr "" + +#: inc/3rd-party/plugins/seo/the-seo-framework.php:121 +msgid "The SEO Framework XML sitemap" +msgstr "" + +#: inc/3rd-party/plugins/seo/yoast-seo.php:84 +msgid "Yoast SEO XML sitemap" +msgstr "מפת אתר XML של Yoast SEO" + +#: inc/admin/admin.php:13 inc/common/admin-bar.php:311 +#: inc/deprecated/deprecated.php:1789 +msgid "Support" +msgstr "תמיכה" + +#: inc/admin/admin.php:15 +msgid "Docs" +msgstr "מסמכים" + +#: inc/admin/admin.php:17 inc/common/admin-bar.php:299 +msgid "FAQ" +msgstr "שאלות נפוצות" + +#: inc/admin/admin.php:19 inc/common/admin-bar.php:46 +msgid "Settings" +msgstr "הגדרות" + +#: inc/admin/admin.php:64 inc/admin/admin.php:86 inc/admin/admin.php:105 +msgid "Clear this cache" +msgstr "נקה מזיכרון המטמון" + +#: inc/admin/admin.php:249 inc/admin/admin.php:264 +#: inc/classes/class-wp-rocket-requirements-check.php:204 +#: inc/classes/class-wp-rocket-requirements-check.php:214 +#, php-format +msgid "%s Update Rollback" +msgstr "שחזור גרסא %s" + +#: inc/admin/admin.php:290 +#, php-format +msgid "%1$sReturn to WP Rocket%2$s or %3$sgo to Plugins page%2$s" +msgstr "" + +#: inc/admin/admin.php:529 +msgid "Settings import failed: you do not have the permissions to do this." +msgstr "" + +#: inc/admin/admin.php:533 +msgid "Settings import failed: no file uploaded." +msgstr "יבוא הגדרות נכשל: לא הועלה אף קובץ." + +#: inc/admin/admin.php:537 +msgid "Settings import failed: incorrect filename." +msgstr "יבוא הגדרות נכשל: שם קובץ שגוי." + +#: inc/admin/admin.php:546 +msgid "Settings import failed: incorrect filetype." +msgstr "יבוא הגדרות נכשל: סוג קובץ שגוי." + +#: inc/admin/admin.php:554 +msgid "Settings import failed: " +msgstr "" + +#: inc/admin/admin.php:571 +msgid "Settings import failed: unexpected file content." +msgstr "" + +#: inc/admin/admin.php:592 +msgid "Settings imported and saved." +msgstr "ההגדרות יובאו ונשמרו." + +#: inc/admin/options.php:101 +#, php-format +msgid "Cloudflare development mode error: %s" +msgstr "שגיאת מצב פיתוח של Cloudflare: %s" + +#: inc/admin/options.php:107 +#, php-format +msgid "Cloudflare development mode %s" +msgstr "מצב פיתוח של Cloudflare %s" + +#: inc/admin/options.php:124 +#, php-format +msgid "Cloudflare cache level error: %s" +msgstr "שגיאת רמת זיכרון מטמון של Cloudflare: %s" + +#: inc/admin/options.php:128 +msgctxt "Cloudflare caching level" +msgid "Standard" +msgstr "סטנדרטי" + +#: inc/admin/options.php:134 +#, php-format +msgid "Cloudflare cache level set to %s" +msgstr "רמת זיכרון מטמון של Cloudflare הוגדרה ל%s" + +#: inc/admin/options.php:146 +#, php-format +msgid "Cloudflare minification error: %s" +msgstr "שגיאת צמצום של Cloudflare: %s" + +#: inc/admin/options.php:152 +#, php-format +msgid "Cloudflare minification %s" +msgstr "צמצום Cloudflare %s" + +#: inc/admin/options.php:164 +#, php-format +msgid "Cloudflare rocket loader error: %s" +msgstr "" + +#: inc/admin/options.php:170 +#, php-format +msgid "Cloudflare rocket loader %s" +msgstr "" + +#: inc/admin/options.php:182 +#, php-format +msgid "Cloudflare browser cache error: %s" +msgstr "" + +#: inc/admin/options.php:188 +#, php-format +msgid "Cloudflare browser cache set to %s seconds" +msgstr "" + +#: inc/admin/options.php:241 inc/classes/admin/settings/class-page.php:692 +msgid "Excluded CSS Files" +msgstr "" + +#: inc/admin/options.php:242 inc/classes/admin/settings/class-page.php:784 +msgid "Excluded Inline JavaScript" +msgstr "" + +#: inc/admin/options.php:243 inc/classes/admin/settings/class-page.php:802 +msgid "Excluded JavaScript Files" +msgstr "" + +#: inc/admin/options.php:244 inc/classes/admin/settings/class-page.php:1128 +msgid "Never Cache URL(s)" +msgstr "" + +#: inc/admin/options.php:245 inc/classes/admin/settings/class-page.php:1144 +msgid "Never Cache User Agent(s)" +msgstr "" + +#: inc/admin/options.php:246 inc/classes/admin/settings/class-page.php:1149 +msgid "Always Purge URL(s)" +msgstr "" + +#: inc/admin/options.php:247 inc/classes/admin/settings/class-page.php:1443 +msgid "Exclude files from CDN" +msgstr "" + +#: inc/admin/options.php:265 +#, php-format +msgid "%1$s: %2$s." +msgstr "" + +#: inc/admin/options.php:275 +msgid "The following pattern is invalid and has been removed:" +msgid_plural "The following patterns are invalid and have been removed:" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: inc/admin/ui/meta-boxes.php:14 inc/admin/ui/notices.php:955 +#: inc/common/admin-bar.php:65 inc/common/admin-bar.php:118 +#: views/settings/page-sections/dashboard.php:115 +msgid "Clear cache" +msgstr "נקה זיכרון מטמון" + +#: inc/admin/ui/meta-boxes.php:36 +msgid "WP Rocket Options" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:66 +msgid "Never cache this page" +msgstr "לעולם אל תשמור עמוד זה במטמון" + +#: inc/admin/ui/meta-boxes.php:70 +msgid "Activate these options on this post:" +msgstr "הפעל אפשרויות אלו על פוסט זה:" + +#: inc/admin/ui/meta-boxes.php:73 +msgid "LazyLoad for images" +msgstr "LazyLoad עבור תמונות" + +#: inc/admin/ui/meta-boxes.php:74 +msgid "LazyLoad for iframes/videos" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:75 +#: inc/classes/admin/settings/class-page.php:615 +msgid "Minify HTML" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:76 +msgid "Minify/combine CSS" +msgstr "כווץ/מזג CSS" + +#: inc/admin/ui/meta-boxes.php:77 +msgid "Minify/combine JS" +msgstr "כווץ/מזג JS" + +#: inc/admin/ui/meta-boxes.php:78 +#: inc/classes/admin/settings/class-page.php:1413 +#: inc/classes/admin/settings/class-page.php:1424 +#: inc/deprecated/deprecated.php:1775 +msgid "CDN" +msgstr "CDN" + +#: inc/admin/ui/meta-boxes.php:79 +msgid "Optimize CSS Delivery" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:80 +msgid "Defer JS" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:86 +#, php-format +msgid "Activate first the %s option." +msgstr "" + +#: inc/admin/ui/meta-boxes.php:102 +#, php-format +msgid "" +"%1$sNote:%2$s None of these options will be applied if this post has been " +"excluded from cache in the global cache settings." +msgstr "" + +#: inc/admin/ui/notices.php:24 inc/admin/ui/notices.php:34 +#, php-format +msgid "" +"%1$s has not been deactivated due to missing writing permissions.
      \n" +"Make %2$s writeable and retry deactivation, or force deactivation now:" +msgstr "" + +#: inc/admin/ui/notices.php:83 +#, php-format +msgid "" +"%s: One or more plugins have been enabled or disabled, " +"clear the cache if they affect the front end of your site." +msgstr "" + +#: inc/admin/ui/notices.php:196 +#, php-format +msgid "" +"%s: The following plugins are not compatible with this " +"plugin and may cause unexpected results:" +msgstr "" + +#: inc/admin/ui/notices.php:202 +msgid "Deactivate" +msgstr "כיבוי" + +#: inc/admin/ui/notices.php:243 +msgid "" +"WP Rocket Footer JS is not an official add-on. It prevents some options in " +"WP Rocket from working correctly. Please deactivate it if you have problems." +msgstr "" + +#: inc/admin/ui/notices.php:283 +#, php-format +msgid "" +"Endurance Cache is currently enabled, which will conflict with WP Rocket " +"Cache. Please set the Endurance Cache cache level to Off (Level 0) on the " +"%1$sSettings > General%2$s page to prevent any issues." +msgstr "" + +#: inc/admin/ui/notices.php:305 +#, php-format +msgid "" +"%1$s: A custom permalink structure is required for the plugin to work " +"properly. %2$sGo to permalinks settings%3$s" +msgstr "" + +#: inc/admin/ui/notices.php:442 +#, php-format +msgid "" +"%s could not modify the .htaccess file due to missing writing permissions." +msgstr "" + +#: inc/admin/ui/notices.php:448 inc/admin/ui/notices.php:1032 +#, php-format +msgid "Troubleshoot: %1$sHow to make system files writeable%2$s" +msgstr "" + +#: inc/admin/ui/notices.php:450 inc/admin/ui/notices.php:1034 +msgid "" +"https://docs.wp-rocket.me/article/626-how-to-make-system-files-htaccess-wp-" +"config-writeable/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://docs.wp-rocket.me/article/626-how-to-make-system-files-htaccess-wp-" +"config-writeable/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: inc/admin/ui/notices.php:456 +msgid "" +"Don’t worry, WP Rocket’s page caching and settings will still function " +"correctly." +msgstr "" + +#: inc/admin/ui/notices.php:456 +msgid "" +"For optimal performance, adding the following lines into your .htaccess is " +"recommended (not required):" +msgstr "" + +#: inc/admin/ui/notices.php:600 +#, php-format +msgid "" +"%1$s is good to go! %2$sTest your load time%4$s, or visit your " +"%3$ssettings%4$s." +msgstr "" + +#: inc/admin/ui/notices.php:721 +msgid "" +"Would you allow WP Rocket to collect non-sensitive diagnostic data from this" +" website?" +msgstr "" + +#: inc/admin/ui/notices.php:722 +msgid "This would help us to improve WP Rocket for you in the future." +msgstr "" + +#: inc/admin/ui/notices.php:728 +msgid "What info will we collect?" +msgstr "" + +#: inc/admin/ui/notices.php:733 +msgid "" +"Below is a detailed view of all data WP Rocket will collect if granted " +"permission. WP Rocket will never transmit any domain names or email " +"addresses (except for license validation), IP addresses, or third-party API " +"keys." +msgstr "" + +#: inc/admin/ui/notices.php:742 +msgid "Yes, allow" +msgstr "כן, מאשר" + +#: inc/admin/ui/notices.php:745 +msgid "No, thanks" +msgstr "לא, תודה" + +#: inc/admin/ui/notices.php:783 +msgid "Thank you!" +msgstr "תודה רבה!" + +#: inc/admin/ui/notices.php:788 +msgid "WP Rocket now collects these metrics from your website:" +msgstr "" + +#: inc/admin/ui/notices.php:825 +#, php-format +msgid "%s: Cache cleared." +msgstr "" + +#: inc/admin/ui/notices.php:830 +#, php-format +msgid "%s: Post cache cleared." +msgstr "" + +#: inc/admin/ui/notices.php:835 +#, php-format +msgid "%s: Term cache cleared." +msgstr "" + +#: inc/admin/ui/notices.php:840 +#, php-format +msgid "%s: User cache cleared." +msgstr "" + +#: inc/admin/ui/notices.php:910 +msgid "" +"The following scheduled event failed to run. This may indicate the CRON " +"system is not running properly, which can prevent some WP Rocket features " +"from working as intended:" +msgid_plural "" +"The following scheduled events failed to run. This may indicate the CRON " +"system is not running properly, which can prevent some WP Rocket features " +"from working as intended:" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: inc/admin/ui/notices.php:919 +msgid "Please contact your host to check if CRON is working." +msgstr "" + +#: inc/admin/ui/notices.php:958 +msgid "Stop Preload" +msgstr "" + +#: inc/admin/ui/notices.php:976 +msgid "Force deactivation " +msgstr "" + +#: inc/admin/ui/notices.php:989 +msgid "The following code should have been written to this file:" +msgstr "" + +#: inc/admin/ui/notices.php:999 views/settings/page-sections/dashboard.php:45 +msgid "Dismiss this notice." +msgstr "" + +#: inc/admin/ui/notices.php:1020 +#, php-format +msgid "%s cannot configure itself due to missing writing permissions." +msgstr "" + +#: inc/admin/ui/notices.php:1026 +#, php-format +msgid "Affected file/folder: %s" +msgstr "" + +#: inc/classes/admin/Database/class-optimization.php:41 +#: inc/classes/admin/settings/class-page.php:1289 +msgid "Revisions" +msgstr "גרסאות" + +#: inc/classes/admin/Database/class-optimization.php:42 +#: inc/classes/admin/settings/class-page.php:1299 +msgid "Auto Drafts" +msgstr "טיוטות אוטומטיות" + +#: inc/classes/admin/Database/class-optimization.php:43 +#: inc/classes/admin/settings/class-page.php:1309 +msgid "Trashed Posts" +msgstr "" + +#: inc/classes/admin/Database/class-optimization.php:44 +#: inc/classes/admin/settings/class-page.php:1319 +msgid "Spam Comments" +msgstr "תגובות ספאם" + +#: inc/classes/admin/Database/class-optimization.php:45 +#: inc/classes/admin/settings/class-page.php:1329 +msgid "Trashed Comments" +msgstr "" + +#: inc/classes/admin/Database/class-optimization.php:46 +#: inc/classes/admin/settings/class-page.php:1339 +msgid "Expired transients" +msgstr "" + +#: inc/classes/admin/Database/class-optimization.php:47 +msgid "Transients" +msgstr "" + +#: inc/classes/admin/Database/class-optimization.php:48 +msgid "Tables" +msgstr "" + +#: inc/classes/admin/class-logs.php:124 +msgid "The debug file could not be deleted." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:212 +#: inc/classes/admin/settings/class-page.php:213 +msgid "Unavailable" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:327 +#: inc/deprecated/deprecated.php:1791 +#: views/settings/page-sections/dashboard.php:72 +msgid "License" +msgstr "רישיון" + +#: inc/classes/admin/settings/class-page.php:344 +msgid "API key" +msgstr "מפתח API" + +#: inc/classes/admin/settings/class-page.php:359 +msgid "Email address" +msgstr "כתובת דוא\"ל" + +#: inc/classes/admin/settings/class-page.php:388 +msgid "Dashboard" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:389 +msgid "Get help, account info" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:398 +msgid "My Status" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:408 views/settings/page.php:71 +msgid "Rocket Tester" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:409 +msgid "I am part of the WP Rocket Beta Testing Program." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:417 views/settings/page.php:89 +msgid "Rocket Analytics" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:419 +#, php-format +msgid "" +"I agree to share anonymous data with the development team to help improve WP" +" Rocket. %1$sWhat info will we collect?%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:447 +msgid "Cache" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:448 +msgid "Basic cache options" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:455 +msgid "Mobile Cache" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:457 +msgid "Speed up your site for mobile visitors." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:462 +msgid "" +"We detected you use a plugin that requires a separate cache for mobile, and " +"automatically enabled this option for compatibility." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:466 +msgid "User Cache" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:469 +#, php-format +msgid "" +"%1$sUser cache%2$s is great when you have user-specific or restricted " +"content on your website." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:477 +msgid "Cache Lifespan" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:480 +#, php-format +msgid "" +"Cache lifespan is the period of time after which all cache files are " +"removed.
      Enable %1$spreloading%2$s for the cache to be rebuilt " +"automatically after lifespan expiration." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:494 +msgid "Enable caching for logged-in WordPress users" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:502 +msgid "Enable caching for mobile devices" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:517 +msgid "Separate cache files for mobile devices" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:519 +#, php-format +msgid "" +"%1$sMobile cache%2$s works safest with both options enabled. When in doubt, " +"keep both." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:535 +msgid "" +"Specify time after which the global cache is cleared
      (0 = unlimited )" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:537 +#, php-format +msgid "" +"Reduce lifespan to 10 hours or less if you notice issues that seem to appear" +" periodically. %1$sWhy?%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:543 +msgid "Minutes" +msgstr "דקות" + +#: inc/classes/admin/settings/class-page.php:544 +msgid "Hours" +msgstr "שעות" + +#: inc/classes/admin/settings/class-page.php:545 +msgid "Days" +msgstr "ימים" + +#: inc/classes/admin/settings/class-page.php:571 +msgid "File Optimization" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:572 +msgid "Optimize CSS & JS" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:579 +msgid "Basic Settings" +msgstr "הגדרות בסיסיות" + +#: inc/classes/admin/settings/class-page.php:586 +#: inc/classes/admin/settings/class-page.php:596 +#: inc/classes/admin/settings/class-page.php:606 +#, php-format +msgid "" +"%1$s Minification is currently activated in Autoptimize. If" +" you want to use %2$s’s minification, disable those options in Autoptimize." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:589 +msgid "CSS Files" +msgstr "קבצי CSS" + +#: inc/classes/admin/settings/class-page.php:599 +msgid "JavaScript Files" +msgstr "קבצי JavaScript" + +#: inc/classes/admin/settings/class-page.php:619 +msgid "Minifying HTML removes whitespace and comments to reduce the size." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:630 +msgid "Combine Google Fonts files" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:631 +msgid "Combining Google Fonts will reduce the number of HTTP requests." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:639 +msgid "Remove query strings from static resources" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:641 +#, php-format +msgid "" +"Removes the version query string from static files (e.g. style.css?ver=1.0) " +"and encodes it into the filename instead (e.g. style-1.0.css). Can improve " +"your GTMetrix score. %1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:649 +msgid "Minify CSS files" +msgstr "כווץ קבצי CSS" + +#: inc/classes/admin/settings/class-page.php:650 +msgid "Minify CSS removes whitespace and comments to reduce the file size." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:663 +#: inc/classes/admin/settings/class-page.php:685 +#: inc/classes/admin/settings/class-page.php:755 +#: inc/classes/admin/settings/class-page.php:777 +msgid "This could break things!" +msgstr "זה עלול לשבור דברים!" + +#: inc/classes/admin/settings/class-page.php:664 +#: inc/classes/admin/settings/class-page.php:686 +#: inc/classes/admin/settings/class-page.php:756 +#: inc/classes/admin/settings/class-page.php:778 +msgid "" +"If you notice any errors on your website after having activated this " +"setting, just deactivate it again, and your site will be back to normal." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:665 +msgid "Activate minify CSS" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:670 +msgid "Combine CSS files (Enable Minify CSS files to select)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:672 +#, php-format +msgid "" +"Combine CSS merges all your files into 1, reducing HTTP requests. Not " +"recommended if your site uses HTTP/2. %1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:687 +msgid "Activate combine CSS" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:693 +msgid "" +"Specify URLs of CSS files to be excluded from minification and concatenation" +" (one per line)." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:694 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*).css " +"wildcards to exclude all CSS files located at a specific path." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:707 +msgid "Optimize CSS delivery" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:714 +#, php-format +msgctxt "WP Critical CSS compatibility" +msgid "" +"Optimize CSS Delivery is currently handled by the %1$s plugin. If you want " +"to use WP Rocket’s Optimize CSS Delivery option, disable the %1$s plugin." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:716 +#, php-format +msgid "" +"Optimize CSS delivery eliminates render-blocking CSS on your website for " +"faster perceived load time. %1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:727 +msgid "Fallback critical CSS" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:732 +#, php-format +msgid "" +"Provides a fallback if auto-generated critical path CSS is incomplete. " +"%1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:741 +msgid "Minify JavaScript files" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:742 +msgid "" +"Minify JavaScript removes whitespace and comments to reduce the file size." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:757 +msgid "Activate minify JavaScript" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:762 +msgid "" +"Combine JavaScript files (Enable Minify JavaScript files to select)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:764 +#, php-format +msgid "" +"Combine JavaScript files combines your site’s internal, 3rd party and inline" +" JS reducing HTTP requests. Not recommended if your site uses HTTP/2. " +"%1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:779 +msgid "Activate combine JavaScript" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:786 +#, php-format +msgid "" +"Specify patterns of inline JavaScript to be excluded from concatenation (one" +" per line). %1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:803 +msgid "" +"Specify URLs of JavaScript files to be excluded from minification and " +"concatenation (one per line)." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:804 +msgid "" +"Internal: The domain part of the URL will be stripped " +"automatically. Use (.*).js wildcards to exclude all JS files located at a " +"specific path." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:806 +#, php-format +msgid "" +"3rd Party: Use either the full URL path or only the domain " +"name, to exclude external JS. %1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:822 +msgid "Load JavaScript deferred" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:824 +#, php-format +msgid "" +"Load JavaScript deferred eliminates render-blocking JS on your site and can " +"improve load time. %1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:835 +msgid "Safe Mode for jQuery (recommended)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:836 +msgid "" +"Safe mode for jQuery for deferred JS ensures support for inline jQuery " +"references from themes and plugins by loading jQuery at the top of the " +"document as a render-blocking script.
      Deactivating may result in " +"broken functionality, test thoroughly!" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:861 +msgid "Media" +msgstr "מדיה" + +#: inc/classes/admin/settings/class-page.php:862 +msgid "LazyLoad, emojis, embeds" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:869 +msgid "LazyLoad" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:872 +#, php-format +msgid "" +"It can improve actual and perceived loading time as images, iframes, and " +"videos will be loaded only as they enter (or about to enter) the viewport " +"and reduces the number of HTTP requests. %1$sMore Info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:879 +#, php-format +msgid "" +"Lazyload is currently activated in Autoptimize. If you want" +" to use %1$s’s lazyload, disable this option in Autoptimize." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:882 +msgid "Emoji 👻" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:884 +msgid "" +"Use default emoji of visitor's browser instead of loading emoji from " +"WordPress.org" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:888 +msgid "Embeds" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:890 +msgid "" +"Prevents others from embedding content from your site, prevents you from " +"embedding content from other (non-whitelisted) sites, and removes JavaScript" +" requests related to WordPress embeds" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:900 +msgid "Enable for images" +msgstr "אפשר עבור תמונות" + +#: inc/classes/admin/settings/class-page.php:911 +msgctxt "Avada" +msgid "" +"Lazyload for images is currently activated in Avada. If you want to use WP " +"Rocket’s LazyLoad, disable this option in Avada." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:919 +msgid "Enable for iframes and videos" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:934 +msgid "Replace YouTube iframe with preview image" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:935 +msgid "" +"This can significantly improve your loading time if you have a lot of " +"YouTube videos on a page." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:947 +msgid "Disable Emoji" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:948 +msgid "Disable Emoji will reduce the number of external HTTP requests." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:956 +msgid "Disable WordPress embeds" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:978 +#: inc/classes/admin/settings/class-page.php:988 +#: inc/deprecated/deprecated.php:1778 +msgid "Preload" +msgstr "טעינה מראש" + +#: inc/classes/admin/settings/class-page.php:979 +msgid "Generate cache files" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:991 +#, php-format +msgid "" +"When you enable preloading WP Rocket will generate the cache starting with " +"the links on your homepage followed by the sitemaps you specify. Preloading " +"is automatically triggered when you add or update content and can also be " +"manually triggered from the admin bar or from the %1$sWP Rocket " +"Dashboard%2$s." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:999 +msgid "Prefetch DNS Requests" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1001 +msgid "" +"DNS prefetching can make external files load faster, especially on mobile " +"networks" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1015 +msgid "Activate Preloading" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1034 +msgid "Activate sitemap-based cache preloading" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1053 +msgid "Sitemaps for preloading" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1057 +msgid "Specify XML sitemap(s) to be used for preloading" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1067 +msgid "URLs to prefetch" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1068 +msgid "" +"Specify external hosts to be prefetched (no http:, one per " +"line)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1091 +msgid "Advanced Rules" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1092 +msgid "Fine-tune cache rules" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1101 +msgid "" +"Sensitive pages like custom login/logout URLs should be excluded from cache." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1104 +msgctxt "plugin name" +msgid "WooCommerce" +msgstr "WooCommerce" + +#: inc/classes/admin/settings/class-page.php:1106 +msgctxt "plugin name" +msgid "Easy Digital Downloads" +msgstr "Easy Digital Downloads" + +#: inc/classes/admin/settings/class-page.php:1108 +msgctxt "plugin name" +msgid "iThemes Exchange" +msgstr "iThemes Exchange" + +#: inc/classes/admin/settings/class-page.php:1110 +msgctxt "plugin name" +msgid "Jigoshop" +msgstr "Jigoshop" + +#: inc/classes/admin/settings/class-page.php:1112 +msgctxt "plugin name" +msgid "WP-Shop" +msgstr "WP-Shop" + +#: inc/classes/admin/settings/class-page.php:1118 +#, php-format +msgid "" +"
      Cart, checkout and \"my account\" pages set in " +"%1$s%2$s%3$s will be detected and never cached by default." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1139 +msgid "Never Cache Cookies" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1158 +msgid "Cache Query String(s)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1161 +#, php-format +msgid "" +"%1$sCache for query strings%2$s enables you to force caching for specific " +"GET parameters." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1175 +msgid "" +"Specify URLs of pages or posts that should never be cached (one per line)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1176 +#: inc/classes/admin/settings/class-page.php:1204 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*) " +"wildcards to address multiple URLs under a given path." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1185 +msgid "" +"Specify the IDs of cookies that, when set in the visitor's browser, should " +"prevent a page from getting cached (one per line)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1193 +msgid "" +"Specify user agent strings that should never see cached pages (one per line)" +msgstr "" +"ציין מחרוזות סוכני משתמש שלעולם לא אמורים לראות עמודים שנשמרו במטמון (אחד " +"לכל שורה)" + +#: inc/classes/admin/settings/class-page.php:1194 +msgid "Use (.*) wildcards to detect parts of UA strings." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1203 +msgid "" +"Specify URLs you always want purged from cache whenever you update any post " +"or page (one per line)" +msgstr "" +"ציין כתובות URL שברצונך למחוק מהמטמון בכל פעם שאתה מעדכן כל פוסט או עמוד " +"(אחת בכל שורה)" + +#: inc/classes/admin/settings/class-page.php:1212 +msgid "Specify query strings for caching (one per line)" +msgstr "ציין מחרוזות שאילתה עבור הטמנה בזיכרון (אחת לכל שורה)" + +#: inc/classes/admin/settings/class-page.php:1240 +#: inc/deprecated/deprecated.php:1777 +msgid "Database" +msgstr "מסד נתונים" + +#: inc/classes/admin/settings/class-page.php:1241 +msgid "Optimize, reduce bloat" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1250 +msgid "Post Cleanup" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1252 +msgid "" +"Post revisions and drafts will be permanently deleted. Do not use this " +"option if you need to retain revisions or drafts." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1260 +msgid "Comments Cleanup" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1262 +msgid "Spam and trashed comments will be permanently deleted." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1266 +msgid "Transients Cleanup" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1268 +msgid "" +"Transients are temporary options; they are safe to remove. They will be " +"automatically regenerated as your plugins require them." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1272 +msgid "Database Cleanup" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1274 +msgid "Reduces overhead of database tables" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1278 +msgid "Automatic cleanup" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1291 +#, php-format +msgid "%s revision in your database." +msgid_plural "%s revisions in your database." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: inc/classes/admin/settings/class-page.php:1301 +#, php-format +msgid "%s draft in your database." +msgid_plural "%s drafts in your database." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: inc/classes/admin/settings/class-page.php:1311 +#, php-format +msgid "%s trashed post in your database." +msgid_plural "%s trashed posts in your database." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: inc/classes/admin/settings/class-page.php:1321 +#, php-format +msgid "%s spam comment in your database." +msgid_plural "%s spam comments in your database." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: inc/classes/admin/settings/class-page.php:1331 +#, php-format +msgid "%s trashed comment in your database." +msgid_plural "%s trashed comments in your database." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: inc/classes/admin/settings/class-page.php:1341 +#, php-format +msgid "%s expired transient in your database." +msgid_plural "%s expired transients in your database." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: inc/classes/admin/settings/class-page.php:1349 +msgid "All transients" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1351 +#, php-format +msgid "%s transient in your database." +msgid_plural "%s transients in your database." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: inc/classes/admin/settings/class-page.php:1359 +msgid "Optimize Tables" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1361 +#, php-format +msgid "%s table to optimize in your database." +msgid_plural "%s tables to optimize in your database." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: inc/classes/admin/settings/class-page.php:1372 +msgid "Schedule Automatic Cleanup" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1384 +msgid "Frequency" +msgstr "תדירות" + +#: inc/classes/admin/settings/class-page.php:1392 +msgid "Daily" +msgstr "יומי" + +#: inc/classes/admin/settings/class-page.php:1393 +msgid "Weekly" +msgstr "שבועי" + +#: inc/classes/admin/settings/class-page.php:1394 +msgid "Monthly" +msgstr "חודשי" + +#: inc/classes/admin/settings/class-page.php:1414 +msgid "Integrate your CDN" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1426 +msgid "" +"All URLs of static files (CSS, JS, images) will be rewritten to the CNAME(s)" +" you provide." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1428 +#, php-format +msgid "" +"Not required for services like Cloudflare and Sucuri. Please see our " +"available %1$sAdd-ons%2$s." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1469 +#, php-format +msgid "" +"%1$s%2$s Add-on%3$s is currently enabled. Configuration of the CDN settings " +"is not required for %2$s to work on your site." +msgid_plural "" +"%1$s%2$s Add-ons%3$s are currently enabled. Configuration of the CDN " +"settings is not required for %2$s to work on your site." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: inc/classes/admin/settings/class-page.php:1484 +msgid "Enable Content Delivery Network" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1493 +msgid "CDN CNAME(s)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1494 +msgid "Specify the CNAME(s) below" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1501 +msgid "" +"Specify URL(s) of files that should not get served via CDN (one per line)." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1502 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*) " +"wildcards to exclude all files of a given file type located at a specific " +"path." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1525 +#: inc/classes/admin/settings/class-page.php:1533 +msgid "Heartbeat" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1526 +msgid "Control WordPress Heartbeat API" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1534 +msgid "" +"Reducing or disabling the Heartbeat API’s activity can help save some of " +"your server’s resources." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1543 +msgid "Reduce or disable Heartbeat activity" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1544 +msgid "" +"Reducing activity will change Heartbeat frequency from one hit each minute " +"to one hit every 2 minutes." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1544 +msgid "" +"Disabling Heartbeat entirely may break plugins and themes using this API." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1558 +msgid "Do not limit" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1559 +msgid "Reduce activity" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1560 +msgid "Disable" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1568 +msgid "Control Heartbeat" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1577 +msgid "Behavior in backend" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1584 +msgid "Behavior in post editor" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1590 +msgid "Behavior in frontend" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1609 +msgid "Add-ons" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1610 +msgid "Add more features" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1617 +msgid "One-click Rocket Add-ons" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1618 +msgid "" +"One-Click Add-ons are features extending available options without " +"configuration needed. Switch the option \"on\" to enable from this screen." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1628 +msgid "Rocket Add-ons" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1629 +msgid "Rocket Add-ons are complementary features extending available options." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1642 +msgid "Google Tracking" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1648 +msgid "Improve browser caching for Google Analytics" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1650 +#, php-format +msgid "" +"WP Rocket will host these Google scripts locally on your server to help " +"satisfy the PageSpeed recommendation for Leverage browser " +"caching.
      %1$sLearn more%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1665 +msgid "Facebook Pixel" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1671 +msgid "Improve browser caching for Facebook Pixel" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1673 +#, php-format +msgid "" +"WP Rocket will host these Facebook Pixels locally on your server to help " +"satisfy the PageSpeed recommendation for Leverage browser " +"caching.
      %1$sLearn more%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1706 +msgid "Varnish" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1712 +msgid "If Varnish runs on your server, you must activate this add-on." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1714 +#, php-format +msgid "" +"Varnish cache will be purged each time WP Rocket clears its cache to ensure " +"content is always up-to-date.
      %1$sLearn more%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1729 +#: inc/classes/admin/settings/class-page.php:1789 +msgid "Cloudflare" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1735 +msgid "Integrate your Cloudflare account with this add-on." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1736 +msgid "" +"Provide your account email, global API key, and domain to use options such " +"as clearing the Cloudflare cache and enabling optimal settings with WP " +"Rocket." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1748 +msgid "Clear the Sucuri cache when WP Rocket’s cache is cleared." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1751 +msgid "" +"Provide your API key to clear the Sucuri cache when WP Rocket’s cache is " +"cleared." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1759 +#: inc/classes/admin/settings/class-page.php:1907 +msgid "Sucuri" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1765 +msgid "Synchronize Sucuri cache with this add-on." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1805 +msgid "Cloudflare credentials" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1814 +msgid "Cloudflare settings" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1828 +msgctxt "Cloudflare" +msgid "Global API key:" +msgstr "מפתח API גלובלי:" + +#: inc/classes/admin/settings/class-page.php:1829 +msgid "" +"https://support.cloudflare.com/hc/en-us/articles/200167836-Where-do-I-find-" +"my-Cloudflare-API-key-" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1829 +msgctxt "Cloudflare" +msgid "Find your API key" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1841 +msgctxt "Cloudflare" +msgid "Account email" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1850 +msgctxt "Cloudflare" +msgid "Zone ID" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1860 +msgid "Development mode" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1862 +#, php-format +msgid "" +"Temporarily activate development mode on your website. This setting will " +"automatically turn off after 3 hours. %1$sLearn more%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1870 +msgid "Optimal settings" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1871 +msgid "" +"Automatically enhances your Cloudflare configuration for speed, performance " +"grade and compatibility." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1879 +msgid "Relative protocol" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1880 +msgid "" +"Should only be used with Cloudflare's flexible SSL feature. URLs of static " +"files (CSS, JS, images) will be rewritten to use // instead of http:// or " +"https://." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1920 +msgid "Sucuri credentials" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1933 +msgctxt "Sucuri" +msgid "" +"Firewall API key (for plugin), must be in format {32 characters}/{32 " +"characters}:" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1934 +msgctxt "Sucuri" +msgid "Find your API key" +msgstr "" + +#: inc/classes/admin/settings/class-render.php:486 +#: inc/deprecated/deprecated.php:1296 +msgid "Upload file and import settings" +msgstr "העלה קובץ וייבא הגדרות" + +#: inc/classes/admin/settings/class-settings.php:385 +msgid "" +"Sucuri Add-on: The API key for the Sucuri firewall must be in format " +"{32 characters}/{32 characters}." +msgstr "" + +#: inc/classes/admin/settings/class-settings.php:462 +#: inc/deprecated/deprecated.php:1247 +msgid "Settings saved." +msgstr "ההגדרות נשמרו." + +#: inc/classes/class-wp-rocket-requirements-check.php:148 +#, php-format +msgid "To function properly, %1$s %2$s requires at least:" +msgstr "" + +#: inc/classes/class-wp-rocket-requirements-check.php:152 +#, php-format +msgid "" +"PHP %1$s. To use this WP Rocket version, please ask your web host how to " +"upgrade your server to PHP %1$s or higher." +msgstr "" + +#: inc/classes/class-wp-rocket-requirements-check.php:157 +#, php-format +msgid "" +"WordPress %1$s. To use this WP Rocket version, please upgrade WordPress to " +"version %1$s or higher." +msgstr "" + +#: inc/classes/class-wp-rocket-requirements-check.php:160 +msgid "" +"If you are not able to upgrade, you can rollback to the previous version by " +"using the button below." +msgstr "" + +#: inc/classes/class-wp-rocket-requirements-check.php:162 +#: inc/deprecated/deprecated.php:1949 +#, php-format +msgid "Re-install version %s" +msgstr "" + +#: inc/classes/logger/class-logger.php:253 +#: inc/classes/logger/class-logger.php:285 +msgid "The log file does not exist." +msgstr "" + +#: inc/classes/logger/class-logger.php:259 +#: inc/classes/logger/class-logger.php:291 +msgid "The log file could not be read." +msgstr "" + +#: inc/classes/logger/class-logger.php:278 +msgid "The logs are not saved into a file." +msgstr "" + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:88 +#: inc/classes/optimization/CSS/class-critical-css-generation.php:99 +#: inc/classes/optimization/CSS/class-critical-css-generation.php:110 +#: inc/classes/optimization/CSS/class-critical-css-generation.php:120 +#: inc/classes/optimization/CSS/class-critical-css-generation.php:142 +#, php-format +msgid "Critical CSS for %1$s not generated. Error: %2$s" +msgstr "" + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:99 +msgid "The API returned an invalid response code." +msgstr "" + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:110 +msgid "The API returned an empty response." +msgstr "" + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:145 +#, php-format +msgid "The critical CSS content could not be saved as a file in %s." +msgstr "" + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:154 +#, php-format +msgid "Critical CSS for %s generated." +msgstr "" + +#: inc/classes/preload/class-homepage.php:83 +#, php-format +msgid "" +"Preload encountered an error. Could not gather links on %1$s because of the " +"following error: %2$s. %3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-homepage.php:96 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: %2$s. Security measures could be preventing access. " +"%3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-homepage.php:102 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: 404. Please make sure your homepage is accessible in your " +"browser. %2$sLearn more%3$s." +msgstr "" + +#: inc/classes/preload/class-homepage.php:108 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: 500. Please check with your web host about server access. " +"%2$sLearn more%3$s." +msgstr "" + +#: inc/classes/preload/class-homepage.php:114 +#, php-format +msgid "" +"Preload encountered an error. Could not gather links on %1$s because it " +"returned the following response code: %2$s. %3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:138 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not gather links on %1$s because" +" of the following error: %2$s. %3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:153 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: %2$s. Security measures could be preventing access." +" %3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:158 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: 404. Please make sure you entered the correct " +"sitemap URL and it is accessible in your browser. %2$sLearn more%3$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:163 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: 500. Please check with your web host about server " +"access. %2$sLearn more%3$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:168 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not gather links on %1$s because" +" it returned the following response code: %2$s. %3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:184 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not collect links from %1$s " +"because the file is empty. %2$sLearn more%3$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:205 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not collect links from %1$s " +"because of an error during the XML sitemap parsing. %2$sLearn more%3$s." +msgstr "" + +#: inc/classes/subscriber/Optimization/class-critical-css-subscriber.php:138 +#, php-format +msgid "" +"Critical CSS generation is currently running: %1$d of %2$d page types " +"completed. (Refresh this page to view progress)" +msgstr "" + +#: inc/classes/subscriber/Optimization/class-critical-css-subscriber.php:189 +#, php-format +msgid "Critical CSS generation finished for %1$d of %2$d page types." +msgstr "" + +#: inc/classes/subscriber/Optimization/class-critical-css-subscriber.php:203 +msgid "Critical CSS generation encountered one or more errors." +msgstr "" + +#: inc/classes/subscriber/Optimization/class-critical-css-subscriber.php:203 +msgid "Learn more." +msgstr "" + +#: inc/classes/subscriber/Tools/class-cache-dir-size-check-subscriber.php:51 +#: inc/classes/subscriber/class-facebook-tracking-cache-busting-subscriber.php:97 +#: inc/classes/subscriber/class-google-tracking-cache-busting-subscriber.php:154 +#: inc/common/cron.php:33 +msgid "weekly" +msgstr "שבועי" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:148 +msgid "Database optimization process is running" +msgstr "" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:179 +msgid "" +"Database optimization process is complete. Everything was already optimized!" +msgstr "" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:182 +msgid "" +"Database optimization process is complete. List of optimized items below:" +msgstr "" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:190 +#, php-format +msgid "%1$d %2$s optimized." +msgstr "" + +#: inc/classes/subscriber/admin/Settings/class-page-subscriber.php:137 +#: inc/deprecated/deprecated.php:1788 +#: views/settings/page-sections/tools.php:33 +msgid "Tools" +msgstr "כלים" + +#: inc/classes/subscriber/admin/Settings/class-page-subscriber.php:138 +msgid "Import, Export, Rollback" +msgstr "" + +#: inc/classes/subscriber/admin/Settings/class-page-subscriber.php:160 +#: views/settings/page-sections/imagify.php:13 +msgid "Image Optimization" +msgstr "" + +#: inc/classes/subscriber/admin/Settings/class-page-subscriber.php:161 +msgid "Compress your images" +msgstr "" + +#: inc/classes/subscriber/preload/class-preload-subscriber.php:212 +#, php-format +msgid "" +"Preload: WP Rocket has started preloading your website. Go to the %1$sWP " +"Rocket settings%2$s page to track progress." +msgstr "" + +#: inc/classes/subscriber/preload/class-preload-subscriber.php:246 +#, php-format +msgid "" +"Preload: %1$s uncached page has now been preloaded. (refresh to see " +"progress)" +msgid_plural "" +"Preload: %1$s uncached pages have now been preloaded. (refresh to see " +"progress)" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: inc/classes/subscriber/preload/class-preload-subscriber.php:255 +msgid "The following error happened during gathering of the URLs to preload:" +msgid_plural "" +"The following errors happened during gathering of the URLs to preload:" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: inc/classes/subscriber/preload/class-preload-subscriber.php:308 +#, php-format +msgid "Preload complete: %d pages have been cached." +msgstr "" + +#: inc/classes/subscriber/preload/class-sitemap-preload-subscriber.php:117 +#, php-format +msgid "" +"%1$sSimpleXML PHP extension%2$s is not enabled on your server. Please " +"contact your host to enable it before running sitemap-based cache " +"preloading." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:72 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"Please deactivate the following %s option which conflicts with WP Rocket " +"features:" +msgid_plural "" +"Please deactivate the following %s options which conflict with WP Rocket " +"features:" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:145 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sdisable emoji%3$s conflicts with WP Rockets %2$sdisable emoji%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:167 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sremove query strings%3$s conflicts with WP Rocket %2$sremove query " +"strings%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:203 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sGZIP compression%3$s conflicts with WP Rocket %2$sGZIP " +"compression%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:239 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sbrowser caching%3$s conflicts with WP Rocket %2$sbrowser " +"caching%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:271 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$spage caching%3$s conflicts with WP Rocket %2$spage caching%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:305 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sasset optimization%3$s conflicts with WP Rocket %2$sfile " +"optimization%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:123 +#, php-format +msgid "Sucuri cache purge error: %s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:128 +msgid "" +"The Sucuri cache is being cleared. Note that it may take up to two minutes " +"for it to be fully flushed." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:242 +msgid "Sucuri firewall API key was not found." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:251 +msgid "Sucuri firewall API key is invalid." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:303 +msgid "Error when contacting Sucuri firewall API." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:313 +#, php-format +msgid "Error when contacting Sucuri firewall API. Error message was: %s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:324 +msgid "Could not get a response from the Sucuri firewall API." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:335 +msgid "Got an invalid response from the Sucuri firewall API." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:345 +msgid "The Sucuri firewall API returned an unknown error." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:348 +#, php-format +msgid "The Sucuri firewall API returned the following error: %s" +msgid_plural "The Sucuri firewall API returned the following errors: %s" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: inc/classes/traits/trait-updater-api-tools.php:53 +#: inc/deprecated/3.3.php:760 inc/deprecated/3.3.php:769 +#, php-format +msgid "" +"An unexpected error occurred. Something may be wrong with WP-Rocket.me or " +"this server’s configuration. If you continue to have problems, contact support." +msgstr "" + +#: inc/common/admin-bar.php:106 inc/common/admin-bar.php:260 +#: inc/functions/i18n.php:39 inc/functions/i18n.php:48 +msgid "All languages" +msgstr "כל השפות" + +#: inc/common/admin-bar.php:133 +msgid "Clear this post" +msgstr "נקה פוסט זה" + +#: inc/common/admin-bar.php:147 +msgid "Purge this URL" +msgstr "מחק URL זה" + +#: inc/common/admin-bar.php:163 +msgid "Purge OPcache" +msgstr "" + +#: inc/common/admin-bar.php:180 +msgid "Regenerate Critical Path CSS" +msgstr "" + +#: inc/common/admin-bar.php:196 +msgid "Clear Cloudflare cache" +msgstr "" + +#: inc/common/admin-bar.php:217 inc/common/admin-bar.php:272 +#: views/settings/page-sections/dashboard.php:135 +msgid "Preload cache" +msgstr "טען זיכרון מטמון מראש" + +#: inc/common/admin-bar.php:287 views/settings/partials/documentation.php:13 +msgid "Documentation" +msgstr "תיעוד" + +#: inc/common/cron.php:24 +#, php-format +msgid "%s clear" +msgstr "%s נוקה" + +#: inc/common/cron.php:39 +msgid "monthly" +msgstr "חודשי" + +#: inc/common/purge.php:456 +#, php-format +msgid "Cloudflare cache purge error: %s" +msgstr "" + +#: inc/common/purge.php:461 +msgid "Cloudflare cache successfully purged" +msgstr "" + +#: inc/deprecated/3.2.php:51 views/settings/page-sections/imagify.php:35 +msgid "Activate Imagify" +msgstr "" + +#: inc/deprecated/3.2.php:51 +msgid "Install Imagify for Free" +msgstr "" + +#: inc/deprecated/3.2.php:66 +msgid "" +"Speed up your website and boost your SEO by reducing image file sizes " +"without losing quality with Imagify." +msgstr "" + +#: inc/deprecated/3.2.php:71 +msgid "More details" +msgstr "פרטים נוספים" + +#: inc/deprecated/3.2.php:227 +#, php-format +msgid "Sitemap preload: %d pages have been cached." +msgstr "" + +#: inc/deprecated/3.2.php:260 +#, php-format +msgid "" +"Sitemap preload: %d uncached pages have now been preloaded. (refresh to see " +"progress)" +msgstr "" + +#: inc/deprecated/deprecated.php:242 +msgid "JS files with Deferred Loading JavaScript" +msgstr "" + +#: inc/deprecated/deprecated.php:295 +msgid "Add URL" +msgstr "הוסף URL" + +#: inc/deprecated/deprecated.php:1279 views/settings/fields/import-form.php:22 +msgid "" +"Before you can upload your import file, you will need to fix the following " +"error:" +msgstr "לפני שתוכל להעלות את קובץ הייבוא שלך, עליך לפתור את השגיאה הבאה:" + +#: inc/deprecated/deprecated.php:1290 views/settings/fields/import-form.php:35 +#, php-format +msgid "Choose a file from your computer (maximum size: %s)" +msgstr "" + +#: inc/deprecated/deprecated.php:1387 +msgid "Your Cloudflare credentials are valid." +msgstr "" + +#: inc/deprecated/deprecated.php:1391 +msgid "Your Cloudflare credentials are invalid!" +msgstr "" + +#: inc/deprecated/deprecated.php:1455 +msgid "Save and optimize" +msgstr "שמור וייעל" + +#: inc/deprecated/deprecated.php:1455 +#: views/settings/page-sections/database.php:27 +msgid "Optimize" +msgstr "ייעל" + +#: inc/deprecated/deprecated.php:1466 inc/deprecated/deprecated.php:1668 +msgctxt "screen-reader-text" +msgid "Note:" +msgstr "הערה:" + +#: inc/deprecated/deprecated.php:1472 +msgctxt "screen-reader-text" +msgid "Performance tip:" +msgstr "טיפ ביצועים:" + +#: inc/deprecated/deprecated.php:1478 +msgctxt "screen-reader-text" +msgid "Third-party feature detected:" +msgstr "אותרה תכונה צד ג':" + +#: inc/deprecated/deprecated.php:1490 inc/deprecated/deprecated.php:1674 +msgctxt "screen-reader-text" +msgid "Warning:" +msgstr "אזהרה:" + +#: inc/deprecated/deprecated.php:1503 +msgctxt "button text" +msgid "Download settings" +msgstr "הגדרות הורדה" + +#: inc/deprecated/deprecated.php:1533 +msgid "Replace site's hostname with:" +msgstr "החלף את שם מארח האתר ב:" + +#: inc/deprecated/deprecated.php:1552 inc/deprecated/deprecated.php:1589 +#: inc/deprecated/deprecated.php:1617 views/settings/fields/cnames.php:32 +#: views/settings/fields/cnames.php:63 views/settings/fields/cnames.php:93 +msgid "reserved for" +msgstr "שמור עבור" + +#: inc/deprecated/deprecated.php:1554 inc/deprecated/deprecated.php:1591 +#: inc/deprecated/deprecated.php:1619 views/settings/fields/cnames.php:35 +#: views/settings/fields/cnames.php:66 views/settings/fields/cnames.php:96 +msgid "All files" +msgstr "כל הקבצים" + +#: inc/deprecated/deprecated.php:1566 inc/deprecated/deprecated.php:1596 +#: inc/deprecated/deprecated.php:1624 views/settings/fields/cnames.php:47 +#: views/settings/fields/cnames.php:78 views/settings/fields/cnames.php:108 +msgid "Images" +msgstr "תמונות" + +#: inc/deprecated/deprecated.php:1637 views/settings/fields/cnames.php:119 +msgid "Add CNAME" +msgstr "הוסף CNAME" + +#: inc/deprecated/deprecated.php:1708 +msgid "Watch the video" +msgstr "צפה בוידיאו" + +#: inc/deprecated/deprecated.php:1773 +msgid "Basic" +msgstr "בסיסי" + +#: inc/deprecated/deprecated.php:1774 +msgid "Static Files" +msgstr "שדות סטטיים" + +#: inc/deprecated/deprecated.php:1776 +msgid "Advanced" +msgstr "מתקדם" + +#: inc/deprecated/deprecated.php:1946 +#, php-format +msgid "" +"%1$s %2$s requires at least PHP %3$s to function properly. To use this " +"version, please ask your web host how to upgrade your server to PHP %3$s or " +"higher. If you are not able to upgrade, you can rollback to the previous " +"version by using the button below." +msgstr "" + +#: inc/functions/admin.php:23 +msgid "" +"There seems to be an issue validating your license. Please see the error " +"message below." +msgid_plural "" +"There seems to be an issue validating your license. You can see the error " +"messages below." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: inc/functions/admin.php:361 +msgid "Server type:" +msgstr "" + +#: inc/functions/admin.php:370 +msgid "PHP version number:" +msgstr "" + +#: inc/functions/admin.php:379 +msgid "WordPress version number:" +msgstr "" + +#: inc/functions/admin.php:388 +msgid "WordPress multisite:" +msgstr "" + +#: inc/functions/admin.php:397 +msgid "Current theme:" +msgstr "" + +#: inc/functions/admin.php:406 +msgid "Current site language:" +msgstr "" + +#: inc/functions/admin.php:415 +msgid "Active plugins:" +msgstr "" + +#: inc/functions/admin.php:418 +msgid "Plugin names of all active plugins" +msgstr "" + +#: inc/functions/admin.php:424 +msgid "Anonymized WP Rocket settings:" +msgstr "" + +#: inc/functions/admin.php:427 +msgid "Which WP Rocket settings are active" +msgstr "" + +#: inc/functions/cloudflare.php:14 +msgid "" +"Curl functions are disabled, they are required for the Cloudflare Add-on to " +"work correctly." +msgstr "" + +#: inc/functions/cloudflare.php:21 +msgid "Cloudflare Email and API key are not set" +msgstr "" + +#: inc/functions/cloudflare.php:52 +#, php-format +msgid "Missing Cloudflare zone ID. %s could not fix this automatically." +msgstr "" + +#: inc/functions/cloudflare.php:58 +#, php-format +msgid "Read the %1$sdocumentation%2$s for further guidance." +msgstr "" + +#: inc/functions/cloudflare.php:60 +msgid "" +"https://docs.wp-rocket.me/article/18-using-wp-rocket-with-" +"cloudflare/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" + +#: inc/functions/cloudflare.php:100 +msgid "Connection to Cloudflare failed" +msgstr "" + +#: inc/functions/cloudflare.php:122 +msgid "Choose a domain from the list" +msgstr "" + +#: inc/functions/cloudflare.php:135 +msgid "No domain available in your Cloudflare account" +msgstr "" + +#: inc/functions/options.php:580 inc/functions/options.php:619 +msgid "" +"License validation failed. Our server could not resolve the request from " +"your website." +msgstr "" + +#: inc/functions/options.php:580 inc/functions/options.php:619 +#, php-format +msgid "" +"Try clicking %1$sSave Changes%2$s below. If the error persists, follow " +"%3$sthis guide%4$s." +msgstr "" + +#: inc/functions/options.php:596 +msgid "" +"License validation failed. You may be using a nulled version of the plugin. " +"Please do the following:" +msgstr "" + +#: inc/functions/options.php:596 inc/functions/options.php:638 +#, php-format +msgid "Login to your WP Rocket %1$saccount%2$s" +msgstr "" + +#: inc/functions/options.php:596 inc/functions/options.php:638 +msgid "Download the zip file" +msgstr "" + +#: inc/functions/options.php:596 inc/functions/options.php:638 +msgid "Reinstall" +msgstr "" + +#: inc/functions/options.php:596 +#, php-format +msgid "" +"If you do not have a WP Rocket account, please %1$spurchase a license%2$s." +msgstr "" + +#: inc/functions/options.php:604 +msgid "" +"License validation failed. This user account does not exist in our database." +msgstr "" + +#: inc/functions/options.php:604 +msgid "To resolve, please contact support." +msgstr "" + +#: inc/functions/options.php:612 +msgid "License validation failed. This user account is blacklisted." +msgstr "" + +#: inc/functions/options.php:612 +#, php-format +msgid "Please see %1$sthis guide%2$s for more info." +msgstr "" + +#: inc/functions/options.php:632 +msgid "Your license is not valid." +msgstr "הרישון שלך אינו תקף." + +#: inc/functions/options.php:632 +#, php-format +msgid "Make sure you have an active %1$sWP Rocket license%2$s." +msgstr "" + +#: inc/functions/options.php:634 +msgid "You have added as many sites as your current license allows." +msgstr "" + +#: inc/functions/options.php:634 +#, php-format +msgid "" +"Upgrade your %1$saccount%2$s or %3$stransfer your license%2$s to this " +"domain." +msgstr "" + +#: inc/functions/options.php:636 +msgid "This website is not allowed." +msgstr "אתר זה אינו מורשה." + +#: inc/functions/options.php:636 +#, php-format +msgid "Please %1$scontact support%2$s." +msgstr "" + +#: inc/functions/options.php:638 +msgid "This license key is not recognized." +msgstr "" + +#: inc/functions/options.php:638 +#, php-format +msgid "If the issue persists, please %1$scontact support%2$s." +msgstr "" + +#: inc/functions/options.php:644 +#, php-format +msgid "License validation failed: %s" +msgstr "" + +#: inc/vendors/classes/class-imagify-partner.php:531 +msgid "Plugin installed successfully." +msgstr "" + +#: inc/vendors/classes/class-imagify-partner.php:532 +msgid "Sorry, you are not allowed to install plugins on this site." +msgstr "" + +#: inc/vendors/classes/class-imagify-partner.php:533 +msgid "Sorry, you are not allowed to do that." +msgstr "" + +#: inc/vendors/classes/class-imagify-partner.php:534 +msgid "Plugin install failed." +msgstr "" + +#: inc/vendors/classes/class-imagify-partner.php:535 +msgid "Go back" +msgstr "" + +#: views/deactivation-intent/form.php:20 +msgid "Return" +msgstr "" + +#: views/deactivation-intent/form.php:21 +msgid "WP Rocket feedback" +msgstr "" + +#: views/deactivation-intent/form.php:23 +msgid "Close" +msgstr "" + +#: views/deactivation-intent/form.php:27 +msgid "May we have a little info about why you are deactivating?" +msgstr "" + +#: views/deactivation-intent/form.php:31 +msgid "" +"It is a temporary deactivation. I am just debugging an " +"issue." +msgstr "" + +#: views/deactivation-intent/form.php:35 +msgid "The plugin broke my layout or some functionality." +msgstr "" + +#: views/deactivation-intent/form.php:39 +msgid "My PageSpeed or GTMetrix score did not improve." +msgstr "" + +#: views/deactivation-intent/form.php:43 +msgid "I did not notice a difference in loading time." +msgstr "" + +#: views/deactivation-intent/form.php:47 +msgid "The plugin is too complicated to configure." +msgstr "" + +#: views/deactivation-intent/form.php:51 +msgid "My host already has its own caching system." +msgstr "" + +#: views/deactivation-intent/form.php:53 +msgid "What is the name of your web host?" +msgstr "" + +#: views/deactivation-intent/form.php:58 +msgid "Other" +msgstr "" + +#: views/deactivation-intent/form.php:60 +msgid "" +"Let us know why you are deactivating WP Rocket so we can improve the plugin" +msgstr "" + +#: views/deactivation-intent/form.php:68 +msgid "The plugin broke my layout or some functionality" +msgstr "" + +#: views/deactivation-intent/form.php:69 +msgid "" +"This type of issue can usually be fixed by deactivating some options in WP " +"Rocket." +msgstr "" + +#: views/deactivation-intent/form.php:70 +msgid "" +"Click \"Apply Safe Mode\" to quickly disable LazyLoad, File Optimization, " +"Embeds and CDN options. Then check your site to see if the issue has " +"resolved." +msgstr "" + +#: views/deactivation-intent/form.php:72 +msgid "Apply safe mode" +msgstr "" + +#: views/deactivation-intent/form.php:75 +msgid "Safe mode applied." +msgstr "" + +#: views/deactivation-intent/form.php:76 +msgid "Review your site in a private/logged out browser window." +msgstr "" + +#: views/deactivation-intent/form.php:78 +msgid "" +"Is the issue fixed? Now you can reactivate options one at a time to " +"determine which one caused the problem. More info" +msgstr "" + +#: views/deactivation-intent/form.php:81 +msgid "My PageSpeed or GT Metrix score did not improve" +msgstr "" + +#: views/deactivation-intent/form.php:82 +msgid "" +"WP Rocket makes your site faster. The PageSpeed grade or GTMetrix score are " +"not indicators of speed. Neither your real visitors, nor Google will ever " +"see your website’s “grade”. Speed is the only metric that matters for SEO " +"and conversions." +msgstr "" + +#: views/deactivation-intent/form.php:83 +msgid "Yoast, the expert on all things related to SEO for WordPress states:" +msgstr "" + +#: views/deactivation-intent/form.php:84 +msgid "" +"[Google] just looks at how fast your website loads for users, so you don’t " +"have to obsess over that specific score. You have to make sure your website " +"is as fast as you can get it." +msgstr "" + +#: views/deactivation-intent/form.php:87 +msgid "" +"How to measure the load time of your site:
      https" +"://wp-rocket.me/blog/correctly-measure-websites-page-load-time/" +msgstr "" + +#: views/deactivation-intent/form.php:88 +msgid "" +"Why you should not be chasing a PageSpeed score:
      https://wp-rocket.me/blog/the-truth-about-google-" +"pagespeed-insights/" +msgstr "" + +#: views/deactivation-intent/form.php:91 +msgid "I did not notice a difference in loading time" +msgstr "" + +#: views/deactivation-intent/form.php:92 +msgid "" +"Make sure you look at your site while logged out to see the fast, cached " +"pages!" +msgstr "" + +#: views/deactivation-intent/form.php:93 +msgid "" +"The best way to see the improvement WP Rocket provides is to perform speed " +"tests. Follow this guide to correctly measure the load time of your " +"website:
      https://wp-rocket.me/blog/correctly-measure-websites-page-" +"load-time/" +msgstr "" + +#: views/deactivation-intent/form.php:96 +msgid "The plugin is too complicated to configure" +msgstr "" + +#: views/deactivation-intent/form.php:97 +msgid "We are sorry to hear you are finding it difficult to use WP Rocket." +msgstr "" + +#: views/deactivation-intent/form.php:98 +#, php-format +msgid "" +"WP Rocket is the only caching plugin that provides 80% of best practices in " +"speed optimization, by default. That means you do not have to do anything " +"besides activate WP Rocket and your site will already be faster!" +msgstr "" + +#: views/deactivation-intent/form.php:99 +msgid "" +"The additional options are not required for a fast site, they are for fine-" +"tuning." +msgstr "" + +#: views/deactivation-intent/form.php:100 +msgid "" +"To see the benefit WP Rocket is already providing, measure the speed of your" +" site using a tool like Pingdom:
      https" +"://wp-rocket.me/blog/correctly-measure-websites-page-load-time/" +msgstr "" + +#: views/deactivation-intent/form.php:105 +msgid "Send & Deactivate" +msgstr "" + +#: views/deactivation-intent/form.php:106 +msgid "Cancel" +msgstr "ביטול" + +#: views/deactivation-intent/form.php:108 +msgid "Skip & Deactivate" +msgstr "" + +#: views/settings/fields/cache-lifespan.php:26 +msgid "Clear cache after" +msgstr "" + +#: views/settings/fields/cnames.php:49 views/settings/fields/cnames.php:80 +#: views/settings/fields/cnames.php:110 +msgid "CSS & JavaScript" +msgstr "" + +#: views/settings/fields/cnames.php:50 views/settings/fields/cnames.php:81 +#: views/settings/fields/cnames.php:111 +msgid "JavaScript" +msgstr "" + +#: views/settings/fields/cnames.php:51 views/settings/fields/cnames.php:82 +#: views/settings/fields/cnames.php:112 +msgid "CSS" +msgstr "" + +#: views/settings/fields/import-form.php:29 +msgid "Import settings" +msgstr "" + +#: views/settings/fields/one-click-addon.php:39 +#: views/settings/fields/rocket-addon.php:31 +#: views/settings/fields/sliding-checkbox.php:24 views/settings/page.php:54 +msgctxt "Active state of checkbox" +msgid "On" +msgstr "" + +#: views/settings/fields/one-click-addon.php:40 +#: views/settings/fields/rocket-addon.php:32 +#: views/settings/fields/sliding-checkbox.php:25 views/settings/page.php:55 +msgctxt "Inactive state of checkbox" +msgid "Off" +msgstr "" + +#: views/settings/fields/one-click-addon.php:41 +#: views/settings/fields/rocket-addon.php:33 +msgid "Add-on status" +msgstr "" + +#: views/settings/fields/rocket-addon.php:56 +msgid "Modify options" +msgstr "" + +#: views/settings/page-sections/cloudflare.php:26 +msgid "Cloudflare Cache" +msgstr "" + +#: views/settings/page-sections/cloudflare.php:33 +#: views/settings/page-sections/sucuri.php:34 +#, php-format +msgid "Purges cached resources for your website. %s" +msgstr "" + +#: views/settings/page-sections/cloudflare.php:34 +msgid "https://support.cloudflare.com/hc/en-us/articles/200169246" +msgstr "" + +#: views/settings/page-sections/cloudflare.php:34 +#: views/settings/page-sections/sucuri.php:35 +msgid "Learn more" +msgstr "" + +#: views/settings/page-sections/cloudflare.php:40 +msgid "Clear all Cloudflare cache files" +msgstr "" + +#: views/settings/page-sections/dashboard.php:37 +msgid "Congratulations!" +msgstr "" + +#: views/settings/page-sections/dashboard.php:39 +msgid "WP Rocket is now activated and already working for you." +msgstr "" + +#: views/settings/page-sections/dashboard.php:41 +msgid "Your website should be loading faster now!" +msgstr "" + +#: views/settings/page-sections/dashboard.php:43 +#, php-format +msgid "" +"To guarantee fast websites, WP Rocket applies 80% of web performance best " +"practices." +msgstr "" + +#: views/settings/page-sections/dashboard.php:43 +msgid "" +"We also enable options that provide immediate benefits to your website." +msgstr "" + +#: views/settings/page-sections/dashboard.php:44 +msgid "Continue to the options to further optimize your site!" +msgstr "" + +#: views/settings/page-sections/dashboard.php:54 +msgid "My Account" +msgstr "" + +#: views/settings/page-sections/dashboard.php:60 +msgid "Refresh info" +msgstr "" + +#: views/settings/page-sections/dashboard.php:74 +msgid "Expiration Date" +msgstr "" + +#: views/settings/page-sections/dashboard.php:83 +msgid "View my account" +msgstr "" + +#: views/settings/page-sections/dashboard.php:103 +msgid "Quick Actions" +msgstr "" + +#: views/settings/page-sections/dashboard.php:109 +msgid "Remove all cached files" +msgstr "" + +#: views/settings/page-sections/dashboard.php:129 +msgid "Start cache preloading" +msgstr "" + +#: views/settings/page-sections/dashboard.php:147 +msgid "Purge OPCache content" +msgstr "" + +#: views/settings/page-sections/dashboard.php:153 +msgid "Purge OPCache" +msgstr "" + +#: views/settings/page-sections/dashboard.php:164 +#: views/settings/page-sections/dashboard.php:170 +msgid "Regenerate Critical CSS" +msgstr "" + +#: views/settings/page-sections/dashboard.php:186 +msgid "Frequently Asked Questions" +msgstr "" + +#: views/settings/page-sections/dashboard.php:199 +msgid "Still cannot find a solution?" +msgstr "" + +#: views/settings/page-sections/dashboard.php:200 +msgid "" +"Submit a ticket and get help from our friendly and knowledgeable Rocketeers." +msgstr "" + +#: views/settings/page-sections/dashboard.php:208 +msgid "Ask support" +msgstr "" + +#: views/settings/page-sections/database.php:24 +msgid "Backup your database before you run a cleanup!" +msgstr "" + +#: views/settings/page-sections/database.php:25 +msgid "" +"Once a database optimization has been performed, there is no way to undo it." +msgstr "" + +#: views/settings/page-sections/imagify.php:20 +#, php-format +msgid "" +"%1$sWP ROCKET%2$s created %3$sIMAGIFY%4$s %1$sfor best-in-class image " +"optimization.%2$s" +msgstr "" + +#: views/settings/page-sections/imagify.php:23 +msgid "" +"Compress image to make your website faster, all while maintaining image " +"quality." +msgstr "" + +#: views/settings/page-sections/imagify.php:24 +msgid "More on Imagify:" +msgstr "" + +#: views/settings/page-sections/imagify.php:26 +msgid "Imagify Plugin Page" +msgstr "" + +#: views/settings/page-sections/imagify.php:27 +msgid "Imagify Website" +msgstr "" + +#: views/settings/page-sections/imagify.php:28 +msgid "Review of Image Compression Plugins" +msgstr "" + +#: views/settings/page-sections/imagify.php:37 +msgid "Install Imagify" +msgstr "" + +#: views/settings/page-sections/license.php:21 +msgid "WP Rocket was not able to automatically validate your license." +msgstr "" + +#: views/settings/page-sections/license.php:26 +#, php-format +msgid "" +"Follow this tutorial, or contact support to get the engine started." +msgstr "" + +#: views/settings/page-sections/license.php:26 +msgid "" +"https://docs.wp-rocket.me/article/100-resolving-problems-with-license-" +"validation/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" + +#: views/settings/page-sections/sucuri.php:41 +msgid "Clear all Sucuri cache files" +msgstr "" + +#: views/settings/page-sections/tools.php:20 +#, php-format +msgid "Files size: %1$s. Number of entries: %2$s." +msgstr "" + +#: views/settings/page-sections/tools.php:23 +#, php-format +msgid "%1$sDownload the file%2$s." +msgstr "" + +#: views/settings/page-sections/tools.php:26 +#, php-format +msgid "%1$sDelete the file%2$s." +msgstr "" + +#: views/settings/page-sections/tools.php:37 +msgid "Export settings" +msgstr "" + +#: views/settings/page-sections/tools.php:38 +msgid "Download a backup file of your settings" +msgstr "" + +#: views/settings/page-sections/tools.php:43 +msgid "Download settings" +msgstr "הגדרות הורדה" + +#: views/settings/page-sections/tools.php:56 +msgid "Rollback" +msgstr "" + +#: views/settings/page-sections/tools.php:60 +#, php-format +msgid "Has version %s caused an issue on your website?" +msgstr "" + +#: views/settings/page-sections/tools.php:62 +msgid "" +"You can rollback to the previous major version here.
      Then send us a " +"support request." +msgstr "" + +#: views/settings/page-sections/tools.php:69 +#, php-format +msgid "Reinstall version %s" +msgstr "" + +#: views/settings/page-sections/tools.php:85 +msgid "Debug mode" +msgstr "" + +#: views/settings/page-sections/tools.php:90 +msgid "Create a debug log file." +msgstr "" + +#: views/settings/page.php:16 +msgid "WP Rocket Settings" +msgstr "" + +#: views/settings/page.php:30 +#, php-format +msgid "version %s" +msgstr "" + +#: views/settings/page.php:40 +msgid "Save Changes" +msgstr "שמור שינויים" + +#: views/settings/page.php:56 +msgid "Show Sidebar" +msgstr "" + +#: views/settings/page.php:75 +msgid "Thanks for choosing to participate in the WP Rocket beta program!" +msgstr "" + +#: views/settings/page.php:76 +msgid "" +"A beta version is usually one that has new features and improvements, but we" +" want to test it a little more before full launch." +msgstr "" + +#: views/settings/page.php:77 +msgid "" +"We’d love it if you took our beta versions for a ride, but please keep in " +"mind that it might be less stable than our other releases. Don’t worry, you " +"can switch back to a full release version at any time." +msgstr "" + +#: views/settings/page.php:78 +msgid "" +"Your mission: please send all feedback about our beta versions, including " +"bug reports, to support@wp-rocket.me" +msgstr "" + +#: views/settings/page.php:80 +msgid "If you don’t want to join the beta program, simply close this window." +msgstr "" + +#: views/settings/page.php:82 +msgid "Activate Rocket Tester" +msgstr "" + +#: views/settings/page.php:93 +msgid "" +"Below is a detailed view of all data WP Rocket will collect if " +"granted permission." +msgstr "" + +#: views/settings/page.php:96 +msgid "" +"WP Rocket will never transmit any domain names or email addresses (except " +"for license validation), IP addresses, or third-party API keys." +msgstr "" + +#: views/settings/page.php:98 +msgid "Activate Rocket analytics" +msgstr "" + +#: views/settings/partials/documentation.php:14 +msgid "It is a great starting point to fix some of the most common issues." +msgstr "זוהי נקודת התחלה מצוינת כדי לתקן חלק מהבעיות הנפוצות ביותר." + +#: views/settings/partials/documentation.php:18 +msgid "Read the documentation" +msgstr "קרא/י את התיעוד" + +#: views/settings/partials/sidebar.php:11 +msgid "How to correctly measure your website’s loading time" +msgstr "כיצד נכון למדוד בצורה נכונה את זמן הטעינה של האתר שלך" + +#: views/settings/partials/sidebar.php:13 +msgid "" +"Learn how to use best practices to correctly measure your site's " +"performance." +msgstr "למד/י כיצד להשתמש בשיטות מומלצות כדי לאמוד כראוי את ביצועי האתר שלך." + +#: views/settings/partials/sidebar.php:14 +msgid "" +"https://wp-rocket.me/blog/correctly-measure-websites-page-load-" +"time/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://wp-rocket.me/blog/correctly-measure-websites-page-load-" +"time/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: views/settings/partials/sidebar.php:14 +msgid "Read our guide" +msgstr "קרא/י את המדריך שלנו" + +#: views/settings/partials/sidebar.php:17 +msgid "Why Google PageSpeed grade should not matter" +msgstr "מדוע הציון של Google PageSpeed לא משנה" + +#: views/settings/partials/sidebar.php:18 +msgid "" +"https://wp-rocket.me/blog/the-truth-about-google-pagespeed-" +"insights/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://wp-rocket.me/blog/the-truth-about-google-pagespeed-" +"insights/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: views/settings/partials/sidebar.php:18 +msgid "Read more" +msgstr "קרא/י עוד" + +#: views/settings/partials/sidebar.php:23 +msgid "You have not activated logged-in user cache." +msgstr "" + +#: views/settings/partials/sidebar.php:24 +msgid "" +"Use a private browser to check your website's speed and visual appearance." +msgstr "" + +#: views/settings/sections/addons-container.php:23 +#: views/settings/sections/fields-container.php:27 +msgid "Need Help?" +msgstr "זקוקים לעזרה?" diff --git a/wp-content/plugins/wp-rocket/languages/rocket-hr.mo b/wp-content/plugins/wp-rocket/languages/rocket-hr.mo new file mode 100644 index 0000000000000000000000000000000000000000..9f0fef52e689fd136e354f538a60a0344e1bd509 GIT binary patch literal 102598 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, 2019 +# Ivica Delic , 2020 +# Borko Livić , 2020 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: WP Rocket 3.4\n" +"Report-Msgid-Bugs-To: http://wp-rocket.me/\n" +"POT-Creation-Date: 2020-08-25 17:35-0400\n" +"PO-Revision-Date: 2019-08-26 15:14+0000\n" +"Last-Translator: Borko Livić , 2020\n" +"Language-Team: Croatian (https://www.transifex.com/wp-media/teams/18133/hr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: hr\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Poedit 1.8.11\n" +"X-Poedit-Basepath: ..\n" +"X-Poedit-KeywordsList: __;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c\n" +"X-Poedit-SearchPath-0: .\n" +"X-Poedit-SearchPathExcluded-0: assets\n" +"X-Poedit-SearchPathExcluded-1: src\n" +"X-Poedit-SearchPathExcluded-2: vendor\n" +"X-Poedit-SearchPathExcluded-3: node_modules\n" +"X-Poedit-SearchPathExcluded-4: tests\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Textdomain-Support: yes\n" + +#: inc/3rd-party/hosting/flywheel.php:18 inc/3rd-party/hosting/godaddy.php:18 +#: inc/3rd-party/hosting/pressidium.php:18 +#: inc/3rd-party/hosting/wp-serveur.php:27 +#: inc/ThirdParty/Hostings/Cloudways.php:90 +#: inc/ThirdParty/Hostings/O2Switch.php:49 +#: inc/ThirdParty/Hostings/Savvii.php:50 +#: inc/ThirdParty/Hostings/WPEngine.php:47 inc/deprecated/3.6.php:698 +#: inc/deprecated/3.6.php:1005 +#, php-format +msgid "" +"Your site is hosted on %s, we have enabled Varnish auto-purge for " +"compatibility." +msgstr "" +"Vaša web stranica je hostana kod %s. Radi kompatibilnosti smo uključili " +"automatsko čišćenje Varnisha." + +#: inc/3rd-party/hosting/kinsta.php:161 +#, php-format +msgid "" +"Your installation seems to be missing core Kinsta files managing Cache " +"clearing and CDN, which will prevent your Kinsta installation and WP Rocket " +"from working correctly. Please get in touch with Kinsta support through your" +" %1$sMyKinsta%2$s account to resolve this issue." +msgstr "" +"Čini se da vašoj instalaciji nedostaju Kinsta datoteke koje upravljaju " +"čišćenjem Cachea i CDN-om, što će spriječiti ispravno postavljanje vaše " +"Kinsta instalacije i WP Rocketa. Molimo kontaktirajte Kinsta podršku putem " +"vašeg %1$sMyKinsta%2$s računa kako biste riješili ovaj problem." + +#: inc/3rd-party/plugins/jetpack.php:86 +msgid "Jetpack XML Sitemaps" +msgstr "Jetpack XML mape web-lokacije" + +#: inc/3rd-party/plugins/jetpack.php:88 +msgid "Preload the sitemap from the Jetpack plugin" +msgstr "Unaprijed učitaj mapu web-lokacije od Jetpacka" + +#: inc/3rd-party/plugins/jetpack.php:96 +#: inc/3rd-party/plugins/seo/all-in-one-seo-pack.php:89 +#: inc/3rd-party/plugins/seo/rank-math-seo.php:34 +#: inc/3rd-party/plugins/seo/seopress.php:86 +#: inc/3rd-party/plugins/seo/the-seo-framework.php:144 +#: inc/3rd-party/plugins/seo/yoast-seo.php:87 +#, php-format +msgid "" +"We automatically detected the sitemap generated by the %s plugin. You can " +"check the option to preload it." +msgstr "" +"Automatski detektiramo mapu web-lokacije generiranu pomoću%s. Možete " +"označiti opciju da ga se predučita." + +#: inc/3rd-party/plugins/seo/all-in-one-seo-pack.php:87 +msgid "All in One SEO XML sitemap" +msgstr "All in One SEO XML mapa sajta" + +#: inc/3rd-party/plugins/seo/rank-math-seo.php:32 +msgid "Rank Math XML sitemap" +msgstr "Rank Math XML mapa web-lokacije" + +#: inc/3rd-party/plugins/seo/seopress.php:84 +msgid "SEOPress XML sitemap" +msgstr "SEOPress XML mapa weba" + +#: inc/3rd-party/plugins/seo/the-seo-framework.php:142 +msgid "The SEO Framework XML sitemap" +msgstr "SEO Framework XML mapa web-lokacije" + +#: inc/3rd-party/plugins/seo/yoast-seo.php:85 +msgid "Yoast SEO XML sitemap" +msgstr "Yoast SEO XML mapa sajta" + +#: inc/Addon/Cloudflare/APIClient.php:309 +msgid "Ops Cloudflare did not provide any reply. Please try again later." +msgstr "Cloudflare nije dao nikakav odgovor. Molimo pokušajte ponovo kasnije." + +#: inc/Addon/Cloudflare/APIClient.php:318 inc/deprecated/3.5.php:122 +#: inc/deprecated/3.5.php:179 +msgid "Incorrect Cloudflare email address or API key." +msgstr "Netočna Cloudflare email adresa ili API ključ." + +#: inc/Addon/Cloudflare/APIClient.php:322 +#: inc/Addon/Cloudflare/APIClient.php:335 +#: inc/Addon/Cloudflare/Cloudflare.php:112 +#: inc/Addon/Cloudflare/Cloudflare.php:144 +#: inc/classes/subscriber/Tools/class-detect-missing-tags-subscriber.php:157 +#: inc/deprecated/3.5.php:102 inc/deprecated/3.5.php:126 +#: inc/deprecated/3.5.php:139 inc/deprecated/3.5.php:167 +#: inc/deprecated/3.5.php:183 +#, php-format +msgid "Read the %1$sdocumentation%2$s for further guidance." +msgstr "Pročitajte %1$sdokumentaciju%2$s za daljnje upute." + +#: inc/Addon/Cloudflare/APIClient.php:324 +#: inc/Addon/Cloudflare/APIClient.php:337 +#: inc/Addon/Cloudflare/Cloudflare.php:101 +#: inc/Addon/Cloudflare/Cloudflare.php:114 +#: inc/Addon/Cloudflare/Cloudflare.php:146 inc/deprecated/3.5.php:91 +#: inc/deprecated/3.5.php:104 inc/deprecated/3.5.php:128 +#: inc/deprecated/3.5.php:141 inc/deprecated/3.5.php:169 +#: inc/deprecated/3.5.php:185 inc/deprecated/3.5.php:218 +msgid "" +"https://docs.wp-rocket.me/article/18-using-wp-rocket-with-" +"cloudflare/?utm_source=wp_plugin&utm_medium=wp_rocket#add-on" +msgstr "" +"https://docs.wp-rocket.me/article/18-using-wp-rocket-with-" +"cloudflare/?utm_source=wp_plugin&utm_medium=wp_rocket#add-on" + +#: inc/Addon/Cloudflare/APIClient.php:331 inc/deprecated/3.5.php:135 +msgid "Incorrect Cloudflare Zone ID." +msgstr "Netočan Cloudflare Zone ID." + +#: inc/Addon/Cloudflare/Cloudflare.php:99 +#, php-format +msgid "" +"Cloudflare email and/or API key are not set. Read the %1$sdocumentation%2$s " +"for further guidance." +msgstr "" +"Cloudflare email i/ili API ključ nisu postavljeni. Pročitajte " +"%1$sdokumentaciju%2$s za više uputa." + +#: inc/Addon/Cloudflare/Cloudflare.php:108 inc/deprecated/3.5.php:98 +msgid "Missing Cloudflare Zone ID." +msgstr "Nedostaje Cloudflare Zone ID." + +#: inc/Addon/Cloudflare/Cloudflare.php:140 inc/deprecated/3.5.php:163 +msgid "It looks like your domain is not set up on Cloudflare." +msgstr "Izgleda da vaša domena nije postavljena na Cloudflare-u." + +#: inc/Addon/Cloudflare/Subscriber.php:215 inc/deprecated/3.5.php:597 +#, php-format +msgid "WP Rocket: %s" +msgstr "WP Rocket: %s" + +#: inc/Addon/Cloudflare/Subscriber.php:220 inc/deprecated/3.5.php:602 +msgid "WP Rocket: Cloudflare cache successfully purged." +msgstr "WP Rocket: Cloudflare cache je uspješno očišćen." + +#: inc/Addon/Cloudflare/Subscriber.php:364 +#: inc/Addon/Cloudflare/Subscriber.php:370 +#: inc/Addon/Cloudflare/Subscriber.php:390 +#: inc/Addon/Cloudflare/Subscriber.php:401 +#: inc/Addon/Cloudflare/Subscriber.php:420 +#: inc/Addon/Cloudflare/Subscriber.php:426 +#: inc/Addon/Cloudflare/Subscriber.php:445 +#: inc/Addon/Cloudflare/Subscriber.php:451 +#: inc/Addon/Cloudflare/Subscriber.php:470 +#: inc/Addon/Cloudflare/Subscriber.php:476 +#: inc/Addon/Cloudflare/Subscriber.php:558 inc/admin/options.php:166 +#: inc/classes/subscriber/Tools/class-detect-missing-tags-subscriber.php:148 +msgid "WP Rocket: " +msgstr "WP Rocket: " + +#: inc/Addon/Cloudflare/Subscriber.php:364 +#, php-format +msgid "Cloudflare development mode error: %s" +msgstr "Greška u Cloudflare razvojnom modu: %s" + +#: inc/Addon/Cloudflare/Subscriber.php:370 +#, php-format +msgid "Cloudflare development mode %s" +msgstr "Cloudflare razvojni mod%s" + +#: inc/Addon/Cloudflare/Subscriber.php:390 +#, php-format +msgid "Cloudflare cache level error: %s" +msgstr "Greška u Cloudflare cache nivou: %s" + +#: inc/Addon/Cloudflare/Subscriber.php:395 +msgctxt "Cloudflare caching level" +msgid "Standard" +msgstr "Standardno" + +#: inc/Addon/Cloudflare/Subscriber.php:401 +#, php-format +msgid "Cloudflare cache level set to %s" +msgstr "Cloudflare cache nivo stavljen na %s" + +#: inc/Addon/Cloudflare/Subscriber.php:420 +#, php-format +msgid "Cloudflare minification error: %s" +msgstr "Greška u Cloudflare minifikaciji:%s" + +#: inc/Addon/Cloudflare/Subscriber.php:426 +#, php-format +msgid "Cloudflare minification %s" +msgstr "Cloudflare minifikacija%s" + +#: inc/Addon/Cloudflare/Subscriber.php:445 +#, php-format +msgid "Cloudflare rocket loader error: %s" +msgstr "Greška Cloudflare rocket učitavača:%s" + +#: inc/Addon/Cloudflare/Subscriber.php:451 +#, php-format +msgid "Cloudflare rocket loader %s" +msgstr "Cloudflare rocket učitavač:%s" + +#: inc/Addon/Cloudflare/Subscriber.php:470 +#, php-format +msgid "Cloudflare browser cache error: %s" +msgstr "Cache greška Cloudflare pretraživača :%s" + +#: inc/Addon/Cloudflare/Subscriber.php:476 +#, php-format +msgid "Cloudflare browser cache set to %s seconds" +msgstr "Cloudflare cache pretraživača stavljen na %ssekundu" + +#: inc/Addon/FacebookTracking/Subscriber.php:87 +#: inc/Addon/GoogleTracking/Subscriber.php:132 +#: inc/Engine/HealthCheck/CacheDirSizeCheck.php:88 +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:92 +msgid "weekly" +msgstr "tjedno" + +#: inc/Engine/Admin/Settings/Page.php:171 +msgid "Save Changes" +msgstr "Spremi Promjene" + +#: inc/Engine/Admin/Settings/Page.php:171 +msgid "Validate License" +msgstr "Potvrdite licencu" + +#: inc/Engine/Admin/Settings/Page.php:236 +#: inc/Engine/Admin/Settings/Page.php:237 +msgid "Unavailable" +msgstr "Nedostupno" + +#: inc/Engine/Admin/Settings/Page.php:341 inc/deprecated/deprecated.php:1789 +#: views/settings/page-sections/dashboard.php:73 +msgid "License" +msgstr "Licenca" + +#: inc/Engine/Admin/Settings/Page.php:358 +msgid "API key" +msgstr "API ključ" + +#: inc/Engine/Admin/Settings/Page.php:373 +msgid "Email address" +msgstr "Email adresa" + +#: inc/Engine/Admin/Settings/Page.php:399 +msgid "Dashboard" +msgstr "Nadzorna ploča" + +#: inc/Engine/Admin/Settings/Page.php:400 +msgid "Get help, account info" +msgstr "Zatražite pomoć, informacije o računu" + +#: inc/Engine/Admin/Settings/Page.php:409 +msgid "My Status" +msgstr "Moj status" + +#: inc/Engine/Admin/Settings/Page.php:419 views/settings/page.php:72 +msgid "Rocket Tester" +msgstr "Rocket Tester" + +#: inc/Engine/Admin/Settings/Page.php:420 +msgid "I am part of the WP Rocket Beta Testing Program." +msgstr "Ja sam učesnik programa testiranja WP Rocket Beta." + +#: inc/Engine/Admin/Settings/Page.php:428 views/settings/page.php:90 +msgid "Rocket Analytics" +msgstr "Rocket Analitika" + +#: inc/Engine/Admin/Settings/Page.php:430 +#, php-format +msgid "" +"I agree to share anonymous data with the development team to help improve WP" +" Rocket. %1$sWhat info will we collect?%2$s" +msgstr "" +"Slažem se da dijelim anonimne podatke s razvojnim timom kako bih pomogao " +"poboljšati WP Rocket. %1$sKoje ćemo podatke prikupiti?%2$s" + +#: inc/Engine/Admin/Settings/Page.php:454 inc/Engine/Cache/WPCache.php:347 +msgid "Cache" +msgstr "Cache" + +#: inc/Engine/Admin/Settings/Page.php:455 +msgid "Basic cache options" +msgstr "Osnovne mogućnosti cachea" + +#: inc/Engine/Admin/Settings/Page.php:462 +msgid "Mobile Cache" +msgstr "Mobilni Cache" + +#: inc/Engine/Admin/Settings/Page.php:464 +msgid "Speed up your site for mobile visitors." +msgstr "" +"Ubrzajte svoju web-lokaciju za posjetitelje koji koriste mobilne uređaje." + +#: inc/Engine/Admin/Settings/Page.php:469 +msgid "" +"We detected you use a plugin that requires a separate cache for mobile, and " +"automatically enabled this option for compatibility." +msgstr "" +"Otkrili smo da koristite dodatak koji zahtijeva zasebni cache za mobilne " +"uređaje i automatski smo uključili tu mogućnost radi bolje kompatibilnosti." + +#: inc/Engine/Admin/Settings/Page.php:473 +msgid "User Cache" +msgstr "Cache korisnika" + +#: inc/Engine/Admin/Settings/Page.php:476 +#, php-format +msgid "" +"%1$sUser cache%2$s is great when you have user-specific or restricted " +"content on your website." +msgstr "" +"%1$sCache korisnika%2$s je odličan kada prikazujete sadržaj isključivo " +"određenim korisnicima ili imate ograničenu vidljivost sadržaja na vašoj web-" +"lokaciji." + +#: inc/Engine/Admin/Settings/Page.php:484 +msgid "Cache Lifespan" +msgstr "Vijek trajanja cachea" + +#: inc/Engine/Admin/Settings/Page.php:487 +#, php-format +msgid "" +"Cache files older than the specified lifespan will be deleted.
      Enable " +"%1$spreloading%2$s for the cache to be rebuilt automatically after lifespan " +"expiration." +msgstr "" +"Cache datoteke starije od navedenog životnog vijeka cache-a će biti " +"uklonjene.
      Aktivirajte %1$spreloading%2$s kako bi se cache obnovio nakon " +"isteka." + +#: inc/Engine/Admin/Settings/Page.php:501 +msgid "Enable caching for logged-in WordPress users" +msgstr "Omogući caching za logirane WordPress korisnike." + +#: inc/Engine/Admin/Settings/Page.php:509 +msgid "Enable caching for mobile devices" +msgstr "Omogućite cachiranje na mobilnim uređajima" + +#: inc/Engine/Admin/Settings/Page.php:524 +msgid "Separate cache files for mobile devices" +msgstr "Odvojite cache datoteke za mobilne uređaje" + +#: inc/Engine/Admin/Settings/Page.php:526 +#, php-format +msgid "" +"Most modern themes are responsive and should work without a separate cache. " +"Enable this only if you have a dedicated mobile theme or plugin. %1$sMore " +"info%2$s" +msgstr "" +"Većina modernih tema je responzivna i trebala bi raditi bez zasebnog cachea." +" Omogućite ovo samo ako imate dediciranu mobilnu temu ili dodatak. %1$sViše " +"informacija%2$s" + +#: inc/Engine/Admin/Settings/Page.php:542 +msgid "" +"Specify time after which the global cache is cleared
      (0 = unlimited )" +msgstr "" +"Navedite vrijeme nakon kojeg će se izbrisati globalni cache
      (0 = " +"neograničeno )" + +#: inc/Engine/Admin/Settings/Page.php:544 +#, php-format +msgid "" +"Reduce lifespan to 10 hours or less if you notice issues that seem to appear" +" periodically. %1$sWhy?%2$s" +msgstr "" +"Smanjite vijek trajanja na 10 sati ili manje ako primijetite probleme koji " +"se povremeno pojavljuju. %1$sZašto?%2$s" + +#: inc/Engine/Admin/Settings/Page.php:550 +msgid "Minutes" +msgstr "Minuta" + +#: inc/Engine/Admin/Settings/Page.php:551 +msgid "Hours" +msgstr "Sati" + +#: inc/Engine/Admin/Settings/Page.php:552 +msgid "Days" +msgstr "Dana" + +#: inc/Engine/Admin/Settings/Page.php:577 +#: views/settings/page-sections/tutorials.php:22 +msgid "File Optimization" +msgstr "Optimizacija datoteka" + +#: inc/Engine/Admin/Settings/Page.php:578 +msgid "Optimize CSS & JS" +msgstr "Optimiziraj CSS i JS" + +#: inc/Engine/Admin/Settings/Page.php:585 +msgid "CSS Files" +msgstr "CSS datoteke" + +#: inc/Engine/Admin/Settings/Page.php:592 +#: inc/Engine/Admin/Settings/Page.php:602 +#, php-format +msgid "" +"%1$s Minification is currently activated in Autoptimize. If" +" you want to use %2$s’s minification, disable those options in Autoptimize." +msgstr "" +"%1$s jMinfikacija je trenutno aktivirana pomoću dodatka " +"Autoptimize. Ako želite koristiti %2$sminifikaciju, " +"onemogućite te opcije u postavkama Autoptimize-a." + +#: inc/Engine/Admin/Settings/Page.php:595 +msgid "JavaScript Files" +msgstr "JavaScript datoteke" + +#: inc/Engine/Admin/Settings/Page.php:611 +msgid "Minify CSS files" +msgstr "Minificiraj CSS datoteke" + +#: inc/Engine/Admin/Settings/Page.php:612 +msgid "Minify CSS removes whitespace and comments to reduce the file size." +msgstr "" +"Minificiranje CSS-a uklanja razmake i komentare kako bi se smanjila " +"veličina datoteke." + +#: inc/Engine/Admin/Settings/Page.php:625 +#: inc/Engine/Admin/Settings/Page.php:647 +#: inc/Engine/Admin/Settings/Page.php:729 +#: inc/Engine/Admin/Settings/Page.php:751 +msgid "This could break things!" +msgstr "Ovo bi moglo poremetiti izgled/funkcionalnost vaše web-lokacije!" + +#: inc/Engine/Admin/Settings/Page.php:626 +#: inc/Engine/Admin/Settings/Page.php:648 +#: inc/Engine/Admin/Settings/Page.php:730 +#: inc/Engine/Admin/Settings/Page.php:752 +msgid "" +"If you notice any errors on your website after having activated this " +"setting, just deactivate it again, and your site will be back to normal." +msgstr "" +"Ako na web-lokaciji primijetite pogreške nakon što ste aktivirali ovu " +"postavku, samo je ponovno deaktivirajte, a web-lokacija će se vratiti u " +"normalu." + +#: inc/Engine/Admin/Settings/Page.php:627 +msgid "Activate minify CSS" +msgstr "Aktiviraj minifikaciju CSS-a" + +#: inc/Engine/Admin/Settings/Page.php:632 +msgid "Combine CSS files (Enable Minify CSS files to select)" +msgstr "" +"Kombiniraj CSS datoteke (Omogući minifikaciju CSS datoteka za " +"odabir)" + +#: inc/Engine/Admin/Settings/Page.php:634 +#, php-format +msgid "" +"Combine CSS merges all your files into 1, reducing HTTP requests. Not " +"recommended if your site uses HTTP/2. %1$sMore info%2$s" +msgstr "" +"Kombiniranje CSS-a spaja sve vaše datoteke u jednu, smanjujući HTTP " +"zahtjeve. Ne preporučuje se ako web-lokacija koristi HTTP/2. %1$sViše " +"informacija%2$s" + +#: inc/Engine/Admin/Settings/Page.php:649 +msgid "Activate combine CSS" +msgstr "Aktiviraj kombiniranje CSS-a" + +#: inc/Engine/Admin/Settings/Page.php:654 inc/admin/options.php:125 +msgid "Excluded CSS Files" +msgstr "Izuzete CSS datoteke" + +#: inc/Engine/Admin/Settings/Page.php:655 +msgid "" +"Specify URLs of CSS files to be excluded from minification and concatenation" +" (one per line)." +msgstr "" +"Navedite URL-ove CSS datoteka koje treba isključiti iz minifikacije i " +"kombiniranja (jedan URL po retku)." + +#: inc/Engine/Admin/Settings/Page.php:656 +msgid "" +"Internal: The domain part of the URL will be stripped " +"automatically. Use (.*).css wildcards to exclude all CSS files located at a " +"specific path." +msgstr "" +"Interno: Dio domene URL-a automatski će biti automatski " +"uklonjen. Koristite (.*).css zamjenske znakove (wildcard) da biste " +"isključili sve CSS datoteke koje se nalaze na određenoj putanji." + +#: inc/Engine/Admin/Settings/Page.php:658 +#, php-format +msgid "" +"3rd Party: Use either the full URL path or only the domain " +"name, to exclude external CSS. %1$sMore info%2$s" +msgstr "" +"CSS treće strane: Za isključivanje vanjskog CSS-a " +"upotrijebite ili punu putanju URL-a ili samo naziv domene. %1$sViše " +"informacija%2$s" + +#: inc/Engine/Admin/Settings/Page.php:671 +msgid "Optimize CSS delivery" +msgstr "Optimiziraj isporuku CSS-a" + +#: inc/Engine/Admin/Settings/Page.php:678 +#, php-format +msgctxt "WP Critical CSS compatibility" +msgid "" +"Optimize CSS Delivery is currently handled by the %1$s plugin. If you want " +"to use WP Rocket’s Optimize CSS Delivery option, disable the %1$s plugin." +msgstr "" +"Optimizacijom isporuke CSS-a trenutno upravlja %1$s . Ako želite koristiti " +"opciju Optimiziraj isporuku CSS-a WP Rocketa, onemogućite plugin %1$s ." + +#: inc/Engine/Admin/Settings/Page.php:680 +#, php-format +msgid "" +"Optimize CSS delivery eliminates render-blocking CSS on your website for " +"faster perceived load time. %1$sMore info%2$s" +msgstr "" +"Optimiziranje isporuke CSS-a eliminira CSS-ove koji blokiraju prikaz na " +"vašoj web-lokaciji radi doživljavanja bržeg vremena učitavanja. %1$sViše " +"informacija%2$s" + +#: inc/Engine/Admin/Settings/Page.php:691 +msgid "Fallback critical CSS" +msgstr "Zamjenski ključni CSS" + +#: inc/Engine/Admin/Settings/Page.php:696 +#, php-format +msgid "" +"Provides a fallback if auto-generated critical path CSS is incomplete. " +"%1$sMore info%2$s" +msgstr "" +"Pruža zamjenu ako je automatski generiran CSS ključne putanje nepotpun. " +"%1$sViše informacija%2$s" + +#: inc/Engine/Admin/Settings/Page.php:705 +msgid "Remove jQuery Migrate" +msgstr "Ukloni jQuery Migrate" + +#: inc/Engine/Admin/Settings/Page.php:707 +#, php-format +msgid "" +"Remove jQuery Migrate eliminates a JS file and can improve load time. " +"%1$sMore info%2$s" +msgstr "" +"Uklanjanje jQuery Migratea uklanja JS datoteku i može poboljšati vrijeme " +"učitavanja. %1$sViše informacija%2$s" + +#: inc/Engine/Admin/Settings/Page.php:715 +msgid "Minify JavaScript files" +msgstr "Minificiraj JavaScript datoteke" + +#: inc/Engine/Admin/Settings/Page.php:716 +msgid "" +"Minify JavaScript removes whitespace and comments to reduce the file size." +msgstr "" +"Minficiranje JavaScripta uklanja razmake i komentare kako bi se smanjila " +"veličina datoteke." + +#: inc/Engine/Admin/Settings/Page.php:731 +msgid "Activate minify JavaScript" +msgstr "Aktiviraj minifikaciju JavaScripta" + +#: inc/Engine/Admin/Settings/Page.php:736 +msgid "" +"Combine JavaScript files (Enable Minify JavaScript files to select)" +msgstr "" +"Kombiniraj JavaScript datoteke (Omogući minifikaciju JavaScript datoteka" +" za odabir)" + +#: inc/Engine/Admin/Settings/Page.php:738 +#, php-format +msgid "" +"Combine JavaScript files combines your site’s internal, 3rd party and inline" +" JS reducing HTTP requests. Not recommended if your site uses HTTP/2. " +"%1$sMore info%2$s" +msgstr "" +"Kombiniranje JavaScript datoteka kombinira JS vaše web-lokacije, JS treće " +"strane i inline JS smanjujući HTTP zahtjeve.. Ne preporučuje se ako web-" +"lokacija koristi HTTP/2. %1$sViše informacija%2$s" + +#: inc/Engine/Admin/Settings/Page.php:753 +msgid "Activate combine JavaScript" +msgstr "Aktiviraj kombiniranje JavaScripta" + +#: inc/Engine/Admin/Settings/Page.php:758 inc/admin/options.php:126 +msgid "Excluded Inline JavaScript" +msgstr "Izuzet Inline JavaScript" + +#: inc/Engine/Admin/Settings/Page.php:760 +#, php-format +msgid "" +"Specify patterns of inline JavaScript to be excluded from concatenation (one" +" per line). %1$sMore info%2$s" +msgstr "" +"Navedite uzorke inline JavaScripta koji će biti isključeni iz kombiniranja " +"(jedan po retku).%1$sViše informacija%2$s" + +#: inc/Engine/Admin/Settings/Page.php:776 inc/admin/options.php:127 +msgid "Excluded JavaScript Files" +msgstr "Izuzete JavaScript datoteke" + +#: inc/Engine/Admin/Settings/Page.php:777 +msgid "" +"Specify URLs of JavaScript files to be excluded from minification and " +"concatenation (one per line)." +msgstr "" +"Odredite URL-ove JavaScript datoteka koje će biti isključene iz minifikacije" +" i kombiniranja (jedan po retku)" + +#: inc/Engine/Admin/Settings/Page.php:778 +msgid "" +"Internal: The domain part of the URL will be stripped " +"automatically. Use (.*).js wildcards to exclude all JS files located at a " +"specific path." +msgstr "" +"Interno: Dio domene URL-a automatski će biti automatski " +"uklonjen. Koristite (.*).js zamjenske znakove (wildcard) da biste isključili" +" sve JS datoteke koje se nalaze na određenoj putanji." + +#: inc/Engine/Admin/Settings/Page.php:780 +#, php-format +msgid "" +"3rd Party: Use either the full URL path or only the domain " +"name, to exclude external JS. %1$sMore info%2$s" +msgstr "" +"JS treće strane: Za isključivanje vanjskog JS-a " +"upotrijebite ili punu putanju URL-a ili samo naziv domene. %1$sViše " +"informacija%2$s" + +#: inc/Engine/Admin/Settings/Page.php:796 +msgid "Load JavaScript deferred" +msgstr "Učitaj JavaScript s odgodom" + +#: inc/Engine/Admin/Settings/Page.php:798 +#, php-format +msgid "" +"Load JavaScript deferred eliminates render-blocking JS on your site and can " +"improve load time. %1$sMore info%2$s" +msgstr "" +"Učitavanje JavaScript s odgodom uklanja JS koji blokira prikaz vaše web-" +"lokacije i može poboljšati vrijeme učitavanja.%1$sViše informacija%2$s" + +#: inc/Engine/Admin/Settings/Page.php:809 +msgid "Safe Mode for jQuery (recommended)" +msgstr "Siguran način (Safe Mode) za jQuery (preporučeno)" + +#: inc/Engine/Admin/Settings/Page.php:810 +msgid "" +"Safe mode for jQuery for deferred JS ensures support for inline jQuery " +"references from themes and plugins by loading jQuery at the top of the " +"document as a render-blocking script.
      Deactivating may result in " +"broken functionality, test thoroughly!" +msgstr "" +"Siguran način za jQuery za odgođeni JS osigurava podršku za inline jQuery " +"reference iz tema i dodataka učitavanjem jQuery-a na vrhu dokumenta kao " +"render-blocking skriptu.
      Deaktivacija može rezultirati slomljenom " +"funkcionalnošću, temeljito testirati!" + +#: inc/Engine/Admin/Settings/Page.php:823 inc/admin/ui/meta-boxes.php:79 +msgid "Delay JavaScript execution" +msgstr "Odgodi izvršavanje JavaScripta" + +#: inc/Engine/Admin/Settings/Page.php:825 +#, php-format +msgid "" +"Improves performance by delaying the loading of JavaScript files until user " +"interaction (e.g. scroll, click). %1$sMore info%2$s" +msgstr "" +"Poboljšava performanse odgađajući učitavanje JavaScript datoteka do " +"interakcije korisnika (npr. scroll, klik). %1$sViše informacija%2$s" + +#: inc/Engine/Admin/Settings/Page.php:833 +msgid "Scripts to delay" +msgstr "Skripte kojima želite odgoditi učitavanje" + +#: inc/Engine/Admin/Settings/Page.php:834 +msgid "" +"Specify keywords that can identify inline or JavaScript files to be delayed " +"(one per line)." +msgstr "" +"Navedite ključne riječi koje mogu prepoznati inline ili JavaScript datoteke " +"koje žeite odgoditi (jedna po retku)." + +#: inc/Engine/Admin/Settings/Page.php:835 +msgid "" +"A curated list of scripts that are safe to delay is provided. They may not " +"all apply to your website and it is safe to leave the list as-is unless you " +"face issues." +msgstr "" +"Provjereni popis skripti koje je sigurno odgoditi. Možda se sve ne odnose na" +" vaše web mjesto i sigurno je ostaviti popis kakav jest, osim ako se ne " +"suočite s problemima." + +#: inc/Engine/Admin/Settings/Page.php:870 +msgid "Media" +msgstr "Medij" + +#: inc/Engine/Admin/Settings/Page.php:871 +msgid "LazyLoad, emojis, embeds, WebP" +msgstr "LazyLoad, emoji, embedovi, WebP" + +#: inc/Engine/Admin/Settings/Page.php:880 +msgid "Avada" +msgstr "Avada" + +#: inc/Engine/Admin/Settings/Page.php:884 +msgid "Autoptimize" +msgstr "Autoptimize" + +#: inc/Engine/Admin/Settings/Page.php:929 +msgid "LazyLoad" +msgstr "LazyLoad" + +#: inc/Engine/Admin/Settings/Page.php:932 +#, php-format +msgid "" +"It can improve actual and perceived loading time as images, iframes, and " +"videos will be loaded only as they enter (or about to enter) the viewport " +"and reduces the number of HTTP requests. %1$sMore Info%2$s" +msgstr "" +"Može poboljšati stvarno i opaženo vrijeme učitavanja tako što će slike, " +"iframeove i videozapise učitati tek kad uđu (ili netom prije) u okvir za " +"prikaz (viewport) te tako smanjiti broj HTTP zahtjeva. %1$sViše " +"informacija%2$s" + +#: inc/Engine/Admin/Settings/Page.php:939 +#, php-format +msgid "" +"LazyLoad is currently activated in %2$s. If you want to use WP Rocket’s " +"LazyLoad, disable this option in %2$s." +msgstr "" +"Lazyload je trenutno aktivan pomoću %2$s. Ako želite koristiti WP Rocket " +"LazyLoad, onemogućite ovu opciju pod%2$s." + +#: inc/Engine/Admin/Settings/Page.php:942 +msgid "Emoji 👻" +msgstr "Emoji 👻" + +#: inc/Engine/Admin/Settings/Page.php:944 +msgid "" +"Use default emoji of visitor's browser instead of loading emoji from " +"WordPress.org" +msgstr "" +"Upotrijebite zadani emoji preglednika posjetitelja umjesto učitavanja " +"emoji-a sa WordPress.org" + +#: inc/Engine/Admin/Settings/Page.php:948 +msgid "Embeds" +msgstr "Embedi" + +#: inc/Engine/Admin/Settings/Page.php:950 +msgid "" +"Prevents others from embedding content from your site, prevents you from " +"embedding content from other (non-allowed) sites, and removes JavaScript " +"requests related to WordPress embeds" +msgstr "" +"Sprječava druge da ugrađuju (embedaju) sadržaj s vaše web-lokacije, " +"sprječava ugrađivanje sadržaja s drugih web-lokacija (koje nisu dopuštene) i" +" uklanja JavaScript zahtjeve vezane uz WordPress embede." + +#: inc/Engine/Admin/Settings/Page.php:954 +msgid "WebP compatibility" +msgstr "WebP kompatibilnost" + +#: inc/Engine/Admin/Settings/Page.php:958 +#, php-format +msgid "" +"Enable this option if you would like WP Rocket to serve WebP images to " +"compatible browsers. Please note that WP Rocket cannot create WebP images " +"for you. To create WebP images we recommend %1$sImagify%2$s. %3$sMore " +"info%2$s" +msgstr "" +"Omogućite ovu opciju ako želite da WP Rocket poslužuje WebP slike na " +"kompatibilnim preglednicima. Imajte na umu da WP Rocket ne može stvoriti " +"WebP slike za vas. Za stvaranje WebP slika preporučujemo %1$sImagify%2$s. " +"%3$sViše informacija%2$s" + +#: inc/Engine/Admin/Settings/Page.php:985 +msgid "Enable for images" +msgstr "Uključi za slike" + +#: inc/Engine/Admin/Settings/Page.php:997 +#, php-format +msgid "" +"LazyLoad for images is currently activated in %2$s. If you want to use " +"%1$s’s LazyLoad, disable this option in %2$s." +msgstr "" +"Lazyload je trenutno aktivan pomoću %2$s. Ako želite koristiti %1$s " +"lazyload, onemogućite ovu opciju pod%2$s." + +#: inc/Engine/Admin/Settings/Page.php:1005 +msgid "Enable for iframes and videos" +msgstr "Uključi za iframes i videa" + +#: inc/Engine/Admin/Settings/Page.php:1020 +msgid "Replace YouTube iframe with preview image" +msgstr "Zamijenite YouTube iframe slikom za pregled" + +#: inc/Engine/Admin/Settings/Page.php:1021 +msgid "" +"This can significantly improve your loading time if you have a lot of " +"YouTube videos on a page." +msgstr "" +"Može značajno poboljšati vrijeme učitavanja ako na stranici imate mnogo " +"videozapisa sa YouTube-a." + +#: inc/Engine/Admin/Settings/Page.php:1031 +#, php-format +msgid "Replace YouTube iframe with preview image is not compatible with %2$s." +msgstr "Zamijenite YouTube iframe slikom za pregled nije kompatibilan s %2$s." + +#: inc/Engine/Admin/Settings/Page.php:1035 +msgid "Disable Emoji" +msgstr "Onemogući Emoji" + +#: inc/Engine/Admin/Settings/Page.php:1036 +msgid "Disable Emoji will reduce the number of external HTTP requests." +msgstr "Onemogućavanjem Emoji-a smanjit će se broj vanjskih HTTP zahtjeva." + +#: inc/Engine/Admin/Settings/Page.php:1044 +msgid "Disable WordPress embeds" +msgstr "Onemogući WordPress embede" + +#: inc/Engine/Admin/Settings/Page.php:1054 +#: inc/classes/subscriber/Media/class-webp-subscriber.php:362 +msgid "Enable WebP caching" +msgstr "Omogući WebP caching" + +#: inc/Engine/Admin/Settings/Page.php:1074 inc/deprecated/deprecated.php:1776 +#: views/settings/page-sections/tutorials.php:30 +msgid "Preload" +msgstr "Predučitavanje" + +#: inc/Engine/Admin/Settings/Page.php:1075 +msgid "Generate cache files, preload fonts" +msgstr "Generiraj cache datoteke, predučitaj fontove" + +#: inc/Engine/Admin/Settings/Page.php:1086 +msgid "Preload Cache" +msgstr "Predučitaj cache" + +#: inc/Engine/Admin/Settings/Page.php:1089 +#, php-format +msgid "" +"When you enable preloading WP Rocket will generate the cache starting with " +"the links on your homepage followed by the sitemaps you specify. Preloading " +"is automatically triggered when you add or update content and can also be " +"manually triggered from the admin bar or from the %1$sWP Rocket " +"Dashboard%2$s." +msgstr "" +"Kada omogućite predučitavanje WP Rocket će generirati cache počevši od " +"linkova na početnoj stranici, a zatim mape web-lokacija koje navedete. " +"Pretpregled se automatski pokreće kada dodajete ili ažurirate sadržaj, a " +"može se i ručno pokrenuti iz administratorske trake ili iz %1$sWP Rocket " +"nadzorne ploče%2$s." + +#: inc/Engine/Admin/Settings/Page.php:1097 +msgid "Prefetch DNS Requests" +msgstr "Prethodno dohvati DNS zahtjeve" + +#: inc/Engine/Admin/Settings/Page.php:1099 +msgid "" +"DNS prefetching can make external files load faster, especially on mobile " +"networks" +msgstr "" +"Prethodno dohvaćanje (prefetch) DNS-a može ubrzati učitavanje vanjskih " +"datoteka, posebno na mobilnim mrežama" + +#: inc/Engine/Admin/Settings/Page.php:1107 +msgid "Preload Fonts" +msgstr "Predučitaj fontove" + +#: inc/Engine/Admin/Settings/Page.php:1110 +#, php-format +msgid "" +"Improves performance by helping browsers discover fonts in CSS files. " +"%1$sMore info%2$s" +msgstr "" +"Poboljšava performanse pomažući preglednicima da otkriju fontove u CSS " +"datotekama. %1$sViše informacija%2$s" + +#: inc/Engine/Admin/Settings/Page.php:1118 +msgid "Preload Links" +msgstr "Predučitavanje linkova" + +#: inc/Engine/Admin/Settings/Page.php:1121 +#, php-format +msgid "" +"Link preloading improves the perceived load time by downloading a page when " +"a user hovers over the link. %1$sMore info%2$s" +msgstr "" +"Predučitavanje linkova poboljšava percipirano vrijeme učitavanja " +"preuzimanjem stranice kada korisnik zadrži pokazivač iznad linka.%1$sViše " +"informacija%2$s" + +#: inc/Engine/Admin/Settings/Page.php:1135 +msgid "Activate Preloading" +msgstr "Aktiviraj predučitavanje" + +#: inc/Engine/Admin/Settings/Page.php:1154 +msgid "Activate sitemap-based cache preloading" +msgstr "Aktivirajte prethodno učitavanje cachea temeljeno na Sitemapu" + +#: inc/Engine/Admin/Settings/Page.php:1173 +msgid "Sitemaps for preloading" +msgstr "Mape web-lokacije za predučitavanje" + +#: inc/Engine/Admin/Settings/Page.php:1177 +msgid "Specify XML sitemap(s) to be used for preloading" +msgstr "Navedite XML mape web-lokacije koje će se koristiti za predučitavanje" + +#: inc/Engine/Admin/Settings/Page.php:1187 +msgid "URLs to prefetch" +msgstr "URL-ovi koje treba prethodno dohvatiti (prefetch)" + +#: inc/Engine/Admin/Settings/Page.php:1188 +msgid "" +"Specify external hosts to be prefetched (no http:, one per " +"line)" +msgstr "" +"Odredite vanjske hostove za pretragu (bez http:, jedan po " +"retku)" + +#: inc/Engine/Admin/Settings/Page.php:1197 +msgid "Fonts to preload" +msgstr "Fontovi za predučitavanje" + +#: inc/Engine/Admin/Settings/Page.php:1198 +msgid "" +"Specify urls of the font files to be preloaded (one per line). Fonts must be" +" hosted on your own domain, or the domain you have specified on the CDN tab." +msgstr "" +"Navedite URL-ove datoteka fontova koje treba unaprijed učitati (jedan u " +"retku). Fontovi moraju biti hostani na vašoj domeni ili domeni koju ste " +"naveli u kartici CDN." + +#: inc/Engine/Admin/Settings/Page.php:1199 +msgid "" +"The domain part of the URL will be stripped automatically.
      Allowed font " +"extensions: otf, ttf, svg, woff, woff2." +msgstr "" +"Domena URL-a automatski će biti uklonjena.
      Dopuštena proširenja fonta: " +"otf, ttf, svg, woff, woff2." + +#: inc/Engine/Admin/Settings/Page.php:1208 +msgid "Enable link preloading" +msgstr "Uključi predučitavanje linkova" + +#: inc/Engine/Admin/Settings/Page.php:1227 +msgid "Advanced Rules" +msgstr "Napredna pravila" + +#: inc/Engine/Admin/Settings/Page.php:1228 +msgid "Fine-tune cache rules" +msgstr "Fino podešavanje pravila cachiranja" + +#: inc/Engine/Admin/Settings/Page.php:1237 +msgid "" +"Sensitive pages like custom login/logout URLs should be excluded from cache." +msgstr "" +"Osjetljive stranice kao što su prilagođeni URL-ovi za prijavu / odjavu " +"trebali bi biti izuzeti iz cachea." + +#: inc/Engine/Admin/Settings/Page.php:1240 +msgctxt "plugin name" +msgid "WooCommerce" +msgstr "WooCommerce" + +#: inc/Engine/Admin/Settings/Page.php:1242 +msgctxt "plugin name" +msgid "Easy Digital Downloads" +msgstr "Easy Digital Download-ovi" + +#: inc/Engine/Admin/Settings/Page.php:1244 +msgctxt "plugin name" +msgid "iThemes Exchange" +msgstr "iThemes Exchange" + +#: inc/Engine/Admin/Settings/Page.php:1246 +msgctxt "plugin name" +msgid "Jigoshop" +msgstr "Jigoshop" + +#: inc/Engine/Admin/Settings/Page.php:1248 +msgctxt "plugin name" +msgid "WP-Shop" +msgstr "WP-Shop" + +#: inc/Engine/Admin/Settings/Page.php:1254 +#, php-format +msgid "" +"
      Cart, checkout and \"my account\" pages set in " +"%1$s%2$s%3$s will be detected and never cached by default." +msgstr "" +"
      Stranice košarice, naplate i \"moj račun\" postavljene u " +"%1$s%2$s%3$s će biti detektirane i neće biti cachirane, " +"prema zadanim postavkama." + +#: inc/Engine/Admin/Settings/Page.php:1264 inc/admin/options.php:128 +msgid "Never Cache URL(s)" +msgstr "Nikad ne cachiraj ove URL-ove" + +#: inc/Engine/Admin/Settings/Page.php:1275 +msgid "Never Cache Cookies" +msgstr "Nikad ne cachiraj ove Kolačiće (Cookies)" + +#: inc/Engine/Admin/Settings/Page.php:1280 inc/admin/options.php:129 +msgid "Never Cache User Agent(s)" +msgstr "Nikada ne cachiraj ove korisničke agente" + +#: inc/Engine/Admin/Settings/Page.php:1285 inc/admin/options.php:130 +msgid "Always Purge URL(s)" +msgstr "Uvijek očisti ove URL-ove" + +#: inc/Engine/Admin/Settings/Page.php:1294 +msgid "Cache Query String(s)" +msgstr "Nizovi upita za cachiranje (Cache Query String(s))" + +#: inc/Engine/Admin/Settings/Page.php:1297 +#, php-format +msgid "" +"%1$sCache for query strings%2$s enables you to force caching for specific " +"GET parameters." +msgstr "" +"%1$sCache za nizove upita%2$s omogućuje vam prisiljavanje cachiranja za " +"određene GET parametre." + +#: inc/Engine/Admin/Settings/Page.php:1311 +msgid "" +"Specify URLs of pages or posts that should never be cached (one per line)" +msgstr "" +"Navedite URL-ove stranica ili objava koje ne bi smjeli nikad biti cachirani " +"(jedan po retku)" + +#: inc/Engine/Admin/Settings/Page.php:1312 +#: inc/Engine/Admin/Settings/Page.php:1340 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*) " +"wildcards to address multiple URLs under a given path." +msgstr "" +"Domena URL-a će automatski biti uklonjena.
      Koristite (.*) zamjenske " +"znakove (wildcard) da biste isključili sve URL-ove koje se nalaze na " +"određenoj putanji." + +#: inc/Engine/Admin/Settings/Page.php:1321 +msgid "" +"Specify the IDs of cookies that, when set in the visitor's browser, should " +"prevent a page from getting cached (one per line)" +msgstr "" +"Navedite ID-eve kolačića koji bi, kada su postavljeni u pregledniku " +"posjetitelja, trebali spriječiti cachiranje stranice (jedan po retku)." + +#: inc/Engine/Admin/Settings/Page.php:1329 +msgid "" +"Specify user agent strings that should never see cached pages (one per line)" +msgstr "" +"Navedite nizove korisničkog agenta koji nikada ne bi trebali vidjeti " +"cachirane (jedna po retku)" + +#: inc/Engine/Admin/Settings/Page.php:1330 +msgid "Use (.*) wildcards to detect parts of UA strings." +msgstr "" +"Upotrijebite (.*) zamjenske znakove (wildcards) kako bi otkrili dijelove UA " +"nizova." + +#: inc/Engine/Admin/Settings/Page.php:1339 +msgid "" +"Specify URLs you always want purged from cache whenever you update any post " +"or page (one per line)" +msgstr "" +"Navedite URL-ove koje želite uvijek očistiti iz cachea svaki put kad " +"ažurirate bilo koju objavu ili stranicu (jednu po retku)" + +#: inc/Engine/Admin/Settings/Page.php:1348 +msgid "Specify query strings for caching (one per line)" +msgstr "Navedite nizove upita za cachiranje (jedan po retku)" + +#: inc/Engine/Admin/Settings/Page.php:1373 inc/deprecated/deprecated.php:1775 +msgid "Database" +msgstr "Baza podataka" + +#: inc/Engine/Admin/Settings/Page.php:1374 +msgid "Optimize, reduce bloat" +msgstr "Optimizirajte, smanjite višak podataka" + +#: inc/Engine/Admin/Settings/Page.php:1383 +msgid "Post Cleanup" +msgstr "Čišćenje objava" + +#: inc/Engine/Admin/Settings/Page.php:1385 +msgid "" +"Post revisions and drafts will be permanently deleted. Do not use this " +"option if you need to retain revisions or drafts." +msgstr "" +"Izmjene objava i skice bit će trajno izbrisani. Ne koristite ovu opciju ako " +"želite zadržati revizije ili skice." + +#: inc/Engine/Admin/Settings/Page.php:1393 +msgid "Comments Cleanup" +msgstr "Čišćenje komentara" + +#: inc/Engine/Admin/Settings/Page.php:1395 +msgid "Spam and trashed comments will be permanently deleted." +msgstr "Spam i komentari u smeću će biti trajno izbrisani." + +#: inc/Engine/Admin/Settings/Page.php:1399 +msgid "Transients Cleanup" +msgstr "Čišćenje transienta" + +#: inc/Engine/Admin/Settings/Page.php:1401 +msgid "" +"Transients are temporary options; they are safe to remove. They will be " +"automatically regenerated as your plugins require them." +msgstr "" +"Transienti su privremene opcije; sigurno ih je ukloniti. Biti će ponovno " +"automatski generirani ukoliko ih vaši dodaci budu zahtijevali." + +#: inc/Engine/Admin/Settings/Page.php:1405 +msgid "Database Cleanup" +msgstr "Čišćenje baze podataka" + +#: inc/Engine/Admin/Settings/Page.php:1407 +msgid "Reduces overhead of database tables" +msgstr "Uklanja suvišne informacije u tablicama baze podataka" + +#: inc/Engine/Admin/Settings/Page.php:1411 +msgid "Automatic cleanup" +msgstr "Automatsko čišćenje" + +#: inc/Engine/Admin/Settings/Page.php:1422 +#: inc/classes/admin/Database/class-optimization.php:41 +msgid "Revisions" +msgstr "Izmjene" + +#: inc/Engine/Admin/Settings/Page.php:1424 +#, php-format +msgid "%s revision in your database." +msgid_plural "%s revisions in your database." +msgstr[0] "%s revizija u vašoj bazi podataka." +msgstr[1] "%s revizija u vašoj bazi podataka." +msgstr[2] "%s revizija u vašoj bazi podataka." + +#: inc/Engine/Admin/Settings/Page.php:1432 +#: inc/classes/admin/Database/class-optimization.php:42 +msgid "Auto Drafts" +msgstr "Auto nacrti" + +#: inc/Engine/Admin/Settings/Page.php:1434 +#, php-format +msgid "%s draft in your database." +msgid_plural "%s drafts in your database." +msgstr[0] "%s skica u vašoj bazi podataka." +msgstr[1] "%s skica u vašoj bazi podataka." +msgstr[2] "%s skica u vašoj bazi podataka." + +#: inc/Engine/Admin/Settings/Page.php:1442 +#: inc/classes/admin/Database/class-optimization.php:43 +msgid "Trashed Posts" +msgstr "Objave u smeću" + +#: inc/Engine/Admin/Settings/Page.php:1444 +#, php-format +msgid "%s trashed post in your database." +msgid_plural "%s trashed posts in your database." +msgstr[0] "%s objava u smeću u vašoj bazi podataka." +msgstr[1] "%s objava u smeću u vašoj bazi podataka." +msgstr[2] "%s objava u smeću u vašoj bazi podataka." + +#: inc/Engine/Admin/Settings/Page.php:1452 +#: inc/classes/admin/Database/class-optimization.php:44 +msgid "Spam Comments" +msgstr "Spam kometari" + +#: inc/Engine/Admin/Settings/Page.php:1454 +#, php-format +msgid "%s spam comment in your database." +msgid_plural "%s spam comments in your database." +msgstr[0] "%s spam komentar u vašoj bazi podataka." +msgstr[1] "%s spam komentara u vašoj bazi podataka." +msgstr[2] "%s spam komentara u vašoj bazi podataka." + +#: inc/Engine/Admin/Settings/Page.php:1462 +#: inc/classes/admin/Database/class-optimization.php:45 +msgid "Trashed Comments" +msgstr "Obrisani komentari" + +#: inc/Engine/Admin/Settings/Page.php:1464 +#, php-format +msgid "%s trashed comment in your database." +msgid_plural "%s trashed comments in your database." +msgstr[0] "%s obrisan komentar u vašoj bazi podataka." +msgstr[1] "%s obrisanih komentara u vašoj bazi podataka." +msgstr[2] "%s obrisanih komentara u vašoj bazi podataka." + +#: inc/Engine/Admin/Settings/Page.php:1472 +#: inc/classes/admin/Database/class-optimization.php:46 +msgid "Expired transients" +msgstr "Istekli transienti" + +#: inc/Engine/Admin/Settings/Page.php:1474 +#, php-format +msgid "%s expired transient in your database." +msgid_plural "%s expired transients in your database." +msgstr[0] "%s istekli transient u vašoj bazi podataka." +msgstr[1] "%s isteklih transienta u vašoj bazi podataka." +msgstr[2] "%s isteklih transienta u vašoj bazi podataka." + +#: inc/Engine/Admin/Settings/Page.php:1482 +msgid "All transients" +msgstr "Svi transienti" + +#: inc/Engine/Admin/Settings/Page.php:1484 +#, php-format +msgid "%s transient in your database." +msgid_plural "%s transients in your database." +msgstr[0] "%s transient u vašoj bazi podataka." +msgstr[1] "%s transienta u vašoj bazi podataka." +msgstr[2] "%s transienta u vašoj bazi podataka." + +#: inc/Engine/Admin/Settings/Page.php:1492 +msgid "Optimize Tables" +msgstr "Optimize tablice podataka" + +#: inc/Engine/Admin/Settings/Page.php:1494 +#, php-format +msgid "%s table to optimize in your database." +msgid_plural "%s tables to optimize in your database." +msgstr[0] "%s tablica za optimizaciju u vašoj bazi podataka." +msgstr[1] "%s tablica za optimizaciju u vašoj bazi podataka." +msgstr[2] "%s tablica za optimizaciju u vašoj bazi podataka." + +#: inc/Engine/Admin/Settings/Page.php:1505 +msgid "Schedule Automatic Cleanup" +msgstr "Zakaži automatsko čišćenje" + +#: inc/Engine/Admin/Settings/Page.php:1517 +msgid "Frequency" +msgstr "Učestalost" + +#: inc/Engine/Admin/Settings/Page.php:1525 +msgid "Daily" +msgstr "Dnevno" + +#: inc/Engine/Admin/Settings/Page.php:1526 +msgid "Weekly" +msgstr "Tjedno" + +#: inc/Engine/Admin/Settings/Page.php:1527 +msgid "Monthly" +msgstr "Mjesečno" + +#: inc/Engine/Admin/Settings/Page.php:1543 +#: inc/Engine/Admin/Settings/Page.php:1554 inc/admin/ui/meta-boxes.php:76 +#: inc/deprecated/deprecated.php:1773 +msgid "CDN" +msgstr "CDN" + +#: inc/Engine/Admin/Settings/Page.php:1544 +msgid "Integrate your CDN" +msgstr "Integrirajte svoj CDN" + +#: inc/Engine/Admin/Settings/Page.php:1556 +msgid "" +"All URLs of static files (CSS, JS, images) will be rewritten to the CNAME(s)" +" you provide." +msgstr "" +"Svi URL-ovi statičkih datoteka (CSS, JS, slike) bit će prepisani u CNAME(s) " +"koje navedete." + +#: inc/Engine/Admin/Settings/Page.php:1558 +#, php-format +msgid "" +"Not required for services like Cloudflare and Sucuri. Please see our " +"available %1$sAdd-ons%2$s." +msgstr "" +"Nije potrebno za servise kao što su Cloudflare i Sucuri. Molimo pogledajte " +"naše dostupne %1$sDodatke%2$s." + +#: inc/Engine/Admin/Settings/Page.php:1573 inc/admin/options.php:131 +msgid "Exclude files from CDN" +msgstr "Izuzmi datoteke iz CDN-a" + +#: inc/Engine/Admin/Settings/Page.php:1599 +#, php-format +msgid "" +"%1$s%2$s Add-on%3$s is currently enabled. Configuration of the CDN settings " +"is not required for %2$s to work on your site." +msgid_plural "" +"%1$s%2$s Add-ons%3$s are currently enabled. Configuration of the CDN " +"settings is not required for %2$s to work on your site." +msgstr[0] "" +"%1$s%2$s Dodatak%3$s je trenutno omogućen. Konfiguracija CDN postavki nije " +"potrebna%2$s kako bi radila na vašoj web-lokaciji." +msgstr[1] "" +"%1$s%2$s Dodataka%3$s je trenutno omogućeno. Konfiguracija CDN postavki nije" +" potrebna%2$s kako bi radila na vašoj web-lokaciji." +msgstr[2] "" +"%1$s%2$s Dodataka%3$s je trenutno omogućeno. Konfiguracija CDN postavki nije" +" potrebna%2$s kako bi radila na vašoj web-lokaciji." + +#: inc/Engine/Admin/Settings/Page.php:1624 +msgid "Enable Content Delivery Network" +msgstr "Omogućite CDN." + +#: inc/Engine/Admin/Settings/Page.php:1633 +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:151 +msgid "CDN CNAME(s)" +msgstr "CDN CNAME(s)" + +#: inc/Engine/Admin/Settings/Page.php:1634 +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:152 +msgid "Specify the CNAME(s) below" +msgstr "U nastavku navedite CNAME(s)" + +#: inc/Engine/Admin/Settings/Page.php:1641 +msgid "" +"Specify URL(s) of files that should not get served via CDN (one per line)." +msgstr "" +"Navedite URL-ove datoteka koje se ne smiju posluživati ​​putem CDN-a (jedan " +"po retku)." + +#: inc/Engine/Admin/Settings/Page.php:1642 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*) " +"wildcards to exclude all files of a given file type located at a specific " +"path." +msgstr "" +"Dio s domenom URL-a će automatski biti uklonjen.
      Koristite (.*) zamjenske" +" znakove (wildcards) kako biste izuzeli sve datoteke određene vrste " +"smještene na navedenoj putanji." + +#: inc/Engine/Admin/Settings/Page.php:1664 +#: inc/Engine/Admin/Settings/Page.php:1672 +msgid "Heartbeat" +msgstr "Heartbeat" + +#: inc/Engine/Admin/Settings/Page.php:1665 +msgid "Control WordPress Heartbeat API" +msgstr "Upravljajte WordPress Heartbeat API-em" + +#: inc/Engine/Admin/Settings/Page.php:1673 +msgid "" +"Reducing or disabling the Heartbeat API’s activity can help save some of " +"your server’s resources." +msgstr "" +"Smanjenje ili onemogućavanje aktivnosti Heartbeat API-ja može pomoći u " +"uštedi resursa vašeg web poslužitelja." + +#: inc/Engine/Admin/Settings/Page.php:1682 +msgid "Reduce or disable Heartbeat activity" +msgstr "Smanji ili onemogući aktivnost Heartbeata" + +#: inc/Engine/Admin/Settings/Page.php:1683 +msgid "" +"Reducing activity will change Heartbeat frequency from one hit each minute " +"to one hit every 2 minutes." +msgstr "" +"Smanjenje aktivnosti će promijeniti frekvenciju s jednog \"otkucaja\" svake " +"minute do jednog \"otkucaja\" svake 2 minute." + +#: inc/Engine/Admin/Settings/Page.php:1683 +msgid "" +"Disabling Heartbeat entirely may break plugins and themes using this API." +msgstr "" +"Onemogućavanje funkcije Heartbeat može u potpunosti onemogućiti pravino " +"funkcioniranje dodataka i /ili teme koja koristi ovaj API." + +#: inc/Engine/Admin/Settings/Page.php:1697 +msgid "Do not limit" +msgstr "Nemoj ograničiti" + +#: inc/Engine/Admin/Settings/Page.php:1698 +msgid "Reduce activity" +msgstr "Ograniči aktivnost" + +#: inc/Engine/Admin/Settings/Page.php:1699 +msgid "Disable" +msgstr "Onemogući" + +#: inc/Engine/Admin/Settings/Page.php:1707 +msgid "Control Heartbeat" +msgstr "Kontroliraj Heartbeat" + +#: inc/Engine/Admin/Settings/Page.php:1716 +msgid "Behavior in backend" +msgstr "Ponašanje u backendu" + +#: inc/Engine/Admin/Settings/Page.php:1723 +msgid "Behavior in post editor" +msgstr "Ponašanje u uređivaču objava" + +#: inc/Engine/Admin/Settings/Page.php:1729 +msgid "Behavior in frontend" +msgstr "Ponašanje u frontendu" + +#: inc/Engine/Admin/Settings/Page.php:1745 +#: views/settings/page-sections/tutorials.php:36 +msgid "Add-ons" +msgstr "Dodaci" + +#: inc/Engine/Admin/Settings/Page.php:1746 +msgid "Add more features" +msgstr "Dodajte još značajki" + +#: inc/Engine/Admin/Settings/Page.php:1753 +msgid "One-click Rocket Add-ons" +msgstr "One-click Rocket dodaci" + +#: inc/Engine/Admin/Settings/Page.php:1754 +msgid "" +"One-Click Add-ons are features extending available options without " +"configuration needed. Switch the option \"on\" to enable from this screen." +msgstr "" +"One-Click dodaci su značajke koje proširuju dostupne opcije bez potrebe za " +"dodatnom konfiguracijom. Prebacite opciju \"uključeno\" da biste omogućili " +"funkcionalnost s ovog zaslona." + +#: inc/Engine/Admin/Settings/Page.php:1764 +msgid "Rocket Add-ons" +msgstr "Rocket Dodaci" + +#: inc/Engine/Admin/Settings/Page.php:1765 +msgid "Rocket Add-ons are complementary features extending available options." +msgstr "" +"Rocket Dodaci su komplementarne značajke koje proširuju dostupne opcije." + +#: inc/Engine/Admin/Settings/Page.php:1778 +msgid "Google Tracking" +msgstr "Google praćenje" + +#: inc/Engine/Admin/Settings/Page.php:1784 +msgid "Improve browser caching for Google Analytics" +msgstr "Poboljšajte cacheiranje preglednika za Google Analytics" + +#: inc/Engine/Admin/Settings/Page.php:1786 +#, php-format +msgid "" +"WP Rocket will host these Google scripts locally on your server to help " +"satisfy the PageSpeed recommendation for Leverage browser " +"caching.
      %1$sLearn more%2$s" +msgstr "" +"WP Rocket će hostati ove Google skripte lokalno na vašem poslužitelju kako " +"bi zadovoljio PageSpeed preporuku za Leverage browser " +"caching.
      %1$sSaznaj više%2$s" + +#: inc/Engine/Admin/Settings/Page.php:1801 +msgid "Facebook Pixel" +msgstr "Facebook Pixel" + +#: inc/Engine/Admin/Settings/Page.php:1807 +msgid "Improve browser caching for Facebook Pixel" +msgstr "Poboljšajte cacheiranje preglednika za Facebook Pixel" + +#: inc/Engine/Admin/Settings/Page.php:1809 +#, php-format +msgid "" +"WP Rocket will host these Facebook Pixels locally on your server to help " +"satisfy the PageSpeed recommendation for Leverage browser " +"caching.
      %1$sLearn more%2$s" +msgstr "" +"WP Rocket će hostati ove Google skripte lokalno na vašem poslužitelju kako " +"bi zadovoljio PageSpeed preporuku za Leverage browser " +"caching.
      %1$sSaznaj više%2$s" + +#: inc/Engine/Admin/Settings/Page.php:1822 +#: inc/Engine/Admin/Settings/Page.php:1923 +msgid "Cloudflare" +msgstr "Cloudflare" + +#: inc/Engine/Admin/Settings/Page.php:1828 +msgid "Integrate your Cloudflare account with this add-on." +msgstr "Integrirajte svoj Cloudflare račun pomoću ovog dodatka." + +#: inc/Engine/Admin/Settings/Page.php:1829 +msgid "" +"Provide your account email, global API key, and domain to use options such " +"as clearing the Cloudflare cache and enabling optimal settings with WP " +"Rocket." +msgstr "" +"Navedite adresu e-pošte svog računa, globalni API ključ i domenu da biste " +"koristili opcije kao što je brisanje Cloudflare cachea i omogućavanje " +"optimalnih postavki pomoću programa WP Rocket." + +#: inc/Engine/Admin/Settings/Page.php:1863 +msgid "Varnish" +msgstr "Varnish" + +#: inc/Engine/Admin/Settings/Page.php:1869 +msgid "If Varnish runs on your server, you must activate this add-on." +msgstr "" +"Ako je Varnish pokrenut na vašem poslužitelju, morate aktivirati ovaj " +"dodatak." + +#: inc/Engine/Admin/Settings/Page.php:1871 +#, php-format +msgid "" +"Varnish cache will be purged each time WP Rocket clears its cache to ensure " +"content is always up-to-date.
      %1$sLearn more%2$s" +msgstr "" +"Varnisj cache će biti izbrisan svaki put kada WP Rocket obriše svoj cache " +"kako bi se osiguralo da je sadržaj uvijek ažuriran.
      %1$sSaznaj više%2$s" + +#: inc/Engine/Admin/Settings/Page.php:1885 +msgid "Clear the Sucuri cache when WP Rocket’s cache is cleared." +msgstr "Očistite Sucuri cache kada je obrisan cache WP Rocketa." + +#: inc/Engine/Admin/Settings/Page.php:1888 +msgid "" +"Provide your API key to clear the Sucuri cache when WP Rocket’s cache is " +"cleared." +msgstr "" +"Upišite svoj API ključ za brisanje Sucuri cachea kada je izbrisan cache WP " +"Rocketa." + +#: inc/Engine/Admin/Settings/Page.php:1896 +#: inc/Engine/Admin/Settings/Page.php:2040 +msgid "Sucuri" +msgstr "Sucuri" + +#: inc/Engine/Admin/Settings/Page.php:1902 +msgid "Synchronize Sucuri cache with this add-on." +msgstr "Sinkronizirajte Sucuri cache pomoću ovog dodatka." + +#: inc/Engine/Admin/Settings/Page.php:1940 +msgid "Cloudflare credentials" +msgstr "Cloudflare podaci" + +#: inc/Engine/Admin/Settings/Page.php:1949 +msgid "Cloudflare settings" +msgstr "Cloudflare postavke" + +#: inc/Engine/Admin/Settings/Page.php:1963 +msgctxt "Cloudflare" +msgid "Global API key:" +msgstr "Globalni API ključ:" + +#: inc/Engine/Admin/Settings/Page.php:1964 +msgctxt "Cloudflare" +msgid "Find your API key" +msgstr "Pronađi svoj API ključ" + +#: inc/Engine/Admin/Settings/Page.php:1976 +msgctxt "Cloudflare" +msgid "Account email" +msgstr "Email računa" + +#: inc/Engine/Admin/Settings/Page.php:1985 +msgctxt "Cloudflare" +msgid "Zone ID" +msgstr "Zone ID" + +#: inc/Engine/Admin/Settings/Page.php:1995 +msgid "Development mode" +msgstr "Development mode" + +#: inc/Engine/Admin/Settings/Page.php:1997 +#, php-format +msgid "" +"Temporarily activate development mode on your website. This setting will " +"automatically turn off after 3 hours. %1$sLearn more%2$s" +msgstr "" +"Privremeno aktivirajte Development mode na web-lokaciji. Ova postavka će se " +"automatski isključiti nakon 3 sata. %1$sSaznaj više%2$s" + +#: inc/Engine/Admin/Settings/Page.php:2005 +msgid "Optimal settings" +msgstr "Optimalne postavke" + +#: inc/Engine/Admin/Settings/Page.php:2006 +msgid "" +"Automatically enhances your Cloudflare configuration for speed, performance " +"grade and compatibility." +msgstr "" +"Automatski poboljšava Cloudflare konfiguraciju za brzinu, ocjenu izvedbe i " +"kompatibilnost." + +#: inc/Engine/Admin/Settings/Page.php:2014 +msgid "Relative protocol" +msgstr "Relativni protokol" + +#: inc/Engine/Admin/Settings/Page.php:2015 +msgid "" +"Should only be used with Cloudflare's flexible SSL feature. URLs of static " +"files (CSS, JS, images) will be rewritten to use // instead of http:// or " +"https://." +msgstr "" +"Treba se koristiti samo s Cloudflare-ovom fleksibilnom SSL značajkom. URL-" +"ovi statičkih datoteka (CSS, JS, slike) bit će prepisani tako da koriste // " +"umjesto http:// ili https://." + +#: inc/Engine/Admin/Settings/Page.php:2053 +msgid "Sucuri credentials" +msgstr "Sucuri podaci" + +#: inc/Engine/Admin/Settings/Page.php:2066 +msgctxt "Sucuri" +msgid "" +"Firewall API key (for plugin), must be in format {32 characters}/{32 " +"characters}:" +msgstr "" +"Firewall API ključ (za dodatak) mora biti u formatu {32 znaka}/{32 " +"znaka}:" + +#: inc/Engine/Admin/Settings/Page.php:2067 +msgctxt "Sucuri" +msgid "Find your API key" +msgstr "Pronađi svoj API ključ" + +#: inc/Engine/Admin/Settings/Render.php:461 inc/deprecated/deprecated.php:1294 +msgid "Upload file and import settings" +msgstr "Upload datoteke i uvoz settings" + +#: inc/Engine/Admin/Settings/Settings.php:400 +msgid "" +"Sucuri Add-on: The API key for the Sucuri firewall must be in format " +"{32 characters}/{32 characters}." +msgstr "" +"Dodatak za Sucuri: API ključ za Sucuri firewall mora biti u formatu{32" +" znaka}/{32 znaka}.." + +#: inc/Engine/Admin/Settings/Settings.php:491 +#: inc/deprecated/deprecated.php:1245 +msgid "Settings saved." +msgstr "Settings spremljene." + +#: inc/Engine/Admin/Settings/Subscriber.php:141 +#: inc/deprecated/deprecated.php:1786 +#: views/settings/page-sections/tools.php:33 +msgid "Tools" +msgstr "Alati" + +#: inc/Engine/Admin/Settings/Subscriber.php:142 +msgid "Import, Export, Rollback" +msgstr "Uvoz, izvoz, povrat postavki" + +#: inc/Engine/Admin/Settings/Subscriber.php:163 +#: views/settings/page-sections/imagify.php:14 +msgid "Image Optimization" +msgstr "Optimizacija slika" + +#: inc/Engine/Admin/Settings/Subscriber.php:164 +msgid "Compress your images" +msgstr "Sažmite slike" + +#: inc/Engine/Admin/Settings/Subscriber.php:181 +#: views/settings/page-sections/tutorials.php:45 +msgid "Tutorials" +msgstr "Upute" + +#: inc/Engine/Admin/Settings/Subscriber.php:182 +msgid "Getting started and how to videos" +msgstr "Početak rada i edukativni videozapisi" + +#: inc/Engine/CDN/RocketCDN/APIClient.php:154 +msgid "RocketCDN is not available at the moment. Please retry later" +msgstr "RocketCDN trenutno nije dostupan. Pokušajte opet malo kasnije." + +#: inc/Engine/CDN/RocketCDN/APIClient.php:171 +msgid "RocketCDN cache purge failed: Missing identifier parameter." +msgstr "" +"Čišćenje RocketCDN cachea nije uspjelo: nedostaje parametar identifikatora." + +#: inc/Engine/CDN/RocketCDN/APIClient.php:180 +msgid "RocketCDN cache purge failed: Missing user token." +msgstr "Čišćenje RocketCDN cachea nije uspjelo: nedostaje korisnički token." + +#: inc/Engine/CDN/RocketCDN/APIClient.php:199 +msgid "" +"RocketCDN cache purge failed: The API returned an unexpected response code." +msgstr "" +"Čišćenje RocketCDN cachea nije uspjelo: API je vratio neočekivani kôd " +"odgovora." + +#: inc/Engine/CDN/RocketCDN/APIClient.php:208 +msgid "RocketCDN cache purge failed: The API returned an empty response." +msgstr "Čišćenje RocketCDN cachea nije uspjelo: API je vratio prazan odgovor." + +#: inc/Engine/CDN/RocketCDN/APIClient.php:217 +msgid "RocketCDN cache purge failed: The API returned an unexpected response." +msgstr "" +"Čišćenje RocketCDN cachea nije uspjelo: API je vratio neočekivani odgovor." + +#: inc/Engine/CDN/RocketCDN/APIClient.php:226 +#, php-format +msgid "RocketCDN cache purge failed: %s." +msgstr "Čišćenje RocketCDN cachea nije uspjelo: %s." + +#: inc/Engine/CDN/RocketCDN/APIClient.php:234 +msgid "RocketCDN cache purge successful." +msgstr "Čišćenje RocketCDN cachea je uspješno." + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:82 +msgid "Next Billing Date" +msgstr "Sljedeći datum naplate" + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:91 +msgid "No Subscription" +msgstr "Nema pretplate" + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:127 +msgid "Your RocketCDN subscription is currently active." +msgstr "Vaša RocketCDN pretplata je trenutno aktivna." + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:133 +#, php-format +msgid "To use RocketCDN, replace your CNAME with %1$s%2$s%3$s." +msgstr "Da biste koristili RocketCDN, zamijenite svoj CNAME s %1$s%2$s%3$s." + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:144 +#, php-format +msgid "%1$sMore Info%2$s" +msgstr "%1$sViše informacija%2$s" + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:190 +msgid "Manage Subscription" +msgstr "Upravljanje pretplatom" + +#: inc/Engine/CDN/RocketCDN/RESTSubscriber.php:137 +msgid "RocketCDN enabled" +msgstr "Omogućen RocketCDN" + +#: inc/Engine/CDN/RocketCDN/RESTSubscriber.php:160 +msgid "RocketCDN disabled" +msgstr "RocketCDN onemogućen" + +#: inc/Engine/Cache/AdminSubscriber.php:118 inc/admin/admin.php:71 +#: inc/admin/admin.php:92 inc/deprecated/3.5.php:908 +msgid "Clear this cache" +msgstr "Očisti ovo iz cachea" + +#: inc/Engine/Cache/WPCache.php:330 +msgid "WP_CACHE value" +msgstr "WP_CACHE vrijednost" + +#: inc/Engine/Cache/WPCache.php:351 +msgid "" +"The WP_CACHE constant needs to be set to true for WP Rocket cache to work " +"properly" +msgstr "" +"WP_CACHE konstanta mora biti postavljena na true da bi WP Rocket cache radio" +" ispravno" + +#: inc/Engine/Cache/WPCache.php:360 +msgid "WP_CACHE is set to true" +msgstr "WP_CACHE je postavljen na true" + +#: inc/Engine/Cache/WPCache.php:368 +msgid "WP_CACHE is not set" +msgstr "WP_CACHE nijje postavljen" + +#: inc/Engine/Cache/WPCache.php:376 +msgid "WP_CACHE is set to false" +msgstr "WP_CACHE je postavljen na false" + +#: inc/Engine/CriticalPath/APIClient.php:64 +#, php-format +msgid "Critical CSS for %1$s not generated. Error: %2$s" +msgstr "Ključni CSS za %1$s nije generiran. Greška: %2$s" + +#: inc/Engine/CriticalPath/APIClient.php:170 +#: inc/Engine/CriticalPath/DataManager.php:66 +#, php-format +msgid "" +"Critical CSS for %1$s on mobile not generated. Error: The API returned an " +"empty response." +msgstr "" +"Ključni CSS za %1$s na mobilnim uređajima nije generiran. Greška: API je " +"vratio prazan odgovor." + +#: inc/Engine/CriticalPath/APIClient.php:173 +#: inc/Engine/CriticalPath/DataManager.php:69 +#, php-format +msgid "" +"Critical CSS for %1$s not generated. Error: The API returned an empty " +"response." +msgstr "" +"Ključni CSS za %1$s nije generiran. Greška: API je vratio prazan odgovor." + +#: inc/Engine/CriticalPath/APIClient.php:185 +#, php-format +msgid "Critical CSS for %1$s on mobile not generated." +msgstr "Ključni CSS za %1$s na mobilnim uređajima nije generiran." + +#: inc/Engine/CriticalPath/APIClient.php:187 +#: inc/Engine/CriticalPath/ProcessorService.php:193 +#, php-format +msgid "Critical CSS for %1$s not generated." +msgstr "Ključni CSS za %1$s nije generiran." + +#: inc/Engine/CriticalPath/APIClient.php:195 +#, php-format +msgid "" +"Critical CSS for %1$s on mobile not generated. Error: The API returned an " +"invalid response code." +msgstr "" +"Ključni CSS za %1$s na mobilnim uređajima nije generiran. Greška: API je " +"vratio nevažeći kôd odgovora." + +#: inc/Engine/CriticalPath/APIClient.php:197 +#, php-format +msgid "" +"Critical CSS for %1$s not generated. Error: The API returned an invalid " +"response code." +msgstr "" +"Ključni CSS za %1$s nije generiran. Greška: API je vratio nevažeći kôd " +"odgovora." + +#: inc/Engine/CriticalPath/APIClient.php:205 +#: inc/Engine/CriticalPath/ProcessorService.php:200 +#, php-format +msgid "Error: %1$s" +msgstr "Greška: %1$s" + +#: inc/Engine/CriticalPath/Admin/Admin.php:260 +msgid "Regenerate Critical Path CSS" +msgstr "Obnovi putanju ključnog CSS-a" + +#: inc/Engine/CriticalPath/Admin/Post.php:132 +#: views/cpcss/metabox/generate.php:47 +msgid "Generate Specific CPCSS" +msgstr "Stvaranje specifičnog CPCSS-a" + +#: inc/Engine/CriticalPath/Admin/Post.php:133 +#: views/cpcss/metabox/generate.php:45 +msgid "Regenerate specific CPCSS" +msgstr "Ponovno stvaranje specifičnog CPCSS-a" + +#: inc/Engine/CriticalPath/Admin/Post.php:199 +msgid "%l to use this feature." +msgstr "%l da koristite ovu značajku." + +#: inc/Engine/CriticalPath/Admin/Post.php:202 +#, php-format +msgid "Publish the %s" +msgstr "Objavi %s" + +#: inc/Engine/CriticalPath/Admin/Post.php:203 +msgid "Enable Optimize CSS delivery in WP Rocket settings" +msgstr "Omogući Optimiziranje isporuke CSS-a u postavkama WP Rocketa" + +#: inc/Engine/CriticalPath/Admin/Post.php:204 +msgid "Enable Optimize CSS delivery in the options above" +msgstr "Omogući Optimiziranje isporuke CSS-a u postavkama iznad" + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:147 +msgid "Critical CSS generation is currently running." +msgstr "Trenutno je aktivno generiranje ključnog CSS-a." + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:152 +#: inc/Engine/Preload/PreloadSubscriber.php:242 +#, php-format +msgid "Go to the %1$sWP Rocket settings%2$s page to track progress." +msgstr "Idite na stranicu%1$s postavki WP Rocketa%2$s za praćenje napretka." + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:366 +#, php-format +msgid "" +"Critical CSS generation is currently running: %1$d of %2$d page types " +"completed. (Refresh this page to view progress)" +msgstr "" +"Trenutno se izvodi generiranje ključnog CSS-a: %1$d od %2$d vrsta stranica " +"dovršeno (Osvježite ovu stranicu kako biste vidjeli napredak)" + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:438 +#, php-format +msgid "Critical CSS generation finished for %1$d of %2$d page types." +msgstr "Generiranje ključnog CSS-a za %1$d od %2$d vrsta stranica." + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:445 +msgid "Critical CSS generation encountered one or more errors." +msgstr "Generiranje ključnog CSS-a naišlo je na jednu ili više pogrešaka." + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:445 +msgid "Learn more." +msgstr "Saznaj više" + +#: inc/Engine/CriticalPath/DataManager.php:102 +msgid "Critical CSS file for mobile does not exist" +msgstr "Datoteka ključnog CSS-a za mobilne uređaje ne postoji." + +#: inc/Engine/CriticalPath/DataManager.php:104 +msgid "Critical CSS file does not exist" +msgstr "Datoteka ključnog CSS-a ne postoji." + +#: inc/Engine/CriticalPath/DataManager.php:116 +msgid "Critical CSS file for mobile cannot be deleted" +msgstr "Datoteka kritičnog CSS-a za mobilne uređaje ne može biti izbrisana" + +#: inc/Engine/CriticalPath/DataManager.php:118 +msgid "Critical CSS file cannot be deleted" +msgstr "Datoteka kritičnog CSS-a ne može biti izbrisana" + +#: inc/Engine/CriticalPath/ProcessorService.php:186 +#, php-format +msgid "Mobile Critical CSS for %1$s not generated." +msgstr "Ključni CSS na mobilnim uređajima za%1$s nije generiran." + +#: inc/Engine/CriticalPath/ProcessorService.php:227 +#, php-format +msgid "Critical CSS for %s in progress." +msgstr "Ključni CSS za %s u tijeku." + +#: inc/Engine/CriticalPath/ProcessorService.php:261 +#, php-format +msgid "Mobile Critical CSS for %s generated." +msgstr "Ključni CSS na mobilnim uređajima za %s je generiran." + +#: inc/Engine/CriticalPath/ProcessorService.php:272 +#, php-format +msgid "Critical CSS for %s generated." +msgstr "Ključni CSS za %s je generiran." + +#: inc/Engine/CriticalPath/ProcessorService.php:294 +msgid "Critical CSS file deleted successfully." +msgstr "Datoteka kritičnog CSS-a uspješno izbrisana." + +#: inc/Engine/CriticalPath/ProcessorService.php:316 +#, php-format +msgid "Mobile Critical CSS for %1$s timeout. Please retry a little later." +msgstr "Ključni CSS na mobilnim uređajima za %1$s timeout. Probajte kasnije." + +#: inc/Engine/CriticalPath/ProcessorService.php:329 +#, php-format +msgid "Critical CSS for %1$s timeout. Please retry a little later." +msgstr "Ključni CSS za %1$s timeout. Probajte kasnije." + +#: inc/Engine/CriticalPath/RESTWP.php:141 +msgid "Mobile CPCSS generation not enabled." +msgstr "Generiranje mobilnog CPCSS-a nije aktivirano." + +#: inc/Engine/CriticalPath/RESTWPPost.php:36 +#: inc/Engine/CriticalPath/RESTWPPost.php:69 +msgid "Requested post does not exist." +msgstr "Zatraženi post ne postoji." + +#: inc/Engine/CriticalPath/RESTWPPost.php:46 +msgid "Cannot generate CPCSS for unpublished post." +msgstr "Ne može se generirati CPCSS za neobjavljeni post." + +#: inc/Engine/HealthCheck/HealthCheck.php:82 inc/deprecated/3.5.php:868 +msgid "" +"The following scheduled event failed to run. This may indicate the CRON " +"system is not running properly, which can prevent some WP Rocket features " +"from working as intended:" +msgid_plural "" +"The following scheduled events failed to run. This may indicate the CRON " +"system is not running properly, which can prevent some WP Rocket features " +"from working as intended:" +msgstr[0] "" +"Sljedeći planirani događaj nije uspio. To može značiti da CRON sustav ne " +"radi ispravno, što može spriječiti da neke značajke WP Rocketa rade kako je " +"predviđeno:" +msgstr[1] "" +"Sljedeći planirani događaji nisu uspjeli. To može značiti da CRON sustav ne " +"radi ispravno, što može spriječiti da neke značajke WP Rocketa rade kako je " +"predviđeno:" +msgstr[2] "" +"Sljedeći planirani događaji nisu uspjeli. To može značiti da CRON sustav ne " +"radi ispravno, što može spriječiti da neke značajke WP Rocketa rade kako je " +"predviđeno:" + +#: inc/Engine/HealthCheck/HealthCheck.php:88 inc/deprecated/3.5.php:877 +msgid "Please contact your host to check if CRON is working." +msgstr "Molimo kontaktirajte svoj hosting kako biste provjerili radi li CRON." + +#: inc/Engine/HealthCheck/HealthCheck.php:142 +msgid "Scheduled Cache Purge" +msgstr "Zakazano čišćene cachea" + +#: inc/Engine/HealthCheck/HealthCheck.php:143 +msgid "Scheduled Database Optimization" +msgstr "Zakazana optimizacija baze podataka" + +#: inc/Engine/HealthCheck/HealthCheck.php:144 +msgid "Database Optimization Process" +msgstr "Postupak optimizacije baze podataka" + +#: inc/Engine/HealthCheck/HealthCheck.php:145 +msgctxt "noun" +msgid "Preload" +msgstr "Predučitavanje" + +#: inc/Engine/HealthCheck/HealthCheck.php:146 +msgid "Critical Path CSS Generation Process" +msgstr "Postupak stvaranja ključnog puta CSS-a" + +#: inc/Engine/Optimization/DelayJS/Admin/Settings.php:104 +msgid "Restore Defaults" +msgstr "Vrati na zadano" + +#: inc/Engine/Preload/Homepage.php:153 +#, php-format +msgid "" +"Preload encountered an error. Could not gather links on %1$s because of the " +"following error: %2$s. %3$sLearn more%4$s." +msgstr "" +"Predučitavanje je naišlo na pogrešku. Nije bilo moguće prikupiti veze %1$s " +"zbog sljedeće pogreške: %2$s. %3$sSaznaj više%4$s." + +#: inc/Engine/Preload/Homepage.php:166 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: %2$s. Security measures could be preventing access. " +"%3$sLearn more%4$s." +msgstr "" +"Predučitavanje je naišlo na pogrešku. %1$s nije dostupan zbog sljedećeg koda" +" odgovora: %2$s. Sigurnosne mjere mogu spriječavati pristup %3$sSaznaj " +"više%4$s." + +#: inc/Engine/Preload/Homepage.php:172 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: 404. Please make sure your homepage is accessible in your " +"browser. %2$sLearn more%3$s." +msgstr "" +"Predučitavanje je naišlo na pogrešku. %1$s nije dostupan zbog sljedećeg koda" +" odgovora: 404. Provjerite je li početna stranica dostupna u pregledniku. " +"%2$sSaznaj više%3$s." + +#: inc/Engine/Preload/Homepage.php:178 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: 500. Please check with your web host about server access. " +"%2$sLearn more%3$s." +msgstr "" +"Predučitavanje je naišlo na pogrešku. %1$s nije dostupan zbog sljedećeg koda" +" odgovora: 500. Provjerite pristup poslužitelju kod svog web hosta. " +"%2$sSaznaj više%3$s." + +#: inc/Engine/Preload/Homepage.php:184 +#, php-format +msgid "" +"Preload encountered an error. Could not gather links on %1$s because it " +"returned the following response code: %2$s. %3$sLearn more%4$s." +msgstr "" +"Predučitavanje je naišlo na pogrešku. Nije moguće prikupiti veze na %1$s jer" +" je vraćen sljedeći kod odgovora: %2$s. %3$sSaznaj više%4$s." + +#: inc/Engine/Preload/PreloadSubscriber.php:237 +msgid "Preload: WP Rocket has started preloading your website." +msgstr "" +"Predučitavanje: WP Rocket je počeo s predučitavanjem vaše web-lokacije." + +#: inc/Engine/Preload/PreloadSubscriber.php:283 +#, php-format +msgid "" +"Preload: %1$s uncached page has now been preloaded. (refresh to see " +"progress)" +msgid_plural "" +"Preload: %1$s uncached pages have now been preloaded. (refresh to see " +"progress)" +msgstr[0] "" +"Predučitavanje: %1$s ne-cachirana stranica je predučitana (osvježite kako " +"biste vidjeli napredak)" +msgstr[1] "" +"Predučitavanje: %1$s ne-cachiranih stranica je predučitano (osvježite kako " +"biste vidjeli napredak)" +msgstr[2] "" +"Predučitavanje: %1$s ne-cachiranih stranica je predučitano (osvježite kako " +"biste vidjeli napredak)" + +#: inc/Engine/Preload/PreloadSubscriber.php:292 +msgid "The following error happened during gathering of the URLs to preload:" +msgid_plural "" +"The following errors happened during gathering of the URLs to preload:" +msgstr[0] "" +"Tijekom prikupljanja URL-ova za predučitavanje došlo je do sljedeće " +"pogreške:" +msgstr[1] "" +"Tijekom prikupljanja URL-ova za predučitavanje došlo je do sljedećih " +"pogrešaka:" +msgstr[2] "" +"Tijekom prikupljanja URL-ova za predučitavanje došlo je do sljedećih " +"pogrešaka:" + +#: inc/Engine/Preload/PreloadSubscriber.php:344 +#, php-format +msgid "Preload complete: %d pages have been cached." +msgstr "Predučitavanje završeno: %d stranica je cachirano." + +#: inc/Engine/Preload/Sitemap.php:150 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not gather links on %1$s because" +" of the following error: %2$s. %3$sLearn more%4$s." +msgstr "" +"Predučitavanje mape web-lokacije je naišlo na pogrešku. Nije moguće " +"prikupiti veze na %1$s jer je vraćen sljedeća pogreška: %2$s. %3$sSaznaj " +"više%4$s." + +#: inc/Engine/Preload/Sitemap.php:165 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: %2$s. Security measures could be preventing access." +" %3$sLearn more%4$s." +msgstr "" +"Predučitavanje mape web-lokacije je naišlo na pogrešku. %1$s nije dostupan " +"jer je vraćen sljedeći kod odgovora: %2$s. Sigurnosne mjere možda " +"spriječavaju pristup. %3$sSaznaj više%4$s." + +#: inc/Engine/Preload/Sitemap.php:170 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: 404. Please make sure you entered the correct " +"sitemap URL and it is accessible in your browser. %2$sLearn more%3$s." +msgstr "" +"Predučitavanje mape web-lokacije je naišlo na pogrešku. %1$s nije dostupan " +"je je vraćen sljedeći kod odgovora: 404. Provjerite jeste li unijeli " +"ispravan URL mape web-lokacije i da je isti dostupan u vašem pregledniku. " +"%2$sSaznaj više%3$s." + +#: inc/Engine/Preload/Sitemap.php:175 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: 500. Please check with your web host about server " +"access. %2$sLearn more%3$s." +msgstr "" +"Predučitavanje mape web-lokacije je naišlo na pogrešku. %1$s nije dostupan " +"zbog sljedećeg koda odgovora: 500. Provjerite pristup poslužitelju kod svog " +"web hosta. %2$sSaznaj više%3$s." + +#: inc/Engine/Preload/Sitemap.php:180 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not gather links on %1$s because" +" it returned the following response code: %2$s. %3$sLearn more%4$s." +msgstr "" +"Predučitavanje mape web-lokacije je naišlo na pogrešku. Nije moguće " +"prikupiti veze na %1$s jer je vraćen sljedeći kôd odgovora: %2$s. %3$sSaznaj" +" više%4$s." + +#: inc/Engine/Preload/Sitemap.php:196 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not collect links from %1$s " +"because the file is empty. %2$sLearn more%3$s." +msgstr "" +"Predučitavanje mape web-lokacije je naišlo na pogrešku. Nije moguće " +"prikupiti veze s %1$s jer je datoteka prazna %2$sSaznaj više%3$s." + +#: inc/Engine/Preload/Sitemap.php:217 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not collect links from %1$s " +"because of an error during the XML sitemap parsing. %2$sLearn more%3$s." +msgstr "" +"Predučitavanje mape web-lokacije je naišlo na pogrešku. Nije moguće " +"prikupiti veze s %1$s zbog pogreške prilikom parsanja XML mape web-" +"poslužitelja. %2$sSaznaj više%3$s." + +#: inc/Engine/Preload/SitemapPreloadSubscriber.php:120 +#, php-format +msgid "" +"%1$sSimpleXML PHP extension%2$s is not enabled on your server. Please " +"contact your host to enable it before running sitemap-based cache " +"preloading." +msgstr "" +"%1$sSimpleXML PHP ekstenzija%2$s nije omogućena na vašem poslužitelju. " +"Obratite se svom hostu da biste ju omogućili prije pokretanja predučitavanja" +" cachea mape web-lokacije." + +#: inc/ThirdParty/Hostings/Cloudways.php:82 +#, php-format +msgid "" +"Varnish auto-purge will be automatically enabled once Varnish is enabled on " +"your %s server." +msgstr "" +"Varnish automatsko pročišćavanje automatski će se omogućiti nakon što " +"omogućite Varnish na vašem %s serveru." + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:78 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"Please deactivate the following %s option which conflicts with WP Rocket " +"features:" +msgid_plural "" +"Please deactivate the following %s options which conflict with WP Rocket " +"features:" +msgstr[0] "" +"Isključite sljedeću %s opciju koja je u sukobu s WP Rocket značajkama:" +msgstr[1] "" +"Isključite sljedeće %s opcije koje su u sukobu s WP Rocket značajkama:" +msgstr[2] "" +"Isključite sljedeće %s opcije koje su u sukobu s WP Rocket značajkama:" + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:151 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sdisable emoji%3$s conflicts with WP Rockets %2$sdisable emoji%3$s" +msgstr "" +"%1$s %2$sdisable emoji%3$s conflicts with WP Rockets %2$sdisable emoji%3$s" + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:187 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sGZIP compression%3$s conflicts with WP Rocket %2$sGZIP " +"compression%3$s" +msgstr "" +"%1$s %2$sGZIP kompresija%3$s je u sukobu s WP Rocket %2$sGZIP " +"kompresijom%3$s" + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:223 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sbrowser caching%3$s conflicts with WP Rocket %2$sbrowser " +"caching%3$s" +msgstr "" +"%1$s %2$scacheiranje preglednika %3$s je u sukobu s WP Rocket " +"%2$scacheiranjem preglednika%3$s" + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:255 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$spage caching%3$s conflicts with WP Rocket %2$spage caching%3$s" +msgstr "" +"%1$s %2$scaching za stranice%3$s je u sukobu s WP Rocket %2$scachingom " +"stranica%3$s" + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:289 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sasset optimization%3$s conflicts with WP Rocket %2$sfile " +"optimization%3$s" +msgstr "" +"%1$s %2$soptimizacija resursa%3$s je u sukobu s WP Rocket %2$soptimizacijom " +"datoteka%3$s" + +#: inc/ThirdParty/Plugins/Smush.php:110 inc/ThirdParty/Plugins/Smush.php:128 +msgid "Smush" +msgstr "Smush" + +#: inc/admin/admin.php:18 inc/common/admin-bar.php:367 +#: inc/deprecated/deprecated.php:1787 +msgid "Support" +msgstr "Podrška" + +#: inc/admin/admin.php:20 +msgid "Docs" +msgstr "Dokumenti" + +#: inc/admin/admin.php:22 inc/common/admin-bar.php:355 +msgid "FAQ" +msgstr "Česta pitanja" + +#: inc/admin/admin.php:24 inc/common/admin-bar.php:64 +msgid "Settings" +msgstr "Postavke" + +#: inc/admin/admin.php:225 inc/admin/admin.php:240 +#: inc/classes/class-wp-rocket-requirements-check.php:203 +#: inc/classes/class-wp-rocket-requirements-check.php:214 +#, php-format +msgid "%s Update Rollback" +msgstr "%s Vraćanje ažuriranja" + +#: inc/admin/admin.php:266 +#, php-format +msgid "%1$sReturn to WP Rocket%2$s or %3$sgo to Plugins page%2$s" +msgstr "%1$sVratite se na WP Rocket%2$s ili %3$s idite na stranicu Dodaci%2$s" + +#: inc/admin/admin.php:503 +msgid "Settings import failed: you do not have the permissions to do this." +msgstr "Uvoz postavki nije uspio: nemate dopuštenje za to." + +#: inc/admin/admin.php:507 +msgid "Settings import failed: no file uploaded." +msgstr "Uvoz postavki nije uspio: datoteka nije prenesena." + +#: inc/admin/admin.php:511 +msgid "Settings import failed: incorrect filename." +msgstr "Settings import nije uspio: pogrešan naziv fajla." + +#: inc/admin/admin.php:522 +msgid "Settings import failed: incorrect filetype." +msgstr "Settings import nije uspio: pogrešna vrsta fajla." + +#: inc/admin/admin.php:532 +msgid "Settings import failed: " +msgstr "Uvoz postavki nije uspio:" + +#: inc/admin/admin.php:548 +msgid "Settings import failed: unexpected file content." +msgstr "Uvoz postavki nije uspio: neočekivani sadržaj datoteke." + +#: inc/admin/admin.php:569 +msgid "Settings imported and saved." +msgstr "Postavke uvezene i spremljene." + +#: inc/admin/options.php:149 +#, php-format +msgid "%1$s: %2$s." +msgstr "%1$s: %2$s." + +#: inc/admin/options.php:159 +msgid "The following pattern is invalid and has been removed:" +msgid_plural "The following patterns are invalid and have been removed:" +msgstr[0] "Sljedeći je obrazac nevažeći i uklonjen:" +msgstr[1] "Sljedeći su obrasci nevažeći i uklonjeni:" +msgstr[2] "Sljedeći su obrasci nevažeći i uklonjeni:" + +#: inc/admin/ui/meta-boxes.php:14 inc/admin/ui/notices.php:768 +#: inc/common/admin-bar.php:85 inc/common/admin-bar.php:137 +#: views/settings/page-sections/dashboard.php:124 +msgid "Clear cache" +msgstr "Očisti cache" + +#: inc/admin/ui/meta-boxes.php:36 +msgid "WP Rocket Options" +msgstr "Opcije WP Rocketa" + +#: inc/admin/ui/meta-boxes.php:65 +msgid "Never cache this page" +msgstr "Nikad ne spremaj ovu stranicu." + +#: inc/admin/ui/meta-boxes.php:69 +msgid "Activate these options on this post:" +msgstr "Aktivirajte ove opcije na ovom članku:" + +#: inc/admin/ui/meta-boxes.php:72 +msgid "LazyLoad for images" +msgstr "LazyLoad za slike" + +#: inc/admin/ui/meta-boxes.php:73 +msgid "LazyLoad for iframes/videos" +msgstr "LazyLoad za iframes/videa" + +#: inc/admin/ui/meta-boxes.php:74 +msgid "Minify/combine CSS" +msgstr "Minificirati/kombinirati CSS" + +#: inc/admin/ui/meta-boxes.php:75 +msgid "Minify/combine JS" +msgstr "Minificirati/kombinirati JS" + +#: inc/admin/ui/meta-boxes.php:77 +msgid "Optimize CSS Delivery" +msgstr "Optimizirajte isporuku CSS-a" + +#: inc/admin/ui/meta-boxes.php:78 +msgid "Defer JS" +msgstr "Defer JS" + +#: inc/admin/ui/meta-boxes.php:85 +#, php-format +msgid "Activate first the %s option." +msgstr "Prvo aktivirajte %s opciju." + +#: inc/admin/ui/meta-boxes.php:101 +#, php-format +msgid "" +"%1$sNote:%2$s None of these options will be applied if this post has been " +"excluded from cache in the global cache settings." +msgstr "" +"%1$sNapomena:%2$s Nijedna od ovih opcija neće se primijeniti ako je ovaj " +"post isključen iz cachea u globalnim postavkama cachea." + +#: inc/admin/ui/notices.php:25 inc/admin/ui/notices.php:38 +#, php-format +msgid "" +"%1$s has not been deactivated due to missing writing permissions.
      \n" +"Make %2$s writeable and retry deactivation, or force deactivation now:" +msgstr "" +"%1$s nije deaktiviran zbog nedostatka dozvola za zapisivanje.
      \n" +"Omogućite zapisivanje%2$s i ponovno pokušajte deaktivaciju ili odmah prisilno deaktivirajte:" + +#: inc/admin/ui/notices.php:91 +#, php-format +msgid "" +"%s: One or more plugins have been enabled or disabled, " +"clear the cache if they affect the front end of your site." +msgstr "" +"%s: Jedan ili više dodataka su omogućeni ili onemogućeni. " +"Ako želite utjecati na pravilan prikaz web-lokacije, očistite cache." + +#: inc/admin/ui/notices.php:184 +msgid "" +"WP Rocket Cloudflare Add-on provides similar functionalities. They can not " +"be active at the same time." +msgstr "" +"WP Rocket Cloudflare dodatak pruža slične funkcionalnosti. Ne mogu " +"istovremeno biti aktivni." + +#: inc/admin/ui/notices.php:208 +#, php-format +msgid "" +"%s: The following plugins are not compatible with this " +"plugin and may cause unexpected results:" +msgstr "" +"%s : Sljedeći pluginovi nisu kompatibilni s ovim pluginom i" +" to može izazvati neočekivane rezultate:" + +#: inc/admin/ui/notices.php:214 +msgid "Deactivate" +msgstr "Deaktiviraj" + +#: inc/admin/ui/notices.php:256 +msgid "" +"WP Rocket Footer JS is not an official add-on. It prevents some options in " +"WP Rocket from working correctly. Please deactivate it if you have problems." +msgstr "" +"WP Rocket Footer JS nije službeni dodatak. On spriječava da neke opcije WP " +"Rocketa rade ispravno. Isključite ga ako primjetite problem." + +#: inc/admin/ui/notices.php:296 +#, php-format +msgid "" +"Endurance Cache is currently enabled, which will conflict with WP Rocket " +"Cache. Please set the Endurance Cache cache level to Off (Level 0) on the " +"%1$sSettings > General%2$s page to prevent any issues." +msgstr "" +"Endurance Cache je trenutno uključen, što će uzrokovati sukob s WP Rocket " +"Cacheom. Molimo, postavite Endurance Cache razinu cachea na Off (Level 0) na" +" stranici %1$sPostavke > Općenito%2$s kako biste spriječili probleme." + +#: inc/admin/ui/notices.php:317 +#, php-format +msgid "" +"%1$s: A custom permalink structure is required for the plugin to work " +"properly. %2$sGo to permalinks settings%3$s" +msgstr "" +"%1$s: Za ispravan rad dodatka potrebna je prilagođena struktura stalnih " +"veza. %2$sIdite na postavke stalnih veza%3$s" + +#: inc/admin/ui/notices.php:364 +#, php-format +msgid "" +"%s could not modify the .htaccess file due to missing writing permissions." +msgstr "" +"%s nije mogao izmijeniti .htaccess datoteku zbog nedostajućih dozvola " +"pisanja." + +#: inc/admin/ui/notices.php:370 inc/admin/ui/notices.php:845 +#, php-format +msgid "Troubleshoot: %1$sHow to make system files writeable%2$s" +msgstr "" +"Rješavanje problema:: %1$sKako omogućiti zapisivanje u sistemske " +"datoteke%2$s" + +#: inc/admin/ui/notices.php:372 inc/admin/ui/notices.php:847 +msgid "" +"https://docs.wp-rocket.me/article/626-how-to-make-system-files-htaccess-wp-" +"config-writeable/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://docs.wp-rocket.me/article/626-how-to-make-system-files-htaccess-wp-" +"config-writeable/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: inc/admin/ui/notices.php:378 +msgid "" +"Don’t worry, WP Rocket’s page caching and settings will still function " +"correctly." +msgstr "Ne brinite, caching i postavke WP Rocketa će i dalje raditi ispravno." + +#: inc/admin/ui/notices.php:378 +msgid "" +"For optimal performance, adding the following lines into your .htaccess is " +"recommended (not required):" +msgstr "" +"Za optimalne performanse, preporučuje se dodavanje sljedećih redaka u vašu " +".htaccess datoteku (nije obvezno):" + +#: inc/admin/ui/notices.php:525 +#, php-format +msgid "" +"%1$s is good to go! %2$sTest your load time%4$s, or visit your " +"%3$ssettings%4$s." +msgstr "" +"%1$s je spreman! %2$sTestirajte vrijeme učitavanja%4$s, ili posjetite vaše " +"%3$spostavke%4$s." + +#: inc/admin/ui/notices.php:598 +msgid "" +"Would you allow WP Rocket to collect non-sensitive diagnostic data from this" +" website?" +msgstr "" +"Dopuštate li WP Rocketu da prikupi osnovne dijagnostičke podatke s ove web " +"stranice?" + +#: inc/admin/ui/notices.php:599 +msgid "This would help us to improve WP Rocket for you in the future." +msgstr "To bi nam pomoglo da u budućnosti poboljšamo WP Rocket." + +#: inc/admin/ui/notices.php:605 +msgid "What info will we collect?" +msgstr "Koje ćemo podatke prikupiti?" + +#: inc/admin/ui/notices.php:610 +msgid "" +"Below is a detailed view of all data WP Rocket will collect if granted " +"permission. WP Rocket will never transmit any domain names or email " +"addresses (except for license validation), IP addresses, or third-party API " +"keys." +msgstr "" +"U nastavku se nalazi detaljan pregled svih podataka koje će WP Rocket " +"prikupiti ako dobije dozvolu. WP Rocket nikada neće prenijeti imena domena " +"ili adrese e-pošte (osim za provjeru licence), IP adrese ili API ključeve " +"treće strane." + +#: inc/admin/ui/notices.php:619 +msgid "Yes, allow" +msgstr "Da, dozvoli" + +#: inc/admin/ui/notices.php:622 +msgid "No, thanks" +msgstr "Ne, hvala" + +#: inc/admin/ui/notices.php:661 +msgid "Thank you!" +msgstr "Hvala vam!" + +#: inc/admin/ui/notices.php:666 +msgid "WP Rocket now collects these metrics from your website:" +msgstr "WP Rocket sada prikuplja ove podatke s vaše web-lokacije:" + +#: inc/admin/ui/notices.php:704 +#, php-format +msgid "%s: Cache cleared." +msgstr "%s: Cache očišćen." + +#: inc/admin/ui/notices.php:711 +#, php-format +msgid "%s: Post cache cleared." +msgstr "%s: Cache objava očišćen." + +#: inc/admin/ui/notices.php:718 +#, php-format +msgid "%s: Term cache cleared." +msgstr "%s: Cache pojmova očišćen." + +#: inc/admin/ui/notices.php:725 +#, php-format +msgid "%s: User cache cleared." +msgstr "%s: Cache korisnika očišćen." + +#: inc/admin/ui/notices.php:771 +msgid "Stop Preload" +msgstr "Zaustavi predučitavanje" + +#: inc/admin/ui/notices.php:789 +msgid "Force deactivation " +msgstr "Prisili deaktiviranje" + +#: inc/admin/ui/notices.php:802 +msgid "The following code should have been written to this file:" +msgstr "Sljedeći kôd bi trebao biti zapisan u ovu datoteku:" + +#: inc/admin/ui/notices.php:812 views/settings/page-sections/dashboard.php:46 +msgid "Dismiss this notice." +msgstr "Uklonite ovu obavijest." + +#: inc/admin/ui/notices.php:833 +#, php-format +msgid "%s cannot configure itself due to missing writing permissions." +msgstr "%s se ne može konfigurirati zbog nedostatka dozvola za pisanje." + +#: inc/admin/ui/notices.php:839 +#, php-format +msgid "Affected file/folder: %s" +msgstr "Utjecana datoteka/mapa: %s" + +#: inc/classes/admin/Database/class-optimization.php:47 +msgid "Transients" +msgstr "Transienti" + +#: inc/classes/admin/Database/class-optimization.php:48 +msgid "Tables" +msgstr "Tablice" + +#: inc/classes/admin/class-logs.php:124 +msgid "The debug file could not be deleted." +msgstr "Datoteku za uklanjanje pogrešaka (debug) nije moguće izbrisati." + +#: inc/classes/class-wp-rocket-requirements-check.php:147 +#, php-format +msgid "To function properly, %1$s %2$s requires at least:" +msgstr "Za ispravno funkcioniranje %1$s %2$s potrebno je koristiti barem:" + +#: inc/classes/class-wp-rocket-requirements-check.php:151 +#, php-format +msgid "" +"PHP %1$s. To use this WP Rocket version, please ask your web host how to " +"upgrade your server to PHP %1$s or higher." +msgstr "" +"PHP %1$s. Da biste koristili ovu WP Rocket verziju, molimo pitajte vašeg web" +" host kako nadograditi vaš poslužitelj na PHP %1$s ili više. " + +#: inc/classes/class-wp-rocket-requirements-check.php:156 +#, php-format +msgid "" +"WordPress %1$s. To use this WP Rocket version, please upgrade WordPress to " +"version %1$s or higher." +msgstr "" +"WordPress %1$s. Da biste koristili ovu verziju WP Rocketa, nadogradite " +"WordPress na verziju %1$s ili noviju." + +#: inc/classes/class-wp-rocket-requirements-check.php:159 +msgid "" +"If you are not able to upgrade, you can rollback to the previous version by " +"using the button below." +msgstr "" +"Ako ne možete nadograditi, možete se vratiti na prethodnu verziju pomoću " +"gumba u nastavku." + +#: inc/classes/class-wp-rocket-requirements-check.php:161 +#: inc/deprecated/deprecated.php:1947 +#, php-format +msgid "Re-install version %s" +msgstr "Ponovno instalirajte verziju %s" + +#: inc/classes/dependencies/wp-media/background-processing/wp-background-process.php:439 +#, php-format +msgid "Every %d Minutes" +msgstr "Svake %d minute" + +#: inc/classes/logger/class-logger.php:254 +#: inc/classes/logger/class-logger.php:286 +msgid "The log file does not exist." +msgstr "Log datoteka ne postoji." + +#: inc/classes/logger/class-logger.php:260 +#: inc/classes/logger/class-logger.php:292 +msgid "The log file could not be read." +msgstr "Log datoteku nije moguće pročitati." + +#: inc/classes/logger/class-logger.php:279 +msgid "The logs are not saved into a file." +msgstr "Log zapisi nisu spremljeni u datoteku." + +#: inc/classes/subscriber/Cache/class-expired-cache-purge-subscriber.php:128 +msgid "WP Rocket Expired Cache Interval" +msgstr "WP Rocket interval isteklog cachea" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:269 +#, php-format +msgid "" +"You are using %1$s to serve WebP images so you do not need to enable this " +"option. If you prefer to have WP Rocket serve WebP for you instead, please " +"disable them from serving in %1$s. %2$sMore info%3$s" +msgid_plural "" +"You are using %1$s to serve WebP images so you do not need to enable this " +"option. If you prefer to have WP Rocket serve WebP for you instead, please " +"disable them from serving in %1$s. %2$sMore info%3$s" +msgstr[0] "" +"You are using %1$s to serve WebP images so you do not need to enable this " +"option. If you prefer to have WP Rocket serve WebP for you instead, please " +"disable them from serving in %1$s. %2$sMore info%3$s" +msgstr[1] "" +"Koristite %1$s za posluživanje WebP slika te stoga ne morate aktivirati ovu " +"opciju. Ako želite da WP Rocket poslužuje WebP slike, isključite " +"posluživanje preko %1$s. %2$sViše informacija%3$s" +msgstr[2] "" +"Koristite %1$s za posluživanje WebP slika te stoga ne morate aktivirati ovu " +"opciju. Ako želite da WP Rocket poslužuje WebP slike, isključite " +"posluživanje preko %1$s. %2$sViše informacija%3$s" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:280 +msgid "WebP cache is disabled by filter." +msgstr "WebP cache je onemogućen pomoću filtera." + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:290 +#: inc/classes/subscriber/Media/class-webp-subscriber.php:316 +#, php-format +msgid "" +"You are using %1$s to convert images to WebP. If you want WP Rocket to serve" +" them for you, activate this option. %2$sMore info%3$s" +msgid_plural "" +"You are using %1$s to convert images to WebP. If you want WP Rocket to serve" +" them for you, activate this option. %2$sMore info%3$s" +msgstr[0] "" +"Koristite %1$s za konverziju slika u WebP format. Ukoliko želite da ih " +"poslužuje WP Rocket, aktivirajte ovu opciju. %2$sViše informacija%3$s" +msgstr[1] "" +"Koristite %1$s za konverziju slika u WebP format. Ukoliko želite da ih " +"poslužuje WP Rocket, aktivirajte ovu opciju. %2$sViše informacija%3$s" +msgstr[2] "" +"Koristite %1$s za konverziju slika u WebP format. Ukoliko želite da ih " +"poslužuje WP Rocket, aktivirajte ovu opciju. %2$sViše informacija%3$s" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:302 +#: inc/classes/subscriber/Media/class-webp-subscriber.php:328 +#, php-format +msgid "" +"You are using %1$s to convert images to WebP. WP Rocket will create separate" +" cache files to serve your WebP images. %2$sMore info%3$s" +msgid_plural "" +"You are using %1$s to convert images to WebP. WP Rocket will create separate" +" cache files to serve your WebP images. %2$sMore info%3$s" +msgstr[0] "" +"Koristite %1$s za konverziju slika u WebP format. WP Rocket će kreirati " +"zasebne cache datoteke za posluživanje vaših WebP slika. %2$sViše " +"informacija%3$s" +msgstr[1] "" +"Koristite %1$s za konverziju slika u WebP format. WP Rocket će kreirati " +"zasebne cache datoteke za posluživanje vaših WebP slika. %2$sViše " +"informacija%3$s" +msgstr[2] "" +"Koristite %1$s za konverziju slika u WebP format. WP Rocket će kreirati " +"zasebne cache datoteke za posluživanje vaših WebP slika.%2$sViše " +"informacija%3$s" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:349 +#, php-format +msgid "" +"You don’t seem to be using a method to create and serve WebP that we are " +"auto-compatible with. If you are not using WebP do not enable this option. " +"%1$sMore info%2$s" +msgstr "" +"Čini se da ne upotrebljavate metodu za stvaranje i posluživanje WebP-a s " +"kojom smo automatski kompatibilni. Ako ne koristite WebP, nemojte omogućiti " +"ovu opciju. %1$sViše informacija%2$s" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:354 +msgid "We have not detected any compatible WebP plugin!" +msgstr "Nismo otkrili nijedan kompatibilan WebP plugin!" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:357 +#, php-format +msgid "" +"If you activate this option WP Rocket will create separate cache files to " +"serve WebP images. Any WebP images you have on your site will be served from" +" these files to compatible browsers. If you don’t already have WebP images " +"on your site consider using %1$sImagify%3$s or another supported plugin. " +"%2$sMore info%3$s" +msgstr "" +"Ako aktivirate ovu opciju, WP Rocket će stvoriti zasebne cache datoteke za " +"posluživanje WebP slika. Sve WebP slike koje imate na vašem web mjestu bit " +"će poslužene iz tih datoteka kompatibilnim preglednicima. Ako već nemate " +"WebP slike na vašoj web lokaciji, razmislite o upotrebi %1$sImagify%3$s ili " +"drugi podržani plugin. %2$sViše informacija%3$s" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:369 +msgid "WP Rocket will create separate cache files to serve your WebP images." +msgstr "" +"WP Rocket će stvoriti zasebne cache datoteke za posluživanje WebP slika." + +#: inc/classes/subscriber/Tools/class-detect-missing-tags-subscriber.php:151 +#, php-format +msgid "" +"Failed to detect the following requirement in your theme: closing %1$s." +msgid_plural "" +"Failed to detect the following requirements in your theme: closing %1$s." +msgstr[0] "" +"Otkrivanje sljedećeg zahtjeva u vašoj temi nije uspjelo: zatvaranje%1$s." +msgstr[1] "" +"Otkrivanje sljedećih zahtjeva u vašoj temi nije uspjelo: zatvaranje %1$s." +msgstr[2] "" +"Otkrivanje sljedećih zahtjeva u vašoj temi nije uspjelo: zatvaranje %1$s." + +#: inc/classes/subscriber/Tools/class-detect-missing-tags-subscriber.php:159 +msgid "" +"https://docs.wp-rocket.me/article/99-pages-not-cached-or-minify-cssjs-not-" +"working/?utm_source=wp_plugin&utm_medium=wp_rocket#theme" +msgstr "" +"https://docs.wp-rocket.me/article/99-pages-not-cached-or-minify-cssjs-not-" +"working/?utm_source=wp_plugin&utm_medium=wp_rocket#theme" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:98 +msgid "monthly" +msgstr "mjesečno" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:211 +msgid "Database optimization process is running" +msgstr "Postupak optimizacije baze podataka je u tijeku" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:242 +msgid "" +"Database optimization process is complete. Everything was already optimized!" +msgstr "" +"Database optimization process is complete. Everything was already optimized!" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:245 +msgid "" +"Database optimization process is complete. List of optimized items below:" +msgstr "" +"Postupak optimizacije baze podataka je završen. Popis optimiziranih stavki u" +" nastavku:" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:253 +#, php-format +msgid "%1$d %2$s optimized." +msgstr "%1$d %2$s optimizirano." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:116 +#, php-format +msgid "Sucuri cache purge error: %s" +msgstr "Pogreška u čišćenju Sucuri cachea: %s" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:121 +msgid "" +"The Sucuri cache is being cleared. Note that it may take up to two minutes " +"for it to be fully flushed." +msgstr "" +"Sucuri cache se briše. Imajte na umu da može potrajati do dvije minute da se" +" izbriše u potpunosti." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:244 +msgid "Sucuri firewall API key was not found." +msgstr "API ključ Sucuri firewalla nije pronađen." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:256 +msgid "Sucuri firewall API key is invalid." +msgstr "API ključ Sucuri firewalla nije važeći." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:311 +msgid "Error when contacting Sucuri firewall API." +msgstr "Pogreška prilikom kontaktiranja API-ja Sucuri firewalla." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:324 +#, php-format +msgid "Error when contacting Sucuri firewall API. Error message was: %s" +msgstr "" +"Pogreška prilikom kontaktiranja API-ja Sucuri firewalla. Poruka o pogrešci " +"je: %s" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:338 +msgid "Could not get a response from the Sucuri firewall API." +msgstr "Nije moguće dobiti odgovor od API-ja Sucuri firewalla." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:352 +msgid "Got an invalid response from the Sucuri firewall API." +msgstr "Zaprimljen nevažeći odgovor od API-ja Sucuri firewalla." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:365 +msgid "The Sucuri firewall API returned an unknown error." +msgstr "Sucuri firewall API je vratio nepoznatu pogrešku." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:368 +#, php-format +msgid "The Sucuri firewall API returned the following error: %s" +msgid_plural "The Sucuri firewall API returned the following errors: %s" +msgstr[0] "API Sucuri firewalla je vratio sljedeću pogrešku: %s" +msgstr[1] "API Sucuri firewalla je vratio sljedeće pogreške: %s" +msgstr[2] "API Sucuri firewalla je vratio sljedeće pogreške: %s" + +#: inc/classes/traits/trait-updater-api-tools.php:53 +#: inc/deprecated/3.3.php:761 inc/deprecated/3.3.php:770 +#, php-format +msgid "" +"An unexpected error occurred. Something may be wrong with WP-Rocket.me or " +"this server’s configuration. If you continue to have problems, contact support." +msgstr "" +"Došlo je do neočekivane pogreške. Nešto možda nije u redu s WP-Rocket.me ili" +" konfiguracijom ovog poslužitelja. Ako i dalje imate problema, kontaktirajte podršku." + +#: inc/common/admin-bar.php:125 inc/common/admin-bar.php:293 +#: inc/functions/i18n.php:41 inc/functions/i18n.php:51 +msgid "All languages" +msgstr "Svi jezici" + +#: inc/common/admin-bar.php:152 +msgid "Clear this post" +msgstr "Poništite ovaj članak" + +#: inc/common/admin-bar.php:166 +msgid "Purge this URL" +msgstr "Očistite ovaj URL" + +#: inc/common/admin-bar.php:192 +msgid "Purge OPcache" +msgstr "Čišćenje OPcache-a" + +#: inc/common/admin-bar.php:210 +msgid "Clear Cloudflare cache" +msgstr "Očisti CloudFlare privremeni spremnik" + +#: inc/common/admin-bar.php:228 +msgid "Purge Sucuri cache" +msgstr "Očisti Sucuri cache" + +#: inc/common/admin-bar.php:251 inc/common/admin-bar.php:305 +#: views/settings/page-sections/dashboard.php:144 +msgid "Preload cache" +msgstr "Predučitavanje cachea" + +#: inc/common/admin-bar.php:330 views/settings/fields/rocket-cdn.php:55 +msgid "Purge RocketCDN cache" +msgstr "Očisti RocketCDN cache" + +#: inc/common/admin-bar.php:343 views/settings/partials/documentation.php:14 +msgid "Documentation" +msgstr "Dokumentacija" + +#: inc/common/purge.php:557 +msgid "OPcache purge failed." +msgstr "Čišćenje OPcachea nije uspjelo." + +#: inc/common/purge.php:562 +msgid "OPcache successfully purged" +msgstr "Čišćenje OPcachea uspješno" + +#: inc/deprecated/3.2.php:52 views/settings/page-sections/imagify.php:36 +msgid "Activate Imagify" +msgstr "Aktivirajte Imagify" + +#: inc/deprecated/3.2.php:52 +msgid "Install Imagify for Free" +msgstr "Instalacija besplatne verzije Imagify-a" + +#: inc/deprecated/3.2.php:67 +msgid "" +"Speed up your website and boost your SEO by reducing image file sizes " +"without losing quality with Imagify." +msgstr "" +"Ubrzajte svoje web stranice i podignite svoj SEO smanjivanjem veličine slika" +" bez gubitka kvalitete koristeći Imagify." + +#: inc/deprecated/3.2.php:72 +msgid "More details" +msgstr "Više detalja" + +#: inc/deprecated/3.2.php:228 +#, php-format +msgid "Sitemap preload: %d pages have been cached." +msgstr "Predučitavanje mape web-lokacije: %d stranica je cachirano." + +#: inc/deprecated/3.2.php:261 +#, php-format +msgid "" +"Sitemap preload: %d uncached pages have now been preloaded. (refresh to see " +"progress)" +msgstr "" +"Predučitavanje mape we-lokacije: %d necachiranih stranica je uspješno " +"predučitano (osvježite kako biste vidjeli napredak)" + +#: inc/deprecated/3.4.php:18 +msgid "Choose a domain from the list" +msgstr "Odaberite domenu s liste" + +#: inc/deprecated/3.4.php:31 +msgid "No domain available in your Cloudflare account" +msgstr "Nema dostupnih domena u vašem CloudFlare računu" + +#: inc/deprecated/3.5.php:81 inc/deprecated/3.5.php:205 +msgid "" +"Curl is disabled on your server. Please ask your host to enable it. This is " +"required for the Cloudflare Add-on to work correctly." +msgstr "" +"Curl je onemogućen na vašem serveru a potreban je za ispravni rad Cloudflare" +" dodatka. Molimo, kontaktirajte svoju hosting kompaniju." + +#: inc/deprecated/3.5.php:89 +#, php-format +msgid "" +"Cloudflare email, API key and Zone ID are not set. Read the " +"%1$sdocumentation%2$s for further guidance." +msgstr "" +"Cloudflare email, API ključ i Zone ID nisu postavljeni. Pročitajte " +"%1$sdokumentaciju%2$s za više informacija." + +#: inc/deprecated/3.5.php:216 +#, php-format +msgid "" +"Cloudflare email and API key are not set. Read the %1$sdocumentation%2$s for" +" further guidance." +msgstr "" +"Cloudflare email i API ključ nisu postavljeni. Pročitajte " +"%1$sdokumentaciju%2$s za više informacija." + +#: inc/deprecated/3.5.php:281 +msgid "Connection to Cloudflare failed" +msgstr "Povezivanje s Cloudflare-om neuspjelo" + +#: inc/deprecated/DeprecatedClassTrait.php:54 +#, php-format +msgid "" +"The called class %1$s is deprecated since version %2$s! Use" +" %3$s instead." +msgstr "" +"Pozvana klasa%1$s je ukinuta od verzije %2$s! Koristite " +"%3$s umjesto toga." + +#: inc/deprecated/DeprecatedClassTrait.php:65 +#, php-format +msgid "" +"The called class %1$s is deprecated since version %2$s!" +msgstr "Pozvana klasa %1$s jeukinuta od verzije %2$s!" + +#: inc/deprecated/deprecated.php:240 +msgid "JS files with Deferred Loading JavaScript" +msgstr "JS datoteke s Odgođenim Učitavanjem JavaScript-e" + +#: inc/deprecated/deprecated.php:293 +msgid "Add URL" +msgstr "Dodaj URL" + +#: inc/deprecated/deprecated.php:1277 views/settings/fields/import-form.php:22 +msgid "" +"Before you can upload your import file, you will need to fix the following " +"error:" +msgstr "" +"Prije nego što možete uploadati svoju datoteku za uvoz, trebat ćete " +"popraviti sljedeću pogrešku:" + +#: inc/deprecated/deprecated.php:1288 views/settings/fields/import-form.php:35 +#, php-format +msgid "Choose a file from your computer (maximum size: %s)" +msgstr "Odaberite datoteku s vašeg računala (maksimalna veličina:%s)" + +#: inc/deprecated/deprecated.php:1385 +msgid "Your Cloudflare credentials are valid." +msgstr "Vaši Cloudflare isprave su važeće." + +#: inc/deprecated/deprecated.php:1389 +msgid "Your Cloudflare credentials are invalid!" +msgstr "Vaši Cloudflare isprave su nevažeće!" + +#: inc/deprecated/deprecated.php:1453 +msgid "Save and optimize" +msgstr "Spremi i optimiziraj" + +#: inc/deprecated/deprecated.php:1453 +msgid "Optimize" +msgstr "Optimiziraj" + +#: inc/deprecated/deprecated.php:1464 inc/deprecated/deprecated.php:1666 +msgctxt "screen-reader-text" +msgid "Note:" +msgstr "Napomena:" + +#: inc/deprecated/deprecated.php:1470 +msgctxt "screen-reader-text" +msgid "Performance tip:" +msgstr "Savjet o performansama:" + +#: inc/deprecated/deprecated.php:1476 +msgctxt "screen-reader-text" +msgid "Third-party feature detected:" +msgstr "Detektirana opcija treće strane:" + +#: inc/deprecated/deprecated.php:1488 inc/deprecated/deprecated.php:1672 +msgctxt "screen-reader-text" +msgid "Warning:" +msgstr "Upozorenje:" + +#: inc/deprecated/deprecated.php:1501 +msgctxt "button text" +msgid "Download settings" +msgstr "Postavke preuzimanja" + +#: inc/deprecated/deprecated.php:1531 +msgid "Replace site's hostname with:" +msgstr "Zamijenite hostname naziv stranice s:" + +#: inc/deprecated/deprecated.php:1550 inc/deprecated/deprecated.php:1587 +#: inc/deprecated/deprecated.php:1615 views/settings/fields/cnames.php:32 +#: views/settings/fields/cnames.php:64 views/settings/fields/cnames.php:94 +msgid "reserved for" +msgstr "rezervirano za" + +#: inc/deprecated/deprecated.php:1552 inc/deprecated/deprecated.php:1589 +#: inc/deprecated/deprecated.php:1617 views/settings/fields/cnames.php:35 +#: views/settings/fields/cnames.php:67 views/settings/fields/cnames.php:97 +msgid "All files" +msgstr "Sve datoteke" + +#: inc/deprecated/deprecated.php:1564 inc/deprecated/deprecated.php:1594 +#: inc/deprecated/deprecated.php:1622 views/settings/fields/cnames.php:47 +#: views/settings/fields/cnames.php:79 views/settings/fields/cnames.php:109 +msgid "Images" +msgstr "Slike" + +#: inc/deprecated/deprecated.php:1635 views/settings/fields/cnames.php:120 +msgid "Add CNAME" +msgstr "Dodaj CNAME" + +#: inc/deprecated/deprecated.php:1706 views/settings/partials/sidebar.php:16 +msgid "Watch the video" +msgstr "Pogledajte video" + +#: inc/deprecated/deprecated.php:1771 +msgid "Basic" +msgstr "Osnovno" + +#: inc/deprecated/deprecated.php:1772 +msgid "Static Files" +msgstr "Statične Datoteke" + +#: inc/deprecated/deprecated.php:1774 +msgid "Advanced" +msgstr "Napredno" + +#: inc/deprecated/deprecated.php:1944 +#, php-format +msgid "" +"%1$s %2$s requires at least PHP %3$s to function properly. To use this " +"version, please ask your web host how to upgrade your server to PHP %3$s or " +"higher. If you are not able to upgrade, you can rollback to the previous " +"version by using the button below." +msgstr "" +"%1$s %2$s zahtijeva minimalnu PHP verziju %3$s za ispravno funkcioniranje. " +"Da biste koristili ovu verziju, pitajte svog web hosta kako nadograditi " +"poslužitelj na verziju PHP-a %3$s ili višu. Ako ne možete nadograditi, " +"možete se vratiti na prethodnu verziju pomoću gumba u nastavku." + +#: inc/functions/admin.php:23 +msgid "" +"There seems to be an issue validating your license. Please see the error " +"message below." +msgid_plural "" +"There seems to be an issue validating your license. You can see the error " +"messages below." +msgstr[0] "" +"Čini se da postoji problem s provjerom vaše licence. Niže možete vidjeti " +"poruku o pogrešci." +msgstr[1] "" +"Čini se da postoji problem s provjerom vaše licence. Niže možete vidjeti " +"poruke o pogreškama." +msgstr[2] "" +"Čini se da postoji problem s provjerom vaše licence. Niže možete vidjeti " +"poruke o pogreškama." + +#: inc/functions/admin.php:363 +msgid "Server type:" +msgstr "Vrsta servera:" + +#: inc/functions/admin.php:372 +msgid "PHP version number:" +msgstr "Verzija PHP-a:" + +#: inc/functions/admin.php:381 +msgid "WordPress version number:" +msgstr "Verzija WordPressa:" + +#: inc/functions/admin.php:390 +msgid "WordPress multisite:" +msgstr "WordPress multisite:" + +#: inc/functions/admin.php:399 +msgid "Current theme:" +msgstr "Aktivna tema:" + +#: inc/functions/admin.php:408 +msgid "Current site language:" +msgstr "Trenutni jezik web-lokacije:" + +#: inc/functions/admin.php:417 +msgid "Active plugins:" +msgstr "Aktivni dodaci:" + +#: inc/functions/admin.php:420 +msgid "Plugin names of all active plugins" +msgstr "Imena svih aktivnih dodataka" + +#: inc/functions/admin.php:426 +msgid "Anonymized WP Rocket settings:" +msgstr "Anonimizirane postavke WP Rocketa:" + +#: inc/functions/admin.php:429 +msgid "Which WP Rocket settings are active" +msgstr "Koje postavke WP Rocketa su aktivne" + +#: inc/functions/options.php:527 inc/functions/options.php:566 +msgid "" +"License validation failed. Our server could not resolve the request from " +"your website." +msgstr "" +"Provjera valjanosti licence nije uspjela. Naš poslužitelj nije mogao " +"riješiti zahtjev s vaše web-lokacije." + +#: inc/functions/options.php:527 inc/functions/options.php:566 +#, php-format +msgid "" +"Try clicking %1$sSave Changes%2$s below. If the error persists, follow " +"%3$sthis guide%4$s." +msgstr "" +"Pokušajte kliknuti %1$sSpremi promjene%2$s niže. Ako se pogreška i dalje " +"pojavljuje, slijedite %3$sovaj vodič%4$s." + +#: inc/functions/options.php:543 +msgid "" +"License validation failed. You may be using a nulled version of the plugin. " +"Please do the following:" +msgstr "" +"Provjera valjanosti licence nije uspjela. Možda koristite ilegalnu verziju " +"dodatka. Učinite sljedeće:" + +#: inc/functions/options.php:543 inc/functions/options.php:585 +#, php-format +msgid "Login to your WP Rocket %1$saccount%2$s" +msgstr "Prijavite se u svoj WP Rocket %1$sračun%2$s" + +#: inc/functions/options.php:543 inc/functions/options.php:585 +msgid "Download the zip file" +msgstr "Preuzmite zip datoteku" + +#: inc/functions/options.php:543 inc/functions/options.php:585 +msgid "Reinstall" +msgstr "Reinstaliraj" + +#: inc/functions/options.php:543 +#, php-format +msgid "" +"If you do not have a WP Rocket account, please %1$spurchase a license%2$s." +msgstr "Ako nemate WP Rocket račun, molimo %1$skupite licencu%2$s." + +#: inc/functions/options.php:551 +msgid "" +"License validation failed. This user account does not exist in our database." +msgstr "" +"Provjera valjanosti licence nije uspjela. Ovaj korisnički račun ne postoji u" +" našoj bazi podataka." + +#: inc/functions/options.php:551 +msgid "To resolve, please contact support." +msgstr "Za rješavanje, kontaktirajte podršku." + +#: inc/functions/options.php:559 +msgid "License validation failed. This user account is blocked." +msgstr "" +"Provjera valjanosti licence nije uspjela. Ovaj korisnički račun je blokiran." + +#: inc/functions/options.php:559 +#, php-format +msgid "Please see %1$sthis guide%2$s for more info." +msgstr "Molimo pogledajte %1$sovaj vodič%2$s za više informacija." + +#: inc/functions/options.php:579 +msgid "Your license is not valid." +msgstr "Vaša licenca nije valjana." + +#: inc/functions/options.php:579 +#, php-format +msgid "Make sure you have an active %1$sWP Rocket license%2$s." +msgstr "Provjerite imate li aktivnu %1$sWP Rocket licencu%2$s." + +#: inc/functions/options.php:581 +msgid "You have added as many sites as your current license allows." +msgstr "" +"Dodali ste onoliko web-lokacija koliko to dopušta vaša trenutna licenca." + +#: inc/functions/options.php:581 +#, php-format +msgid "" +"Upgrade your %1$saccount%2$s or %3$stransfer your license%2$s to this " +"domain." +msgstr "" +"Nadogradite svoj %1$sračun%2$s ili %3$sprenesite licencu%2$s na ovu web " +"lokaciju." + +#: inc/functions/options.php:583 +msgid "This website is not allowed." +msgstr "Ova web stranica nije dopuštena." + +#: inc/functions/options.php:583 +#, php-format +msgid "Please %1$scontact support%2$s." +msgstr "Molimo %1$skontaktirajte korisničku podršku%2$s." + +#: inc/functions/options.php:585 +msgid "This license key is not recognized." +msgstr "Ovaj licencni ključ nije prepoznat." + +#: inc/functions/options.php:585 +#, php-format +msgid "If the issue persists, please %1$scontact support%2$s." +msgstr "" +"Ako se problem nastavi, molimo %1$skontaktirajte korisničku podršku%2$s." + +#: inc/functions/options.php:591 +#, php-format +msgid "License validation failed: %s" +msgstr "Provjera valjanosti licence nije uspjela: %s" + +#: inc/vendors/classes/class-imagify-partner.php:531 +msgid "Plugin installed successfully." +msgstr "Dodatak uspješno instaliran." + +#: inc/vendors/classes/class-imagify-partner.php:532 +msgid "Sorry, you are not allowed to install plugins on this site." +msgstr "Nažalost, ne smijete instalirati dodatke na ovu web-lokaciju." + +#: inc/vendors/classes/class-imagify-partner.php:533 +msgid "Sorry, you are not allowed to do that." +msgstr "Nažalost, to vam nije dopušteno." + +#: inc/vendors/classes/class-imagify-partner.php:534 +msgid "Plugin install failed." +msgstr "Neuspjela instalacija dodatka." + +#: inc/vendors/classes/class-imagify-partner.php:535 +msgid "Go back" +msgstr "Vrati se" + +#: views/cpcss/activate-cpcss-mobile.php:13 +msgid "Optimize CSS delivery for mobile" +msgstr "Optimiziraj isporuku CSS-a za mobilne uređaje" + +#: views/cpcss/activate-cpcss-mobile.php:14 +msgid "" +"Your website currently uses the same Critical Path CSS for both desktop and " +"mobile." +msgstr "" +"Vaša web lokacija trenutno koristi istu putanju ključnog CSS-a za desktop i " +"za mobilne uređaje." + +#: views/cpcss/activate-cpcss-mobile.php:15 +msgid "Click the button to enable mobile-specific CPCSS for your site." +msgstr "" +"Kliknite gumb kako biste omogućili CPCSS za svoju web lokaciju specifičan za" +" mobilne uređaje." + +#: views/cpcss/activate-cpcss-mobile.php:20 +#: views/settings/enable-google-fonts.php:19 +#, php-format +msgid "" +"This is a one-time action and this button will be removed afterwards. " +"%1$sMore info%2$s" +msgstr "" +"Ovo je jednokratna radnja i ovaj će gumb biti uklonjen nakon toga.%1$sViše " +"informacija%2$s" + +#: views/cpcss/activate-cpcss-mobile.php:30 +#, php-format +msgid "" +"Your site is now using mobile-specific critical path CSS. %1$sMore info%2$s" +msgstr "" +"Vaša web lokacija koristi CSS-ov kritični put za mobilne uređaje.%1$sViše " +"informacija%2$s" + +#: views/cpcss/activate-cpcss-mobile.php:39 +msgid "Generate Mobile Specific CPCSS" +msgstr "Generiraj CPCSS specifičan za mobilne uređaje" + +#: views/cpcss/metabox/container.php:19 +msgid "Critical Path CSS" +msgstr "Kritični CSS put" + +#: views/cpcss/metabox/generate.php:23 +#, php-format +msgid "Generate specific Critical Path CSS for this post. %1$sMore info%2$s" +msgstr "Kreiraj kritični CSS put za ovaj post %1$sViše informacija%2$s" + +#: views/cpcss/metabox/generate.php:33 +#, php-format +msgid "This post uses specific Critical Path CSS. %1$sMore info%2$s" +msgstr "Ovaj post koristi kritični CSS put. %1$sViše informacija%2$s" + +#: views/cpcss/metabox/generate.php:56 +msgid "Revert back to the default CPCSS" +msgstr "Vrati se na zadani CPCSS" + +#: views/deactivation-intent/form.php:21 +msgid "Return" +msgstr "Povratak" + +#: views/deactivation-intent/form.php:22 +msgid "WP Rocket feedback" +msgstr "Povratne informacije o WP Rocketu" + +#: views/deactivation-intent/form.php:24 +msgid "Close" +msgstr "Zatvori" + +#: views/deactivation-intent/form.php:28 +msgid "May we have a little info about why you are deactivating?" +msgstr "Možemo li dobiti informaciju o tome zašto deaktivirate?" + +#: views/deactivation-intent/form.php:35 +#, php-format +msgid "%1$sIt is a temporary deactivation.%2$s I am just debugging an issue." +msgstr "%1$sRadi se o privremenoj deaktivaciji.%2$s Debugiram problem." + +#: views/deactivation-intent/form.php:44 +#, php-format +msgid "The plugin %1$sbroke my layout%2$s or some functionality." +msgstr "" +"Plugin %1$sje razbio izgled moje stranice%2$s ili neku funkcionalnost." + +#: views/deactivation-intent/form.php:53 +#, php-format +msgid "My PageSpeed or GTMetrix %1$sscore did not improve.%2$s" +msgstr "Moja PageSpeed ili GTMetrix %1$socjena nije popravljena.%2$s" + +#: views/deactivation-intent/form.php:59 +msgid "I did not notice a difference in loading time." +msgstr "Nisam primjetio razliku u vremenu učitavanja." + +#: views/deactivation-intent/form.php:66 +#, php-format +msgid "The plugin is %1$stoo complicated to configure.%2$s" +msgstr "Plugin je %1$sprekomplicirano konfigurirati.%2$s" + +#: views/deactivation-intent/form.php:72 +msgid "My host already has its own caching system." +msgstr "Moj web-host već ima svoj vlastiti sustav za cachiranje." + +#: views/deactivation-intent/form.php:74 +msgid "What is the name of your web host?" +msgstr "Kako se zove vaš web-host?" + +#: views/deactivation-intent/form.php:79 +msgid "Other" +msgstr "Ostalo" + +#: views/deactivation-intent/form.php:81 +msgid "" +"Let us know why you are deactivating WP Rocket so we can improve the plugin" +msgstr "Javite nam zašto deaktivirate WP Rocket kako bismo poboljšali dodatak" + +#: views/deactivation-intent/form.php:89 +msgid "The plugin broke my layout or some functionality" +msgstr "Dodatak je slomio izgled moje web-lokacije ili neku funkcionalnost" + +#: views/deactivation-intent/form.php:90 +msgid "" +"This type of issue can usually be fixed by deactivating some options in WP " +"Rocket." +msgstr "" +"Ova vrsta problema obično se može riješiti deaktiviranjem nekih opcija u WP " +"Rocketu." + +#: views/deactivation-intent/form.php:91 +msgid "" +"Click \"Apply Safe Mode\" to quickly disable LazyLoad, File Optimization, " +"Embeds and CDN options. Then check your site to see if the issue has " +"resolved." +msgstr "" +"Kliknite \"Primijeni siguran način\" da biste brzo onemogućili opcije " +"LazyLoad, Optimizacija datoteka, Embeds i CDN. Zatim provjerite svoju web-" +"lokaciju da biste vidjeli je li problem riješen." + +#: views/deactivation-intent/form.php:93 +msgid "Apply safe mode" +msgstr "Primijeni siguran način rada (safe mode)" + +#: views/deactivation-intent/form.php:96 +msgid "Safe mode applied." +msgstr "Siguran način rada primijenjen" + +#: views/deactivation-intent/form.php:97 +msgid "Review your site in a private/logged out browser window." +msgstr "" +"Pregledajte svoju web-lokaciju u privatnom / odjavljenom prozoru " +"preglednika." + +#: views/deactivation-intent/form.php:102 +#, php-format +msgid "" +"Is the issue fixed? Now you can reactivate options one at a time to " +"determine which one caused the problem. %1$sMore info%2$s" +msgstr "" +"Je li problem riješen? Sada možete ponovo aktivirati opcije jednu po jednu " +"da biste utvrdili koja je uzrokovala problem.%1$sViše informacija%2$s" + +#: views/deactivation-intent/form.php:107 +msgid "My PageSpeed or GT Metrix score did not improve" +msgstr "Moj PageSpeed ​​ili GT Metrix rezultat nije poboljšan" + +#: views/deactivation-intent/form.php:108 +msgid "" +"WP Rocket makes your site faster. The PageSpeed grade or GTMetrix score are " +"not indicators of speed. Neither your real visitors, nor Google will ever " +"see your website’s “grade”. Speed is the only metric that matters for SEO " +"and conversions." +msgstr "" +"WP Rocket ubrzava vašu web-lokaciju. PageSpeed ​​ocjena ili GTMetrix " +"rezultat nisu pokazatelji brzine. Ni vaši stvarni posjetitelji ni Google " +"neće vidjeti \"ocjenu\" vaše web-lokacije. Brzina je jedina mjerna " +"vrijednost koja je važna za SEO i konverzije." + +#: views/deactivation-intent/form.php:109 +msgid "Yoast, the expert on all things related to SEO for WordPress states:" +msgstr "Yoast, stručnjak za sve stvari vezane za SEO za WordPress navodi:" + +#: views/deactivation-intent/form.php:110 +msgid "" +"[Google] just looks at how fast your website loads for users, so you don’t " +"have to obsess over that specific score. You have to make sure your website " +"is as fast as you can get it." +msgstr "" +"[Google] samo gleda koliko brzo se web-lokacija učitava za korisnike, tako " +"da se ne morate opterećivati tim određenim rezultatom. Morate biti sigurni " +"da je brzina vaše web-lokacije najbolja moguća." + +#: views/deactivation-intent/form.php:116 +#, php-format +msgid "" +"How to measure the load time of your site: %1$shttps://wp-rocket.me/blog" +"/correctly-measure-websites-page-load-time/%2$s" +msgstr "" +"Kako izmjeriti brzinu učitavanja vaše stranice: %1$shttps://wp-" +"rocket.me/blog/correctly-measure-websites-page-load-time/%2$s" + +#: views/deactivation-intent/form.php:122 +#, php-format +msgid "" +"Why you should not be chasing a PageSpeed score: %1$shttps://wp-" +"rocket.me/blog/the-truth-about-google-pagespeed-insights/%2$s" +msgstr "" +"Zašto se ne biste trebali previše opterećivati PageSpeed ocjenama: %1$shttps" +"://wp-rocket.me/blog/the-truth-about-google-pagespeed-insights/%2$s" + +#: views/deactivation-intent/form.php:127 +msgid "I did not notice a difference in loading time" +msgstr "Nisam primjetio razliku u vremenu učitavanja" + +#: views/deactivation-intent/form.php:128 +msgid "" +"Make sure you look at your site while logged out to see the fast, cached " +"pages!" +msgstr "" +"Provjerite jeste li pogledali svoju web-lokaciju dok ste odjavljeni da biste" +" vidjeli brze, cachirane stranice!" + +#: views/deactivation-intent/form.php:132 +#, php-format +msgid "" +"The best way to see the improvement WP Rocket provides is to perform speed " +"tests. Follow this guide to correctly measure the load time of your website:" +" %1$shttps://wp-rocket.me/blog/correctly-measure-websites-page-load-" +"time/%2$s" +msgstr "" +"Najbolji način da se vidi poboljšanje koje pruža WP Rocket je provođenje " +"testova brzine. Slijedite ovaj vodič kako biste pravilno izmjerili vrijeme " +"učitavanja vaše web stranice:%1$shttps://wp-rocket.me/blog/correctly-" +"measure-websites-page-load-time/%2$s" + +#: views/deactivation-intent/form.php:137 +msgid "The plugin is too complicated to configure" +msgstr "Dodatak je previše kompliciran za konfiguriranje" + +#: views/deactivation-intent/form.php:138 +msgid "We are sorry to hear you are finding it difficult to use WP Rocket." +msgstr "Žao nam je čuti da vam je teško koristiti WP Rocket." + +#: views/deactivation-intent/form.php:139 +#, php-format +msgid "" +"WP Rocket is the only caching plugin that provides 80% of best practices in " +"speed optimization, by default. That means you do not have to do anything " +"besides activate WP Rocket and your site will already be faster!" +msgstr "" +"WP Rocket je jedini caching plugin koji koristi 80% najboljih praksi u " +"optimizaciji brzine. To znači da ne morate ništa učiniti osim aktivirati WP " +"Rocket i vaše stranice će već biti brže!" + +#: views/deactivation-intent/form.php:140 +msgid "" +"The additional options are not required for a fast site, they are for fine-" +"tuning." +msgstr "" +"Dodatne opcije nisu potrebne za brze stranice, one su za fino podešavanje." + +#: views/deactivation-intent/form.php:144 +#, php-format +msgid "" +"To see the benefit WP Rocket is already providing, measure the speed of your" +" site using a tool like Pingdom: %1$shttps://wp-rocket.me/blog/correctly-" +"measure-websites-page-load-time/%2$s" +msgstr "" +"Da biste vidjeli korist koju pruža WP Rocket, izmjerite brzinu vaše web " +"stranice pomoću alata kao što je Pingdom: %1$shttps://wp-rocket.me/blog" +"/correctly-measure-websites-page-load-time/%2$s" + +#: views/deactivation-intent/form.php:151 +msgid "Send & Deactivate" +msgstr "Pošalji i deaktiviraj" + +#: views/deactivation-intent/form.php:152 +msgid "Cancel" +msgstr "Poništiti" + +#: views/deactivation-intent/form.php:154 +msgid "Skip & Deactivate" +msgstr "Preskoči i deaktiviraj" + +#: views/settings/enable-google-fonts.php:13 +msgid "Enable Google Font Optimization" +msgstr "Uključi optimizaciju Google fontova" + +#: views/settings/enable-google-fonts.php:14 +msgid "" +"Improves font performance and combines multiple font requests to reduce the " +"number of HTTP requests." +msgstr "" +"Poboljšava performanse fonta i kombinira više zahtjeva za font kako bi se " +"smanjio broj HTTP zahtjeva. " + +#: views/settings/enable-google-fonts.php:29 +#, php-format +msgid "" +"Google Fonts Optimization is now enabled for your site. %1$sMore info%2$s" +msgstr "" +"Optimizacija Google Fontova je uključena za vašu web stranicu. %1$sViše " +"informacija%2$s" + +#: views/settings/enable-google-fonts.php:38 +msgid "Optimize Google Fonts" +msgstr "Optimiziraj Google Fontove" + +#: views/settings/fields/cache-lifespan.php:26 +msgid "Clear cache after" +msgstr "Očisti cache nakon" + +#: views/settings/fields/cnames.php:49 views/settings/fields/cnames.php:81 +#: views/settings/fields/cnames.php:111 +msgid "CSS & JavaScript" +msgstr "CSS i JavaScript" + +#: views/settings/fields/cnames.php:50 views/settings/fields/cnames.php:82 +#: views/settings/fields/cnames.php:112 +msgid "JavaScript" +msgstr "JavaScript" + +#: views/settings/fields/cnames.php:51 views/settings/fields/cnames.php:83 +#: views/settings/fields/cnames.php:113 +msgid "CSS" +msgstr "CSS" + +#: views/settings/fields/import-form.php:29 +msgid "Import settings" +msgstr "Uvezi postavke" + +#: views/settings/fields/one-click-addon.php:40 +#: views/settings/fields/rocket-addon.php:31 +#: views/settings/fields/sliding-checkbox.php:25 views/settings/page.php:55 +msgctxt "Active state of checkbox" +msgid "On" +msgstr "Uključeno" + +#: views/settings/fields/one-click-addon.php:41 +#: views/settings/fields/rocket-addon.php:32 +#: views/settings/fields/sliding-checkbox.php:26 views/settings/page.php:56 +msgctxt "Inactive state of checkbox" +msgid "Off" +msgstr "Isklj." + +#: views/settings/fields/one-click-addon.php:42 +#: views/settings/fields/rocket-addon.php:33 +msgid "Add-on status" +msgstr "Status dodatka" + +#: views/settings/fields/rocket-addon.php:56 +msgid "Modify options" +msgstr "Izmijenite opcije" + +#: views/settings/fields/rocket-cdn.php:29 +#: views/settings/fields/rocket-cdn.php:41 +msgid "CDN CNAME" +msgstr "CDN CNAME" + +#: views/settings/fields/rocket-cdn.php:62 +#, php-format +msgid "Purges RocketCDN cached resources for your website. %s" +msgstr "Čisti RocketCDN cachirane resurse za vašu web stranicu. %s" + +#: views/settings/fields/rocket-cdn.php:63 +#: views/settings/page-sections/cloudflare.php:36 +#: views/settings/page-sections/sucuri.php:37 +msgid "Learn more" +msgstr "Saznaj više" + +#: views/settings/fields/rocket-cdn.php:72 +msgid "Clear all RocketCDN cache files" +msgstr "Očisti sve RocketCDN cache datoteke" + +#: views/settings/page-sections/cloudflare.php:27 +msgid "Cloudflare Cache" +msgstr "Cloudflare Cache" + +#: views/settings/page-sections/cloudflare.php:35 +#: views/settings/page-sections/sucuri.php:36 +#, php-format +msgid "Purges cached resources for your website. %s" +msgstr "Čisti cachirane resurse za vašu web-lokaciju. %s" + +#: views/settings/page-sections/cloudflare.php:36 +msgid "https://support.cloudflare.com/hc/en-us/articles/200169246" +msgstr "https://support.cloudflare.com/hc/en-us/articles/200169246" + +#: views/settings/page-sections/cloudflare.php:45 +msgid "Clear all Cloudflare cache files" +msgstr "Očisti sve Cloudflare cache datoteke" + +#: views/settings/page-sections/dashboard.php:38 +msgid "Congratulations!" +msgstr "Čestitamo!" + +#: views/settings/page-sections/dashboard.php:40 +msgid "WP Rocket is now activated and already working for you." +msgstr "WP Rocket je sada aktiviran i spreman za rad." + +#: views/settings/page-sections/dashboard.php:42 +msgid "Your website should be loading faster now!" +msgstr "Vaša bi se web-lokacija trebala već brže učitavati!" + +#: views/settings/page-sections/dashboard.php:44 +#, php-format +msgid "" +"To guarantee fast websites, WP Rocket applies 80% of web performance best " +"practices." +msgstr "" +"Kako bi se zajamčile brze web stranice, WP Rocket primjenjuje 80% najboljih " +"praksi za web performanse." + +#: views/settings/page-sections/dashboard.php:44 +msgid "" +"We also enable options that provide immediate benefits to your website." +msgstr "" +"Omogućujemo i opcije koje pružaju trenutačnu korist vašoj web-lokaciji." + +#: views/settings/page-sections/dashboard.php:45 +msgid "Continue to the options to further optimize your site!" +msgstr "Nastavite do opcija za daljnju optimizaciju vaše web-lokacije!" + +#: views/settings/page-sections/dashboard.php:55 +msgid "My Account" +msgstr "Moj račun" + +#: views/settings/page-sections/dashboard.php:61 +msgid "Refresh info" +msgstr "Osvježi informacije" + +#: views/settings/page-sections/dashboard.php:75 +msgid "Expiration Date" +msgstr "Datum isteka" + +#: views/settings/page-sections/dashboard.php:84 +msgid "View my account" +msgstr "Pogledaj moj račun" + +#: views/settings/page-sections/dashboard.php:111 +msgid "Quick Actions" +msgstr "Brze radnje" + +#: views/settings/page-sections/dashboard.php:118 +msgid "Remove all cached files" +msgstr "Ukloni sve cachirane datoteke" + +#: views/settings/page-sections/dashboard.php:138 +msgid "Start cache preloading" +msgstr "Počni predučitavanje cachea" + +#: views/settings/page-sections/dashboard.php:164 +msgid "Purge OPCache content" +msgstr "Očisti OPCache sadržaj" + +#: views/settings/page-sections/dashboard.php:170 +msgid "Purge OPCache" +msgstr "Očisti OPCache" + +#: views/settings/page-sections/dashboard.php:181 +#: views/settings/page-sections/dashboard.php:187 +msgid "Regenerate Critical CSS" +msgstr "Obnovi ključni CSS" + +#: views/settings/page-sections/dashboard.php:204 +msgid "Frequently Asked Questions" +msgstr "Učestalo postavljana pitanja" + +#: views/settings/page-sections/dashboard.php:217 +msgid "Still cannot find a solution?" +msgstr "Još uvijek ne možete pronaći rješenje?" + +#: views/settings/page-sections/dashboard.php:218 +msgid "" +"Submit a ticket and get help from our friendly and knowledgeable Rocketeers." +msgstr "Otvorite ticket i zatražite pomoć od naše stručne ekipe." + +#: views/settings/page-sections/dashboard.php:226 +msgid "Ask support" +msgstr "Pitajte korisničku podršku" + +#: views/settings/page-sections/database.php:25 +msgid "Backup your database before you run a cleanup!" +msgstr "Backupirajte bazu podataka prije nego što pokrenete čišćenje!" + +#: views/settings/page-sections/database.php:26 +msgid "" +"Once a database optimization has been performed, there is no way to undo it." +msgstr "" +"Nakon što je izvršena optimizacija baze podataka, nema načina da je " +"poništite." + +#: views/settings/page-sections/database.php:28 +msgid "Save Changes and Optimize" +msgstr "Spremi promjene i optimiziraj" + +#: views/settings/page-sections/imagify.php:21 +#, php-format +msgid "" +"%1$sWP ROCKET%2$s created %3$sIMAGIFY%4$s %1$sfor best-in-class image " +"optimization.%2$s" +msgstr "" +"%1$sWP ROCKET%2$s je kreirao %3$sIMAGIFY%4$s %1$sza najbolju optimizaciju " +"slika.%2$s" + +#: views/settings/page-sections/imagify.php:24 +msgid "" +"Compress image to make your website faster, all while maintaining image " +"quality." +msgstr "" +"Komprimirajte sliku da biste učinili web-lokaciju bržom a pritom zadržali " +"kvalitetu slike." + +#: views/settings/page-sections/imagify.php:25 +msgid "More on Imagify:" +msgstr "Više na Imagify:" + +#: views/settings/page-sections/imagify.php:27 +msgid "Imagify Plugin Page" +msgstr "Stranica Imagify dodatka" + +#: views/settings/page-sections/imagify.php:28 +msgid "Imagify Website" +msgstr "Imagify web-lokacija" + +#: views/settings/page-sections/imagify.php:29 +msgid "Review of Image Compression Plugins" +msgstr "Pregled dodataka za kompresiju slika" + +#: views/settings/page-sections/imagify.php:38 +msgid "Install Imagify" +msgstr "Instaliraj Imagify" + +#: views/settings/page-sections/license.php:22 +msgid "WP Rocket was not able to automatically validate your license." +msgstr "WP Rocket nije mogao automatski potvrditi valjanost vaše licence." + +#: views/settings/page-sections/license.php:29 +#, php-format +msgid "Follow this %1$s, or contact %2$s to get the engine started." +msgstr "Slijedite %1$s, ili kontaktirajte %2$sza pokretanje motora." + +#: views/settings/page-sections/license.php:32 +#, php-format +msgid "%1$s%2$s%3$stutorial%4$s" +msgstr "%1$s%2$s%3$stutorial%4$s" + +#: views/settings/page-sections/license.php:34 +msgid "" +"https://docs.wp-rocket.me/article/100-resolving-problems-with-license-" +"validation/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://docs.wp-rocket.me/article/100-resolving-problems-with-license-" +"validation/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: views/settings/page-sections/license.php:40 +#, php-format +msgid "%1$s%2$s%3$ssupport%4$s" +msgstr "%1$s%2$s%3$spodrška%4$s" + +#: views/settings/page-sections/sucuri.php:46 +msgid "Clear all Sucuri cache files" +msgstr "Obrišite sve Sucuri cache datoteke" + +#: views/settings/page-sections/tools.php:20 +#, php-format +msgid "Files size: %1$s. Number of entries: %2$s." +msgstr "Veličina datoteke: %1$s. Broj unosa: %2$s." + +#: views/settings/page-sections/tools.php:23 +#, php-format +msgid "%1$sDownload the file%2$s." +msgstr "%1$sPreuzmi datoteku%2$s." + +#: views/settings/page-sections/tools.php:26 +#, php-format +msgid "%1$sDelete the file%2$s." +msgstr "%1$sIzbriši datoteku%2$s." + +#: views/settings/page-sections/tools.php:37 +msgid "Export settings" +msgstr "Izvezi postavke" + +#: views/settings/page-sections/tools.php:38 +msgid "Download a backup file of your settings" +msgstr "Preuzmite sigurnosnu kopiju svojih postavki" + +#: views/settings/page-sections/tools.php:46 +msgid "Download settings" +msgstr "Postavke preuzimanja" + +#: views/settings/page-sections/tools.php:60 +msgid "Rollback" +msgstr "Povratak postavki" + +#: views/settings/page-sections/tools.php:64 +#, php-format +msgid "Has version %s caused an issue on your website?" +msgstr "Je li verzija %s uzrokovala problem na vašoj web-lokaciji?" + +#: views/settings/page-sections/tools.php:69 +#, php-format +msgid "" +"You can rollback to the previous major version here.%sThen send us a support" +" request." +msgstr "" +"Možete se vratiti na prethodnu verziju ovdje.%sZatim pošaljite zahtjev za " +"podršku." + +#: views/settings/page-sections/tools.php:80 +#, php-format +msgid "Reinstall version %s" +msgstr "Reinstaliraj verziju %s" + +#: views/settings/page-sections/tools.php:106 +msgid "Debug mode" +msgstr "Način otklanjanja pogrešaka (debug)" + +#: views/settings/page-sections/tools.php:111 +msgid "Create a debug log file." +msgstr "Kreiraj debug log datoteku." + +#: views/settings/page-sections/tutorials.php:13 +#: views/settings/partials/getting-started.php:18 +msgid "Getting Started" +msgstr "Kako započeti" + +#: views/settings/page-sections/tutorials.php:15 +msgid "Getting Started with WP Rocket" +msgstr "Početak rada s WP Rocketom" + +#: views/settings/page-sections/tutorials.php:16 +#: views/settings/partials/getting-started.php:12 +msgid "Finding the Best Settings for Your Site" +msgstr "Pronalazak najboljih postavki za vašu web stranicu" + +#: views/settings/page-sections/tutorials.php:17 +#: views/settings/partials/getting-started.php:13 +msgid "How to Check if WP Rocket is Caching Your Site" +msgstr "Kako provjeriti da li WP Rocket cachira vašu web stranicu" + +#: views/settings/page-sections/tutorials.php:18 +#: views/settings/partials/getting-started.php:14 +msgid "How to Measure the Speed of Your Site" +msgstr "Kako izmjeriti brzinu učitavanja vaše web stranice" + +#: views/settings/page-sections/tutorials.php:24 +msgid "Troubleshooting Display Issues with File Optimization" +msgstr "Rješavanje problema prikaza prilikom optimizacije datoteka" + +#: views/settings/page-sections/tutorials.php:25 +msgid "How to Find the Right JavaScript to Exclude" +msgstr "Kako pronaći pravi JavaScript za isključivanje" + +#: views/settings/page-sections/tutorials.php:26 +msgid "How External Content Slows Your Site" +msgstr "Kako vanjski sadržaj/resursi usporavaju vašu web stranicu" + +#: views/settings/page-sections/tutorials.php:32 +msgid "How Preloading Works" +msgstr "Kako funkcionira predučitavanje" + +#: views/settings/page-sections/tutorials.php:38 +msgid "Set Up the Cloudflare Add-on" +msgstr "Postavljanje Cloudflare dodatka" + +#: views/settings/page.php:16 +msgid "WP Rocket Settings" +msgstr "WP Rocket postavke" + +#: views/settings/page.php:30 +#, php-format +msgid "version %s" +msgstr "verzija %s" + +#: views/settings/page.php:57 +msgid "Show Sidebar" +msgstr "Prikaži bočnu traku" + +#: views/settings/page.php:76 +msgid "Thanks for choosing to participate in the WP Rocket beta program!" +msgstr "Hvala što ste odabrali sudjelovanje u WP Rocket beta programu!" + +#: views/settings/page.php:77 +msgid "" +"A beta version is usually one that has new features and improvements, but we" +" want to test it a little more before full launch." +msgstr "" +"Beta verzija obično ima nove značajke i poboljšanja, ali želimo je dodatno " +"testirati prije službene objave." + +#: views/settings/page.php:78 +msgid "" +"We’d love it if you took our beta versions for a ride, but please keep in " +"mind that it might be less stable than our other releases. Don’t worry, you " +"can switch back to a full release version at any time." +msgstr "" +"Bilo bi nam drago ako biste preuzeli našu beta verziju za probu, ali imajte " +"na umu da je možda manje stabilna od naših ostalih verzija. Ne brinite, " +"možete se vratiti na punu verziju u bilo kojem trenutku." + +#: views/settings/page.php:79 +msgid "" +"Your mission: please send all feedback about our beta versions, including " +"bug reports, to support@wp-rocket.me" +msgstr "" +"Vaša misija: pošaljite sve povratne informacije o našim beta verzijama, " +"uključujući izvješća o pogreškama, na support@wp-rocket.me" + +#: views/settings/page.php:81 +msgid "If you don’t want to join the beta program, simply close this window." +msgstr "" +"Ako se ne želite pridružiti beta programu, samo zatvorite ovaj prozor." + +#: views/settings/page.php:83 +msgid "Activate Rocket Tester" +msgstr "Aktiviraj Rocket Tester" + +#: views/settings/page.php:94 +msgid "" +"Below is a detailed view of all data WP Rocket will collect if " +"granted permission." +msgstr "" +"U nastavku se nalazi detaljan pregled svih podataka koje će WP Rocket " +"prikupitiako dobije dozvolu." + +#: views/settings/page.php:97 +msgid "" +"WP Rocket will never transmit any domain names or email addresses (except " +"for license validation), IP addresses, or third-party API keys." +msgstr "" +"WP Rocket nikada neće prenijeti imena domena ili adrese e-pošte (osim za " +"provjeru licence), IP adrese ili API ključeve treće strane." + +#: views/settings/page.php:99 +msgid "Activate Rocket analytics" +msgstr "Aktiviraj Rocket analitiku" + +#: views/settings/partials/documentation.php:15 +msgid "It is a great starting point to fix some of the most common issues." +msgstr "" +"To je izvrsna polazna točka za rješavanje nekih od najčešćih problema." + +#: views/settings/partials/documentation.php:22 +msgid "Read the documentation" +msgstr "Pročitaj dokumentaciju" + +#: views/settings/partials/getting-started.php:11 +msgid "What WP Rocket Does For You By Default" +msgstr "Što WP Rocket radi prema zadanim postavkama" + +#: views/settings/partials/sidebar.php:12 +msgid "How to correctly measure your website’s loading time" +msgstr "Kako točno izmjeriti vrijeme učitavanja web-lokacije" + +#: views/settings/partials/sidebar.php:14 +msgid "Check our tutorial and learn how to measure the speed of your site." +msgstr "" +"Provjerite naš vodič i saznajte kako mjeriti brzinu učitavanja vaše web " +"stranice." + +#: views/settings/partials/sidebar.php:19 +msgid "" +"Learn how to use best practices to correctly measure your site's " +"performance." +msgstr "" +"Saznajte kako koristiti najbolje postupke za točno mjerenje performansi vaše" +" web-lokacije." + +#: views/settings/partials/sidebar.php:20 +msgid "" +"https://wp-rocket.me/blog/correctly-measure-websites-page-load-" +"time/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://wp-rocket.me/blog/correctly-measure-websites-page-load-" +"time/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: views/settings/partials/sidebar.php:20 +msgid "Read our guide" +msgstr "Pročitajte naš vodič" + +#: views/settings/partials/sidebar.php:23 +msgid "Why Google PageSpeed grade should not matter" +msgstr "Zašto Google PageSpeed ​​ocjena ne bi trebala biti važna" + +#: views/settings/partials/sidebar.php:24 +msgid "" +"https://wp-rocket.me/blog/the-truth-about-google-pagespeed-" +"insights/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://wp-rocket.me/blog/the-truth-about-google-pagespeed-" +"insights/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: views/settings/partials/sidebar.php:24 +msgid "Read more" +msgstr "Pročitaj više" + +#: views/settings/partials/sidebar.php:29 +msgid "You have not activated logged-in user cache." +msgstr "Niste aktivirali cachiranje za logirane korisnike." + +#: views/settings/partials/sidebar.php:30 +msgid "" +"Use a private browser to check your website's speed and visual appearance." +msgstr "" +"Pomoću privatne/incognito kartice preglednika provjerite brzinu i izgled " +"vaše web-lokacije." + +#: views/settings/rocketcdn/cta-big.php:27 +#, php-format +msgid "Valid until %s only!" +msgstr "Vrijedi samo do %s !" + +#: views/settings/rocketcdn/cta-big.php:36 +msgid "Speed up your website thanks to:" +msgstr "Ubrzajte svoju web stranicu zahvaljujući:" + +#: views/settings/rocketcdn/cta-big.php:42 +#, php-format +msgid "" +"High performance Content Delivery Network (CDN) with %1$sunlimited " +"bandwith%2$s" +msgstr "CDN s visokim performansama i %1$sneograničenim bandwithom%2$s" + +#: views/settings/rocketcdn/cta-big.php:48 +#, php-format +msgid "" +"Easy configuration: the %1$sbest CDN settings%2$s are automatically applied" +msgstr "" +"Jednostavna konfiguracija: %1$snajbolje CDN postavke%2$s su automatski " +"primijenjene" + +#: views/settings/rocketcdn/cta-big.php:54 +#, php-format +msgid "" +"WP Rocket integration: the CDN option is %1$sautomatically configured%2$s in" +" our plugin" +msgstr "" +"WP Rocket integracija: CDN je %1$sautomatski konfiguriran%2$s u našem " +"pluginu" + +#: views/settings/rocketcdn/cta-big.php:69 +#, php-format +msgid "%s / month" +msgstr "%s / mjesec" + +#: views/settings/rocketcdn/cta-big.php:74 +msgid "Get Started" +msgstr "Započni" + +#: views/settings/rocketcdn/cta-big.php:80 +msgid "Learn more about RocketCDN" +msgstr "Saznaj više o RocketCDN-u" + +#: views/settings/rocketcdn/cta-big.php:82 +msgid "Reduce this banner" +msgstr "Smanji ovaj banner" + +#: views/settings/rocketcdn/cta-big.php:88 +#, php-format +msgid "" +"* $%1$s/month for 12 months then $%2$s/month. You can cancel your " +"subscription at any time." +msgstr "" +"* $%1$s/mjesec za 12 mjeseci a zatim $%2$s/mjesec. Svoju pretplatu možete " +"otkazati u svakom trenutku." + +#: views/settings/rocketcdn/cta-small.php:17 +msgid "" +"Speed up your website with RocketCDN, WP Rocket’s Content Delivery Network." +msgstr "Ubrzajte svoju web stranicu pomoću RocketCDN-a od WP Rocketa." + +#: views/settings/rocketcdn/cta-small.php:20 +#: views/settings/rocketcdn/promote-notice.php:13 +msgid "Learn More" +msgstr "Saznaj više" + +#: views/settings/rocketcdn/dashboard-status.php:23 +msgid "RocketCDN is unavailable on local domains and staging sites." +msgstr "RocketCDN nije dostupan na lokalnim domenama i staging webovima." + +#: views/settings/rocketcdn/dashboard-status.php:32 +msgid "Get RocketCDN" +msgstr "Nabavi RocketCDN" + +#: views/settings/rocketcdn/promote-notice.php:11 +msgid "New!" +msgstr "Novo!" + +#: views/settings/rocketcdn/promote-notice.php:12 +msgid "" +"Speed up your website with RocketCDN, WP Rocket’s Content Delivery Network!" +msgstr "Ubrzajte svoju web stranicu pomoću RocketCDN-a od WP Rocketa." + +#: views/settings/sections/addons-container.php:24 +#: views/settings/sections/fields-container.php:28 +msgid "Need Help?" +msgstr "Trebate pomoć?" diff --git a/wp-content/plugins/wp-rocket/languages/rocket-hu_HU.mo b/wp-content/plugins/wp-rocket/languages/rocket-hu_HU.mo new file mode 100644 index 0000000000000000000000000000000000000000..21ee823082878a1892d1d5f7089db49fcc778bb3 GIT binary patch literal 948 zcmaJ=(QeZ)6di)6Jo3zgk$7lDoy1Ln%u!#~b!=i4RoB7ZB9q)Tfy9n%XKncpevfbA zy4hMGO})}p&OJW%Jx*@^zJB%R1mgwf8_ai@FEIz0E@I5zNSxx+Y4$PK>L+BDUgh)~ zXj3Z5$@e)~sO%S568Vw;$y-39w52n%Dsy_)t_)o&P6}%q9t7)#>YdoHA@Js3mvo{* zSUiZH3k#eKLv~8Tm<~S@#yA_%a1@3pqziZ`UBhQ|A5ix`#PF_#T(x2abP1y7J#73;)y`ZEc_{*myG_7i7DYkPrkA%t-UZ=x30ig;ko9xkB@nFhBMg!=(W?G(lkjSNjIDgh8e;qARUpUa#s&VxFl1lRP#jdi$RnnV6s$L ztMM=g3tLx@aL2-d?ck1m?6lv|)d!z9AaqvD(LW9G2G1=_H(Ax@kUN1e_}7%L$KaR>FtySJuaJ=cr4T$;AnQC%2$s." +msgstr "" + +#: inc/admin/options.php:275 +msgid "The following pattern is invalid and has been removed:" +msgid_plural "The following patterns are invalid and have been removed:" +msgstr[0] "" +msgstr[1] "" + +#: inc/admin/ui/meta-boxes.php:14 inc/admin/ui/notices.php:955 +#: inc/common/admin-bar.php:65 inc/common/admin-bar.php:118 +#: views/settings/page-sections/dashboard.php:115 +msgid "Clear cache" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:36 +msgid "WP Rocket Options" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:66 +msgid "Never cache this page" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:70 +msgid "Activate these options on this post:" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:73 +msgid "LazyLoad for images" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:74 +msgid "LazyLoad for iframes/videos" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:75 +#: inc/classes/admin/settings/class-page.php:615 +msgid "Minify HTML" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:76 +msgid "Minify/combine CSS" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:77 +msgid "Minify/combine JS" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:78 +#: inc/classes/admin/settings/class-page.php:1413 +#: inc/classes/admin/settings/class-page.php:1424 +#: inc/deprecated/deprecated.php:1775 +msgid "CDN" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:79 +msgid "Optimize CSS Delivery" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:80 +msgid "Defer JS" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:86 +#, php-format +msgid "Activate first the %s option." +msgstr "" + +#: inc/admin/ui/meta-boxes.php:102 +#, php-format +msgid "" +"%1$sNote:%2$s None of these options will be applied if this post has been " +"excluded from cache in the global cache settings." +msgstr "" + +#: inc/admin/ui/notices.php:24 inc/admin/ui/notices.php:34 +#, php-format +msgid "" +"%1$s has not been deactivated due to missing writing permissions.
      \n" +"Make %2$s writeable and retry deactivation, or force deactivation now:" +msgstr "" + +#: inc/admin/ui/notices.php:83 +#, php-format +msgid "" +"%s: One or more plugins have been enabled or disabled, " +"clear the cache if they affect the front end of your site." +msgstr "" + +#: inc/admin/ui/notices.php:196 +#, php-format +msgid "" +"%s: The following plugins are not compatible with this " +"plugin and may cause unexpected results:" +msgstr "" + +#: inc/admin/ui/notices.php:202 +msgid "Deactivate" +msgstr "" + +#: inc/admin/ui/notices.php:243 +msgid "" +"WP Rocket Footer JS is not an official add-on. It prevents some options in " +"WP Rocket from working correctly. Please deactivate it if you have problems." +msgstr "" + +#: inc/admin/ui/notices.php:283 +#, php-format +msgid "" +"Endurance Cache is currently enabled, which will conflict with WP Rocket " +"Cache. Please set the Endurance Cache cache level to Off (Level 0) on the " +"%1$sSettings > General%2$s page to prevent any issues." +msgstr "" + +#: inc/admin/ui/notices.php:305 +#, php-format +msgid "" +"%1$s: A custom permalink structure is required for the plugin to work " +"properly. %2$sGo to permalinks settings%3$s" +msgstr "" + +#: inc/admin/ui/notices.php:442 +#, php-format +msgid "" +"%s could not modify the .htaccess file due to missing writing permissions." +msgstr "" + +#: inc/admin/ui/notices.php:448 inc/admin/ui/notices.php:1032 +#, php-format +msgid "Troubleshoot: %1$sHow to make system files writeable%2$s" +msgstr "" + +#: inc/admin/ui/notices.php:450 inc/admin/ui/notices.php:1034 +msgid "" +"https://docs.wp-rocket.me/article/626-how-to-make-system-files-htaccess-wp-" +"config-writeable/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" + +#: inc/admin/ui/notices.php:456 +msgid "" +"Don’t worry, WP Rocket’s page caching and settings will still function " +"correctly." +msgstr "" + +#: inc/admin/ui/notices.php:456 +msgid "" +"For optimal performance, adding the following lines into your .htaccess is " +"recommended (not required):" +msgstr "" + +#: inc/admin/ui/notices.php:600 +#, php-format +msgid "" +"%1$s is good to go! %2$sTest your load time%4$s, or visit your " +"%3$ssettings%4$s." +msgstr "" + +#: inc/admin/ui/notices.php:721 +msgid "" +"Would you allow WP Rocket to collect non-sensitive diagnostic data from this" +" website?" +msgstr "" + +#: inc/admin/ui/notices.php:722 +msgid "This would help us to improve WP Rocket for you in the future." +msgstr "" + +#: inc/admin/ui/notices.php:728 +msgid "What info will we collect?" +msgstr "" + +#: inc/admin/ui/notices.php:733 +msgid "" +"Below is a detailed view of all data WP Rocket will collect if granted " +"permission. WP Rocket will never transmit any domain names or email " +"addresses (except for license validation), IP addresses, or third-party API " +"keys." +msgstr "" + +#: inc/admin/ui/notices.php:742 +msgid "Yes, allow" +msgstr "" + +#: inc/admin/ui/notices.php:745 +msgid "No, thanks" +msgstr "" + +#: inc/admin/ui/notices.php:783 +msgid "Thank you!" +msgstr "" + +#: inc/admin/ui/notices.php:788 +msgid "WP Rocket now collects these metrics from your website:" +msgstr "" + +#: inc/admin/ui/notices.php:825 +#, php-format +msgid "%s: Cache cleared." +msgstr "" + +#: inc/admin/ui/notices.php:830 +#, php-format +msgid "%s: Post cache cleared." +msgstr "" + +#: inc/admin/ui/notices.php:835 +#, php-format +msgid "%s: Term cache cleared." +msgstr "" + +#: inc/admin/ui/notices.php:840 +#, php-format +msgid "%s: User cache cleared." +msgstr "" + +#: inc/admin/ui/notices.php:910 +msgid "" +"The following scheduled event failed to run. This may indicate the CRON " +"system is not running properly, which can prevent some WP Rocket features " +"from working as intended:" +msgid_plural "" +"The following scheduled events failed to run. This may indicate the CRON " +"system is not running properly, which can prevent some WP Rocket features " +"from working as intended:" +msgstr[0] "" +msgstr[1] "" + +#: inc/admin/ui/notices.php:919 +msgid "Please contact your host to check if CRON is working." +msgstr "" + +#: inc/admin/ui/notices.php:958 +msgid "Stop Preload" +msgstr "" + +#: inc/admin/ui/notices.php:976 +msgid "Force deactivation " +msgstr "" + +#: inc/admin/ui/notices.php:989 +msgid "The following code should have been written to this file:" +msgstr "" + +#: inc/admin/ui/notices.php:999 views/settings/page-sections/dashboard.php:45 +msgid "Dismiss this notice." +msgstr "" + +#: inc/admin/ui/notices.php:1020 +#, php-format +msgid "%s cannot configure itself due to missing writing permissions." +msgstr "" + +#: inc/admin/ui/notices.php:1026 +#, php-format +msgid "Affected file/folder: %s" +msgstr "" + +#: inc/classes/admin/Database/class-optimization.php:41 +#: inc/classes/admin/settings/class-page.php:1289 +msgid "Revisions" +msgstr "" + +#: inc/classes/admin/Database/class-optimization.php:42 +#: inc/classes/admin/settings/class-page.php:1299 +msgid "Auto Drafts" +msgstr "" + +#: inc/classes/admin/Database/class-optimization.php:43 +#: inc/classes/admin/settings/class-page.php:1309 +msgid "Trashed Posts" +msgstr "" + +#: inc/classes/admin/Database/class-optimization.php:44 +#: inc/classes/admin/settings/class-page.php:1319 +msgid "Spam Comments" +msgstr "" + +#: inc/classes/admin/Database/class-optimization.php:45 +#: inc/classes/admin/settings/class-page.php:1329 +msgid "Trashed Comments" +msgstr "" + +#: inc/classes/admin/Database/class-optimization.php:46 +#: inc/classes/admin/settings/class-page.php:1339 +msgid "Expired transients" +msgstr "" + +#: inc/classes/admin/Database/class-optimization.php:47 +msgid "Transients" +msgstr "" + +#: inc/classes/admin/Database/class-optimization.php:48 +msgid "Tables" +msgstr "" + +#: inc/classes/admin/class-logs.php:124 +msgid "The debug file could not be deleted." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:212 +#: inc/classes/admin/settings/class-page.php:213 +msgid "Unavailable" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:327 +#: inc/deprecated/deprecated.php:1791 +#: views/settings/page-sections/dashboard.php:72 +msgid "License" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:344 +msgid "API key" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:359 +msgid "Email address" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:388 +msgid "Dashboard" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:389 +msgid "Get help, account info" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:398 +msgid "My Status" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:408 views/settings/page.php:71 +msgid "Rocket Tester" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:409 +msgid "I am part of the WP Rocket Beta Testing Program." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:417 views/settings/page.php:89 +msgid "Rocket Analytics" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:419 +#, php-format +msgid "" +"I agree to share anonymous data with the development team to help improve WP" +" Rocket. %1$sWhat info will we collect?%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:447 +msgid "Cache" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:448 +msgid "Basic cache options" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:455 +msgid "Mobile Cache" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:457 +msgid "Speed up your site for mobile visitors." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:462 +msgid "" +"We detected you use a plugin that requires a separate cache for mobile, and " +"automatically enabled this option for compatibility." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:466 +msgid "User Cache" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:469 +#, php-format +msgid "" +"%1$sUser cache%2$s is great when you have user-specific or restricted " +"content on your website." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:477 +msgid "Cache Lifespan" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:480 +#, php-format +msgid "" +"Cache lifespan is the period of time after which all cache files are " +"removed.
      Enable %1$spreloading%2$s for the cache to be rebuilt " +"automatically after lifespan expiration." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:494 +msgid "Enable caching for logged-in WordPress users" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:502 +msgid "Enable caching for mobile devices" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:517 +msgid "Separate cache files for mobile devices" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:519 +#, php-format +msgid "" +"%1$sMobile cache%2$s works safest with both options enabled. When in doubt, " +"keep both." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:535 +msgid "" +"Specify time after which the global cache is cleared
      (0 = unlimited )" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:537 +#, php-format +msgid "" +"Reduce lifespan to 10 hours or less if you notice issues that seem to appear" +" periodically. %1$sWhy?%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:543 +msgid "Minutes" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:544 +msgid "Hours" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:545 +msgid "Days" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:571 +msgid "File Optimization" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:572 +msgid "Optimize CSS & JS" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:579 +msgid "Basic Settings" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:586 +#: inc/classes/admin/settings/class-page.php:596 +#: inc/classes/admin/settings/class-page.php:606 +#, php-format +msgid "" +"%1$s Minification is currently activated in Autoptimize. If" +" you want to use %2$s’s minification, disable those options in Autoptimize." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:589 +msgid "CSS Files" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:599 +msgid "JavaScript Files" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:619 +msgid "Minifying HTML removes whitespace and comments to reduce the size." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:630 +msgid "Combine Google Fonts files" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:631 +msgid "Combining Google Fonts will reduce the number of HTTP requests." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:639 +msgid "Remove query strings from static resources" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:641 +#, php-format +msgid "" +"Removes the version query string from static files (e.g. style.css?ver=1.0) " +"and encodes it into the filename instead (e.g. style-1.0.css). Can improve " +"your GTMetrix score. %1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:649 +msgid "Minify CSS files" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:650 +msgid "Minify CSS removes whitespace and comments to reduce the file size." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:663 +#: inc/classes/admin/settings/class-page.php:685 +#: inc/classes/admin/settings/class-page.php:755 +#: inc/classes/admin/settings/class-page.php:777 +msgid "This could break things!" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:664 +#: inc/classes/admin/settings/class-page.php:686 +#: inc/classes/admin/settings/class-page.php:756 +#: inc/classes/admin/settings/class-page.php:778 +msgid "" +"If you notice any errors on your website after having activated this " +"setting, just deactivate it again, and your site will be back to normal." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:665 +msgid "Activate minify CSS" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:670 +msgid "Combine CSS files (Enable Minify CSS files to select)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:672 +#, php-format +msgid "" +"Combine CSS merges all your files into 1, reducing HTTP requests. Not " +"recommended if your site uses HTTP/2. %1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:687 +msgid "Activate combine CSS" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:693 +msgid "" +"Specify URLs of CSS files to be excluded from minification and concatenation" +" (one per line)." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:694 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*).css " +"wildcards to exclude all CSS files located at a specific path." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:707 +msgid "Optimize CSS delivery" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:714 +#, php-format +msgctxt "WP Critical CSS compatibility" +msgid "" +"Optimize CSS Delivery is currently handled by the %1$s plugin. If you want " +"to use WP Rocket’s Optimize CSS Delivery option, disable the %1$s plugin." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:716 +#, php-format +msgid "" +"Optimize CSS delivery eliminates render-blocking CSS on your website for " +"faster perceived load time. %1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:727 +msgid "Fallback critical CSS" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:732 +#, php-format +msgid "" +"Provides a fallback if auto-generated critical path CSS is incomplete. " +"%1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:741 +msgid "Minify JavaScript files" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:742 +msgid "" +"Minify JavaScript removes whitespace and comments to reduce the file size." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:757 +msgid "Activate minify JavaScript" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:762 +msgid "" +"Combine JavaScript files (Enable Minify JavaScript files to select)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:764 +#, php-format +msgid "" +"Combine JavaScript files combines your site’s internal, 3rd party and inline" +" JS reducing HTTP requests. Not recommended if your site uses HTTP/2. " +"%1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:779 +msgid "Activate combine JavaScript" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:786 +#, php-format +msgid "" +"Specify patterns of inline JavaScript to be excluded from concatenation (one" +" per line). %1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:803 +msgid "" +"Specify URLs of JavaScript files to be excluded from minification and " +"concatenation (one per line)." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:804 +msgid "" +"Internal: The domain part of the URL will be stripped " +"automatically. Use (.*).js wildcards to exclude all JS files located at a " +"specific path." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:806 +#, php-format +msgid "" +"3rd Party: Use either the full URL path or only the domain " +"name, to exclude external JS. %1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:822 +msgid "Load JavaScript deferred" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:824 +#, php-format +msgid "" +"Load JavaScript deferred eliminates render-blocking JS on your site and can " +"improve load time. %1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:835 +msgid "Safe Mode for jQuery (recommended)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:836 +msgid "" +"Safe mode for jQuery for deferred JS ensures support for inline jQuery " +"references from themes and plugins by loading jQuery at the top of the " +"document as a render-blocking script.
      Deactivating may result in " +"broken functionality, test thoroughly!" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:861 +msgid "Media" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:862 +msgid "LazyLoad, emojis, embeds" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:869 +msgid "LazyLoad" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:872 +#, php-format +msgid "" +"It can improve actual and perceived loading time as images, iframes, and " +"videos will be loaded only as they enter (or about to enter) the viewport " +"and reduces the number of HTTP requests. %1$sMore Info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:879 +#, php-format +msgid "" +"Lazyload is currently activated in Autoptimize. If you want" +" to use %1$s’s lazyload, disable this option in Autoptimize." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:882 +msgid "Emoji 👻" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:884 +msgid "" +"Use default emoji of visitor's browser instead of loading emoji from " +"WordPress.org" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:888 +msgid "Embeds" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:890 +msgid "" +"Prevents others from embedding content from your site, prevents you from " +"embedding content from other (non-whitelisted) sites, and removes JavaScript" +" requests related to WordPress embeds" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:900 +msgid "Enable for images" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:911 +msgctxt "Avada" +msgid "" +"Lazyload for images is currently activated in Avada. If you want to use WP " +"Rocket’s LazyLoad, disable this option in Avada." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:919 +msgid "Enable for iframes and videos" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:934 +msgid "Replace YouTube iframe with preview image" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:935 +msgid "" +"This can significantly improve your loading time if you have a lot of " +"YouTube videos on a page." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:947 +msgid "Disable Emoji" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:948 +msgid "Disable Emoji will reduce the number of external HTTP requests." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:956 +msgid "Disable WordPress embeds" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:978 +#: inc/classes/admin/settings/class-page.php:988 +#: inc/deprecated/deprecated.php:1778 +msgid "Preload" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:979 +msgid "Generate cache files" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:991 +#, php-format +msgid "" +"When you enable preloading WP Rocket will generate the cache starting with " +"the links on your homepage followed by the sitemaps you specify. Preloading " +"is automatically triggered when you add or update content and can also be " +"manually triggered from the admin bar or from the %1$sWP Rocket " +"Dashboard%2$s." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:999 +msgid "Prefetch DNS Requests" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1001 +msgid "" +"DNS prefetching can make external files load faster, especially on mobile " +"networks" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1015 +msgid "Activate Preloading" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1034 +msgid "Activate sitemap-based cache preloading" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1053 +msgid "Sitemaps for preloading" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1057 +msgid "Specify XML sitemap(s) to be used for preloading" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1067 +msgid "URLs to prefetch" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1068 +msgid "" +"Specify external hosts to be prefetched (no http:, one per " +"line)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1091 +msgid "Advanced Rules" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1092 +msgid "Fine-tune cache rules" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1101 +msgid "" +"Sensitive pages like custom login/logout URLs should be excluded from cache." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1104 +msgctxt "plugin name" +msgid "WooCommerce" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1106 +msgctxt "plugin name" +msgid "Easy Digital Downloads" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1108 +msgctxt "plugin name" +msgid "iThemes Exchange" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1110 +msgctxt "plugin name" +msgid "Jigoshop" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1112 +msgctxt "plugin name" +msgid "WP-Shop" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1118 +#, php-format +msgid "" +"
      Cart, checkout and \"my account\" pages set in " +"%1$s%2$s%3$s will be detected and never cached by default." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1139 +msgid "Never Cache Cookies" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1158 +msgid "Cache Query String(s)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1161 +#, php-format +msgid "" +"%1$sCache for query strings%2$s enables you to force caching for specific " +"GET parameters." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1175 +msgid "" +"Specify URLs of pages or posts that should never be cached (one per line)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1176 +#: inc/classes/admin/settings/class-page.php:1204 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*) " +"wildcards to address multiple URLs under a given path." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1185 +msgid "" +"Specify the IDs of cookies that, when set in the visitor's browser, should " +"prevent a page from getting cached (one per line)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1193 +msgid "" +"Specify user agent strings that should never see cached pages (one per line)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1194 +msgid "Use (.*) wildcards to detect parts of UA strings." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1203 +msgid "" +"Specify URLs you always want purged from cache whenever you update any post " +"or page (one per line)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1212 +msgid "Specify query strings for caching (one per line)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1240 +#: inc/deprecated/deprecated.php:1777 +msgid "Database" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1241 +msgid "Optimize, reduce bloat" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1250 +msgid "Post Cleanup" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1252 +msgid "" +"Post revisions and drafts will be permanently deleted. Do not use this " +"option if you need to retain revisions or drafts." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1260 +msgid "Comments Cleanup" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1262 +msgid "Spam and trashed comments will be permanently deleted." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1266 +msgid "Transients Cleanup" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1268 +msgid "" +"Transients are temporary options; they are safe to remove. They will be " +"automatically regenerated as your plugins require them." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1272 +msgid "Database Cleanup" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1274 +msgid "Reduces overhead of database tables" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1278 +msgid "Automatic cleanup" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1291 +#, php-format +msgid "%s revision in your database." +msgid_plural "%s revisions in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1301 +#, php-format +msgid "%s draft in your database." +msgid_plural "%s drafts in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1311 +#, php-format +msgid "%s trashed post in your database." +msgid_plural "%s trashed posts in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1321 +#, php-format +msgid "%s spam comment in your database." +msgid_plural "%s spam comments in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1331 +#, php-format +msgid "%s trashed comment in your database." +msgid_plural "%s trashed comments in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1341 +#, php-format +msgid "%s expired transient in your database." +msgid_plural "%s expired transients in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1349 +msgid "All transients" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1351 +#, php-format +msgid "%s transient in your database." +msgid_plural "%s transients in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1359 +msgid "Optimize Tables" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1361 +#, php-format +msgid "%s table to optimize in your database." +msgid_plural "%s tables to optimize in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1372 +msgid "Schedule Automatic Cleanup" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1384 +msgid "Frequency" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1392 +msgid "Daily" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1393 +msgid "Weekly" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1394 +msgid "Monthly" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1414 +msgid "Integrate your CDN" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1426 +msgid "" +"All URLs of static files (CSS, JS, images) will be rewritten to the CNAME(s)" +" you provide." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1428 +#, php-format +msgid "" +"Not required for services like Cloudflare and Sucuri. Please see our " +"available %1$sAdd-ons%2$s." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1469 +#, php-format +msgid "" +"%1$s%2$s Add-on%3$s is currently enabled. Configuration of the CDN settings " +"is not required for %2$s to work on your site." +msgid_plural "" +"%1$s%2$s Add-ons%3$s are currently enabled. Configuration of the CDN " +"settings is not required for %2$s to work on your site." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1484 +msgid "Enable Content Delivery Network" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1493 +msgid "CDN CNAME(s)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1494 +msgid "Specify the CNAME(s) below" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1501 +msgid "" +"Specify URL(s) of files that should not get served via CDN (one per line)." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1502 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*) " +"wildcards to exclude all files of a given file type located at a specific " +"path." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1525 +#: inc/classes/admin/settings/class-page.php:1533 +msgid "Heartbeat" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1526 +msgid "Control WordPress Heartbeat API" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1534 +msgid "" +"Reducing or disabling the Heartbeat API’s activity can help save some of " +"your server’s resources." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1543 +msgid "Reduce or disable Heartbeat activity" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1544 +msgid "" +"Reducing activity will change Heartbeat frequency from one hit each minute " +"to one hit every 2 minutes." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1544 +msgid "" +"Disabling Heartbeat entirely may break plugins and themes using this API." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1558 +msgid "Do not limit" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1559 +msgid "Reduce activity" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1560 +msgid "Disable" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1568 +msgid "Control Heartbeat" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1577 +msgid "Behavior in backend" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1584 +msgid "Behavior in post editor" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1590 +msgid "Behavior in frontend" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1609 +msgid "Add-ons" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1610 +msgid "Add more features" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1617 +msgid "One-click Rocket Add-ons" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1618 +msgid "" +"One-Click Add-ons are features extending available options without " +"configuration needed. Switch the option \"on\" to enable from this screen." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1628 +msgid "Rocket Add-ons" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1629 +msgid "Rocket Add-ons are complementary features extending available options." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1642 +msgid "Google Tracking" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1648 +msgid "Improve browser caching for Google Analytics" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1650 +#, php-format +msgid "" +"WP Rocket will host these Google scripts locally on your server to help " +"satisfy the PageSpeed recommendation for Leverage browser " +"caching.
      %1$sLearn more%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1665 +msgid "Facebook Pixel" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1671 +msgid "Improve browser caching for Facebook Pixel" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1673 +#, php-format +msgid "" +"WP Rocket will host these Facebook Pixels locally on your server to help " +"satisfy the PageSpeed recommendation for Leverage browser " +"caching.
      %1$sLearn more%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1706 +msgid "Varnish" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1712 +msgid "If Varnish runs on your server, you must activate this add-on." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1714 +#, php-format +msgid "" +"Varnish cache will be purged each time WP Rocket clears its cache to ensure " +"content is always up-to-date.
      %1$sLearn more%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1729 +#: inc/classes/admin/settings/class-page.php:1789 +msgid "Cloudflare" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1735 +msgid "Integrate your Cloudflare account with this add-on." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1736 +msgid "" +"Provide your account email, global API key, and domain to use options such " +"as clearing the Cloudflare cache and enabling optimal settings with WP " +"Rocket." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1748 +msgid "Clear the Sucuri cache when WP Rocket’s cache is cleared." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1751 +msgid "" +"Provide your API key to clear the Sucuri cache when WP Rocket’s cache is " +"cleared." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1759 +#: inc/classes/admin/settings/class-page.php:1907 +msgid "Sucuri" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1765 +msgid "Synchronize Sucuri cache with this add-on." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1805 +msgid "Cloudflare credentials" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1814 +msgid "Cloudflare settings" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1828 +msgctxt "Cloudflare" +msgid "Global API key:" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1829 +msgid "" +"https://support.cloudflare.com/hc/en-us/articles/200167836-Where-do-I-find-" +"my-Cloudflare-API-key-" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1829 +msgctxt "Cloudflare" +msgid "Find your API key" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1841 +msgctxt "Cloudflare" +msgid "Account email" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1850 +msgctxt "Cloudflare" +msgid "Zone ID" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1860 +msgid "Development mode" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1862 +#, php-format +msgid "" +"Temporarily activate development mode on your website. This setting will " +"automatically turn off after 3 hours. %1$sLearn more%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1870 +msgid "Optimal settings" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1871 +msgid "" +"Automatically enhances your Cloudflare configuration for speed, performance " +"grade and compatibility." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1879 +msgid "Relative protocol" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1880 +msgid "" +"Should only be used with Cloudflare's flexible SSL feature. URLs of static " +"files (CSS, JS, images) will be rewritten to use // instead of http:// or " +"https://." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1920 +msgid "Sucuri credentials" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1933 +msgctxt "Sucuri" +msgid "" +"Firewall API key (for plugin), must be in format {32 characters}/{32 " +"characters}:" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1934 +msgctxt "Sucuri" +msgid "Find your API key" +msgstr "" + +#: inc/classes/admin/settings/class-render.php:486 +#: inc/deprecated/deprecated.php:1296 +msgid "Upload file and import settings" +msgstr "" + +#: inc/classes/admin/settings/class-settings.php:385 +msgid "" +"Sucuri Add-on: The API key for the Sucuri firewall must be in format " +"{32 characters}/{32 characters}." +msgstr "" + +#: inc/classes/admin/settings/class-settings.php:462 +#: inc/deprecated/deprecated.php:1247 +msgid "Settings saved." +msgstr "" + +#: inc/classes/class-wp-rocket-requirements-check.php:148 +#, php-format +msgid "To function properly, %1$s %2$s requires at least:" +msgstr "" + +#: inc/classes/class-wp-rocket-requirements-check.php:152 +#, php-format +msgid "" +"PHP %1$s. To use this WP Rocket version, please ask your web host how to " +"upgrade your server to PHP %1$s or higher." +msgstr "" + +#: inc/classes/class-wp-rocket-requirements-check.php:157 +#, php-format +msgid "" +"WordPress %1$s. To use this WP Rocket version, please upgrade WordPress to " +"version %1$s or higher." +msgstr "" + +#: inc/classes/class-wp-rocket-requirements-check.php:160 +msgid "" +"If you are not able to upgrade, you can rollback to the previous version by " +"using the button below." +msgstr "" + +#: inc/classes/class-wp-rocket-requirements-check.php:162 +#: inc/deprecated/deprecated.php:1949 +#, php-format +msgid "Re-install version %s" +msgstr "" + +#: inc/classes/logger/class-logger.php:253 +#: inc/classes/logger/class-logger.php:285 +msgid "The log file does not exist." +msgstr "" + +#: inc/classes/logger/class-logger.php:259 +#: inc/classes/logger/class-logger.php:291 +msgid "The log file could not be read." +msgstr "" + +#: inc/classes/logger/class-logger.php:278 +msgid "The logs are not saved into a file." +msgstr "" + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:88 +#: inc/classes/optimization/CSS/class-critical-css-generation.php:99 +#: inc/classes/optimization/CSS/class-critical-css-generation.php:110 +#: inc/classes/optimization/CSS/class-critical-css-generation.php:120 +#: inc/classes/optimization/CSS/class-critical-css-generation.php:142 +#, php-format +msgid "Critical CSS for %1$s not generated. Error: %2$s" +msgstr "" + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:99 +msgid "The API returned an invalid response code." +msgstr "" + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:110 +msgid "The API returned an empty response." +msgstr "" + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:145 +#, php-format +msgid "The critical CSS content could not be saved as a file in %s." +msgstr "" + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:154 +#, php-format +msgid "Critical CSS for %s generated." +msgstr "" + +#: inc/classes/preload/class-homepage.php:83 +#, php-format +msgid "" +"Preload encountered an error. Could not gather links on %1$s because of the " +"following error: %2$s. %3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-homepage.php:96 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: %2$s. Security measures could be preventing access. " +"%3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-homepage.php:102 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: 404. Please make sure your homepage is accessible in your " +"browser. %2$sLearn more%3$s." +msgstr "" + +#: inc/classes/preload/class-homepage.php:108 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: 500. Please check with your web host about server access. " +"%2$sLearn more%3$s." +msgstr "" + +#: inc/classes/preload/class-homepage.php:114 +#, php-format +msgid "" +"Preload encountered an error. Could not gather links on %1$s because it " +"returned the following response code: %2$s. %3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:138 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not gather links on %1$s because" +" of the following error: %2$s. %3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:153 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: %2$s. Security measures could be preventing access." +" %3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:158 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: 404. Please make sure you entered the correct " +"sitemap URL and it is accessible in your browser. %2$sLearn more%3$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:163 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: 500. Please check with your web host about server " +"access. %2$sLearn more%3$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:168 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not gather links on %1$s because" +" it returned the following response code: %2$s. %3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:184 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not collect links from %1$s " +"because the file is empty. %2$sLearn more%3$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:205 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not collect links from %1$s " +"because of an error during the XML sitemap parsing. %2$sLearn more%3$s." +msgstr "" + +#: inc/classes/subscriber/Optimization/class-critical-css-subscriber.php:138 +#, php-format +msgid "" +"Critical CSS generation is currently running: %1$d of %2$d page types " +"completed. (Refresh this page to view progress)" +msgstr "" + +#: inc/classes/subscriber/Optimization/class-critical-css-subscriber.php:189 +#, php-format +msgid "Critical CSS generation finished for %1$d of %2$d page types." +msgstr "" + +#: inc/classes/subscriber/Optimization/class-critical-css-subscriber.php:203 +msgid "Critical CSS generation encountered one or more errors." +msgstr "" + +#: inc/classes/subscriber/Optimization/class-critical-css-subscriber.php:203 +msgid "Learn more." +msgstr "" + +#: inc/classes/subscriber/Tools/class-cache-dir-size-check-subscriber.php:51 +#: inc/classes/subscriber/class-facebook-tracking-cache-busting-subscriber.php:97 +#: inc/classes/subscriber/class-google-tracking-cache-busting-subscriber.php:154 +#: inc/common/cron.php:33 +msgid "weekly" +msgstr "" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:148 +msgid "Database optimization process is running" +msgstr "" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:179 +msgid "" +"Database optimization process is complete. Everything was already optimized!" +msgstr "" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:182 +msgid "" +"Database optimization process is complete. List of optimized items below:" +msgstr "" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:190 +#, php-format +msgid "%1$d %2$s optimized." +msgstr "" + +#: inc/classes/subscriber/admin/Settings/class-page-subscriber.php:137 +#: inc/deprecated/deprecated.php:1788 +#: views/settings/page-sections/tools.php:33 +msgid "Tools" +msgstr "" + +#: inc/classes/subscriber/admin/Settings/class-page-subscriber.php:138 +msgid "Import, Export, Rollback" +msgstr "" + +#: inc/classes/subscriber/admin/Settings/class-page-subscriber.php:160 +#: views/settings/page-sections/imagify.php:13 +msgid "Image Optimization" +msgstr "" + +#: inc/classes/subscriber/admin/Settings/class-page-subscriber.php:161 +msgid "Compress your images" +msgstr "" + +#: inc/classes/subscriber/preload/class-preload-subscriber.php:212 +#, php-format +msgid "" +"Preload: WP Rocket has started preloading your website. Go to the %1$sWP " +"Rocket settings%2$s page to track progress." +msgstr "" + +#: inc/classes/subscriber/preload/class-preload-subscriber.php:246 +#, php-format +msgid "" +"Preload: %1$s uncached page has now been preloaded. (refresh to see " +"progress)" +msgid_plural "" +"Preload: %1$s uncached pages have now been preloaded. (refresh to see " +"progress)" +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/subscriber/preload/class-preload-subscriber.php:255 +msgid "The following error happened during gathering of the URLs to preload:" +msgid_plural "" +"The following errors happened during gathering of the URLs to preload:" +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/subscriber/preload/class-preload-subscriber.php:308 +#, php-format +msgid "Preload complete: %d pages have been cached." +msgstr "" + +#: inc/classes/subscriber/preload/class-sitemap-preload-subscriber.php:117 +#, php-format +msgid "" +"%1$sSimpleXML PHP extension%2$s is not enabled on your server. Please " +"contact your host to enable it before running sitemap-based cache " +"preloading." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:72 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"Please deactivate the following %s option which conflicts with WP Rocket " +"features:" +msgid_plural "" +"Please deactivate the following %s options which conflict with WP Rocket " +"features:" +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:145 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sdisable emoji%3$s conflicts with WP Rockets %2$sdisable emoji%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:167 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sremove query strings%3$s conflicts with WP Rocket %2$sremove query " +"strings%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:203 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sGZIP compression%3$s conflicts with WP Rocket %2$sGZIP " +"compression%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:239 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sbrowser caching%3$s conflicts with WP Rocket %2$sbrowser " +"caching%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:271 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$spage caching%3$s conflicts with WP Rocket %2$spage caching%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:305 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sasset optimization%3$s conflicts with WP Rocket %2$sfile " +"optimization%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:123 +#, php-format +msgid "Sucuri cache purge error: %s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:128 +msgid "" +"The Sucuri cache is being cleared. Note that it may take up to two minutes " +"for it to be fully flushed." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:242 +msgid "Sucuri firewall API key was not found." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:251 +msgid "Sucuri firewall API key is invalid." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:303 +msgid "Error when contacting Sucuri firewall API." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:313 +#, php-format +msgid "Error when contacting Sucuri firewall API. Error message was: %s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:324 +msgid "Could not get a response from the Sucuri firewall API." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:335 +msgid "Got an invalid response from the Sucuri firewall API." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:345 +msgid "The Sucuri firewall API returned an unknown error." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:348 +#, php-format +msgid "The Sucuri firewall API returned the following error: %s" +msgid_plural "The Sucuri firewall API returned the following errors: %s" +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/traits/trait-updater-api-tools.php:53 +#: inc/deprecated/3.3.php:760 inc/deprecated/3.3.php:769 +#, php-format +msgid "" +"An unexpected error occurred. Something may be wrong with WP-Rocket.me or " +"this server’s configuration. If you continue to have problems, contact support." +msgstr "" + +#: inc/common/admin-bar.php:106 inc/common/admin-bar.php:260 +#: inc/functions/i18n.php:39 inc/functions/i18n.php:48 +msgid "All languages" +msgstr "" + +#: inc/common/admin-bar.php:133 +msgid "Clear this post" +msgstr "" + +#: inc/common/admin-bar.php:147 +msgid "Purge this URL" +msgstr "" + +#: inc/common/admin-bar.php:163 +msgid "Purge OPcache" +msgstr "" + +#: inc/common/admin-bar.php:180 +msgid "Regenerate Critical Path CSS" +msgstr "" + +#: inc/common/admin-bar.php:196 +msgid "Clear Cloudflare cache" +msgstr "" + +#: inc/common/admin-bar.php:217 inc/common/admin-bar.php:272 +#: views/settings/page-sections/dashboard.php:135 +msgid "Preload cache" +msgstr "" + +#: inc/common/admin-bar.php:287 views/settings/partials/documentation.php:13 +msgid "Documentation" +msgstr "" + +#: inc/common/cron.php:24 +#, php-format +msgid "%s clear" +msgstr "" + +#: inc/common/cron.php:39 +msgid "monthly" +msgstr "" + +#: inc/common/purge.php:456 +#, php-format +msgid "Cloudflare cache purge error: %s" +msgstr "" + +#: inc/common/purge.php:461 +msgid "Cloudflare cache successfully purged" +msgstr "" + +#: inc/deprecated/3.2.php:51 views/settings/page-sections/imagify.php:35 +msgid "Activate Imagify" +msgstr "" + +#: inc/deprecated/3.2.php:51 +msgid "Install Imagify for Free" +msgstr "" + +#: inc/deprecated/3.2.php:66 +msgid "" +"Speed up your website and boost your SEO by reducing image file sizes " +"without losing quality with Imagify." +msgstr "" + +#: inc/deprecated/3.2.php:71 +msgid "More details" +msgstr "" + +#: inc/deprecated/3.2.php:227 +#, php-format +msgid "Sitemap preload: %d pages have been cached." +msgstr "" + +#: inc/deprecated/3.2.php:260 +#, php-format +msgid "" +"Sitemap preload: %d uncached pages have now been preloaded. (refresh to see " +"progress)" +msgstr "" + +#: inc/deprecated/deprecated.php:242 +msgid "JS files with Deferred Loading JavaScript" +msgstr "" + +#: inc/deprecated/deprecated.php:295 +msgid "Add URL" +msgstr "" + +#: inc/deprecated/deprecated.php:1279 views/settings/fields/import-form.php:22 +msgid "" +"Before you can upload your import file, you will need to fix the following " +"error:" +msgstr "" + +#: inc/deprecated/deprecated.php:1290 views/settings/fields/import-form.php:35 +#, php-format +msgid "Choose a file from your computer (maximum size: %s)" +msgstr "" + +#: inc/deprecated/deprecated.php:1387 +msgid "Your Cloudflare credentials are valid." +msgstr "" + +#: inc/deprecated/deprecated.php:1391 +msgid "Your Cloudflare credentials are invalid!" +msgstr "" + +#: inc/deprecated/deprecated.php:1455 +msgid "Save and optimize" +msgstr "" + +#: inc/deprecated/deprecated.php:1455 +#: views/settings/page-sections/database.php:27 +msgid "Optimize" +msgstr "" + +#: inc/deprecated/deprecated.php:1466 inc/deprecated/deprecated.php:1668 +msgctxt "screen-reader-text" +msgid "Note:" +msgstr "" + +#: inc/deprecated/deprecated.php:1472 +msgctxt "screen-reader-text" +msgid "Performance tip:" +msgstr "" + +#: inc/deprecated/deprecated.php:1478 +msgctxt "screen-reader-text" +msgid "Third-party feature detected:" +msgstr "" + +#: inc/deprecated/deprecated.php:1490 inc/deprecated/deprecated.php:1674 +msgctxt "screen-reader-text" +msgid "Warning:" +msgstr "" + +#: inc/deprecated/deprecated.php:1503 +msgctxt "button text" +msgid "Download settings" +msgstr "" + +#: inc/deprecated/deprecated.php:1533 +msgid "Replace site's hostname with:" +msgstr "" + +#: inc/deprecated/deprecated.php:1552 inc/deprecated/deprecated.php:1589 +#: inc/deprecated/deprecated.php:1617 views/settings/fields/cnames.php:32 +#: views/settings/fields/cnames.php:63 views/settings/fields/cnames.php:93 +msgid "reserved for" +msgstr "" + +#: inc/deprecated/deprecated.php:1554 inc/deprecated/deprecated.php:1591 +#: inc/deprecated/deprecated.php:1619 views/settings/fields/cnames.php:35 +#: views/settings/fields/cnames.php:66 views/settings/fields/cnames.php:96 +msgid "All files" +msgstr "" + +#: inc/deprecated/deprecated.php:1566 inc/deprecated/deprecated.php:1596 +#: inc/deprecated/deprecated.php:1624 views/settings/fields/cnames.php:47 +#: views/settings/fields/cnames.php:78 views/settings/fields/cnames.php:108 +msgid "Images" +msgstr "" + +#: inc/deprecated/deprecated.php:1637 views/settings/fields/cnames.php:119 +msgid "Add CNAME" +msgstr "" + +#: inc/deprecated/deprecated.php:1708 +msgid "Watch the video" +msgstr "" + +#: inc/deprecated/deprecated.php:1773 +msgid "Basic" +msgstr "" + +#: inc/deprecated/deprecated.php:1774 +msgid "Static Files" +msgstr "" + +#: inc/deprecated/deprecated.php:1776 +msgid "Advanced" +msgstr "" + +#: inc/deprecated/deprecated.php:1946 +#, php-format +msgid "" +"%1$s %2$s requires at least PHP %3$s to function properly. To use this " +"version, please ask your web host how to upgrade your server to PHP %3$s or " +"higher. If you are not able to upgrade, you can rollback to the previous " +"version by using the button below." +msgstr "" + +#: inc/functions/admin.php:23 +msgid "" +"There seems to be an issue validating your license. Please see the error " +"message below." +msgid_plural "" +"There seems to be an issue validating your license. You can see the error " +"messages below." +msgstr[0] "" +msgstr[1] "" + +#: inc/functions/admin.php:361 +msgid "Server type:" +msgstr "" + +#: inc/functions/admin.php:370 +msgid "PHP version number:" +msgstr "" + +#: inc/functions/admin.php:379 +msgid "WordPress version number:" +msgstr "" + +#: inc/functions/admin.php:388 +msgid "WordPress multisite:" +msgstr "" + +#: inc/functions/admin.php:397 +msgid "Current theme:" +msgstr "" + +#: inc/functions/admin.php:406 +msgid "Current site language:" +msgstr "" + +#: inc/functions/admin.php:415 +msgid "Active plugins:" +msgstr "" + +#: inc/functions/admin.php:418 +msgid "Plugin names of all active plugins" +msgstr "" + +#: inc/functions/admin.php:424 +msgid "Anonymized WP Rocket settings:" +msgstr "" + +#: inc/functions/admin.php:427 +msgid "Which WP Rocket settings are active" +msgstr "" + +#: inc/functions/cloudflare.php:14 +msgid "" +"Curl functions are disabled, they are required for the Cloudflare Add-on to " +"work correctly." +msgstr "" + +#: inc/functions/cloudflare.php:21 +msgid "Cloudflare Email and API key are not set" +msgstr "" + +#: inc/functions/cloudflare.php:52 +#, php-format +msgid "Missing Cloudflare zone ID. %s could not fix this automatically." +msgstr "" + +#: inc/functions/cloudflare.php:58 +#, php-format +msgid "Read the %1$sdocumentation%2$s for further guidance." +msgstr "" + +#: inc/functions/cloudflare.php:60 +msgid "" +"https://docs.wp-rocket.me/article/18-using-wp-rocket-with-" +"cloudflare/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" + +#: inc/functions/cloudflare.php:100 +msgid "Connection to Cloudflare failed" +msgstr "" + +#: inc/functions/cloudflare.php:122 +msgid "Choose a domain from the list" +msgstr "" + +#: inc/functions/cloudflare.php:135 +msgid "No domain available in your Cloudflare account" +msgstr "" + +#: inc/functions/options.php:580 inc/functions/options.php:619 +msgid "" +"License validation failed. Our server could not resolve the request from " +"your website." +msgstr "" + +#: inc/functions/options.php:580 inc/functions/options.php:619 +#, php-format +msgid "" +"Try clicking %1$sSave Changes%2$s below. If the error persists, follow " +"%3$sthis guide%4$s." +msgstr "" + +#: inc/functions/options.php:596 +msgid "" +"License validation failed. You may be using a nulled version of the plugin. " +"Please do the following:" +msgstr "" + +#: inc/functions/options.php:596 inc/functions/options.php:638 +#, php-format +msgid "Login to your WP Rocket %1$saccount%2$s" +msgstr "" + +#: inc/functions/options.php:596 inc/functions/options.php:638 +msgid "Download the zip file" +msgstr "" + +#: inc/functions/options.php:596 inc/functions/options.php:638 +msgid "Reinstall" +msgstr "" + +#: inc/functions/options.php:596 +#, php-format +msgid "" +"If you do not have a WP Rocket account, please %1$spurchase a license%2$s." +msgstr "" + +#: inc/functions/options.php:604 +msgid "" +"License validation failed. This user account does not exist in our database." +msgstr "" + +#: inc/functions/options.php:604 +msgid "To resolve, please contact support." +msgstr "" + +#: inc/functions/options.php:612 +msgid "License validation failed. This user account is blacklisted." +msgstr "" + +#: inc/functions/options.php:612 +#, php-format +msgid "Please see %1$sthis guide%2$s for more info." +msgstr "" + +#: inc/functions/options.php:632 +msgid "Your license is not valid." +msgstr "" + +#: inc/functions/options.php:632 +#, php-format +msgid "Make sure you have an active %1$sWP Rocket license%2$s." +msgstr "" + +#: inc/functions/options.php:634 +msgid "You have added as many sites as your current license allows." +msgstr "" + +#: inc/functions/options.php:634 +#, php-format +msgid "" +"Upgrade your %1$saccount%2$s or %3$stransfer your license%2$s to this " +"domain." +msgstr "" + +#: inc/functions/options.php:636 +msgid "This website is not allowed." +msgstr "" + +#: inc/functions/options.php:636 +#, php-format +msgid "Please %1$scontact support%2$s." +msgstr "" + +#: inc/functions/options.php:638 +msgid "This license key is not recognized." +msgstr "" + +#: inc/functions/options.php:638 +#, php-format +msgid "If the issue persists, please %1$scontact support%2$s." +msgstr "" + +#: inc/functions/options.php:644 +#, php-format +msgid "License validation failed: %s" +msgstr "" + +#: inc/vendors/classes/class-imagify-partner.php:531 +msgid "Plugin installed successfully." +msgstr "" + +#: inc/vendors/classes/class-imagify-partner.php:532 +msgid "Sorry, you are not allowed to install plugins on this site." +msgstr "" + +#: inc/vendors/classes/class-imagify-partner.php:533 +msgid "Sorry, you are not allowed to do that." +msgstr "" + +#: inc/vendors/classes/class-imagify-partner.php:534 +msgid "Plugin install failed." +msgstr "" + +#: inc/vendors/classes/class-imagify-partner.php:535 +msgid "Go back" +msgstr "" + +#: views/deactivation-intent/form.php:20 +msgid "Return" +msgstr "" + +#: views/deactivation-intent/form.php:21 +msgid "WP Rocket feedback" +msgstr "" + +#: views/deactivation-intent/form.php:23 +msgid "Close" +msgstr "" + +#: views/deactivation-intent/form.php:27 +msgid "May we have a little info about why you are deactivating?" +msgstr "" + +#: views/deactivation-intent/form.php:31 +msgid "" +"It is a temporary deactivation. I am just debugging an " +"issue." +msgstr "" + +#: views/deactivation-intent/form.php:35 +msgid "The plugin broke my layout or some functionality." +msgstr "" + +#: views/deactivation-intent/form.php:39 +msgid "My PageSpeed or GTMetrix score did not improve." +msgstr "" + +#: views/deactivation-intent/form.php:43 +msgid "I did not notice a difference in loading time." +msgstr "" + +#: views/deactivation-intent/form.php:47 +msgid "The plugin is too complicated to configure." +msgstr "" + +#: views/deactivation-intent/form.php:51 +msgid "My host already has its own caching system." +msgstr "" + +#: views/deactivation-intent/form.php:53 +msgid "What is the name of your web host?" +msgstr "" + +#: views/deactivation-intent/form.php:58 +msgid "Other" +msgstr "" + +#: views/deactivation-intent/form.php:60 +msgid "" +"Let us know why you are deactivating WP Rocket so we can improve the plugin" +msgstr "" + +#: views/deactivation-intent/form.php:68 +msgid "The plugin broke my layout or some functionality" +msgstr "" + +#: views/deactivation-intent/form.php:69 +msgid "" +"This type of issue can usually be fixed by deactivating some options in WP " +"Rocket." +msgstr "" + +#: views/deactivation-intent/form.php:70 +msgid "" +"Click \"Apply Safe Mode\" to quickly disable LazyLoad, File Optimization, " +"Embeds and CDN options. Then check your site to see if the issue has " +"resolved." +msgstr "" + +#: views/deactivation-intent/form.php:72 +msgid "Apply safe mode" +msgstr "" + +#: views/deactivation-intent/form.php:75 +msgid "Safe mode applied." +msgstr "" + +#: views/deactivation-intent/form.php:76 +msgid "Review your site in a private/logged out browser window." +msgstr "" + +#: views/deactivation-intent/form.php:78 +msgid "" +"Is the issue fixed? Now you can reactivate options one at a time to " +"determine which one caused the problem. More info" +msgstr "" + +#: views/deactivation-intent/form.php:81 +msgid "My PageSpeed or GT Metrix score did not improve" +msgstr "" + +#: views/deactivation-intent/form.php:82 +msgid "" +"WP Rocket makes your site faster. The PageSpeed grade or GTMetrix score are " +"not indicators of speed. Neither your real visitors, nor Google will ever " +"see your website’s “grade”. Speed is the only metric that matters for SEO " +"and conversions." +msgstr "" + +#: views/deactivation-intent/form.php:83 +msgid "Yoast, the expert on all things related to SEO for WordPress states:" +msgstr "" + +#: views/deactivation-intent/form.php:84 +msgid "" +"[Google] just looks at how fast your website loads for users, so you don’t " +"have to obsess over that specific score. You have to make sure your website " +"is as fast as you can get it." +msgstr "" + +#: views/deactivation-intent/form.php:87 +msgid "" +"How to measure the load time of your site:
      https" +"://wp-rocket.me/blog/correctly-measure-websites-page-load-time/" +msgstr "" + +#: views/deactivation-intent/form.php:88 +msgid "" +"Why you should not be chasing a PageSpeed score:
      https://wp-rocket.me/blog/the-truth-about-google-" +"pagespeed-insights/" +msgstr "" + +#: views/deactivation-intent/form.php:91 +msgid "I did not notice a difference in loading time" +msgstr "" + +#: views/deactivation-intent/form.php:92 +msgid "" +"Make sure you look at your site while logged out to see the fast, cached " +"pages!" +msgstr "" + +#: views/deactivation-intent/form.php:93 +msgid "" +"The best way to see the improvement WP Rocket provides is to perform speed " +"tests. Follow this guide to correctly measure the load time of your " +"website:
      https://wp-rocket.me/blog/correctly-measure-websites-page-" +"load-time/" +msgstr "" + +#: views/deactivation-intent/form.php:96 +msgid "The plugin is too complicated to configure" +msgstr "" + +#: views/deactivation-intent/form.php:97 +msgid "We are sorry to hear you are finding it difficult to use WP Rocket." +msgstr "" + +#: views/deactivation-intent/form.php:98 +#, php-format +msgid "" +"WP Rocket is the only caching plugin that provides 80% of best practices in " +"speed optimization, by default. That means you do not have to do anything " +"besides activate WP Rocket and your site will already be faster!" +msgstr "" + +#: views/deactivation-intent/form.php:99 +msgid "" +"The additional options are not required for a fast site, they are for fine-" +"tuning." +msgstr "" + +#: views/deactivation-intent/form.php:100 +msgid "" +"To see the benefit WP Rocket is already providing, measure the speed of your" +" site using a tool like Pingdom:
      https" +"://wp-rocket.me/blog/correctly-measure-websites-page-load-time/" +msgstr "" + +#: views/deactivation-intent/form.php:105 +msgid "Send & Deactivate" +msgstr "" + +#: views/deactivation-intent/form.php:106 +msgid "Cancel" +msgstr "" + +#: views/deactivation-intent/form.php:108 +msgid "Skip & Deactivate" +msgstr "" + +#: views/settings/fields/cache-lifespan.php:26 +msgid "Clear cache after" +msgstr "" + +#: views/settings/fields/cnames.php:49 views/settings/fields/cnames.php:80 +#: views/settings/fields/cnames.php:110 +msgid "CSS & JavaScript" +msgstr "" + +#: views/settings/fields/cnames.php:50 views/settings/fields/cnames.php:81 +#: views/settings/fields/cnames.php:111 +msgid "JavaScript" +msgstr "" + +#: views/settings/fields/cnames.php:51 views/settings/fields/cnames.php:82 +#: views/settings/fields/cnames.php:112 +msgid "CSS" +msgstr "" + +#: views/settings/fields/import-form.php:29 +msgid "Import settings" +msgstr "" + +#: views/settings/fields/one-click-addon.php:39 +#: views/settings/fields/rocket-addon.php:31 +#: views/settings/fields/sliding-checkbox.php:24 views/settings/page.php:54 +msgctxt "Active state of checkbox" +msgid "On" +msgstr "" + +#: views/settings/fields/one-click-addon.php:40 +#: views/settings/fields/rocket-addon.php:32 +#: views/settings/fields/sliding-checkbox.php:25 views/settings/page.php:55 +msgctxt "Inactive state of checkbox" +msgid "Off" +msgstr "" + +#: views/settings/fields/one-click-addon.php:41 +#: views/settings/fields/rocket-addon.php:33 +msgid "Add-on status" +msgstr "" + +#: views/settings/fields/rocket-addon.php:56 +msgid "Modify options" +msgstr "" + +#: views/settings/page-sections/cloudflare.php:26 +msgid "Cloudflare Cache" +msgstr "" + +#: views/settings/page-sections/cloudflare.php:33 +#: views/settings/page-sections/sucuri.php:34 +#, php-format +msgid "Purges cached resources for your website. %s" +msgstr "" + +#: views/settings/page-sections/cloudflare.php:34 +msgid "https://support.cloudflare.com/hc/en-us/articles/200169246" +msgstr "" + +#: views/settings/page-sections/cloudflare.php:34 +#: views/settings/page-sections/sucuri.php:35 +msgid "Learn more" +msgstr "" + +#: views/settings/page-sections/cloudflare.php:40 +msgid "Clear all Cloudflare cache files" +msgstr "" + +#: views/settings/page-sections/dashboard.php:37 +msgid "Congratulations!" +msgstr "" + +#: views/settings/page-sections/dashboard.php:39 +msgid "WP Rocket is now activated and already working for you." +msgstr "" + +#: views/settings/page-sections/dashboard.php:41 +msgid "Your website should be loading faster now!" +msgstr "" + +#: views/settings/page-sections/dashboard.php:43 +#, php-format +msgid "" +"To guarantee fast websites, WP Rocket applies 80% of web performance best " +"practices." +msgstr "" + +#: views/settings/page-sections/dashboard.php:43 +msgid "" +"We also enable options that provide immediate benefits to your website." +msgstr "" + +#: views/settings/page-sections/dashboard.php:44 +msgid "Continue to the options to further optimize your site!" +msgstr "" + +#: views/settings/page-sections/dashboard.php:54 +msgid "My Account" +msgstr "" + +#: views/settings/page-sections/dashboard.php:60 +msgid "Refresh info" +msgstr "" + +#: views/settings/page-sections/dashboard.php:74 +msgid "Expiration Date" +msgstr "" + +#: views/settings/page-sections/dashboard.php:83 +msgid "View my account" +msgstr "" + +#: views/settings/page-sections/dashboard.php:103 +msgid "Quick Actions" +msgstr "" + +#: views/settings/page-sections/dashboard.php:109 +msgid "Remove all cached files" +msgstr "" + +#: views/settings/page-sections/dashboard.php:129 +msgid "Start cache preloading" +msgstr "" + +#: views/settings/page-sections/dashboard.php:147 +msgid "Purge OPCache content" +msgstr "" + +#: views/settings/page-sections/dashboard.php:153 +msgid "Purge OPCache" +msgstr "" + +#: views/settings/page-sections/dashboard.php:164 +#: views/settings/page-sections/dashboard.php:170 +msgid "Regenerate Critical CSS" +msgstr "" + +#: views/settings/page-sections/dashboard.php:186 +msgid "Frequently Asked Questions" +msgstr "" + +#: views/settings/page-sections/dashboard.php:199 +msgid "Still cannot find a solution?" +msgstr "" + +#: views/settings/page-sections/dashboard.php:200 +msgid "" +"Submit a ticket and get help from our friendly and knowledgeable Rocketeers." +msgstr "" + +#: views/settings/page-sections/dashboard.php:208 +msgid "Ask support" +msgstr "" + +#: views/settings/page-sections/database.php:24 +msgid "Backup your database before you run a cleanup!" +msgstr "" + +#: views/settings/page-sections/database.php:25 +msgid "" +"Once a database optimization has been performed, there is no way to undo it." +msgstr "" + +#: views/settings/page-sections/imagify.php:20 +#, php-format +msgid "" +"%1$sWP ROCKET%2$s created %3$sIMAGIFY%4$s %1$sfor best-in-class image " +"optimization.%2$s" +msgstr "" + +#: views/settings/page-sections/imagify.php:23 +msgid "" +"Compress image to make your website faster, all while maintaining image " +"quality." +msgstr "" + +#: views/settings/page-sections/imagify.php:24 +msgid "More on Imagify:" +msgstr "" + +#: views/settings/page-sections/imagify.php:26 +msgid "Imagify Plugin Page" +msgstr "" + +#: views/settings/page-sections/imagify.php:27 +msgid "Imagify Website" +msgstr "" + +#: views/settings/page-sections/imagify.php:28 +msgid "Review of Image Compression Plugins" +msgstr "" + +#: views/settings/page-sections/imagify.php:37 +msgid "Install Imagify" +msgstr "" + +#: views/settings/page-sections/license.php:21 +msgid "WP Rocket was not able to automatically validate your license." +msgstr "" + +#: views/settings/page-sections/license.php:26 +#, php-format +msgid "" +"Follow this tutorial, or contact support to get the engine started." +msgstr "" + +#: views/settings/page-sections/license.php:26 +msgid "" +"https://docs.wp-rocket.me/article/100-resolving-problems-with-license-" +"validation/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" + +#: views/settings/page-sections/sucuri.php:41 +msgid "Clear all Sucuri cache files" +msgstr "" + +#: views/settings/page-sections/tools.php:20 +#, php-format +msgid "Files size: %1$s. Number of entries: %2$s." +msgstr "" + +#: views/settings/page-sections/tools.php:23 +#, php-format +msgid "%1$sDownload the file%2$s." +msgstr "" + +#: views/settings/page-sections/tools.php:26 +#, php-format +msgid "%1$sDelete the file%2$s." +msgstr "" + +#: views/settings/page-sections/tools.php:37 +msgid "Export settings" +msgstr "" + +#: views/settings/page-sections/tools.php:38 +msgid "Download a backup file of your settings" +msgstr "" + +#: views/settings/page-sections/tools.php:43 +msgid "Download settings" +msgstr "" + +#: views/settings/page-sections/tools.php:56 +msgid "Rollback" +msgstr "" + +#: views/settings/page-sections/tools.php:60 +#, php-format +msgid "Has version %s caused an issue on your website?" +msgstr "" + +#: views/settings/page-sections/tools.php:62 +msgid "" +"You can rollback to the previous major version here.
      Then send us a " +"support request." +msgstr "" + +#: views/settings/page-sections/tools.php:69 +#, php-format +msgid "Reinstall version %s" +msgstr "" + +#: views/settings/page-sections/tools.php:85 +msgid "Debug mode" +msgstr "" + +#: views/settings/page-sections/tools.php:90 +msgid "Create a debug log file." +msgstr "" + +#: views/settings/page.php:16 +msgid "WP Rocket Settings" +msgstr "" + +#: views/settings/page.php:30 +#, php-format +msgid "version %s" +msgstr "" + +#: views/settings/page.php:40 +msgid "Save Changes" +msgstr "" + +#: views/settings/page.php:56 +msgid "Show Sidebar" +msgstr "" + +#: views/settings/page.php:75 +msgid "Thanks for choosing to participate in the WP Rocket beta program!" +msgstr "" + +#: views/settings/page.php:76 +msgid "" +"A beta version is usually one that has new features and improvements, but we" +" want to test it a little more before full launch." +msgstr "" + +#: views/settings/page.php:77 +msgid "" +"We’d love it if you took our beta versions for a ride, but please keep in " +"mind that it might be less stable than our other releases. Don’t worry, you " +"can switch back to a full release version at any time." +msgstr "" + +#: views/settings/page.php:78 +msgid "" +"Your mission: please send all feedback about our beta versions, including " +"bug reports, to support@wp-rocket.me" +msgstr "" + +#: views/settings/page.php:80 +msgid "If you don’t want to join the beta program, simply close this window." +msgstr "" + +#: views/settings/page.php:82 +msgid "Activate Rocket Tester" +msgstr "" + +#: views/settings/page.php:93 +msgid "" +"Below is a detailed view of all data WP Rocket will collect if " +"granted permission." +msgstr "" + +#: views/settings/page.php:96 +msgid "" +"WP Rocket will never transmit any domain names or email addresses (except " +"for license validation), IP addresses, or third-party API keys." +msgstr "" + +#: views/settings/page.php:98 +msgid "Activate Rocket analytics" +msgstr "" + +#: views/settings/partials/documentation.php:14 +msgid "It is a great starting point to fix some of the most common issues." +msgstr "" + +#: views/settings/partials/documentation.php:18 +msgid "Read the documentation" +msgstr "" + +#: views/settings/partials/sidebar.php:11 +msgid "How to correctly measure your website’s loading time" +msgstr "" + +#: views/settings/partials/sidebar.php:13 +msgid "" +"Learn how to use best practices to correctly measure your site's " +"performance." +msgstr "" + +#: views/settings/partials/sidebar.php:14 +msgid "" +"https://wp-rocket.me/blog/correctly-measure-websites-page-load-" +"time/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" + +#: views/settings/partials/sidebar.php:14 +msgid "Read our guide" +msgstr "" + +#: views/settings/partials/sidebar.php:17 +msgid "Why Google PageSpeed grade should not matter" +msgstr "" + +#: views/settings/partials/sidebar.php:18 +msgid "" +"https://wp-rocket.me/blog/the-truth-about-google-pagespeed-" +"insights/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" + +#: views/settings/partials/sidebar.php:18 +msgid "Read more" +msgstr "" + +#: views/settings/partials/sidebar.php:23 +msgid "You have not activated logged-in user cache." +msgstr "" + +#: views/settings/partials/sidebar.php:24 +msgid "" +"Use a private browser to check your website's speed and visual appearance." +msgstr "" + +#: views/settings/sections/addons-container.php:23 +#: views/settings/sections/fields-container.php:27 +msgid "Need Help?" +msgstr "" diff --git a/wp-content/plugins/wp-rocket/languages/rocket-it_IT.mo b/wp-content/plugins/wp-rocket/languages/rocket-it_IT.mo new file mode 100644 index 0000000000000000000000000000000000000000..17c37ba8d30c9c34114cd18001fd8f86b0418537 GIT binary patch literal 104000 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 DI;@X9 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-rocket/languages/rocket-it_IT.po b/wp-content/plugins/wp-rocket/languages/rocket-it_IT.po new file mode 100644 index 0000000..86d0488 --- /dev/null +++ b/wp-content/plugins/wp-rocket/languages/rocket-it_IT.po @@ -0,0 +1,4245 @@ +# Copyright (C) 2016 WP Rocket +# This file is distributed under the same license as the WP Rocket package. +# Translators: +# Alessandro Curci , 2019 +# wpmedia , 2020 +# Alice O., 2020 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: WP Rocket 3.4\n" +"Report-Msgid-Bugs-To: http://wp-rocket.me/\n" +"POT-Creation-Date: 2020-08-25 17:35-0400\n" +"PO-Revision-Date: 2019-08-26 15:14+0000\n" +"Last-Translator: Alice O., 2020\n" +"Language-Team: Italian (Italy) (https://www.transifex.com/wp-media/teams/18133/it_IT/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: it_IT\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 1.8.11\n" +"X-Poedit-Basepath: ..\n" +"X-Poedit-KeywordsList: __;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c\n" +"X-Poedit-SearchPath-0: .\n" +"X-Poedit-SearchPathExcluded-0: assets\n" +"X-Poedit-SearchPathExcluded-1: src\n" +"X-Poedit-SearchPathExcluded-2: vendor\n" +"X-Poedit-SearchPathExcluded-3: node_modules\n" +"X-Poedit-SearchPathExcluded-4: tests\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Textdomain-Support: yes\n" + +#: inc/3rd-party/hosting/flywheel.php:18 inc/3rd-party/hosting/godaddy.php:18 +#: inc/3rd-party/hosting/pressidium.php:18 +#: inc/3rd-party/hosting/wp-serveur.php:27 +#: inc/ThirdParty/Hostings/Cloudways.php:90 +#: inc/ThirdParty/Hostings/O2Switch.php:49 +#: inc/ThirdParty/Hostings/Savvii.php:50 +#: inc/ThirdParty/Hostings/WPEngine.php:47 inc/deprecated/3.6.php:698 +#: inc/deprecated/3.6.php:1005 +#, php-format +msgid "" +"Your site is hosted on %s, we have enabled Varnish auto-purge for " +"compatibility." +msgstr "" +"Il tuo sito è ospitato su %s, e per garantire la compatibilità abbiamo " +"abilitato l'opzione per l'eliminazione automatica della cache Varnish." + +#: inc/3rd-party/hosting/kinsta.php:161 +#, php-format +msgid "" +"Your installation seems to be missing core Kinsta files managing Cache " +"clearing and CDN, which will prevent your Kinsta installation and WP Rocket " +"from working correctly. Please get in touch with Kinsta support through your" +" %1$sMyKinsta%2$s account to resolve this issue." +msgstr "" +"Sembra che sulla tua installazione siano assenti i file core di Kinsta che " +"gestiscono la cancellazione della cache e la CDN: questo impedirà " +"all'installazione Kinsta e a WP Rocket di lavorare correttamente insieme. " +"Contatta il supporto Kinsta usando il tuo account %1$sMyKinsta%2$s per " +"risolvere il problema." + +#: inc/3rd-party/plugins/jetpack.php:86 +msgid "Jetpack XML Sitemaps" +msgstr "Sitemap XML Jetpack" + +#: inc/3rd-party/plugins/jetpack.php:88 +msgid "Preload the sitemap from the Jetpack plugin" +msgstr "Precarica la sitemap del plugin Jetpack" + +#: inc/3rd-party/plugins/jetpack.php:96 +#: inc/3rd-party/plugins/seo/all-in-one-seo-pack.php:89 +#: inc/3rd-party/plugins/seo/rank-math-seo.php:34 +#: inc/3rd-party/plugins/seo/seopress.php:86 +#: inc/3rd-party/plugins/seo/the-seo-framework.php:144 +#: inc/3rd-party/plugins/seo/yoast-seo.php:87 +#, php-format +msgid "" +"We automatically detected the sitemap generated by the %s plugin. You can " +"check the option to preload it." +msgstr "" +"Abbiamo identificato automaticamente la sitemap generata dal plugin %s. Puoi" +" fare clic sull'opzione per precaricarla." + +#: inc/3rd-party/plugins/seo/all-in-one-seo-pack.php:87 +msgid "All in One SEO XML sitemap" +msgstr "Sitemap XML di All in One SEO" + +#: inc/3rd-party/plugins/seo/rank-math-seo.php:32 +msgid "Rank Math XML sitemap" +msgstr "Sitemap XML di Rank Math" + +#: inc/3rd-party/plugins/seo/seopress.php:84 +msgid "SEOPress XML sitemap" +msgstr "Sitemap XML di SEOPress" + +#: inc/3rd-party/plugins/seo/the-seo-framework.php:142 +msgid "The SEO Framework XML sitemap" +msgstr "Sitemap XML di The SEO Framework" + +#: inc/3rd-party/plugins/seo/yoast-seo.php:85 +msgid "Yoast SEO XML sitemap" +msgstr "Sitemap XML di Yoast SEO" + +#: inc/Addon/Cloudflare/APIClient.php:309 +msgid "Ops Cloudflare did not provide any reply. Please try again later." +msgstr "Ops! Cloudflare non ha risposto. Riprova più tardi." + +#: inc/Addon/Cloudflare/APIClient.php:318 inc/deprecated/3.5.php:122 +#: inc/deprecated/3.5.php:179 +msgid "Incorrect Cloudflare email address or API key." +msgstr "L'indirizzo email o la chiave API di Cloudflare non sono corretti." + +#: inc/Addon/Cloudflare/APIClient.php:322 +#: inc/Addon/Cloudflare/APIClient.php:335 +#: inc/Addon/Cloudflare/Cloudflare.php:112 +#: inc/Addon/Cloudflare/Cloudflare.php:144 +#: inc/classes/subscriber/Tools/class-detect-missing-tags-subscriber.php:157 +#: inc/deprecated/3.5.php:102 inc/deprecated/3.5.php:126 +#: inc/deprecated/3.5.php:139 inc/deprecated/3.5.php:167 +#: inc/deprecated/3.5.php:183 +#, php-format +msgid "Read the %1$sdocumentation%2$s for further guidance." +msgstr "Leggi la %1$sdocumentazione%2$s per avere più informazioni." + +#: inc/Addon/Cloudflare/APIClient.php:324 +#: inc/Addon/Cloudflare/APIClient.php:337 +#: inc/Addon/Cloudflare/Cloudflare.php:101 +#: inc/Addon/Cloudflare/Cloudflare.php:114 +#: inc/Addon/Cloudflare/Cloudflare.php:146 inc/deprecated/3.5.php:91 +#: inc/deprecated/3.5.php:104 inc/deprecated/3.5.php:128 +#: inc/deprecated/3.5.php:141 inc/deprecated/3.5.php:169 +#: inc/deprecated/3.5.php:185 inc/deprecated/3.5.php:218 +msgid "" +"https://docs.wp-rocket.me/article/18-using-wp-rocket-with-" +"cloudflare/?utm_source=wp_plugin&utm_medium=wp_rocket#add-on" +msgstr "" +"https://docs.wp-rocket.me/article/18-using-wp-rocket-with-" +"cloudflare/?utm_source=wp_plugin&utm_medium=wp_rocket#add-on" + +#: inc/Addon/Cloudflare/APIClient.php:331 inc/deprecated/3.5.php:135 +msgid "Incorrect Cloudflare Zone ID." +msgstr "Il Cloudflare Zone ID non è corretto." + +#: inc/Addon/Cloudflare/Cloudflare.php:99 +#, php-format +msgid "" +"Cloudflare email and/or API key are not set. Read the %1$sdocumentation%2$s " +"for further guidance." +msgstr "" +"L'email e/o la chiave API di Cloudflare non sono impostate. Leggi la " +"%1$sdocumentazione%2$s per avere ulteriori informazioni." + +#: inc/Addon/Cloudflare/Cloudflare.php:108 inc/deprecated/3.5.php:98 +msgid "Missing Cloudflare Zone ID." +msgstr "Manca il Cloudflare Zone ID." + +#: inc/Addon/Cloudflare/Cloudflare.php:140 inc/deprecated/3.5.php:163 +msgid "It looks like your domain is not set up on Cloudflare." +msgstr "Sembra che non abbia configurato il tuo dominio su Cloudflare." + +#: inc/Addon/Cloudflare/Subscriber.php:215 inc/deprecated/3.5.php:597 +#, php-format +msgid "WP Rocket: %s" +msgstr "WP Rocket:%s" + +#: inc/Addon/Cloudflare/Subscriber.php:220 inc/deprecated/3.5.php:602 +msgid "WP Rocket: Cloudflare cache successfully purged." +msgstr "" +"WP Rocket: la cache di Cloudflare è stata eliminata " +"correttamente." + +#: inc/Addon/Cloudflare/Subscriber.php:364 +#: inc/Addon/Cloudflare/Subscriber.php:370 +#: inc/Addon/Cloudflare/Subscriber.php:390 +#: inc/Addon/Cloudflare/Subscriber.php:401 +#: inc/Addon/Cloudflare/Subscriber.php:420 +#: inc/Addon/Cloudflare/Subscriber.php:426 +#: inc/Addon/Cloudflare/Subscriber.php:445 +#: inc/Addon/Cloudflare/Subscriber.php:451 +#: inc/Addon/Cloudflare/Subscriber.php:470 +#: inc/Addon/Cloudflare/Subscriber.php:476 +#: inc/Addon/Cloudflare/Subscriber.php:558 inc/admin/options.php:166 +#: inc/classes/subscriber/Tools/class-detect-missing-tags-subscriber.php:148 +msgid "WP Rocket: " +msgstr "WP Rocket: " + +#: inc/Addon/Cloudflare/Subscriber.php:364 +#, php-format +msgid "Cloudflare development mode error: %s" +msgstr "Errore modalità sviluppo Cloudflare: %s" + +#: inc/Addon/Cloudflare/Subscriber.php:370 +#, php-format +msgid "Cloudflare development mode %s" +msgstr "Modalità sviluppo Cloudflare %s" + +#: inc/Addon/Cloudflare/Subscriber.php:390 +#, php-format +msgid "Cloudflare cache level error: %s" +msgstr "Errore nel livello cache Cloudflare: %s" + +#: inc/Addon/Cloudflare/Subscriber.php:395 +msgctxt "Cloudflare caching level" +msgid "Standard" +msgstr "Standard" + +#: inc/Addon/Cloudflare/Subscriber.php:401 +#, php-format +msgid "Cloudflare cache level set to %s" +msgstr "Livello cache Cloudflare impostato su %s" + +#: inc/Addon/Cloudflare/Subscriber.php:420 +#, php-format +msgid "Cloudflare minification error: %s" +msgstr "Errore minificazione Cloudflare: %s" + +#: inc/Addon/Cloudflare/Subscriber.php:426 +#, php-format +msgid "Cloudflare minification %s" +msgstr "Minificazione Cloudflare %s" + +#: inc/Addon/Cloudflare/Subscriber.php:445 +#, php-format +msgid "Cloudflare rocket loader error: %s" +msgstr "Errore del Rocket Loader di Cloudflare: %s" + +#: inc/Addon/Cloudflare/Subscriber.php:451 +#, php-format +msgid "Cloudflare rocket loader %s" +msgstr "Rocket Loader Cloudflare %s" + +#: inc/Addon/Cloudflare/Subscriber.php:470 +#, php-format +msgid "Cloudflare browser cache error: %s" +msgstr "Errore della cache del browser di Cloudflare: %s" + +#: inc/Addon/Cloudflare/Subscriber.php:476 +#, php-format +msgid "Cloudflare browser cache set to %s seconds" +msgstr "La cache del browser di Cloudflare è impostata su %s secondi" + +#: inc/Addon/FacebookTracking/Subscriber.php:87 +#: inc/Addon/GoogleTracking/Subscriber.php:132 +#: inc/Engine/HealthCheck/CacheDirSizeCheck.php:88 +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:92 +msgid "weekly" +msgstr "settimanale" + +#: inc/Engine/Admin/Settings/Page.php:171 +msgid "Save Changes" +msgstr "Salva le modifiche" + +#: inc/Engine/Admin/Settings/Page.php:171 +msgid "Validate License" +msgstr "Valida la licenza" + +#: inc/Engine/Admin/Settings/Page.php:236 +#: inc/Engine/Admin/Settings/Page.php:237 +msgid "Unavailable" +msgstr "Non disponibile" + +#: inc/Engine/Admin/Settings/Page.php:341 inc/deprecated/deprecated.php:1789 +#: views/settings/page-sections/dashboard.php:73 +msgid "License" +msgstr "Licenza" + +#: inc/Engine/Admin/Settings/Page.php:358 +msgid "API key" +msgstr "Chiave API" + +#: inc/Engine/Admin/Settings/Page.php:373 +msgid "Email address" +msgstr "Indirizzo email" + +#: inc/Engine/Admin/Settings/Page.php:399 +msgid "Dashboard" +msgstr "Bacheca" + +#: inc/Engine/Admin/Settings/Page.php:400 +msgid "Get help, account info" +msgstr "Info account e aiuto" + +#: inc/Engine/Admin/Settings/Page.php:409 +msgid "My Status" +msgstr "Stato" + +#: inc/Engine/Admin/Settings/Page.php:419 views/settings/page.php:72 +msgid "Rocket Tester" +msgstr "Rocket Tester" + +#: inc/Engine/Admin/Settings/Page.php:420 +msgid "I am part of the WP Rocket Beta Testing Program." +msgstr "Partecipo al programma WP Rocket Beta Testing." + +#: inc/Engine/Admin/Settings/Page.php:428 views/settings/page.php:90 +msgid "Rocket Analytics" +msgstr "Rocket Analytics" + +#: inc/Engine/Admin/Settings/Page.php:430 +#, php-format +msgid "" +"I agree to share anonymous data with the development team to help improve WP" +" Rocket. %1$sWhat info will we collect?%2$s" +msgstr "" +"Sono d’accordo a condividere dati anonimi con la squadra dello sviluppo di " +"WP Rocket per aiutare a migliorare il plugin. %1$sQuali informazioni " +"raccogliamo?%2$s" + +#: inc/Engine/Admin/Settings/Page.php:454 inc/Engine/Cache/WPCache.php:347 +msgid "Cache" +msgstr "Cache" + +#: inc/Engine/Admin/Settings/Page.php:455 +msgid "Basic cache options" +msgstr "Opzioni cache di base" + +#: inc/Engine/Admin/Settings/Page.php:462 +msgid "Mobile Cache" +msgstr "Cache dispositivi mobili" + +#: inc/Engine/Admin/Settings/Page.php:464 +msgid "Speed up your site for mobile visitors." +msgstr "Rende il tuo sito più veloce sui dispositivi mobili." + +#: inc/Engine/Admin/Settings/Page.php:469 +msgid "" +"We detected you use a plugin that requires a separate cache for mobile, and " +"automatically enabled this option for compatibility." +msgstr "" +"Abbiamo notato che stai usando un plugin che richiede una cache separata per" +" i dispositivi mobili, per cui abbiamo abilitato automaticamente " +"quest'opzione per garantirne la compatibilità." + +#: inc/Engine/Admin/Settings/Page.php:473 +msgid "User Cache" +msgstr "Cache utente" + +#: inc/Engine/Admin/Settings/Page.php:476 +#, php-format +msgid "" +"%1$sUser cache%2$s is great when you have user-specific or restricted " +"content on your website." +msgstr "" +"%1$sCache utente%2$s è l’opzione perfetta per i siti web che includono " +"contenuto dedicato ai soli utenti registrati." + +#: inc/Engine/Admin/Settings/Page.php:484 +msgid "Cache Lifespan" +msgstr "Vita utile della cache" + +#: inc/Engine/Admin/Settings/Page.php:487 +#, php-format +msgid "" +"Cache files older than the specified lifespan will be deleted.
      Enable " +"%1$spreloading%2$s for the cache to be rebuilt automatically after lifespan " +"expiration." +msgstr "" +"I file di cache più vecchi della vita utile che hai specificato verranno " +"eliminati.
      Abilita il %1$sprecaricamento%2$s in modo che la cache venga " +"ricostruita automaticamente dopo lo scadere della vita utile." + +#: inc/Engine/Admin/Settings/Page.php:501 +msgid "Enable caching for logged-in WordPress users" +msgstr "Abilita la cache per gli utenti connessi a WordPress" + +#: inc/Engine/Admin/Settings/Page.php:509 +msgid "Enable caching for mobile devices" +msgstr "Abilita la cache per i dispositivi mobili" + +#: inc/Engine/Admin/Settings/Page.php:524 +msgid "Separate cache files for mobile devices" +msgstr "Separa i file di cache per i dispositivi mobili" + +#: inc/Engine/Admin/Settings/Page.php:526 +#, php-format +msgid "" +"Most modern themes are responsive and should work without a separate cache. " +"Enable this only if you have a dedicated mobile theme or plugin. %1$sMore " +"info%2$s" +msgstr "" +"La maggior parte dei temi oggi sono responsive e dovrebbero funzionare senza" +" una cache separata. Attiva questa opzione se usi un tema mobile o un plugin" +" dedicato. %1$sPiù info%2$s" + +#: inc/Engine/Admin/Settings/Page.php:542 +msgid "" +"Specify time after which the global cache is cleared
      (0 = unlimited )" +msgstr "" +"Specifica un lasso di tempo dopo il quale la cache globale verrà " +"cancellata
      (0 = illimitato)" + +#: inc/Engine/Admin/Settings/Page.php:544 +#, php-format +msgid "" +"Reduce lifespan to 10 hours or less if you notice issues that seem to appear" +" periodically. %1$sWhy?%2$s" +msgstr "" +"Riduci la vita utile a 10 ore o meno se noti la comparsa frequente di " +"problemi. %1$sPerché?%2$s" + +#: inc/Engine/Admin/Settings/Page.php:550 +msgid "Minutes" +msgstr "Minuti" + +#: inc/Engine/Admin/Settings/Page.php:551 +msgid "Hours" +msgstr "Ore" + +#: inc/Engine/Admin/Settings/Page.php:552 +msgid "Days" +msgstr "Giorni" + +#: inc/Engine/Admin/Settings/Page.php:577 +#: views/settings/page-sections/tutorials.php:22 +msgid "File Optimization" +msgstr "Ottimizzazione file" + +#: inc/Engine/Admin/Settings/Page.php:578 +msgid "Optimize CSS & JS" +msgstr "Ottimizza i file CSS & JS" + +#: inc/Engine/Admin/Settings/Page.php:585 +msgid "CSS Files" +msgstr "File CSS" + +#: inc/Engine/Admin/Settings/Page.php:592 +#: inc/Engine/Admin/Settings/Page.php:602 +#, php-format +msgid "" +"%1$s Minification is currently activated in Autoptimize. If" +" you want to use %2$s’s minification, disable those options in Autoptimize." +msgstr "" +"%1$s La minificazione è al momento attivata da Autoptimize." +" Se vuoi usare la minificazione di %2$s, disattiva quella di Autoptimize." + +#: inc/Engine/Admin/Settings/Page.php:595 +msgid "JavaScript Files" +msgstr "File JavaScript" + +#: inc/Engine/Admin/Settings/Page.php:611 +msgid "Minify CSS files" +msgstr "Minifica i file CSS" + +#: inc/Engine/Admin/Settings/Page.php:612 +msgid "Minify CSS removes whitespace and comments to reduce the file size." +msgstr "" +"La minificazione del CSS rimuove gli spazi bianchi e i commenti, riducendo " +"la dimensione del file." + +#: inc/Engine/Admin/Settings/Page.php:625 +#: inc/Engine/Admin/Settings/Page.php:647 +#: inc/Engine/Admin/Settings/Page.php:729 +#: inc/Engine/Admin/Settings/Page.php:751 +msgid "This could break things!" +msgstr "Questo potrebbe creare dei malfunzionamenti!" + +#: inc/Engine/Admin/Settings/Page.php:626 +#: inc/Engine/Admin/Settings/Page.php:648 +#: inc/Engine/Admin/Settings/Page.php:730 +#: inc/Engine/Admin/Settings/Page.php:752 +msgid "" +"If you notice any errors on your website after having activated this " +"setting, just deactivate it again, and your site will be back to normal." +msgstr "" +"Se noti qualsiasi errore nel tuo sito web dopo aver attivato questa opzione," +" disattivala: tutto tornerà alla normalità." + +#: inc/Engine/Admin/Settings/Page.php:627 +msgid "Activate minify CSS" +msgstr "Attiva minificazione CSS" + +#: inc/Engine/Admin/Settings/Page.php:632 +msgid "Combine CSS files (Enable Minify CSS files to select)" +msgstr "" +"Combina i file CSS (devi selezionare prima l’opzione Minifica file " +"CSS)" + +#: inc/Engine/Admin/Settings/Page.php:634 +#, php-format +msgid "" +"Combine CSS merges all your files into 1, reducing HTTP requests. Not " +"recommended if your site uses HTTP/2. %1$sMore info%2$s" +msgstr "" +"La combinazione del CSS accorpa tutti i tuoi file in 1, riducendo il numero " +"di richieste HTTP. Non raccomandiamo quest’opzione se il tuo sito usa " +"HTTP/2. %1$sPiù info%2$s" + +#: inc/Engine/Admin/Settings/Page.php:649 +msgid "Activate combine CSS" +msgstr "Attiva combinazione CSS" + +#: inc/Engine/Admin/Settings/Page.php:654 inc/admin/options.php:125 +msgid "Excluded CSS Files" +msgstr "File CSS esclusi" + +#: inc/Engine/Admin/Settings/Page.php:655 +msgid "" +"Specify URLs of CSS files to be excluded from minification and concatenation" +" (one per line)." +msgstr "" +"Specifica gli URL dei file CSS da escludere dalla minificazione e " +"concatenazione (uno per linea)." + +#: inc/Engine/Admin/Settings/Page.php:656 +msgid "" +"Internal: The domain part of the URL will be stripped " +"automatically. Use (.*).css wildcards to exclude all CSS files located at a " +"specific path." +msgstr "" +"Nota interna:la parte di URL che contiene il dominio verrà " +"eliminata automaticamente. Usa i caratteri jolly (.*).css per escludere " +"tutti i file CSS collocati in uno specifico percorso." + +#: inc/Engine/Admin/Settings/Page.php:658 +#, php-format +msgid "" +"3rd Party: Use either the full URL path or only the domain " +"name, to exclude external CSS. %1$sMore info%2$s" +msgstr "" +"Terze parti:Per escludere i CSS esterni, usa il percorso " +"URL completo oppure solo il nome dominio. %1$sPiù info%2$s" + +#: inc/Engine/Admin/Settings/Page.php:671 +msgid "Optimize CSS delivery" +msgstr "Ottimizza la pubblicazione del CSS" + +#: inc/Engine/Admin/Settings/Page.php:678 +#, php-format +msgctxt "WP Critical CSS compatibility" +msgid "" +"Optimize CSS Delivery is currently handled by the %1$s plugin. If you want " +"to use WP Rocket’s Optimize CSS Delivery option, disable the %1$s plugin." +msgstr "" +"L'ottimizzazione della pubblicazione del CSS al momento è gestita dal plugin" +" %1$s. Se vuoi usare l'opzione Ottimizza la pubblicazione del CSS di WP " +"Rocket, devi disattivare il plugin %1$s." + +#: inc/Engine/Admin/Settings/Page.php:680 +#, php-format +msgid "" +"Optimize CSS delivery eliminates render-blocking CSS on your website for " +"faster perceived load time. %1$sMore info%2$s" +msgstr "" +"Ottimizzare la pubblicazione del CSS elimina il CSS che blocca il rendering " +"sul tuo sito web, velocizzando il tempo di caricamento percepito. %1$sPiù " +"info%2$s" + +#: inc/Engine/Admin/Settings/Page.php:691 +msgid "Fallback critical CSS" +msgstr "Percorso critico del CSS alternativo" + +#: inc/Engine/Admin/Settings/Page.php:696 +#, php-format +msgid "" +"Provides a fallback if auto-generated critical path CSS is incomplete. " +"%1$sMore info%2$s" +msgstr "" +"Genera un percorso alternativo quando il percorso critico del CSS auto-" +"generatosi non è completo. %1$sPiù info%2$s" + +#: inc/Engine/Admin/Settings/Page.php:705 +msgid "Remove jQuery Migrate" +msgstr "Rimuovi il jQuery Migrate" + +#: inc/Engine/Admin/Settings/Page.php:707 +#, php-format +msgid "" +"Remove jQuery Migrate eliminates a JS file and can improve load time. " +"%1$sMore info%2$s" +msgstr "" +"L'opzione Rimuovi jQuery Migrate elimina uno script JS e può migliorare il " +"tempo di caricamento. %1$sPiù info%2$s" + +#: inc/Engine/Admin/Settings/Page.php:715 +msgid "Minify JavaScript files" +msgstr "Minifica i file JavaScript" + +#: inc/Engine/Admin/Settings/Page.php:716 +msgid "" +"Minify JavaScript removes whitespace and comments to reduce the file size." +msgstr "" +"Minificare il JavaScript rimuove gli spazi bianchi e i commenti, riducendo " +"la dimensione del file." + +#: inc/Engine/Admin/Settings/Page.php:731 +msgid "Activate minify JavaScript" +msgstr "Attiva minificazione JavaScript" + +#: inc/Engine/Admin/Settings/Page.php:736 +msgid "" +"Combine JavaScript files (Enable Minify JavaScript files to select)" +msgstr "" +"Combina i file JavaScript (devi selezionare prima l’opzione Minifica " +"file JavaScript)" + +#: inc/Engine/Admin/Settings/Page.php:738 +#, php-format +msgid "" +"Combine JavaScript files combines your site’s internal, 3rd party and inline" +" JS reducing HTTP requests. Not recommended if your site uses HTTP/2. " +"%1$sMore info%2$s" +msgstr "" +"Questa opzione combina i file JavaScript interni al tuo sito, quelli di " +"terze parti e i JS inline, riducendo le richieste HTTP. Non raccomandiamo " +"attivarla se il tuo sito usa HTTP/2. %1$sPiù info%2$s" + +#: inc/Engine/Admin/Settings/Page.php:753 +msgid "Activate combine JavaScript" +msgstr "Attiva combinazione JavaScript" + +#: inc/Engine/Admin/Settings/Page.php:758 inc/admin/options.php:126 +msgid "Excluded Inline JavaScript" +msgstr "JavaScript Inline esclusi" + +#: inc/Engine/Admin/Settings/Page.php:760 +#, php-format +msgid "" +"Specify patterns of inline JavaScript to be excluded from concatenation (one" +" per line). %1$sMore info%2$s" +msgstr "" +"Specifica la forma dei JavScript inline da escludere dalla concatenazione " +"(uno per linea). %1$sPiù info%2$s" + +#: inc/Engine/Admin/Settings/Page.php:776 inc/admin/options.php:127 +msgid "Excluded JavaScript Files" +msgstr "Escludere i file JavaScript" + +#: inc/Engine/Admin/Settings/Page.php:777 +msgid "" +"Specify URLs of JavaScript files to be excluded from minification and " +"concatenation (one per line)." +msgstr "" +"Specifica gli URL dei file JavaScript da escludere da minificazione e " +"concatenazione (uno per linea)." + +#: inc/Engine/Admin/Settings/Page.php:778 +msgid "" +"Internal: The domain part of the URL will be stripped " +"automatically. Use (.*).js wildcards to exclude all JS files located at a " +"specific path." +msgstr "" +"Per gli interni:la parte di URL che contiene il dominio " +"verrà eliminata automaticamente. Usa i caratteri jolly (.*).js per escludere" +" tutti i file JS collocati in uno specifico percorso." + +#: inc/Engine/Admin/Settings/Page.php:780 +#, php-format +msgid "" +"3rd Party: Use either the full URL path or only the domain " +"name, to exclude external JS. %1$sMore info%2$s" +msgstr "" +"Esterni:Per escludere i JS esterni, usa il percorso URL " +"completo oppure solo il nome dominio. %1$sPiù info%2$s" + +#: inc/Engine/Admin/Settings/Page.php:796 +msgid "Load JavaScript deferred" +msgstr "Carica il JavaScript in modalità differita" + +#: inc/Engine/Admin/Settings/Page.php:798 +#, php-format +msgid "" +"Load JavaScript deferred eliminates render-blocking JS on your site and can " +"improve load time. %1$sMore info%2$s" +msgstr "" +"Caricare il JavaScript in modalità differita elimina il JS che blocca il " +"rendering sul tuo sito, cosa che può migliorare il tempo di caricamento. " +"%1$sPiù info%2$s" + +#: inc/Engine/Admin/Settings/Page.php:809 +msgid "Safe Mode for jQuery (recommended)" +msgstr "Modalità sicura per jQuery (raccomandata)" + +#: inc/Engine/Admin/Settings/Page.php:810 +msgid "" +"Safe mode for jQuery for deferred JS ensures support for inline jQuery " +"references from themes and plugins by loading jQuery at the top of the " +"document as a render-blocking script.
      Deactivating may result in " +"broken functionality, test thoroughly!" +msgstr "" +"La modalità sicura per i JS differiti supporta le referenze di jQuery in " +"linea per temi e plugin perché carica la jQuery in cima al documento come " +"uno script di blocco del rendering.
      La sua disattivazione potrebbe " +"rompere alcune funzionalità, testalo con cautela!" + +#: inc/Engine/Admin/Settings/Page.php:823 inc/admin/ui/meta-boxes.php:79 +msgid "Delay JavaScript execution" +msgstr "Rimanda l'esecuzione del JavaScript" + +#: inc/Engine/Admin/Settings/Page.php:825 +#, php-format +msgid "" +"Improves performance by delaying the loading of JavaScript files until user " +"interaction (e.g. scroll, click). %1$sMore info%2$s" +msgstr "" +"Migliora le prestazioni rimandando il caricamento dei file JavaScript fino " +"all'interazione con l'utente (ad es. scroll, clic). %1$sPiù info%2$s" + +#: inc/Engine/Admin/Settings/Page.php:833 +msgid "Scripts to delay" +msgstr "Script da rimandare" + +#: inc/Engine/Admin/Settings/Page.php:834 +msgid "" +"Specify keywords that can identify inline or JavaScript files to be delayed " +"(one per line)." +msgstr "" +"Specifica le parole chiave che possono identificare i file in linea o " +"JavaScript da rimandare (uno per linea)." + +#: inc/Engine/Admin/Settings/Page.php:835 +msgid "" +"A curated list of scripts that are safe to delay is provided. They may not " +"all apply to your website and it is safe to leave the list as-is unless you " +"face issues." +msgstr "" +"Ti forniamo un elenco curato di script che possono essere rimandati senza " +"problemi. Potrebbero non essere tutti applicabili al tuo sito web ed è " +"sicuro lasciare l'elenco così com'è, a meno che non riscontri problemi." + +#: inc/Engine/Admin/Settings/Page.php:870 +msgid "Media" +msgstr "Media" + +#: inc/Engine/Admin/Settings/Page.php:871 +msgid "LazyLoad, emojis, embeds, WebP" +msgstr "LazyLoad, emoji, incorporamenti, WebP" + +#: inc/Engine/Admin/Settings/Page.php:880 +msgid "Avada" +msgstr "Avada" + +#: inc/Engine/Admin/Settings/Page.php:884 +msgid "Autoptimize" +msgstr "Autoptimize" + +#: inc/Engine/Admin/Settings/Page.php:929 +msgid "LazyLoad" +msgstr "Lazyload" + +#: inc/Engine/Admin/Settings/Page.php:932 +#, php-format +msgid "" +"It can improve actual and perceived loading time as images, iframes, and " +"videos will be loaded only as they enter (or about to enter) the viewport " +"and reduces the number of HTTP requests. %1$sMore Info%2$s" +msgstr "" +"Può migliorare sia il tempo di caricamento reale che quello percepito, " +"perché immagini, iframe e video verranno caricati solo quando entrano (o " +"stanno per entrare) nell'area visibile dello schermo. Riduce inoltre il " +"numero di richieste HTTP. %1$sPiù info%2$s" + +#: inc/Engine/Admin/Settings/Page.php:939 +#, php-format +msgid "" +"LazyLoad is currently activated in %2$s. If you want to use WP Rocket’s " +"LazyLoad, disable this option in %2$s." +msgstr "" +"Il LazyLoad al momento è attivo su %2$s. Se desideri usare il LazyLoad di WP" +" Rocket, disattiva questa opzione su %2$s." + +#: inc/Engine/Admin/Settings/Page.php:942 +msgid "Emoji 👻" +msgstr "Emoji 👻" + +#: inc/Engine/Admin/Settings/Page.php:944 +msgid "" +"Use default emoji of visitor's browser instead of loading emoji from " +"WordPress.org" +msgstr "" +"Usa gli emoji di default del browser dei visitatori del sito, invece che " +"caricare quelli di WordPress.org" + +#: inc/Engine/Admin/Settings/Page.php:948 +msgid "Embeds" +msgstr "Incorporamenti" + +#: inc/Engine/Admin/Settings/Page.php:950 +msgid "" +"Prevents others from embedding content from your site, prevents you from " +"embedding content from other (non-allowed) sites, and removes JavaScript " +"requests related to WordPress embeds" +msgstr "" +"Impedisce ad altri di incorporare contenuti dal tuo sito e a te di " +"incorporare contenuti da altri siti (non consentiti); rimuove le richieste " +"JavaScript relative a WordPress embeds" + +#: inc/Engine/Admin/Settings/Page.php:954 +msgid "WebP compatibility" +msgstr "Compatibilità WebP" + +#: inc/Engine/Admin/Settings/Page.php:958 +#, php-format +msgid "" +"Enable this option if you would like WP Rocket to serve WebP images to " +"compatible browsers. Please note that WP Rocket cannot create WebP images " +"for you. To create WebP images we recommend %1$sImagify%2$s. %3$sMore " +"info%2$s" +msgstr "" +"Abilita questa questa opzione se desideri che WP Rocket serva immagini WebP " +"ai browser compatibili. Considera che WP Rocket non creerà le immagini WebP " +"al tuo posto. Per creare immagini WebP ti raccomandiamo %1$sImagify%2$s. " +"%3$sPiù info%2$s" + +#: inc/Engine/Admin/Settings/Page.php:985 +msgid "Enable for images" +msgstr "Abilita per le immagini" + +#: inc/Engine/Admin/Settings/Page.php:997 +#, php-format +msgid "" +"LazyLoad for images is currently activated in %2$s. If you want to use " +"%1$s’s LazyLoad, disable this option in %2$s." +msgstr "" +"Il LazyLoad per le immagini è al momento attivo su %2$s. Se vuoi usare il " +"LazyLoad di %1$s, disattiva quest'opzione su %2$s." + +#: inc/Engine/Admin/Settings/Page.php:1005 +msgid "Enable for iframes and videos" +msgstr "Abilita per iframe e video" + +#: inc/Engine/Admin/Settings/Page.php:1020 +msgid "Replace YouTube iframe with preview image" +msgstr "Sostituisci l'iframe YouTube con un'immagine di anteprima" + +#: inc/Engine/Admin/Settings/Page.php:1021 +msgid "" +"This can significantly improve your loading time if you have a lot of " +"YouTube videos on a page." +msgstr "" +"Questo migliora in maniera significativa il tempo di caricamento, se hai " +"molti video YouTube in una pagina." + +#: inc/Engine/Admin/Settings/Page.php:1031 +#, php-format +msgid "Replace YouTube iframe with preview image is not compatible with %2$s." +msgstr "" +"L'opzione \"Sostituisci l'iframe YouTube con un'immagine di anteprima\" non " +"è compatibile con %2$s." + +#: inc/Engine/Admin/Settings/Page.php:1035 +msgid "Disable Emoji" +msgstr "Disattiva Emoji" + +#: inc/Engine/Admin/Settings/Page.php:1036 +msgid "Disable Emoji will reduce the number of external HTTP requests." +msgstr "Disattivare gli Emoji ridurrà il numero di richieste HTTP esterne." + +#: inc/Engine/Admin/Settings/Page.php:1044 +msgid "Disable WordPress embeds" +msgstr "Disattiva gli incorporamenti WordPress" + +#: inc/Engine/Admin/Settings/Page.php:1054 +#: inc/classes/subscriber/Media/class-webp-subscriber.php:362 +msgid "Enable WebP caching" +msgstr "Abilita la cache per WebP" + +#: inc/Engine/Admin/Settings/Page.php:1074 inc/deprecated/deprecated.php:1776 +#: views/settings/page-sections/tutorials.php:30 +msgid "Preload" +msgstr "Precaricamento" + +#: inc/Engine/Admin/Settings/Page.php:1075 +msgid "Generate cache files, preload fonts" +msgstr "Genera i file di cache, precarica i font" + +#: inc/Engine/Admin/Settings/Page.php:1086 +msgid "Preload Cache" +msgstr "Precarica la cache" + +#: inc/Engine/Admin/Settings/Page.php:1089 +#, php-format +msgid "" +"When you enable preloading WP Rocket will generate the cache starting with " +"the links on your homepage followed by the sitemaps you specify. Preloading " +"is automatically triggered when you add or update content and can also be " +"manually triggered from the admin bar or from the %1$sWP Rocket " +"Dashboard%2$s." +msgstr "" +"Quando attivi il precaricamento, WP Rocket genererà la cache partendo dai " +"link della tua homepage e proseguendo con le sitemap che hai specificato. Il" +" precaricamento viene lanciato automaticamente quando aggiungi o aggiorni " +"del contenuto; può anche essere lanciato manualmente dalla barra admin o " +"dalla %1$sBacheca WP Rocket%2$s." + +#: inc/Engine/Admin/Settings/Page.php:1097 +msgid "Prefetch DNS Requests" +msgstr "Precarica le richieste DNS" + +#: inc/Engine/Admin/Settings/Page.php:1099 +msgid "" +"DNS prefetching can make external files load faster, especially on mobile " +"networks" +msgstr "" +"Il precaricamento dei DNS può far sì che i file esterni carichino più " +"rapidamente, specialmente sulle reti mobili" + +#: inc/Engine/Admin/Settings/Page.php:1107 +msgid "Preload Fonts" +msgstr "Precarica i font" + +#: inc/Engine/Admin/Settings/Page.php:1110 +#, php-format +msgid "" +"Improves performance by helping browsers discover fonts in CSS files. " +"%1$sMore info%2$s" +msgstr "" +"Migliora la performance perché aiuta i browser a identificare i font dentro " +"i file CSS. %1$sPiù info%2$s" + +#: inc/Engine/Admin/Settings/Page.php:1118 +msgid "Preload Links" +msgstr "Precaricamento dei link" + +#: inc/Engine/Admin/Settings/Page.php:1121 +#, php-format +msgid "" +"Link preloading improves the perceived load time by downloading a page when " +"a user hovers over the link. %1$sMore info%2$s" +msgstr "" +"Il precaricamento dei link migliora il tempo di caricamento percepito perché" +" scarica una pagina quando un utente passa il mouse sopra il link. %1$sPiù " +"info%2$s" + +#: inc/Engine/Admin/Settings/Page.php:1135 +msgid "Activate Preloading" +msgstr "Attiva il precaricamento" + +#: inc/Engine/Admin/Settings/Page.php:1154 +msgid "Activate sitemap-based cache preloading" +msgstr "Attiva il precaricamento della cache basato sulla sitemap" + +#: inc/Engine/Admin/Settings/Page.php:1173 +msgid "Sitemaps for preloading" +msgstr "Sitemap da precaricare" + +#: inc/Engine/Admin/Settings/Page.php:1177 +msgid "Specify XML sitemap(s) to be used for preloading" +msgstr "" +"Specifica la sitemap XML (anche più di una se necessario) da usare per il " +"precaricamento" + +#: inc/Engine/Admin/Settings/Page.php:1187 +msgid "URLs to prefetch" +msgstr "URLs da precaricare" + +#: inc/Engine/Admin/Settings/Page.php:1188 +msgid "" +"Specify external hosts to be prefetched (no http:, one per " +"line)" +msgstr "" +"Specificare gli host esterni da precaricare (senza http:, uno " +"per riga)" + +#: inc/Engine/Admin/Settings/Page.php:1197 +msgid "Fonts to preload" +msgstr "Font da precaricare" + +#: inc/Engine/Admin/Settings/Page.php:1198 +msgid "" +"Specify urls of the font files to be preloaded (one per line). Fonts must be" +" hosted on your own domain, or the domain you have specified on the CDN tab." +msgstr "" +"Specifica gli URL dei file di font da precaricare (uno per riga). I font " +"devono essere ospitati sul tuo dominio o sul dominio specificato nella " +"sezione \"CDN\"." + +#: inc/Engine/Admin/Settings/Page.php:1199 +msgid "" +"The domain part of the URL will be stripped automatically.
      Allowed font " +"extensions: otf, ttf, svg, woff, woff2." +msgstr "" +"La parte di URL contenente il dominio sarà rimossa automaticamente. " +"
      Estensioni di font consentite: otf, ttf, svg, woff, woff2." + +#: inc/Engine/Admin/Settings/Page.php:1208 +msgid "Enable link preloading" +msgstr "Abilita il precaricamento dei link" + +#: inc/Engine/Admin/Settings/Page.php:1227 +msgid "Advanced Rules" +msgstr "Comandi avanzati" + +#: inc/Engine/Admin/Settings/Page.php:1228 +msgid "Fine-tune cache rules" +msgstr "Aggiusta regole di caching" + +#: inc/Engine/Admin/Settings/Page.php:1237 +msgid "" +"Sensitive pages like custom login/logout URLs should be excluded from cache." +msgstr "" +"Le pagine sensibili come gli URL di login/logout dovrebbero essere escluse " +"dalla cache." + +#: inc/Engine/Admin/Settings/Page.php:1240 +msgctxt "plugin name" +msgid "WooCommerce" +msgstr "WooCommerce" + +#: inc/Engine/Admin/Settings/Page.php:1242 +msgctxt "plugin name" +msgid "Easy Digital Downloads" +msgstr "Easy Digital Downloads" + +#: inc/Engine/Admin/Settings/Page.php:1244 +msgctxt "plugin name" +msgid "iThemes Exchange" +msgstr "iThemes Exchange" + +#: inc/Engine/Admin/Settings/Page.php:1246 +msgctxt "plugin name" +msgid "Jigoshop" +msgstr "Jigoshop" + +#: inc/Engine/Admin/Settings/Page.php:1248 +msgctxt "plugin name" +msgid "WP-Shop" +msgstr "WP-Shop" + +#: inc/Engine/Admin/Settings/Page.php:1254 +#, php-format +msgid "" +"
      Cart, checkout and \"my account\" pages set in " +"%1$s%2$s%3$s will be detected and never cached by default." +msgstr "" +"
      Le pagine del carrello, pagamento e ”mio account” predefinite da " +"%1$s%2$s%3$s verranno identificate ed escluse " +"automaticamente dalla cache." + +#: inc/Engine/Admin/Settings/Page.php:1264 inc/admin/options.php:128 +msgid "Never Cache URL(s)" +msgstr "Non salvare in cache questi URL" + +#: inc/Engine/Admin/Settings/Page.php:1275 +msgid "Never Cache Cookies" +msgstr "Non salvare in cache i cookie" + +#: inc/Engine/Admin/Settings/Page.php:1280 inc/admin/options.php:129 +msgid "Never Cache User Agent(s)" +msgstr "Non salvare in cache questi User Agent:" + +#: inc/Engine/Admin/Settings/Page.php:1285 inc/admin/options.php:130 +msgid "Always Purge URL(s)" +msgstr "Elimina sempre la cache di questi URL:" + +#: inc/Engine/Admin/Settings/Page.php:1294 +msgid "Cache Query String(s)" +msgstr "Cache delle query strings:" + +#: inc/Engine/Admin/Settings/Page.php:1297 +#, php-format +msgid "" +"%1$sCache for query strings%2$s enables you to force caching for specific " +"GET parameters." +msgstr "" +"%1$sLa cache per le query string%2$s permette di forzare la memorizzazione " +"in cache di specifici parametri GET." + +#: inc/Engine/Admin/Settings/Page.php:1311 +msgid "" +"Specify URLs of pages or posts that should never be cached (one per line)" +msgstr "" +"Specificare gli URL delle pagine o degli articoli che non dovrebbero mai " +"essere memorizzati in cache (uno per linea)" + +#: inc/Engine/Admin/Settings/Page.php:1312 +#: inc/Engine/Admin/Settings/Page.php:1340 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*) " +"wildcards to address multiple URLs under a given path." +msgstr "" +"La porzione di URL relativa al dominio non verrà inserita.
      Puoi usare i " +"caratteri jolly (.*) per gestire tutti gli URL che condividono un percorso " +"comune." + +#: inc/Engine/Admin/Settings/Page.php:1321 +msgid "" +"Specify the IDs of cookies that, when set in the visitor's browser, should " +"prevent a page from getting cached (one per line)" +msgstr "" +"Specifica gli ID dei cookie che, una volta attivati nel browser dei tuoi " +"visitatori, dovrebbero impedire la memorizzazione nella cache (uno per " +"linea)" + +#: inc/Engine/Admin/Settings/Page.php:1329 +msgid "" +"Specify user agent strings that should never see cached pages (one per line)" +msgstr "" +"Specificare le stringhe degli user agent che non dovrebbero mai vedere la " +"versione in cache delle pagine (uno per riga)" + +#: inc/Engine/Admin/Settings/Page.php:1330 +msgid "Use (.*) wildcards to detect parts of UA strings." +msgstr "" +"Usa i caratteri jolly (.*) per identificare una parte del nome degli user " +"agent." + +#: inc/Engine/Admin/Settings/Page.php:1339 +msgid "" +"Specify URLs you always want purged from cache whenever you update any post " +"or page (one per line)" +msgstr "" +"Specificare gli URL per i quali cancellare sempre la cache ogni volta che si" +" aggiorna un articolo o una pagina (uno per riga)" + +#: inc/Engine/Admin/Settings/Page.php:1348 +msgid "Specify query strings for caching (one per line)" +msgstr "Specificare le query string da memorizzare in cache (uno per riga)" + +#: inc/Engine/Admin/Settings/Page.php:1373 inc/deprecated/deprecated.php:1775 +msgid "Database" +msgstr "Database" + +#: inc/Engine/Admin/Settings/Page.php:1374 +msgid "Optimize, reduce bloat" +msgstr "Ottimizza e riduce la saturazione" + +#: inc/Engine/Admin/Settings/Page.php:1383 +msgid "Post Cleanup" +msgstr "Pulizia articoli" + +#: inc/Engine/Admin/Settings/Page.php:1385 +msgid "" +"Post revisions and drafts will be permanently deleted. Do not use this " +"option if you need to retain revisions or drafts." +msgstr "" +"Le revisioni degli articoli e le bozze verranno cancellate permanentemente. " +"Non usare questa opzione se hai bisogno di mantenere revisioni e bozze." + +#: inc/Engine/Admin/Settings/Page.php:1393 +msgid "Comments Cleanup" +msgstr "Pulizia dei commenti" + +#: inc/Engine/Admin/Settings/Page.php:1395 +msgid "Spam and trashed comments will be permanently deleted." +msgstr "" +"I commenti spam e quelli cestinati verranno cancellati permanentemente." + +#: inc/Engine/Admin/Settings/Page.php:1399 +msgid "Transients Cleanup" +msgstr "Pulizia dei transient" + +#: inc/Engine/Admin/Settings/Page.php:1401 +msgid "" +"Transients are temporary options; they are safe to remove. They will be " +"automatically regenerated as your plugins require them." +msgstr "" +"I transient sono opzioni temporanee, puoi rimuoverli senza problema. " +"Verranno rigenerati automaticamente non appena i tuoi plugin ne avranno " +"bisogno." + +#: inc/Engine/Admin/Settings/Page.php:1405 +msgid "Database Cleanup" +msgstr "Pulizia del database" + +#: inc/Engine/Admin/Settings/Page.php:1407 +msgid "Reduces overhead of database tables" +msgstr "Riduce l’overhead delle tabelle del database" + +#: inc/Engine/Admin/Settings/Page.php:1411 +msgid "Automatic cleanup" +msgstr "Pulizia automatica" + +#: inc/Engine/Admin/Settings/Page.php:1422 +#: inc/classes/admin/Database/class-optimization.php:41 +msgid "Revisions" +msgstr "Revisioni" + +#: inc/Engine/Admin/Settings/Page.php:1424 +#, php-format +msgid "%s revision in your database." +msgid_plural "%s revisions in your database." +msgstr[0] " %s revisione nel tuo database." +msgstr[1] "%s revisioni nel tuo database." + +#: inc/Engine/Admin/Settings/Page.php:1432 +#: inc/classes/admin/Database/class-optimization.php:42 +msgid "Auto Drafts" +msgstr "Bozze automatiche" + +#: inc/Engine/Admin/Settings/Page.php:1434 +#, php-format +msgid "%s draft in your database." +msgid_plural "%s drafts in your database." +msgstr[0] "%s bozza nel tuo database." +msgstr[1] "%s bozze nel tuo database." + +#: inc/Engine/Admin/Settings/Page.php:1442 +#: inc/classes/admin/Database/class-optimization.php:43 +msgid "Trashed Posts" +msgstr "Articoli cestinati" + +#: inc/Engine/Admin/Settings/Page.php:1444 +#, php-format +msgid "%s trashed post in your database." +msgid_plural "%s trashed posts in your database." +msgstr[0] "%s articolo cestinato nel tuo database." +msgstr[1] "%s articoli cestinati nel tuo database." + +#: inc/Engine/Admin/Settings/Page.php:1452 +#: inc/classes/admin/Database/class-optimization.php:44 +msgid "Spam Comments" +msgstr "Commenti spam" + +#: inc/Engine/Admin/Settings/Page.php:1454 +#, php-format +msgid "%s spam comment in your database." +msgid_plural "%s spam comments in your database." +msgstr[0] "%s commento spam nel tuo database." +msgstr[1] "%s commenti spam nel tuo database." + +#: inc/Engine/Admin/Settings/Page.php:1462 +#: inc/classes/admin/Database/class-optimization.php:45 +msgid "Trashed Comments" +msgstr "Commenti cestinati" + +#: inc/Engine/Admin/Settings/Page.php:1464 +#, php-format +msgid "%s trashed comment in your database." +msgid_plural "%s trashed comments in your database." +msgstr[0] "%s commento cestinato nel tuo database." +msgstr[1] "%s commenti cestinati nel tuo database." + +#: inc/Engine/Admin/Settings/Page.php:1472 +#: inc/classes/admin/Database/class-optimization.php:46 +msgid "Expired transients" +msgstr "Transient scaduti" + +#: inc/Engine/Admin/Settings/Page.php:1474 +#, php-format +msgid "%s expired transient in your database." +msgid_plural "%s expired transients in your database." +msgstr[0] "%s transient scaduto nel tuo database." +msgstr[1] "%s transient scaduti nel tuo database." + +#: inc/Engine/Admin/Settings/Page.php:1482 +msgid "All transients" +msgstr "Tutti i transient" + +#: inc/Engine/Admin/Settings/Page.php:1484 +#, php-format +msgid "%s transient in your database." +msgid_plural "%s transients in your database." +msgstr[0] "%s transient nel tuo database." +msgstr[1] "%s transient nel tuo database." + +#: inc/Engine/Admin/Settings/Page.php:1492 +msgid "Optimize Tables" +msgstr "Ottimizza le tabelle" + +#: inc/Engine/Admin/Settings/Page.php:1494 +#, php-format +msgid "%s table to optimize in your database." +msgid_plural "%s tables to optimize in your database." +msgstr[0] " %s tavola da ottimizzare nel tuo database." +msgstr[1] "%s tavole da ottimizzare nel tuo database." + +#: inc/Engine/Admin/Settings/Page.php:1505 +msgid "Schedule Automatic Cleanup" +msgstr "Programma la pulizia automatica" + +#: inc/Engine/Admin/Settings/Page.php:1517 +msgid "Frequency" +msgstr "Frequenza" + +#: inc/Engine/Admin/Settings/Page.php:1525 +msgid "Daily" +msgstr "Giornaliera" + +#: inc/Engine/Admin/Settings/Page.php:1526 +msgid "Weekly" +msgstr "Settimanale" + +#: inc/Engine/Admin/Settings/Page.php:1527 +msgid "Monthly" +msgstr "Mensile" + +#: inc/Engine/Admin/Settings/Page.php:1543 +#: inc/Engine/Admin/Settings/Page.php:1554 inc/admin/ui/meta-boxes.php:76 +#: inc/deprecated/deprecated.php:1773 +msgid "CDN" +msgstr "CDN" + +#: inc/Engine/Admin/Settings/Page.php:1544 +msgid "Integrate your CDN" +msgstr "Integra la tua CDN" + +#: inc/Engine/Admin/Settings/Page.php:1556 +msgid "" +"All URLs of static files (CSS, JS, images) will be rewritten to the CNAME(s)" +" you provide." +msgstr "" +"Tutti gli URL dei file statici (CSS, JS, immagini) verranno riscritti con i " +"CNAME(s) indicati qui sotto." + +#: inc/Engine/Admin/Settings/Page.php:1558 +#, php-format +msgid "" +"Not required for services like Cloudflare and Sucuri. Please see our " +"available %1$sAdd-ons%2$s." +msgstr "" +"Non è obbligatorio per servizi come Cloudflare e Sucuri. Verifica gli %1" +"$sAdd-on%2$s disponibili." + +#: inc/Engine/Admin/Settings/Page.php:1573 inc/admin/options.php:131 +msgid "Exclude files from CDN" +msgstr "Escludi file dalla CDN" + +#: inc/Engine/Admin/Settings/Page.php:1599 +#, php-format +msgid "" +"%1$s%2$s Add-on%3$s is currently enabled. Configuration of the CDN settings " +"is not required for %2$s to work on your site." +msgid_plural "" +"%1$s%2$s Add-ons%3$s are currently enabled. Configuration of the CDN " +"settings is not required for %2$s to work on your site." +msgstr[0] "" +"L' %1$sAdd-on %2$s%3$s al momento è abilitato. La configurazione delle " +"impostazioni del CDN non è richiesta affinché %2$s funzioni sul tuo sito. " +msgstr[1] "" +"Gli %1$sAdd-on %2$s%3$s al momento sono abilitati. La configurazione delle " +"impostazioni del CDN non è richiesta affinché %2$s funzioni sul tuo sito. " + +#: inc/Engine/Admin/Settings/Page.php:1624 +msgid "Enable Content Delivery Network" +msgstr "Abilita il Content Delivery Network" + +#: inc/Engine/Admin/Settings/Page.php:1633 +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:151 +msgid "CDN CNAME(s)" +msgstr "CNAME(s) della CDN" + +#: inc/Engine/Admin/Settings/Page.php:1634 +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:152 +msgid "Specify the CNAME(s) below" +msgstr "Specificare i CNAME(s) qui sotto" + +#: inc/Engine/Admin/Settings/Page.php:1641 +msgid "" +"Specify URL(s) of files that should not get served via CDN (one per line)." +msgstr "" +"Specifica gli URL dei file che non devono essere serviti attraverso il CDN " +"(uno per linea)." + +#: inc/Engine/Admin/Settings/Page.php:1642 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*) " +"wildcards to exclude all files of a given file type located at a specific " +"path." +msgstr "" +"La porzione di URL relativa al dominio non verrà inserita.
      Puoi usare i " +"caratteri jolly (.*) per escludere tutti i file della stessa tipologia che " +"condividono un percorso comune." + +#: inc/Engine/Admin/Settings/Page.php:1664 +#: inc/Engine/Admin/Settings/Page.php:1672 +msgid "Heartbeat" +msgstr "Heartbeat" + +#: inc/Engine/Admin/Settings/Page.php:1665 +msgid "Control WordPress Heartbeat API" +msgstr "Controlla l'API Heartbeat di WordPress" + +#: inc/Engine/Admin/Settings/Page.php:1673 +msgid "" +"Reducing or disabling the Heartbeat API’s activity can help save some of " +"your server’s resources." +msgstr "" +"Ridurre o disattivare l'attività dell'API Heartbeat può aiutarti a " +"risparmiare le risorse del tuo server." + +#: inc/Engine/Admin/Settings/Page.php:1682 +msgid "Reduce or disable Heartbeat activity" +msgstr "Riduci o disattiva l'attività di Heartbeat" + +#: inc/Engine/Admin/Settings/Page.php:1683 +msgid "" +"Reducing activity will change Heartbeat frequency from one hit each minute " +"to one hit every 2 minutes." +msgstr "" +"Ridurre l'attività cambierà la frequenza di Heartbeat da un hit al minuto a " +"un hit ogni 2 minuti." + +#: inc/Engine/Admin/Settings/Page.php:1683 +msgid "" +"Disabling Heartbeat entirely may break plugins and themes using this API." +msgstr "" +"Disattivare completamente Heartbeat potrebbe compromettere la funzionalità " +"di plugin e temi che usano questa API." + +#: inc/Engine/Admin/Settings/Page.php:1697 +msgid "Do not limit" +msgstr "Non limitare" + +#: inc/Engine/Admin/Settings/Page.php:1698 +msgid "Reduce activity" +msgstr "Riduci l'attività" + +#: inc/Engine/Admin/Settings/Page.php:1699 +msgid "Disable" +msgstr "Disattiva" + +#: inc/Engine/Admin/Settings/Page.php:1707 +msgid "Control Heartbeat" +msgstr "Controlla Heartbeat" + +#: inc/Engine/Admin/Settings/Page.php:1716 +msgid "Behavior in backend" +msgstr "Comportamento nel backend" + +#: inc/Engine/Admin/Settings/Page.php:1723 +msgid "Behavior in post editor" +msgstr "Comportamento nell'editor dei post" + +#: inc/Engine/Admin/Settings/Page.php:1729 +msgid "Behavior in frontend" +msgstr "Comportamento nel frontend" + +#: inc/Engine/Admin/Settings/Page.php:1745 +#: views/settings/page-sections/tutorials.php:36 +msgid "Add-ons" +msgstr "Add-on" + +#: inc/Engine/Admin/Settings/Page.php:1746 +msgid "Add more features" +msgstr "Aggiungi più funzioni" + +#: inc/Engine/Admin/Settings/Page.php:1753 +msgid "One-click Rocket Add-ons" +msgstr "Rocket Add-on in 1-clic" + +#: inc/Engine/Admin/Settings/Page.php:1754 +msgid "" +"One-Click Add-ons are features extending available options without " +"configuration needed. Switch the option \"on\" to enable from this screen." +msgstr "" +"Gli Add-on in 1-clic sono componenti aggiuntivi che estendono opzioni già " +"disponibili senza che sia necessaria alcuna configurazione. Passa l’opzione " +"a ”on” per abilitarla da questa schermata." + +#: inc/Engine/Admin/Settings/Page.php:1764 +msgid "Rocket Add-ons" +msgstr "Rocket Add-on" + +#: inc/Engine/Admin/Settings/Page.php:1765 +msgid "Rocket Add-ons are complementary features extending available options." +msgstr "" +"I Rocket Add-on sono componenti aggiuntivi che estendono opzioni già " +"disponibili." + +#: inc/Engine/Admin/Settings/Page.php:1778 +msgid "Google Tracking" +msgstr "Google Tracking" + +#: inc/Engine/Admin/Settings/Page.php:1784 +msgid "Improve browser caching for Google Analytics" +msgstr "Migliora la cache del browser per Google Analytics" + +#: inc/Engine/Admin/Settings/Page.php:1786 +#, php-format +msgid "" +"WP Rocket will host these Google scripts locally on your server to help " +"satisfy the PageSpeed recommendation for Leverage browser " +"caching.
      %1$sLearn more%2$s" +msgstr "" +"WP Rocket salva localmente sul tuo server questi script Google e ti aiuta a " +"soddisfare la raccomandazione di PageSpeed Leverage browser " +"caching(Sfrutta il caching del browser).
      %1$sMaggiori " +"informazioni%2$s" + +#: inc/Engine/Admin/Settings/Page.php:1801 +msgid "Facebook Pixel" +msgstr "Facebook Pixel" + +#: inc/Engine/Admin/Settings/Page.php:1807 +msgid "Improve browser caching for Facebook Pixel" +msgstr "Migliora la cache del browser per Facebook Pixel" + +#: inc/Engine/Admin/Settings/Page.php:1809 +#, php-format +msgid "" +"WP Rocket will host these Facebook Pixels locally on your server to help " +"satisfy the PageSpeed recommendation for Leverage browser " +"caching.
      %1$sLearn more%2$s" +msgstr "" +"WP Rocket salverà localmente sul tuo server questi Facebook Pixel aiutandoti" +" a soddisfare la raccomandazione PageSpeed relativa a Sfrutta il caching" +" del browser.
      %1$sMaggiori informazioni%2$s" + +#: inc/Engine/Admin/Settings/Page.php:1822 +#: inc/Engine/Admin/Settings/Page.php:1923 +msgid "Cloudflare" +msgstr "Cloudflare" + +#: inc/Engine/Admin/Settings/Page.php:1828 +msgid "Integrate your Cloudflare account with this add-on." +msgstr "Integra il tuo account Cloudflare con questo componente aggiuntivo." + +#: inc/Engine/Admin/Settings/Page.php:1829 +msgid "" +"Provide your account email, global API key, and domain to use options such " +"as clearing the Cloudflare cache and enabling optimal settings with WP " +"Rocket." +msgstr "" +"Fornisci il tuo account email, la chiave API globale e il dominio per usare " +"opzioni come la cancellazione della cache Cloudflare e abilitare le " +"impostazioni ottimali con WP Rocket." + +#: inc/Engine/Admin/Settings/Page.php:1863 +msgid "Varnish" +msgstr "Varnish" + +#: inc/Engine/Admin/Settings/Page.php:1869 +msgid "If Varnish runs on your server, you must activate this add-on." +msgstr "" +"Se il tuo server usa Varnish, devi attivare questo componente aggiuntivo." + +#: inc/Engine/Admin/Settings/Page.php:1871 +#, php-format +msgid "" +"Varnish cache will be purged each time WP Rocket clears its cache to ensure " +"content is always up-to-date.
      %1$sLearn more%2$s" +msgstr "" +"La cache Varnish verrà cancellata allo stesso tempo della cache WP Rocket " +"così il contenuto del tuo sito sarà sempre aggiornato.
      %1$sMaggiori " +"informazioni%2$s" + +#: inc/Engine/Admin/Settings/Page.php:1885 +msgid "Clear the Sucuri cache when WP Rocket’s cache is cleared." +msgstr "Cancella la cache Sucuri e la cache WP Rocket allo stesso tempo." + +#: inc/Engine/Admin/Settings/Page.php:1888 +msgid "" +"Provide your API key to clear the Sucuri cache when WP Rocket’s cache is " +"cleared." +msgstr "" +"Inserisci la tua chiave API per cancellare la cache di Sucuri quando viene " +"cancellata quella di WP Rocket." + +#: inc/Engine/Admin/Settings/Page.php:1896 +#: inc/Engine/Admin/Settings/Page.php:2040 +msgid "Sucuri" +msgstr "Sucuri" + +#: inc/Engine/Admin/Settings/Page.php:1902 +msgid "Synchronize Sucuri cache with this add-on." +msgstr "Sincronizza la cache di Sucuri con questo add-on." + +#: inc/Engine/Admin/Settings/Page.php:1940 +msgid "Cloudflare credentials" +msgstr "Credenziali Clouflare" + +#: inc/Engine/Admin/Settings/Page.php:1949 +msgid "Cloudflare settings" +msgstr "Impostazioni Cloudflare" + +#: inc/Engine/Admin/Settings/Page.php:1963 +msgctxt "Cloudflare" +msgid "Global API key:" +msgstr "Chiave API Globale:" + +#: inc/Engine/Admin/Settings/Page.php:1964 +msgctxt "Cloudflare" +msgid "Find your API key" +msgstr "Trova la tua Chiave API" + +#: inc/Engine/Admin/Settings/Page.php:1976 +msgctxt "Cloudflare" +msgid "Account email" +msgstr "Account email" + +#: inc/Engine/Admin/Settings/Page.php:1985 +msgctxt "Cloudflare" +msgid "Zone ID" +msgstr "Zone ID" + +#: inc/Engine/Admin/Settings/Page.php:1995 +msgid "Development mode" +msgstr "Modalità sviluppo" + +#: inc/Engine/Admin/Settings/Page.php:1997 +#, php-format +msgid "" +"Temporarily activate development mode on your website. This setting will " +"automatically turn off after 3 hours. %1$sLearn more%2$s" +msgstr "" +"Attiva temporaneamente la modalità sviluppo sul tuo sito. Questa " +"impostazione verrà disattivata automaticamente dopo 3 ore. %1$sMaggiori " +"informazioni%2$s" + +#: inc/Engine/Admin/Settings/Page.php:2005 +msgid "Optimal settings" +msgstr "Impostazioni ottimali" + +#: inc/Engine/Admin/Settings/Page.php:2006 +msgid "" +"Automatically enhances your Cloudflare configuration for speed, performance " +"grade and compatibility." +msgstr "" +"Migliora automaticamente la configurazione del tuo Cloudflare in termini di " +"velocità, valutazione della performance e compatibilità." + +#: inc/Engine/Admin/Settings/Page.php:2014 +msgid "Relative protocol" +msgstr "Protocollo relativo" + +#: inc/Engine/Admin/Settings/Page.php:2015 +msgid "" +"Should only be used with Cloudflare's flexible SSL feature. URLs of static " +"files (CSS, JS, images) will be rewritten to use // instead of http:// or " +"https://." +msgstr "" +"Dovrebbe essere usato solo insieme all'opzione Flexible SSL di Cloudflare. " +"Gli URL dei file statici (CSS, JS, immagini) verranno riscritti per usare //" +" invece che http:// o https://." + +#: inc/Engine/Admin/Settings/Page.php:2053 +msgid "Sucuri credentials" +msgstr "Credenziali di accesso per Sucuri" + +#: inc/Engine/Admin/Settings/Page.php:2066 +msgctxt "Sucuri" +msgid "" +"Firewall API key (for plugin), must be in format {32 characters}/{32 " +"characters}:" +msgstr "" +"La chiave API del firewall (per il plugin), deve essere in formato {32" +" caratteri}/{32 caratteri}:" + +#: inc/Engine/Admin/Settings/Page.php:2067 +msgctxt "Sucuri" +msgid "Find your API key" +msgstr "Trova la tua Chiave API" + +#: inc/Engine/Admin/Settings/Render.php:461 inc/deprecated/deprecated.php:1294 +msgid "Upload file and import settings" +msgstr "Carica il file e importa le impostazioni" + +#: inc/Engine/Admin/Settings/Settings.php:400 +msgid "" +"Sucuri Add-on: The API key for the Sucuri firewall must be in format " +"{32 characters}/{32 characters}." +msgstr "" +"Add-on Sucuri: la chiave API per il firewall Sucuri deve essere in formato " +"{32 caratteri}/{32 caratteri}." + +#: inc/Engine/Admin/Settings/Settings.php:491 +#: inc/deprecated/deprecated.php:1245 +msgid "Settings saved." +msgstr "Impostazioni salvate." + +#: inc/Engine/Admin/Settings/Subscriber.php:141 +#: inc/deprecated/deprecated.php:1786 +#: views/settings/page-sections/tools.php:33 +msgid "Tools" +msgstr "Strumenti" + +#: inc/Engine/Admin/Settings/Subscriber.php:142 +msgid "Import, Export, Rollback" +msgstr "Importa, Esporta, Rollback" + +#: inc/Engine/Admin/Settings/Subscriber.php:163 +#: views/settings/page-sections/imagify.php:14 +msgid "Image Optimization" +msgstr "Ottimizzazione immagini" + +#: inc/Engine/Admin/Settings/Subscriber.php:164 +msgid "Compress your images" +msgstr "Comprimi le tue immagini" + +#: inc/Engine/Admin/Settings/Subscriber.php:181 +#: views/settings/page-sections/tutorials.php:45 +msgid "Tutorials" +msgstr "Tutorial" + +#: inc/Engine/Admin/Settings/Subscriber.php:182 +msgid "Getting started and how to videos" +msgstr "Video tutorial per iniziare con WP Rocket (in inglese)" + +#: inc/Engine/CDN/RocketCDN/APIClient.php:154 +msgid "RocketCDN is not available at the moment. Please retry later" +msgstr "RocketCDN non è disponibile in questo momento. Riprova più tardi." + +#: inc/Engine/CDN/RocketCDN/APIClient.php:171 +msgid "RocketCDN cache purge failed: Missing identifier parameter." +msgstr "" +"L'eliminazione della cache RocketCDN non è riuscita: manca il parametro di " +"identificazione." + +#: inc/Engine/CDN/RocketCDN/APIClient.php:180 +msgid "RocketCDN cache purge failed: Missing user token." +msgstr "" +"L'eliminazione della cache RocketCDN non è riuscita: manca il token utente." + +#: inc/Engine/CDN/RocketCDN/APIClient.php:199 +msgid "" +"RocketCDN cache purge failed: The API returned an unexpected response code." +msgstr "" +"L'eliminazione della cache RocketCDN non è riuscita: l'API ha restituito un " +"codice di risposta inaspettato." + +#: inc/Engine/CDN/RocketCDN/APIClient.php:208 +msgid "RocketCDN cache purge failed: The API returned an empty response." +msgstr "" +"L'eliminazione della cache RocketCDN non è riuscita: l'API ha restituito una" +" risposta vuota." + +#: inc/Engine/CDN/RocketCDN/APIClient.php:217 +msgid "RocketCDN cache purge failed: The API returned an unexpected response." +msgstr "" +"L'eliminazione della cache RocketCDN non è riuscita: l'API ha restituito una" +" risposta inaspettata." + +#: inc/Engine/CDN/RocketCDN/APIClient.php:226 +#, php-format +msgid "RocketCDN cache purge failed: %s." +msgstr "L'eliminazione della cache RocketCDN non è riuscita: %s." + +#: inc/Engine/CDN/RocketCDN/APIClient.php:234 +msgid "RocketCDN cache purge successful." +msgstr "La cache di RocketCDN è stata eliminata correttamente." + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:82 +msgid "Next Billing Date" +msgstr "Prossima data di fatturazione" + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:91 +msgid "No Subscription" +msgstr "Nessun abbonamento" + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:127 +msgid "Your RocketCDN subscription is currently active." +msgstr "Il tuo abbonamento a RocketCDN è ora attivo." + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:133 +#, php-format +msgid "To use RocketCDN, replace your CNAME with %1$s%2$s%3$s." +msgstr "Per usare RocketCDN sostituisci il CNAME con %1$s%2$s%3$s." + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:144 +#, php-format +msgid "%1$sMore Info%2$s" +msgstr "%1$sPiù info%2$s" + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:190 +msgid "Manage Subscription" +msgstr "Gestisci il tuo abbonamento" + +#: inc/Engine/CDN/RocketCDN/RESTSubscriber.php:137 +msgid "RocketCDN enabled" +msgstr "RocketCDN è attivo" + +#: inc/Engine/CDN/RocketCDN/RESTSubscriber.php:160 +msgid "RocketCDN disabled" +msgstr "RocketCDN non è attivo" + +#: inc/Engine/Cache/AdminSubscriber.php:118 inc/admin/admin.php:71 +#: inc/admin/admin.php:92 inc/deprecated/3.5.php:908 +msgid "Clear this cache" +msgstr "Cancella questa cache" + +#: inc/Engine/Cache/WPCache.php:330 +msgid "WP_CACHE value" +msgstr "Valore di WP_CACHE" + +#: inc/Engine/Cache/WPCache.php:351 +msgid "" +"The WP_CACHE constant needs to be set to true for WP Rocket cache to work " +"properly" +msgstr "" +"La costante WP_CACHE deve essere impostata su true affinché la cache WP " +"Rocket funzioni correttamente" + +#: inc/Engine/Cache/WPCache.php:360 +msgid "WP_CACHE is set to true" +msgstr "WP_CACHE è impostata su true" + +#: inc/Engine/Cache/WPCache.php:368 +msgid "WP_CACHE is not set" +msgstr "WP_CACHE non è impostata" + +#: inc/Engine/Cache/WPCache.php:376 +msgid "WP_CACHE is set to false" +msgstr "WP_CACHE è impostata su false" + +#: inc/Engine/CriticalPath/APIClient.php:64 +#, php-format +msgid "Critical CSS for %1$s not generated. Error: %2$s" +msgstr "Non è stato possibile generare il CSS critico per %1$s. Errore: %2$s" + +#: inc/Engine/CriticalPath/APIClient.php:170 +#: inc/Engine/CriticalPath/DataManager.php:66 +#, php-format +msgid "" +"Critical CSS for %1$s on mobile not generated. Error: The API returned an " +"empty response." +msgstr "" +"Non è stato possibile generare il CSS critico mobile per %1$s. Errore: l'API" +" ha restituito una risposta vuota." + +#: inc/Engine/CriticalPath/APIClient.php:173 +#: inc/Engine/CriticalPath/DataManager.php:69 +#, php-format +msgid "" +"Critical CSS for %1$s not generated. Error: The API returned an empty " +"response." +msgstr "" +"Non è stato possibile generare il CSS critico per %1$s. Errore: l'API ha " +"restituito una risposta vuota." + +#: inc/Engine/CriticalPath/APIClient.php:185 +#, php-format +msgid "Critical CSS for %1$s on mobile not generated." +msgstr "Non è stato possibile generare il CSS critico per mobile per%1$s." + +#: inc/Engine/CriticalPath/APIClient.php:187 +#: inc/Engine/CriticalPath/ProcessorService.php:193 +#, php-format +msgid "Critical CSS for %1$s not generated." +msgstr "Non è stato possibile generare il CSS critico per %1$s." + +#: inc/Engine/CriticalPath/APIClient.php:195 +#, php-format +msgid "" +"Critical CSS for %1$s on mobile not generated. Error: The API returned an " +"invalid response code." +msgstr "" +"Non è stato possibile generare il CSS critico mobile per %1$s. Errore: l'API" +" ha restituito un codice di risposta non valido." + +#: inc/Engine/CriticalPath/APIClient.php:197 +#, php-format +msgid "" +"Critical CSS for %1$s not generated. Error: The API returned an invalid " +"response code." +msgstr "" +"Non è stato possibile generare il CSS critico per %1$s. Errore: l'API ha " +"restituito un codice di risposta non valido." + +#: inc/Engine/CriticalPath/APIClient.php:205 +#: inc/Engine/CriticalPath/ProcessorService.php:200 +#, php-format +msgid "Error: %1$s" +msgstr "Errore: %1$s" + +#: inc/Engine/CriticalPath/Admin/Admin.php:260 +msgid "Regenerate Critical Path CSS" +msgstr "Rigenera il percorso critico del CSS" + +#: inc/Engine/CriticalPath/Admin/Post.php:132 +#: views/cpcss/metabox/generate.php:47 +msgid "Generate Specific CPCSS" +msgstr "Genera il percorso critico CSS specifico." + +#: inc/Engine/CriticalPath/Admin/Post.php:133 +#: views/cpcss/metabox/generate.php:45 +msgid "Regenerate specific CPCSS" +msgstr "Rigenera il CPCSS specifico" + +#: inc/Engine/CriticalPath/Admin/Post.php:199 +msgid "%l to use this feature." +msgstr "%l per usare questa funzionalità." + +#: inc/Engine/CriticalPath/Admin/Post.php:202 +#, php-format +msgid "Publish the %s" +msgstr "Pubblica il %s" + +#: inc/Engine/CriticalPath/Admin/Post.php:203 +msgid "Enable Optimize CSS delivery in WP Rocket settings" +msgstr "Abilita la pubblicazione del CSS nelle impostazioni WP Rocket" + +#: inc/Engine/CriticalPath/Admin/Post.php:204 +msgid "Enable Optimize CSS delivery in the options above" +msgstr "Abilita la pubblicazione del CSS nelle opzioni di cui sopra" + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:147 +msgid "Critical CSS generation is currently running." +msgstr "La generazione del CSS critico è in esecuzione." + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:152 +#: inc/Engine/Preload/PreloadSubscriber.php:242 +#, php-format +msgid "Go to the %1$sWP Rocket settings%2$s page to track progress." +msgstr "" +"Vai alla pagina %1$sImpostazioni WP Rocket%2$s per monitorare il progresso." + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:366 +#, php-format +msgid "" +"Critical CSS generation is currently running: %1$d of %2$d page types " +"completed. (Refresh this page to view progress)" +msgstr "" +"La generazione del CSS critico è in corso: %1$d di %2$d tipi di pagina sono " +"stati completati. (Aggiorna la pagina per vedere il progresso)" + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:438 +#, php-format +msgid "Critical CSS generation finished for %1$d of %2$d page types." +msgstr "" +"La generazione del CSS critico è terminata per %1$d di %2$d tipi di pagina." + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:445 +msgid "Critical CSS generation encountered one or more errors." +msgstr "" +"Si sono verificati uno o più errori nella generazione del CSS critico." + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:445 +msgid "Learn more." +msgstr "Maggiori informazioni." + +#: inc/Engine/CriticalPath/DataManager.php:102 +msgid "Critical CSS file for mobile does not exist" +msgstr "Il file del CSS critico mobile non esiste" + +#: inc/Engine/CriticalPath/DataManager.php:104 +msgid "Critical CSS file does not exist" +msgstr "Il file del CSS critico non esiste" + +#: inc/Engine/CriticalPath/DataManager.php:116 +msgid "Critical CSS file for mobile cannot be deleted" +msgstr "Non è possibile eliminare il file del CSS critico mobile" + +#: inc/Engine/CriticalPath/DataManager.php:118 +msgid "Critical CSS file cannot be deleted" +msgstr "Non è possibile eliminare il file del CSS critico" + +#: inc/Engine/CriticalPath/ProcessorService.php:186 +#, php-format +msgid "Mobile Critical CSS for %1$s not generated." +msgstr "Non è stato possibile generare il CSS critico mobile per %1$s. " + +#: inc/Engine/CriticalPath/ProcessorService.php:227 +#, php-format +msgid "Critical CSS for %s in progress." +msgstr "Stiamo generando il CSS critico per %s." + +#: inc/Engine/CriticalPath/ProcessorService.php:261 +#, php-format +msgid "Mobile Critical CSS for %s generated." +msgstr "Il CSS critico mobile per %s è stato generato." + +#: inc/Engine/CriticalPath/ProcessorService.php:272 +#, php-format +msgid "Critical CSS for %s generated." +msgstr "Il CSS critico per %s è stato generato." + +#: inc/Engine/CriticalPath/ProcessorService.php:294 +msgid "Critical CSS file deleted successfully." +msgstr "Il file del CSS critico è stato eliminato correttamente." + +#: inc/Engine/CriticalPath/ProcessorService.php:316 +#, php-format +msgid "Mobile Critical CSS for %1$s timeout. Please retry a little later." +msgstr "" +"Il CSS critico mobile per %1$s è entrato in timeout. Riprova più tardi." + +#: inc/Engine/CriticalPath/ProcessorService.php:329 +#, php-format +msgid "Critical CSS for %1$s timeout. Please retry a little later." +msgstr "Il CSS critico per %1$s è entrato in timeout. Riprova più tardi." + +#: inc/Engine/CriticalPath/RESTWP.php:141 +msgid "Mobile CPCSS generation not enabled." +msgstr "La generazione del CPCSS mobile non è abilitata." + +#: inc/Engine/CriticalPath/RESTWPPost.php:36 +#: inc/Engine/CriticalPath/RESTWPPost.php:69 +msgid "Requested post does not exist." +msgstr "L'articolo richiesto non esiste." + +#: inc/Engine/CriticalPath/RESTWPPost.php:46 +msgid "Cannot generate CPCSS for unpublished post." +msgstr "" +"Non è possibile generare il percorso critico del CSS per gli articoli non " +"pubblicati." + +#: inc/Engine/HealthCheck/HealthCheck.php:82 inc/deprecated/3.5.php:868 +msgid "" +"The following scheduled event failed to run. This may indicate the CRON " +"system is not running properly, which can prevent some WP Rocket features " +"from working as intended:" +msgid_plural "" +"The following scheduled events failed to run. This may indicate the CRON " +"system is not running properly, which can prevent some WP Rocket features " +"from working as intended:" +msgstr[0] "" +"Il seguenti evento programmato non è stato eseguito. Questo potrebbe " +"indicare che il sistema CRON non stia funzionando correttamente, il che può " +"impedire ad alcune funzionalità di WP Rocket di operare come previsto:" +msgstr[1] "" +"I seguenti eventi programmati non sono stati eseguiti. Questo potrebbe " +"indicare che il sistema CRON non stia funzionando correttamente, il che può " +"impedire ad alcune funzionalità di WP Rocket di operare come previsto:" + +#: inc/Engine/HealthCheck/HealthCheck.php:88 inc/deprecated/3.5.php:877 +msgid "Please contact your host to check if CRON is working." +msgstr "Contatta il tuo host per verificare se il CRON sta funzionando." + +#: inc/Engine/HealthCheck/HealthCheck.php:142 +msgid "Scheduled Cache Purge" +msgstr "Eliminazione della cache programmata" + +#: inc/Engine/HealthCheck/HealthCheck.php:143 +msgid "Scheduled Database Optimization" +msgstr "Ottimizzazione del database programmata" + +#: inc/Engine/HealthCheck/HealthCheck.php:144 +msgid "Database Optimization Process" +msgstr "Processo di ottimizzazione del database" + +#: inc/Engine/HealthCheck/HealthCheck.php:145 +msgctxt "noun" +msgid "Preload" +msgstr "Precaricamento" + +#: inc/Engine/HealthCheck/HealthCheck.php:146 +msgid "Critical Path CSS Generation Process" +msgstr "Processo di generazione del CSS critico" + +#: inc/Engine/Optimization/DelayJS/Admin/Settings.php:104 +msgid "Restore Defaults" +msgstr "Ripristina i valori predefiniti" + +#: inc/Engine/Preload/Homepage.php:153 +#, php-format +msgid "" +"Preload encountered an error. Could not gather links on %1$s because of the " +"following error: %2$s. %3$sLearn more%4$s." +msgstr "" +"C'è stato un errore durante il precaricamento. Non è stato possibile " +"radunare i link su %1$s a causa del seguente errore: %2$s. %3$sMaggiori " +"informazioni%4$s." + +#: inc/Engine/Preload/Homepage.php:166 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: %2$s. Security measures could be preventing access. " +"%3$sLearn more%4$s." +msgstr "" +"C'è stato un errore durante il precaricamento. %1$s non è accessibile a " +"causa del seguente codice di risposta: %2$s. È possibile che le misure di " +"sicurezza stiano impedendo l'accesso. %3$sMaggiori informazioni%4$s." + +#: inc/Engine/Preload/Homepage.php:172 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: 404. Please make sure your homepage is accessible in your " +"browser. %2$sLearn more%3$s." +msgstr "" +"C'è stato un errore durante il precaricamento. %1$s non è accessibile a " +"causa del seguente codice di risposta: 404. Assicurati che la tua homepage " +"sia accessibile dal browser. %2$sMaggiori informazioni%3$s." + +#: inc/Engine/Preload/Homepage.php:178 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: 500. Please check with your web host about server access. " +"%2$sLearn more%3$s." +msgstr "" +"C'è stato un errore durante il precaricamento. %1$s non è accessibile a " +"causa del seguente codice di risposta: 500. Verifica con il tuo host gli " +"accessi al server. %2$sMaggiori informazioni%3$s." + +#: inc/Engine/Preload/Homepage.php:184 +#, php-format +msgid "" +"Preload encountered an error. Could not gather links on %1$s because it " +"returned the following response code: %2$s. %3$sLearn more%4$s." +msgstr "" +"C'è stato un errore durante il precaricamento. Non è possibile radunare i " +"link su %1$s a causa del seguente codice di risposta: %2$s. %3$sMaggiori " +"informazioni%4$s." + +#: inc/Engine/Preload/PreloadSubscriber.php:237 +msgid "Preload: WP Rocket has started preloading your website." +msgstr "Precaricamento: WP Rocket ha iniziato a precaricare il tuo sito." + +#: inc/Engine/Preload/PreloadSubscriber.php:283 +#, php-format +msgid "" +"Preload: %1$s uncached page has now been preloaded. (refresh to see " +"progress)" +msgid_plural "" +"Preload: %1$s uncached pages have now been preloaded. (refresh to see " +"progress)" +msgstr[0] "" +"Precaricamento: %1$s pagina che non era in cache ora è stata precaricata. " +"(Aggiorna per vedere l'avanzamento)" +msgstr[1] "" +"Precaricamento: %1$s pagine che non erano in cache ora sono state " +"precaricate. (Aggiorna per vedere l'avanzamento)" + +#: inc/Engine/Preload/PreloadSubscriber.php:292 +msgid "The following error happened during gathering of the URLs to preload:" +msgid_plural "" +"The following errors happened during gathering of the URLs to preload:" +msgstr[0] "" +"Si è verificato il seguente errore durante la raccolta degli URL da " +"precaricare:" +msgstr[1] "" +"Si sono verificati i seguenti errori durante la raccolta degli URL da " +"precaricare:" + +#: inc/Engine/Preload/PreloadSubscriber.php:344 +#, php-format +msgid "Preload complete: %d pages have been cached." +msgstr "Precaricamento completo: %d pagine sono state salvate in cache." + +#: inc/Engine/Preload/Sitemap.php:150 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not gather links on %1$s because" +" of the following error: %2$s. %3$sLearn more%4$s." +msgstr "" +"C'è stato un errore durante il precaricamento della sitemap. Non è stato " +"possibile radunare i link su %1$s a causa del seguente errore: %2$s. " +"%3$sMaggiori informazioni%4$s." + +#: inc/Engine/Preload/Sitemap.php:165 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: %2$s. Security measures could be preventing access." +" %3$sLearn more%4$s." +msgstr "" +"C'è stato un errore durante il precaricamento della sitemap. %1$s non è " +"accessibile a causa del seguente codice di risposta: %2$s. È possibile che " +"le misure di sicurezza stiano impedendo l'accesso. %3$sMaggiori " +"informazioni%4$s." + +#: inc/Engine/Preload/Sitemap.php:170 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: 404. Please make sure you entered the correct " +"sitemap URL and it is accessible in your browser. %2$sLearn more%3$s." +msgstr "" +"C'è stato un errore durante il precaricamento della sitemap. %1$s non è " +"accessibile a causa del seguente codice di risposta: 404. Verifica di aver " +"inserito l'URL corretta per la sitemap e che sia accessibile dal browser. " +"%2$sMaggiori informazioni%3$s." + +#: inc/Engine/Preload/Sitemap.php:175 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: 500. Please check with your web host about server " +"access. %2$sLearn more%3$s." +msgstr "" +"C'è stato un errore durante il precaricamento della sitemap. %1$s non è " +"accessibile a causa del seguente codice di risposta: 500. Verifica con il " +"tuo host che l'accesso al server sia disponibile. %2$sMaggiori " +"informazioni.%3$s" + +#: inc/Engine/Preload/Sitemap.php:180 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not gather links on %1$s because" +" it returned the following response code: %2$s. %3$sLearn more%4$s." +msgstr "" +"C'è stato un errore durante il precaricamento della sitemap. Non è stato " +"possibile radunare i link su %1$s a causa del seguente codice di risposta: " +"%2$s. %3$sMaggiori informazioni%4$s." + +#: inc/Engine/Preload/Sitemap.php:196 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not collect links from %1$s " +"because the file is empty. %2$sLearn more%3$s." +msgstr "" +"C'è stato un errore durante il precaricamento della sitemap. Non è stato " +"possibile radunare i link da %1$s perché il file è vuoto. %2$sMaggiori " +"informazioni%3$s." + +#: inc/Engine/Preload/Sitemap.php:217 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not collect links from %1$s " +"because of an error during the XML sitemap parsing. %2$sLearn more%3$s." +msgstr "" +"C'è stato un errore durante il precaricamento della sitemap. Non è stato " +"possibile collezionare i link da %1$s a causa di un errore durante l'analisi" +" della sitemap XML. %2$sMaggiori informazioni%3$s." + +#: inc/Engine/Preload/SitemapPreloadSubscriber.php:120 +#, php-format +msgid "" +"%1$sSimpleXML PHP extension%2$s is not enabled on your server. Please " +"contact your host to enable it before running sitemap-based cache " +"preloading." +msgstr "" +"%1$sL'estensione PHP SimpleXML%2$s non è abilitata sul tuo server. Contatta " +"il tuo host per abilitarla prima di attivare il precaricamento della cache " +"basato sulla sitemap." + +#: inc/ThirdParty/Hostings/Cloudways.php:82 +#, php-format +msgid "" +"Varnish auto-purge will be automatically enabled once Varnish is enabled on " +"your %s server." +msgstr "" +"L'opzione di eliminazione automatica della cache Varnish verrà " +"automaticamente abilitata non appena Varnish sarà attivo sul tuo server %s." + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:78 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"Please deactivate the following %s option which conflicts with WP Rocket " +"features:" +msgid_plural "" +"Please deactivate the following %s options which conflict with WP Rocket " +"features:" +msgstr[0] "" +"Disattiva la seguente %s opzione che entra in conflitto con WP Rocket:" +msgstr[1] "" +"Disattiva le seguenti %s opzioni che entrano in conflitto con WP Rocket:" + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:151 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sdisable emoji%3$s conflicts with WP Rockets %2$sdisable emoji%3$s" +msgstr "" +"L'opzione %2$sDisattiva emoji%3$s di %1$s entra in conflitto con l'opzione " +"%2$sDisattiva emoji%3$s di WP Rocket." + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:187 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sGZIP compression%3$s conflicts with WP Rocket %2$sGZIP " +"compression%3$s" +msgstr "" +"La %2$scompressione GZIP%3$s di %1$s entra in conflitto con la " +"%2$sCompression GZIP%3$s di WP Rocket." + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:223 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sbrowser caching%3$s conflicts with WP Rocket %2$sbrowser " +"caching%3$s" +msgstr "" +"La %2$scache del browser%3$s di %1$s entra in conflitto con la %2$scache del" +" browser%3$s di WP Rocket." + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:255 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$spage caching%3$s conflicts with WP Rocket %2$spage caching%3$s" +msgstr "" +"La %2$scache di pagina%3$s di %1$s entra in conflitto con la %2$scache di " +"pagina%3$s di WP Rocket." + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:289 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sasset optimization%3$s conflicts with WP Rocket %2$sfile " +"optimization%3$s" +msgstr "" +"L'%2$sottimizzazione degli asset%3$s di %1$s entra in conflitto con la " +"sezione %2$sOttimizzazione File%3$s di WP Rocket." + +#: inc/ThirdParty/Plugins/Smush.php:110 inc/ThirdParty/Plugins/Smush.php:128 +msgid "Smush" +msgstr "Smush" + +#: inc/admin/admin.php:18 inc/common/admin-bar.php:367 +#: inc/deprecated/deprecated.php:1787 +msgid "Support" +msgstr "Supporto" + +#: inc/admin/admin.php:20 +msgid "Docs" +msgstr "Docs" + +#: inc/admin/admin.php:22 inc/common/admin-bar.php:355 +msgid "FAQ" +msgstr "FAQ" + +#: inc/admin/admin.php:24 inc/common/admin-bar.php:64 +msgid "Settings" +msgstr "Impostazioni" + +#: inc/admin/admin.php:225 inc/admin/admin.php:240 +#: inc/classes/class-wp-rocket-requirements-check.php:203 +#: inc/classes/class-wp-rocket-requirements-check.php:214 +#, php-format +msgid "%s Update Rollback" +msgstr "Tornare all'aggiornamento %s" + +#: inc/admin/admin.php:266 +#, php-format +msgid "%1$sReturn to WP Rocket%2$s or %3$sgo to Plugins page%2$s" +msgstr "%1$sTorna a WP Rocket%2$s o %3$svai alla pagina dei Plugin%2$s" + +#: inc/admin/admin.php:503 +msgid "Settings import failed: you do not have the permissions to do this." +msgstr "" +"Importazione delle impostazioni non riuscito: non hai i permessi per " +"compiere questa azione." + +#: inc/admin/admin.php:507 +msgid "Settings import failed: no file uploaded." +msgstr "Importazione delle impostazioni non riuscito: nessun file caricato." + +#: inc/admin/admin.php:511 +msgid "Settings import failed: incorrect filename." +msgstr "Importazione delle impostazioni: nome del file errato." + +#: inc/admin/admin.php:522 +msgid "Settings import failed: incorrect filetype." +msgstr "Importazione delle impostazioni: tipologia di file non corretta." + +#: inc/admin/admin.php:532 +msgid "Settings import failed: " +msgstr "L'importazione delle impostazioni non è andata a buon fine:" + +#: inc/admin/admin.php:548 +msgid "Settings import failed: unexpected file content." +msgstr "" +"L'importazione delle impostazioni non è andata a buon fine: contenuto del " +"file inatteso." + +#: inc/admin/admin.php:569 +msgid "Settings imported and saved." +msgstr "Impostazioni importate e salvate." + +#: inc/admin/options.php:149 +#, php-format +msgid "%1$s: %2$s." +msgstr "%1$s: %2$s." + +#: inc/admin/options.php:159 +msgid "The following pattern is invalid and has been removed:" +msgid_plural "The following patterns are invalid and have been removed:" +msgstr[0] "Il seguente pattern non è valido ed è stato rimosso:" +msgstr[1] "I seguenti pattern non sono validi e sono stati rimossi:" + +#: inc/admin/ui/meta-boxes.php:14 inc/admin/ui/notices.php:768 +#: inc/common/admin-bar.php:85 inc/common/admin-bar.php:137 +#: views/settings/page-sections/dashboard.php:124 +msgid "Clear cache" +msgstr "Cancella la cache" + +#: inc/admin/ui/meta-boxes.php:36 +msgid "WP Rocket Options" +msgstr "Opzioni WP Rocket" + +#: inc/admin/ui/meta-boxes.php:65 +msgid "Never cache this page" +msgstr "Non mettere in cache questa pagina" + +#: inc/admin/ui/meta-boxes.php:69 +msgid "Activate these options on this post:" +msgstr "Attiva le seguenti opzioni su questo articolo:" + +#: inc/admin/ui/meta-boxes.php:72 +msgid "LazyLoad for images" +msgstr "LazyLoad per le immagini" + +#: inc/admin/ui/meta-boxes.php:73 +msgid "LazyLoad for iframes/videos" +msgstr "LazyLoad per iframe e video" + +#: inc/admin/ui/meta-boxes.php:74 +msgid "Minify/combine CSS" +msgstr "Minifica/combina CSS" + +#: inc/admin/ui/meta-boxes.php:75 +msgid "Minify/combine JS" +msgstr "Minifica/combina JS" + +#: inc/admin/ui/meta-boxes.php:77 +msgid "Optimize CSS Delivery" +msgstr "Ottimizza la pubblicazione del CSS" + +#: inc/admin/ui/meta-boxes.php:78 +msgid "Defer JS" +msgstr "JS differito" + +#: inc/admin/ui/meta-boxes.php:85 +#, php-format +msgid "Activate first the %s option." +msgstr "Attiva prima l'opzione %s." + +#: inc/admin/ui/meta-boxes.php:101 +#, php-format +msgid "" +"%1$sNote:%2$s None of these options will be applied if this post has been " +"excluded from cache in the global cache settings." +msgstr "" +"%1$sNota:%2$s Nessuna di queste opzioni verrà applicata se questo post è " +"stato precedentemente escluso dalla cache nelle opzioni generali." + +#: inc/admin/ui/notices.php:25 inc/admin/ui/notices.php:38 +#, php-format +msgid "" +"%1$s has not been deactivated due to missing writing permissions.
      \n" +"Make %2$s writeable and retry deactivation, or force deactivation now:" +msgstr "" +"%1$s non è stato disattivato perché mancano i permessi di scrittura necessari.
      \n" +"Rendi %2$s riscrivibile e riprova a disattivare, o forza la disattivazione ora:" + +#: inc/admin/ui/notices.php:91 +#, php-format +msgid "" +"%s: One or more plugins have been enabled or disabled, " +"clear the cache if they affect the front end of your site." +msgstr "" +"%s: Uno o più plugin sono stati abilitati o disabilitati: " +"cancella la cache se vedi qualche problema di visualizzazione sul tuo sito." + +#: inc/admin/ui/notices.php:184 +msgid "" +"WP Rocket Cloudflare Add-on provides similar functionalities. They can not " +"be active at the same time." +msgstr "" +"L'add-on di Cloudflare offre delle funzionalità simili che non possono " +"essere attivate allo stesso tempo." + +#: inc/admin/ui/notices.php:208 +#, php-format +msgid "" +"%s: The following plugins are not compatible with this " +"plugin and may cause unexpected results:" +msgstr "" +"%s: I seguenti plugin non sono compatibili con questo " +"plugin e possono causare risultati indesiderati:" + +#: inc/admin/ui/notices.php:214 +msgid "Deactivate" +msgstr "Disattiva" + +#: inc/admin/ui/notices.php:256 +msgid "" +"WP Rocket Footer JS is not an official add-on. It prevents some options in " +"WP Rocket from working correctly. Please deactivate it if you have problems." +msgstr "" +"Il plugin WP Rocket Footer JS non è un add-on ufficiale di WP Rocket, e può " +"impedire ad alcune opzioni di WP Rocket di funzionare correttamente: " +"disattivalo in caso di problemi." + +#: inc/admin/ui/notices.php:296 +#, php-format +msgid "" +"Endurance Cache is currently enabled, which will conflict with WP Rocket " +"Cache. Please set the Endurance Cache cache level to Off (Level 0) on the " +"%1$sSettings > General%2$s page to prevent any issues." +msgstr "" +"Endurance Cache è attivo, e questo crea un conflitto con la cache di WP " +"Rocket. Per evitare problemi, imposta il livello di cache di Endurance Cache" +" su Off (livello 0) nella pagina %1$sImpostazioni > Generali%2$s." + +#: inc/admin/ui/notices.php:317 +#, php-format +msgid "" +"%1$s: A custom permalink structure is required for the plugin to work " +"properly. %2$sGo to permalinks settings%3$s" +msgstr "" +"%1$s: È necessario impostare una struttura dei permalink personalizzata per " +"far funzionare correttamente il plugin. %2$sVai alle impostazioni dei " +"permalink%3$s" + +#: inc/admin/ui/notices.php:364 +#, php-format +msgid "" +"%s could not modify the .htaccess file due to missing writing permissions." +msgstr "" +"%s non ha potuto modificare il file .htaccess perché mancano i permessi di " +"scrittura." + +#: inc/admin/ui/notices.php:370 inc/admin/ui/notices.php:845 +#, php-format +msgid "Troubleshoot: %1$sHow to make system files writeable%2$s" +msgstr "" +"Risoluzione del problema: %1$sCome rendere riscrivibili i file di " +"sistema?%2$s" + +#: inc/admin/ui/notices.php:372 inc/admin/ui/notices.php:847 +msgid "" +"https://docs.wp-rocket.me/article/626-how-to-make-system-files-htaccess-wp-" +"config-writeable/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://docs.wp-rocket.me/article/626-how-to-make-system-files-htaccess-wp-" +"config-writeable/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: inc/admin/ui/notices.php:378 +msgid "" +"Don’t worry, WP Rocket’s page caching and settings will still function " +"correctly." +msgstr "" +"Non ti preoccupare, il caching di pagina di WP Rocket e le altre " +"impostazioni funzioneranno correttamente." + +#: inc/admin/ui/notices.php:378 +msgid "" +"For optimal performance, adding the following lines into your .htaccess is " +"recommended (not required):" +msgstr "" +"Per una prestazione ottimale, ti raccomandiamo di aggiungere le seguenti " +"linee nel file .htaccess (ma non è obbligatorio):" + +#: inc/admin/ui/notices.php:525 +#, php-format +msgid "" +"%1$s is good to go! %2$sTest your load time%4$s, or visit your " +"%3$ssettings%4$s." +msgstr "" +"%1$s è pronto a partire! %2$sFai un test della velocità di caricamento%4$s, " +"o verifica le tue %3$simpostazioni%4$s." + +#: inc/admin/ui/notices.php:598 +msgid "" +"Would you allow WP Rocket to collect non-sensitive diagnostic data from this" +" website?" +msgstr "" +"Vuoi permettere a WP Rocket di raccogliere da questo sito web dei dati di " +"diagnostica non sensibili?" + +#: inc/admin/ui/notices.php:599 +msgid "This would help us to improve WP Rocket for you in the future." +msgstr "Questo in futuro ci permetterà di migliorare WP Rocket per te." + +#: inc/admin/ui/notices.php:605 +msgid "What info will we collect?" +msgstr "Quali dati raccogliamo?" + +#: inc/admin/ui/notices.php:610 +msgid "" +"Below is a detailed view of all data WP Rocket will collect if granted " +"permission. WP Rocket will never transmit any domain names or email " +"addresses (except for license validation), IP addresses, or third-party API " +"keys." +msgstr "" +"Qui sotto trovi una lista dettagliata dei dati che WP Rocket raccoglierà, se" +" vorrai dargli il permesso di farlo. WP Rocket non trasmetterà nessun nome " +"di dominio o indirizzo email (eccetto che per la validazione della licenza)," +" indirizzi IP o le chiavi API di terze parti." + +#: inc/admin/ui/notices.php:619 +msgid "Yes, allow" +msgstr "Si, ve lo permetto" + +#: inc/admin/ui/notices.php:622 +msgid "No, thanks" +msgstr "No, grazie" + +#: inc/admin/ui/notices.php:661 +msgid "Thank you!" +msgstr "Grazie!" + +#: inc/admin/ui/notices.php:666 +msgid "WP Rocket now collects these metrics from your website:" +msgstr "WP Rocket ora collezionerà queste metriche dal tuo sito web:" + +#: inc/admin/ui/notices.php:704 +#, php-format +msgid "%s: Cache cleared." +msgstr "%s: Cache cancellata." + +#: inc/admin/ui/notices.php:711 +#, php-format +msgid "%s: Post cache cleared." +msgstr "%s: Cache dell'articolo cancellata." + +#: inc/admin/ui/notices.php:718 +#, php-format +msgid "%s: Term cache cleared." +msgstr "%s: Cache del termine cancellata." + +#: inc/admin/ui/notices.php:725 +#, php-format +msgid "%s: User cache cleared." +msgstr "%s: Cache utente cancellata." + +#: inc/admin/ui/notices.php:771 +msgid "Stop Preload" +msgstr "Interrompi il precaricamento" + +#: inc/admin/ui/notices.php:789 +msgid "Force deactivation " +msgstr "Forza la disattivazione " + +#: inc/admin/ui/notices.php:802 +msgid "The following code should have been written to this file:" +msgstr "Sarebbe stato necessario scrivere il codice seguente su questo file:" + +#: inc/admin/ui/notices.php:812 views/settings/page-sections/dashboard.php:46 +msgid "Dismiss this notice." +msgstr "Chiudi questa notifica." + +#: inc/admin/ui/notices.php:833 +#, php-format +msgid "%s cannot configure itself due to missing writing permissions." +msgstr "%s non può configurarsi perché mancano dei permessi di scrittura." + +#: inc/admin/ui/notices.php:839 +#, php-format +msgid "Affected file/folder: %s" +msgstr "File/cartella interessata: %s" + +#: inc/classes/admin/Database/class-optimization.php:47 +msgid "Transients" +msgstr "Transient" + +#: inc/classes/admin/Database/class-optimization.php:48 +msgid "Tables" +msgstr "Tabelle" + +#: inc/classes/admin/class-logs.php:124 +msgid "The debug file could not be deleted." +msgstr "Non è stato possibile eliminare il file di debug." + +#: inc/classes/class-wp-rocket-requirements-check.php:147 +#, php-format +msgid "To function properly, %1$s %2$s requires at least:" +msgstr "Per funzionare correttamente, %1$s %2$s richiede almeno:" + +#: inc/classes/class-wp-rocket-requirements-check.php:151 +#, php-format +msgid "" +"PHP %1$s. To use this WP Rocket version, please ask your web host how to " +"upgrade your server to PHP %1$s or higher." +msgstr "" +"PHP %1$s. Per usare questa versione di WP Rocket, chiedi al tuo host come " +"aggiornare il tuo server a PHP %1$s o superiore." + +#: inc/classes/class-wp-rocket-requirements-check.php:156 +#, php-format +msgid "" +"WordPress %1$s. To use this WP Rocket version, please upgrade WordPress to " +"version %1$s or higher." +msgstr "" +"WordPress %1$s. Per usare questa versione di WP Rocket, aggiorna WordPress " +"alla versione %1$s o superiore." + +#: inc/classes/class-wp-rocket-requirements-check.php:159 +msgid "" +"If you are not able to upgrade, you can rollback to the previous version by " +"using the button below." +msgstr "" +"Se non ti è possibile fare l’aggiornamento, puoi ritornare alla versione " +"precedente usando il pulsante qui sotto." + +#: inc/classes/class-wp-rocket-requirements-check.php:161 +#: inc/deprecated/deprecated.php:1947 +#, php-format +msgid "Re-install version %s" +msgstr "Reinstalla la versione %s" + +#: inc/classes/dependencies/wp-media/background-processing/wp-background-process.php:439 +#, php-format +msgid "Every %d Minutes" +msgstr "Ogni %d minuti" + +#: inc/classes/logger/class-logger.php:254 +#: inc/classes/logger/class-logger.php:286 +msgid "The log file does not exist." +msgstr "Il file di registro (log) non esiste." + +#: inc/classes/logger/class-logger.php:260 +#: inc/classes/logger/class-logger.php:292 +msgid "The log file could not be read." +msgstr "Non è stato possibile leggere il file di registro (log)." + +#: inc/classes/logger/class-logger.php:279 +msgid "The logs are not saved into a file." +msgstr "I registri (log) non sono stati salvati in un file." + +#: inc/classes/subscriber/Cache/class-expired-cache-purge-subscriber.php:128 +msgid "WP Rocket Expired Cache Interval" +msgstr "Intervallo della cache WP Rocket scaduto" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:269 +#, php-format +msgid "" +"You are using %1$s to serve WebP images so you do not need to enable this " +"option. If you prefer to have WP Rocket serve WebP for you instead, please " +"disable them from serving in %1$s. %2$sMore info%3$s" +msgid_plural "" +"You are using %1$s to serve WebP images so you do not need to enable this " +"option. If you prefer to have WP Rocket serve WebP for you instead, please " +"disable them from serving in %1$s. %2$sMore info%3$s" +msgstr[0] "" +"Stai già usando %1$s per servire le immagini WebP, per cui non hai bisogno " +"di abilitare questa opzione. Se preferisci che sia WP Rocket a servire i " +"file WebP al tuo posto, disabilita l'opzione di %1$s. %2$sMaggiori " +"informazioni%3$s" +msgstr[1] "" +"Stai già usando %1$s per servire le immagini WebP, per cui non hai bisogno " +"di abilitare questa opzione. Se preferisci che sia WP Rocket a servire i " +"file WebP al tuo posto, disabilita l'opzione di %1$s. %2$sPiù info%3$s" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:280 +msgid "WebP cache is disabled by filter." +msgstr "La cache WebP è stata disattivata tramite filtro." + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:290 +#: inc/classes/subscriber/Media/class-webp-subscriber.php:316 +#, php-format +msgid "" +"You are using %1$s to convert images to WebP. If you want WP Rocket to serve" +" them for you, activate this option. %2$sMore info%3$s" +msgid_plural "" +"You are using %1$s to convert images to WebP. If you want WP Rocket to serve" +" them for you, activate this option. %2$sMore info%3$s" +msgstr[0] "" +"Stai usando %1$sper convertire le immagini in formato WebP. Se vuoi che WP " +"Rocket si occupi di servire questi file, attiva questa opzione. %2$sPiù " +"info%3$s" +msgstr[1] "" +"Stai usando %1$s per convertire le immagini in formato WebP. Se vuoi che WP " +"Rocket si occupi di servire questi file, attiva questa opzione. %2$sPiù " +"info%3$s" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:302 +#: inc/classes/subscriber/Media/class-webp-subscriber.php:328 +#, php-format +msgid "" +"You are using %1$s to convert images to WebP. WP Rocket will create separate" +" cache files to serve your WebP images. %2$sMore info%3$s" +msgid_plural "" +"You are using %1$s to convert images to WebP. WP Rocket will create separate" +" cache files to serve your WebP images. %2$sMore info%3$s" +msgstr[0] "" +"Stai usando %1$s per convertire le immagini in formato WebP. WP Rocket " +"creerà un file di cache separato per servire le tue immagini WebP. %2$sPiù " +"info%3$s" +msgstr[1] "" +"Stai usando %1$s per convertire le immagini in formato WebP. WP Rocket " +"creerà un file di cache separato per servire le tue immagini WebP. %2$sPiù " +"info%3$s" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:349 +#, php-format +msgid "" +"You don’t seem to be using a method to create and serve WebP that we are " +"auto-compatible with. If you are not using WebP do not enable this option. " +"%1$sMore info%2$s" +msgstr "" +"Sembra che tu non stia usando un metodo compatibile con WP Rocket per creare" +" e servire i file WeP. Se non stai usando il formato WebP non abilitare " +"questa opzione. %1$sPiù info%2$s" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:354 +msgid "We have not detected any compatible WebP plugin!" +msgstr "Non abbiamo identificato nessun plugin per WebP compatibile!" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:357 +#, php-format +msgid "" +"If you activate this option WP Rocket will create separate cache files to " +"serve WebP images. Any WebP images you have on your site will be served from" +" these files to compatible browsers. If you don’t already have WebP images " +"on your site consider using %1$sImagify%3$s or another supported plugin. " +"%2$sMore info%3$s" +msgstr "" +"Se attivi questa opzione, WP Rocket creerà dei file di cache separati per " +"servire le immagini WebP. Qualsiasi immagine WebP presente sul tuo sito " +"verrà servita da questi file ai browser compatibili. Se ancora non hai " +"immagini WebP sul tuo sito, prendi in considerazione %1$sImagify%3$s o un " +"altro plugin supportato. %2$sPiù info%3$s" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:369 +msgid "WP Rocket will create separate cache files to serve your WebP images." +msgstr "" +"WP Rocket creerà dei file di cache separati per servire le tue immagini " +"WebP." + +#: inc/classes/subscriber/Tools/class-detect-missing-tags-subscriber.php:151 +#, php-format +msgid "" +"Failed to detect the following requirement in your theme: closing %1$s." +msgid_plural "" +"Failed to detect the following requirements in your theme: closing %1$s." +msgstr[0] "" +"Non siamo riusciuti a identificare il seguente requisito nel tuo tema: %1$s " +"di chiusura." +msgstr[1] "" +"Non siamo riusciuti a identificare i seguenti requisiti nel tuo tema: %1$s " +"di chiusura." + +#: inc/classes/subscriber/Tools/class-detect-missing-tags-subscriber.php:159 +msgid "" +"https://docs.wp-rocket.me/article/99-pages-not-cached-or-minify-cssjs-not-" +"working/?utm_source=wp_plugin&utm_medium=wp_rocket#theme" +msgstr "" +"https://docs.wp-rocket.me/article/99-pages-not-cached-or-minify-cssjs-not-" +"working/?utm_source=wp_plugin&utm_medium=wp_rocket#theme" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:98 +msgid "monthly" +msgstr "mensile" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:211 +msgid "Database optimization process is running" +msgstr "Il processo di ottimizzazione del database è in corso" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:242 +msgid "" +"Database optimization process is complete. Everything was already optimized!" +msgstr "" +"Il processo di ottimizzazione del database è completo. Era già tutto " +"ottimizzato!" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:245 +msgid "" +"Database optimization process is complete. List of optimized items below:" +msgstr "" +"Il processo di ottimizzazione del database è completo. Ecco la lista degli " +"elementi ottimizzati:" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:253 +#, php-format +msgid "%1$d %2$s optimized." +msgstr "%1$d %2$s ottimizzati." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:116 +#, php-format +msgid "Sucuri cache purge error: %s" +msgstr "Errore nell'eliminazione della cache Sucuri: %s" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:121 +msgid "" +"The Sucuri cache is being cleared. Note that it may take up to two minutes " +"for it to be fully flushed." +msgstr "" +"Stiamo cancellando la cache Sucuri. Tieni in considerazione che questo " +"processo di pulizia potrebbe durare fino a 2 minuti." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:244 +msgid "Sucuri firewall API key was not found." +msgstr "La chiave API del firewall Sucuri non è stata trovata." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:256 +msgid "Sucuri firewall API key is invalid." +msgstr "La chiave API del firewall Sucuri non è valida." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:311 +msgid "Error when contacting Sucuri firewall API." +msgstr "" +"C'è stato un errore quando abbiamo provato a contattare l'API del firewall " +"di Sucuri." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:324 +#, php-format +msgid "Error when contacting Sucuri firewall API. Error message was: %s" +msgstr "" +"C'è stato un errore quando abbiamo provato a contattare l'API del firewall " +"di Sucuri. Il messaggio di errore era: %s" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:338 +msgid "Could not get a response from the Sucuri firewall API." +msgstr "" +"Non è stato possibile avere una risposta dall'API del firewall di Sucuri." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:352 +msgid "Got an invalid response from the Sucuri firewall API." +msgstr "" +"Abbiamo ricevuto una risposta non valida dall'API del firewall di Sucuri." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:365 +msgid "The Sucuri firewall API returned an unknown error." +msgstr "L'API del firewall di Sucuri ha restituito un errore sconosciuto." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:368 +#, php-format +msgid "The Sucuri firewall API returned the following error: %s" +msgid_plural "The Sucuri firewall API returned the following errors: %s" +msgstr[0] "L'API del firewall di Sucuri ha restituito il seguente errore: %s" +msgstr[1] "L'API del firewall di Sucuri ha restituito i seguenti errori: %s" + +#: inc/classes/traits/trait-updater-api-tools.php:53 +#: inc/deprecated/3.3.php:761 inc/deprecated/3.3.php:770 +#, php-format +msgid "" +"An unexpected error occurred. Something may be wrong with WP-Rocket.me or " +"this server’s configuration. If you continue to have problems, contact support." +msgstr "" +"Si è verificato un errore imprevisto. Potrebbe esserci qualcosa che non va " +"su wp-rocket.me o nella configurazione di questo server. Se il problema " +"persiste, contatta il servizio di supporto." + +#: inc/common/admin-bar.php:125 inc/common/admin-bar.php:293 +#: inc/functions/i18n.php:41 inc/functions/i18n.php:51 +msgid "All languages" +msgstr "Tutte le lingue" + +#: inc/common/admin-bar.php:152 +msgid "Clear this post" +msgstr "Svuota la cache di questo articolo" + +#: inc/common/admin-bar.php:166 +msgid "Purge this URL" +msgstr "Elimina la cache per questo URL" + +#: inc/common/admin-bar.php:192 +msgid "Purge OPcache" +msgstr "Cancella OPcache" + +#: inc/common/admin-bar.php:210 +msgid "Clear Cloudflare cache" +msgstr "Cancella la cache Cloudflare" + +#: inc/common/admin-bar.php:228 +msgid "Purge Sucuri cache" +msgstr "Elimina la cache di Sucuri" + +#: inc/common/admin-bar.php:251 inc/common/admin-bar.php:305 +#: views/settings/page-sections/dashboard.php:144 +msgid "Preload cache" +msgstr "Precarica la cache" + +#: inc/common/admin-bar.php:330 views/settings/fields/rocket-cdn.php:55 +msgid "Purge RocketCDN cache" +msgstr "Elimina la cache di RocketCDN" + +#: inc/common/admin-bar.php:343 views/settings/partials/documentation.php:14 +msgid "Documentation" +msgstr "Documentazione" + +#: inc/common/purge.php:557 +msgid "OPcache purge failed." +msgstr "La pulizia di OPcache è fallita." + +#: inc/common/purge.php:562 +msgid "OPcache successfully purged" +msgstr "OPcache è stata ripulita con successo" + +#: inc/deprecated/3.2.php:52 views/settings/page-sections/imagify.php:36 +msgid "Activate Imagify" +msgstr "Attiva Imagify" + +#: inc/deprecated/3.2.php:52 +msgid "Install Imagify for Free" +msgstr "Installa Imagify gratuitamente" + +#: inc/deprecated/3.2.php:67 +msgid "" +"Speed up your website and boost your SEO by reducing image file sizes " +"without losing quality with Imagify." +msgstr "" +"Velocizza il tuo sito web e dai un'accelerata al tuo SEO riducendo la " +"dimensione dei file immagine senza perdere qualità grazie a Imagify." + +#: inc/deprecated/3.2.php:72 +msgid "More details" +msgstr "Maggiori informazioni" + +#: inc/deprecated/3.2.php:228 +#, php-format +msgid "Sitemap preload: %d pages have been cached." +msgstr "Precaricamento sitemap: è stata creata la cache per %d pagine." + +#: inc/deprecated/3.2.php:261 +#, php-format +msgid "" +"Sitemap preload: %d uncached pages have now been preloaded. (refresh to see " +"progress)" +msgstr "" +"Precaricamento sitemap: sono state precaricate %d pagine che non erano in " +"cache. (Aggiorna per verificare il progresso)" + +#: inc/deprecated/3.4.php:18 +msgid "Choose a domain from the list" +msgstr "Scegliere un dominio dalla lista" + +#: inc/deprecated/3.4.php:31 +msgid "No domain available in your Cloudflare account" +msgstr "Non ci sono domini disponibili nel tuo account CloudFlare" + +#: inc/deprecated/3.5.php:81 inc/deprecated/3.5.php:205 +msgid "" +"Curl is disabled on your server. Please ask your host to enable it. This is " +"required for the Cloudflare Add-on to work correctly." +msgstr "" +"Curl è disabilitato sul tuo server e dovresti chiedere al tuo host di " +"abilitarlo: è necessario affinché l'Add-on di Cloudflare funzioni " +"correttamente." + +#: inc/deprecated/3.5.php:89 +#, php-format +msgid "" +"Cloudflare email, API key and Zone ID are not set. Read the " +"%1$sdocumentation%2$s for further guidance." +msgstr "" +"L'email Cloudflare, la chiave API o il Zone ID non sono configurati. Leggi " +"la %1$sdocumentazione%2$s per maggiori dettagli." + +#: inc/deprecated/3.5.php:216 +#, php-format +msgid "" +"Cloudflare email and API key are not set. Read the %1$sdocumentation%2$s for" +" further guidance." +msgstr "" +"L'email Cloudflare e la chiave API non sono configurati. Leggi la " +"%1$sdocumentazione%2$s per maggiori dettagli." + +#: inc/deprecated/3.5.php:281 +msgid "Connection to Cloudflare failed" +msgstr "Connessione a Cloudflare fallita" + +#: inc/deprecated/DeprecatedClassTrait.php:54 +#, php-format +msgid "" +"The called class %1$s is deprecated since version %2$s! Use" +" %3$s instead." +msgstr "" +"La classe chiamata %1$s è obsoleta a partire dalla versione" +" %2$s! Usa invece la %3$s." + +#: inc/deprecated/DeprecatedClassTrait.php:65 +#, php-format +msgid "" +"The called class %1$s is deprecated since version %2$s!" +msgstr "" +"La classe chiamata %1$s è obsoleta a partire dalla versione" +" %2$s!" + +#: inc/deprecated/deprecated.php:240 +msgid "JS files with Deferred Loading JavaScript" +msgstr "File JS con caricamento JavaScript differito" + +#: inc/deprecated/deprecated.php:293 +msgid "Add URL" +msgstr "Aggiungi URL" + +#: inc/deprecated/deprecated.php:1277 views/settings/fields/import-form.php:22 +msgid "" +"Before you can upload your import file, you will need to fix the following " +"error:" +msgstr "" +"Prima di poter caricare il tuo file di importazione, è necessario correggere" +" il seguente errore:" + +#: inc/deprecated/deprecated.php:1288 views/settings/fields/import-form.php:35 +#, php-format +msgid "Choose a file from your computer (maximum size: %s)" +msgstr "Scegliere un file dal computer (dimensione massima: %s)" + +#: inc/deprecated/deprecated.php:1385 +msgid "Your Cloudflare credentials are valid." +msgstr "Le tue credenziali Clouflare sono valide." + +#: inc/deprecated/deprecated.php:1389 +msgid "Your Cloudflare credentials are invalid!" +msgstr "Le tue credenziali CloudFlare non sono valide!" + +#: inc/deprecated/deprecated.php:1453 +msgid "Save and optimize" +msgstr "Salva e ottimizza" + +#: inc/deprecated/deprecated.php:1453 +msgid "Optimize" +msgstr "Ottimizza" + +#: inc/deprecated/deprecated.php:1464 inc/deprecated/deprecated.php:1666 +msgctxt "screen-reader-text" +msgid "Note:" +msgstr "Nota:" + +#: inc/deprecated/deprecated.php:1470 +msgctxt "screen-reader-text" +msgid "Performance tip:" +msgstr "Suggerimento sulla performance:" + +#: inc/deprecated/deprecated.php:1476 +msgctxt "screen-reader-text" +msgid "Third-party feature detected:" +msgstr "Individuata funzione di un plugin di terzi:" + +#: inc/deprecated/deprecated.php:1488 inc/deprecated/deprecated.php:1672 +msgctxt "screen-reader-text" +msgid "Warning:" +msgstr "Attenzione:" + +#: inc/deprecated/deprecated.php:1501 +msgctxt "button text" +msgid "Download settings" +msgstr "Scarica impostazioni" + +#: inc/deprecated/deprecated.php:1531 +msgid "Replace site's hostname with:" +msgstr "Sostituisci il nome host del sito con:" + +#: inc/deprecated/deprecated.php:1550 inc/deprecated/deprecated.php:1587 +#: inc/deprecated/deprecated.php:1615 views/settings/fields/cnames.php:32 +#: views/settings/fields/cnames.php:64 views/settings/fields/cnames.php:94 +msgid "reserved for" +msgstr "riservato per" + +#: inc/deprecated/deprecated.php:1552 inc/deprecated/deprecated.php:1589 +#: inc/deprecated/deprecated.php:1617 views/settings/fields/cnames.php:35 +#: views/settings/fields/cnames.php:67 views/settings/fields/cnames.php:97 +msgid "All files" +msgstr "Tutti i file" + +#: inc/deprecated/deprecated.php:1564 inc/deprecated/deprecated.php:1594 +#: inc/deprecated/deprecated.php:1622 views/settings/fields/cnames.php:47 +#: views/settings/fields/cnames.php:79 views/settings/fields/cnames.php:109 +msgid "Images" +msgstr "Immagini" + +#: inc/deprecated/deprecated.php:1635 views/settings/fields/cnames.php:120 +msgid "Add CNAME" +msgstr "Aggiungi CNAME" + +#: inc/deprecated/deprecated.php:1706 views/settings/partials/sidebar.php:16 +msgid "Watch the video" +msgstr "Guarda il video" + +#: inc/deprecated/deprecated.php:1771 +msgid "Basic" +msgstr "Base" + +#: inc/deprecated/deprecated.php:1772 +msgid "Static Files" +msgstr "File statici" + +#: inc/deprecated/deprecated.php:1774 +msgid "Advanced" +msgstr "Avanzate" + +#: inc/deprecated/deprecated.php:1944 +#, php-format +msgid "" +"%1$s %2$s requires at least PHP %3$s to function properly. To use this " +"version, please ask your web host how to upgrade your server to PHP %3$s or " +"higher. If you are not able to upgrade, you can rollback to the previous " +"version by using the button below." +msgstr "" +"%1$s%2$s richiede almeno PHP %3$s per funzionare correttamente. Per usare " +"questa versione, chiedi al tuo hosting di aggiornare il tuo server a PHP " +"%3$s o superiore. Se non ti è possibile fare questo aggiornamento, puoi " +"tornare alla versione precedente usando il bottone qui sotto." + +#: inc/functions/admin.php:23 +msgid "" +"There seems to be an issue validating your license. Please see the error " +"message below." +msgid_plural "" +"There seems to be an issue validating your license. You can see the error " +"messages below." +msgstr[0] "" +"Sembra ci sia un problema con la validazione della tua licenza. Puoi vedere " +"il messaggio di errore qui di seguito:" +msgstr[1] "" +"Sembra ci sia un problema con la validazione della tua licenza. Puoi vedere " +"i messaggi di errore qui di seguito:" + +#: inc/functions/admin.php:363 +msgid "Server type:" +msgstr "Tipo di server:" + +#: inc/functions/admin.php:372 +msgid "PHP version number:" +msgstr "Numero di versione PHP:" + +#: inc/functions/admin.php:381 +msgid "WordPress version number:" +msgstr "Numero di versione WordPress:" + +#: inc/functions/admin.php:390 +msgid "WordPress multisite:" +msgstr "Multisito WordPress:" + +#: inc/functions/admin.php:399 +msgid "Current theme:" +msgstr "Tema corrente:" + +#: inc/functions/admin.php:408 +msgid "Current site language:" +msgstr "Lingua corrente del sito:" + +#: inc/functions/admin.php:417 +msgid "Active plugins:" +msgstr "Plugin attivi:" + +#: inc/functions/admin.php:420 +msgid "Plugin names of all active plugins" +msgstr "Nome plugin di tutti i plugin attivi" + +#: inc/functions/admin.php:426 +msgid "Anonymized WP Rocket settings:" +msgstr "Impostazioni WP Rocket anonime:" + +#: inc/functions/admin.php:429 +msgid "Which WP Rocket settings are active" +msgstr "Quali impostazioni WP Rocket sono attive" + +#: inc/functions/options.php:527 inc/functions/options.php:566 +msgid "" +"License validation failed. Our server could not resolve the request from " +"your website." +msgstr "" +"La validazione della licenza non è riuscita. Il nostro server non ha potuto " +"risolvere la richiesta proveniente dal tuo sito web." + +#: inc/functions/options.php:527 inc/functions/options.php:566 +#, php-format +msgid "" +"Try clicking %1$sSave Changes%2$s below. If the error persists, follow " +"%3$sthis guide%4$s." +msgstr "" +"Prova a fare clic su %1$sSalva Modifiche%2$s. Se l'errore persiste, segui " +"%3$squesta guida%4$s." + +#: inc/functions/options.php:543 +msgid "" +"License validation failed. You may be using a nulled version of the plugin. " +"Please do the following:" +msgstr "" +"La validazione della licenza non è riuscita. È possibile che tu stia usando " +"una versione pirata del plugin. Fai quanto segue:" + +#: inc/functions/options.php:543 inc/functions/options.php:585 +#, php-format +msgid "Login to your WP Rocket %1$saccount%2$s" +msgstr "Connettiti al tuo %1$saccount%2$s WP Rocket" + +#: inc/functions/options.php:543 inc/functions/options.php:585 +msgid "Download the zip file" +msgstr "Scarica il file zip" + +#: inc/functions/options.php:543 inc/functions/options.php:585 +msgid "Reinstall" +msgstr "Reinstallare" + +#: inc/functions/options.php:543 +#, php-format +msgid "" +"If you do not have a WP Rocket account, please %1$spurchase a license%2$s." +msgstr "Se non hai un account WP Rocket, %1$scompra una licenza%2$s." + +#: inc/functions/options.php:551 +msgid "" +"License validation failed. This user account does not exist in our database." +msgstr "" +"La convalida della licenza non è riuscita. L'account dell'utente non esiste " +"nel nostro database." + +#: inc/functions/options.php:551 +msgid "To resolve, please contact support." +msgstr "Per risolvere, contatta il supporto." + +#: inc/functions/options.php:559 +msgid "License validation failed. This user account is blocked." +msgstr "" +"Convalida della licenza non riuscita. Questo account utente è bloccato." + +#: inc/functions/options.php:559 +#, php-format +msgid "Please see %1$sthis guide%2$s for more info." +msgstr "Leggi %1$squesta guida%2$s per avere più informazioni." + +#: inc/functions/options.php:579 +msgid "Your license is not valid." +msgstr "La tua licenza non è valida." + +#: inc/functions/options.php:579 +#, php-format +msgid "Make sure you have an active %1$sWP Rocket license%2$s." +msgstr "Assicurati di avere un %1$slicenza WP Rocket%2$s attiva." + +#: inc/functions/options.php:581 +msgid "You have added as many sites as your current license allows." +msgstr "Ha aggiunto il numero massimo di siti permessi dalla tua licenza." + +#: inc/functions/options.php:581 +#, php-format +msgid "" +"Upgrade your %1$saccount%2$s or %3$stransfer your license%2$s to this " +"domain." +msgstr "" +"Fai un upgrade del tuo %1$saccount%2$s o %3$strasferisci la tua licenza%2$s " +"su questo dominio." + +#: inc/functions/options.php:583 +msgid "This website is not allowed." +msgstr "Questo sito web non è consentito." + +#: inc/functions/options.php:583 +#, php-format +msgid "Please %1$scontact support%2$s." +msgstr "Per favore %1$scontatta il supporto%2$s." + +#: inc/functions/options.php:585 +msgid "This license key is not recognized." +msgstr "La chiave della licenza non è stata riconosciuta." + +#: inc/functions/options.php:585 +#, php-format +msgid "If the issue persists, please %1$scontact support%2$s." +msgstr "Se il problema persiste, %1$scontatta il supporto%2$s." + +#: inc/functions/options.php:591 +#, php-format +msgid "License validation failed: %s" +msgstr "La convalida della licenza non è riuscita. %s" + +#: inc/vendors/classes/class-imagify-partner.php:531 +msgid "Plugin installed successfully." +msgstr "Il plugin è stato installato con successo." + +#: inc/vendors/classes/class-imagify-partner.php:532 +msgid "Sorry, you are not allowed to install plugins on this site." +msgstr "Non hai i permessi per installare plugin su questo sito." + +#: inc/vendors/classes/class-imagify-partner.php:533 +msgid "Sorry, you are not allowed to do that." +msgstr "Non hai permessi per farlo." + +#: inc/vendors/classes/class-imagify-partner.php:534 +msgid "Plugin install failed." +msgstr "L'installazione del plugin non è riuscita." + +#: inc/vendors/classes/class-imagify-partner.php:535 +msgid "Go back" +msgstr "Torna indietro" + +#: views/cpcss/activate-cpcss-mobile.php:13 +msgid "Optimize CSS delivery for mobile" +msgstr "Ottimizza la pubblicazione del CSS per mobile" + +#: views/cpcss/activate-cpcss-mobile.php:14 +msgid "" +"Your website currently uses the same Critical Path CSS for both desktop and " +"mobile." +msgstr "" +"Il tuo sito web utilizza al momento lo stesso percorso di CSS critico sia " +"per desktop che per mobile." + +#: views/cpcss/activate-cpcss-mobile.php:15 +msgid "Click the button to enable mobile-specific CPCSS for your site." +msgstr "" +"Fai clic sul pulsante per attivare sul tuo sito il percorso critico CSS " +"specifico per mobile." + +#: views/cpcss/activate-cpcss-mobile.php:20 +#: views/settings/enable-google-fonts.php:19 +#, php-format +msgid "" +"This is a one-time action and this button will be removed afterwards. " +"%1$sMore info%2$s" +msgstr "" +"Questa è un'azione una tantum per cui questo pulsante verrà poi rimosso. " +"%1$sPiù info%2$s" + +#: views/cpcss/activate-cpcss-mobile.php:30 +#, php-format +msgid "" +"Your site is now using mobile-specific critical path CSS. %1$sMore info%2$s" +msgstr "" +"Il tuo sito ora sta usando il percorso critico CSS specifico per mobile. " +"%1$sPiù info%2$s" + +#: views/cpcss/activate-cpcss-mobile.php:39 +msgid "Generate Mobile Specific CPCSS" +msgstr "Genera il percorso critico CSS specifico per mobile." + +#: views/cpcss/metabox/container.php:19 +msgid "Critical Path CSS" +msgstr "Percorso critico del CSS " + +#: views/cpcss/metabox/generate.php:23 +#, php-format +msgid "Generate specific Critical Path CSS for this post. %1$sMore info%2$s" +msgstr "" +"Genera il percorso critico CSS specifico per questo articolo. %1$sPiù " +"info%2$s" + +#: views/cpcss/metabox/generate.php:33 +#, php-format +msgid "This post uses specific Critical Path CSS. %1$sMore info%2$s" +msgstr "" +"Questo articolo usa un percorso critico CSS specifico. %1$sPiù info%2$s" + +#: views/cpcss/metabox/generate.php:56 +msgid "Revert back to the default CPCSS" +msgstr "Torna al CPCSS predefinito" + +#: views/deactivation-intent/form.php:21 +msgid "Return" +msgstr "Ritorna" + +#: views/deactivation-intent/form.php:22 +msgid "WP Rocket feedback" +msgstr "Feedback su WP Rocket" + +#: views/deactivation-intent/form.php:24 +msgid "Close" +msgstr "Chiudi" + +#: views/deactivation-intent/form.php:28 +msgid "May we have a little info about why you are deactivating?" +msgstr "" +"Possiamo avere qualche info in più sul perché vuoi disattivare il plugin?" + +#: views/deactivation-intent/form.php:35 +#, php-format +msgid "%1$sIt is a temporary deactivation.%2$s I am just debugging an issue." +msgstr "" +"%1$sÈ una disattivazione temporanea.%2$s Sto solo cercando di risolvere un " +"problema." + +#: views/deactivation-intent/form.php:44 +#, php-format +msgid "The plugin %1$sbroke my layout%2$s or some functionality." +msgstr "Il plugin %1$sha rotto il mio layout%2$s o un'altra funzionalità. " + +#: views/deactivation-intent/form.php:53 +#, php-format +msgid "My PageSpeed or GTMetrix %1$sscore did not improve.%2$s" +msgstr "Il mio %1$spunteggio PageSpeed o GTMetrix non è migliorato.%2$s" + +#: views/deactivation-intent/form.php:59 +msgid "I did not notice a difference in loading time." +msgstr "Non ho notato differenza nel tempo di caricamento." + +#: views/deactivation-intent/form.php:66 +#, php-format +msgid "The plugin is %1$stoo complicated to configure.%2$s" +msgstr "Il plugin è %1$stroppo complicato da configurare.%2$s" + +#: views/deactivation-intent/form.php:72 +msgid "My host already has its own caching system." +msgstr "Il mio host include già un sistema di cache." + +#: views/deactivation-intent/form.php:74 +msgid "What is the name of your web host?" +msgstr "Qual è il nome del tuo hosting web?" + +#: views/deactivation-intent/form.php:79 +msgid "Other" +msgstr "Altro" + +#: views/deactivation-intent/form.php:81 +msgid "" +"Let us know why you are deactivating WP Rocket so we can improve the plugin" +msgstr "" +"Facci sapere perché stai disattivando WP Rocket, ci aiuterai a migliorare il" +" plugin" + +#: views/deactivation-intent/form.php:89 +msgid "The plugin broke my layout or some functionality" +msgstr "Il plugin ha rotto il layout del sito o una delle sue funzionalità" + +#: views/deactivation-intent/form.php:90 +msgid "" +"This type of issue can usually be fixed by deactivating some options in WP " +"Rocket." +msgstr "" +"Questo tipo di problemi di solito può essere risolto disattivando alcune " +"opzioni di WP Rocket." + +#: views/deactivation-intent/form.php:91 +msgid "" +"Click \"Apply Safe Mode\" to quickly disable LazyLoad, File Optimization, " +"Embeds and CDN options. Then check your site to see if the issue has " +"resolved." +msgstr "" +"Fai clic su \"Applica modalità sicura\" per disattivare rapidamente le " +"opzioni LazyLoad, Ottimizzazione File, Incorporamenti e CDN. Poi controlla " +"il tuo sito web per verificare che il problema sia risolto." + +#: views/deactivation-intent/form.php:93 +msgid "Apply safe mode" +msgstr "Applica modalità sicura" + +#: views/deactivation-intent/form.php:96 +msgid "Safe mode applied." +msgstr "Modalità sicura attiva." + +#: views/deactivation-intent/form.php:97 +msgid "Review your site in a private/logged out browser window." +msgstr "" +"Verifica il tuo sito da una finestra privata del browser o disconnettiti da " +"WordPress." + +#: views/deactivation-intent/form.php:102 +#, php-format +msgid "" +"Is the issue fixed? Now you can reactivate options one at a time to " +"determine which one caused the problem. %1$sMore info%2$s" +msgstr "" +"Il problema è risolto? Ora puoi riattivare le opzioni una alla volta per " +"determinare quale di loro aveva causato il problema. %1$sPiù info%2$s" + +#: views/deactivation-intent/form.php:107 +msgid "My PageSpeed or GT Metrix score did not improve" +msgstr "Il mio punteggio PageSpeed o GTMetrix non è migliorato" + +#: views/deactivation-intent/form.php:108 +msgid "" +"WP Rocket makes your site faster. The PageSpeed grade or GTMetrix score are " +"not indicators of speed. Neither your real visitors, nor Google will ever " +"see your website’s “grade”. Speed is the only metric that matters for SEO " +"and conversions." +msgstr "" +"WP Rocket rende il tuo sito più rapido. I punteggi di PageSpeed o GTMetrix " +"non sono indicatori di velocità. Nè i tuoi visitatori reali né Google " +"vedranno mai il ”punteggio” del tuo sito web. La velocità è l’unica metrica " +"che conta per il SEO e le conversioni." + +#: views/deactivation-intent/form.php:109 +msgid "Yoast, the expert on all things related to SEO for WordPress states:" +msgstr "" +"Yoast, gli esperti di tutto ciò che riguarda la SEO WordPress, affermano:" + +#: views/deactivation-intent/form.php:110 +msgid "" +"[Google] just looks at how fast your website loads for users, so you don’t " +"have to obsess over that specific score. You have to make sure your website " +"is as fast as you can get it." +msgstr "" +"[Google] considera solo quando velocemente carica il tuo sito web, per cui " +"non devi ossessionarti con i punteggi specifici. Devi assicurarti che il tuo" +" sito web sia il più veloce possibile." + +#: views/deactivation-intent/form.php:116 +#, php-format +msgid "" +"How to measure the load time of your site: %1$shttps://wp-rocket.me/blog" +"/correctly-measure-websites-page-load-time/%2$s" +msgstr "" +"Come misurare il tempo di caricamento del tuo sito: %1$shttps://wp-" +"rocket.me/blog/correctly-measure-websites-page-load-time/%2$s" + +#: views/deactivation-intent/form.php:122 +#, php-format +msgid "" +"Why you should not be chasing a PageSpeed score: %1$shttps://wp-" +"rocket.me/blog/the-truth-about-google-pagespeed-insights/%2$s" +msgstr "" +"Perché non dovresti star dietro al punteggio PageSpeed: %1$shttps://wp-" +"rocket.me/blog/the-truth-about-google-pagespeed-insights/%2$s" + +#: views/deactivation-intent/form.php:127 +msgid "I did not notice a difference in loading time" +msgstr "Non ho notato una differenza nel tempo di caricamento" + +#: views/deactivation-intent/form.php:128 +msgid "" +"Make sure you look at your site while logged out to see the fast, cached " +"pages!" +msgstr "" +"Assicurati di visualizzare il tuo sito senza aver fatto accesso al tuo " +"account WordPress: solo così vedrai le pagine in cache!" + +#: views/deactivation-intent/form.php:132 +#, php-format +msgid "" +"The best way to see the improvement WP Rocket provides is to perform speed " +"tests. Follow this guide to correctly measure the load time of your website:" +" %1$shttps://wp-rocket.me/blog/correctly-measure-websites-page-load-" +"time/%2$s" +msgstr "" +"Il modo migliore per vedere il miglioramento apportato da WP Rocket è quello" +" di eseguire test di velocità. Segui questa guida per misurare il tempo di " +"caricamento del tuo sito: %1$shttps://wp-rocket.me/blog/correctly-measure-" +"websites-page-load-time/%2$s" + +#: views/deactivation-intent/form.php:137 +msgid "The plugin is too complicated to configure" +msgstr "Il plugin è troppo complicato da configurare" + +#: views/deactivation-intent/form.php:138 +msgid "We are sorry to hear you are finding it difficult to use WP Rocket." +msgstr "Ci dispiace che stia trovando WP Rocket difficile da usare." + +#: views/deactivation-intent/form.php:139 +#, php-format +msgid "" +"WP Rocket is the only caching plugin that provides 80% of best practices in " +"speed optimization, by default. That means you do not have to do anything " +"besides activate WP Rocket and your site will already be faster!" +msgstr "" +"WP Rocket è l’unico plugin di cache che mette applica di default l’80% delle" +" buone pratiche in termini di ottimizzazione della velocità. Ciò significa " +"che non devi fare niente a parte attivare WP Rocket: il tuo sito sarà subito" +" più veloce!" + +#: views/deactivation-intent/form.php:140 +msgid "" +"The additional options are not required for a fast site, they are for fine-" +"tuning." +msgstr "" +"Le opzioni addizionali non sono obbligatorie per avere un sito veloce, " +"servono come aggiustamento della configurazione." + +#: views/deactivation-intent/form.php:144 +#, php-format +msgid "" +"To see the benefit WP Rocket is already providing, measure the speed of your" +" site using a tool like Pingdom: %1$shttps://wp-rocket.me/blog/correctly-" +"measure-websites-page-load-time/%2$s" +msgstr "" +"Per vedere quali benefici WP Rocket sta già apportando al tuo sito, misura " +"la velocità delle tue pagine usando uno strumento come Pingdom: %1$shttps" +"://wp-rocket.me/blog/correctly-measure-websites-page-load-time/%2$s" + +#: views/deactivation-intent/form.php:151 +msgid "Send & Deactivate" +msgstr "Invia e disattiva" + +#: views/deactivation-intent/form.php:152 +msgid "Cancel" +msgstr "Annulla" + +#: views/deactivation-intent/form.php:154 +msgid "Skip & Deactivate" +msgstr "Salta e disattiva" + +#: views/settings/enable-google-fonts.php:13 +msgid "Enable Google Font Optimization" +msgstr "Abilita l'ottimizzazione dei font Google" + +#: views/settings/enable-google-fonts.php:14 +msgid "" +"Improves font performance and combines multiple font requests to reduce the " +"number of HTTP requests." +msgstr "" +"Migliora le prestazioni dei font e combina multiple richieste di font per " +"ridurre il numero di richieste HTTP." + +#: views/settings/enable-google-fonts.php:29 +#, php-format +msgid "" +"Google Fonts Optimization is now enabled for your site. %1$sMore info%2$s" +msgstr "" +"L'ottimizzazione dei font Google è ora attiva sul tuo sito. %1$sPiù info%2$s" + +#: views/settings/enable-google-fonts.php:38 +msgid "Optimize Google Fonts" +msgstr "Ottimizza Google Fonts" + +#: views/settings/fields/cache-lifespan.php:26 +msgid "Clear cache after" +msgstr "Cancella la cache dopo" + +#: views/settings/fields/cnames.php:49 views/settings/fields/cnames.php:81 +#: views/settings/fields/cnames.php:111 +msgid "CSS & JavaScript" +msgstr "CSS & JavaScript" + +#: views/settings/fields/cnames.php:50 views/settings/fields/cnames.php:82 +#: views/settings/fields/cnames.php:112 +msgid "JavaScript" +msgstr "JavaScript" + +#: views/settings/fields/cnames.php:51 views/settings/fields/cnames.php:83 +#: views/settings/fields/cnames.php:113 +msgid "CSS" +msgstr "CSS" + +#: views/settings/fields/import-form.php:29 +msgid "Import settings" +msgstr "Importa le impostazioni" + +#: views/settings/fields/one-click-addon.php:40 +#: views/settings/fields/rocket-addon.php:31 +#: views/settings/fields/sliding-checkbox.php:25 views/settings/page.php:55 +msgctxt "Active state of checkbox" +msgid "On" +msgstr "On" + +#: views/settings/fields/one-click-addon.php:41 +#: views/settings/fields/rocket-addon.php:32 +#: views/settings/fields/sliding-checkbox.php:26 views/settings/page.php:56 +msgctxt "Inactive state of checkbox" +msgid "Off" +msgstr "Off" + +#: views/settings/fields/one-click-addon.php:42 +#: views/settings/fields/rocket-addon.php:33 +msgid "Add-on status" +msgstr "Stato dei componenti aggiuntivi" + +#: views/settings/fields/rocket-addon.php:56 +msgid "Modify options" +msgstr "Modifica le opzioni" + +#: views/settings/fields/rocket-cdn.php:29 +#: views/settings/fields/rocket-cdn.php:41 +msgid "CDN CNAME" +msgstr "CNAME della CDN" + +#: views/settings/fields/rocket-cdn.php:62 +#, php-format +msgid "Purges RocketCDN cached resources for your website. %s" +msgstr "Elimina la cache delle risorse su RocketCDN per il tuo sito web. %s" + +#: views/settings/fields/rocket-cdn.php:63 +#: views/settings/page-sections/cloudflare.php:36 +#: views/settings/page-sections/sucuri.php:37 +msgid "Learn more" +msgstr "Maggiori informazioni" + +#: views/settings/fields/rocket-cdn.php:72 +msgid "Clear all RocketCDN cache files" +msgstr "Cancella tutti i file di cache di RocketCDN" + +#: views/settings/page-sections/cloudflare.php:27 +msgid "Cloudflare Cache" +msgstr "Cache Cloudflare" + +#: views/settings/page-sections/cloudflare.php:35 +#: views/settings/page-sections/sucuri.php:36 +#, php-format +msgid "Purges cached resources for your website. %s" +msgstr "Elimina le risorse del tuo sito memorizzate in cache. %s" + +#: views/settings/page-sections/cloudflare.php:36 +msgid "https://support.cloudflare.com/hc/en-us/articles/200169246" +msgstr "https://support.cloudflare.com/hc/en-us/articles/200169246" + +#: views/settings/page-sections/cloudflare.php:45 +msgid "Clear all Cloudflare cache files" +msgstr "Cancella tutti i file della cache Cloudflare" + +#: views/settings/page-sections/dashboard.php:38 +msgid "Congratulations!" +msgstr "Congratulazioni!" + +#: views/settings/page-sections/dashboard.php:40 +msgid "WP Rocket is now activated and already working for you." +msgstr "WP Rocket è attivo e pronto a lavorare per te!" + +#: views/settings/page-sections/dashboard.php:42 +msgid "Your website should be loading faster now!" +msgstr "Il tuo sito web dovrebbe già essere più veloce!" + +#: views/settings/page-sections/dashboard.php:44 +#, php-format +msgid "" +"To guarantee fast websites, WP Rocket applies 80% of web performance best " +"practices." +msgstr "" +"Per farti ottenere dei siti web più veloci, WP Rocket applica " +"automaticamente l'80% delle buone pratiche di performance web." + +#: views/settings/page-sections/dashboard.php:44 +msgid "" +"We also enable options that provide immediate benefits to your website." +msgstr "" +"Attiviamo anche delle opzioni che garantiscono benefici immediati al tuo " +"sito web." + +#: views/settings/page-sections/dashboard.php:45 +msgid "Continue to the options to further optimize your site!" +msgstr "Vai alle opzioni per continuare a ottimizzare il tuo sito!" + +#: views/settings/page-sections/dashboard.php:55 +msgid "My Account" +msgstr "Il mio account" + +#: views/settings/page-sections/dashboard.php:61 +msgid "Refresh info" +msgstr "Aggiorna info" + +#: views/settings/page-sections/dashboard.php:75 +msgid "Expiration Date" +msgstr "Data di scadenza" + +#: views/settings/page-sections/dashboard.php:84 +msgid "View my account" +msgstr "Visualizza il mio account" + +#: views/settings/page-sections/dashboard.php:111 +msgid "Quick Actions" +msgstr "Azioni rapide" + +#: views/settings/page-sections/dashboard.php:118 +msgid "Remove all cached files" +msgstr "Rimuovi tutti i file di cache" + +#: views/settings/page-sections/dashboard.php:138 +msgid "Start cache preloading" +msgstr "Inizia il precaricamento della cache" + +#: views/settings/page-sections/dashboard.php:164 +msgid "Purge OPCache content" +msgstr "Elimina il contenuto di OPcache" + +#: views/settings/page-sections/dashboard.php:170 +msgid "Purge OPCache" +msgstr "Elimina la cache OPcache" + +#: views/settings/page-sections/dashboard.php:181 +#: views/settings/page-sections/dashboard.php:187 +msgid "Regenerate Critical CSS" +msgstr "Rigenera il percorso critico del CSS" + +#: views/settings/page-sections/dashboard.php:204 +msgid "Frequently Asked Questions" +msgstr "Domande più frequenti - FAQ" + +#: views/settings/page-sections/dashboard.php:217 +msgid "Still cannot find a solution?" +msgstr "Ancora non hai trovato la soluzione?" + +#: views/settings/page-sections/dashboard.php:218 +msgid "" +"Submit a ticket and get help from our friendly and knowledgeable Rocketeers." +msgstr "" +"Invia un ticket e ottieni aiuto dai nostri amichevoli esperti Rocketeers." + +#: views/settings/page-sections/dashboard.php:226 +msgid "Ask support" +msgstr "Chiedi al supporto" + +#: views/settings/page-sections/database.php:25 +msgid "Backup your database before you run a cleanup!" +msgstr "Fai un backup del tuo database prima di realizzare una pulizia!" + +#: views/settings/page-sections/database.php:26 +msgid "" +"Once a database optimization has been performed, there is no way to undo it." +msgstr "" +"Una volta che l'ottimizzazione del database è stata realizzata, non c'è modo" +" di tornare indietro." + +#: views/settings/page-sections/database.php:28 +msgid "Save Changes and Optimize" +msgstr "Salve le modifica e ottimizza" + +#: views/settings/page-sections/imagify.php:21 +#, php-format +msgid "" +"%1$sWP ROCKET%2$s created %3$sIMAGIFY%4$s %1$sfor best-in-class image " +"optimization.%2$s" +msgstr "" +"%1$sWP ROCKET%2$sha creato %3$sIMAGIFY%4$s%1$sper un'ottimizzazione immagini" +" che è la migliore della categoria.%2$s" + +#: views/settings/page-sections/imagify.php:24 +msgid "" +"Compress image to make your website faster, all while maintaining image " +"quality." +msgstr "" +"Comprimi le tue immagini per rendere il tuo sito web più veloce, mantenendo " +"intatta la loro qualità." + +#: views/settings/page-sections/imagify.php:25 +msgid "More on Imagify:" +msgstr "Più info su Imagify:" + +#: views/settings/page-sections/imagify.php:27 +msgid "Imagify Plugin Page" +msgstr "Pagina del plugin Imagify" + +#: views/settings/page-sections/imagify.php:28 +msgid "Imagify Website" +msgstr "Sito web Imagify" + +#: views/settings/page-sections/imagify.php:29 +msgid "Review of Image Compression Plugins" +msgstr "Valutazione dei plugin di compressione immagini" + +#: views/settings/page-sections/imagify.php:38 +msgid "Install Imagify" +msgstr "Installa Imagify" + +#: views/settings/page-sections/license.php:22 +msgid "WP Rocket was not able to automatically validate your license." +msgstr "WP Rocket non è riuscito a validare automaticamente la tua licenza." + +#: views/settings/page-sections/license.php:29 +#, php-format +msgid "Follow this %1$s, or contact %2$s to get the engine started." +msgstr "Segui questo %1$s o contatta il %2$s per accendere i motori." + +#: views/settings/page-sections/license.php:32 +#, php-format +msgid "%1$s%2$s%3$stutorial%4$s" +msgstr "%1$s%2$s%3$stutorial%4$s" + +#: views/settings/page-sections/license.php:34 +msgid "" +"https://docs.wp-rocket.me/article/100-resolving-problems-with-license-" +"validation/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://docs.wp-rocket.me/article/100-resolving-problems-with-license-" +"validation/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: views/settings/page-sections/license.php:40 +#, php-format +msgid "%1$s%2$s%3$ssupport%4$s" +msgstr "%1$s%2$s%3$ssupporto%4$s" + +#: views/settings/page-sections/sucuri.php:46 +msgid "Clear all Sucuri cache files" +msgstr "Cancella tutti i file di cache di Sucuri" + +#: views/settings/page-sections/tools.php:20 +#, php-format +msgid "Files size: %1$s. Number of entries: %2$s." +msgstr "Dimensioni dei file: %1$s. Numero di voci: %2$s." + +#: views/settings/page-sections/tools.php:23 +#, php-format +msgid "%1$sDownload the file%2$s." +msgstr "%1$sScarica il file%2$s." + +#: views/settings/page-sections/tools.php:26 +#, php-format +msgid "%1$sDelete the file%2$s." +msgstr "%1$sCancella il file%2$s." + +#: views/settings/page-sections/tools.php:37 +msgid "Export settings" +msgstr "Esporta le impostazioni" + +#: views/settings/page-sections/tools.php:38 +msgid "Download a backup file of your settings" +msgstr "Scarica un file di backup delle tue impostazioni" + +#: views/settings/page-sections/tools.php:46 +msgid "Download settings" +msgstr "Scarica impostazioni" + +#: views/settings/page-sections/tools.php:60 +msgid "Rollback" +msgstr "Rollback" + +#: views/settings/page-sections/tools.php:64 +#, php-format +msgid "Has version %s caused an issue on your website?" +msgstr "La versione %1$s ha creato qualche problema sul tuo sito?" + +#: views/settings/page-sections/tools.php:69 +#, php-format +msgid "" +"You can rollback to the previous major version here.%sThen send us a support" +" request." +msgstr "" +"Da qui puoi tornare a una precedente versione principale del plugin.%sPoi " +"inviaci una richiesta di supporto." + +#: views/settings/page-sections/tools.php:80 +#, php-format +msgid "Reinstall version %s" +msgstr "Reinstalla la versione %s" + +#: views/settings/page-sections/tools.php:106 +msgid "Debug mode" +msgstr "Modalità debug" + +#: views/settings/page-sections/tools.php:111 +msgid "Create a debug log file." +msgstr "Crea un file registro di debug." + +#: views/settings/page-sections/tutorials.php:13 +#: views/settings/partials/getting-started.php:18 +msgid "Getting Started" +msgstr "Per iniziare" + +#: views/settings/page-sections/tutorials.php:15 +msgid "Getting Started with WP Rocket" +msgstr "Getting Started with WP Rocket" + +#: views/settings/page-sections/tutorials.php:16 +#: views/settings/partials/getting-started.php:12 +msgid "Finding the Best Settings for Your Site" +msgstr "Trova le migliori impostazioni per il tuo sito" + +#: views/settings/page-sections/tutorials.php:17 +#: views/settings/partials/getting-started.php:13 +msgid "How to Check if WP Rocket is Caching Your Site" +msgstr "Come verificare se WP Rocket sta creando la cache per il tuo sito" + +#: views/settings/page-sections/tutorials.php:18 +#: views/settings/partials/getting-started.php:14 +msgid "How to Measure the Speed of Your Site" +msgstr "Come misurare la velocità del tuo sito" + +#: views/settings/page-sections/tutorials.php:24 +msgid "Troubleshooting Display Issues with File Optimization" +msgstr "Troubleshooting Display Issues with File Optimization" + +#: views/settings/page-sections/tutorials.php:25 +msgid "How to Find the Right JavaScript to Exclude" +msgstr "Come trovare il corretto file JavaScript da escludere" + +#: views/settings/page-sections/tutorials.php:26 +msgid "How External Content Slows Your Site" +msgstr "How External Content Slows Your Site" + +#: views/settings/page-sections/tutorials.php:32 +msgid "How Preloading Works" +msgstr "Come funziona il precaricamento" + +#: views/settings/page-sections/tutorials.php:38 +msgid "Set Up the Cloudflare Add-on" +msgstr "Configura l'Add-On Cloudflare" + +#: views/settings/page.php:16 +msgid "WP Rocket Settings" +msgstr "Impostazioni WP Rocket" + +#: views/settings/page.php:30 +#, php-format +msgid "version %s" +msgstr "versione %s" + +#: views/settings/page.php:57 +msgid "Show Sidebar" +msgstr "Mostra la barra laterale" + +#: views/settings/page.php:76 +msgid "Thanks for choosing to participate in the WP Rocket beta program!" +msgstr "Grazie per aver scelto di partecipare al programma Beta di WP Rocket!" + +#: views/settings/page.php:77 +msgid "" +"A beta version is usually one that has new features and improvements, but we" +" want to test it a little more before full launch." +msgstr "" +"La Beta è una versione che contiene nuove funzionalità e miglioramenti, ma " +"che vogliamo testare per un po' prima di lanciarla pubblicamente." + +#: views/settings/page.php:78 +msgid "" +"We’d love it if you took our beta versions for a ride, but please keep in " +"mind that it might be less stable than our other releases. Don’t worry, you " +"can switch back to a full release version at any time." +msgstr "" +"Ci farebbe molto piacere se facessi un giro sulle nostre versioni Beta, ma " +"per favore ricorda che si tratta di versioni meno stabili di quelle già " +"lanciate pubblicamente. Non ti preoccupare, puoi ritornare quando vorrai a " +"una delle versioni precedenti. " + +#: views/settings/page.php:79 +msgid "" +"Your mission: please send all feedback about our beta versions, including " +"bug reports, to support@wp-rocket.me" +msgstr "" +"La tua missione: manda tutti i tuoi feedback relativi alla versione beta, " +"includendo report dei bug, all'indirizzo support@wp-rocket.me" + +#: views/settings/page.php:81 +msgid "If you don’t want to join the beta program, simply close this window." +msgstr "" +"Se non vuoi unirti al programma Beta, ti basterà chiudere questa finestra." + +#: views/settings/page.php:83 +msgid "Activate Rocket Tester" +msgstr "Attiva il Rocket Tester" + +#: views/settings/page.php:94 +msgid "" +"Below is a detailed view of all data WP Rocket will collect if " +"granted permission." +msgstr "" +"Qui sotto trovi una lista dettagliata dei dati che WP Rocket raccoglierà, " +"se vorrai dargli il permesso di farlo." + +#: views/settings/page.php:97 +msgid "" +"WP Rocket will never transmit any domain names or email addresses (except " +"for license validation), IP addresses, or third-party API keys." +msgstr "" +"WP Rocket non trasmetterà mai alcun nome di dominio o indirizzo email " +"(eccetto che per la validazione della licenza), indirizzi IP o le chiavi API" +" di terze parti." + +#: views/settings/page.php:99 +msgid "Activate Rocket analytics" +msgstr "Attiva Rocket Analytics" + +#: views/settings/partials/documentation.php:15 +msgid "It is a great starting point to fix some of the most common issues." +msgstr "" +"È un ottimo punto di partenza per risolvere alcuni degli errori più comuni." + +#: views/settings/partials/documentation.php:22 +msgid "Read the documentation" +msgstr "Leggi la documentazione" + +#: views/settings/partials/getting-started.php:11 +msgid "What WP Rocket Does For You By Default" +msgstr "Cosa fa WP Rocket per impostazione predefinita" + +#: views/settings/partials/sidebar.php:12 +msgid "How to correctly measure your website’s loading time" +msgstr "Come misurare correttamente il tempo di caricamento del tuo sito web" + +#: views/settings/partials/sidebar.php:14 +msgid "Check our tutorial and learn how to measure the speed of your site." +msgstr "" +"Guarda il nostro tutorial e impara a misurare la velocità del tuo sito." + +#: views/settings/partials/sidebar.php:19 +msgid "" +"Learn how to use best practices to correctly measure your site's " +"performance." +msgstr "" +"Apprendi le buone pratiche per misurare correttamente la performance del tuo" +" sito web." + +#: views/settings/partials/sidebar.php:20 +msgid "" +"https://wp-rocket.me/blog/correctly-measure-websites-page-load-" +"time/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://wp-rocket.me/blog/correctly-measure-websites-page-load-" +"time/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: views/settings/partials/sidebar.php:20 +msgid "Read our guide" +msgstr "Leggi la nostra guida" + +#: views/settings/partials/sidebar.php:23 +msgid "Why Google PageSpeed grade should not matter" +msgstr "Perché il punteggio di Google PageSpeed non dovrebbe preoccuparti" + +#: views/settings/partials/sidebar.php:24 +msgid "" +"https://wp-rocket.me/blog/the-truth-about-google-pagespeed-" +"insights/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://wp-rocket.me/blog/the-truth-about-google-pagespeed-" +"insights/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: views/settings/partials/sidebar.php:24 +msgid "Read more" +msgstr "Leggi di più" + +#: views/settings/partials/sidebar.php:29 +msgid "You have not activated logged-in user cache." +msgstr "Non hai attivato la cache per gli utenti registrati." + +#: views/settings/partials/sidebar.php:30 +msgid "" +"Use a private browser to check your website's speed and visual appearance." +msgstr "" +"Usa una finestra privata del browser per controllare la velocità del tuo " +"sito e l’aspetto visuale." + +#: views/settings/rocketcdn/cta-big.php:27 +#, php-format +msgid "Valid until %s only!" +msgstr "Valido solo fino al %s!" + +#: views/settings/rocketcdn/cta-big.php:36 +msgid "Speed up your website thanks to:" +msgstr "Velocizza il tuo sito web grazie a:" + +#: views/settings/rocketcdn/cta-big.php:42 +#, php-format +msgid "" +"High performance Content Delivery Network (CDN) with %1$sunlimited " +"bandwith%2$s" +msgstr "" +"Una Content Delivery Network (CDN) ad altre prestazioni e con %1$sbanda " +"illimitata%2$s" + +#: views/settings/rocketcdn/cta-big.php:48 +#, php-format +msgid "" +"Easy configuration: the %1$sbest CDN settings%2$s are automatically applied" +msgstr "" +"Facile configurazione: le %1$smigliori impostazioni per la CDN%2$s sono " +"applicate automaticamente" + +#: views/settings/rocketcdn/cta-big.php:54 +#, php-format +msgid "" +"WP Rocket integration: the CDN option is %1$sautomatically configured%2$s in" +" our plugin" +msgstr "" +"Integrazione con WP Rocket: l'opzione CDN è %1$sconfigurata " +"automaticamente%2$s nel nostro plugin" + +#: views/settings/rocketcdn/cta-big.php:69 +#, php-format +msgid "%s / month" +msgstr "%s al mese" + +#: views/settings/rocketcdn/cta-big.php:74 +msgid "Get Started" +msgstr "Inizia" + +#: views/settings/rocketcdn/cta-big.php:80 +msgid "Learn more about RocketCDN" +msgstr "Maggiori informazioni su RocketCDN" + +#: views/settings/rocketcdn/cta-big.php:82 +msgid "Reduce this banner" +msgstr "Rimpicciolisci questo banner" + +#: views/settings/rocketcdn/cta-big.php:88 +#, php-format +msgid "" +"* $%1$s/month for 12 months then $%2$s/month. You can cancel your " +"subscription at any time." +msgstr "" +"* $%1$s al mese per i primi 12 mesi, poi $%2$s al mese. Puoi cancellare " +"l'abbonamento in qualsiasi momento." + +#: views/settings/rocketcdn/cta-small.php:17 +msgid "" +"Speed up your website with RocketCDN, WP Rocket’s Content Delivery Network." +msgstr "" +"Velocizza il tuo sito web con RocketCDN, la Content Delivery Network di WP " +"Rocket." + +#: views/settings/rocketcdn/cta-small.php:20 +#: views/settings/rocketcdn/promote-notice.php:13 +msgid "Learn More" +msgstr "Maggiori informazioni" + +#: views/settings/rocketcdn/dashboard-status.php:23 +msgid "RocketCDN is unavailable on local domains and staging sites." +msgstr "RocketCDN non è disponibile su domini locali e siti staging." + +#: views/settings/rocketcdn/dashboard-status.php:32 +msgid "Get RocketCDN" +msgstr "Ottieni RocketCDN" + +#: views/settings/rocketcdn/promote-notice.php:11 +msgid "New!" +msgstr "Novità!" + +#: views/settings/rocketcdn/promote-notice.php:12 +msgid "" +"Speed up your website with RocketCDN, WP Rocket’s Content Delivery Network!" +msgstr "" +"Velocizza il tuo sito web con RocketCDN, la Content Delivery Network di WP " +"Rocket!" + +#: views/settings/sections/addons-container.php:24 +#: views/settings/sections/fields-container.php:28 +msgid "Need Help?" +msgstr "Hai bisogno d’aiuto?" diff --git a/wp-content/plugins/wp-rocket/languages/rocket-ms.mo b/wp-content/plugins/wp-rocket/languages/rocket-ms.mo new file mode 100644 index 0000000000000000000000000000000000000000..d1931a0511a7f6406d99121ecaa3a474a8fe028c GIT binary patch literal 5064 zcma)9OOG8#6)r=9VR!_>BM=}iCmuwU>7IK%PU7^~F_Vdn9M9OJnd=uqjOupRy+nAXZ515M;q0h>+NWSg~RQ8-!S~VBrlCe*wNz)qU^S*h5+#e_h@6IOjXx zIeqRwUVQEs4A(jQeG7k=PBHc-@Q0tkf4BypWb8}8A@F73CJ_JFkMQ4@fn(rTfCs?0 zfjmA=~KZz2~-&W8c6<}#%8yHuL5bmBOuxN z6W}G_hrk!W$=`r9{}GJe0iOB{W50q=yFi-%ug?WLPJKS`a|ZY#p1%hC8t^S3@v{vi z-hK+?zz>1s|L=gr$0Hz)V*dfY1U&r(##Vr5fDv#DxC(p-TnByx`~dg}cn&yxA@F+# zh%MMYkOQj@e-5O${1$i<_!l7g^U4>4zXo`O@o#_>hh+r60^S0C7WfAs+4(0Rt@|hN zJK$#x&JqtlfOB_&H4u;4S^UvOw$OUwqQ5{Ldj)@F4_y>L;^tNS!5xMWdF_#3{q+sp zkTfagbP-o%4{4AtiaqIzF5(~ZnO|_pb3qRfE^ja0Q`|v=zlihxLU?`5Y5Yz6K}w8m zWErnaBl$!M*EZ6!jk4rQ^IKZ-y{otQz3nY-m6MgI+2;E<*=A|lY*Gp=vC=uErf#gDSkvfID<>5JdcZctqw2+RMDwW#G<@4uk%x;<$ z?sB0E%XUgBY?z!H?XVUb*0pI|n7Y%*(ufSxaZ)&!Pa0GC2fa~s*-n*ayV#L$3zt9U z(O&ODf5TNp`}2uVrOXn}p7lcM)HIERNfXS}qLT5)oa<)w33Ija8}ha$*JSqWU0W@W zY8W81u!1O(+C6&##UV3X8yCVswAHeyl(oue%blUuE?0=c6K>-Sp)+m~MY1RafsH6k z6yCGA4RX2GfQduX1Tpl&8DY;p%Dj*>jv<)={>)UXhqS4mb128OrhhNW(i|>cnzqb% zF3Xy?-de<}F;LS&NfXm}xk13>-J~T=$Lw}JZ9pcyYP|MDnwnO78F4IGUOQ)9Beb1J zzrN{>C7ls3L<-2Mgwiov9H-48Pfb}O3YeBlh_#ZgQK=0&^yhUxCG0LTpmo^9sT7{g zcqUzlAKBUqcq+AQ1Vwc`^G+;V9yA>D`-otQEJ|~UbfZwpn$u%a7f~b z;fD(8d?udutGL>R_BxyQJ}9-S|UjgBl*Qu$=fl$dH`VKvW$6Mc$-kj9qV8+$b-LD%E||3 z48}>ndJ5xFYi{^yJ|X-O0=Ylsn*xmS6y>C$AxRmvY=s}@D$N5&pznar_J(x3Ja!~4 zT14KL8Pa)oGF5_d7W1xTO;OcIgQoTSqv~{9cJ&LfYfL-M7mD1Tg&AIPojfV5D9NUT z#=QdJX$v`fKDwgWr^Qg93&_Fi$T1I%F0v`bst1)UDzatv0Z0eu;9G-@qW2;5gr6S_--!knqw{a^;V>Cqhz1u115Au| z<$t_> z;gwz5DceSr(KXXlHsKmI0YiIvxK8B(x0eU&OZTGhhw?#8>=@YV_%Oa04~KXa#?gED zrXs?5!sB@H^oE>4&Y9g()+Ky@e|=xB?;j<@mGdcX`x{LU*7vm^uUx<@y|0a_`^WRa z%38WEZMrX^7;Xxqx zpw1%~K0HzP*-iKio3oLq#vDjZK$qayl`?MM{pQlPl{K4;^xX3jToBh0ArdeO)o zU(|O^X#3a>QcD%owCPOX!&adr6pD+&sfquJa(F5Av2qaFvXRO}fhJBisuH{qR^@C@ zl_IRk+i|O5vo(d$Q|#XNa-wSS)v6Z`WT@7)z|l3jPx!<;Fw!)pUfc;QYrD%k{bqpTWG4TceJO^Gim9QeLrmjU#@zVk;xDz-!G=YU^ zb@<*o(fTHkL=Lg%bY>8@-_K7fP&E?v$fS}iGo{SuNwI8WzCj5(_K&fChIA=-jcg@F z2U=?M_0(aunIpL{FBZDXs`BcjS5Ij>!@(%RM6ja7|1S)h16%+A literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-rocket/languages/rocket-ms.po b/wp-content/plugins/wp-rocket/languages/rocket-ms.po new file mode 100644 index 0000000..f8490d8 --- /dev/null +++ b/wp-content/plugins/wp-rocket/languages/rocket-ms.po @@ -0,0 +1,2949 @@ +# Copyright (C) 2016 WP Rocket +# This file is distributed under the same license as the WP Rocket package. +# Translators: +# Adi Azudin , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: WP Rocket 3.3.7\n" +"Report-Msgid-Bugs-To: http://wp-rocket.me/\n" +"POT-Creation-Date: 2019-08-26 11:14-0400\n" +"PO-Revision-Date: 2019-08-26 15:14+0000\n" +"Last-Translator: Adi Azudin , 2019\n" +"Language-Team: Malay (https://www.transifex.com/wp-media/teams/18133/ms/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ms\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Poedit 1.8.11\n" +"X-Poedit-Basepath: ..\n" +"X-Poedit-KeywordsList: __;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c\n" +"X-Poedit-SearchPath-0: .\n" +"X-Poedit-SearchPathExcluded-0: assets\n" +"X-Poedit-SearchPathExcluded-1: src\n" +"X-Poedit-SearchPathExcluded-2: vendor\n" +"X-Poedit-SearchPathExcluded-3: node_modules\n" +"X-Poedit-SearchPathExcluded-4: tests\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Textdomain-Support: yes\n" + +#: inc/3rd-party/hosting/flywheel.php:15 inc/3rd-party/hosting/godaddy.php:15 +#: inc/3rd-party/hosting/o2switch.php:15 +#: inc/3rd-party/hosting/pressidium.php:15 inc/3rd-party/hosting/savvii.php:15 +#: inc/3rd-party/hosting/wp-serveur.php:24 +#: inc/3rd-party/hosting/wpengine.php:15 +#, php-format +msgid "" +"Your site is hosted on %s, we have enabled Varnish auto-purge for " +"compatibility." +msgstr "" +"Laman web anda dihoskan %s, kami telah membolehkan Varnish auto-purge untuk " +"keserasian." + +#: inc/3rd-party/hosting/kinsta.php:150 +#, php-format +msgid "" +"Your installation seems to be missing core Kinsta files managing Cache " +"clearing and CDN, which will prevent your Kinsta installation and WP Rocket " +"from working correctly. Please get in touch with Kinsta support through your" +" %1$sMyKinsta%2$s account to resolve this issue." +msgstr "" +"Pemasangan anda nampaknya kehilangan fail teras Kinsta yang mengurus " +"pembersihan Cache dan CDN, yang mana akan menghalang pemasangan Kinsta dan " +"WP Rocket anda daripada berfungsi dengan betul. Sila berhubung dengan " +"sokongan Kinsta anda melalui %1$sakaun MyKinsta%2$s untuk menyelesaikan isu " +"ini." + +#: inc/3rd-party/plugins/jetpack.php:86 +msgid "Jetpack XML Sitemaps" +msgstr "Peta laman Jetpack XML" + +#: inc/3rd-party/plugins/jetpack.php:88 +msgid "Preload the sitemap from the Jetpack plugin" +msgstr "Pramuat peta laman daripada pemalam Jetpack" + +#: inc/3rd-party/plugins/jetpack.php:96 +#: inc/3rd-party/plugins/seo/all-in-one-seo-pack.php:88 +#: inc/3rd-party/plugins/seo/rank-math-seo.php:34 +#: inc/3rd-party/plugins/seo/seopress.php:85 +#: inc/3rd-party/plugins/seo/the-seo-framework.php:123 +#: inc/3rd-party/plugins/seo/yoast-seo.php:86 +#, php-format +msgid "" +"We automatically detected the sitemap generated by the %s plugin. You can " +"check the option to preload it." +msgstr "" +"Kami secara automatik mengesan peta laman yang dihasilkan oleh pemalam %s. " +"Anda boleh menyemak pilihan untuk pramuatnya." + +#: inc/3rd-party/plugins/seo/all-in-one-seo-pack.php:86 +msgid "All in One SEO XML sitemap" +msgstr "Peta laman XML All in One SEO" + +#: inc/3rd-party/plugins/seo/rank-math-seo.php:32 +msgid "Rank Math XML sitemap" +msgstr "Peta laman XML Rank Math" + +#: inc/3rd-party/plugins/seo/seopress.php:83 +msgid "SEOPress XML sitemap" +msgstr "" + +#: inc/3rd-party/plugins/seo/the-seo-framework.php:121 +msgid "The SEO Framework XML sitemap" +msgstr "Peta laman XML The SEO Framework" + +#: inc/3rd-party/plugins/seo/yoast-seo.php:84 +msgid "Yoast SEO XML sitemap" +msgstr "Peta laman XML Yoast SEO" + +#: inc/admin/admin.php:13 inc/common/admin-bar.php:311 +#: inc/deprecated/deprecated.php:1789 +msgid "Support" +msgstr "Sokongan" + +#: inc/admin/admin.php:15 +msgid "Docs" +msgstr "" + +#: inc/admin/admin.php:17 inc/common/admin-bar.php:299 +msgid "FAQ" +msgstr "" + +#: inc/admin/admin.php:19 inc/common/admin-bar.php:46 +msgid "Settings" +msgstr "Tetapan" + +#: inc/admin/admin.php:64 inc/admin/admin.php:86 inc/admin/admin.php:105 +msgid "Clear this cache" +msgstr "" + +#: inc/admin/admin.php:249 inc/admin/admin.php:264 +#: inc/classes/class-wp-rocket-requirements-check.php:204 +#: inc/classes/class-wp-rocket-requirements-check.php:214 +#, php-format +msgid "%s Update Rollback" +msgstr "" + +#: inc/admin/admin.php:290 +#, php-format +msgid "%1$sReturn to WP Rocket%2$s or %3$sgo to Plugins page%2$s" +msgstr "" + +#: inc/admin/admin.php:529 +msgid "Settings import failed: you do not have the permissions to do this." +msgstr "" +"Tetapan gagal diimport: anda tidak mempunyai keizinan untuk melakukan ini." + +#: inc/admin/admin.php:533 +msgid "Settings import failed: no file uploaded." +msgstr "Tetapan gagal diimport: tiada fail dimuat naik." + +#: inc/admin/admin.php:537 +msgid "Settings import failed: incorrect filename." +msgstr "Tetapan gagal diimport: kesalahan nama fail." + +#: inc/admin/admin.php:546 +msgid "Settings import failed: incorrect filetype." +msgstr "Tetapan gagal diimport: kesalahan jenis fail." + +#: inc/admin/admin.php:554 +msgid "Settings import failed: " +msgstr "Tetapan gagal diimport:" + +#: inc/admin/admin.php:571 +msgid "Settings import failed: unexpected file content." +msgstr "Tetapan gagal diimport: kandungan fail yang tidak dijangka." + +#: inc/admin/admin.php:592 +msgid "Settings imported and saved." +msgstr "Tetapan telah diimport dan disimpan." + +#: inc/admin/options.php:101 +#, php-format +msgid "Cloudflare development mode error: %s" +msgstr "" + +#: inc/admin/options.php:107 +#, php-format +msgid "Cloudflare development mode %s" +msgstr "" + +#: inc/admin/options.php:124 +#, php-format +msgid "Cloudflare cache level error: %s" +msgstr "" + +#: inc/admin/options.php:128 +msgctxt "Cloudflare caching level" +msgid "Standard" +msgstr "" + +#: inc/admin/options.php:134 +#, php-format +msgid "Cloudflare cache level set to %s" +msgstr "" + +#: inc/admin/options.php:146 +#, php-format +msgid "Cloudflare minification error: %s" +msgstr "" + +#: inc/admin/options.php:152 +#, php-format +msgid "Cloudflare minification %s" +msgstr "" + +#: inc/admin/options.php:164 +#, php-format +msgid "Cloudflare rocket loader error: %s" +msgstr "" + +#: inc/admin/options.php:170 +#, php-format +msgid "Cloudflare rocket loader %s" +msgstr "" + +#: inc/admin/options.php:182 +#, php-format +msgid "Cloudflare browser cache error: %s" +msgstr "" + +#: inc/admin/options.php:188 +#, php-format +msgid "Cloudflare browser cache set to %s seconds" +msgstr "" + +#: inc/admin/options.php:241 inc/classes/admin/settings/class-page.php:692 +msgid "Excluded CSS Files" +msgstr "" + +#: inc/admin/options.php:242 inc/classes/admin/settings/class-page.php:784 +msgid "Excluded Inline JavaScript" +msgstr "" + +#: inc/admin/options.php:243 inc/classes/admin/settings/class-page.php:802 +msgid "Excluded JavaScript Files" +msgstr "" + +#: inc/admin/options.php:244 inc/classes/admin/settings/class-page.php:1128 +msgid "Never Cache URL(s)" +msgstr "" + +#: inc/admin/options.php:245 inc/classes/admin/settings/class-page.php:1144 +msgid "Never Cache User Agent(s)" +msgstr "" + +#: inc/admin/options.php:246 inc/classes/admin/settings/class-page.php:1149 +msgid "Always Purge URL(s)" +msgstr "" + +#: inc/admin/options.php:247 inc/classes/admin/settings/class-page.php:1443 +msgid "Exclude files from CDN" +msgstr "" + +#: inc/admin/options.php:265 +#, php-format +msgid "%1$s: %2$s." +msgstr "" + +#: inc/admin/options.php:275 +msgid "The following pattern is invalid and has been removed:" +msgid_plural "The following patterns are invalid and have been removed:" +msgstr[0] "" + +#: inc/admin/ui/meta-boxes.php:14 inc/admin/ui/notices.php:955 +#: inc/common/admin-bar.php:65 inc/common/admin-bar.php:118 +#: views/settings/page-sections/dashboard.php:115 +msgid "Clear cache" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:36 +msgid "WP Rocket Options" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:66 +msgid "Never cache this page" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:70 +msgid "Activate these options on this post:" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:73 +msgid "LazyLoad for images" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:74 +msgid "LazyLoad for iframes/videos" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:75 +#: inc/classes/admin/settings/class-page.php:615 +msgid "Minify HTML" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:76 +msgid "Minify/combine CSS" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:77 +msgid "Minify/combine JS" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:78 +#: inc/classes/admin/settings/class-page.php:1413 +#: inc/classes/admin/settings/class-page.php:1424 +#: inc/deprecated/deprecated.php:1775 +msgid "CDN" +msgstr "CDN" + +#: inc/admin/ui/meta-boxes.php:79 +msgid "Optimize CSS Delivery" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:80 +msgid "Defer JS" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:86 +#, php-format +msgid "Activate first the %s option." +msgstr "" + +#: inc/admin/ui/meta-boxes.php:102 +#, php-format +msgid "" +"%1$sNote:%2$s None of these options will be applied if this post has been " +"excluded from cache in the global cache settings." +msgstr "" + +#: inc/admin/ui/notices.php:24 inc/admin/ui/notices.php:34 +#, php-format +msgid "" +"%1$s has not been deactivated due to missing writing permissions.
      \n" +"Make %2$s writeable and retry deactivation, or force deactivation now:" +msgstr "" + +#: inc/admin/ui/notices.php:83 +#, php-format +msgid "" +"%s: One or more plugins have been enabled or disabled, " +"clear the cache if they affect the front end of your site." +msgstr "" + +#: inc/admin/ui/notices.php:196 +#, php-format +msgid "" +"%s: The following plugins are not compatible with this " +"plugin and may cause unexpected results:" +msgstr "" + +#: inc/admin/ui/notices.php:202 +msgid "Deactivate" +msgstr "" + +#: inc/admin/ui/notices.php:243 +msgid "" +"WP Rocket Footer JS is not an official add-on. It prevents some options in " +"WP Rocket from working correctly. Please deactivate it if you have problems." +msgstr "" + +#: inc/admin/ui/notices.php:283 +#, php-format +msgid "" +"Endurance Cache is currently enabled, which will conflict with WP Rocket " +"Cache. Please set the Endurance Cache cache level to Off (Level 0) on the " +"%1$sSettings > General%2$s page to prevent any issues." +msgstr "" + +#: inc/admin/ui/notices.php:305 +#, php-format +msgid "" +"%1$s: A custom permalink structure is required for the plugin to work " +"properly. %2$sGo to permalinks settings%3$s" +msgstr "" + +#: inc/admin/ui/notices.php:442 +#, php-format +msgid "" +"%s could not modify the .htaccess file due to missing writing permissions." +msgstr "" + +#: inc/admin/ui/notices.php:448 inc/admin/ui/notices.php:1032 +#, php-format +msgid "Troubleshoot: %1$sHow to make system files writeable%2$s" +msgstr "" + +#: inc/admin/ui/notices.php:450 inc/admin/ui/notices.php:1034 +msgid "" +"https://docs.wp-rocket.me/article/626-how-to-make-system-files-htaccess-wp-" +"config-writeable/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" + +#: inc/admin/ui/notices.php:456 +msgid "" +"Don’t worry, WP Rocket’s page caching and settings will still function " +"correctly." +msgstr "" + +#: inc/admin/ui/notices.php:456 +msgid "" +"For optimal performance, adding the following lines into your .htaccess is " +"recommended (not required):" +msgstr "" + +#: inc/admin/ui/notices.php:600 +#, php-format +msgid "" +"%1$s is good to go! %2$sTest your load time%4$s, or visit your " +"%3$ssettings%4$s." +msgstr "" + +#: inc/admin/ui/notices.php:721 +msgid "" +"Would you allow WP Rocket to collect non-sensitive diagnostic data from this" +" website?" +msgstr "" +"Adakah anda mengizinkan WP Rocket untuk mengumpul data diagnostik yang tidak" +" sensitif daripada laman web ini?" + +#: inc/admin/ui/notices.php:722 +msgid "This would help us to improve WP Rocket for you in the future." +msgstr "" +"Ini akan membantu kami memperbaiki WP Rocket untuk anda pada masa akan " +"datang." + +#: inc/admin/ui/notices.php:728 +msgid "What info will we collect?" +msgstr "Apakah maklumat yang akan kami kumpulkan?" + +#: inc/admin/ui/notices.php:733 +msgid "" +"Below is a detailed view of all data WP Rocket will collect if granted " +"permission. WP Rocket will never transmit any domain names or email " +"addresses (except for license validation), IP addresses, or third-party API " +"keys." +msgstr "" + +#: inc/admin/ui/notices.php:742 +msgid "Yes, allow" +msgstr "Ya, izinkan" + +#: inc/admin/ui/notices.php:745 +msgid "No, thanks" +msgstr "Tidak, terima kasih" + +#: inc/admin/ui/notices.php:783 +msgid "Thank you!" +msgstr "Terima kasih!" + +#: inc/admin/ui/notices.php:788 +msgid "WP Rocket now collects these metrics from your website:" +msgstr "WP Rocket kini mengumpul metrik ini daripada laman web anda:" + +#: inc/admin/ui/notices.php:825 +#, php-format +msgid "%s: Cache cleared." +msgstr "" + +#: inc/admin/ui/notices.php:830 +#, php-format +msgid "%s: Post cache cleared." +msgstr "" + +#: inc/admin/ui/notices.php:835 +#, php-format +msgid "%s: Term cache cleared." +msgstr "" + +#: inc/admin/ui/notices.php:840 +#, php-format +msgid "%s: User cache cleared." +msgstr "" + +#: inc/admin/ui/notices.php:910 +msgid "" +"The following scheduled event failed to run. This may indicate the CRON " +"system is not running properly, which can prevent some WP Rocket features " +"from working as intended:" +msgid_plural "" +"The following scheduled events failed to run. This may indicate the CRON " +"system is not running properly, which can prevent some WP Rocket features " +"from working as intended:" +msgstr[0] "" + +#: inc/admin/ui/notices.php:919 +msgid "Please contact your host to check if CRON is working." +msgstr "" + +#: inc/admin/ui/notices.php:958 +msgid "Stop Preload" +msgstr "" + +#: inc/admin/ui/notices.php:976 +msgid "Force deactivation " +msgstr "" + +#: inc/admin/ui/notices.php:989 +msgid "The following code should have been written to this file:" +msgstr "" + +#: inc/admin/ui/notices.php:999 views/settings/page-sections/dashboard.php:45 +msgid "Dismiss this notice." +msgstr "" + +#: inc/admin/ui/notices.php:1020 +#, php-format +msgid "%s cannot configure itself due to missing writing permissions." +msgstr "" + +#: inc/admin/ui/notices.php:1026 +#, php-format +msgid "Affected file/folder: %s" +msgstr "" + +#: inc/classes/admin/Database/class-optimization.php:41 +#: inc/classes/admin/settings/class-page.php:1289 +msgid "Revisions" +msgstr "" + +#: inc/classes/admin/Database/class-optimization.php:42 +#: inc/classes/admin/settings/class-page.php:1299 +msgid "Auto Drafts" +msgstr "" + +#: inc/classes/admin/Database/class-optimization.php:43 +#: inc/classes/admin/settings/class-page.php:1309 +msgid "Trashed Posts" +msgstr "" + +#: inc/classes/admin/Database/class-optimization.php:44 +#: inc/classes/admin/settings/class-page.php:1319 +msgid "Spam Comments" +msgstr "" + +#: inc/classes/admin/Database/class-optimization.php:45 +#: inc/classes/admin/settings/class-page.php:1329 +msgid "Trashed Comments" +msgstr "" + +#: inc/classes/admin/Database/class-optimization.php:46 +#: inc/classes/admin/settings/class-page.php:1339 +msgid "Expired transients" +msgstr "" + +#: inc/classes/admin/Database/class-optimization.php:47 +msgid "Transients" +msgstr "" + +#: inc/classes/admin/Database/class-optimization.php:48 +msgid "Tables" +msgstr "" + +#: inc/classes/admin/class-logs.php:124 +msgid "The debug file could not be deleted." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:212 +#: inc/classes/admin/settings/class-page.php:213 +msgid "Unavailable" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:327 +#: inc/deprecated/deprecated.php:1791 +#: views/settings/page-sections/dashboard.php:72 +msgid "License" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:344 +msgid "API key" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:359 +msgid "Email address" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:388 +msgid "Dashboard" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:389 +msgid "Get help, account info" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:398 +msgid "My Status" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:408 views/settings/page.php:71 +msgid "Rocket Tester" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:409 +msgid "I am part of the WP Rocket Beta Testing Program." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:417 views/settings/page.php:89 +msgid "Rocket Analytics" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:419 +#, php-format +msgid "" +"I agree to share anonymous data with the development team to help improve WP" +" Rocket. %1$sWhat info will we collect?%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:447 +msgid "Cache" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:448 +msgid "Basic cache options" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:455 +msgid "Mobile Cache" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:457 +msgid "Speed up your site for mobile visitors." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:462 +msgid "" +"We detected you use a plugin that requires a separate cache for mobile, and " +"automatically enabled this option for compatibility." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:466 +msgid "User Cache" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:469 +#, php-format +msgid "" +"%1$sUser cache%2$s is great when you have user-specific or restricted " +"content on your website." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:477 +msgid "Cache Lifespan" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:480 +#, php-format +msgid "" +"Cache lifespan is the period of time after which all cache files are " +"removed.
      Enable %1$spreloading%2$s for the cache to be rebuilt " +"automatically after lifespan expiration." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:494 +msgid "Enable caching for logged-in WordPress users" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:502 +msgid "Enable caching for mobile devices" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:517 +msgid "Separate cache files for mobile devices" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:519 +#, php-format +msgid "" +"%1$sMobile cache%2$s works safest with both options enabled. When in doubt, " +"keep both." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:535 +msgid "" +"Specify time after which the global cache is cleared
      (0 = unlimited )" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:537 +#, php-format +msgid "" +"Reduce lifespan to 10 hours or less if you notice issues that seem to appear" +" periodically. %1$sWhy?%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:543 +msgid "Minutes" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:544 +msgid "Hours" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:545 +msgid "Days" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:571 +msgid "File Optimization" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:572 +msgid "Optimize CSS & JS" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:579 +msgid "Basic Settings" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:586 +#: inc/classes/admin/settings/class-page.php:596 +#: inc/classes/admin/settings/class-page.php:606 +#, php-format +msgid "" +"%1$s Minification is currently activated in Autoptimize. If" +" you want to use %2$s’s minification, disable those options in Autoptimize." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:589 +msgid "CSS Files" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:599 +msgid "JavaScript Files" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:619 +msgid "Minifying HTML removes whitespace and comments to reduce the size." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:630 +msgid "Combine Google Fonts files" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:631 +msgid "Combining Google Fonts will reduce the number of HTTP requests." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:639 +msgid "Remove query strings from static resources" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:641 +#, php-format +msgid "" +"Removes the version query string from static files (e.g. style.css?ver=1.0) " +"and encodes it into the filename instead (e.g. style-1.0.css). Can improve " +"your GTMetrix score. %1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:649 +msgid "Minify CSS files" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:650 +msgid "Minify CSS removes whitespace and comments to reduce the file size." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:663 +#: inc/classes/admin/settings/class-page.php:685 +#: inc/classes/admin/settings/class-page.php:755 +#: inc/classes/admin/settings/class-page.php:777 +msgid "This could break things!" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:664 +#: inc/classes/admin/settings/class-page.php:686 +#: inc/classes/admin/settings/class-page.php:756 +#: inc/classes/admin/settings/class-page.php:778 +msgid "" +"If you notice any errors on your website after having activated this " +"setting, just deactivate it again, and your site will be back to normal." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:665 +msgid "Activate minify CSS" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:670 +msgid "Combine CSS files (Enable Minify CSS files to select)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:672 +#, php-format +msgid "" +"Combine CSS merges all your files into 1, reducing HTTP requests. Not " +"recommended if your site uses HTTP/2. %1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:687 +msgid "Activate combine CSS" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:693 +msgid "" +"Specify URLs of CSS files to be excluded from minification and concatenation" +" (one per line)." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:694 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*).css " +"wildcards to exclude all CSS files located at a specific path." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:707 +msgid "Optimize CSS delivery" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:714 +#, php-format +msgctxt "WP Critical CSS compatibility" +msgid "" +"Optimize CSS Delivery is currently handled by the %1$s plugin. If you want " +"to use WP Rocket’s Optimize CSS Delivery option, disable the %1$s plugin." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:716 +#, php-format +msgid "" +"Optimize CSS delivery eliminates render-blocking CSS on your website for " +"faster perceived load time. %1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:727 +msgid "Fallback critical CSS" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:732 +#, php-format +msgid "" +"Provides a fallback if auto-generated critical path CSS is incomplete. " +"%1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:741 +msgid "Minify JavaScript files" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:742 +msgid "" +"Minify JavaScript removes whitespace and comments to reduce the file size." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:757 +msgid "Activate minify JavaScript" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:762 +msgid "" +"Combine JavaScript files (Enable Minify JavaScript files to select)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:764 +#, php-format +msgid "" +"Combine JavaScript files combines your site’s internal, 3rd party and inline" +" JS reducing HTTP requests. Not recommended if your site uses HTTP/2. " +"%1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:779 +msgid "Activate combine JavaScript" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:786 +#, php-format +msgid "" +"Specify patterns of inline JavaScript to be excluded from concatenation (one" +" per line). %1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:803 +msgid "" +"Specify URLs of JavaScript files to be excluded from minification and " +"concatenation (one per line)." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:804 +msgid "" +"Internal: The domain part of the URL will be stripped " +"automatically. Use (.*).js wildcards to exclude all JS files located at a " +"specific path." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:806 +#, php-format +msgid "" +"3rd Party: Use either the full URL path or only the domain " +"name, to exclude external JS. %1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:822 +msgid "Load JavaScript deferred" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:824 +#, php-format +msgid "" +"Load JavaScript deferred eliminates render-blocking JS on your site and can " +"improve load time. %1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:835 +msgid "Safe Mode for jQuery (recommended)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:836 +msgid "" +"Safe mode for jQuery for deferred JS ensures support for inline jQuery " +"references from themes and plugins by loading jQuery at the top of the " +"document as a render-blocking script.
      Deactivating may result in " +"broken functionality, test thoroughly!" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:861 +msgid "Media" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:862 +msgid "LazyLoad, emojis, embeds" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:869 +msgid "LazyLoad" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:872 +#, php-format +msgid "" +"It can improve actual and perceived loading time as images, iframes, and " +"videos will be loaded only as they enter (or about to enter) the viewport " +"and reduces the number of HTTP requests. %1$sMore Info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:879 +#, php-format +msgid "" +"Lazyload is currently activated in Autoptimize. If you want" +" to use %1$s’s lazyload, disable this option in Autoptimize." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:882 +msgid "Emoji 👻" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:884 +msgid "" +"Use default emoji of visitor's browser instead of loading emoji from " +"WordPress.org" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:888 +msgid "Embeds" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:890 +msgid "" +"Prevents others from embedding content from your site, prevents you from " +"embedding content from other (non-whitelisted) sites, and removes JavaScript" +" requests related to WordPress embeds" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:900 +msgid "Enable for images" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:911 +msgctxt "Avada" +msgid "" +"Lazyload for images is currently activated in Avada. If you want to use WP " +"Rocket’s LazyLoad, disable this option in Avada." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:919 +msgid "Enable for iframes and videos" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:934 +msgid "Replace YouTube iframe with preview image" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:935 +msgid "" +"This can significantly improve your loading time if you have a lot of " +"YouTube videos on a page." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:947 +msgid "Disable Emoji" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:948 +msgid "Disable Emoji will reduce the number of external HTTP requests." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:956 +msgid "Disable WordPress embeds" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:978 +#: inc/classes/admin/settings/class-page.php:988 +#: inc/deprecated/deprecated.php:1778 +msgid "Preload" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:979 +msgid "Generate cache files" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:991 +#, php-format +msgid "" +"When you enable preloading WP Rocket will generate the cache starting with " +"the links on your homepage followed by the sitemaps you specify. Preloading " +"is automatically triggered when you add or update content and can also be " +"manually triggered from the admin bar or from the %1$sWP Rocket " +"Dashboard%2$s." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:999 +msgid "Prefetch DNS Requests" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1001 +msgid "" +"DNS prefetching can make external files load faster, especially on mobile " +"networks" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1015 +msgid "Activate Preloading" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1034 +msgid "Activate sitemap-based cache preloading" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1053 +msgid "Sitemaps for preloading" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1057 +msgid "Specify XML sitemap(s) to be used for preloading" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1067 +msgid "URLs to prefetch" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1068 +msgid "" +"Specify external hosts to be prefetched (no http:, one per " +"line)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1091 +msgid "Advanced Rules" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1092 +msgid "Fine-tune cache rules" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1101 +msgid "" +"Sensitive pages like custom login/logout URLs should be excluded from cache." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1104 +msgctxt "plugin name" +msgid "WooCommerce" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1106 +msgctxt "plugin name" +msgid "Easy Digital Downloads" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1108 +msgctxt "plugin name" +msgid "iThemes Exchange" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1110 +msgctxt "plugin name" +msgid "Jigoshop" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1112 +msgctxt "plugin name" +msgid "WP-Shop" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1118 +#, php-format +msgid "" +"
      Cart, checkout and \"my account\" pages set in " +"%1$s%2$s%3$s will be detected and never cached by default." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1139 +msgid "Never Cache Cookies" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1158 +msgid "Cache Query String(s)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1161 +#, php-format +msgid "" +"%1$sCache for query strings%2$s enables you to force caching for specific " +"GET parameters." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1175 +msgid "" +"Specify URLs of pages or posts that should never be cached (one per line)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1176 +#: inc/classes/admin/settings/class-page.php:1204 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*) " +"wildcards to address multiple URLs under a given path." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1185 +msgid "" +"Specify the IDs of cookies that, when set in the visitor's browser, should " +"prevent a page from getting cached (one per line)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1193 +msgid "" +"Specify user agent strings that should never see cached pages (one per line)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1194 +msgid "Use (.*) wildcards to detect parts of UA strings." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1203 +msgid "" +"Specify URLs you always want purged from cache whenever you update any post " +"or page (one per line)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1212 +msgid "Specify query strings for caching (one per line)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1240 +#: inc/deprecated/deprecated.php:1777 +msgid "Database" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1241 +msgid "Optimize, reduce bloat" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1250 +msgid "Post Cleanup" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1252 +msgid "" +"Post revisions and drafts will be permanently deleted. Do not use this " +"option if you need to retain revisions or drafts." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1260 +msgid "Comments Cleanup" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1262 +msgid "Spam and trashed comments will be permanently deleted." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1266 +msgid "Transients Cleanup" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1268 +msgid "" +"Transients are temporary options; they are safe to remove. They will be " +"automatically regenerated as your plugins require them." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1272 +msgid "Database Cleanup" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1274 +msgid "Reduces overhead of database tables" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1278 +msgid "Automatic cleanup" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1291 +#, php-format +msgid "%s revision in your database." +msgid_plural "%s revisions in your database." +msgstr[0] "" + +#: inc/classes/admin/settings/class-page.php:1301 +#, php-format +msgid "%s draft in your database." +msgid_plural "%s drafts in your database." +msgstr[0] "" + +#: inc/classes/admin/settings/class-page.php:1311 +#, php-format +msgid "%s trashed post in your database." +msgid_plural "%s trashed posts in your database." +msgstr[0] "" + +#: inc/classes/admin/settings/class-page.php:1321 +#, php-format +msgid "%s spam comment in your database." +msgid_plural "%s spam comments in your database." +msgstr[0] "" + +#: inc/classes/admin/settings/class-page.php:1331 +#, php-format +msgid "%s trashed comment in your database." +msgid_plural "%s trashed comments in your database." +msgstr[0] "" + +#: inc/classes/admin/settings/class-page.php:1341 +#, php-format +msgid "%s expired transient in your database." +msgid_plural "%s expired transients in your database." +msgstr[0] "" + +#: inc/classes/admin/settings/class-page.php:1349 +msgid "All transients" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1351 +#, php-format +msgid "%s transient in your database." +msgid_plural "%s transients in your database." +msgstr[0] "" + +#: inc/classes/admin/settings/class-page.php:1359 +msgid "Optimize Tables" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1361 +#, php-format +msgid "%s table to optimize in your database." +msgid_plural "%s tables to optimize in your database." +msgstr[0] "" + +#: inc/classes/admin/settings/class-page.php:1372 +msgid "Schedule Automatic Cleanup" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1384 +msgid "Frequency" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1392 +msgid "Daily" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1393 +msgid "Weekly" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1394 +msgid "Monthly" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1414 +msgid "Integrate your CDN" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1426 +msgid "" +"All URLs of static files (CSS, JS, images) will be rewritten to the CNAME(s)" +" you provide." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1428 +#, php-format +msgid "" +"Not required for services like Cloudflare and Sucuri. Please see our " +"available %1$sAdd-ons%2$s." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1469 +#, php-format +msgid "" +"%1$s%2$s Add-on%3$s is currently enabled. Configuration of the CDN settings " +"is not required for %2$s to work on your site." +msgid_plural "" +"%1$s%2$s Add-ons%3$s are currently enabled. Configuration of the CDN " +"settings is not required for %2$s to work on your site." +msgstr[0] "" + +#: inc/classes/admin/settings/class-page.php:1484 +msgid "Enable Content Delivery Network" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1493 +msgid "CDN CNAME(s)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1494 +msgid "Specify the CNAME(s) below" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1501 +msgid "" +"Specify URL(s) of files that should not get served via CDN (one per line)." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1502 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*) " +"wildcards to exclude all files of a given file type located at a specific " +"path." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1525 +#: inc/classes/admin/settings/class-page.php:1533 +msgid "Heartbeat" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1526 +msgid "Control WordPress Heartbeat API" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1534 +msgid "" +"Reducing or disabling the Heartbeat API’s activity can help save some of " +"your server’s resources." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1543 +msgid "Reduce or disable Heartbeat activity" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1544 +msgid "" +"Reducing activity will change Heartbeat frequency from one hit each minute " +"to one hit every 2 minutes." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1544 +msgid "" +"Disabling Heartbeat entirely may break plugins and themes using this API." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1558 +msgid "Do not limit" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1559 +msgid "Reduce activity" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1560 +msgid "Disable" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1568 +msgid "Control Heartbeat" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1577 +msgid "Behavior in backend" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1584 +msgid "Behavior in post editor" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1590 +msgid "Behavior in frontend" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1609 +msgid "Add-ons" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1610 +msgid "Add more features" +msgstr "Tambah lagi ciri-ciri" + +#: inc/classes/admin/settings/class-page.php:1617 +msgid "One-click Rocket Add-ons" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1618 +msgid "" +"One-Click Add-ons are features extending available options without " +"configuration needed. Switch the option \"on\" to enable from this screen." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1628 +msgid "Rocket Add-ons" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1629 +msgid "Rocket Add-ons are complementary features extending available options." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1642 +msgid "Google Tracking" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1648 +msgid "Improve browser caching for Google Analytics" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1650 +#, php-format +msgid "" +"WP Rocket will host these Google scripts locally on your server to help " +"satisfy the PageSpeed recommendation for Leverage browser " +"caching.
      %1$sLearn more%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1665 +msgid "Facebook Pixel" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1671 +msgid "Improve browser caching for Facebook Pixel" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1673 +#, php-format +msgid "" +"WP Rocket will host these Facebook Pixels locally on your server to help " +"satisfy the PageSpeed recommendation for Leverage browser " +"caching.
      %1$sLearn more%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1706 +msgid "Varnish" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1712 +msgid "If Varnish runs on your server, you must activate this add-on." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1714 +#, php-format +msgid "" +"Varnish cache will be purged each time WP Rocket clears its cache to ensure " +"content is always up-to-date.
      %1$sLearn more%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1729 +#: inc/classes/admin/settings/class-page.php:1789 +msgid "Cloudflare" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1735 +msgid "Integrate your Cloudflare account with this add-on." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1736 +msgid "" +"Provide your account email, global API key, and domain to use options such " +"as clearing the Cloudflare cache and enabling optimal settings with WP " +"Rocket." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1748 +msgid "Clear the Sucuri cache when WP Rocket’s cache is cleared." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1751 +msgid "" +"Provide your API key to clear the Sucuri cache when WP Rocket’s cache is " +"cleared." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1759 +#: inc/classes/admin/settings/class-page.php:1907 +msgid "Sucuri" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1765 +msgid "Synchronize Sucuri cache with this add-on." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1805 +msgid "Cloudflare credentials" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1814 +msgid "Cloudflare settings" +msgstr "Tetapan Cloudflare" + +#: inc/classes/admin/settings/class-page.php:1828 +msgctxt "Cloudflare" +msgid "Global API key:" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1829 +msgid "" +"https://support.cloudflare.com/hc/en-us/articles/200167836-Where-do-I-find-" +"my-Cloudflare-API-key-" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1829 +msgctxt "Cloudflare" +msgid "Find your API key" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1841 +msgctxt "Cloudflare" +msgid "Account email" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1850 +msgctxt "Cloudflare" +msgid "Zone ID" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1860 +msgid "Development mode" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1862 +#, php-format +msgid "" +"Temporarily activate development mode on your website. This setting will " +"automatically turn off after 3 hours. %1$sLearn more%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1870 +msgid "Optimal settings" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1871 +msgid "" +"Automatically enhances your Cloudflare configuration for speed, performance " +"grade and compatibility." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1879 +msgid "Relative protocol" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1880 +msgid "" +"Should only be used with Cloudflare's flexible SSL feature. URLs of static " +"files (CSS, JS, images) will be rewritten to use // instead of http:// or " +"https://." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1920 +msgid "Sucuri credentials" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1933 +msgctxt "Sucuri" +msgid "" +"Firewall API key (for plugin), must be in format {32 characters}/{32 " +"characters}:" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1934 +msgctxt "Sucuri" +msgid "Find your API key" +msgstr "" + +#: inc/classes/admin/settings/class-render.php:486 +#: inc/deprecated/deprecated.php:1296 +msgid "Upload file and import settings" +msgstr "" + +#: inc/classes/admin/settings/class-settings.php:385 +msgid "" +"Sucuri Add-on: The API key for the Sucuri firewall must be in format " +"{32 characters}/{32 characters}." +msgstr "" + +#: inc/classes/admin/settings/class-settings.php:462 +#: inc/deprecated/deprecated.php:1247 +msgid "Settings saved." +msgstr "" + +#: inc/classes/class-wp-rocket-requirements-check.php:148 +#, php-format +msgid "To function properly, %1$s %2$s requires at least:" +msgstr "" + +#: inc/classes/class-wp-rocket-requirements-check.php:152 +#, php-format +msgid "" +"PHP %1$s. To use this WP Rocket version, please ask your web host how to " +"upgrade your server to PHP %1$s or higher." +msgstr "" + +#: inc/classes/class-wp-rocket-requirements-check.php:157 +#, php-format +msgid "" +"WordPress %1$s. To use this WP Rocket version, please upgrade WordPress to " +"version %1$s or higher." +msgstr "" + +#: inc/classes/class-wp-rocket-requirements-check.php:160 +msgid "" +"If you are not able to upgrade, you can rollback to the previous version by " +"using the button below." +msgstr "" + +#: inc/classes/class-wp-rocket-requirements-check.php:162 +#: inc/deprecated/deprecated.php:1949 +#, php-format +msgid "Re-install version %s" +msgstr "" + +#: inc/classes/logger/class-logger.php:253 +#: inc/classes/logger/class-logger.php:285 +msgid "The log file does not exist." +msgstr "" + +#: inc/classes/logger/class-logger.php:259 +#: inc/classes/logger/class-logger.php:291 +msgid "The log file could not be read." +msgstr "" + +#: inc/classes/logger/class-logger.php:278 +msgid "The logs are not saved into a file." +msgstr "" + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:88 +#: inc/classes/optimization/CSS/class-critical-css-generation.php:99 +#: inc/classes/optimization/CSS/class-critical-css-generation.php:110 +#: inc/classes/optimization/CSS/class-critical-css-generation.php:120 +#: inc/classes/optimization/CSS/class-critical-css-generation.php:142 +#, php-format +msgid "Critical CSS for %1$s not generated. Error: %2$s" +msgstr "" + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:99 +msgid "The API returned an invalid response code." +msgstr "" + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:110 +msgid "The API returned an empty response." +msgstr "" + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:145 +#, php-format +msgid "The critical CSS content could not be saved as a file in %s." +msgstr "" + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:154 +#, php-format +msgid "Critical CSS for %s generated." +msgstr "" + +#: inc/classes/preload/class-homepage.php:83 +#, php-format +msgid "" +"Preload encountered an error. Could not gather links on %1$s because of the " +"following error: %2$s. %3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-homepage.php:96 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: %2$s. Security measures could be preventing access. " +"%3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-homepage.php:102 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: 404. Please make sure your homepage is accessible in your " +"browser. %2$sLearn more%3$s." +msgstr "" + +#: inc/classes/preload/class-homepage.php:108 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: 500. Please check with your web host about server access. " +"%2$sLearn more%3$s." +msgstr "" + +#: inc/classes/preload/class-homepage.php:114 +#, php-format +msgid "" +"Preload encountered an error. Could not gather links on %1$s because it " +"returned the following response code: %2$s. %3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:138 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not gather links on %1$s because" +" of the following error: %2$s. %3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:153 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: %2$s. Security measures could be preventing access." +" %3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:158 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: 404. Please make sure you entered the correct " +"sitemap URL and it is accessible in your browser. %2$sLearn more%3$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:163 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: 500. Please check with your web host about server " +"access. %2$sLearn more%3$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:168 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not gather links on %1$s because" +" it returned the following response code: %2$s. %3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:184 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not collect links from %1$s " +"because the file is empty. %2$sLearn more%3$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:205 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not collect links from %1$s " +"because of an error during the XML sitemap parsing. %2$sLearn more%3$s." +msgstr "" + +#: inc/classes/subscriber/Optimization/class-critical-css-subscriber.php:138 +#, php-format +msgid "" +"Critical CSS generation is currently running: %1$d of %2$d page types " +"completed. (Refresh this page to view progress)" +msgstr "" + +#: inc/classes/subscriber/Optimization/class-critical-css-subscriber.php:189 +#, php-format +msgid "Critical CSS generation finished for %1$d of %2$d page types." +msgstr "" + +#: inc/classes/subscriber/Optimization/class-critical-css-subscriber.php:203 +msgid "Critical CSS generation encountered one or more errors." +msgstr "" + +#: inc/classes/subscriber/Optimization/class-critical-css-subscriber.php:203 +msgid "Learn more." +msgstr "" + +#: inc/classes/subscriber/Tools/class-cache-dir-size-check-subscriber.php:51 +#: inc/classes/subscriber/class-facebook-tracking-cache-busting-subscriber.php:97 +#: inc/classes/subscriber/class-google-tracking-cache-busting-subscriber.php:154 +#: inc/common/cron.php:33 +msgid "weekly" +msgstr "" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:148 +msgid "Database optimization process is running" +msgstr "" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:179 +msgid "" +"Database optimization process is complete. Everything was already optimized!" +msgstr "" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:182 +msgid "" +"Database optimization process is complete. List of optimized items below:" +msgstr "" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:190 +#, php-format +msgid "%1$d %2$s optimized." +msgstr "" + +#: inc/classes/subscriber/admin/Settings/class-page-subscriber.php:137 +#: inc/deprecated/deprecated.php:1788 +#: views/settings/page-sections/tools.php:33 +msgid "Tools" +msgstr "" + +#: inc/classes/subscriber/admin/Settings/class-page-subscriber.php:138 +msgid "Import, Export, Rollback" +msgstr "" + +#: inc/classes/subscriber/admin/Settings/class-page-subscriber.php:160 +#: views/settings/page-sections/imagify.php:13 +msgid "Image Optimization" +msgstr "" + +#: inc/classes/subscriber/admin/Settings/class-page-subscriber.php:161 +msgid "Compress your images" +msgstr "" + +#: inc/classes/subscriber/preload/class-preload-subscriber.php:212 +#, php-format +msgid "" +"Preload: WP Rocket has started preloading your website. Go to the %1$sWP " +"Rocket settings%2$s page to track progress." +msgstr "" + +#: inc/classes/subscriber/preload/class-preload-subscriber.php:246 +#, php-format +msgid "" +"Preload: %1$s uncached page has now been preloaded. (refresh to see " +"progress)" +msgid_plural "" +"Preload: %1$s uncached pages have now been preloaded. (refresh to see " +"progress)" +msgstr[0] "" + +#: inc/classes/subscriber/preload/class-preload-subscriber.php:255 +msgid "The following error happened during gathering of the URLs to preload:" +msgid_plural "" +"The following errors happened during gathering of the URLs to preload:" +msgstr[0] "" + +#: inc/classes/subscriber/preload/class-preload-subscriber.php:308 +#, php-format +msgid "Preload complete: %d pages have been cached." +msgstr "" + +#: inc/classes/subscriber/preload/class-sitemap-preload-subscriber.php:117 +#, php-format +msgid "" +"%1$sSimpleXML PHP extension%2$s is not enabled on your server. Please " +"contact your host to enable it before running sitemap-based cache " +"preloading." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:72 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"Please deactivate the following %s option which conflicts with WP Rocket " +"features:" +msgid_plural "" +"Please deactivate the following %s options which conflict with WP Rocket " +"features:" +msgstr[0] "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:145 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sdisable emoji%3$s conflicts with WP Rockets %2$sdisable emoji%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:167 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sremove query strings%3$s conflicts with WP Rocket %2$sremove query " +"strings%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:203 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sGZIP compression%3$s conflicts with WP Rocket %2$sGZIP " +"compression%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:239 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sbrowser caching%3$s conflicts with WP Rocket %2$sbrowser " +"caching%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:271 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$spage caching%3$s conflicts with WP Rocket %2$spage caching%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:305 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sasset optimization%3$s conflicts with WP Rocket %2$sfile " +"optimization%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:123 +#, php-format +msgid "Sucuri cache purge error: %s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:128 +msgid "" +"The Sucuri cache is being cleared. Note that it may take up to two minutes " +"for it to be fully flushed." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:242 +msgid "Sucuri firewall API key was not found." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:251 +msgid "Sucuri firewall API key is invalid." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:303 +msgid "Error when contacting Sucuri firewall API." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:313 +#, php-format +msgid "Error when contacting Sucuri firewall API. Error message was: %s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:324 +msgid "Could not get a response from the Sucuri firewall API." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:335 +msgid "Got an invalid response from the Sucuri firewall API." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:345 +msgid "The Sucuri firewall API returned an unknown error." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:348 +#, php-format +msgid "The Sucuri firewall API returned the following error: %s" +msgid_plural "The Sucuri firewall API returned the following errors: %s" +msgstr[0] "" + +#: inc/classes/traits/trait-updater-api-tools.php:53 +#: inc/deprecated/3.3.php:760 inc/deprecated/3.3.php:769 +#, php-format +msgid "" +"An unexpected error occurred. Something may be wrong with WP-Rocket.me or " +"this server’s configuration. If you continue to have problems, contact support." +msgstr "" + +#: inc/common/admin-bar.php:106 inc/common/admin-bar.php:260 +#: inc/functions/i18n.php:39 inc/functions/i18n.php:48 +msgid "All languages" +msgstr "" + +#: inc/common/admin-bar.php:133 +msgid "Clear this post" +msgstr "" + +#: inc/common/admin-bar.php:147 +msgid "Purge this URL" +msgstr "" + +#: inc/common/admin-bar.php:163 +msgid "Purge OPcache" +msgstr "" + +#: inc/common/admin-bar.php:180 +msgid "Regenerate Critical Path CSS" +msgstr "" + +#: inc/common/admin-bar.php:196 +msgid "Clear Cloudflare cache" +msgstr "" + +#: inc/common/admin-bar.php:217 inc/common/admin-bar.php:272 +#: views/settings/page-sections/dashboard.php:135 +msgid "Preload cache" +msgstr "" + +#: inc/common/admin-bar.php:287 views/settings/partials/documentation.php:13 +msgid "Documentation" +msgstr "" + +#: inc/common/cron.php:24 +#, php-format +msgid "%s clear" +msgstr "" + +#: inc/common/cron.php:39 +msgid "monthly" +msgstr "" + +#: inc/common/purge.php:456 +#, php-format +msgid "Cloudflare cache purge error: %s" +msgstr "" + +#: inc/common/purge.php:461 +msgid "Cloudflare cache successfully purged" +msgstr "" + +#: inc/deprecated/3.2.php:51 views/settings/page-sections/imagify.php:35 +msgid "Activate Imagify" +msgstr "" + +#: inc/deprecated/3.2.php:51 +msgid "Install Imagify for Free" +msgstr "" + +#: inc/deprecated/3.2.php:66 +msgid "" +"Speed up your website and boost your SEO by reducing image file sizes " +"without losing quality with Imagify." +msgstr "" + +#: inc/deprecated/3.2.php:71 +msgid "More details" +msgstr "" + +#: inc/deprecated/3.2.php:227 +#, php-format +msgid "Sitemap preload: %d pages have been cached." +msgstr "" + +#: inc/deprecated/3.2.php:260 +#, php-format +msgid "" +"Sitemap preload: %d uncached pages have now been preloaded. (refresh to see " +"progress)" +msgstr "" + +#: inc/deprecated/deprecated.php:242 +msgid "JS files with Deferred Loading JavaScript" +msgstr "" + +#: inc/deprecated/deprecated.php:295 +msgid "Add URL" +msgstr "" + +#: inc/deprecated/deprecated.php:1279 views/settings/fields/import-form.php:22 +msgid "" +"Before you can upload your import file, you will need to fix the following " +"error:" +msgstr "" + +#: inc/deprecated/deprecated.php:1290 views/settings/fields/import-form.php:35 +#, php-format +msgid "Choose a file from your computer (maximum size: %s)" +msgstr "" + +#: inc/deprecated/deprecated.php:1387 +msgid "Your Cloudflare credentials are valid." +msgstr "" + +#: inc/deprecated/deprecated.php:1391 +msgid "Your Cloudflare credentials are invalid!" +msgstr "" + +#: inc/deprecated/deprecated.php:1455 +msgid "Save and optimize" +msgstr "" + +#: inc/deprecated/deprecated.php:1455 +#: views/settings/page-sections/database.php:27 +msgid "Optimize" +msgstr "" + +#: inc/deprecated/deprecated.php:1466 inc/deprecated/deprecated.php:1668 +msgctxt "screen-reader-text" +msgid "Note:" +msgstr "" + +#: inc/deprecated/deprecated.php:1472 +msgctxt "screen-reader-text" +msgid "Performance tip:" +msgstr "" + +#: inc/deprecated/deprecated.php:1478 +msgctxt "screen-reader-text" +msgid "Third-party feature detected:" +msgstr "" + +#: inc/deprecated/deprecated.php:1490 inc/deprecated/deprecated.php:1674 +msgctxt "screen-reader-text" +msgid "Warning:" +msgstr "" + +#: inc/deprecated/deprecated.php:1503 +msgctxt "button text" +msgid "Download settings" +msgstr "" + +#: inc/deprecated/deprecated.php:1533 +msgid "Replace site's hostname with:" +msgstr "" + +#: inc/deprecated/deprecated.php:1552 inc/deprecated/deprecated.php:1589 +#: inc/deprecated/deprecated.php:1617 views/settings/fields/cnames.php:32 +#: views/settings/fields/cnames.php:63 views/settings/fields/cnames.php:93 +msgid "reserved for" +msgstr "" + +#: inc/deprecated/deprecated.php:1554 inc/deprecated/deprecated.php:1591 +#: inc/deprecated/deprecated.php:1619 views/settings/fields/cnames.php:35 +#: views/settings/fields/cnames.php:66 views/settings/fields/cnames.php:96 +msgid "All files" +msgstr "" + +#: inc/deprecated/deprecated.php:1566 inc/deprecated/deprecated.php:1596 +#: inc/deprecated/deprecated.php:1624 views/settings/fields/cnames.php:47 +#: views/settings/fields/cnames.php:78 views/settings/fields/cnames.php:108 +msgid "Images" +msgstr "" + +#: inc/deprecated/deprecated.php:1637 views/settings/fields/cnames.php:119 +msgid "Add CNAME" +msgstr "" + +#: inc/deprecated/deprecated.php:1708 +msgid "Watch the video" +msgstr "" + +#: inc/deprecated/deprecated.php:1773 +msgid "Basic" +msgstr "" + +#: inc/deprecated/deprecated.php:1774 +msgid "Static Files" +msgstr "" + +#: inc/deprecated/deprecated.php:1776 +msgid "Advanced" +msgstr "" + +#: inc/deprecated/deprecated.php:1946 +#, php-format +msgid "" +"%1$s %2$s requires at least PHP %3$s to function properly. To use this " +"version, please ask your web host how to upgrade your server to PHP %3$s or " +"higher. If you are not able to upgrade, you can rollback to the previous " +"version by using the button below." +msgstr "" + +#: inc/functions/admin.php:23 +msgid "" +"There seems to be an issue validating your license. Please see the error " +"message below." +msgid_plural "" +"There seems to be an issue validating your license. You can see the error " +"messages below." +msgstr[0] "" + +#: inc/functions/admin.php:361 +msgid "Server type:" +msgstr "" + +#: inc/functions/admin.php:370 +msgid "PHP version number:" +msgstr "" + +#: inc/functions/admin.php:379 +msgid "WordPress version number:" +msgstr "" + +#: inc/functions/admin.php:388 +msgid "WordPress multisite:" +msgstr "" + +#: inc/functions/admin.php:397 +msgid "Current theme:" +msgstr "" + +#: inc/functions/admin.php:406 +msgid "Current site language:" +msgstr "" + +#: inc/functions/admin.php:415 +msgid "Active plugins:" +msgstr "" + +#: inc/functions/admin.php:418 +msgid "Plugin names of all active plugins" +msgstr "" + +#: inc/functions/admin.php:424 +msgid "Anonymized WP Rocket settings:" +msgstr "" + +#: inc/functions/admin.php:427 +msgid "Which WP Rocket settings are active" +msgstr "" + +#: inc/functions/cloudflare.php:14 +msgid "" +"Curl functions are disabled, they are required for the Cloudflare Add-on to " +"work correctly." +msgstr "" + +#: inc/functions/cloudflare.php:21 +msgid "Cloudflare Email and API key are not set" +msgstr "" + +#: inc/functions/cloudflare.php:52 +#, php-format +msgid "Missing Cloudflare zone ID. %s could not fix this automatically." +msgstr "" + +#: inc/functions/cloudflare.php:58 +#, php-format +msgid "Read the %1$sdocumentation%2$s for further guidance." +msgstr "" + +#: inc/functions/cloudflare.php:60 +msgid "" +"https://docs.wp-rocket.me/article/18-using-wp-rocket-with-" +"cloudflare/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" + +#: inc/functions/cloudflare.php:100 +msgid "Connection to Cloudflare failed" +msgstr "" + +#: inc/functions/cloudflare.php:122 +msgid "Choose a domain from the list" +msgstr "" + +#: inc/functions/cloudflare.php:135 +msgid "No domain available in your Cloudflare account" +msgstr "" + +#: inc/functions/options.php:580 inc/functions/options.php:619 +msgid "" +"License validation failed. Our server could not resolve the request from " +"your website." +msgstr "" + +#: inc/functions/options.php:580 inc/functions/options.php:619 +#, php-format +msgid "" +"Try clicking %1$sSave Changes%2$s below. If the error persists, follow " +"%3$sthis guide%4$s." +msgstr "" + +#: inc/functions/options.php:596 +msgid "" +"License validation failed. You may be using a nulled version of the plugin. " +"Please do the following:" +msgstr "" + +#: inc/functions/options.php:596 inc/functions/options.php:638 +#, php-format +msgid "Login to your WP Rocket %1$saccount%2$s" +msgstr "" + +#: inc/functions/options.php:596 inc/functions/options.php:638 +msgid "Download the zip file" +msgstr "" + +#: inc/functions/options.php:596 inc/functions/options.php:638 +msgid "Reinstall" +msgstr "" + +#: inc/functions/options.php:596 +#, php-format +msgid "" +"If you do not have a WP Rocket account, please %1$spurchase a license%2$s." +msgstr "" + +#: inc/functions/options.php:604 +msgid "" +"License validation failed. This user account does not exist in our database." +msgstr "" + +#: inc/functions/options.php:604 +msgid "To resolve, please contact support." +msgstr "" + +#: inc/functions/options.php:612 +msgid "License validation failed. This user account is blacklisted." +msgstr "" + +#: inc/functions/options.php:612 +#, php-format +msgid "Please see %1$sthis guide%2$s for more info." +msgstr "" + +#: inc/functions/options.php:632 +msgid "Your license is not valid." +msgstr "Lesen anda tidak sah." + +#: inc/functions/options.php:632 +#, php-format +msgid "Make sure you have an active %1$sWP Rocket license%2$s." +msgstr "Pastikan anda memiliki aktif %1$s lesen WP Rocket %2$s." + +#: inc/functions/options.php:634 +msgid "You have added as many sites as your current license allows." +msgstr "" +"Anda telah menambah banyak tapak seperti yang dibenarkan oleh lesen semasa " +"anda." + +#: inc/functions/options.php:634 +#, php-format +msgid "" +"Upgrade your %1$saccount%2$s or %3$stransfer your license%2$s to this " +"domain." +msgstr "" +"Naik taraf %1$sakaun%2$s atau %3$smemindahkan lesen anda %2$s kepada domain " +"ini." + +#: inc/functions/options.php:636 +msgid "This website is not allowed." +msgstr "Laman web ini tidak dibenarkan." + +#: inc/functions/options.php:636 +#, php-format +msgid "Please %1$scontact support%2$s." +msgstr "Sila %1$s hubungi sokongan %2$s." + +#: inc/functions/options.php:638 +msgid "This license key is not recognized." +msgstr "Kunci lesen ini tidak diiktiraf." + +#: inc/functions/options.php:638 +#, php-format +msgid "If the issue persists, please %1$scontact support%2$s." +msgstr "" + +#: inc/functions/options.php:644 +#, php-format +msgid "License validation failed: %s" +msgstr "" + +#: inc/vendors/classes/class-imagify-partner.php:531 +msgid "Plugin installed successfully." +msgstr "" + +#: inc/vendors/classes/class-imagify-partner.php:532 +msgid "Sorry, you are not allowed to install plugins on this site." +msgstr "" + +#: inc/vendors/classes/class-imagify-partner.php:533 +msgid "Sorry, you are not allowed to do that." +msgstr "" + +#: inc/vendors/classes/class-imagify-partner.php:534 +msgid "Plugin install failed." +msgstr "" + +#: inc/vendors/classes/class-imagify-partner.php:535 +msgid "Go back" +msgstr "" + +#: views/deactivation-intent/form.php:20 +msgid "Return" +msgstr "" + +#: views/deactivation-intent/form.php:21 +msgid "WP Rocket feedback" +msgstr "" + +#: views/deactivation-intent/form.php:23 +msgid "Close" +msgstr "" + +#: views/deactivation-intent/form.php:27 +msgid "May we have a little info about why you are deactivating?" +msgstr "" + +#: views/deactivation-intent/form.php:31 +msgid "" +"It is a temporary deactivation. I am just debugging an " +"issue." +msgstr "" + +#: views/deactivation-intent/form.php:35 +msgid "The plugin broke my layout or some functionality." +msgstr "" + +#: views/deactivation-intent/form.php:39 +msgid "My PageSpeed or GTMetrix score did not improve." +msgstr "" + +#: views/deactivation-intent/form.php:43 +msgid "I did not notice a difference in loading time." +msgstr "" + +#: views/deactivation-intent/form.php:47 +msgid "The plugin is too complicated to configure." +msgstr "" + +#: views/deactivation-intent/form.php:51 +msgid "My host already has its own caching system." +msgstr "" + +#: views/deactivation-intent/form.php:53 +msgid "What is the name of your web host?" +msgstr "" + +#: views/deactivation-intent/form.php:58 +msgid "Other" +msgstr "" + +#: views/deactivation-intent/form.php:60 +msgid "" +"Let us know why you are deactivating WP Rocket so we can improve the plugin" +msgstr "" + +#: views/deactivation-intent/form.php:68 +msgid "The plugin broke my layout or some functionality" +msgstr "" + +#: views/deactivation-intent/form.php:69 +msgid "" +"This type of issue can usually be fixed by deactivating some options in WP " +"Rocket." +msgstr "" + +#: views/deactivation-intent/form.php:70 +msgid "" +"Click \"Apply Safe Mode\" to quickly disable LazyLoad, File Optimization, " +"Embeds and CDN options. Then check your site to see if the issue has " +"resolved." +msgstr "" + +#: views/deactivation-intent/form.php:72 +msgid "Apply safe mode" +msgstr "" + +#: views/deactivation-intent/form.php:75 +msgid "Safe mode applied." +msgstr "" + +#: views/deactivation-intent/form.php:76 +msgid "Review your site in a private/logged out browser window." +msgstr "" + +#: views/deactivation-intent/form.php:78 +msgid "" +"Is the issue fixed? Now you can reactivate options one at a time to " +"determine which one caused the problem. More info" +msgstr "" + +#: views/deactivation-intent/form.php:81 +msgid "My PageSpeed or GT Metrix score did not improve" +msgstr "" + +#: views/deactivation-intent/form.php:82 +msgid "" +"WP Rocket makes your site faster. The PageSpeed grade or GTMetrix score are " +"not indicators of speed. Neither your real visitors, nor Google will ever " +"see your website’s “grade”. Speed is the only metric that matters for SEO " +"and conversions." +msgstr "" + +#: views/deactivation-intent/form.php:83 +msgid "Yoast, the expert on all things related to SEO for WordPress states:" +msgstr "" + +#: views/deactivation-intent/form.php:84 +msgid "" +"[Google] just looks at how fast your website loads for users, so you don’t " +"have to obsess over that specific score. You have to make sure your website " +"is as fast as you can get it." +msgstr "" + +#: views/deactivation-intent/form.php:87 +msgid "" +"How to measure the load time of your site:
      https" +"://wp-rocket.me/blog/correctly-measure-websites-page-load-time/" +msgstr "" + +#: views/deactivation-intent/form.php:88 +msgid "" +"Why you should not be chasing a PageSpeed score:
      https://wp-rocket.me/blog/the-truth-about-google-" +"pagespeed-insights/" +msgstr "" + +#: views/deactivation-intent/form.php:91 +msgid "I did not notice a difference in loading time" +msgstr "" + +#: views/deactivation-intent/form.php:92 +msgid "" +"Make sure you look at your site while logged out to see the fast, cached " +"pages!" +msgstr "" + +#: views/deactivation-intent/form.php:93 +msgid "" +"The best way to see the improvement WP Rocket provides is to perform speed " +"tests. Follow this guide to correctly measure the load time of your " +"website:
      https://wp-rocket.me/blog/correctly-measure-websites-page-" +"load-time/" +msgstr "" + +#: views/deactivation-intent/form.php:96 +msgid "The plugin is too complicated to configure" +msgstr "" + +#: views/deactivation-intent/form.php:97 +msgid "We are sorry to hear you are finding it difficult to use WP Rocket." +msgstr "" + +#: views/deactivation-intent/form.php:98 +#, php-format +msgid "" +"WP Rocket is the only caching plugin that provides 80% of best practices in " +"speed optimization, by default. That means you do not have to do anything " +"besides activate WP Rocket and your site will already be faster!" +msgstr "" + +#: views/deactivation-intent/form.php:99 +msgid "" +"The additional options are not required for a fast site, they are for fine-" +"tuning." +msgstr "" + +#: views/deactivation-intent/form.php:100 +msgid "" +"To see the benefit WP Rocket is already providing, measure the speed of your" +" site using a tool like Pingdom:
      https" +"://wp-rocket.me/blog/correctly-measure-websites-page-load-time/" +msgstr "" + +#: views/deactivation-intent/form.php:105 +msgid "Send & Deactivate" +msgstr "" + +#: views/deactivation-intent/form.php:106 +msgid "Cancel" +msgstr "" + +#: views/deactivation-intent/form.php:108 +msgid "Skip & Deactivate" +msgstr "" + +#: views/settings/fields/cache-lifespan.php:26 +msgid "Clear cache after" +msgstr "" + +#: views/settings/fields/cnames.php:49 views/settings/fields/cnames.php:80 +#: views/settings/fields/cnames.php:110 +msgid "CSS & JavaScript" +msgstr "" + +#: views/settings/fields/cnames.php:50 views/settings/fields/cnames.php:81 +#: views/settings/fields/cnames.php:111 +msgid "JavaScript" +msgstr "" + +#: views/settings/fields/cnames.php:51 views/settings/fields/cnames.php:82 +#: views/settings/fields/cnames.php:112 +msgid "CSS" +msgstr "" + +#: views/settings/fields/import-form.php:29 +msgid "Import settings" +msgstr "" + +#: views/settings/fields/one-click-addon.php:39 +#: views/settings/fields/rocket-addon.php:31 +#: views/settings/fields/sliding-checkbox.php:24 views/settings/page.php:54 +msgctxt "Active state of checkbox" +msgid "On" +msgstr "" + +#: views/settings/fields/one-click-addon.php:40 +#: views/settings/fields/rocket-addon.php:32 +#: views/settings/fields/sliding-checkbox.php:25 views/settings/page.php:55 +msgctxt "Inactive state of checkbox" +msgid "Off" +msgstr "" + +#: views/settings/fields/one-click-addon.php:41 +#: views/settings/fields/rocket-addon.php:33 +msgid "Add-on status" +msgstr "" + +#: views/settings/fields/rocket-addon.php:56 +msgid "Modify options" +msgstr "" + +#: views/settings/page-sections/cloudflare.php:26 +msgid "Cloudflare Cache" +msgstr "" + +#: views/settings/page-sections/cloudflare.php:33 +#: views/settings/page-sections/sucuri.php:34 +#, php-format +msgid "Purges cached resources for your website. %s" +msgstr "" + +#: views/settings/page-sections/cloudflare.php:34 +msgid "https://support.cloudflare.com/hc/en-us/articles/200169246" +msgstr "" + +#: views/settings/page-sections/cloudflare.php:34 +#: views/settings/page-sections/sucuri.php:35 +msgid "Learn more" +msgstr "" + +#: views/settings/page-sections/cloudflare.php:40 +msgid "Clear all Cloudflare cache files" +msgstr "" + +#: views/settings/page-sections/dashboard.php:37 +msgid "Congratulations!" +msgstr "" + +#: views/settings/page-sections/dashboard.php:39 +msgid "WP Rocket is now activated and already working for you." +msgstr "" + +#: views/settings/page-sections/dashboard.php:41 +msgid "Your website should be loading faster now!" +msgstr "" + +#: views/settings/page-sections/dashboard.php:43 +#, php-format +msgid "" +"To guarantee fast websites, WP Rocket applies 80% of web performance best " +"practices." +msgstr "" + +#: views/settings/page-sections/dashboard.php:43 +msgid "" +"We also enable options that provide immediate benefits to your website." +msgstr "" + +#: views/settings/page-sections/dashboard.php:44 +msgid "Continue to the options to further optimize your site!" +msgstr "" + +#: views/settings/page-sections/dashboard.php:54 +msgid "My Account" +msgstr "" + +#: views/settings/page-sections/dashboard.php:60 +msgid "Refresh info" +msgstr "" + +#: views/settings/page-sections/dashboard.php:74 +msgid "Expiration Date" +msgstr "" + +#: views/settings/page-sections/dashboard.php:83 +msgid "View my account" +msgstr "" + +#: views/settings/page-sections/dashboard.php:103 +msgid "Quick Actions" +msgstr "" + +#: views/settings/page-sections/dashboard.php:109 +msgid "Remove all cached files" +msgstr "" + +#: views/settings/page-sections/dashboard.php:129 +msgid "Start cache preloading" +msgstr "" + +#: views/settings/page-sections/dashboard.php:147 +msgid "Purge OPCache content" +msgstr "" + +#: views/settings/page-sections/dashboard.php:153 +msgid "Purge OPCache" +msgstr "" + +#: views/settings/page-sections/dashboard.php:164 +#: views/settings/page-sections/dashboard.php:170 +msgid "Regenerate Critical CSS" +msgstr "" + +#: views/settings/page-sections/dashboard.php:186 +msgid "Frequently Asked Questions" +msgstr "" + +#: views/settings/page-sections/dashboard.php:199 +msgid "Still cannot find a solution?" +msgstr "" + +#: views/settings/page-sections/dashboard.php:200 +msgid "" +"Submit a ticket and get help from our friendly and knowledgeable Rocketeers." +msgstr "" + +#: views/settings/page-sections/dashboard.php:208 +msgid "Ask support" +msgstr "" + +#: views/settings/page-sections/database.php:24 +msgid "Backup your database before you run a cleanup!" +msgstr "" + +#: views/settings/page-sections/database.php:25 +msgid "" +"Once a database optimization has been performed, there is no way to undo it." +msgstr "" + +#: views/settings/page-sections/imagify.php:20 +#, php-format +msgid "" +"%1$sWP ROCKET%2$s created %3$sIMAGIFY%4$s %1$sfor best-in-class image " +"optimization.%2$s" +msgstr "" + +#: views/settings/page-sections/imagify.php:23 +msgid "" +"Compress image to make your website faster, all while maintaining image " +"quality." +msgstr "" + +#: views/settings/page-sections/imagify.php:24 +msgid "More on Imagify:" +msgstr "" + +#: views/settings/page-sections/imagify.php:26 +msgid "Imagify Plugin Page" +msgstr "" + +#: views/settings/page-sections/imagify.php:27 +msgid "Imagify Website" +msgstr "" + +#: views/settings/page-sections/imagify.php:28 +msgid "Review of Image Compression Plugins" +msgstr "" + +#: views/settings/page-sections/imagify.php:37 +msgid "Install Imagify" +msgstr "" + +#: views/settings/page-sections/license.php:21 +msgid "WP Rocket was not able to automatically validate your license." +msgstr "" + +#: views/settings/page-sections/license.php:26 +#, php-format +msgid "" +"Follow this tutorial, or contact support to get the engine started." +msgstr "" + +#: views/settings/page-sections/license.php:26 +msgid "" +"https://docs.wp-rocket.me/article/100-resolving-problems-with-license-" +"validation/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" + +#: views/settings/page-sections/sucuri.php:41 +msgid "Clear all Sucuri cache files" +msgstr "" + +#: views/settings/page-sections/tools.php:20 +#, php-format +msgid "Files size: %1$s. Number of entries: %2$s." +msgstr "" + +#: views/settings/page-sections/tools.php:23 +#, php-format +msgid "%1$sDownload the file%2$s." +msgstr "" + +#: views/settings/page-sections/tools.php:26 +#, php-format +msgid "%1$sDelete the file%2$s." +msgstr "" + +#: views/settings/page-sections/tools.php:37 +msgid "Export settings" +msgstr "" + +#: views/settings/page-sections/tools.php:38 +msgid "Download a backup file of your settings" +msgstr "" + +#: views/settings/page-sections/tools.php:43 +msgid "Download settings" +msgstr "" + +#: views/settings/page-sections/tools.php:56 +msgid "Rollback" +msgstr "" + +#: views/settings/page-sections/tools.php:60 +#, php-format +msgid "Has version %s caused an issue on your website?" +msgstr "" + +#: views/settings/page-sections/tools.php:62 +msgid "" +"You can rollback to the previous major version here.
      Then send us a " +"support request." +msgstr "" + +#: views/settings/page-sections/tools.php:69 +#, php-format +msgid "Reinstall version %s" +msgstr "" + +#: views/settings/page-sections/tools.php:85 +msgid "Debug mode" +msgstr "" + +#: views/settings/page-sections/tools.php:90 +msgid "Create a debug log file." +msgstr "" + +#: views/settings/page.php:16 +msgid "WP Rocket Settings" +msgstr "" + +#: views/settings/page.php:30 +#, php-format +msgid "version %s" +msgstr "" + +#: views/settings/page.php:40 +msgid "Save Changes" +msgstr "" + +#: views/settings/page.php:56 +msgid "Show Sidebar" +msgstr "" + +#: views/settings/page.php:75 +msgid "Thanks for choosing to participate in the WP Rocket beta program!" +msgstr "" + +#: views/settings/page.php:76 +msgid "" +"A beta version is usually one that has new features and improvements, but we" +" want to test it a little more before full launch." +msgstr "" + +#: views/settings/page.php:77 +msgid "" +"We’d love it if you took our beta versions for a ride, but please keep in " +"mind that it might be less stable than our other releases. Don’t worry, you " +"can switch back to a full release version at any time." +msgstr "" + +#: views/settings/page.php:78 +msgid "" +"Your mission: please send all feedback about our beta versions, including " +"bug reports, to support@wp-rocket.me" +msgstr "" + +#: views/settings/page.php:80 +msgid "If you don’t want to join the beta program, simply close this window." +msgstr "" + +#: views/settings/page.php:82 +msgid "Activate Rocket Tester" +msgstr "" + +#: views/settings/page.php:93 +msgid "" +"Below is a detailed view of all data WP Rocket will collect if " +"granted permission." +msgstr "" + +#: views/settings/page.php:96 +msgid "" +"WP Rocket will never transmit any domain names or email addresses (except " +"for license validation), IP addresses, or third-party API keys." +msgstr "" + +#: views/settings/page.php:98 +msgid "Activate Rocket analytics" +msgstr "" + +#: views/settings/partials/documentation.php:14 +msgid "It is a great starting point to fix some of the most common issues." +msgstr "" + +#: views/settings/partials/documentation.php:18 +msgid "Read the documentation" +msgstr "" + +#: views/settings/partials/sidebar.php:11 +msgid "How to correctly measure your website’s loading time" +msgstr "" + +#: views/settings/partials/sidebar.php:13 +msgid "" +"Learn how to use best practices to correctly measure your site's " +"performance." +msgstr "" + +#: views/settings/partials/sidebar.php:14 +msgid "" +"https://wp-rocket.me/blog/correctly-measure-websites-page-load-" +"time/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" + +#: views/settings/partials/sidebar.php:14 +msgid "Read our guide" +msgstr "" + +#: views/settings/partials/sidebar.php:17 +msgid "Why Google PageSpeed grade should not matter" +msgstr "" + +#: views/settings/partials/sidebar.php:18 +msgid "" +"https://wp-rocket.me/blog/the-truth-about-google-pagespeed-" +"insights/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" + +#: views/settings/partials/sidebar.php:18 +msgid "Read more" +msgstr "" + +#: views/settings/partials/sidebar.php:23 +msgid "You have not activated logged-in user cache." +msgstr "" + +#: views/settings/partials/sidebar.php:24 +msgid "" +"Use a private browser to check your website's speed and visual appearance." +msgstr "" + +#: views/settings/sections/addons-container.php:23 +#: views/settings/sections/fields-container.php:27 +msgid "Need Help?" +msgstr "" diff --git a/wp-content/plugins/wp-rocket/languages/rocket-nb_NO.mo b/wp-content/plugins/wp-rocket/languages/rocket-nb_NO.mo new file mode 100644 index 0000000000000000000000000000000000000000..ad86b66bc959aa9b6b69d8e826cad88f235cc4f8 GIT binary patch literal 955 zcmaJ=!EVz)5G{g}kDNIy5{E=&ZEqaFT`QNSDXM5%D-F<_wY8^-sl99MuAAh@NAL-J z3ID;jFq^cAkgAL{^30p(nYZ@r-`B5x9ihEIe}n!G{Uv%2-C2zO6M3KoFfi|U*oP1BoROR_Y58t-{-*d1s(mbofQ zIp-w4E$vP_C!1MbTD4kK^i1j6Al7VBGwdg18xA{?yd4tOO}rcW86;?7mF6T>DBcq0 z$3A0N+UE2`7-)oDaN_%W^b4$)N*Cs$G?tSrOEO5Z6=%JEj^R@v9gt*lllKN#l9^Ph zd4hLIFUk`zc_ysY*vy3sTUU?a28BJk4L9iHq}>bKe6RBwgw7W!>Zc)|;JLzhl~-*6 zg(C=q-`yN!F;0xm4^sM^Jb)~eKFEsj=cod*S`}>thldW_f|&o5saEGO+HMLb+f}*2 W{ax8Y)wo9Vx^3Kr;$)4@kNyDzkuDto literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-rocket/languages/rocket-nb_NO.po b/wp-content/plugins/wp-rocket/languages/rocket-nb_NO.po new file mode 100644 index 0000000..4c140b9 --- /dev/null +++ b/wp-content/plugins/wp-rocket/languages/rocket-nb_NO.po @@ -0,0 +1,2943 @@ +# Copyright (C) 2016 WP Rocket +# This file is distributed under the same license as the WP Rocket package. +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: WP Rocket 3.3.7\n" +"Report-Msgid-Bugs-To: http://wp-rocket.me/\n" +"POT-Creation-Date: 2019-08-26 11:14-0400\n" +"PO-Revision-Date: 2019-08-26 15:14+0000\n" +"Language-Team: Norwegian Bokmål (Norway) (https://www.transifex.com/wp-media/teams/18133/nb_NO/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: nb_NO\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 1.8.11\n" +"X-Poedit-Basepath: ..\n" +"X-Poedit-KeywordsList: __;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c\n" +"X-Poedit-SearchPath-0: .\n" +"X-Poedit-SearchPathExcluded-0: assets\n" +"X-Poedit-SearchPathExcluded-1: src\n" +"X-Poedit-SearchPathExcluded-2: vendor\n" +"X-Poedit-SearchPathExcluded-3: node_modules\n" +"X-Poedit-SearchPathExcluded-4: tests\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Textdomain-Support: yes\n" + +#: inc/3rd-party/hosting/flywheel.php:15 inc/3rd-party/hosting/godaddy.php:15 +#: inc/3rd-party/hosting/o2switch.php:15 +#: inc/3rd-party/hosting/pressidium.php:15 inc/3rd-party/hosting/savvii.php:15 +#: inc/3rd-party/hosting/wp-serveur.php:24 +#: inc/3rd-party/hosting/wpengine.php:15 +#, php-format +msgid "" +"Your site is hosted on %s, we have enabled Varnish auto-purge for " +"compatibility." +msgstr "" + +#: inc/3rd-party/hosting/kinsta.php:150 +#, php-format +msgid "" +"Your installation seems to be missing core Kinsta files managing Cache " +"clearing and CDN, which will prevent your Kinsta installation and WP Rocket " +"from working correctly. Please get in touch with Kinsta support through your" +" %1$sMyKinsta%2$s account to resolve this issue." +msgstr "" + +#: inc/3rd-party/plugins/jetpack.php:86 +msgid "Jetpack XML Sitemaps" +msgstr "" + +#: inc/3rd-party/plugins/jetpack.php:88 +msgid "Preload the sitemap from the Jetpack plugin" +msgstr "" + +#: inc/3rd-party/plugins/jetpack.php:96 +#: inc/3rd-party/plugins/seo/all-in-one-seo-pack.php:88 +#: inc/3rd-party/plugins/seo/rank-math-seo.php:34 +#: inc/3rd-party/plugins/seo/seopress.php:85 +#: inc/3rd-party/plugins/seo/the-seo-framework.php:123 +#: inc/3rd-party/plugins/seo/yoast-seo.php:86 +#, php-format +msgid "" +"We automatically detected the sitemap generated by the %s plugin. You can " +"check the option to preload it." +msgstr "" + +#: inc/3rd-party/plugins/seo/all-in-one-seo-pack.php:86 +msgid "All in One SEO XML sitemap" +msgstr "" + +#: inc/3rd-party/plugins/seo/rank-math-seo.php:32 +msgid "Rank Math XML sitemap" +msgstr "" + +#: inc/3rd-party/plugins/seo/seopress.php:83 +msgid "SEOPress XML sitemap" +msgstr "" + +#: inc/3rd-party/plugins/seo/the-seo-framework.php:121 +msgid "The SEO Framework XML sitemap" +msgstr "" + +#: inc/3rd-party/plugins/seo/yoast-seo.php:84 +msgid "Yoast SEO XML sitemap" +msgstr "" + +#: inc/admin/admin.php:13 inc/common/admin-bar.php:311 +#: inc/deprecated/deprecated.php:1789 +msgid "Support" +msgstr "" + +#: inc/admin/admin.php:15 +msgid "Docs" +msgstr "" + +#: inc/admin/admin.php:17 inc/common/admin-bar.php:299 +msgid "FAQ" +msgstr "" + +#: inc/admin/admin.php:19 inc/common/admin-bar.php:46 +msgid "Settings" +msgstr "" + +#: inc/admin/admin.php:64 inc/admin/admin.php:86 inc/admin/admin.php:105 +msgid "Clear this cache" +msgstr "" + +#: inc/admin/admin.php:249 inc/admin/admin.php:264 +#: inc/classes/class-wp-rocket-requirements-check.php:204 +#: inc/classes/class-wp-rocket-requirements-check.php:214 +#, php-format +msgid "%s Update Rollback" +msgstr "" + +#: inc/admin/admin.php:290 +#, php-format +msgid "%1$sReturn to WP Rocket%2$s or %3$sgo to Plugins page%2$s" +msgstr "" + +#: inc/admin/admin.php:529 +msgid "Settings import failed: you do not have the permissions to do this." +msgstr "" + +#: inc/admin/admin.php:533 +msgid "Settings import failed: no file uploaded." +msgstr "" + +#: inc/admin/admin.php:537 +msgid "Settings import failed: incorrect filename." +msgstr "" + +#: inc/admin/admin.php:546 +msgid "Settings import failed: incorrect filetype." +msgstr "" + +#: inc/admin/admin.php:554 +msgid "Settings import failed: " +msgstr "" + +#: inc/admin/admin.php:571 +msgid "Settings import failed: unexpected file content." +msgstr "" + +#: inc/admin/admin.php:592 +msgid "Settings imported and saved." +msgstr "" + +#: inc/admin/options.php:101 +#, php-format +msgid "Cloudflare development mode error: %s" +msgstr "" + +#: inc/admin/options.php:107 +#, php-format +msgid "Cloudflare development mode %s" +msgstr "" + +#: inc/admin/options.php:124 +#, php-format +msgid "Cloudflare cache level error: %s" +msgstr "" + +#: inc/admin/options.php:128 +msgctxt "Cloudflare caching level" +msgid "Standard" +msgstr "" + +#: inc/admin/options.php:134 +#, php-format +msgid "Cloudflare cache level set to %s" +msgstr "" + +#: inc/admin/options.php:146 +#, php-format +msgid "Cloudflare minification error: %s" +msgstr "" + +#: inc/admin/options.php:152 +#, php-format +msgid "Cloudflare minification %s" +msgstr "" + +#: inc/admin/options.php:164 +#, php-format +msgid "Cloudflare rocket loader error: %s" +msgstr "" + +#: inc/admin/options.php:170 +#, php-format +msgid "Cloudflare rocket loader %s" +msgstr "" + +#: inc/admin/options.php:182 +#, php-format +msgid "Cloudflare browser cache error: %s" +msgstr "" + +#: inc/admin/options.php:188 +#, php-format +msgid "Cloudflare browser cache set to %s seconds" +msgstr "" + +#: inc/admin/options.php:241 inc/classes/admin/settings/class-page.php:692 +msgid "Excluded CSS Files" +msgstr "" + +#: inc/admin/options.php:242 inc/classes/admin/settings/class-page.php:784 +msgid "Excluded Inline JavaScript" +msgstr "" + +#: inc/admin/options.php:243 inc/classes/admin/settings/class-page.php:802 +msgid "Excluded JavaScript Files" +msgstr "" + +#: inc/admin/options.php:244 inc/classes/admin/settings/class-page.php:1128 +msgid "Never Cache URL(s)" +msgstr "" + +#: inc/admin/options.php:245 inc/classes/admin/settings/class-page.php:1144 +msgid "Never Cache User Agent(s)" +msgstr "" + +#: inc/admin/options.php:246 inc/classes/admin/settings/class-page.php:1149 +msgid "Always Purge URL(s)" +msgstr "" + +#: inc/admin/options.php:247 inc/classes/admin/settings/class-page.php:1443 +msgid "Exclude files from CDN" +msgstr "" + +#: inc/admin/options.php:265 +#, php-format +msgid "%1$s: %2$s." +msgstr "" + +#: inc/admin/options.php:275 +msgid "The following pattern is invalid and has been removed:" +msgid_plural "The following patterns are invalid and have been removed:" +msgstr[0] "" +msgstr[1] "" + +#: inc/admin/ui/meta-boxes.php:14 inc/admin/ui/notices.php:955 +#: inc/common/admin-bar.php:65 inc/common/admin-bar.php:118 +#: views/settings/page-sections/dashboard.php:115 +msgid "Clear cache" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:36 +msgid "WP Rocket Options" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:66 +msgid "Never cache this page" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:70 +msgid "Activate these options on this post:" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:73 +msgid "LazyLoad for images" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:74 +msgid "LazyLoad for iframes/videos" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:75 +#: inc/classes/admin/settings/class-page.php:615 +msgid "Minify HTML" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:76 +msgid "Minify/combine CSS" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:77 +msgid "Minify/combine JS" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:78 +#: inc/classes/admin/settings/class-page.php:1413 +#: inc/classes/admin/settings/class-page.php:1424 +#: inc/deprecated/deprecated.php:1775 +msgid "CDN" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:79 +msgid "Optimize CSS Delivery" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:80 +msgid "Defer JS" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:86 +#, php-format +msgid "Activate first the %s option." +msgstr "" + +#: inc/admin/ui/meta-boxes.php:102 +#, php-format +msgid "" +"%1$sNote:%2$s None of these options will be applied if this post has been " +"excluded from cache in the global cache settings." +msgstr "" + +#: inc/admin/ui/notices.php:24 inc/admin/ui/notices.php:34 +#, php-format +msgid "" +"%1$s has not been deactivated due to missing writing permissions.
      \n" +"Make %2$s writeable and retry deactivation, or force deactivation now:" +msgstr "" + +#: inc/admin/ui/notices.php:83 +#, php-format +msgid "" +"%s: One or more plugins have been enabled or disabled, " +"clear the cache if they affect the front end of your site." +msgstr "" + +#: inc/admin/ui/notices.php:196 +#, php-format +msgid "" +"%s: The following plugins are not compatible with this " +"plugin and may cause unexpected results:" +msgstr "" + +#: inc/admin/ui/notices.php:202 +msgid "Deactivate" +msgstr "" + +#: inc/admin/ui/notices.php:243 +msgid "" +"WP Rocket Footer JS is not an official add-on. It prevents some options in " +"WP Rocket from working correctly. Please deactivate it if you have problems." +msgstr "" + +#: inc/admin/ui/notices.php:283 +#, php-format +msgid "" +"Endurance Cache is currently enabled, which will conflict with WP Rocket " +"Cache. Please set the Endurance Cache cache level to Off (Level 0) on the " +"%1$sSettings > General%2$s page to prevent any issues." +msgstr "" + +#: inc/admin/ui/notices.php:305 +#, php-format +msgid "" +"%1$s: A custom permalink structure is required for the plugin to work " +"properly. %2$sGo to permalinks settings%3$s" +msgstr "" + +#: inc/admin/ui/notices.php:442 +#, php-format +msgid "" +"%s could not modify the .htaccess file due to missing writing permissions." +msgstr "" + +#: inc/admin/ui/notices.php:448 inc/admin/ui/notices.php:1032 +#, php-format +msgid "Troubleshoot: %1$sHow to make system files writeable%2$s" +msgstr "" + +#: inc/admin/ui/notices.php:450 inc/admin/ui/notices.php:1034 +msgid "" +"https://docs.wp-rocket.me/article/626-how-to-make-system-files-htaccess-wp-" +"config-writeable/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" + +#: inc/admin/ui/notices.php:456 +msgid "" +"Don’t worry, WP Rocket’s page caching and settings will still function " +"correctly." +msgstr "" + +#: inc/admin/ui/notices.php:456 +msgid "" +"For optimal performance, adding the following lines into your .htaccess is " +"recommended (not required):" +msgstr "" + +#: inc/admin/ui/notices.php:600 +#, php-format +msgid "" +"%1$s is good to go! %2$sTest your load time%4$s, or visit your " +"%3$ssettings%4$s." +msgstr "" + +#: inc/admin/ui/notices.php:721 +msgid "" +"Would you allow WP Rocket to collect non-sensitive diagnostic data from this" +" website?" +msgstr "" + +#: inc/admin/ui/notices.php:722 +msgid "This would help us to improve WP Rocket for you in the future." +msgstr "" + +#: inc/admin/ui/notices.php:728 +msgid "What info will we collect?" +msgstr "" + +#: inc/admin/ui/notices.php:733 +msgid "" +"Below is a detailed view of all data WP Rocket will collect if granted " +"permission. WP Rocket will never transmit any domain names or email " +"addresses (except for license validation), IP addresses, or third-party API " +"keys." +msgstr "" + +#: inc/admin/ui/notices.php:742 +msgid "Yes, allow" +msgstr "" + +#: inc/admin/ui/notices.php:745 +msgid "No, thanks" +msgstr "" + +#: inc/admin/ui/notices.php:783 +msgid "Thank you!" +msgstr "" + +#: inc/admin/ui/notices.php:788 +msgid "WP Rocket now collects these metrics from your website:" +msgstr "" + +#: inc/admin/ui/notices.php:825 +#, php-format +msgid "%s: Cache cleared." +msgstr "" + +#: inc/admin/ui/notices.php:830 +#, php-format +msgid "%s: Post cache cleared." +msgstr "" + +#: inc/admin/ui/notices.php:835 +#, php-format +msgid "%s: Term cache cleared." +msgstr "" + +#: inc/admin/ui/notices.php:840 +#, php-format +msgid "%s: User cache cleared." +msgstr "" + +#: inc/admin/ui/notices.php:910 +msgid "" +"The following scheduled event failed to run. This may indicate the CRON " +"system is not running properly, which can prevent some WP Rocket features " +"from working as intended:" +msgid_plural "" +"The following scheduled events failed to run. This may indicate the CRON " +"system is not running properly, which can prevent some WP Rocket features " +"from working as intended:" +msgstr[0] "" +msgstr[1] "" + +#: inc/admin/ui/notices.php:919 +msgid "Please contact your host to check if CRON is working." +msgstr "" + +#: inc/admin/ui/notices.php:958 +msgid "Stop Preload" +msgstr "" + +#: inc/admin/ui/notices.php:976 +msgid "Force deactivation " +msgstr "" + +#: inc/admin/ui/notices.php:989 +msgid "The following code should have been written to this file:" +msgstr "" + +#: inc/admin/ui/notices.php:999 views/settings/page-sections/dashboard.php:45 +msgid "Dismiss this notice." +msgstr "" + +#: inc/admin/ui/notices.php:1020 +#, php-format +msgid "%s cannot configure itself due to missing writing permissions." +msgstr "" + +#: inc/admin/ui/notices.php:1026 +#, php-format +msgid "Affected file/folder: %s" +msgstr "" + +#: inc/classes/admin/Database/class-optimization.php:41 +#: inc/classes/admin/settings/class-page.php:1289 +msgid "Revisions" +msgstr "" + +#: inc/classes/admin/Database/class-optimization.php:42 +#: inc/classes/admin/settings/class-page.php:1299 +msgid "Auto Drafts" +msgstr "" + +#: inc/classes/admin/Database/class-optimization.php:43 +#: inc/classes/admin/settings/class-page.php:1309 +msgid "Trashed Posts" +msgstr "" + +#: inc/classes/admin/Database/class-optimization.php:44 +#: inc/classes/admin/settings/class-page.php:1319 +msgid "Spam Comments" +msgstr "" + +#: inc/classes/admin/Database/class-optimization.php:45 +#: inc/classes/admin/settings/class-page.php:1329 +msgid "Trashed Comments" +msgstr "" + +#: inc/classes/admin/Database/class-optimization.php:46 +#: inc/classes/admin/settings/class-page.php:1339 +msgid "Expired transients" +msgstr "" + +#: inc/classes/admin/Database/class-optimization.php:47 +msgid "Transients" +msgstr "" + +#: inc/classes/admin/Database/class-optimization.php:48 +msgid "Tables" +msgstr "" + +#: inc/classes/admin/class-logs.php:124 +msgid "The debug file could not be deleted." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:212 +#: inc/classes/admin/settings/class-page.php:213 +msgid "Unavailable" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:327 +#: inc/deprecated/deprecated.php:1791 +#: views/settings/page-sections/dashboard.php:72 +msgid "License" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:344 +msgid "API key" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:359 +msgid "Email address" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:388 +msgid "Dashboard" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:389 +msgid "Get help, account info" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:398 +msgid "My Status" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:408 views/settings/page.php:71 +msgid "Rocket Tester" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:409 +msgid "I am part of the WP Rocket Beta Testing Program." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:417 views/settings/page.php:89 +msgid "Rocket Analytics" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:419 +#, php-format +msgid "" +"I agree to share anonymous data with the development team to help improve WP" +" Rocket. %1$sWhat info will we collect?%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:447 +msgid "Cache" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:448 +msgid "Basic cache options" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:455 +msgid "Mobile Cache" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:457 +msgid "Speed up your site for mobile visitors." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:462 +msgid "" +"We detected you use a plugin that requires a separate cache for mobile, and " +"automatically enabled this option for compatibility." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:466 +msgid "User Cache" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:469 +#, php-format +msgid "" +"%1$sUser cache%2$s is great when you have user-specific or restricted " +"content on your website." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:477 +msgid "Cache Lifespan" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:480 +#, php-format +msgid "" +"Cache lifespan is the period of time after which all cache files are " +"removed.
      Enable %1$spreloading%2$s for the cache to be rebuilt " +"automatically after lifespan expiration." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:494 +msgid "Enable caching for logged-in WordPress users" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:502 +msgid "Enable caching for mobile devices" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:517 +msgid "Separate cache files for mobile devices" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:519 +#, php-format +msgid "" +"%1$sMobile cache%2$s works safest with both options enabled. When in doubt, " +"keep both." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:535 +msgid "" +"Specify time after which the global cache is cleared
      (0 = unlimited )" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:537 +#, php-format +msgid "" +"Reduce lifespan to 10 hours or less if you notice issues that seem to appear" +" periodically. %1$sWhy?%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:543 +msgid "Minutes" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:544 +msgid "Hours" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:545 +msgid "Days" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:571 +msgid "File Optimization" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:572 +msgid "Optimize CSS & JS" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:579 +msgid "Basic Settings" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:586 +#: inc/classes/admin/settings/class-page.php:596 +#: inc/classes/admin/settings/class-page.php:606 +#, php-format +msgid "" +"%1$s Minification is currently activated in Autoptimize. If" +" you want to use %2$s’s minification, disable those options in Autoptimize." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:589 +msgid "CSS Files" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:599 +msgid "JavaScript Files" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:619 +msgid "Minifying HTML removes whitespace and comments to reduce the size." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:630 +msgid "Combine Google Fonts files" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:631 +msgid "Combining Google Fonts will reduce the number of HTTP requests." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:639 +msgid "Remove query strings from static resources" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:641 +#, php-format +msgid "" +"Removes the version query string from static files (e.g. style.css?ver=1.0) " +"and encodes it into the filename instead (e.g. style-1.0.css). Can improve " +"your GTMetrix score. %1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:649 +msgid "Minify CSS files" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:650 +msgid "Minify CSS removes whitespace and comments to reduce the file size." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:663 +#: inc/classes/admin/settings/class-page.php:685 +#: inc/classes/admin/settings/class-page.php:755 +#: inc/classes/admin/settings/class-page.php:777 +msgid "This could break things!" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:664 +#: inc/classes/admin/settings/class-page.php:686 +#: inc/classes/admin/settings/class-page.php:756 +#: inc/classes/admin/settings/class-page.php:778 +msgid "" +"If you notice any errors on your website after having activated this " +"setting, just deactivate it again, and your site will be back to normal." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:665 +msgid "Activate minify CSS" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:670 +msgid "Combine CSS files (Enable Minify CSS files to select)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:672 +#, php-format +msgid "" +"Combine CSS merges all your files into 1, reducing HTTP requests. Not " +"recommended if your site uses HTTP/2. %1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:687 +msgid "Activate combine CSS" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:693 +msgid "" +"Specify URLs of CSS files to be excluded from minification and concatenation" +" (one per line)." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:694 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*).css " +"wildcards to exclude all CSS files located at a specific path." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:707 +msgid "Optimize CSS delivery" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:714 +#, php-format +msgctxt "WP Critical CSS compatibility" +msgid "" +"Optimize CSS Delivery is currently handled by the %1$s plugin. If you want " +"to use WP Rocket’s Optimize CSS Delivery option, disable the %1$s plugin." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:716 +#, php-format +msgid "" +"Optimize CSS delivery eliminates render-blocking CSS on your website for " +"faster perceived load time. %1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:727 +msgid "Fallback critical CSS" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:732 +#, php-format +msgid "" +"Provides a fallback if auto-generated critical path CSS is incomplete. " +"%1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:741 +msgid "Minify JavaScript files" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:742 +msgid "" +"Minify JavaScript removes whitespace and comments to reduce the file size." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:757 +msgid "Activate minify JavaScript" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:762 +msgid "" +"Combine JavaScript files (Enable Minify JavaScript files to select)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:764 +#, php-format +msgid "" +"Combine JavaScript files combines your site’s internal, 3rd party and inline" +" JS reducing HTTP requests. Not recommended if your site uses HTTP/2. " +"%1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:779 +msgid "Activate combine JavaScript" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:786 +#, php-format +msgid "" +"Specify patterns of inline JavaScript to be excluded from concatenation (one" +" per line). %1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:803 +msgid "" +"Specify URLs of JavaScript files to be excluded from minification and " +"concatenation (one per line)." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:804 +msgid "" +"Internal: The domain part of the URL will be stripped " +"automatically. Use (.*).js wildcards to exclude all JS files located at a " +"specific path." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:806 +#, php-format +msgid "" +"3rd Party: Use either the full URL path or only the domain " +"name, to exclude external JS. %1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:822 +msgid "Load JavaScript deferred" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:824 +#, php-format +msgid "" +"Load JavaScript deferred eliminates render-blocking JS on your site and can " +"improve load time. %1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:835 +msgid "Safe Mode for jQuery (recommended)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:836 +msgid "" +"Safe mode for jQuery for deferred JS ensures support for inline jQuery " +"references from themes and plugins by loading jQuery at the top of the " +"document as a render-blocking script.
      Deactivating may result in " +"broken functionality, test thoroughly!" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:861 +msgid "Media" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:862 +msgid "LazyLoad, emojis, embeds" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:869 +msgid "LazyLoad" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:872 +#, php-format +msgid "" +"It can improve actual and perceived loading time as images, iframes, and " +"videos will be loaded only as they enter (or about to enter) the viewport " +"and reduces the number of HTTP requests. %1$sMore Info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:879 +#, php-format +msgid "" +"Lazyload is currently activated in Autoptimize. If you want" +" to use %1$s’s lazyload, disable this option in Autoptimize." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:882 +msgid "Emoji 👻" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:884 +msgid "" +"Use default emoji of visitor's browser instead of loading emoji from " +"WordPress.org" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:888 +msgid "Embeds" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:890 +msgid "" +"Prevents others from embedding content from your site, prevents you from " +"embedding content from other (non-whitelisted) sites, and removes JavaScript" +" requests related to WordPress embeds" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:900 +msgid "Enable for images" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:911 +msgctxt "Avada" +msgid "" +"Lazyload for images is currently activated in Avada. If you want to use WP " +"Rocket’s LazyLoad, disable this option in Avada." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:919 +msgid "Enable for iframes and videos" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:934 +msgid "Replace YouTube iframe with preview image" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:935 +msgid "" +"This can significantly improve your loading time if you have a lot of " +"YouTube videos on a page." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:947 +msgid "Disable Emoji" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:948 +msgid "Disable Emoji will reduce the number of external HTTP requests." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:956 +msgid "Disable WordPress embeds" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:978 +#: inc/classes/admin/settings/class-page.php:988 +#: inc/deprecated/deprecated.php:1778 +msgid "Preload" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:979 +msgid "Generate cache files" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:991 +#, php-format +msgid "" +"When you enable preloading WP Rocket will generate the cache starting with " +"the links on your homepage followed by the sitemaps you specify. Preloading " +"is automatically triggered when you add or update content and can also be " +"manually triggered from the admin bar or from the %1$sWP Rocket " +"Dashboard%2$s." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:999 +msgid "Prefetch DNS Requests" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1001 +msgid "" +"DNS prefetching can make external files load faster, especially on mobile " +"networks" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1015 +msgid "Activate Preloading" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1034 +msgid "Activate sitemap-based cache preloading" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1053 +msgid "Sitemaps for preloading" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1057 +msgid "Specify XML sitemap(s) to be used for preloading" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1067 +msgid "URLs to prefetch" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1068 +msgid "" +"Specify external hosts to be prefetched (no http:, one per " +"line)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1091 +msgid "Advanced Rules" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1092 +msgid "Fine-tune cache rules" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1101 +msgid "" +"Sensitive pages like custom login/logout URLs should be excluded from cache." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1104 +msgctxt "plugin name" +msgid "WooCommerce" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1106 +msgctxt "plugin name" +msgid "Easy Digital Downloads" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1108 +msgctxt "plugin name" +msgid "iThemes Exchange" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1110 +msgctxt "plugin name" +msgid "Jigoshop" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1112 +msgctxt "plugin name" +msgid "WP-Shop" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1118 +#, php-format +msgid "" +"
      Cart, checkout and \"my account\" pages set in " +"%1$s%2$s%3$s will be detected and never cached by default." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1139 +msgid "Never Cache Cookies" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1158 +msgid "Cache Query String(s)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1161 +#, php-format +msgid "" +"%1$sCache for query strings%2$s enables you to force caching for specific " +"GET parameters." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1175 +msgid "" +"Specify URLs of pages or posts that should never be cached (one per line)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1176 +#: inc/classes/admin/settings/class-page.php:1204 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*) " +"wildcards to address multiple URLs under a given path." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1185 +msgid "" +"Specify the IDs of cookies that, when set in the visitor's browser, should " +"prevent a page from getting cached (one per line)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1193 +msgid "" +"Specify user agent strings that should never see cached pages (one per line)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1194 +msgid "Use (.*) wildcards to detect parts of UA strings." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1203 +msgid "" +"Specify URLs you always want purged from cache whenever you update any post " +"or page (one per line)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1212 +msgid "Specify query strings for caching (one per line)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1240 +#: inc/deprecated/deprecated.php:1777 +msgid "Database" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1241 +msgid "Optimize, reduce bloat" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1250 +msgid "Post Cleanup" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1252 +msgid "" +"Post revisions and drafts will be permanently deleted. Do not use this " +"option if you need to retain revisions or drafts." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1260 +msgid "Comments Cleanup" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1262 +msgid "Spam and trashed comments will be permanently deleted." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1266 +msgid "Transients Cleanup" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1268 +msgid "" +"Transients are temporary options; they are safe to remove. They will be " +"automatically regenerated as your plugins require them." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1272 +msgid "Database Cleanup" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1274 +msgid "Reduces overhead of database tables" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1278 +msgid "Automatic cleanup" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1291 +#, php-format +msgid "%s revision in your database." +msgid_plural "%s revisions in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1301 +#, php-format +msgid "%s draft in your database." +msgid_plural "%s drafts in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1311 +#, php-format +msgid "%s trashed post in your database." +msgid_plural "%s trashed posts in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1321 +#, php-format +msgid "%s spam comment in your database." +msgid_plural "%s spam comments in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1331 +#, php-format +msgid "%s trashed comment in your database." +msgid_plural "%s trashed comments in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1341 +#, php-format +msgid "%s expired transient in your database." +msgid_plural "%s expired transients in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1349 +msgid "All transients" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1351 +#, php-format +msgid "%s transient in your database." +msgid_plural "%s transients in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1359 +msgid "Optimize Tables" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1361 +#, php-format +msgid "%s table to optimize in your database." +msgid_plural "%s tables to optimize in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1372 +msgid "Schedule Automatic Cleanup" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1384 +msgid "Frequency" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1392 +msgid "Daily" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1393 +msgid "Weekly" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1394 +msgid "Monthly" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1414 +msgid "Integrate your CDN" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1426 +msgid "" +"All URLs of static files (CSS, JS, images) will be rewritten to the CNAME(s)" +" you provide." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1428 +#, php-format +msgid "" +"Not required for services like Cloudflare and Sucuri. Please see our " +"available %1$sAdd-ons%2$s." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1469 +#, php-format +msgid "" +"%1$s%2$s Add-on%3$s is currently enabled. Configuration of the CDN settings " +"is not required for %2$s to work on your site." +msgid_plural "" +"%1$s%2$s Add-ons%3$s are currently enabled. Configuration of the CDN " +"settings is not required for %2$s to work on your site." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1484 +msgid "Enable Content Delivery Network" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1493 +msgid "CDN CNAME(s)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1494 +msgid "Specify the CNAME(s) below" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1501 +msgid "" +"Specify URL(s) of files that should not get served via CDN (one per line)." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1502 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*) " +"wildcards to exclude all files of a given file type located at a specific " +"path." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1525 +#: inc/classes/admin/settings/class-page.php:1533 +msgid "Heartbeat" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1526 +msgid "Control WordPress Heartbeat API" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1534 +msgid "" +"Reducing or disabling the Heartbeat API’s activity can help save some of " +"your server’s resources." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1543 +msgid "Reduce or disable Heartbeat activity" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1544 +msgid "" +"Reducing activity will change Heartbeat frequency from one hit each minute " +"to one hit every 2 minutes." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1544 +msgid "" +"Disabling Heartbeat entirely may break plugins and themes using this API." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1558 +msgid "Do not limit" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1559 +msgid "Reduce activity" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1560 +msgid "Disable" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1568 +msgid "Control Heartbeat" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1577 +msgid "Behavior in backend" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1584 +msgid "Behavior in post editor" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1590 +msgid "Behavior in frontend" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1609 +msgid "Add-ons" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1610 +msgid "Add more features" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1617 +msgid "One-click Rocket Add-ons" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1618 +msgid "" +"One-Click Add-ons are features extending available options without " +"configuration needed. Switch the option \"on\" to enable from this screen." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1628 +msgid "Rocket Add-ons" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1629 +msgid "Rocket Add-ons are complementary features extending available options." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1642 +msgid "Google Tracking" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1648 +msgid "Improve browser caching for Google Analytics" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1650 +#, php-format +msgid "" +"WP Rocket will host these Google scripts locally on your server to help " +"satisfy the PageSpeed recommendation for Leverage browser " +"caching.
      %1$sLearn more%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1665 +msgid "Facebook Pixel" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1671 +msgid "Improve browser caching for Facebook Pixel" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1673 +#, php-format +msgid "" +"WP Rocket will host these Facebook Pixels locally on your server to help " +"satisfy the PageSpeed recommendation for Leverage browser " +"caching.
      %1$sLearn more%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1706 +msgid "Varnish" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1712 +msgid "If Varnish runs on your server, you must activate this add-on." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1714 +#, php-format +msgid "" +"Varnish cache will be purged each time WP Rocket clears its cache to ensure " +"content is always up-to-date.
      %1$sLearn more%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1729 +#: inc/classes/admin/settings/class-page.php:1789 +msgid "Cloudflare" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1735 +msgid "Integrate your Cloudflare account with this add-on." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1736 +msgid "" +"Provide your account email, global API key, and domain to use options such " +"as clearing the Cloudflare cache and enabling optimal settings with WP " +"Rocket." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1748 +msgid "Clear the Sucuri cache when WP Rocket’s cache is cleared." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1751 +msgid "" +"Provide your API key to clear the Sucuri cache when WP Rocket’s cache is " +"cleared." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1759 +#: inc/classes/admin/settings/class-page.php:1907 +msgid "Sucuri" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1765 +msgid "Synchronize Sucuri cache with this add-on." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1805 +msgid "Cloudflare credentials" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1814 +msgid "Cloudflare settings" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1828 +msgctxt "Cloudflare" +msgid "Global API key:" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1829 +msgid "" +"https://support.cloudflare.com/hc/en-us/articles/200167836-Where-do-I-find-" +"my-Cloudflare-API-key-" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1829 +msgctxt "Cloudflare" +msgid "Find your API key" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1841 +msgctxt "Cloudflare" +msgid "Account email" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1850 +msgctxt "Cloudflare" +msgid "Zone ID" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1860 +msgid "Development mode" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1862 +#, php-format +msgid "" +"Temporarily activate development mode on your website. This setting will " +"automatically turn off after 3 hours. %1$sLearn more%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1870 +msgid "Optimal settings" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1871 +msgid "" +"Automatically enhances your Cloudflare configuration for speed, performance " +"grade and compatibility." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1879 +msgid "Relative protocol" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1880 +msgid "" +"Should only be used with Cloudflare's flexible SSL feature. URLs of static " +"files (CSS, JS, images) will be rewritten to use // instead of http:// or " +"https://." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1920 +msgid "Sucuri credentials" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1933 +msgctxt "Sucuri" +msgid "" +"Firewall API key (for plugin), must be in format {32 characters}/{32 " +"characters}:" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1934 +msgctxt "Sucuri" +msgid "Find your API key" +msgstr "" + +#: inc/classes/admin/settings/class-render.php:486 +#: inc/deprecated/deprecated.php:1296 +msgid "Upload file and import settings" +msgstr "" + +#: inc/classes/admin/settings/class-settings.php:385 +msgid "" +"Sucuri Add-on: The API key for the Sucuri firewall must be in format " +"{32 characters}/{32 characters}." +msgstr "" + +#: inc/classes/admin/settings/class-settings.php:462 +#: inc/deprecated/deprecated.php:1247 +msgid "Settings saved." +msgstr "" + +#: inc/classes/class-wp-rocket-requirements-check.php:148 +#, php-format +msgid "To function properly, %1$s %2$s requires at least:" +msgstr "" + +#: inc/classes/class-wp-rocket-requirements-check.php:152 +#, php-format +msgid "" +"PHP %1$s. To use this WP Rocket version, please ask your web host how to " +"upgrade your server to PHP %1$s or higher." +msgstr "" + +#: inc/classes/class-wp-rocket-requirements-check.php:157 +#, php-format +msgid "" +"WordPress %1$s. To use this WP Rocket version, please upgrade WordPress to " +"version %1$s or higher." +msgstr "" + +#: inc/classes/class-wp-rocket-requirements-check.php:160 +msgid "" +"If you are not able to upgrade, you can rollback to the previous version by " +"using the button below." +msgstr "" + +#: inc/classes/class-wp-rocket-requirements-check.php:162 +#: inc/deprecated/deprecated.php:1949 +#, php-format +msgid "Re-install version %s" +msgstr "" + +#: inc/classes/logger/class-logger.php:253 +#: inc/classes/logger/class-logger.php:285 +msgid "The log file does not exist." +msgstr "" + +#: inc/classes/logger/class-logger.php:259 +#: inc/classes/logger/class-logger.php:291 +msgid "The log file could not be read." +msgstr "" + +#: inc/classes/logger/class-logger.php:278 +msgid "The logs are not saved into a file." +msgstr "" + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:88 +#: inc/classes/optimization/CSS/class-critical-css-generation.php:99 +#: inc/classes/optimization/CSS/class-critical-css-generation.php:110 +#: inc/classes/optimization/CSS/class-critical-css-generation.php:120 +#: inc/classes/optimization/CSS/class-critical-css-generation.php:142 +#, php-format +msgid "Critical CSS for %1$s not generated. Error: %2$s" +msgstr "" + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:99 +msgid "The API returned an invalid response code." +msgstr "" + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:110 +msgid "The API returned an empty response." +msgstr "" + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:145 +#, php-format +msgid "The critical CSS content could not be saved as a file in %s." +msgstr "" + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:154 +#, php-format +msgid "Critical CSS for %s generated." +msgstr "" + +#: inc/classes/preload/class-homepage.php:83 +#, php-format +msgid "" +"Preload encountered an error. Could not gather links on %1$s because of the " +"following error: %2$s. %3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-homepage.php:96 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: %2$s. Security measures could be preventing access. " +"%3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-homepage.php:102 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: 404. Please make sure your homepage is accessible in your " +"browser. %2$sLearn more%3$s." +msgstr "" + +#: inc/classes/preload/class-homepage.php:108 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: 500. Please check with your web host about server access. " +"%2$sLearn more%3$s." +msgstr "" + +#: inc/classes/preload/class-homepage.php:114 +#, php-format +msgid "" +"Preload encountered an error. Could not gather links on %1$s because it " +"returned the following response code: %2$s. %3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:138 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not gather links on %1$s because" +" of the following error: %2$s. %3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:153 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: %2$s. Security measures could be preventing access." +" %3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:158 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: 404. Please make sure you entered the correct " +"sitemap URL and it is accessible in your browser. %2$sLearn more%3$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:163 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: 500. Please check with your web host about server " +"access. %2$sLearn more%3$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:168 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not gather links on %1$s because" +" it returned the following response code: %2$s. %3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:184 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not collect links from %1$s " +"because the file is empty. %2$sLearn more%3$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:205 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not collect links from %1$s " +"because of an error during the XML sitemap parsing. %2$sLearn more%3$s." +msgstr "" + +#: inc/classes/subscriber/Optimization/class-critical-css-subscriber.php:138 +#, php-format +msgid "" +"Critical CSS generation is currently running: %1$d of %2$d page types " +"completed. (Refresh this page to view progress)" +msgstr "" + +#: inc/classes/subscriber/Optimization/class-critical-css-subscriber.php:189 +#, php-format +msgid "Critical CSS generation finished for %1$d of %2$d page types." +msgstr "" + +#: inc/classes/subscriber/Optimization/class-critical-css-subscriber.php:203 +msgid "Critical CSS generation encountered one or more errors." +msgstr "" + +#: inc/classes/subscriber/Optimization/class-critical-css-subscriber.php:203 +msgid "Learn more." +msgstr "" + +#: inc/classes/subscriber/Tools/class-cache-dir-size-check-subscriber.php:51 +#: inc/classes/subscriber/class-facebook-tracking-cache-busting-subscriber.php:97 +#: inc/classes/subscriber/class-google-tracking-cache-busting-subscriber.php:154 +#: inc/common/cron.php:33 +msgid "weekly" +msgstr "" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:148 +msgid "Database optimization process is running" +msgstr "" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:179 +msgid "" +"Database optimization process is complete. Everything was already optimized!" +msgstr "" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:182 +msgid "" +"Database optimization process is complete. List of optimized items below:" +msgstr "" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:190 +#, php-format +msgid "%1$d %2$s optimized." +msgstr "" + +#: inc/classes/subscriber/admin/Settings/class-page-subscriber.php:137 +#: inc/deprecated/deprecated.php:1788 +#: views/settings/page-sections/tools.php:33 +msgid "Tools" +msgstr "" + +#: inc/classes/subscriber/admin/Settings/class-page-subscriber.php:138 +msgid "Import, Export, Rollback" +msgstr "" + +#: inc/classes/subscriber/admin/Settings/class-page-subscriber.php:160 +#: views/settings/page-sections/imagify.php:13 +msgid "Image Optimization" +msgstr "" + +#: inc/classes/subscriber/admin/Settings/class-page-subscriber.php:161 +msgid "Compress your images" +msgstr "" + +#: inc/classes/subscriber/preload/class-preload-subscriber.php:212 +#, php-format +msgid "" +"Preload: WP Rocket has started preloading your website. Go to the %1$sWP " +"Rocket settings%2$s page to track progress." +msgstr "" + +#: inc/classes/subscriber/preload/class-preload-subscriber.php:246 +#, php-format +msgid "" +"Preload: %1$s uncached page has now been preloaded. (refresh to see " +"progress)" +msgid_plural "" +"Preload: %1$s uncached pages have now been preloaded. (refresh to see " +"progress)" +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/subscriber/preload/class-preload-subscriber.php:255 +msgid "The following error happened during gathering of the URLs to preload:" +msgid_plural "" +"The following errors happened during gathering of the URLs to preload:" +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/subscriber/preload/class-preload-subscriber.php:308 +#, php-format +msgid "Preload complete: %d pages have been cached." +msgstr "" + +#: inc/classes/subscriber/preload/class-sitemap-preload-subscriber.php:117 +#, php-format +msgid "" +"%1$sSimpleXML PHP extension%2$s is not enabled on your server. Please " +"contact your host to enable it before running sitemap-based cache " +"preloading." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:72 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"Please deactivate the following %s option which conflicts with WP Rocket " +"features:" +msgid_plural "" +"Please deactivate the following %s options which conflict with WP Rocket " +"features:" +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:145 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sdisable emoji%3$s conflicts with WP Rockets %2$sdisable emoji%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:167 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sremove query strings%3$s conflicts with WP Rocket %2$sremove query " +"strings%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:203 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sGZIP compression%3$s conflicts with WP Rocket %2$sGZIP " +"compression%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:239 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sbrowser caching%3$s conflicts with WP Rocket %2$sbrowser " +"caching%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:271 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$spage caching%3$s conflicts with WP Rocket %2$spage caching%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:305 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sasset optimization%3$s conflicts with WP Rocket %2$sfile " +"optimization%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:123 +#, php-format +msgid "Sucuri cache purge error: %s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:128 +msgid "" +"The Sucuri cache is being cleared. Note that it may take up to two minutes " +"for it to be fully flushed." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:242 +msgid "Sucuri firewall API key was not found." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:251 +msgid "Sucuri firewall API key is invalid." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:303 +msgid "Error when contacting Sucuri firewall API." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:313 +#, php-format +msgid "Error when contacting Sucuri firewall API. Error message was: %s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:324 +msgid "Could not get a response from the Sucuri firewall API." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:335 +msgid "Got an invalid response from the Sucuri firewall API." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:345 +msgid "The Sucuri firewall API returned an unknown error." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:348 +#, php-format +msgid "The Sucuri firewall API returned the following error: %s" +msgid_plural "The Sucuri firewall API returned the following errors: %s" +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/traits/trait-updater-api-tools.php:53 +#: inc/deprecated/3.3.php:760 inc/deprecated/3.3.php:769 +#, php-format +msgid "" +"An unexpected error occurred. Something may be wrong with WP-Rocket.me or " +"this server’s configuration. If you continue to have problems, contact support." +msgstr "" + +#: inc/common/admin-bar.php:106 inc/common/admin-bar.php:260 +#: inc/functions/i18n.php:39 inc/functions/i18n.php:48 +msgid "All languages" +msgstr "" + +#: inc/common/admin-bar.php:133 +msgid "Clear this post" +msgstr "" + +#: inc/common/admin-bar.php:147 +msgid "Purge this URL" +msgstr "" + +#: inc/common/admin-bar.php:163 +msgid "Purge OPcache" +msgstr "" + +#: inc/common/admin-bar.php:180 +msgid "Regenerate Critical Path CSS" +msgstr "" + +#: inc/common/admin-bar.php:196 +msgid "Clear Cloudflare cache" +msgstr "" + +#: inc/common/admin-bar.php:217 inc/common/admin-bar.php:272 +#: views/settings/page-sections/dashboard.php:135 +msgid "Preload cache" +msgstr "" + +#: inc/common/admin-bar.php:287 views/settings/partials/documentation.php:13 +msgid "Documentation" +msgstr "" + +#: inc/common/cron.php:24 +#, php-format +msgid "%s clear" +msgstr "" + +#: inc/common/cron.php:39 +msgid "monthly" +msgstr "" + +#: inc/common/purge.php:456 +#, php-format +msgid "Cloudflare cache purge error: %s" +msgstr "" + +#: inc/common/purge.php:461 +msgid "Cloudflare cache successfully purged" +msgstr "" + +#: inc/deprecated/3.2.php:51 views/settings/page-sections/imagify.php:35 +msgid "Activate Imagify" +msgstr "" + +#: inc/deprecated/3.2.php:51 +msgid "Install Imagify for Free" +msgstr "" + +#: inc/deprecated/3.2.php:66 +msgid "" +"Speed up your website and boost your SEO by reducing image file sizes " +"without losing quality with Imagify." +msgstr "" + +#: inc/deprecated/3.2.php:71 +msgid "More details" +msgstr "" + +#: inc/deprecated/3.2.php:227 +#, php-format +msgid "Sitemap preload: %d pages have been cached." +msgstr "" + +#: inc/deprecated/3.2.php:260 +#, php-format +msgid "" +"Sitemap preload: %d uncached pages have now been preloaded. (refresh to see " +"progress)" +msgstr "" + +#: inc/deprecated/deprecated.php:242 +msgid "JS files with Deferred Loading JavaScript" +msgstr "" + +#: inc/deprecated/deprecated.php:295 +msgid "Add URL" +msgstr "" + +#: inc/deprecated/deprecated.php:1279 views/settings/fields/import-form.php:22 +msgid "" +"Before you can upload your import file, you will need to fix the following " +"error:" +msgstr "" + +#: inc/deprecated/deprecated.php:1290 views/settings/fields/import-form.php:35 +#, php-format +msgid "Choose a file from your computer (maximum size: %s)" +msgstr "" + +#: inc/deprecated/deprecated.php:1387 +msgid "Your Cloudflare credentials are valid." +msgstr "" + +#: inc/deprecated/deprecated.php:1391 +msgid "Your Cloudflare credentials are invalid!" +msgstr "" + +#: inc/deprecated/deprecated.php:1455 +msgid "Save and optimize" +msgstr "" + +#: inc/deprecated/deprecated.php:1455 +#: views/settings/page-sections/database.php:27 +msgid "Optimize" +msgstr "" + +#: inc/deprecated/deprecated.php:1466 inc/deprecated/deprecated.php:1668 +msgctxt "screen-reader-text" +msgid "Note:" +msgstr "" + +#: inc/deprecated/deprecated.php:1472 +msgctxt "screen-reader-text" +msgid "Performance tip:" +msgstr "" + +#: inc/deprecated/deprecated.php:1478 +msgctxt "screen-reader-text" +msgid "Third-party feature detected:" +msgstr "" + +#: inc/deprecated/deprecated.php:1490 inc/deprecated/deprecated.php:1674 +msgctxt "screen-reader-text" +msgid "Warning:" +msgstr "" + +#: inc/deprecated/deprecated.php:1503 +msgctxt "button text" +msgid "Download settings" +msgstr "" + +#: inc/deprecated/deprecated.php:1533 +msgid "Replace site's hostname with:" +msgstr "" + +#: inc/deprecated/deprecated.php:1552 inc/deprecated/deprecated.php:1589 +#: inc/deprecated/deprecated.php:1617 views/settings/fields/cnames.php:32 +#: views/settings/fields/cnames.php:63 views/settings/fields/cnames.php:93 +msgid "reserved for" +msgstr "" + +#: inc/deprecated/deprecated.php:1554 inc/deprecated/deprecated.php:1591 +#: inc/deprecated/deprecated.php:1619 views/settings/fields/cnames.php:35 +#: views/settings/fields/cnames.php:66 views/settings/fields/cnames.php:96 +msgid "All files" +msgstr "" + +#: inc/deprecated/deprecated.php:1566 inc/deprecated/deprecated.php:1596 +#: inc/deprecated/deprecated.php:1624 views/settings/fields/cnames.php:47 +#: views/settings/fields/cnames.php:78 views/settings/fields/cnames.php:108 +msgid "Images" +msgstr "" + +#: inc/deprecated/deprecated.php:1637 views/settings/fields/cnames.php:119 +msgid "Add CNAME" +msgstr "" + +#: inc/deprecated/deprecated.php:1708 +msgid "Watch the video" +msgstr "" + +#: inc/deprecated/deprecated.php:1773 +msgid "Basic" +msgstr "" + +#: inc/deprecated/deprecated.php:1774 +msgid "Static Files" +msgstr "" + +#: inc/deprecated/deprecated.php:1776 +msgid "Advanced" +msgstr "" + +#: inc/deprecated/deprecated.php:1946 +#, php-format +msgid "" +"%1$s %2$s requires at least PHP %3$s to function properly. To use this " +"version, please ask your web host how to upgrade your server to PHP %3$s or " +"higher. If you are not able to upgrade, you can rollback to the previous " +"version by using the button below." +msgstr "" + +#: inc/functions/admin.php:23 +msgid "" +"There seems to be an issue validating your license. Please see the error " +"message below." +msgid_plural "" +"There seems to be an issue validating your license. You can see the error " +"messages below." +msgstr[0] "" +msgstr[1] "" + +#: inc/functions/admin.php:361 +msgid "Server type:" +msgstr "" + +#: inc/functions/admin.php:370 +msgid "PHP version number:" +msgstr "" + +#: inc/functions/admin.php:379 +msgid "WordPress version number:" +msgstr "" + +#: inc/functions/admin.php:388 +msgid "WordPress multisite:" +msgstr "" + +#: inc/functions/admin.php:397 +msgid "Current theme:" +msgstr "" + +#: inc/functions/admin.php:406 +msgid "Current site language:" +msgstr "" + +#: inc/functions/admin.php:415 +msgid "Active plugins:" +msgstr "" + +#: inc/functions/admin.php:418 +msgid "Plugin names of all active plugins" +msgstr "" + +#: inc/functions/admin.php:424 +msgid "Anonymized WP Rocket settings:" +msgstr "" + +#: inc/functions/admin.php:427 +msgid "Which WP Rocket settings are active" +msgstr "" + +#: inc/functions/cloudflare.php:14 +msgid "" +"Curl functions are disabled, they are required for the Cloudflare Add-on to " +"work correctly." +msgstr "" + +#: inc/functions/cloudflare.php:21 +msgid "Cloudflare Email and API key are not set" +msgstr "" + +#: inc/functions/cloudflare.php:52 +#, php-format +msgid "Missing Cloudflare zone ID. %s could not fix this automatically." +msgstr "" + +#: inc/functions/cloudflare.php:58 +#, php-format +msgid "Read the %1$sdocumentation%2$s for further guidance." +msgstr "" + +#: inc/functions/cloudflare.php:60 +msgid "" +"https://docs.wp-rocket.me/article/18-using-wp-rocket-with-" +"cloudflare/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" + +#: inc/functions/cloudflare.php:100 +msgid "Connection to Cloudflare failed" +msgstr "" + +#: inc/functions/cloudflare.php:122 +msgid "Choose a domain from the list" +msgstr "" + +#: inc/functions/cloudflare.php:135 +msgid "No domain available in your Cloudflare account" +msgstr "" + +#: inc/functions/options.php:580 inc/functions/options.php:619 +msgid "" +"License validation failed. Our server could not resolve the request from " +"your website." +msgstr "" + +#: inc/functions/options.php:580 inc/functions/options.php:619 +#, php-format +msgid "" +"Try clicking %1$sSave Changes%2$s below. If the error persists, follow " +"%3$sthis guide%4$s." +msgstr "" + +#: inc/functions/options.php:596 +msgid "" +"License validation failed. You may be using a nulled version of the plugin. " +"Please do the following:" +msgstr "" + +#: inc/functions/options.php:596 inc/functions/options.php:638 +#, php-format +msgid "Login to your WP Rocket %1$saccount%2$s" +msgstr "" + +#: inc/functions/options.php:596 inc/functions/options.php:638 +msgid "Download the zip file" +msgstr "" + +#: inc/functions/options.php:596 inc/functions/options.php:638 +msgid "Reinstall" +msgstr "" + +#: inc/functions/options.php:596 +#, php-format +msgid "" +"If you do not have a WP Rocket account, please %1$spurchase a license%2$s." +msgstr "" + +#: inc/functions/options.php:604 +msgid "" +"License validation failed. This user account does not exist in our database." +msgstr "" + +#: inc/functions/options.php:604 +msgid "To resolve, please contact support." +msgstr "" + +#: inc/functions/options.php:612 +msgid "License validation failed. This user account is blacklisted." +msgstr "" + +#: inc/functions/options.php:612 +#, php-format +msgid "Please see %1$sthis guide%2$s for more info." +msgstr "" + +#: inc/functions/options.php:632 +msgid "Your license is not valid." +msgstr "" + +#: inc/functions/options.php:632 +#, php-format +msgid "Make sure you have an active %1$sWP Rocket license%2$s." +msgstr "" + +#: inc/functions/options.php:634 +msgid "You have added as many sites as your current license allows." +msgstr "" + +#: inc/functions/options.php:634 +#, php-format +msgid "" +"Upgrade your %1$saccount%2$s or %3$stransfer your license%2$s to this " +"domain." +msgstr "" + +#: inc/functions/options.php:636 +msgid "This website is not allowed." +msgstr "" + +#: inc/functions/options.php:636 +#, php-format +msgid "Please %1$scontact support%2$s." +msgstr "" + +#: inc/functions/options.php:638 +msgid "This license key is not recognized." +msgstr "" + +#: inc/functions/options.php:638 +#, php-format +msgid "If the issue persists, please %1$scontact support%2$s." +msgstr "" + +#: inc/functions/options.php:644 +#, php-format +msgid "License validation failed: %s" +msgstr "" + +#: inc/vendors/classes/class-imagify-partner.php:531 +msgid "Plugin installed successfully." +msgstr "" + +#: inc/vendors/classes/class-imagify-partner.php:532 +msgid "Sorry, you are not allowed to install plugins on this site." +msgstr "" + +#: inc/vendors/classes/class-imagify-partner.php:533 +msgid "Sorry, you are not allowed to do that." +msgstr "" + +#: inc/vendors/classes/class-imagify-partner.php:534 +msgid "Plugin install failed." +msgstr "" + +#: inc/vendors/classes/class-imagify-partner.php:535 +msgid "Go back" +msgstr "" + +#: views/deactivation-intent/form.php:20 +msgid "Return" +msgstr "" + +#: views/deactivation-intent/form.php:21 +msgid "WP Rocket feedback" +msgstr "" + +#: views/deactivation-intent/form.php:23 +msgid "Close" +msgstr "" + +#: views/deactivation-intent/form.php:27 +msgid "May we have a little info about why you are deactivating?" +msgstr "" + +#: views/deactivation-intent/form.php:31 +msgid "" +"It is a temporary deactivation. I am just debugging an " +"issue." +msgstr "" + +#: views/deactivation-intent/form.php:35 +msgid "The plugin broke my layout or some functionality." +msgstr "" + +#: views/deactivation-intent/form.php:39 +msgid "My PageSpeed or GTMetrix score did not improve." +msgstr "" + +#: views/deactivation-intent/form.php:43 +msgid "I did not notice a difference in loading time." +msgstr "" + +#: views/deactivation-intent/form.php:47 +msgid "The plugin is too complicated to configure." +msgstr "" + +#: views/deactivation-intent/form.php:51 +msgid "My host already has its own caching system." +msgstr "" + +#: views/deactivation-intent/form.php:53 +msgid "What is the name of your web host?" +msgstr "" + +#: views/deactivation-intent/form.php:58 +msgid "Other" +msgstr "" + +#: views/deactivation-intent/form.php:60 +msgid "" +"Let us know why you are deactivating WP Rocket so we can improve the plugin" +msgstr "" + +#: views/deactivation-intent/form.php:68 +msgid "The plugin broke my layout or some functionality" +msgstr "" + +#: views/deactivation-intent/form.php:69 +msgid "" +"This type of issue can usually be fixed by deactivating some options in WP " +"Rocket." +msgstr "" + +#: views/deactivation-intent/form.php:70 +msgid "" +"Click \"Apply Safe Mode\" to quickly disable LazyLoad, File Optimization, " +"Embeds and CDN options. Then check your site to see if the issue has " +"resolved." +msgstr "" + +#: views/deactivation-intent/form.php:72 +msgid "Apply safe mode" +msgstr "" + +#: views/deactivation-intent/form.php:75 +msgid "Safe mode applied." +msgstr "" + +#: views/deactivation-intent/form.php:76 +msgid "Review your site in a private/logged out browser window." +msgstr "" + +#: views/deactivation-intent/form.php:78 +msgid "" +"Is the issue fixed? Now you can reactivate options one at a time to " +"determine which one caused the problem. More info" +msgstr "" + +#: views/deactivation-intent/form.php:81 +msgid "My PageSpeed or GT Metrix score did not improve" +msgstr "" + +#: views/deactivation-intent/form.php:82 +msgid "" +"WP Rocket makes your site faster. The PageSpeed grade or GTMetrix score are " +"not indicators of speed. Neither your real visitors, nor Google will ever " +"see your website’s “grade”. Speed is the only metric that matters for SEO " +"and conversions." +msgstr "" + +#: views/deactivation-intent/form.php:83 +msgid "Yoast, the expert on all things related to SEO for WordPress states:" +msgstr "" + +#: views/deactivation-intent/form.php:84 +msgid "" +"[Google] just looks at how fast your website loads for users, so you don’t " +"have to obsess over that specific score. You have to make sure your website " +"is as fast as you can get it." +msgstr "" + +#: views/deactivation-intent/form.php:87 +msgid "" +"How to measure the load time of your site:
      https" +"://wp-rocket.me/blog/correctly-measure-websites-page-load-time/" +msgstr "" + +#: views/deactivation-intent/form.php:88 +msgid "" +"Why you should not be chasing a PageSpeed score:
      https://wp-rocket.me/blog/the-truth-about-google-" +"pagespeed-insights/" +msgstr "" + +#: views/deactivation-intent/form.php:91 +msgid "I did not notice a difference in loading time" +msgstr "" + +#: views/deactivation-intent/form.php:92 +msgid "" +"Make sure you look at your site while logged out to see the fast, cached " +"pages!" +msgstr "" + +#: views/deactivation-intent/form.php:93 +msgid "" +"The best way to see the improvement WP Rocket provides is to perform speed " +"tests. Follow this guide to correctly measure the load time of your " +"website:
      https://wp-rocket.me/blog/correctly-measure-websites-page-" +"load-time/" +msgstr "" + +#: views/deactivation-intent/form.php:96 +msgid "The plugin is too complicated to configure" +msgstr "" + +#: views/deactivation-intent/form.php:97 +msgid "We are sorry to hear you are finding it difficult to use WP Rocket." +msgstr "" + +#: views/deactivation-intent/form.php:98 +#, php-format +msgid "" +"WP Rocket is the only caching plugin that provides 80% of best practices in " +"speed optimization, by default. That means you do not have to do anything " +"besides activate WP Rocket and your site will already be faster!" +msgstr "" + +#: views/deactivation-intent/form.php:99 +msgid "" +"The additional options are not required for a fast site, they are for fine-" +"tuning." +msgstr "" + +#: views/deactivation-intent/form.php:100 +msgid "" +"To see the benefit WP Rocket is already providing, measure the speed of your" +" site using a tool like Pingdom:
      https" +"://wp-rocket.me/blog/correctly-measure-websites-page-load-time/" +msgstr "" + +#: views/deactivation-intent/form.php:105 +msgid "Send & Deactivate" +msgstr "" + +#: views/deactivation-intent/form.php:106 +msgid "Cancel" +msgstr "" + +#: views/deactivation-intent/form.php:108 +msgid "Skip & Deactivate" +msgstr "" + +#: views/settings/fields/cache-lifespan.php:26 +msgid "Clear cache after" +msgstr "" + +#: views/settings/fields/cnames.php:49 views/settings/fields/cnames.php:80 +#: views/settings/fields/cnames.php:110 +msgid "CSS & JavaScript" +msgstr "" + +#: views/settings/fields/cnames.php:50 views/settings/fields/cnames.php:81 +#: views/settings/fields/cnames.php:111 +msgid "JavaScript" +msgstr "" + +#: views/settings/fields/cnames.php:51 views/settings/fields/cnames.php:82 +#: views/settings/fields/cnames.php:112 +msgid "CSS" +msgstr "" + +#: views/settings/fields/import-form.php:29 +msgid "Import settings" +msgstr "" + +#: views/settings/fields/one-click-addon.php:39 +#: views/settings/fields/rocket-addon.php:31 +#: views/settings/fields/sliding-checkbox.php:24 views/settings/page.php:54 +msgctxt "Active state of checkbox" +msgid "On" +msgstr "" + +#: views/settings/fields/one-click-addon.php:40 +#: views/settings/fields/rocket-addon.php:32 +#: views/settings/fields/sliding-checkbox.php:25 views/settings/page.php:55 +msgctxt "Inactive state of checkbox" +msgid "Off" +msgstr "" + +#: views/settings/fields/one-click-addon.php:41 +#: views/settings/fields/rocket-addon.php:33 +msgid "Add-on status" +msgstr "" + +#: views/settings/fields/rocket-addon.php:56 +msgid "Modify options" +msgstr "" + +#: views/settings/page-sections/cloudflare.php:26 +msgid "Cloudflare Cache" +msgstr "" + +#: views/settings/page-sections/cloudflare.php:33 +#: views/settings/page-sections/sucuri.php:34 +#, php-format +msgid "Purges cached resources for your website. %s" +msgstr "" + +#: views/settings/page-sections/cloudflare.php:34 +msgid "https://support.cloudflare.com/hc/en-us/articles/200169246" +msgstr "" + +#: views/settings/page-sections/cloudflare.php:34 +#: views/settings/page-sections/sucuri.php:35 +msgid "Learn more" +msgstr "" + +#: views/settings/page-sections/cloudflare.php:40 +msgid "Clear all Cloudflare cache files" +msgstr "" + +#: views/settings/page-sections/dashboard.php:37 +msgid "Congratulations!" +msgstr "" + +#: views/settings/page-sections/dashboard.php:39 +msgid "WP Rocket is now activated and already working for you." +msgstr "" + +#: views/settings/page-sections/dashboard.php:41 +msgid "Your website should be loading faster now!" +msgstr "" + +#: views/settings/page-sections/dashboard.php:43 +#, php-format +msgid "" +"To guarantee fast websites, WP Rocket applies 80% of web performance best " +"practices." +msgstr "" + +#: views/settings/page-sections/dashboard.php:43 +msgid "" +"We also enable options that provide immediate benefits to your website." +msgstr "" + +#: views/settings/page-sections/dashboard.php:44 +msgid "Continue to the options to further optimize your site!" +msgstr "" + +#: views/settings/page-sections/dashboard.php:54 +msgid "My Account" +msgstr "" + +#: views/settings/page-sections/dashboard.php:60 +msgid "Refresh info" +msgstr "" + +#: views/settings/page-sections/dashboard.php:74 +msgid "Expiration Date" +msgstr "" + +#: views/settings/page-sections/dashboard.php:83 +msgid "View my account" +msgstr "" + +#: views/settings/page-sections/dashboard.php:103 +msgid "Quick Actions" +msgstr "" + +#: views/settings/page-sections/dashboard.php:109 +msgid "Remove all cached files" +msgstr "" + +#: views/settings/page-sections/dashboard.php:129 +msgid "Start cache preloading" +msgstr "" + +#: views/settings/page-sections/dashboard.php:147 +msgid "Purge OPCache content" +msgstr "" + +#: views/settings/page-sections/dashboard.php:153 +msgid "Purge OPCache" +msgstr "" + +#: views/settings/page-sections/dashboard.php:164 +#: views/settings/page-sections/dashboard.php:170 +msgid "Regenerate Critical CSS" +msgstr "" + +#: views/settings/page-sections/dashboard.php:186 +msgid "Frequently Asked Questions" +msgstr "" + +#: views/settings/page-sections/dashboard.php:199 +msgid "Still cannot find a solution?" +msgstr "" + +#: views/settings/page-sections/dashboard.php:200 +msgid "" +"Submit a ticket and get help from our friendly and knowledgeable Rocketeers." +msgstr "" + +#: views/settings/page-sections/dashboard.php:208 +msgid "Ask support" +msgstr "" + +#: views/settings/page-sections/database.php:24 +msgid "Backup your database before you run a cleanup!" +msgstr "" + +#: views/settings/page-sections/database.php:25 +msgid "" +"Once a database optimization has been performed, there is no way to undo it." +msgstr "" + +#: views/settings/page-sections/imagify.php:20 +#, php-format +msgid "" +"%1$sWP ROCKET%2$s created %3$sIMAGIFY%4$s %1$sfor best-in-class image " +"optimization.%2$s" +msgstr "" + +#: views/settings/page-sections/imagify.php:23 +msgid "" +"Compress image to make your website faster, all while maintaining image " +"quality." +msgstr "" + +#: views/settings/page-sections/imagify.php:24 +msgid "More on Imagify:" +msgstr "" + +#: views/settings/page-sections/imagify.php:26 +msgid "Imagify Plugin Page" +msgstr "" + +#: views/settings/page-sections/imagify.php:27 +msgid "Imagify Website" +msgstr "" + +#: views/settings/page-sections/imagify.php:28 +msgid "Review of Image Compression Plugins" +msgstr "" + +#: views/settings/page-sections/imagify.php:37 +msgid "Install Imagify" +msgstr "" + +#: views/settings/page-sections/license.php:21 +msgid "WP Rocket was not able to automatically validate your license." +msgstr "" + +#: views/settings/page-sections/license.php:26 +#, php-format +msgid "" +"Follow this tutorial, or contact support to get the engine started." +msgstr "" + +#: views/settings/page-sections/license.php:26 +msgid "" +"https://docs.wp-rocket.me/article/100-resolving-problems-with-license-" +"validation/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" + +#: views/settings/page-sections/sucuri.php:41 +msgid "Clear all Sucuri cache files" +msgstr "" + +#: views/settings/page-sections/tools.php:20 +#, php-format +msgid "Files size: %1$s. Number of entries: %2$s." +msgstr "" + +#: views/settings/page-sections/tools.php:23 +#, php-format +msgid "%1$sDownload the file%2$s." +msgstr "" + +#: views/settings/page-sections/tools.php:26 +#, php-format +msgid "%1$sDelete the file%2$s." +msgstr "" + +#: views/settings/page-sections/tools.php:37 +msgid "Export settings" +msgstr "" + +#: views/settings/page-sections/tools.php:38 +msgid "Download a backup file of your settings" +msgstr "" + +#: views/settings/page-sections/tools.php:43 +msgid "Download settings" +msgstr "" + +#: views/settings/page-sections/tools.php:56 +msgid "Rollback" +msgstr "" + +#: views/settings/page-sections/tools.php:60 +#, php-format +msgid "Has version %s caused an issue on your website?" +msgstr "" + +#: views/settings/page-sections/tools.php:62 +msgid "" +"You can rollback to the previous major version here.
      Then send us a " +"support request." +msgstr "" + +#: views/settings/page-sections/tools.php:69 +#, php-format +msgid "Reinstall version %s" +msgstr "" + +#: views/settings/page-sections/tools.php:85 +msgid "Debug mode" +msgstr "" + +#: views/settings/page-sections/tools.php:90 +msgid "Create a debug log file." +msgstr "" + +#: views/settings/page.php:16 +msgid "WP Rocket Settings" +msgstr "" + +#: views/settings/page.php:30 +#, php-format +msgid "version %s" +msgstr "" + +#: views/settings/page.php:40 +msgid "Save Changes" +msgstr "" + +#: views/settings/page.php:56 +msgid "Show Sidebar" +msgstr "" + +#: views/settings/page.php:75 +msgid "Thanks for choosing to participate in the WP Rocket beta program!" +msgstr "" + +#: views/settings/page.php:76 +msgid "" +"A beta version is usually one that has new features and improvements, but we" +" want to test it a little more before full launch." +msgstr "" + +#: views/settings/page.php:77 +msgid "" +"We’d love it if you took our beta versions for a ride, but please keep in " +"mind that it might be less stable than our other releases. Don’t worry, you " +"can switch back to a full release version at any time." +msgstr "" + +#: views/settings/page.php:78 +msgid "" +"Your mission: please send all feedback about our beta versions, including " +"bug reports, to support@wp-rocket.me" +msgstr "" + +#: views/settings/page.php:80 +msgid "If you don’t want to join the beta program, simply close this window." +msgstr "" + +#: views/settings/page.php:82 +msgid "Activate Rocket Tester" +msgstr "" + +#: views/settings/page.php:93 +msgid "" +"Below is a detailed view of all data WP Rocket will collect if " +"granted permission." +msgstr "" + +#: views/settings/page.php:96 +msgid "" +"WP Rocket will never transmit any domain names or email addresses (except " +"for license validation), IP addresses, or third-party API keys." +msgstr "" + +#: views/settings/page.php:98 +msgid "Activate Rocket analytics" +msgstr "" + +#: views/settings/partials/documentation.php:14 +msgid "It is a great starting point to fix some of the most common issues." +msgstr "" + +#: views/settings/partials/documentation.php:18 +msgid "Read the documentation" +msgstr "" + +#: views/settings/partials/sidebar.php:11 +msgid "How to correctly measure your website’s loading time" +msgstr "" + +#: views/settings/partials/sidebar.php:13 +msgid "" +"Learn how to use best practices to correctly measure your site's " +"performance." +msgstr "" + +#: views/settings/partials/sidebar.php:14 +msgid "" +"https://wp-rocket.me/blog/correctly-measure-websites-page-load-" +"time/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" + +#: views/settings/partials/sidebar.php:14 +msgid "Read our guide" +msgstr "" + +#: views/settings/partials/sidebar.php:17 +msgid "Why Google PageSpeed grade should not matter" +msgstr "" + +#: views/settings/partials/sidebar.php:18 +msgid "" +"https://wp-rocket.me/blog/the-truth-about-google-pagespeed-" +"insights/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" + +#: views/settings/partials/sidebar.php:18 +msgid "Read more" +msgstr "" + +#: views/settings/partials/sidebar.php:23 +msgid "You have not activated logged-in user cache." +msgstr "" + +#: views/settings/partials/sidebar.php:24 +msgid "" +"Use a private browser to check your website's speed and visual appearance." +msgstr "" + +#: views/settings/sections/addons-container.php:23 +#: views/settings/sections/fields-container.php:27 +msgid "Need Help?" +msgstr "" diff --git a/wp-content/plugins/wp-rocket/languages/rocket-nl_NL.mo b/wp-content/plugins/wp-rocket/languages/rocket-nl_NL.mo new file mode 100644 index 0000000000000000000000000000000000000000..0742ec9a90785de5403fee7d917ecdcfda90053a GIT binary patch literal 35199 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, 2019 +# Thom, 2019 +# Niels Hoogenhout , 2019 +# Noëll van Peppix Benelux , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: WP Rocket 3.3.7\n" +"Report-Msgid-Bugs-To: http://wp-rocket.me/\n" +"POT-Creation-Date: 2019-08-26 11:14-0400\n" +"PO-Revision-Date: 2019-08-26 15:14+0000\n" +"Last-Translator: Noëll van Peppix Benelux , 2019\n" +"Language-Team: Dutch (Netherlands) (https://www.transifex.com/wp-media/teams/18133/nl_NL/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: nl_NL\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 1.8.11\n" +"X-Poedit-Basepath: ..\n" +"X-Poedit-KeywordsList: __;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c\n" +"X-Poedit-SearchPath-0: .\n" +"X-Poedit-SearchPathExcluded-0: assets\n" +"X-Poedit-SearchPathExcluded-1: src\n" +"X-Poedit-SearchPathExcluded-2: vendor\n" +"X-Poedit-SearchPathExcluded-3: node_modules\n" +"X-Poedit-SearchPathExcluded-4: tests\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Textdomain-Support: yes\n" + +#: inc/3rd-party/hosting/flywheel.php:15 inc/3rd-party/hosting/godaddy.php:15 +#: inc/3rd-party/hosting/o2switch.php:15 +#: inc/3rd-party/hosting/pressidium.php:15 inc/3rd-party/hosting/savvii.php:15 +#: inc/3rd-party/hosting/wp-serveur.php:24 +#: inc/3rd-party/hosting/wpengine.php:15 +#, php-format +msgid "" +"Your site is hosted on %s, we have enabled Varnish auto-purge for " +"compatibility." +msgstr "" +"Je wordt gehost met %s, we hebben het automatisch legen van Varnish voor " +"compatibiliteit ingeschakeld." + +#: inc/3rd-party/hosting/kinsta.php:150 +#, php-format +msgid "" +"Your installation seems to be missing core Kinsta files managing Cache " +"clearing and CDN, which will prevent your Kinsta installation and WP Rocket " +"from working correctly. Please get in touch with Kinsta support through your" +" %1$sMyKinsta%2$s account to resolve this issue." +msgstr "" + +#: inc/3rd-party/plugins/jetpack.php:86 +msgid "Jetpack XML Sitemaps" +msgstr "Jetpack XML Sitemaps" + +#: inc/3rd-party/plugins/jetpack.php:88 +msgid "Preload the sitemap from the Jetpack plugin" +msgstr "De sitemap van de Jetpack-plugin preloaden" + +#: inc/3rd-party/plugins/jetpack.php:96 +#: inc/3rd-party/plugins/seo/all-in-one-seo-pack.php:88 +#: inc/3rd-party/plugins/seo/rank-math-seo.php:34 +#: inc/3rd-party/plugins/seo/seopress.php:85 +#: inc/3rd-party/plugins/seo/the-seo-framework.php:123 +#: inc/3rd-party/plugins/seo/yoast-seo.php:86 +#, php-format +msgid "" +"We automatically detected the sitemap generated by the %s plugin. You can " +"check the option to preload it." +msgstr "" +"We hebben de gegeneerde sitemap door de %s-plugin automatisch gedetecteerd. " +"Je kunt de optie om het te preloaden aanvinken." + +#: inc/3rd-party/plugins/seo/all-in-one-seo-pack.php:86 +msgid "All in One SEO XML sitemap" +msgstr "All in One SEO XML-sitemap" + +#: inc/3rd-party/plugins/seo/rank-math-seo.php:32 +msgid "Rank Math XML sitemap" +msgstr "Rank Math XML sitemap" + +#: inc/3rd-party/plugins/seo/seopress.php:83 +msgid "SEOPress XML sitemap" +msgstr "" + +#: inc/3rd-party/plugins/seo/the-seo-framework.php:121 +msgid "The SEO Framework XML sitemap" +msgstr "De SEO Framework XML sitemap" + +#: inc/3rd-party/plugins/seo/yoast-seo.php:84 +msgid "Yoast SEO XML sitemap" +msgstr "Yoast SEO XML-sitemap" + +#: inc/admin/admin.php:13 inc/common/admin-bar.php:311 +#: inc/deprecated/deprecated.php:1789 +msgid "Support" +msgstr "Ondersteuning" + +#: inc/admin/admin.php:15 +msgid "Docs" +msgstr "Docs" + +#: inc/admin/admin.php:17 inc/common/admin-bar.php:299 +msgid "FAQ" +msgstr "FAQ" + +#: inc/admin/admin.php:19 inc/common/admin-bar.php:46 +msgid "Settings" +msgstr "Instellingen" + +#: inc/admin/admin.php:64 inc/admin/admin.php:86 inc/admin/admin.php:105 +msgid "Clear this cache" +msgstr "Deze cache legen" + +#: inc/admin/admin.php:249 inc/admin/admin.php:264 +#: inc/classes/class-wp-rocket-requirements-check.php:204 +#: inc/classes/class-wp-rocket-requirements-check.php:214 +#, php-format +msgid "%s Update Rollback" +msgstr "%s-update terugdraaien" + +#: inc/admin/admin.php:290 +#, php-format +msgid "%1$sReturn to WP Rocket%2$s or %3$sgo to Plugins page%2$s" +msgstr "" + +#: inc/admin/admin.php:529 +msgid "Settings import failed: you do not have the permissions to do this." +msgstr "" +"Instellingen importeren mislukt: je hebt geen toestemming om dit te doen." + +#: inc/admin/admin.php:533 +msgid "Settings import failed: no file uploaded." +msgstr "Instellingen importeren mislukt: geen bestand geüpload." + +#: inc/admin/admin.php:537 +msgid "Settings import failed: incorrect filename." +msgstr "Instellingen importeren mislukt: onjuiste bestandsnaam." + +#: inc/admin/admin.php:546 +msgid "Settings import failed: incorrect filetype." +msgstr "Instellingen importeren mislukt: onjuist bestandstype." + +#: inc/admin/admin.php:554 +msgid "Settings import failed: " +msgstr "Importeren van instellingen mislukt:" + +#: inc/admin/admin.php:571 +msgid "Settings import failed: unexpected file content." +msgstr "" +"Importeren van instellingen mislukt: inhoud van het bestand is onjuist." + +#: inc/admin/admin.php:592 +msgid "Settings imported and saved." +msgstr "Instellingen geïmporteerd en opgeslagen." + +#: inc/admin/options.php:101 +#, php-format +msgid "Cloudflare development mode error: %s" +msgstr "Fout bij Cloudflare ontwikkelmodus: %s" + +#: inc/admin/options.php:107 +#, php-format +msgid "Cloudflare development mode %s" +msgstr "Cloudflare ontwikkelmodus %s" + +#: inc/admin/options.php:124 +#, php-format +msgid "Cloudflare cache level error: %s" +msgstr "Fout bij Cloudflare cache-level: %s" + +#: inc/admin/options.php:128 +msgctxt "Cloudflare caching level" +msgid "Standard" +msgstr "Standaard" + +#: inc/admin/options.php:134 +#, php-format +msgid "Cloudflare cache level set to %s" +msgstr "Cache-level van Cloudflare ingesteld op %s" + +#: inc/admin/options.php:146 +#, php-format +msgid "Cloudflare minification error: %s" +msgstr "Fout bij Cloudflare verkleining: %s" + +#: inc/admin/options.php:152 +#, php-format +msgid "Cloudflare minification %s" +msgstr "Cloudflare verkleining %s" + +#: inc/admin/options.php:164 +#, php-format +msgid "Cloudflare rocket loader error: %s" +msgstr "Fout bij Cloudflare rocket loader: %s" + +#: inc/admin/options.php:170 +#, php-format +msgid "Cloudflare rocket loader %s" +msgstr "Cloudflare rocket loader %s" + +#: inc/admin/options.php:182 +#, php-format +msgid "Cloudflare browser cache error: %s" +msgstr "Fout bij Cloudflare browser-cache: %s" + +#: inc/admin/options.php:188 +#, php-format +msgid "Cloudflare browser cache set to %s seconds" +msgstr "Browser-cache van Cloudflare ingesteld op %s seconden" + +#: inc/admin/options.php:241 inc/classes/admin/settings/class-page.php:692 +msgid "Excluded CSS Files" +msgstr "Uitgesloten CSS-bestanden" + +#: inc/admin/options.php:242 inc/classes/admin/settings/class-page.php:784 +msgid "Excluded Inline JavaScript" +msgstr "Uitgesloten inline JavaScript" + +#: inc/admin/options.php:243 inc/classes/admin/settings/class-page.php:802 +msgid "Excluded JavaScript Files" +msgstr "Uitgesloten JavaScript-bestanden" + +#: inc/admin/options.php:244 inc/classes/admin/settings/class-page.php:1128 +msgid "Never Cache URL(s)" +msgstr "Nooit URL(s) cachen" + +#: inc/admin/options.php:245 inc/classes/admin/settings/class-page.php:1144 +msgid "Never Cache User Agent(s)" +msgstr "Nooit user agent(s) cachen" + +#: inc/admin/options.php:246 inc/classes/admin/settings/class-page.php:1149 +msgid "Always Purge URL(s)" +msgstr "Altijd URL(s) legen" + +#: inc/admin/options.php:247 inc/classes/admin/settings/class-page.php:1443 +msgid "Exclude files from CDN" +msgstr "" + +#: inc/admin/options.php:265 +#, php-format +msgid "%1$s: %2$s." +msgstr "%1$s: %2$s." + +#: inc/admin/options.php:275 +msgid "The following pattern is invalid and has been removed:" +msgid_plural "The following patterns are invalid and have been removed:" +msgstr[0] "" +msgstr[1] "" + +#: inc/admin/ui/meta-boxes.php:14 inc/admin/ui/notices.php:955 +#: inc/common/admin-bar.php:65 inc/common/admin-bar.php:118 +#: views/settings/page-sections/dashboard.php:115 +msgid "Clear cache" +msgstr "Cache legen" + +#: inc/admin/ui/meta-boxes.php:36 +msgid "WP Rocket Options" +msgstr "WP Rocket opties" + +#: inc/admin/ui/meta-boxes.php:66 +msgid "Never cache this page" +msgstr "Deze pagina nooit cachen" + +#: inc/admin/ui/meta-boxes.php:70 +msgid "Activate these options on this post:" +msgstr "Deze opties voor dit bericht activeren:" + +#: inc/admin/ui/meta-boxes.php:73 +msgid "LazyLoad for images" +msgstr "LazyLoad voor afbeeldingen" + +#: inc/admin/ui/meta-boxes.php:74 +msgid "LazyLoad for iframes/videos" +msgstr "LazyLoad voor iframes/video's" + +#: inc/admin/ui/meta-boxes.php:75 +#: inc/classes/admin/settings/class-page.php:615 +msgid "Minify HTML" +msgstr "HTML verkleinen" + +#: inc/admin/ui/meta-boxes.php:76 +msgid "Minify/combine CSS" +msgstr "CSS verkleinen/combineren" + +#: inc/admin/ui/meta-boxes.php:77 +msgid "Minify/combine JS" +msgstr "JS verkleinen/combineren" + +#: inc/admin/ui/meta-boxes.php:78 +#: inc/classes/admin/settings/class-page.php:1413 +#: inc/classes/admin/settings/class-page.php:1424 +#: inc/deprecated/deprecated.php:1775 +msgid "CDN" +msgstr "CDN" + +#: inc/admin/ui/meta-boxes.php:79 +msgid "Optimize CSS Delivery" +msgstr "Optimaliseer CSS Levering" + +#: inc/admin/ui/meta-boxes.php:80 +msgid "Defer JS" +msgstr "JS uitstellen" + +#: inc/admin/ui/meta-boxes.php:86 +#, php-format +msgid "Activate first the %s option." +msgstr "Activeer eerst de %s-optie." + +#: inc/admin/ui/meta-boxes.php:102 +#, php-format +msgid "" +"%1$sNote:%2$s None of these options will be applied if this post has been " +"excluded from cache in the global cache settings." +msgstr "" +"%1$sOpmerking:%2$s Geen van deze opties worden toegepast op het moment dat " +"dit bericht is uitgesloten van caching in de globale instellingen." + +#: inc/admin/ui/notices.php:24 inc/admin/ui/notices.php:34 +#, php-format +msgid "" +"%1$s has not been deactivated due to missing writing permissions.
      \n" +"Make %2$s writeable and retry deactivation, or force deactivation now:" +msgstr "" +"%1$s is door ontbrekende schrijfrechten niet gedeactiveerd.
      \n" +"Maak %2$s schrijfbaar en probeer deactivatie nogmaals of forceer deactivatie nu:" + +#: inc/admin/ui/notices.php:83 +#, php-format +msgid "" +"%s: One or more plugins have been enabled or disabled, " +"clear the cache if they affect the front end of your site." +msgstr "" +"%s: één of meerdere plugins zijn in- of uitgeschakeld, leeg" +" de cache als dit van invloed is op de frontend van je site." + +#: inc/admin/ui/notices.php:196 +#, php-format +msgid "" +"%s: The following plugins are not compatible with this " +"plugin and may cause unexpected results:" +msgstr "" +"%s: de volgende plugins zijn niet compatibel met deze " +"plugin en kunnen onverwachte resultaten veroorzaken:" + +#: inc/admin/ui/notices.php:202 +msgid "Deactivate" +msgstr "Deactiveren" + +#: inc/admin/ui/notices.php:243 +msgid "" +"WP Rocket Footer JS is not an official add-on. It prevents some options in " +"WP Rocket from working correctly. Please deactivate it if you have problems." +msgstr "" + +#: inc/admin/ui/notices.php:283 +#, php-format +msgid "" +"Endurance Cache is currently enabled, which will conflict with WP Rocket " +"Cache. Please set the Endurance Cache cache level to Off (Level 0) on the " +"%1$sSettings > General%2$s page to prevent any issues." +msgstr "" + +#: inc/admin/ui/notices.php:305 +#, php-format +msgid "" +"%1$s: A custom permalink structure is required for the plugin to work " +"properly. %2$sGo to permalinks settings%3$s" +msgstr "" +"%1$s: een aangepaste permalinkstructuur is vereist door de plugin om juist " +"te werken. %2$sGa naar permalink-instellingen%3$s" + +#: inc/admin/ui/notices.php:442 +#, php-format +msgid "" +"%s could not modify the .htaccess file due to missing writing permissions." +msgstr "" + +#: inc/admin/ui/notices.php:448 inc/admin/ui/notices.php:1032 +#, php-format +msgid "Troubleshoot: %1$sHow to make system files writeable%2$s" +msgstr "Probleemoplossing: %1$shoe systeembestanden schrijfbaar te maken%2$s" + +#: inc/admin/ui/notices.php:450 inc/admin/ui/notices.php:1034 +msgid "" +"https://docs.wp-rocket.me/article/626-how-to-make-system-files-htaccess-wp-" +"config-writeable/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://docs.wp-rocket.me/article/626-how-to-make-system-files-htaccess-wp-" +"config-writeable/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: inc/admin/ui/notices.php:456 +msgid "" +"Don’t worry, WP Rocket’s page caching and settings will still function " +"correctly." +msgstr "" + +#: inc/admin/ui/notices.php:456 +msgid "" +"For optimal performance, adding the following lines into your .htaccess is " +"recommended (not required):" +msgstr "" + +#: inc/admin/ui/notices.php:600 +#, php-format +msgid "" +"%1$s is good to go! %2$sTest your load time%4$s, or visit your " +"%3$ssettings%4$s." +msgstr "" +"%1$s is klaar voor gebruik! %2$sTest je laadtijd%4$s of bekijk je " +"%3$sinstellingen%4$s." + +#: inc/admin/ui/notices.php:721 +msgid "" +"Would you allow WP Rocket to collect non-sensitive diagnostic data from this" +" website?" +msgstr "" +"Wil je toestaan dat WP Rocket niet-gevoelige diagnostische gegevens van deze" +" website verzameld?" + +#: inc/admin/ui/notices.php:722 +msgid "This would help us to improve WP Rocket for you in the future." +msgstr "Dit helpt ons bij het verbeteren van WP Rocket in de toekomst." + +#: inc/admin/ui/notices.php:728 +msgid "What info will we collect?" +msgstr "Welke informatie zullen we verzamelen?" + +#: inc/admin/ui/notices.php:733 +msgid "" +"Below is a detailed view of all data WP Rocket will collect if granted " +"permission. WP Rocket will never transmit any domain names or email " +"addresses (except for license validation), IP addresses, or third-party API " +"keys." +msgstr "" +"Hieronder is een gedetailleerd overzicht van alle gegevens die WP Rocket zal" +" verzamelen na toestemming. WP Rocket zal nooit domeinnamen of " +"e-mailadressen versturen (behalve voor validatie van licentie), IP-adressen " +"of API-sleutels van derde partijen." + +#: inc/admin/ui/notices.php:742 +msgid "Yes, allow" +msgstr "Ja, toestaan" + +#: inc/admin/ui/notices.php:745 +msgid "No, thanks" +msgstr "Nee, bedankt" + +#: inc/admin/ui/notices.php:783 +msgid "Thank you!" +msgstr "Bedankt!" + +#: inc/admin/ui/notices.php:788 +msgid "WP Rocket now collects these metrics from your website:" +msgstr "WP Rocket verzamelt nu deze gegevens van je website:" + +#: inc/admin/ui/notices.php:825 +#, php-format +msgid "%s: Cache cleared." +msgstr "%s: cache geleegd." + +#: inc/admin/ui/notices.php:830 +#, php-format +msgid "%s: Post cache cleared." +msgstr "%s: bericht-cache geleegd." + +#: inc/admin/ui/notices.php:835 +#, php-format +msgid "%s: Term cache cleared." +msgstr "%s: term-cache geleegd." + +#: inc/admin/ui/notices.php:840 +#, php-format +msgid "%s: User cache cleared." +msgstr "%s: gebruiker-cache geleegd." + +#: inc/admin/ui/notices.php:910 +msgid "" +"The following scheduled event failed to run. This may indicate the CRON " +"system is not running properly, which can prevent some WP Rocket features " +"from working as intended:" +msgid_plural "" +"The following scheduled events failed to run. This may indicate the CRON " +"system is not running properly, which can prevent some WP Rocket features " +"from working as intended:" +msgstr[0] "" +msgstr[1] "" + +#: inc/admin/ui/notices.php:919 +msgid "Please contact your host to check if CRON is working." +msgstr "" + +#: inc/admin/ui/notices.php:958 +msgid "Stop Preload" +msgstr "Stop Preload" + +#: inc/admin/ui/notices.php:976 +msgid "Force deactivation " +msgstr "Deactivatie forceren" + +#: inc/admin/ui/notices.php:989 +msgid "The following code should have been written to this file:" +msgstr "De volgende code moest naar dit bestand worden geschreven:" + +#: inc/admin/ui/notices.php:999 views/settings/page-sections/dashboard.php:45 +msgid "Dismiss this notice." +msgstr "Negeer deze melding." + +#: inc/admin/ui/notices.php:1020 +#, php-format +msgid "%s cannot configure itself due to missing writing permissions." +msgstr "%s kan zichzelf door ontbrekende schrijfrechten niet configureren." + +#: inc/admin/ui/notices.php:1026 +#, php-format +msgid "Affected file/folder: %s" +msgstr "Betreffend(e) bestand/map: %s" + +#: inc/classes/admin/Database/class-optimization.php:41 +#: inc/classes/admin/settings/class-page.php:1289 +msgid "Revisions" +msgstr "Revisies" + +#: inc/classes/admin/Database/class-optimization.php:42 +#: inc/classes/admin/settings/class-page.php:1299 +msgid "Auto Drafts" +msgstr "Automatische concepten" + +#: inc/classes/admin/Database/class-optimization.php:43 +#: inc/classes/admin/settings/class-page.php:1309 +msgid "Trashed Posts" +msgstr "Verwijderde Berichten" + +#: inc/classes/admin/Database/class-optimization.php:44 +#: inc/classes/admin/settings/class-page.php:1319 +msgid "Spam Comments" +msgstr "Spam Reacties" + +#: inc/classes/admin/Database/class-optimization.php:45 +#: inc/classes/admin/settings/class-page.php:1329 +msgid "Trashed Comments" +msgstr "Verwijderde Reacties" + +#: inc/classes/admin/Database/class-optimization.php:46 +#: inc/classes/admin/settings/class-page.php:1339 +msgid "Expired transients" +msgstr "Verlopen transients" + +#: inc/classes/admin/Database/class-optimization.php:47 +msgid "Transients" +msgstr "Transients" + +#: inc/classes/admin/Database/class-optimization.php:48 +msgid "Tables" +msgstr "Tabellen" + +#: inc/classes/admin/class-logs.php:124 +msgid "The debug file could not be deleted." +msgstr "Het debug bestand kan niet verwijderd worden." + +#: inc/classes/admin/settings/class-page.php:212 +#: inc/classes/admin/settings/class-page.php:213 +msgid "Unavailable" +msgstr "Niet beschikbaar" + +#: inc/classes/admin/settings/class-page.php:327 +#: inc/deprecated/deprecated.php:1791 +#: views/settings/page-sections/dashboard.php:72 +msgid "License" +msgstr "Licentie" + +#: inc/classes/admin/settings/class-page.php:344 +msgid "API key" +msgstr "API-sleutel" + +#: inc/classes/admin/settings/class-page.php:359 +msgid "Email address" +msgstr "E-mailadres" + +#: inc/classes/admin/settings/class-page.php:388 +msgid "Dashboard" +msgstr "Dashboard" + +#: inc/classes/admin/settings/class-page.php:389 +msgid "Get help, account info" +msgstr "Krijg hulp, accountinformatie" + +#: inc/classes/admin/settings/class-page.php:398 +msgid "My Status" +msgstr "Mijn status" + +#: inc/classes/admin/settings/class-page.php:408 views/settings/page.php:71 +msgid "Rocket Tester" +msgstr "Rocket Tester" + +#: inc/classes/admin/settings/class-page.php:409 +msgid "I am part of the WP Rocket Beta Testing Program." +msgstr "Ik maak deel uit van het WP Rocket Beta Testing Program." + +#: inc/classes/admin/settings/class-page.php:417 views/settings/page.php:89 +msgid "Rocket Analytics" +msgstr "Rocket Analytics" + +#: inc/classes/admin/settings/class-page.php:419 +#, php-format +msgid "" +"I agree to share anonymous data with the development team to help improve WP" +" Rocket. %1$sWhat info will we collect?%2$s" +msgstr "" +"Ik ga ermee akkoord dat WP Rocket anoniem data met het development team " +"deelt ter verbetering van de plug-in. %1$sWelke informatie verzamelt de " +"plug-in? %2$s" + +#: inc/classes/admin/settings/class-page.php:447 +msgid "Cache" +msgstr "Cache" + +#: inc/classes/admin/settings/class-page.php:448 +msgid "Basic cache options" +msgstr "Basis cache instellingen" + +#: inc/classes/admin/settings/class-page.php:455 +msgid "Mobile Cache" +msgstr "Mobiele cache" + +#: inc/classes/admin/settings/class-page.php:457 +msgid "Speed up your site for mobile visitors." +msgstr "Versnel je site voor mobiele bezoekers." + +#: inc/classes/admin/settings/class-page.php:462 +msgid "" +"We detected you use a plugin that requires a separate cache for mobile, and " +"automatically enabled this option for compatibility." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:466 +msgid "User Cache" +msgstr "Gebruikers Cache" + +#: inc/classes/admin/settings/class-page.php:469 +#, php-format +msgid "" +"%1$sUser cache%2$s is great when you have user-specific or restricted " +"content on your website." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:477 +msgid "Cache Lifespan" +msgstr "Cache Levensduur" + +#: inc/classes/admin/settings/class-page.php:480 +#, php-format +msgid "" +"Cache lifespan is the period of time after which all cache files are " +"removed.
      Enable %1$spreloading%2$s for the cache to be rebuilt " +"automatically after lifespan expiration." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:494 +msgid "Enable caching for logged-in WordPress users" +msgstr "Caching voor ingelogde WordPress-gebruikers inschakelen" + +#: inc/classes/admin/settings/class-page.php:502 +msgid "Enable caching for mobile devices" +msgstr "Caching voor mobiele apparaten inschakelen" + +#: inc/classes/admin/settings/class-page.php:517 +msgid "Separate cache files for mobile devices" +msgstr "Cache-bestanden voor mobiele apparaten scheiden" + +#: inc/classes/admin/settings/class-page.php:519 +#, php-format +msgid "" +"%1$sMobile cache%2$s works safest with both options enabled. When in doubt, " +"keep both." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:535 +msgid "" +"Specify time after which the global cache is cleared
      (0 = unlimited )" +msgstr "" +"Specificeer de tijd waarna de volledige cache automatisch wordt geleegd
      " +" (0 = onbeperkt, niet legen)" + +#: inc/classes/admin/settings/class-page.php:537 +#, php-format +msgid "" +"Reduce lifespan to 10 hours or less if you notice issues that seem to appear" +" periodically. %1$sWhy?%2$s" +msgstr "" +"Verlaag de levensduur naar 10 uur of minder als je problemen ondervindt die " +"soms voorkomen. %1$sWaarom?%2$s" + +#: inc/classes/admin/settings/class-page.php:543 +msgid "Minutes" +msgstr "Minuten" + +#: inc/classes/admin/settings/class-page.php:544 +msgid "Hours" +msgstr "Uren" + +#: inc/classes/admin/settings/class-page.php:545 +msgid "Days" +msgstr "Dagen" + +#: inc/classes/admin/settings/class-page.php:571 +msgid "File Optimization" +msgstr "Bestandsoptimalisatie" + +#: inc/classes/admin/settings/class-page.php:572 +msgid "Optimize CSS & JS" +msgstr "CSS & JS optimaliseren" + +#: inc/classes/admin/settings/class-page.php:579 +msgid "Basic Settings" +msgstr "Basisinstellingen" + +#: inc/classes/admin/settings/class-page.php:586 +#: inc/classes/admin/settings/class-page.php:596 +#: inc/classes/admin/settings/class-page.php:606 +#, php-format +msgid "" +"%1$s Minification is currently activated in Autoptimize. If" +" you want to use %2$s’s minification, disable those options in Autoptimize." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:589 +msgid "CSS Files" +msgstr "CSS-bestanden" + +#: inc/classes/admin/settings/class-page.php:599 +msgid "JavaScript Files" +msgstr "JavaScript-bestanden" + +#: inc/classes/admin/settings/class-page.php:619 +msgid "Minifying HTML removes whitespace and comments to reduce the size." +msgstr "" +"HTML verkleinen verwijdert witruimte en commentaar om de grootte te " +"verminderen." + +#: inc/classes/admin/settings/class-page.php:630 +msgid "Combine Google Fonts files" +msgstr "Google Fonts-bestanden combineren" + +#: inc/classes/admin/settings/class-page.php:631 +msgid "Combining Google Fonts will reduce the number of HTTP requests." +msgstr "" +"Het combineren van Google Fonts zal het aantal HTTP requests verminderen." + +#: inc/classes/admin/settings/class-page.php:639 +msgid "Remove query strings from static resources" +msgstr "Query strings van statische bestanden verwijderen" + +#: inc/classes/admin/settings/class-page.php:641 +#, php-format +msgid "" +"Removes the version query string from static files (e.g. style.css?ver=1.0) " +"and encodes it into the filename instead (e.g. style-1.0.css). Can improve " +"your GTMetrix score. %1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:649 +msgid "Minify CSS files" +msgstr "CSS-bestanden verkleinen" + +#: inc/classes/admin/settings/class-page.php:650 +msgid "Minify CSS removes whitespace and comments to reduce the file size." +msgstr "" +"CSS verkleinen verwijdert witruimte en reacties om de bestandsgrootte te " +"verminderen." + +#: inc/classes/admin/settings/class-page.php:663 +#: inc/classes/admin/settings/class-page.php:685 +#: inc/classes/admin/settings/class-page.php:755 +#: inc/classes/admin/settings/class-page.php:777 +msgid "This could break things!" +msgstr "Dit kan dingen breken!" + +#: inc/classes/admin/settings/class-page.php:664 +#: inc/classes/admin/settings/class-page.php:686 +#: inc/classes/admin/settings/class-page.php:756 +#: inc/classes/admin/settings/class-page.php:778 +msgid "" +"If you notice any errors on your website after having activated this " +"setting, just deactivate it again, and your site will be back to normal." +msgstr "" +"Als je fouten op je website opmerkt na het activeren van deze instelling, " +"deactiveer het dan gewoon en je site zal weer als normaal zijn." + +#: inc/classes/admin/settings/class-page.php:665 +msgid "Activate minify CSS" +msgstr "CSS verkleinen activeren" + +#: inc/classes/admin/settings/class-page.php:670 +msgid "Combine CSS files (Enable Minify CSS files to select)" +msgstr "" +"Combineer CSS bestanden (Schakel Minify CSS bestanden in om te " +"selecteren) " + +#: inc/classes/admin/settings/class-page.php:672 +#, php-format +msgid "" +"Combine CSS merges all your files into 1, reducing HTTP requests. Not " +"recommended if your site uses HTTP/2. %1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:687 +msgid "Activate combine CSS" +msgstr "Activeer het combineren van CSS" + +#: inc/classes/admin/settings/class-page.php:693 +msgid "" +"Specify URLs of CSS files to be excluded from minification and concatenation" +" (one per line)." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:694 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*).css " +"wildcards to exclude all CSS files located at a specific path." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:707 +msgid "Optimize CSS delivery" +msgstr "CSS-levering optimaliseren" + +#: inc/classes/admin/settings/class-page.php:714 +#, php-format +msgctxt "WP Critical CSS compatibility" +msgid "" +"Optimize CSS Delivery is currently handled by the %1$s plugin. If you want " +"to use WP Rocket’s Optimize CSS Delivery option, disable the %1$s plugin." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:716 +#, php-format +msgid "" +"Optimize CSS delivery eliminates render-blocking CSS on your website for " +"faster perceived load time. %1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:727 +msgid "Fallback critical CSS" +msgstr "Terugvallen op kritieke CSS" + +#: inc/classes/admin/settings/class-page.php:732 +#, php-format +msgid "" +"Provides a fallback if auto-generated critical path CSS is incomplete. " +"%1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:741 +msgid "Minify JavaScript files" +msgstr "JavaScript-bestanden verkleinen" + +#: inc/classes/admin/settings/class-page.php:742 +msgid "" +"Minify JavaScript removes whitespace and comments to reduce the file size." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:757 +msgid "Activate minify JavaScript" +msgstr "Activeer het verkleinen van JavaScript" + +#: inc/classes/admin/settings/class-page.php:762 +msgid "" +"Combine JavaScript files (Enable Minify JavaScript files to select)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:764 +#, php-format +msgid "" +"Combine JavaScript files combines your site’s internal, 3rd party and inline" +" JS reducing HTTP requests. Not recommended if your site uses HTTP/2. " +"%1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:779 +msgid "Activate combine JavaScript" +msgstr "Activeer het combineren van JavaScript" + +#: inc/classes/admin/settings/class-page.php:786 +#, php-format +msgid "" +"Specify patterns of inline JavaScript to be excluded from concatenation (one" +" per line). %1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:803 +msgid "" +"Specify URLs of JavaScript files to be excluded from minification and " +"concatenation (one per line)." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:804 +msgid "" +"Internal: The domain part of the URL will be stripped " +"automatically. Use (.*).js wildcards to exclude all JS files located at a " +"specific path." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:806 +#, php-format +msgid "" +"3rd Party: Use either the full URL path or only the domain " +"name, to exclude external JS. %1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:822 +msgid "Load JavaScript deferred" +msgstr "JavaScript uitgesteld laden" + +#: inc/classes/admin/settings/class-page.php:824 +#, php-format +msgid "" +"Load JavaScript deferred eliminates render-blocking JS on your site and can " +"improve load time. %1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:835 +msgid "Safe Mode for jQuery (recommended)" +msgstr "Veilige modus voor Query (aanbevolen)" + +#: inc/classes/admin/settings/class-page.php:836 +msgid "" +"Safe mode for jQuery for deferred JS ensures support for inline jQuery " +"references from themes and plugins by loading jQuery at the top of the " +"document as a render-blocking script.
      Deactivating may result in " +"broken functionality, test thoroughly!" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:861 +msgid "Media" +msgstr "Media" + +#: inc/classes/admin/settings/class-page.php:862 +msgid "LazyLoad, emojis, embeds" +msgstr "LazyLoad, emoji's, embeds" + +#: inc/classes/admin/settings/class-page.php:869 +msgid "LazyLoad" +msgstr "LazyLoad" + +#: inc/classes/admin/settings/class-page.php:872 +#, php-format +msgid "" +"It can improve actual and perceived loading time as images, iframes, and " +"videos will be loaded only as they enter (or about to enter) the viewport " +"and reduces the number of HTTP requests. %1$sMore Info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:879 +#, php-format +msgid "" +"Lazyload is currently activated in Autoptimize. If you want" +" to use %1$s’s lazyload, disable this option in Autoptimize." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:882 +msgid "Emoji 👻" +msgstr "Emoji 👻" + +#: inc/classes/admin/settings/class-page.php:884 +msgid "" +"Use default emoji of visitor's browser instead of loading emoji from " +"WordPress.org" +msgstr "" +"Gebruik de standaard emoji's in het besturingssysteem van de browser in " +"plaats van het laden van emoji's vanaf Wordpress.org" + +#: inc/classes/admin/settings/class-page.php:888 +msgid "Embeds" +msgstr "Embeds" + +#: inc/classes/admin/settings/class-page.php:890 +msgid "" +"Prevents others from embedding content from your site, prevents you from " +"embedding content from other (non-whitelisted) sites, and removes JavaScript" +" requests related to WordPress embeds" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:900 +msgid "Enable for images" +msgstr "Voor afbeeldingen inschakelen" + +#: inc/classes/admin/settings/class-page.php:911 +msgctxt "Avada" +msgid "" +"Lazyload for images is currently activated in Avada. If you want to use WP " +"Rocket’s LazyLoad, disable this option in Avada." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:919 +msgid "Enable for iframes and videos" +msgstr "Voor iframes en video's inschakelen" + +#: inc/classes/admin/settings/class-page.php:934 +msgid "Replace YouTube iframe with preview image" +msgstr "YouTube iframe met voorbeeldafbeelding vervangen" + +#: inc/classes/admin/settings/class-page.php:935 +msgid "" +"This can significantly improve your loading time if you have a lot of " +"YouTube videos on a page." +msgstr "" +"Dit kan je laadtijd aanzienlijk verbeteren als je veel YouTube-video's op " +"een pagina hebt." + +#: inc/classes/admin/settings/class-page.php:947 +msgid "Disable Emoji" +msgstr "Emoji uischakelen" + +#: inc/classes/admin/settings/class-page.php:948 +msgid "Disable Emoji will reduce the number of external HTTP requests." +msgstr "" +"Het uitschakelen van het laden van emoji's extern zal het aantal HTTP " +"verzoeken verminderen." + +#: inc/classes/admin/settings/class-page.php:956 +msgid "Disable WordPress embeds" +msgstr "WordPress Embeds uitschakelen" + +#: inc/classes/admin/settings/class-page.php:978 +#: inc/classes/admin/settings/class-page.php:988 +#: inc/deprecated/deprecated.php:1778 +msgid "Preload" +msgstr "Preloaden" + +#: inc/classes/admin/settings/class-page.php:979 +msgid "Generate cache files" +msgstr "Cachebestanden genereren" + +#: inc/classes/admin/settings/class-page.php:991 +#, php-format +msgid "" +"When you enable preloading WP Rocket will generate the cache starting with " +"the links on your homepage followed by the sitemaps you specify. Preloading " +"is automatically triggered when you add or update content and can also be " +"manually triggered from the admin bar or from the %1$sWP Rocket " +"Dashboard%2$s." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:999 +msgid "Prefetch DNS Requests" +msgstr "DNS verzoeken voorladen" + +#: inc/classes/admin/settings/class-page.php:1001 +msgid "" +"DNS prefetching can make external files load faster, especially on mobile " +"networks" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1015 +msgid "Activate Preloading" +msgstr "Activeer preloading" + +#: inc/classes/admin/settings/class-page.php:1034 +msgid "Activate sitemap-based cache preloading" +msgstr "Op sitemap gebaseerde-cache preloading activeren" + +#: inc/classes/admin/settings/class-page.php:1053 +msgid "Sitemaps for preloading" +msgstr "Sitemaps voor preloading" + +#: inc/classes/admin/settings/class-page.php:1057 +msgid "Specify XML sitemap(s) to be used for preloading" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1067 +msgid "URLs to prefetch" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1068 +msgid "" +"Specify external hosts to be prefetched (no http:, one per " +"line)" +msgstr "" +"Specificeer externe hosts die geprefetched moeten worden (geen " +"http:, één per regel)" + +#: inc/classes/admin/settings/class-page.php:1091 +msgid "Advanced Rules" +msgstr "Geavanceerde regels" + +#: inc/classes/admin/settings/class-page.php:1092 +msgid "Fine-tune cache rules" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1101 +msgid "" +"Sensitive pages like custom login/logout URLs should be excluded from cache." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1104 +msgctxt "plugin name" +msgid "WooCommerce" +msgstr "WooCommerce" + +#: inc/classes/admin/settings/class-page.php:1106 +msgctxt "plugin name" +msgid "Easy Digital Downloads" +msgstr "Easy Digital Downloads" + +#: inc/classes/admin/settings/class-page.php:1108 +msgctxt "plugin name" +msgid "iThemes Exchange" +msgstr "iThemes Exchange" + +#: inc/classes/admin/settings/class-page.php:1110 +msgctxt "plugin name" +msgid "Jigoshop" +msgstr "Jigoshop" + +#: inc/classes/admin/settings/class-page.php:1112 +msgctxt "plugin name" +msgid "WP-Shop" +msgstr "WP-Shop" + +#: inc/classes/admin/settings/class-page.php:1118 +#, php-format +msgid "" +"
      Cart, checkout and \"my account\" pages set in " +"%1$s%2$s%3$s will be detected and never cached by default." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1139 +msgid "Never Cache Cookies" +msgstr "Nooit cookies cachen" + +#: inc/classes/admin/settings/class-page.php:1158 +msgid "Cache Query String(s)" +msgstr "Query string(s) cachen" + +#: inc/classes/admin/settings/class-page.php:1161 +#, php-format +msgid "" +"%1$sCache for query strings%2$s enables you to force caching for specific " +"GET parameters." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1175 +msgid "" +"Specify URLs of pages or posts that should never be cached (one per line)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1176 +#: inc/classes/admin/settings/class-page.php:1204 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*) " +"wildcards to address multiple URLs under a given path." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1185 +msgid "" +"Specify the IDs of cookies that, when set in the visitor's browser, should " +"prevent a page from getting cached (one per line)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1193 +msgid "" +"Specify user agent strings that should never see cached pages (one per line)" +msgstr "" +"Specificeer user agent-strings die nooit gecachte pagina's moeten zien (één " +"per regel)" + +#: inc/classes/admin/settings/class-page.php:1194 +msgid "Use (.*) wildcards to detect parts of UA strings." +msgstr "Gebruikt (.*)-wildcards om delen van UA-strings te detecteren." + +#: inc/classes/admin/settings/class-page.php:1203 +msgid "" +"Specify URLs you always want purged from cache whenever you update any post " +"or page (one per line)" +msgstr "" +"Specificeer URL's die je altijd uit de cache wilt legen als je een bericht " +"of pagina bijwerkt (één per regel)" + +#: inc/classes/admin/settings/class-page.php:1212 +msgid "Specify query strings for caching (one per line)" +msgstr "Specificeer query strings voor caching (één per regel)" + +#: inc/classes/admin/settings/class-page.php:1240 +#: inc/deprecated/deprecated.php:1777 +msgid "Database" +msgstr "Database" + +#: inc/classes/admin/settings/class-page.php:1241 +msgid "Optimize, reduce bloat" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1250 +msgid "Post Cleanup" +msgstr "Berichten Opschonen" + +#: inc/classes/admin/settings/class-page.php:1252 +msgid "" +"Post revisions and drafts will be permanently deleted. Do not use this " +"option if you need to retain revisions or drafts." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1260 +msgid "Comments Cleanup" +msgstr "Reacties Opschonen" + +#: inc/classes/admin/settings/class-page.php:1262 +msgid "Spam and trashed comments will be permanently deleted." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1266 +msgid "Transients Cleanup" +msgstr "Transients Opschonen" + +#: inc/classes/admin/settings/class-page.php:1268 +msgid "" +"Transients are temporary options; they are safe to remove. They will be " +"automatically regenerated as your plugins require them." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1272 +msgid "Database Cleanup" +msgstr "Database opschonen" + +#: inc/classes/admin/settings/class-page.php:1274 +msgid "Reduces overhead of database tables" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1278 +msgid "Automatic cleanup" +msgstr "Automatisch opschonen" + +#: inc/classes/admin/settings/class-page.php:1291 +#, php-format +msgid "%s revision in your database." +msgid_plural "%s revisions in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1301 +#, php-format +msgid "%s draft in your database." +msgid_plural "%s drafts in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1311 +#, php-format +msgid "%s trashed post in your database." +msgid_plural "%s trashed posts in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1321 +#, php-format +msgid "%s spam comment in your database." +msgid_plural "%s spam comments in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1331 +#, php-format +msgid "%s trashed comment in your database." +msgid_plural "%s trashed comments in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1341 +#, php-format +msgid "%s expired transient in your database." +msgid_plural "%s expired transients in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1349 +msgid "All transients" +msgstr "Alle transients" + +#: inc/classes/admin/settings/class-page.php:1351 +#, php-format +msgid "%s transient in your database." +msgid_plural "%s transients in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1359 +msgid "Optimize Tables" +msgstr "Tabellen optimaliseren" + +#: inc/classes/admin/settings/class-page.php:1361 +#, php-format +msgid "%s table to optimize in your database." +msgid_plural "%s tables to optimize in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1372 +msgid "Schedule Automatic Cleanup" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1384 +msgid "Frequency" +msgstr "Frequentie" + +#: inc/classes/admin/settings/class-page.php:1392 +msgid "Daily" +msgstr "Dagelijks" + +#: inc/classes/admin/settings/class-page.php:1393 +msgid "Weekly" +msgstr "Wekelijks" + +#: inc/classes/admin/settings/class-page.php:1394 +msgid "Monthly" +msgstr "Maandelijks" + +#: inc/classes/admin/settings/class-page.php:1414 +msgid "Integrate your CDN" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1426 +msgid "" +"All URLs of static files (CSS, JS, images) will be rewritten to the CNAME(s)" +" you provide." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1428 +#, php-format +msgid "" +"Not required for services like Cloudflare and Sucuri. Please see our " +"available %1$sAdd-ons%2$s." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1469 +#, php-format +msgid "" +"%1$s%2$s Add-on%3$s is currently enabled. Configuration of the CDN settings " +"is not required for %2$s to work on your site." +msgid_plural "" +"%1$s%2$s Add-ons%3$s are currently enabled. Configuration of the CDN " +"settings is not required for %2$s to work on your site." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1484 +msgid "Enable Content Delivery Network" +msgstr "Content Delivery Network inschakelen" + +#: inc/classes/admin/settings/class-page.php:1493 +msgid "CDN CNAME(s)" +msgstr "CDN CNAME(s)" + +#: inc/classes/admin/settings/class-page.php:1494 +msgid "Specify the CNAME(s) below" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1501 +msgid "" +"Specify URL(s) of files that should not get served via CDN (one per line)." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1502 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*) " +"wildcards to exclude all files of a given file type located at a specific " +"path." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1525 +#: inc/classes/admin/settings/class-page.php:1533 +msgid "Heartbeat" +msgstr "Heartbeat" + +#: inc/classes/admin/settings/class-page.php:1526 +msgid "Control WordPress Heartbeat API" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1534 +msgid "" +"Reducing or disabling the Heartbeat API’s activity can help save some of " +"your server’s resources." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1543 +msgid "Reduce or disable Heartbeat activity" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1544 +msgid "" +"Reducing activity will change Heartbeat frequency from one hit each minute " +"to one hit every 2 minutes." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1544 +msgid "" +"Disabling Heartbeat entirely may break plugins and themes using this API." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1558 +msgid "Do not limit" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1559 +msgid "Reduce activity" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1560 +msgid "Disable" +msgstr "Uitschakelen" + +#: inc/classes/admin/settings/class-page.php:1568 +msgid "Control Heartbeat" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1577 +msgid "Behavior in backend" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1584 +msgid "Behavior in post editor" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1590 +msgid "Behavior in frontend" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1609 +msgid "Add-ons" +msgstr "Add-ons" + +#: inc/classes/admin/settings/class-page.php:1610 +msgid "Add more features" +msgstr "Meer functies toevoegen" + +#: inc/classes/admin/settings/class-page.php:1617 +msgid "One-click Rocket Add-ons" +msgstr "One-click Rocket Add-ons" + +#: inc/classes/admin/settings/class-page.php:1618 +msgid "" +"One-Click Add-ons are features extending available options without " +"configuration needed. Switch the option \"on\" to enable from this screen." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1628 +msgid "Rocket Add-ons" +msgstr "Rocket add-ons" + +#: inc/classes/admin/settings/class-page.php:1629 +msgid "Rocket Add-ons are complementary features extending available options." +msgstr "" +"Rocket add-ons zijn aanvullende functies die beschikbare opties uitbreiden." + +#: inc/classes/admin/settings/class-page.php:1642 +msgid "Google Tracking" +msgstr "Google Tracking" + +#: inc/classes/admin/settings/class-page.php:1648 +msgid "Improve browser caching for Google Analytics" +msgstr "Verbeter de browser caching voor Google Analytics" + +#: inc/classes/admin/settings/class-page.php:1650 +#, php-format +msgid "" +"WP Rocket will host these Google scripts locally on your server to help " +"satisfy the PageSpeed recommendation for Leverage browser " +"caching.
      %1$sLearn more%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1665 +msgid "Facebook Pixel" +msgstr "Facebook Pixel" + +#: inc/classes/admin/settings/class-page.php:1671 +msgid "Improve browser caching for Facebook Pixel" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1673 +#, php-format +msgid "" +"WP Rocket will host these Facebook Pixels locally on your server to help " +"satisfy the PageSpeed recommendation for Leverage browser " +"caching.
      %1$sLearn more%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1706 +msgid "Varnish" +msgstr "Varnish" + +#: inc/classes/admin/settings/class-page.php:1712 +msgid "If Varnish runs on your server, you must activate this add-on." +msgstr "Als Varnish op je server draait, moet je deze add-on activeren." + +#: inc/classes/admin/settings/class-page.php:1714 +#, php-format +msgid "" +"Varnish cache will be purged each time WP Rocket clears its cache to ensure " +"content is always up-to-date.
      %1$sLearn more%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1729 +#: inc/classes/admin/settings/class-page.php:1789 +msgid "Cloudflare" +msgstr "Cloudflare" + +#: inc/classes/admin/settings/class-page.php:1735 +msgid "Integrate your Cloudflare account with this add-on." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1736 +msgid "" +"Provide your account email, global API key, and domain to use options such " +"as clearing the Cloudflare cache and enabling optimal settings with WP " +"Rocket." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1748 +msgid "Clear the Sucuri cache when WP Rocket’s cache is cleared." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1751 +msgid "" +"Provide your API key to clear the Sucuri cache when WP Rocket’s cache is " +"cleared." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1759 +#: inc/classes/admin/settings/class-page.php:1907 +msgid "Sucuri" +msgstr "Sucuri" + +#: inc/classes/admin/settings/class-page.php:1765 +msgid "Synchronize Sucuri cache with this add-on." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1805 +msgid "Cloudflare credentials" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1814 +msgid "Cloudflare settings" +msgstr "Cloudflare-instellingen" + +#: inc/classes/admin/settings/class-page.php:1828 +msgctxt "Cloudflare" +msgid "Global API key:" +msgstr "Globale API-sleutel:" + +#: inc/classes/admin/settings/class-page.php:1829 +msgid "" +"https://support.cloudflare.com/hc/en-us/articles/200167836-Where-do-I-find-" +"my-Cloudflare-API-key-" +msgstr "" +"https://support.cloudflare.com/hc/en-us/articles/200167836-Where-do-I-find-" +"my-Cloudflare-API-key-" + +#: inc/classes/admin/settings/class-page.php:1829 +msgctxt "Cloudflare" +msgid "Find your API key" +msgstr "Vind je API-code" + +#: inc/classes/admin/settings/class-page.php:1841 +msgctxt "Cloudflare" +msgid "Account email" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1850 +msgctxt "Cloudflare" +msgid "Zone ID" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1860 +msgid "Development mode" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1862 +#, php-format +msgid "" +"Temporarily activate development mode on your website. This setting will " +"automatically turn off after 3 hours. %1$sLearn more%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1870 +msgid "Optimal settings" +msgstr "Optimale instellingen" + +#: inc/classes/admin/settings/class-page.php:1871 +msgid "" +"Automatically enhances your Cloudflare configuration for speed, performance " +"grade and compatibility." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1879 +msgid "Relative protocol" +msgstr "Relatief protocol" + +#: inc/classes/admin/settings/class-page.php:1880 +msgid "" +"Should only be used with Cloudflare's flexible SSL feature. URLs of static " +"files (CSS, JS, images) will be rewritten to use // instead of http:// or " +"https://." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1920 +msgid "Sucuri credentials" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1933 +msgctxt "Sucuri" +msgid "" +"Firewall API key (for plugin), must be in format {32 characters}/{32 " +"characters}:" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1934 +msgctxt "Sucuri" +msgid "Find your API key" +msgstr "Vind je API-code" + +#: inc/classes/admin/settings/class-render.php:486 +#: inc/deprecated/deprecated.php:1296 +msgid "Upload file and import settings" +msgstr "Bestand uploaden en instellingen importeren" + +#: inc/classes/admin/settings/class-settings.php:385 +msgid "" +"Sucuri Add-on: The API key for the Sucuri firewall must be in format " +"{32 characters}/{32 characters}." +msgstr "" + +#: inc/classes/admin/settings/class-settings.php:462 +#: inc/deprecated/deprecated.php:1247 +msgid "Settings saved." +msgstr "Instellingen opgeslagen." + +#: inc/classes/class-wp-rocket-requirements-check.php:148 +#, php-format +msgid "To function properly, %1$s %2$s requires at least:" +msgstr "" + +#: inc/classes/class-wp-rocket-requirements-check.php:152 +#, php-format +msgid "" +"PHP %1$s. To use this WP Rocket version, please ask your web host how to " +"upgrade your server to PHP %1$s or higher." +msgstr "" + +#: inc/classes/class-wp-rocket-requirements-check.php:157 +#, php-format +msgid "" +"WordPress %1$s. To use this WP Rocket version, please upgrade WordPress to " +"version %1$s or higher." +msgstr "" + +#: inc/classes/class-wp-rocket-requirements-check.php:160 +msgid "" +"If you are not able to upgrade, you can rollback to the previous version by " +"using the button below." +msgstr "" + +#: inc/classes/class-wp-rocket-requirements-check.php:162 +#: inc/deprecated/deprecated.php:1949 +#, php-format +msgid "Re-install version %s" +msgstr "Versie %s opnieuw installeren" + +#: inc/classes/logger/class-logger.php:253 +#: inc/classes/logger/class-logger.php:285 +msgid "The log file does not exist." +msgstr "Het log bestand bestaat niet." + +#: inc/classes/logger/class-logger.php:259 +#: inc/classes/logger/class-logger.php:291 +msgid "The log file could not be read." +msgstr "Het log bestand kon niet gelezen worden." + +#: inc/classes/logger/class-logger.php:278 +msgid "The logs are not saved into a file." +msgstr "De logs zijn niet opgeslagen in een bestand." + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:88 +#: inc/classes/optimization/CSS/class-critical-css-generation.php:99 +#: inc/classes/optimization/CSS/class-critical-css-generation.php:110 +#: inc/classes/optimization/CSS/class-critical-css-generation.php:120 +#: inc/classes/optimization/CSS/class-critical-css-generation.php:142 +#, php-format +msgid "Critical CSS for %1$s not generated. Error: %2$s" +msgstr "Kritieke CSS voor %1$s niet gegenereerd. Fout: %2$s" + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:99 +msgid "The API returned an invalid response code." +msgstr "De API stuurde een ongeldige reactiecode terug." + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:110 +msgid "The API returned an empty response." +msgstr "De API stuurde een lege reactie terug." + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:145 +#, php-format +msgid "The critical CSS content could not be saved as a file in %s." +msgstr "" +"De kritieke CSS-inhoud kon niet als een bestand in %s worden opgeslagen." + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:154 +#, php-format +msgid "Critical CSS for %s generated." +msgstr "Kritieke CSS voor %s gegenereerd." + +#: inc/classes/preload/class-homepage.php:83 +#, php-format +msgid "" +"Preload encountered an error. Could not gather links on %1$s because of the " +"following error: %2$s. %3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-homepage.php:96 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: %2$s. Security measures could be preventing access. " +"%3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-homepage.php:102 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: 404. Please make sure your homepage is accessible in your " +"browser. %2$sLearn more%3$s." +msgstr "" + +#: inc/classes/preload/class-homepage.php:108 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: 500. Please check with your web host about server access. " +"%2$sLearn more%3$s." +msgstr "" + +#: inc/classes/preload/class-homepage.php:114 +#, php-format +msgid "" +"Preload encountered an error. Could not gather links on %1$s because it " +"returned the following response code: %2$s. %3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:138 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not gather links on %1$s because" +" of the following error: %2$s. %3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:153 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: %2$s. Security measures could be preventing access." +" %3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:158 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: 404. Please make sure you entered the correct " +"sitemap URL and it is accessible in your browser. %2$sLearn more%3$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:163 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: 500. Please check with your web host about server " +"access. %2$sLearn more%3$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:168 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not gather links on %1$s because" +" it returned the following response code: %2$s. %3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:184 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not collect links from %1$s " +"because the file is empty. %2$sLearn more%3$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:205 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not collect links from %1$s " +"because of an error during the XML sitemap parsing. %2$sLearn more%3$s." +msgstr "" + +#: inc/classes/subscriber/Optimization/class-critical-css-subscriber.php:138 +#, php-format +msgid "" +"Critical CSS generation is currently running: %1$d of %2$d page types " +"completed. (Refresh this page to view progress)" +msgstr "" +"Genereren kritieke CSS draait momenteel: %1$d van %2$d paginatypes voltooid." +" (Ververs deze pagina om voortgang te bekijken)" + +#: inc/classes/subscriber/Optimization/class-critical-css-subscriber.php:189 +#, php-format +msgid "Critical CSS generation finished for %1$d of %2$d page types." +msgstr "Genereren kritieke CSS voor %1$d van %2$d paginatypes afgerond." + +#: inc/classes/subscriber/Optimization/class-critical-css-subscriber.php:203 +msgid "Critical CSS generation encountered one or more errors." +msgstr "" + +#: inc/classes/subscriber/Optimization/class-critical-css-subscriber.php:203 +msgid "Learn more." +msgstr "" + +#: inc/classes/subscriber/Tools/class-cache-dir-size-check-subscriber.php:51 +#: inc/classes/subscriber/class-facebook-tracking-cache-busting-subscriber.php:97 +#: inc/classes/subscriber/class-google-tracking-cache-busting-subscriber.php:154 +#: inc/common/cron.php:33 +msgid "weekly" +msgstr "wekelijks" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:148 +msgid "Database optimization process is running" +msgstr "Proces voor optimalisatie database draait" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:179 +msgid "" +"Database optimization process is complete. Everything was already optimized!" +msgstr "" +"Proces voor optimalisatie database is voltooid. Alles was al " +"geoptimaliseerd!" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:182 +msgid "" +"Database optimization process is complete. List of optimized items below:" +msgstr "" +"Proces voor optimalisatie database is voltooid. Lijst van geoptimaliseerde " +"items hieronder:" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:190 +#, php-format +msgid "%1$d %2$s optimized." +msgstr "%1$d %2$s geoptimaliseerd." + +#: inc/classes/subscriber/admin/Settings/class-page-subscriber.php:137 +#: inc/deprecated/deprecated.php:1788 +#: views/settings/page-sections/tools.php:33 +msgid "Tools" +msgstr "Tools" + +#: inc/classes/subscriber/admin/Settings/class-page-subscriber.php:138 +msgid "Import, Export, Rollback" +msgstr "Importeren, exporteren, terugzetten" + +#: inc/classes/subscriber/admin/Settings/class-page-subscriber.php:160 +#: views/settings/page-sections/imagify.php:13 +msgid "Image Optimization" +msgstr "Afbeeldingsoptimalisatie" + +#: inc/classes/subscriber/admin/Settings/class-page-subscriber.php:161 +msgid "Compress your images" +msgstr "Optimaliseer je afbeeldingen" + +#: inc/classes/subscriber/preload/class-preload-subscriber.php:212 +#, php-format +msgid "" +"Preload: WP Rocket has started preloading your website. Go to the %1$sWP " +"Rocket settings%2$s page to track progress." +msgstr "" + +#: inc/classes/subscriber/preload/class-preload-subscriber.php:246 +#, php-format +msgid "" +"Preload: %1$s uncached page has now been preloaded. (refresh to see " +"progress)" +msgid_plural "" +"Preload: %1$s uncached pages have now been preloaded. (refresh to see " +"progress)" +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/subscriber/preload/class-preload-subscriber.php:255 +msgid "The following error happened during gathering of the URLs to preload:" +msgid_plural "" +"The following errors happened during gathering of the URLs to preload:" +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/subscriber/preload/class-preload-subscriber.php:308 +#, php-format +msgid "Preload complete: %d pages have been cached." +msgstr "" + +#: inc/classes/subscriber/preload/class-sitemap-preload-subscriber.php:117 +#, php-format +msgid "" +"%1$sSimpleXML PHP extension%2$s is not enabled on your server. Please " +"contact your host to enable it before running sitemap-based cache " +"preloading." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:72 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"Please deactivate the following %s option which conflicts with WP Rocket " +"features:" +msgid_plural "" +"Please deactivate the following %s options which conflict with WP Rocket " +"features:" +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:145 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sdisable emoji%3$s conflicts with WP Rockets %2$sdisable emoji%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:167 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sremove query strings%3$s conflicts with WP Rocket %2$sremove query " +"strings%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:203 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sGZIP compression%3$s conflicts with WP Rocket %2$sGZIP " +"compression%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:239 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sbrowser caching%3$s conflicts with WP Rocket %2$sbrowser " +"caching%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:271 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$spage caching%3$s conflicts with WP Rocket %2$spage caching%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:305 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sasset optimization%3$s conflicts with WP Rocket %2$sfile " +"optimization%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:123 +#, php-format +msgid "Sucuri cache purge error: %s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:128 +msgid "" +"The Sucuri cache is being cleared. Note that it may take up to two minutes " +"for it to be fully flushed." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:242 +msgid "Sucuri firewall API key was not found." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:251 +msgid "Sucuri firewall API key is invalid." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:303 +msgid "Error when contacting Sucuri firewall API." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:313 +#, php-format +msgid "Error when contacting Sucuri firewall API. Error message was: %s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:324 +msgid "Could not get a response from the Sucuri firewall API." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:335 +msgid "Got an invalid response from the Sucuri firewall API." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:345 +msgid "The Sucuri firewall API returned an unknown error." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:348 +#, php-format +msgid "The Sucuri firewall API returned the following error: %s" +msgid_plural "The Sucuri firewall API returned the following errors: %s" +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/traits/trait-updater-api-tools.php:53 +#: inc/deprecated/3.3.php:760 inc/deprecated/3.3.php:769 +#, php-format +msgid "" +"An unexpected error occurred. Something may be wrong with WP-Rocket.me or " +"this server’s configuration. If you continue to have problems,
      contact support." +msgstr "" +"Er deed zich een onverwachte fout voor. Er kan iets mis zijn met WP-" +"Rocket.me of de configuratie van deze server. Als je deze problemen blijft " +"houden, neem dan contact op met onze ondersteuning." + +#: inc/common/admin-bar.php:106 inc/common/admin-bar.php:260 +#: inc/functions/i18n.php:39 inc/functions/i18n.php:48 +msgid "All languages" +msgstr "Alle talen" + +#: inc/common/admin-bar.php:133 +msgid "Clear this post" +msgstr "Dit bericht legen" + +#: inc/common/admin-bar.php:147 +msgid "Purge this URL" +msgstr "Deze URL legen" + +#: inc/common/admin-bar.php:163 +msgid "Purge OPcache" +msgstr "OPcache legen" + +#: inc/common/admin-bar.php:180 +msgid "Regenerate Critical Path CSS" +msgstr "Pad naar kritieke CSS opnieuw genereren" + +#: inc/common/admin-bar.php:196 +msgid "Clear Cloudflare cache" +msgstr "Cloudflare-cache legen" + +#: inc/common/admin-bar.php:217 inc/common/admin-bar.php:272 +#: views/settings/page-sections/dashboard.php:135 +msgid "Preload cache" +msgstr "Cache preloaden" + +#: inc/common/admin-bar.php:287 views/settings/partials/documentation.php:13 +msgid "Documentation" +msgstr "Documentatie" + +#: inc/common/cron.php:24 +#, php-format +msgid "%s clear" +msgstr "%s legen" + +#: inc/common/cron.php:39 +msgid "monthly" +msgstr "maandelijks" + +#: inc/common/purge.php:456 +#, php-format +msgid "Cloudflare cache purge error: %s" +msgstr "Fout bij legen Cloudflare-cache: %s" + +#: inc/common/purge.php:461 +msgid "Cloudflare cache successfully purged" +msgstr "Cloudflare-cache succesvol geleegd" + +#: inc/deprecated/3.2.php:51 views/settings/page-sections/imagify.php:35 +msgid "Activate Imagify" +msgstr "Imagify activeren" + +#: inc/deprecated/3.2.php:51 +msgid "Install Imagify for Free" +msgstr "Imagify gratis installeren" + +#: inc/deprecated/3.2.php:66 +msgid "" +"Speed up your website and boost your SEO by reducing image file sizes " +"without losing quality with Imagify." +msgstr "" +"Versnel je website en boost je SEO door het verkleinen van groottes van " +"afbeeldingsbestanden zonder de kwaliteit te verliezen met Imagify." + +#: inc/deprecated/3.2.php:71 +msgid "More details" +msgstr "Meer details" + +#: inc/deprecated/3.2.php:227 +#, php-format +msgid "Sitemap preload: %d pages have been cached." +msgstr "Preloaden sitemap: %d pagina's zijn gecacht." + +#: inc/deprecated/3.2.php:260 +#, php-format +msgid "" +"Sitemap preload: %d uncached pages have now been preloaded. (refresh to see " +"progress)" +msgstr "" +"Preloaden sitemap: %d niet-gecachte pagina's zijn nu gepreload. (Ververs om " +"voortgang te bekijken)" + +#: inc/deprecated/deprecated.php:242 +msgid "JS files with Deferred Loading JavaScript" +msgstr "JS-bestanden met uitgesteld laden-JavaScript" + +#: inc/deprecated/deprecated.php:295 +msgid "Add URL" +msgstr "URL toevoegen" + +#: inc/deprecated/deprecated.php:1279 views/settings/fields/import-form.php:22 +msgid "" +"Before you can upload your import file, you will need to fix the following " +"error:" +msgstr "" +"Voordat je je importbestand kunt uploaden, moet je de volgende fout " +"oplossen:" + +#: inc/deprecated/deprecated.php:1290 views/settings/fields/import-form.php:35 +#, php-format +msgid "Choose a file from your computer (maximum size: %s)" +msgstr "Kies een bestand van je computer (maximale grootte: %s)" + +#: inc/deprecated/deprecated.php:1387 +msgid "Your Cloudflare credentials are valid." +msgstr "Je Cloudflare-gegevens zijn geldig." + +#: inc/deprecated/deprecated.php:1391 +msgid "Your Cloudflare credentials are invalid!" +msgstr "Je Cloudflare-gegevens zijn ongeldig!" + +#: inc/deprecated/deprecated.php:1455 +msgid "Save and optimize" +msgstr "Opslaan en optimaliseren" + +#: inc/deprecated/deprecated.php:1455 +#: views/settings/page-sections/database.php:27 +msgid "Optimize" +msgstr "Optimaliseren" + +#: inc/deprecated/deprecated.php:1466 inc/deprecated/deprecated.php:1668 +msgctxt "screen-reader-text" +msgid "Note:" +msgstr "Opmerking:" + +#: inc/deprecated/deprecated.php:1472 +msgctxt "screen-reader-text" +msgid "Performance tip:" +msgstr "Prestatietip:" + +#: inc/deprecated/deprecated.php:1478 +msgctxt "screen-reader-text" +msgid "Third-party feature detected:" +msgstr "Functie van derde partij gedetecteerd:" + +#: inc/deprecated/deprecated.php:1490 inc/deprecated/deprecated.php:1674 +msgctxt "screen-reader-text" +msgid "Warning:" +msgstr "Waarschuwing:" + +#: inc/deprecated/deprecated.php:1503 +msgctxt "button text" +msgid "Download settings" +msgstr "Instellingen downloaden" + +#: inc/deprecated/deprecated.php:1533 +msgid "Replace site's hostname with:" +msgstr "Hostnaam site vervangen door:" + +#: inc/deprecated/deprecated.php:1552 inc/deprecated/deprecated.php:1589 +#: inc/deprecated/deprecated.php:1617 views/settings/fields/cnames.php:32 +#: views/settings/fields/cnames.php:63 views/settings/fields/cnames.php:93 +msgid "reserved for" +msgstr "voorbehouden aan" + +#: inc/deprecated/deprecated.php:1554 inc/deprecated/deprecated.php:1591 +#: inc/deprecated/deprecated.php:1619 views/settings/fields/cnames.php:35 +#: views/settings/fields/cnames.php:66 views/settings/fields/cnames.php:96 +msgid "All files" +msgstr "Alle bestanden" + +#: inc/deprecated/deprecated.php:1566 inc/deprecated/deprecated.php:1596 +#: inc/deprecated/deprecated.php:1624 views/settings/fields/cnames.php:47 +#: views/settings/fields/cnames.php:78 views/settings/fields/cnames.php:108 +msgid "Images" +msgstr "Afbeeldingen" + +#: inc/deprecated/deprecated.php:1637 views/settings/fields/cnames.php:119 +msgid "Add CNAME" +msgstr "CNAME toevoegen" + +#: inc/deprecated/deprecated.php:1708 +msgid "Watch the video" +msgstr "Bekijk de video" + +#: inc/deprecated/deprecated.php:1773 +msgid "Basic" +msgstr "Basis" + +#: inc/deprecated/deprecated.php:1774 +msgid "Static Files" +msgstr "Statische bestanden" + +#: inc/deprecated/deprecated.php:1776 +msgid "Advanced" +msgstr "Geavanceerd" + +#: inc/deprecated/deprecated.php:1946 +#, php-format +msgid "" +"%1$s %2$s requires at least PHP %3$s to function properly. To use this " +"version, please ask your web host how to upgrade your server to PHP %3$s or " +"higher. If you are not able to upgrade, you can rollback to the previous " +"version by using the button below." +msgstr "" +"%1$s %2$s vereist minstens PHP %3$s om juist te functioneren. Om deze versie" +" te gebruiken, moet je je webhost vragen hoe je je server naar PHP %3$s of " +"hoger kunt upgraden. Als je niet kunt upgraden, kun je naar de vorige versie" +" terugdraaien door de knop hieronder te gebruiken." + +#: inc/functions/admin.php:23 +msgid "" +"There seems to be an issue validating your license. Please see the error " +"message below." +msgid_plural "" +"There seems to be an issue validating your license. You can see the error " +"messages below." +msgstr[0] "" +msgstr[1] "" + +#: inc/functions/admin.php:361 +msgid "Server type:" +msgstr "Type server:" + +#: inc/functions/admin.php:370 +msgid "PHP version number:" +msgstr "PHP-versienummer:" + +#: inc/functions/admin.php:379 +msgid "WordPress version number:" +msgstr "WordPress-versienummer:" + +#: inc/functions/admin.php:388 +msgid "WordPress multisite:" +msgstr "WordPress multisite:" + +#: inc/functions/admin.php:397 +msgid "Current theme:" +msgstr "Huidig thema:" + +#: inc/functions/admin.php:406 +msgid "Current site language:" +msgstr "Huidige taal site:" + +#: inc/functions/admin.php:415 +msgid "Active plugins:" +msgstr "Actieve plugins:" + +#: inc/functions/admin.php:418 +msgid "Plugin names of all active plugins" +msgstr "Pluginnamen van alle actieve plugins" + +#: inc/functions/admin.php:424 +msgid "Anonymized WP Rocket settings:" +msgstr "Geanonimiseerde WP Rocket-instellingen:" + +#: inc/functions/admin.php:427 +msgid "Which WP Rocket settings are active" +msgstr "Welke WP Rocket-instellingen zijn actief" + +#: inc/functions/cloudflare.php:14 +msgid "" +"Curl functions are disabled, they are required for the Cloudflare Add-on to " +"work correctly." +msgstr "" + +#: inc/functions/cloudflare.php:21 +msgid "Cloudflare Email and API key are not set" +msgstr "E-mailadres en API-sleutel van Cloudflare zijn niet ingesteld" + +#: inc/functions/cloudflare.php:52 +#, php-format +msgid "Missing Cloudflare zone ID. %s could not fix this automatically." +msgstr "Ontbrekende Cloudflare zone ID. %s kon dit niet automatisch oplossen." + +#: inc/functions/cloudflare.php:58 +#, php-format +msgid "Read the %1$sdocumentation%2$s for further guidance." +msgstr "Lees de %1$sdocumentatie%2$s voor verdere begeleiding." + +#: inc/functions/cloudflare.php:60 +msgid "" +"https://docs.wp-rocket.me/article/18-using-wp-rocket-with-" +"cloudflare/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://docs.wp-rocket.me/article/18-using-wp-rocket-with-" +"cloudflare/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: inc/functions/cloudflare.php:100 +msgid "Connection to Cloudflare failed" +msgstr "Verbinding naar Cloudflare mislukt" + +#: inc/functions/cloudflare.php:122 +msgid "Choose a domain from the list" +msgstr "Kies een domein uit de lijst" + +#: inc/functions/cloudflare.php:135 +msgid "No domain available in your Cloudflare account" +msgstr "Geen domein beschikbaar in je Cloudflare-account" + +#: inc/functions/options.php:580 inc/functions/options.php:619 +msgid "" +"License validation failed. Our server could not resolve the request from " +"your website." +msgstr "" + +#: inc/functions/options.php:580 inc/functions/options.php:619 +#, php-format +msgid "" +"Try clicking %1$sSave Changes%2$s below. If the error persists, follow " +"%3$sthis guide%4$s." +msgstr "" + +#: inc/functions/options.php:596 +msgid "" +"License validation failed. You may be using a nulled version of the plugin. " +"Please do the following:" +msgstr "" + +#: inc/functions/options.php:596 inc/functions/options.php:638 +#, php-format +msgid "Login to your WP Rocket %1$saccount%2$s" +msgstr "" + +#: inc/functions/options.php:596 inc/functions/options.php:638 +msgid "Download the zip file" +msgstr "Download het zip bestand" + +#: inc/functions/options.php:596 inc/functions/options.php:638 +msgid "Reinstall" +msgstr "Herinstalleren" + +#: inc/functions/options.php:596 +#, php-format +msgid "" +"If you do not have a WP Rocket account, please %1$spurchase a license%2$s." +msgstr "" + +#: inc/functions/options.php:604 +msgid "" +"License validation failed. This user account does not exist in our database." +msgstr "" + +#: inc/functions/options.php:604 +msgid "To resolve, please contact support." +msgstr "Om op te lossen, gelieve support te contacteren." + +#: inc/functions/options.php:612 +msgid "License validation failed. This user account is blacklisted." +msgstr "" + +#: inc/functions/options.php:612 +#, php-format +msgid "Please see %1$sthis guide%2$s for more info." +msgstr "" + +#: inc/functions/options.php:632 +msgid "Your license is not valid." +msgstr "Je licentie is niet geldig." + +#: inc/functions/options.php:632 +#, php-format +msgid "Make sure you have an active %1$sWP Rocket license%2$s." +msgstr "" + +#: inc/functions/options.php:634 +msgid "You have added as many sites as your current license allows." +msgstr "" + +#: inc/functions/options.php:634 +#, php-format +msgid "" +"Upgrade your %1$saccount%2$s or %3$stransfer your license%2$s to this " +"domain." +msgstr "" + +#: inc/functions/options.php:636 +msgid "This website is not allowed." +msgstr "Deze website is niet toegestaan." + +#: inc/functions/options.php:636 +#, php-format +msgid "Please %1$scontact support%2$s." +msgstr "Neem contact op met %1$sde support%2$s." + +#: inc/functions/options.php:638 +msgid "This license key is not recognized." +msgstr "Deze licentie code word niet herkend." + +#: inc/functions/options.php:638 +#, php-format +msgid "If the issue persists, please %1$scontact support%2$s." +msgstr "" + +#: inc/functions/options.php:644 +#, php-format +msgid "License validation failed: %s" +msgstr "Validatie van de licentie is mislukt: %s" + +#: inc/vendors/classes/class-imagify-partner.php:531 +msgid "Plugin installed successfully." +msgstr "De plugin is succesvol geïnstalleerd." + +#: inc/vendors/classes/class-imagify-partner.php:532 +msgid "Sorry, you are not allowed to install plugins on this site." +msgstr "" +"Sorry, je hebt niet de juiste rechten om een plugin te installeren op deze " +"website." + +#: inc/vendors/classes/class-imagify-partner.php:533 +msgid "Sorry, you are not allowed to do that." +msgstr "Sorry, je hebt niet de juiste rechten om dit te doen." + +#: inc/vendors/classes/class-imagify-partner.php:534 +msgid "Plugin install failed." +msgstr "Plugin installatie mislukt." + +#: inc/vendors/classes/class-imagify-partner.php:535 +msgid "Go back" +msgstr "Ga terug" + +#: views/deactivation-intent/form.php:20 +msgid "Return" +msgstr "Terug" + +#: views/deactivation-intent/form.php:21 +msgid "WP Rocket feedback" +msgstr "WP Rocket feedback" + +#: views/deactivation-intent/form.php:23 +msgid "Close" +msgstr "Sluiten" + +#: views/deactivation-intent/form.php:27 +msgid "May we have a little info about why you are deactivating?" +msgstr "Mogen we wat informatie over waarom je gaat deactiveren?" + +#: views/deactivation-intent/form.php:31 +msgid "" +"It is a temporary deactivation. I am just debugging an " +"issue." +msgstr "" + +#: views/deactivation-intent/form.php:35 +msgid "The plugin broke my layout or some functionality." +msgstr "" +"De plugin brak mijn layout of enkele functionaliteiten." + +#: views/deactivation-intent/form.php:39 +msgid "My PageSpeed or GTMetrix score did not improve." +msgstr "Mijn PageSpeed- of GTMetrix-score verbeterde niet." + +#: views/deactivation-intent/form.php:43 +msgid "I did not notice a difference in loading time." +msgstr "Ik merkte geen verschil in laadtijd." + +#: views/deactivation-intent/form.php:47 +msgid "The plugin is too complicated to configure." +msgstr "De plugin is te ingewikkeld om te configureren." + +#: views/deactivation-intent/form.php:51 +msgid "My host already has its own caching system." +msgstr "Mijn host heeft al zijn eigen caching-systeem." + +#: views/deactivation-intent/form.php:53 +msgid "What is the name of your web host?" +msgstr "Wat is de naam van je webhost?" + +#: views/deactivation-intent/form.php:58 +msgid "Other" +msgstr "Anders" + +#: views/deactivation-intent/form.php:60 +msgid "" +"Let us know why you are deactivating WP Rocket so we can improve the plugin" +msgstr "" +"Laat ons weten waarom je WP Rocket hebt gedeactiveerd zodat we de plugin " +"kunnen verbeteren" + +#: views/deactivation-intent/form.php:68 +msgid "The plugin broke my layout or some functionality" +msgstr "De plugin brak mijn layout of enkele functionaliteiten" + +#: views/deactivation-intent/form.php:69 +msgid "" +"This type of issue can usually be fixed by deactivating some options in WP " +"Rocket." +msgstr "" + +#: views/deactivation-intent/form.php:70 +msgid "" +"Click \"Apply Safe Mode\" to quickly disable LazyLoad, File Optimization, " +"Embeds and CDN options. Then check your site to see if the issue has " +"resolved." +msgstr "" + +#: views/deactivation-intent/form.php:72 +msgid "Apply safe mode" +msgstr "Veilige modus toepassen" + +#: views/deactivation-intent/form.php:75 +msgid "Safe mode applied." +msgstr "Veilige modus toegepast." + +#: views/deactivation-intent/form.php:76 +msgid "Review your site in a private/logged out browser window." +msgstr "" + +#: views/deactivation-intent/form.php:78 +msgid "" +"Is the issue fixed? Now you can reactivate options one at a time to " +"determine which one caused the problem. More info" +msgstr "" + +#: views/deactivation-intent/form.php:81 +msgid "My PageSpeed or GT Metrix score did not improve" +msgstr "Mijn PageSpeed- of GTMetrix-score verbeterde niet" + +#: views/deactivation-intent/form.php:82 +msgid "" +"WP Rocket makes your site faster. The PageSpeed grade or GTMetrix score are " +"not indicators of speed. Neither your real visitors, nor Google will ever " +"see your website’s “grade”. Speed is the only metric that matters for SEO " +"and conversions." +msgstr "" + +#: views/deactivation-intent/form.php:83 +msgid "Yoast, the expert on all things related to SEO for WordPress states:" +msgstr "" + +#: views/deactivation-intent/form.php:84 +msgid "" +"[Google] just looks at how fast your website loads for users, so you don’t " +"have to obsess over that specific score. You have to make sure your website " +"is as fast as you can get it." +msgstr "" + +#: views/deactivation-intent/form.php:87 +msgid "" +"How to measure the load time of your site:
      https" +"://wp-rocket.me/blog/correctly-measure-websites-page-load-time/" +msgstr "" + +#: views/deactivation-intent/form.php:88 +msgid "" +"Why you should not be chasing a PageSpeed score:
      https://wp-rocket.me/blog/the-truth-about-google-" +"pagespeed-insights/" +msgstr "" + +#: views/deactivation-intent/form.php:91 +msgid "I did not notice a difference in loading time" +msgstr "Ik merkte een verschil ik laadtijd" + +#: views/deactivation-intent/form.php:92 +msgid "" +"Make sure you look at your site while logged out to see the fast, cached " +"pages!" +msgstr "" + +#: views/deactivation-intent/form.php:93 +msgid "" +"The best way to see the improvement WP Rocket provides is to perform speed " +"tests. Follow this guide to correctly measure the load time of your " +"website:
      https://wp-rocket.me/blog/correctly-measure-websites-page-" +"load-time/" +msgstr "" + +#: views/deactivation-intent/form.php:96 +msgid "The plugin is too complicated to configure" +msgstr "De plugin configuratie is te ingewikkeld" + +#: views/deactivation-intent/form.php:97 +msgid "We are sorry to hear you are finding it difficult to use WP Rocket." +msgstr "" + +#: views/deactivation-intent/form.php:98 +#, php-format +msgid "" +"WP Rocket is the only caching plugin that provides 80% of best practices in " +"speed optimization, by default. That means you do not have to do anything " +"besides activate WP Rocket and your site will already be faster!" +msgstr "" + +#: views/deactivation-intent/form.php:99 +msgid "" +"The additional options are not required for a fast site, they are for fine-" +"tuning." +msgstr "" + +#: views/deactivation-intent/form.php:100 +msgid "" +"To see the benefit WP Rocket is already providing, measure the speed of your" +" site using a tool like Pingdom:
      https" +"://wp-rocket.me/blog/correctly-measure-websites-page-load-time/" +msgstr "" + +#: views/deactivation-intent/form.php:105 +msgid "Send & Deactivate" +msgstr "Versturen & deactiveren" + +#: views/deactivation-intent/form.php:106 +msgid "Cancel" +msgstr "Annuleren" + +#: views/deactivation-intent/form.php:108 +msgid "Skip & Deactivate" +msgstr "Overslaan & deactiveren" + +#: views/settings/fields/cache-lifespan.php:26 +msgid "Clear cache after" +msgstr "Cache legen na" + +#: views/settings/fields/cnames.php:49 views/settings/fields/cnames.php:80 +#: views/settings/fields/cnames.php:110 +msgid "CSS & JavaScript" +msgstr "CSS & JavaScript" + +#: views/settings/fields/cnames.php:50 views/settings/fields/cnames.php:81 +#: views/settings/fields/cnames.php:111 +msgid "JavaScript" +msgstr "JavaScript" + +#: views/settings/fields/cnames.php:51 views/settings/fields/cnames.php:82 +#: views/settings/fields/cnames.php:112 +msgid "CSS" +msgstr "CSS" + +#: views/settings/fields/import-form.php:29 +msgid "Import settings" +msgstr "Instellingen importeren" + +#: views/settings/fields/one-click-addon.php:39 +#: views/settings/fields/rocket-addon.php:31 +#: views/settings/fields/sliding-checkbox.php:24 views/settings/page.php:54 +msgctxt "Active state of checkbox" +msgid "On" +msgstr "Aan" + +#: views/settings/fields/one-click-addon.php:40 +#: views/settings/fields/rocket-addon.php:32 +#: views/settings/fields/sliding-checkbox.php:25 views/settings/page.php:55 +msgctxt "Inactive state of checkbox" +msgid "Off" +msgstr "Uit" + +#: views/settings/fields/one-click-addon.php:41 +#: views/settings/fields/rocket-addon.php:33 +msgid "Add-on status" +msgstr "Status add-on" + +#: views/settings/fields/rocket-addon.php:56 +msgid "Modify options" +msgstr "Opties aanpassen" + +#: views/settings/page-sections/cloudflare.php:26 +msgid "Cloudflare Cache" +msgstr "Cloudflare Cache" + +#: views/settings/page-sections/cloudflare.php:33 +#: views/settings/page-sections/sucuri.php:34 +#, php-format +msgid "Purges cached resources for your website. %s" +msgstr "Leegt gecachte bronnen op je website. %s" + +#: views/settings/page-sections/cloudflare.php:34 +msgid "https://support.cloudflare.com/hc/en-us/articles/200169246" +msgstr "https://support.cloudflare.com/hc/en-us/articles/200169246" + +#: views/settings/page-sections/cloudflare.php:34 +#: views/settings/page-sections/sucuri.php:35 +msgid "Learn more" +msgstr "Meer weten" + +#: views/settings/page-sections/cloudflare.php:40 +msgid "Clear all Cloudflare cache files" +msgstr "Alle Cloudflare cache bestanden legen" + +#: views/settings/page-sections/dashboard.php:37 +msgid "Congratulations!" +msgstr "Gefeliciteerd!" + +#: views/settings/page-sections/dashboard.php:39 +msgid "WP Rocket is now activated and already working for you." +msgstr "" + +#: views/settings/page-sections/dashboard.php:41 +msgid "Your website should be loading faster now!" +msgstr "" + +#: views/settings/page-sections/dashboard.php:43 +#, php-format +msgid "" +"To guarantee fast websites, WP Rocket applies 80% of web performance best " +"practices." +msgstr "" + +#: views/settings/page-sections/dashboard.php:43 +msgid "" +"We also enable options that provide immediate benefits to your website." +msgstr "" + +#: views/settings/page-sections/dashboard.php:44 +msgid "Continue to the options to further optimize your site!" +msgstr "" + +#: views/settings/page-sections/dashboard.php:54 +msgid "My Account" +msgstr "Mijn account" + +#: views/settings/page-sections/dashboard.php:60 +msgid "Refresh info" +msgstr "" + +#: views/settings/page-sections/dashboard.php:74 +msgid "Expiration Date" +msgstr "Einddatum" + +#: views/settings/page-sections/dashboard.php:83 +msgid "View my account" +msgstr "Mijn account bekijken" + +#: views/settings/page-sections/dashboard.php:103 +msgid "Quick Actions" +msgstr "Snelle acties" + +#: views/settings/page-sections/dashboard.php:109 +msgid "Remove all cached files" +msgstr "Alle gecachte bestanden verwijderen" + +#: views/settings/page-sections/dashboard.php:129 +msgid "Start cache preloading" +msgstr "Cache preloading starten" + +#: views/settings/page-sections/dashboard.php:147 +msgid "Purge OPCache content" +msgstr "Inhoud OPCache legen" + +#: views/settings/page-sections/dashboard.php:153 +msgid "Purge OPCache" +msgstr "OPCache legen" + +#: views/settings/page-sections/dashboard.php:164 +#: views/settings/page-sections/dashboard.php:170 +msgid "Regenerate Critical CSS" +msgstr "Kritieke CSS opnieuw genereren" + +#: views/settings/page-sections/dashboard.php:186 +msgid "Frequently Asked Questions" +msgstr "Veelgestelde vragen" + +#: views/settings/page-sections/dashboard.php:199 +msgid "Still cannot find a solution?" +msgstr "Geen oplossing gevonden?" + +#: views/settings/page-sections/dashboard.php:200 +msgid "" +"Submit a ticket and get help from our friendly and knowledgeable Rocketeers." +msgstr "" + +#: views/settings/page-sections/dashboard.php:208 +msgid "Ask support" +msgstr "Vraag het de support" + +#: views/settings/page-sections/database.php:24 +msgid "Backup your database before you run a cleanup!" +msgstr "Backup je database voordat je het opschonen begint!" + +#: views/settings/page-sections/database.php:25 +msgid "" +"Once a database optimization has been performed, there is no way to undo it." +msgstr "" + +#: views/settings/page-sections/imagify.php:20 +#, php-format +msgid "" +"%1$sWP ROCKET%2$s created %3$sIMAGIFY%4$s %1$sfor best-in-class image " +"optimization.%2$s" +msgstr "" + +#: views/settings/page-sections/imagify.php:23 +msgid "" +"Compress image to make your website faster, all while maintaining image " +"quality." +msgstr "" + +#: views/settings/page-sections/imagify.php:24 +msgid "More on Imagify:" +msgstr "Meer over Imagify:" + +#: views/settings/page-sections/imagify.php:26 +msgid "Imagify Plugin Page" +msgstr "Imagify Plugin Pagina" + +#: views/settings/page-sections/imagify.php:27 +msgid "Imagify Website" +msgstr "Imagify Website" + +#: views/settings/page-sections/imagify.php:28 +msgid "Review of Image Compression Plugins" +msgstr "" + +#: views/settings/page-sections/imagify.php:37 +msgid "Install Imagify" +msgstr "Installeer Imagify" + +#: views/settings/page-sections/license.php:21 +msgid "WP Rocket was not able to automatically validate your license." +msgstr "WP Rocket kon je licentie niet automatisch valideren." + +#: views/settings/page-sections/license.php:26 +#, php-format +msgid "" +"Follow this tutorial, or contact support to get the engine started." +msgstr "" + +#: views/settings/page-sections/license.php:26 +msgid "" +"https://docs.wp-rocket.me/article/100-resolving-problems-with-license-" +"validation/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://docs.wp-rocket.me/article/100-resolving-problems-with-license-" +"validation/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: views/settings/page-sections/sucuri.php:41 +msgid "Clear all Sucuri cache files" +msgstr "Verwijder alle Sucuri cache bestanden" + +#: views/settings/page-sections/tools.php:20 +#, php-format +msgid "Files size: %1$s. Number of entries: %2$s." +msgstr "" + +#: views/settings/page-sections/tools.php:23 +#, php-format +msgid "%1$sDownload the file%2$s." +msgstr "%1$sDownload het bestand%2$s." + +#: views/settings/page-sections/tools.php:26 +#, php-format +msgid "%1$sDelete the file%2$s." +msgstr "%1$sVerwijder het bestand%2$s." + +#: views/settings/page-sections/tools.php:37 +msgid "Export settings" +msgstr "Instellingen exporteren" + +#: views/settings/page-sections/tools.php:38 +msgid "Download a backup file of your settings" +msgstr "Download een back-upbestand van je instellingen" + +#: views/settings/page-sections/tools.php:43 +msgid "Download settings" +msgstr "Instellingen downloaden" + +#: views/settings/page-sections/tools.php:56 +msgid "Rollback" +msgstr "Terugdraaien" + +#: views/settings/page-sections/tools.php:60 +#, php-format +msgid "Has version %s caused an issue on your website?" +msgstr "Heeft versie %s voor problemen op je website gezorgd?" + +#: views/settings/page-sections/tools.php:62 +msgid "" +"You can rollback to the previous major version here.
      Then send us a " +"support request." +msgstr "" + +#: views/settings/page-sections/tools.php:69 +#, php-format +msgid "Reinstall version %s" +msgstr "Versie %s opnieuw installeren" + +#: views/settings/page-sections/tools.php:85 +msgid "Debug mode" +msgstr "Debug modus" + +#: views/settings/page-sections/tools.php:90 +msgid "Create a debug log file." +msgstr "Creëer een debug log bestand." + +#: views/settings/page.php:16 +msgid "WP Rocket Settings" +msgstr "WP Rocket-instellingen" + +#: views/settings/page.php:30 +#, php-format +msgid "version %s" +msgstr "versie %s" + +#: views/settings/page.php:40 +msgid "Save Changes" +msgstr "Wijzigingen opslaan" + +#: views/settings/page.php:56 +msgid "Show Sidebar" +msgstr "Sidebar weergeven" + +#: views/settings/page.php:75 +msgid "Thanks for choosing to participate in the WP Rocket beta program!" +msgstr "" + +#: views/settings/page.php:76 +msgid "" +"A beta version is usually one that has new features and improvements, but we" +" want to test it a little more before full launch." +msgstr "" + +#: views/settings/page.php:77 +msgid "" +"We’d love it if you took our beta versions for a ride, but please keep in " +"mind that it might be less stable than our other releases. Don’t worry, you " +"can switch back to a full release version at any time." +msgstr "" + +#: views/settings/page.php:78 +msgid "" +"Your mission: please send all feedback about our beta versions, including " +"bug reports, to support@wp-rocket.me" +msgstr "" + +#: views/settings/page.php:80 +msgid "If you don’t want to join the beta program, simply close this window." +msgstr "" + +#: views/settings/page.php:82 +msgid "Activate Rocket Tester" +msgstr "Activeer Rocket Tester" + +#: views/settings/page.php:93 +msgid "" +"Below is a detailed view of all data WP Rocket will collect if " +"granted permission." +msgstr "" + +#: views/settings/page.php:96 +msgid "" +"WP Rocket will never transmit any domain names or email addresses (except " +"for license validation), IP addresses, or third-party API keys." +msgstr "" + +#: views/settings/page.php:98 +msgid "Activate Rocket analytics" +msgstr "Activeer Rocket analytics" + +#: views/settings/partials/documentation.php:14 +msgid "It is a great starting point to fix some of the most common issues." +msgstr "" + +#: views/settings/partials/documentation.php:18 +msgid "Read the documentation" +msgstr "Lees de documentatie" + +#: views/settings/partials/sidebar.php:11 +msgid "How to correctly measure your website’s loading time" +msgstr "" + +#: views/settings/partials/sidebar.php:13 +msgid "" +"Learn how to use best practices to correctly measure your site's " +"performance." +msgstr "" + +#: views/settings/partials/sidebar.php:14 +msgid "" +"https://wp-rocket.me/blog/correctly-measure-websites-page-load-" +"time/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://wp-rocket.me/blog/correctly-measure-websites-page-load-" +"time/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: views/settings/partials/sidebar.php:14 +msgid "Read our guide" +msgstr "Onze gids lezen" + +#: views/settings/partials/sidebar.php:17 +msgid "Why Google PageSpeed grade should not matter" +msgstr "" + +#: views/settings/partials/sidebar.php:18 +msgid "" +"https://wp-rocket.me/blog/the-truth-about-google-pagespeed-" +"insights/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://wp-rocket.me/blog/the-truth-about-google-pagespeed-" +"insights/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: views/settings/partials/sidebar.php:18 +msgid "Read more" +msgstr "Lees meer" + +#: views/settings/partials/sidebar.php:23 +msgid "You have not activated logged-in user cache." +msgstr "" + +#: views/settings/partials/sidebar.php:24 +msgid "" +"Use a private browser to check your website's speed and visual appearance." +msgstr "" + +#: views/settings/sections/addons-container.php:23 +#: views/settings/sections/fields-container.php:27 +msgid "Need Help?" +msgstr "Hulp nodig?" diff --git a/wp-content/plugins/wp-rocket/languages/rocket-pl_PL.mo b/wp-content/plugins/wp-rocket/languages/rocket-pl_PL.mo new file mode 100644 index 0000000000000000000000000000000000000000..4c83486618221eaedf7c1df420218fcb6edb2c21 GIT binary patch literal 109555 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 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-rocket/languages/rocket-pl_PL.po b/wp-content/plugins/wp-rocket/languages/rocket-pl_PL.po new file mode 100644 index 0000000..b36fe18 --- /dev/null +++ b/wp-content/plugins/wp-rocket/languages/rocket-pl_PL.po @@ -0,0 +1,4317 @@ +# Copyright (C) 2016 WP Rocket +# This file is distributed under the same license as the WP Rocket package. +# Translators: +# wpmedia , 2019 +# www.servitium.pl , 2020 +# Dariusz Zielonka , 2020 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: WP Rocket 3.4\n" +"Report-Msgid-Bugs-To: http://wp-rocket.me/\n" +"POT-Creation-Date: 2020-08-25 17:35-0400\n" +"PO-Revision-Date: 2019-08-26 15:14+0000\n" +"Last-Translator: Dariusz Zielonka , 2020\n" +"Language-Team: Polish (Poland) (https://www.transifex.com/wp-media/teams/18133/pl_PL/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: pl_PL\n" +"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n" +"X-Generator: Poedit 1.8.11\n" +"X-Poedit-Basepath: ..\n" +"X-Poedit-KeywordsList: __;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c\n" +"X-Poedit-SearchPath-0: .\n" +"X-Poedit-SearchPathExcluded-0: assets\n" +"X-Poedit-SearchPathExcluded-1: src\n" +"X-Poedit-SearchPathExcluded-2: vendor\n" +"X-Poedit-SearchPathExcluded-3: node_modules\n" +"X-Poedit-SearchPathExcluded-4: tests\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Textdomain-Support: yes\n" + +#: inc/3rd-party/hosting/flywheel.php:18 inc/3rd-party/hosting/godaddy.php:18 +#: inc/3rd-party/hosting/pressidium.php:18 +#: inc/3rd-party/hosting/wp-serveur.php:27 +#: inc/ThirdParty/Hostings/Cloudways.php:90 +#: inc/ThirdParty/Hostings/O2Switch.php:49 +#: inc/ThirdParty/Hostings/Savvii.php:50 +#: inc/ThirdParty/Hostings/WPEngine.php:47 inc/deprecated/3.6.php:698 +#: inc/deprecated/3.6.php:1005 +#, php-format +msgid "" +"Your site is hosted on %s, we have enabled Varnish auto-purge for " +"compatibility." +msgstr "" +"Twoja strona jest hostowana w %s, włączyliśmy funkcję Varnish auto-purge w " +"celu zapewnienia kompatybilności." + +#: inc/3rd-party/hosting/kinsta.php:161 +#, php-format +msgid "" +"Your installation seems to be missing core Kinsta files managing Cache " +"clearing and CDN, which will prevent your Kinsta installation and WP Rocket " +"from working correctly. Please get in touch with Kinsta support through your" +" %1$sMyKinsta%2$s account to resolve this issue." +msgstr "" +"Wydaje się, że w Twojej instalacji brakuje plików core Kinsta zarządzających" +" czyszczeniem pamięci podręcznej i CDN, co uniemożliwi poprawne działanie " +"Twojej instalacji Kinsta i WP Rocket. Skontaktuj się z obsługą Kinsty " +"poprzez konto %1$sMyKinsta%2$s, aby rozwiązać ten problem." + +#: inc/3rd-party/plugins/jetpack.php:86 +msgid "Jetpack XML Sitemaps" +msgstr "Mapa witryny XML wtyczki Jetpack" + +#: inc/3rd-party/plugins/jetpack.php:88 +msgid "Preload the sitemap from the Jetpack plugin" +msgstr "Załaduj wstępnie mapę witryny z wtyczki Jetpack" + +#: inc/3rd-party/plugins/jetpack.php:96 +#: inc/3rd-party/plugins/seo/all-in-one-seo-pack.php:89 +#: inc/3rd-party/plugins/seo/rank-math-seo.php:34 +#: inc/3rd-party/plugins/seo/seopress.php:86 +#: inc/3rd-party/plugins/seo/the-seo-framework.php:144 +#: inc/3rd-party/plugins/seo/yoast-seo.php:87 +#, php-format +msgid "" +"We automatically detected the sitemap generated by the %s plugin. You can " +"check the option to preload it." +msgstr "" +"Wykryto automatycznie mapę witryny wygenerowanę przez wtyczkę %s. Możesz " +"zaznaczyć opcję, aby ją wstępnie wczytać metodą preloadu." + +#: inc/3rd-party/plugins/seo/all-in-one-seo-pack.php:87 +msgid "All in One SEO XML sitemap" +msgstr "Mapa witryny XML wtyczki All in One SEO" + +#: inc/3rd-party/plugins/seo/rank-math-seo.php:32 +msgid "Rank Math XML sitemap" +msgstr "Mapa witryny XML Rank Math" + +#: inc/3rd-party/plugins/seo/seopress.php:84 +msgid "SEOPress XML sitemap" +msgstr "Mapa witryny XML SEOPress" + +#: inc/3rd-party/plugins/seo/the-seo-framework.php:142 +msgid "The SEO Framework XML sitemap" +msgstr "Mapa witryny XML SEO Framework" + +#: inc/3rd-party/plugins/seo/yoast-seo.php:85 +msgid "Yoast SEO XML sitemap" +msgstr "Mapa witryny XML wtyczki Yoast SEO" + +#: inc/Addon/Cloudflare/APIClient.php:309 +msgid "Ops Cloudflare did not provide any reply. Please try again later." +msgstr "" +"Ups, Cloudflare nie udzielił żadnej odpowiedzi. Proszę spróbować ponownie " +"później." + +#: inc/Addon/Cloudflare/APIClient.php:318 inc/deprecated/3.5.php:122 +#: inc/deprecated/3.5.php:179 +msgid "Incorrect Cloudflare email address or API key." +msgstr "Nieprawidłowy adres e-mail lub klucz API Cloudflare." + +#: inc/Addon/Cloudflare/APIClient.php:322 +#: inc/Addon/Cloudflare/APIClient.php:335 +#: inc/Addon/Cloudflare/Cloudflare.php:112 +#: inc/Addon/Cloudflare/Cloudflare.php:144 +#: inc/classes/subscriber/Tools/class-detect-missing-tags-subscriber.php:157 +#: inc/deprecated/3.5.php:102 inc/deprecated/3.5.php:126 +#: inc/deprecated/3.5.php:139 inc/deprecated/3.5.php:167 +#: inc/deprecated/3.5.php:183 +#, php-format +msgid "Read the %1$sdocumentation%2$s for further guidance." +msgstr "Przeczytaj %1$sdokumentację%2$s w celu uzyskania dalszych wskazówek." + +#: inc/Addon/Cloudflare/APIClient.php:324 +#: inc/Addon/Cloudflare/APIClient.php:337 +#: inc/Addon/Cloudflare/Cloudflare.php:101 +#: inc/Addon/Cloudflare/Cloudflare.php:114 +#: inc/Addon/Cloudflare/Cloudflare.php:146 inc/deprecated/3.5.php:91 +#: inc/deprecated/3.5.php:104 inc/deprecated/3.5.php:128 +#: inc/deprecated/3.5.php:141 inc/deprecated/3.5.php:169 +#: inc/deprecated/3.5.php:185 inc/deprecated/3.5.php:218 +msgid "" +"https://docs.wp-rocket.me/article/18-using-wp-rocket-with-" +"cloudflare/?utm_source=wp_plugin&utm_medium=wp_rocket#add-on" +msgstr "" +"https://docs.wp-rocket.me/article/18-using-wp-rocket-with-" +"cloudflare/?utm_source=wp_plugin&utm_medium=wp_rocket#add-on" + +#: inc/Addon/Cloudflare/APIClient.php:331 inc/deprecated/3.5.php:135 +msgid "Incorrect Cloudflare Zone ID." +msgstr "Nieprawidłowy ID strefy Cloudflare." + +#: inc/Addon/Cloudflare/Cloudflare.php:99 +#, php-format +msgid "" +"Cloudflare email and/or API key are not set. Read the %1$sdocumentation%2$s " +"for further guidance." +msgstr "" +"E-mail i klucz API Cloudflare nie są ustawione. Przeczytaj " +"%1$sdokumentację%2$s w celu uzyskania dalszych wskazówek." + +#: inc/Addon/Cloudflare/Cloudflare.php:108 inc/deprecated/3.5.php:98 +msgid "Missing Cloudflare Zone ID." +msgstr "Brak ID strefy Cloudflare." + +#: inc/Addon/Cloudflare/Cloudflare.php:140 inc/deprecated/3.5.php:163 +msgid "It looks like your domain is not set up on Cloudflare." +msgstr "Wygląda na to, że twoja domena nie jest ustawiona na Cloudflare." + +#: inc/Addon/Cloudflare/Subscriber.php:215 inc/deprecated/3.5.php:597 +#, php-format +msgid "WP Rocket: %s" +msgstr "WP Rocket: %s" + +#: inc/Addon/Cloudflare/Subscriber.php:220 inc/deprecated/3.5.php:602 +msgid "WP Rocket: Cloudflare cache successfully purged." +msgstr "" +"WP Rocket: Pamięć podręczna w Cloudflare została skutecznie" +" oczyszczona." + +#: inc/Addon/Cloudflare/Subscriber.php:364 +#: inc/Addon/Cloudflare/Subscriber.php:370 +#: inc/Addon/Cloudflare/Subscriber.php:390 +#: inc/Addon/Cloudflare/Subscriber.php:401 +#: inc/Addon/Cloudflare/Subscriber.php:420 +#: inc/Addon/Cloudflare/Subscriber.php:426 +#: inc/Addon/Cloudflare/Subscriber.php:445 +#: inc/Addon/Cloudflare/Subscriber.php:451 +#: inc/Addon/Cloudflare/Subscriber.php:470 +#: inc/Addon/Cloudflare/Subscriber.php:476 +#: inc/Addon/Cloudflare/Subscriber.php:558 inc/admin/options.php:166 +#: inc/classes/subscriber/Tools/class-detect-missing-tags-subscriber.php:148 +msgid "WP Rocket: " +msgstr "WP Rocket: " + +#: inc/Addon/Cloudflare/Subscriber.php:364 +#, php-format +msgid "Cloudflare development mode error: %s" +msgstr "Błąd trybu deweloperskiego CloudFlare: %s" + +#: inc/Addon/Cloudflare/Subscriber.php:370 +#, php-format +msgid "Cloudflare development mode %s" +msgstr "Tryb deweloperski CloudFlare %s" + +#: inc/Addon/Cloudflare/Subscriber.php:390 +#, php-format +msgid "Cloudflare cache level error: %s" +msgstr "Błąd poziomu pamięci podręcznej CloudFlare: %s" + +#: inc/Addon/Cloudflare/Subscriber.php:395 +msgctxt "Cloudflare caching level" +msgid "Standard" +msgstr "Standardowa" + +#: inc/Addon/Cloudflare/Subscriber.php:401 +#, php-format +msgid "Cloudflare cache level set to %s" +msgstr "Poziom pamięci podręcznej CloudFlare ustawiono na %s" + +#: inc/Addon/Cloudflare/Subscriber.php:420 +#, php-format +msgid "Cloudflare minification error: %s" +msgstr "Błąd minifikacji CloudFlare: %s" + +#: inc/Addon/Cloudflare/Subscriber.php:426 +#, php-format +msgid "Cloudflare minification %s" +msgstr "Minifikacja CloudFlare %s" + +#: inc/Addon/Cloudflare/Subscriber.php:445 +#, php-format +msgid "Cloudflare rocket loader error: %s" +msgstr "Błąd ładowania rocket loadera CloudFlare: %s" + +#: inc/Addon/Cloudflare/Subscriber.php:451 +#, php-format +msgid "Cloudflare rocket loader %s" +msgstr "Rocket loader CloudFlare %s" + +#: inc/Addon/Cloudflare/Subscriber.php:470 +#, php-format +msgid "Cloudflare browser cache error: %s" +msgstr "Błąd pamięci podręcznej przeglądarki CloudFlare: %s" + +#: inc/Addon/Cloudflare/Subscriber.php:476 +#, php-format +msgid "Cloudflare browser cache set to %s seconds" +msgstr "" +"Pamięć podręczna przeglądarki CloudFlare jest ustawiona na %s sekund(-y)" + +#: inc/Addon/FacebookTracking/Subscriber.php:87 +#: inc/Addon/GoogleTracking/Subscriber.php:132 +#: inc/Engine/HealthCheck/CacheDirSizeCheck.php:88 +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:92 +msgid "weekly" +msgstr "tygodniowo" + +#: inc/Engine/Admin/Settings/Page.php:171 +msgid "Save Changes" +msgstr "Zapisz zmiany" + +#: inc/Engine/Admin/Settings/Page.php:171 +msgid "Validate License" +msgstr "Weryfikuj licencję" + +#: inc/Engine/Admin/Settings/Page.php:236 +#: inc/Engine/Admin/Settings/Page.php:237 +msgid "Unavailable" +msgstr "Niedostępne" + +#: inc/Engine/Admin/Settings/Page.php:341 inc/deprecated/deprecated.php:1789 +#: views/settings/page-sections/dashboard.php:73 +msgid "License" +msgstr "Licencja" + +#: inc/Engine/Admin/Settings/Page.php:358 +msgid "API key" +msgstr "Klucz API" + +#: inc/Engine/Admin/Settings/Page.php:373 +msgid "Email address" +msgstr "Adres e-mail" + +#: inc/Engine/Admin/Settings/Page.php:399 +msgid "Dashboard" +msgstr "Kokpit" + +#: inc/Engine/Admin/Settings/Page.php:400 +msgid "Get help, account info" +msgstr "Uzyskaj pomoc, informacje o koncie" + +#: inc/Engine/Admin/Settings/Page.php:409 +msgid "My Status" +msgstr "Mój status" + +#: inc/Engine/Admin/Settings/Page.php:419 views/settings/page.php:72 +msgid "Rocket Tester" +msgstr "Zostań Rocket Testerem" + +#: inc/Engine/Admin/Settings/Page.php:420 +msgid "I am part of the WP Rocket Beta Testing Program." +msgstr "Jestem częścią programu WP Rocket Beta Testing Program." + +#: inc/Engine/Admin/Settings/Page.php:428 views/settings/page.php:90 +msgid "Rocket Analytics" +msgstr "Rocket Analytics" + +#: inc/Engine/Admin/Settings/Page.php:430 +#, php-format +msgid "" +"I agree to share anonymous data with the development team to help improve WP" +" Rocket. %1$sWhat info will we collect?%2$s" +msgstr "" +"Wyrażam zgodę na udostępnienie anonimowych danych zespołowi rozwojowemu w " +"celu ulepszenia WP Rocket. %1$sJakie informacje będziemy gromadzić%2$s" + +#: inc/Engine/Admin/Settings/Page.php:454 inc/Engine/Cache/WPCache.php:347 +msgid "Cache" +msgstr "Pamięć podręczna" + +#: inc/Engine/Admin/Settings/Page.php:455 +msgid "Basic cache options" +msgstr "Podstawowe opcje pamięci podręcznej" + +#: inc/Engine/Admin/Settings/Page.php:462 +msgid "Mobile Cache" +msgstr "Pamięć podręczna dla urządzeń przenośnych" + +#: inc/Engine/Admin/Settings/Page.php:464 +msgid "Speed up your site for mobile visitors." +msgstr "Przyspiesz swoją stronę dla odwiedzających z urządzeń mobilnych." + +#: inc/Engine/Admin/Settings/Page.php:469 +msgid "" +"We detected you use a plugin that requires a separate cache for mobile, and " +"automatically enabled this option for compatibility." +msgstr "" +"Wykryliśmy, że używasz wtyczki, która wymaga oddzielnej pamięci podręcznej " +"dla urządzeń przenośnych i automatycznie włączyliśmy tę opcję w celu " +"zapewnienia zgodności." + +#: inc/Engine/Admin/Settings/Page.php:473 +msgid "User Cache" +msgstr "Pamięć podręczna użytkownika" + +#: inc/Engine/Admin/Settings/Page.php:476 +#, php-format +msgid "" +"%1$sUser cache%2$s is great when you have user-specific or restricted " +"content on your website." +msgstr "" +"%1$sPamięć podręczna użytkowników%2$s jest świetna, gdy masz specyficzne dla" +" użytkownika lub ograniczone treści na swojej stronie internetowej." + +#: inc/Engine/Admin/Settings/Page.php:484 +msgid "Cache Lifespan" +msgstr "Cykl trwania pamięci podręcznej" + +#: inc/Engine/Admin/Settings/Page.php:487 +#, php-format +msgid "" +"Cache files older than the specified lifespan will be deleted.
      Enable " +"%1$spreloading%2$s for the cache to be rebuilt automatically after lifespan " +"expiration." +msgstr "" +"Pliki pamięci podręcznej starsze niż określony okres trwania zostaną " +"usunięte.
      Włącz %1$spreload%2$s, aby pamięć podręczna była automatycznie" +" odbudowywana po upływie okresu trwania." + +#: inc/Engine/Admin/Settings/Page.php:501 +msgid "Enable caching for logged-in WordPress users" +msgstr "" +"Włącz przechowywanie w pamięci podręcznej dla zalogowanych użytkowników " +"WordPress" + +#: inc/Engine/Admin/Settings/Page.php:509 +msgid "Enable caching for mobile devices" +msgstr "Włącz przechowywanie w pamięci podręcznej dla urządzeń mobilnych" + +#: inc/Engine/Admin/Settings/Page.php:524 +msgid "Separate cache files for mobile devices" +msgstr "Przechowuj oddzielnie pliki cache dla urządzeń przenośnych" + +#: inc/Engine/Admin/Settings/Page.php:526 +#, php-format +msgid "" +"Most modern themes are responsive and should work without a separate cache. " +"Enable this only if you have a dedicated mobile theme or plugin. %1$sMore " +"info%2$s" +msgstr "" +"Większość nowoczesnych motywów jest responsywna i powinna działać bez " +"osobnej pamięci podręcznej. Włącz to tylko, jeśli masz dedykowany motyw " +"mobilny lub wtyczkę. %1$sWięcej informacji%2$s" + +#: inc/Engine/Admin/Settings/Page.php:542 +msgid "" +"Specify time after which the global cache is cleared
      (0 = unlimited )" +msgstr "" +"Określ czas, po którym globalna pamięć podręczna zostanie oczyszczona
      (0 " +"= bez ograniczeń)" + +#: inc/Engine/Admin/Settings/Page.php:544 +#, php-format +msgid "" +"Reduce lifespan to 10 hours or less if you notice issues that seem to appear" +" periodically. %1$sWhy?%2$s" +msgstr "" +"Skróć cykl trwania do 10 godzin lub mniej, jeśli zauważysz problemy, które " +"wydają się pojawiać okresowo. %1$sDlaczego?%2$s" + +#: inc/Engine/Admin/Settings/Page.php:550 +msgid "Minutes" +msgstr "Minut(y)" + +#: inc/Engine/Admin/Settings/Page.php:551 +msgid "Hours" +msgstr "Godziny" + +#: inc/Engine/Admin/Settings/Page.php:552 +msgid "Days" +msgstr "Dzień/Dni" + +#: inc/Engine/Admin/Settings/Page.php:577 +#: views/settings/page-sections/tutorials.php:22 +msgid "File Optimization" +msgstr "Optymalizacja plików" + +#: inc/Engine/Admin/Settings/Page.php:578 +msgid "Optimize CSS & JS" +msgstr "Optymalizacja CSS i JS" + +#: inc/Engine/Admin/Settings/Page.php:585 +msgid "CSS Files" +msgstr "Pliki CSS" + +#: inc/Engine/Admin/Settings/Page.php:592 +#: inc/Engine/Admin/Settings/Page.php:602 +#, php-format +msgid "" +"%1$s Minification is currently activated in Autoptimize. If" +" you want to use %2$s’s minification, disable those options in Autoptimize." +msgstr "" +"%1$s Minifikacja jest obecnie aktywowana w Autoptimize. " +"Jeśli chcesz użyć minifikacji %2$s, wyłącz te opcje w Autoptimize." + +#: inc/Engine/Admin/Settings/Page.php:595 +msgid "JavaScript Files" +msgstr "Pliki JavaScript" + +#: inc/Engine/Admin/Settings/Page.php:611 +msgid "Minify CSS files" +msgstr "Minifikuj pliki CSS" + +#: inc/Engine/Admin/Settings/Page.php:612 +msgid "Minify CSS removes whitespace and comments to reduce the file size." +msgstr "" +"Minifikacja CSS usuwa białą przestrzeń i komentarze, aby zmniejszyć rozmiar " +"pliku." + +#: inc/Engine/Admin/Settings/Page.php:625 +#: inc/Engine/Admin/Settings/Page.php:647 +#: inc/Engine/Admin/Settings/Page.php:729 +#: inc/Engine/Admin/Settings/Page.php:751 +msgid "This could break things!" +msgstr "To może coś zepsuć!" + +#: inc/Engine/Admin/Settings/Page.php:626 +#: inc/Engine/Admin/Settings/Page.php:648 +#: inc/Engine/Admin/Settings/Page.php:730 +#: inc/Engine/Admin/Settings/Page.php:752 +msgid "" +"If you notice any errors on your website after having activated this " +"setting, just deactivate it again, and your site will be back to normal." +msgstr "" +"Jeśli zauważysz jakiekolwiek błędy na swojej witrynie internetowej po " +"aktywowaniu tego ustawienia, po prostu wyłącz je ponownie, a Twoja witryna " +"powróci do normy." + +#: inc/Engine/Admin/Settings/Page.php:627 +msgid "Activate minify CSS" +msgstr "Aktywuj minifikację CSS" + +#: inc/Engine/Admin/Settings/Page.php:632 +msgid "Combine CSS files (Enable Minify CSS files to select)" +msgstr "Połącz pliki CSS (Włącz Minifikację CSS, aby wybrać)" + +#: inc/Engine/Admin/Settings/Page.php:634 +#, php-format +msgid "" +"Combine CSS merges all your files into 1, reducing HTTP requests. Not " +"recommended if your site uses HTTP/2. %1$sMore info%2$s" +msgstr "" +"Łączenie CSS konkantenuje wszystkie pliki w jeden, redukując żądania HTTP. " +"Nie zalecane, jeśli witryna używa HTTP/2. %1$sWięcej informacji%2$s" + +#: inc/Engine/Admin/Settings/Page.php:649 +msgid "Activate combine CSS" +msgstr "Aktywuj łączenie CSS" + +#: inc/Engine/Admin/Settings/Page.php:654 inc/admin/options.php:125 +msgid "Excluded CSS Files" +msgstr "Pomijane pliki CSS" + +#: inc/Engine/Admin/Settings/Page.php:655 +msgid "" +"Specify URLs of CSS files to be excluded from minification and concatenation" +" (one per line)." +msgstr "" +"Określ adresy URL plików CSS, które mają być wyłączone z minifikacji i " +"łączenia (po jednym na linię)" + +#: inc/Engine/Admin/Settings/Page.php:656 +msgid "" +"Internal: The domain part of the URL will be stripped " +"automatically. Use (.*).css wildcards to exclude all CSS files located at a " +"specific path." +msgstr "" +"Wewnętrzny: Domenowa część adresu URL zostanie usunięta " +"automatycznie. Użyj (.*).css wildcardów, aby wykluczyć wszystkie pliki CSS " +"znajdujące się na określonej ścieżce." + +#: inc/Engine/Admin/Settings/Page.php:658 +#, php-format +msgid "" +"3rd Party: Use either the full URL path or only the domain " +"name, to exclude external CSS. %1$sMore info%2$s" +msgstr "" +"Zewnętrzne: Użyj albo pełnej ścieżki URL albo tylko nazwy " +"domeny, aby wykluczyć zewnętrzny CSS. %1$sWięcej informacji%2$s" + +#: inc/Engine/Admin/Settings/Page.php:671 +msgid "Optimize CSS delivery" +msgstr "Optymalizacja dostarczania CSS" + +#: inc/Engine/Admin/Settings/Page.php:678 +#, php-format +msgctxt "WP Critical CSS compatibility" +msgid "" +"Optimize CSS Delivery is currently handled by the %1$s plugin. If you want " +"to use WP Rocket’s Optimize CSS Delivery option, disable the %1$s plugin." +msgstr "" +"Optymalizacja dostarczania CSS jest obecnie obsługiwana przez wtyczkę %1$s. " +"Jeśli chcesz użyć opcji WP Rocket Optymalizacja dostarczania CSS, wyłącz " +"wtyczkę %1$s." + +#: inc/Engine/Admin/Settings/Page.php:680 +#, php-format +msgid "" +"Optimize CSS delivery eliminates render-blocking CSS on your website for " +"faster perceived load time. %1$sMore info%2$s" +msgstr "" +"Optymalizacja dostarczania CSS eliminuje blokadę renderingu CSS na Twojej " +"stronie internetowej, co pozwala na szybsze postrzeganie czasu ładowania. " +"%1$sWięcej informacji%2$s" + +#: inc/Engine/Admin/Settings/Page.php:691 +msgid "Fallback critical CSS" +msgstr "Krytyczne dla bezpieczeństwa CSS" + +#: inc/Engine/Admin/Settings/Page.php:696 +#, php-format +msgid "" +"Provides a fallback if auto-generated critical path CSS is incomplete. " +"%1$sMore info%2$s" +msgstr "" +"Zapewnia bezpieczny fallback, jeśli automatycznie wygenerowana ścieżka " +"krytyczna CSS jest niekompletna. %1$sWięcej informacji%2$s" + +#: inc/Engine/Admin/Settings/Page.php:705 +msgid "Remove jQuery Migrate" +msgstr "Usuń jQuery Migrate" + +#: inc/Engine/Admin/Settings/Page.php:707 +#, php-format +msgid "" +"Remove jQuery Migrate eliminates a JS file and can improve load time. " +"%1$sMore info%2$s" +msgstr "" +"Usunięcie jQuery Migrate eliminuje plik JS i może poprawić czas ładowania. " +"%1$sWięcej informacji%2$s" + +#: inc/Engine/Admin/Settings/Page.php:715 +msgid "Minify JavaScript files" +msgstr "Minifikuj pliki JavaScript" + +#: inc/Engine/Admin/Settings/Page.php:716 +msgid "" +"Minify JavaScript removes whitespace and comments to reduce the file size." +msgstr "" +"Minifikacja JavaScript usuwa białą przestrzeń i komentarze, aby zmniejszyć " +"rozmiar pliku." + +#: inc/Engine/Admin/Settings/Page.php:731 +msgid "Activate minify JavaScript" +msgstr "Aktywuj minifikację JavaScript" + +#: inc/Engine/Admin/Settings/Page.php:736 +msgid "" +"Combine JavaScript files (Enable Minify JavaScript files to select)" +msgstr "Połącz pliki JavaScript (Włącz Minify JavaScript aby wybrać)" + +#: inc/Engine/Admin/Settings/Page.php:738 +#, php-format +msgid "" +"Combine JavaScript files combines your site’s internal, 3rd party and inline" +" JS reducing HTTP requests. Not recommended if your site uses HTTP/2. " +"%1$sMore info%2$s" +msgstr "" +"Łączenie plików JavaScript łączy w sobie wewnętrzne, zewnętrzne oraz inline " +"JS, redukując żądania HTTP. Nie zalecane, jeśli witryna używa HTTP/2. " +"%1$sWięcej informacji%2$s" + +#: inc/Engine/Admin/Settings/Page.php:753 +msgid "Activate combine JavaScript" +msgstr "Aktywuj łączenie JavaScript" + +#: inc/Engine/Admin/Settings/Page.php:758 inc/admin/options.php:126 +msgid "Excluded Inline JavaScript" +msgstr "Pomijany inline JavaScript" + +#: inc/Engine/Admin/Settings/Page.php:760 +#, php-format +msgid "" +"Specify patterns of inline JavaScript to be excluded from concatenation (one" +" per line). %1$sMore info%2$s" +msgstr "" +"Określa wzory inline JavaScript, które mają być wyłączone z konkatenacji " +"(jeden na linię). %1$sWięcej informacji%2$s" + +#: inc/Engine/Admin/Settings/Page.php:776 inc/admin/options.php:127 +msgid "Excluded JavaScript Files" +msgstr "Pomijane pliki JavaScript" + +#: inc/Engine/Admin/Settings/Page.php:777 +msgid "" +"Specify URLs of JavaScript files to be excluded from minification and " +"concatenation (one per line)." +msgstr "" +"Określ adresy URL plików JavaScript, które mają być wyłączone z minifikacji " +"i konkatenacji (jeden na linię)." + +#: inc/Engine/Admin/Settings/Page.php:778 +msgid "" +"Internal: The domain part of the URL will be stripped " +"automatically. Use (.*).js wildcards to exclude all JS files located at a " +"specific path." +msgstr "" +"Część domeny adresu URL zostanie automatycznie usunięta.
      Użyj symboli " +"wieloznacznych wildcard takich jak (.*).js, aby wykluczyć wszystkie pliki JS" +" znajdujące się w określonej ścieżce." + +#: inc/Engine/Admin/Settings/Page.php:780 +#, php-format +msgid "" +"3rd Party: Use either the full URL path or only the domain " +"name, to exclude external JS. %1$sMore info%2$s" +msgstr "" +"Zewnętrzne: Użyj pełnej ścieżki URL lub tylko nazwy " +"domeny, aby wykluczyć zewnętrzne JS. %1$sWięcej informacji%2$s" + +#: inc/Engine/Admin/Settings/Page.php:796 +msgid "Load JavaScript deferred" +msgstr "Ładuj pliki JS metodą defer" + +#: inc/Engine/Admin/Settings/Page.php:798 +#, php-format +msgid "" +"Load JavaScript deferred eliminates render-blocking JS on your site and can " +"improve load time. %1$sMore info%2$s" +msgstr "" +"Opóźnione ładowanie JavaScript eliminuje blokowanie renderowania JS na " +"Twojej stronie i może poprawić czas ładowania. %1$sWięcej informacji%2$s" + +#: inc/Engine/Admin/Settings/Page.php:809 +msgid "Safe Mode for jQuery (recommended)" +msgstr "Tryb bezpieczny dla jQuery (zalecane)" + +#: inc/Engine/Admin/Settings/Page.php:810 +msgid "" +"Safe mode for jQuery for deferred JS ensures support for inline jQuery " +"references from themes and plugins by loading jQuery at the top of the " +"document as a render-blocking script.
      Deactivating may result in " +"broken functionality, test thoroughly!" +msgstr "" +"Tryb bezpieczny dla jQuery dla odroczonego JS zapewnia wsparcie dla " +"referencji inline jQuery z tematów i wtyczek poprzez załadowanie jQuery na " +"górze dokumentu jako skryptu blokującego renderowanie.
      Dezaktywacja " +"może spowodować uszkodzenie funkcjonalności, przetestuj dokładnie!" + +#: inc/Engine/Admin/Settings/Page.php:823 inc/admin/ui/meta-boxes.php:79 +msgid "Delay JavaScript execution" +msgstr "Opóźnianie wykonywania skryptów JavaScript" + +#: inc/Engine/Admin/Settings/Page.php:825 +#, php-format +msgid "" +"Improves performance by delaying the loading of JavaScript files until user " +"interaction (e.g. scroll, click). %1$sMore info%2$s" +msgstr "" +"Poprawia wydajność poprzez opóźnianie ładowania plików JavaScript do czasu " +"interakcji użytkownika (np. przewijania, klikania). %1$s Więcej " +"informacji%2$s" + +#: inc/Engine/Admin/Settings/Page.php:833 +msgid "Scripts to delay" +msgstr "Skrypty do opóźniania" + +#: inc/Engine/Admin/Settings/Page.php:834 +msgid "" +"Specify keywords that can identify inline or JavaScript files to be delayed " +"(one per line)." +msgstr "" +"Określ słowa kluczowe, które mogą identyfikować pliki inline lub JavaScript," +" które mają być opóźnione (jeden na linię)." + +#: inc/Engine/Admin/Settings/Page.php:835 +msgid "" +"A curated list of scripts that are safe to delay is provided. They may not " +"all apply to your website and it is safe to leave the list as-is unless you " +"face issues." +msgstr "" +"Dostępna jest skrócona lista skryptów, które można bezpiecznie opóźniać. Nie" +" wszystkie z nich mogą dotyczyć Twojej strony internetowej i bezpiecznie " +"jest pozostawić ją bez zmian, chyba że napotkasz problemy." + +#: inc/Engine/Admin/Settings/Page.php:870 +msgid "Media" +msgstr "Media" + +#: inc/Engine/Admin/Settings/Page.php:871 +msgid "LazyLoad, emojis, embeds, WebP" +msgstr "LazyLoad, emoji, osadzenia, WebP" + +#: inc/Engine/Admin/Settings/Page.php:880 +msgid "Avada" +msgstr "Avada" + +#: inc/Engine/Admin/Settings/Page.php:884 +msgid "Autoptimize" +msgstr "Automatyczna optymalizacja" + +#: inc/Engine/Admin/Settings/Page.php:929 +msgid "LazyLoad" +msgstr "LazyLoad" + +#: inc/Engine/Admin/Settings/Page.php:932 +#, php-format +msgid "" +"It can improve actual and perceived loading time as images, iframes, and " +"videos will be loaded only as they enter (or about to enter) the viewport " +"and reduces the number of HTTP requests. %1$sMore Info%2$s" +msgstr "" +"Może to poprawić rzeczywisty i postrzegany czas ładowania obrazów, ramek " +"iframe, a filmy wideo będą ładowane tylko w momencie ich widoczności (lub w " +"trakcie przewijania) i zmniejsza liczbę żądań HTTP. %1$sWięcej " +"informacji%2$s" + +#: inc/Engine/Admin/Settings/Page.php:939 +#, php-format +msgid "" +"LazyLoad is currently activated in %2$s. If you want to use WP Rocket’s " +"LazyLoad, disable this option in %2$s." +msgstr "" +"LazyLoad jest obecnie aktywowany w %2$s. Jeśli chcesz korzystać z LazyLoad " +"WP Rocket, wyłącz tę opcję w %2$s." + +#: inc/Engine/Admin/Settings/Page.php:942 +msgid "Emoji 👻" +msgstr "Emoji 👻" + +#: inc/Engine/Admin/Settings/Page.php:944 +msgid "" +"Use default emoji of visitor's browser instead of loading emoji from " +"WordPress.org" +msgstr "" +"Użyj domyślnych emoji w przeglądarce odwiedzającego zamiast wczytywania " +"emoji z WordPress.org" + +#: inc/Engine/Admin/Settings/Page.php:948 +msgid "Embeds" +msgstr "Osadzone" + +#: inc/Engine/Admin/Settings/Page.php:950 +msgid "" +"Prevents others from embedding content from your site, prevents you from " +"embedding content from other (non-allowed) sites, and removes JavaScript " +"requests related to WordPress embeds" +msgstr "" +"Zapobiega osadzaniu treści z Twojej strony przez inne osoby, uniemożliwia " +"osadzanie treści z innych (niedozwolonych) stron oraz usuwa żądania " +"JavaScript związane z osadzaniem WordPressa" + +#: inc/Engine/Admin/Settings/Page.php:954 +msgid "WebP compatibility" +msgstr "Kompatybilność z WebP" + +#: inc/Engine/Admin/Settings/Page.php:958 +#, php-format +msgid "" +"Enable this option if you would like WP Rocket to serve WebP images to " +"compatible browsers. Please note that WP Rocket cannot create WebP images " +"for you. To create WebP images we recommend %1$sImagify%2$s. %3$sMore " +"info%2$s" +msgstr "" +"Włącz tę opcję, jeśli chcesz, aby WP Rocket obsługiwał obrazy WebP dla " +"kompatybilnych przeglądarek. Proszę zauważyć, że WP Rocket nie może tworzyć " +"obrazów WebP dla Ciebie. Do tworzenia obrazów WebP polecamy %1$sImagify%2$s." +" %3$sWięcej informacji%2$s" + +#: inc/Engine/Admin/Settings/Page.php:985 +msgid "Enable for images" +msgstr "Włącz dla obrazów" + +#: inc/Engine/Admin/Settings/Page.php:997 +#, php-format +msgid "" +"LazyLoad for images is currently activated in %2$s. If you want to use " +"%1$s’s LazyLoad, disable this option in %2$s." +msgstr "" +"LazyLoad dla obrazów jest obecnie aktywowany w %2$s. Jeśli chcesz użyć " +"LazyLoad dla %1$s, wyłącz tę opcję w %2$s." + +#: inc/Engine/Admin/Settings/Page.php:1005 +msgid "Enable for iframes and videos" +msgstr "Włącz dla iframe i wideo" + +#: inc/Engine/Admin/Settings/Page.php:1020 +msgid "Replace YouTube iframe with preview image" +msgstr "Wymień iframe YouTube, obrazem podglądu" + +#: inc/Engine/Admin/Settings/Page.php:1021 +msgid "" +"This can significantly improve your loading time if you have a lot of " +"YouTube videos on a page." +msgstr "" +"Może to znacznie poprawić czas ładowania, jeśli masz dużo filmów YouTube w " +"witrynie." + +#: inc/Engine/Admin/Settings/Page.php:1031 +#, php-format +msgid "Replace YouTube iframe with preview image is not compatible with %2$s." +msgstr "" +"Zastępowanie YouTube iframe podglądem obrazu nie jest kompatybilne z %2$s." + +#: inc/Engine/Admin/Settings/Page.php:1035 +msgid "Disable Emoji" +msgstr "Wyłącz Emoji" + +#: inc/Engine/Admin/Settings/Page.php:1036 +msgid "Disable Emoji will reduce the number of external HTTP requests." +msgstr "Wyłączenie Emoji zmniejszy liczbę zewnętrznych żądań HTTP." + +#: inc/Engine/Admin/Settings/Page.php:1044 +msgid "Disable WordPress embeds" +msgstr "Wyłącz osadzanie WordPress" + +#: inc/Engine/Admin/Settings/Page.php:1054 +#: inc/classes/subscriber/Media/class-webp-subscriber.php:362 +msgid "Enable WebP caching" +msgstr "Włącz pamięć podręczną WebP" + +#: inc/Engine/Admin/Settings/Page.php:1074 inc/deprecated/deprecated.php:1776 +#: views/settings/page-sections/tutorials.php:30 +msgid "Preload" +msgstr "Preload" + +#: inc/Engine/Admin/Settings/Page.php:1075 +msgid "Generate cache files, preload fonts" +msgstr "Generowanie plików w pamięci podręcznej, wstępne ładowanie czcionek" + +#: inc/Engine/Admin/Settings/Page.php:1086 +msgid "Preload Cache" +msgstr "Wstępne ładowanie pamięci podręcznej" + +#: inc/Engine/Admin/Settings/Page.php:1089 +#, php-format +msgid "" +"When you enable preloading WP Rocket will generate the cache starting with " +"the links on your homepage followed by the sitemaps you specify. Preloading " +"is automatically triggered when you add or update content and can also be " +"manually triggered from the admin bar or from the %1$sWP Rocket " +"Dashboard%2$s." +msgstr "" +"Kiedy włączysz preloading WP Rocket wygeneruje cache zaczynając od linków na" +" stronie głównej, po których następują określone przez Ciebie mapy stron. " +"Preloading jest automatycznie uruchamiany podczas dodawania lub aktualizacji" +" zawartości i może być również uruchamiany ręcznie z paska administratora " +"lub z poziomu %1$sKokpitu WP Rocket%2$s." + +#: inc/Engine/Admin/Settings/Page.php:1097 +msgid "Prefetch DNS Requests" +msgstr "Prefetch żądania DNS" + +#: inc/Engine/Admin/Settings/Page.php:1099 +msgid "" +"DNS prefetching can make external files load faster, especially on mobile " +"networks" +msgstr "" +"Prefetch DNS może przyspieszyć ładowanie plików zewnętrznych, szczególnie w " +"sieciach komórkowych" + +#: inc/Engine/Admin/Settings/Page.php:1107 +msgid "Preload Fonts" +msgstr "Wstępne ładowanie czcionek" + +#: inc/Engine/Admin/Settings/Page.php:1110 +#, php-format +msgid "" +"Improves performance by helping browsers discover fonts in CSS files. " +"%1$sMore info%2$s" +msgstr "" +"Poprawia wydajność, pomagając przeglądarkom w odkrywaniu czcionek w plikach " +"CSS. %1$s Więcej informacji%2$s" + +#: inc/Engine/Admin/Settings/Page.php:1118 +msgid "Preload Links" +msgstr "Linki do wstępnego ładowania" + +#: inc/Engine/Admin/Settings/Page.php:1121 +#, php-format +msgid "" +"Link preloading improves the perceived load time by downloading a page when " +"a user hovers over the link. %1$sMore info%2$s" +msgstr "" +"Wstępne ładowanie łączy poprawia postrzegany czas ładowania poprzez pobranie" +" strony po najechaniu na nią przez użytkownika. %1$s Więcej informacji%2$s" + +#: inc/Engine/Admin/Settings/Page.php:1135 +msgid "Activate Preloading" +msgstr "Aktywuj Preloading" + +#: inc/Engine/Admin/Settings/Page.php:1154 +msgid "Activate sitemap-based cache preloading" +msgstr "" +"Aktywacja preloadu - wstępnego ładowania pamięci podręcznej w oparciu o mapę" +" witryny" + +#: inc/Engine/Admin/Settings/Page.php:1173 +msgid "Sitemaps for preloading" +msgstr "Preload map witryn" + +#: inc/Engine/Admin/Settings/Page.php:1177 +msgid "Specify XML sitemap(s) to be used for preloading" +msgstr "" +"Określ mapę(-y) witryny XML, które mają być używane do wstępnego wczytywania" +" (po jednej na linię)" + +#: inc/Engine/Admin/Settings/Page.php:1187 +msgid "URLs to prefetch" +msgstr "URL do prefetch" + +#: inc/Engine/Admin/Settings/Page.php:1188 +msgid "" +"Specify external hosts to be prefetched (no http:, one per " +"line)" +msgstr "" +"Określ zewnętrzne hosty, które mają być wstępnie ustawione metodą prefetch " +"(nie dodawaj http:, po jednym na linię)" + +#: inc/Engine/Admin/Settings/Page.php:1197 +msgid "Fonts to preload" +msgstr "Czcionki do wstępnego ładowania" + +#: inc/Engine/Admin/Settings/Page.php:1198 +msgid "" +"Specify urls of the font files to be preloaded (one per line). Fonts must be" +" hosted on your own domain, or the domain you have specified on the CDN tab." +msgstr "" +"Określ urle plików z czcionkami, które mają być wgrane (jeden na linię). " +"Czcionki muszą być hostowane we własnej domenie, lub domenie, którą podałeś " +"w zakładce CDN." + +#: inc/Engine/Admin/Settings/Page.php:1199 +msgid "" +"The domain part of the URL will be stripped automatically.
      Allowed font " +"extensions: otf, ttf, svg, woff, woff2." +msgstr "" +"Domenowa część adresu URL zostanie usunięta automatycznie.
      Dozwolone " +"rozszerzenia czcionki: otf, ttf, svg, woff, woff2." + +#: inc/Engine/Admin/Settings/Page.php:1208 +msgid "Enable link preloading" +msgstr "Włącz wstępne ładowanie łączy" + +#: inc/Engine/Admin/Settings/Page.php:1227 +msgid "Advanced Rules" +msgstr "Zaawansowane reguły" + +#: inc/Engine/Admin/Settings/Page.php:1228 +msgid "Fine-tune cache rules" +msgstr "Dopasowanie zasad dotyczących pamięci podręcznej" + +#: inc/Engine/Admin/Settings/Page.php:1237 +msgid "" +"Sensitive pages like custom login/logout URLs should be excluded from cache." +msgstr "" +"Wrażliwe strony, takie jak niestandardowe adresy URL logowania/wylogowywania" +" powinny być wyłączone z pamięci podręcznej." + +#: inc/Engine/Admin/Settings/Page.php:1240 +msgctxt "plugin name" +msgid "WooCommerce" +msgstr "WooCommerce" + +#: inc/Engine/Admin/Settings/Page.php:1242 +msgctxt "plugin name" +msgid "Easy Digital Downloads" +msgstr "Easy Digital Downloads" + +#: inc/Engine/Admin/Settings/Page.php:1244 +msgctxt "plugin name" +msgid "iThemes Exchange" +msgstr "iThemes Exchange" + +#: inc/Engine/Admin/Settings/Page.php:1246 +msgctxt "plugin name" +msgid "Jigoshop" +msgstr "Jigoshop" + +#: inc/Engine/Admin/Settings/Page.php:1248 +msgctxt "plugin name" +msgid "WP-Shop" +msgstr "WP-Shop" + +#: inc/Engine/Admin/Settings/Page.php:1254 +#, php-format +msgid "" +"
      Cart, checkout and \"my account\" pages set in " +"%1$s%2$s%3$s will be detected and never cached by default." +msgstr "" +"
      Strony koszyka, kasy i \"moje konto\" ustawione w " +"%1$s%2$s%3$s zostaną wykryte i nigdy nie będą domyślnie " +"buforowane." + +#: inc/Engine/Admin/Settings/Page.php:1264 inc/admin/options.php:128 +msgid "Never Cache URL(s)" +msgstr "Nigdy nie używaj pamięci podręcznej dla URL(i)" + +#: inc/Engine/Admin/Settings/Page.php:1275 +msgid "Never Cache Cookies" +msgstr "Nigdy nie używaj pamięci podręcznej dla cookies" + +#: inc/Engine/Admin/Settings/Page.php:1280 inc/admin/options.php:129 +msgid "Never Cache User Agent(s)" +msgstr "Nigdy nie używaj pamięci podręcznej dla agenta(-ów) użytkowników" + +#: inc/Engine/Admin/Settings/Page.php:1285 inc/admin/options.php:130 +msgid "Always Purge URL(s)" +msgstr "Zawsze oczyścić adres(y) URL" + +#: inc/Engine/Admin/Settings/Page.php:1294 +msgid "Cache Query String(s)" +msgstr "Przechowuj ciąg(i) zapytań w pamięci podręcznej" + +#: inc/Engine/Admin/Settings/Page.php:1297 +#, php-format +msgid "" +"%1$sCache for query strings%2$s enables you to force caching for specific " +"GET parameters." +msgstr "" +"%1$sPrzechowywanie ciąg(-ów) zapytań w pamięci podręcznej%2$s umożliwia " +"wymuszenie buforowania dla określonych parametrów GET." + +#: inc/Engine/Admin/Settings/Page.php:1311 +msgid "" +"Specify URLs of pages or posts that should never be cached (one per line)" +msgstr "" +"Określ adresy URL stron lub wpisów, które nigdy nie powinny być " +"przechowywane w pamięci podręcznej (po jednym na linię)" + +#: inc/Engine/Admin/Settings/Page.php:1312 +#: inc/Engine/Admin/Settings/Page.php:1340 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*) " +"wildcards to address multiple URLs under a given path." +msgstr "" +"Część domeny adresu URL zostanie automatycznie usunięta.
      Użyj symboli " +"wieloznacznych wildcard (.*), w celu uwzględnienia wielu adresów URL w danej" +" ścieżce." + +#: inc/Engine/Admin/Settings/Page.php:1321 +msgid "" +"Specify the IDs of cookies that, when set in the visitor's browser, should " +"prevent a page from getting cached (one per line)" +msgstr "" +"Określ ID plików cookie, które po ustawieniu w przeglądarce użytkownika " +"powinny uniemożliwiać buforowanie strony (po jednym na linię)" + +#: inc/Engine/Admin/Settings/Page.php:1329 +msgid "" +"Specify user agent strings that should never see cached pages (one per line)" +msgstr "" +"Określ agentów użytkowników, którzy nigdy nie powinni otrzymywać stron z " +"pamięci podręcznej (po jednej na linię)" + +#: inc/Engine/Admin/Settings/Page.php:1330 +msgid "Use (.*) wildcards to detect parts of UA strings." +msgstr "" +"Użyj symboli wieloznacznych wildcard (.*) do wykrywania części łańcuchów UA." + +#: inc/Engine/Admin/Settings/Page.php:1339 +msgid "" +"Specify URLs you always want purged from cache whenever you update any post " +"or page (one per line)" +msgstr "" +"Określ adresy URL, które zawsze chcesz usunąć z pamięci podręcznej przy " +"każdej aktualizacji wpisu lub strony (po jednym na linię)" + +#: inc/Engine/Admin/Settings/Page.php:1348 +msgid "Specify query strings for caching (one per line)" +msgstr "" +"Określ ciągi zapytań przeznaczonych do przechowywania w pamięci podręcznej " +"(po jednym na linię)" + +#: inc/Engine/Admin/Settings/Page.php:1373 inc/deprecated/deprecated.php:1775 +msgid "Database" +msgstr "Baza danych" + +#: inc/Engine/Admin/Settings/Page.php:1374 +msgid "Optimize, reduce bloat" +msgstr "Optymalizacja, redukcja nadmiaru" + +#: inc/Engine/Admin/Settings/Page.php:1383 +msgid "Post Cleanup" +msgstr "Czyszczenie wpisów" + +#: inc/Engine/Admin/Settings/Page.php:1385 +msgid "" +"Post revisions and drafts will be permanently deleted. Do not use this " +"option if you need to retain revisions or drafts." +msgstr "" +"Wersje wpisów i szkice zostaną trwale usunięte. Nie używaj tej opcji, jeśli " +"chcesz zachować poprzednie wersje w wpisach lub szkice." + +#: inc/Engine/Admin/Settings/Page.php:1393 +msgid "Comments Cleanup" +msgstr "Czyszczenie komentarzy" + +#: inc/Engine/Admin/Settings/Page.php:1395 +msgid "Spam and trashed comments will be permanently deleted." +msgstr "Spam i komentarze znajdujące się w koszu zostaną trwale usunięte." + +#: inc/Engine/Admin/Settings/Page.php:1399 +msgid "Transients Cleanup" +msgstr "Czyszczenie tymczasowych wpisów" + +#: inc/Engine/Admin/Settings/Page.php:1401 +msgid "" +"Transients are temporary options; they are safe to remove. They will be " +"automatically regenerated as your plugins require them." +msgstr "" +"Tymczasowe wpisy (transients) są opcjami tymczasowymi; można je bezpiecznie " +"usunąć. Będą one automatycznie regenerowane zgodnie z wymaganiami " +"dotyczącymi wtyczek." + +#: inc/Engine/Admin/Settings/Page.php:1405 +msgid "Database Cleanup" +msgstr "Czyszczenie bazy danych" + +#: inc/Engine/Admin/Settings/Page.php:1407 +msgid "Reduces overhead of database tables" +msgstr "Zmniejsza nadmiar danych w tabelach bazy danych" + +#: inc/Engine/Admin/Settings/Page.php:1411 +msgid "Automatic cleanup" +msgstr "Automatyczne czyszczenie" + +#: inc/Engine/Admin/Settings/Page.php:1422 +#: inc/classes/admin/Database/class-optimization.php:41 +msgid "Revisions" +msgstr "Wersje" + +#: inc/Engine/Admin/Settings/Page.php:1424 +#, php-format +msgid "%s revision in your database." +msgid_plural "%s revisions in your database." +msgstr[0] "%s wersja w Twojej bazie danych." +msgstr[1] "%s wersje w Twojej bazie danych." +msgstr[2] "%s wersji w Twojej bazie danych." +msgstr[3] "%s wersji w Twojej bazie danych." + +#: inc/Engine/Admin/Settings/Page.php:1432 +#: inc/classes/admin/Database/class-optimization.php:42 +msgid "Auto Drafts" +msgstr "Automatyczne szkice" + +#: inc/Engine/Admin/Settings/Page.php:1434 +#, php-format +msgid "%s draft in your database." +msgid_plural "%s drafts in your database." +msgstr[0] "%s szkic w Twojej bazie danych." +msgstr[1] "%s szkice w Twojej bazie danych." +msgstr[2] "%s szkicy w Twojej bazie danych." +msgstr[3] "%s szkicy w Twojej bazie danych." + +#: inc/Engine/Admin/Settings/Page.php:1442 +#: inc/classes/admin/Database/class-optimization.php:43 +msgid "Trashed Posts" +msgstr "Usunięte wpisy" + +#: inc/Engine/Admin/Settings/Page.php:1444 +#, php-format +msgid "%s trashed post in your database." +msgid_plural "%s trashed posts in your database." +msgstr[0] "%s wpis w Twojej bazie danych znajdujący się w koszu." +msgstr[1] "%s wpisy w Twojej bazie danych znajdujące się w koszu." +msgstr[2] "%s wpisów w Twojej bazie danych znajdujących się w koszu." +msgstr[3] "%s wpisów w Twojej bazie danych znajdujących się w koszu." + +#: inc/Engine/Admin/Settings/Page.php:1452 +#: inc/classes/admin/Database/class-optimization.php:44 +msgid "Spam Comments" +msgstr "Spamowe komentarze" + +#: inc/Engine/Admin/Settings/Page.php:1454 +#, php-format +msgid "%s spam comment in your database." +msgid_plural "%s spam comments in your database." +msgstr[0] "%s spamowy komentarz w Twojej bazie danych." +msgstr[1] "%s spamowe komentarze w Twojej bazie danych." +msgstr[2] "%s spamowych komentarzy w Twojej bazie danych." +msgstr[3] "%s spamowych komentarzy w Twojej bazie danych." + +#: inc/Engine/Admin/Settings/Page.php:1462 +#: inc/classes/admin/Database/class-optimization.php:45 +msgid "Trashed Comments" +msgstr "Usunięte komentarze" + +#: inc/Engine/Admin/Settings/Page.php:1464 +#, php-format +msgid "%s trashed comment in your database." +msgid_plural "%s trashed comments in your database." +msgstr[0] "%s komentarz w Twojej bazie danych znajdujący się w koszu." +msgstr[1] "%s komentarze w Twojej bazie danych znajdujące się w koszu." +msgstr[2] "%s komentarzy w Twojej bazie danych znajdujące się w koszu." +msgstr[3] "%s komentarzy w Twojej bazie danych znajdujące się w koszu." + +#: inc/Engine/Admin/Settings/Page.php:1472 +#: inc/classes/admin/Database/class-optimization.php:46 +msgid "Expired transients" +msgstr "Przedawnione tymczasowe wpisy" + +#: inc/Engine/Admin/Settings/Page.php:1474 +#, php-format +msgid "%s expired transient in your database." +msgid_plural "%s expired transients in your database." +msgstr[0] "%s wygasły wpis tymczasowy w Twojej bazie danych." +msgstr[1] "%s wygasłe wpisy tymczasowe w Twojej bazie danych." +msgstr[2] "%s wygasłych wpisów tymczasowych w Twojej bazie danych." +msgstr[3] "%s wygasłych wpisów tymczasowych w Twojej bazie danych." + +#: inc/Engine/Admin/Settings/Page.php:1482 +msgid "All transients" +msgstr "Wszystkie tymczasowe wpisy" + +#: inc/Engine/Admin/Settings/Page.php:1484 +#, php-format +msgid "%s transient in your database." +msgid_plural "%s transients in your database." +msgstr[0] "%s wpis tymczasowy w Twojej bazie danych." +msgstr[1] "%s wpisy tymczasowy w Twojej bazie danych." +msgstr[2] "%s wpisów tymczasowych w Twojej bazie danych." +msgstr[3] "%s wpisów tymczasowych w Twojej bazie danych." + +#: inc/Engine/Admin/Settings/Page.php:1492 +msgid "Optimize Tables" +msgstr "Optymalizacja tabel" + +#: inc/Engine/Admin/Settings/Page.php:1494 +#, php-format +msgid "%s table to optimize in your database." +msgid_plural "%s tables to optimize in your database." +msgstr[0] "%s tabela do optymalizacji w Twojej bazie danych." +msgstr[1] "%s tabele do optymalizacji w Twojej bazie danych." +msgstr[2] "%s tabeli do optymalizacji w Twojej bazie danych." +msgstr[3] "%s tabeli do optymalizacji w Twojej bazie danych." + +#: inc/Engine/Admin/Settings/Page.php:1505 +msgid "Schedule Automatic Cleanup" +msgstr "Zaplanuj automatyczne czyszczenie" + +#: inc/Engine/Admin/Settings/Page.php:1517 +msgid "Frequency" +msgstr "Częstotliwość" + +#: inc/Engine/Admin/Settings/Page.php:1525 +msgid "Daily" +msgstr "Codziennie" + +#: inc/Engine/Admin/Settings/Page.php:1526 +msgid "Weekly" +msgstr "Co tydzień" + +#: inc/Engine/Admin/Settings/Page.php:1527 +msgid "Monthly" +msgstr "Co miesiąc" + +#: inc/Engine/Admin/Settings/Page.php:1543 +#: inc/Engine/Admin/Settings/Page.php:1554 inc/admin/ui/meta-boxes.php:76 +#: inc/deprecated/deprecated.php:1773 +msgid "CDN" +msgstr "CDN" + +#: inc/Engine/Admin/Settings/Page.php:1544 +msgid "Integrate your CDN" +msgstr "Zintegruj swój CDN" + +#: inc/Engine/Admin/Settings/Page.php:1556 +msgid "" +"All URLs of static files (CSS, JS, images) will be rewritten to the CNAME(s)" +" you provide." +msgstr "" +"Wszystkie adresy URL plików statycznych (CSS, JS, obrazy) zostaną przepisane" +" do CNAME, które podasz." + +#: inc/Engine/Admin/Settings/Page.php:1558 +#, php-format +msgid "" +"Not required for services like Cloudflare and Sucuri. Please see our " +"available %1$sAdd-ons%2$s." +msgstr "" +"Nie wymagane w przypadku usług takich jak Cloudflare i Sucuri. Proszę " +"zobaczyć nasze dostępne %1$sDodatki%2$s." + +#: inc/Engine/Admin/Settings/Page.php:1573 inc/admin/options.php:131 +msgid "Exclude files from CDN" +msgstr "Pomiń pliki z CDN" + +#: inc/Engine/Admin/Settings/Page.php:1599 +#, php-format +msgid "" +"%1$s%2$s Add-on%3$s is currently enabled. Configuration of the CDN settings " +"is not required for %2$s to work on your site." +msgid_plural "" +"%1$s%2$s Add-ons%3$s are currently enabled. Configuration of the CDN " +"settings is not required for %2$s to work on your site." +msgstr[0] "" +"%1$s%2$s Dodatek%3$s jest obecnie włączony. Konfiguracja ustawień CDN nie " +"jest wymagana, aby %2$s działał w Twojej witrynie." +msgstr[1] "" +"%1$s%2$s Dodatki%3$s są obecnie włączone. Konfiguracja ustawień CDN nie jest" +" wymagana, aby %2$s działał w Twojej witrynie." +msgstr[2] "" +"%1$s%2$s Dodatków%3$s jest obecnie włączonych. Konfiguracja ustawień CDN nie" +" jest wymagana, aby %2$s działał w Twojej witrynie." +msgstr[3] "" +"%1$s%2$s Dodatków%3$s jest obecnie włączonych. Konfiguracja ustawień CDN nie" +" jest wymagana, aby %2$s działał w Twojej witrynie." + +#: inc/Engine/Admin/Settings/Page.php:1624 +msgid "Enable Content Delivery Network" +msgstr "Włącz sieć dostarczania treści CDN" + +#: inc/Engine/Admin/Settings/Page.php:1633 +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:151 +msgid "CDN CNAME(s)" +msgstr "CDN CNAME:" + +#: inc/Engine/Admin/Settings/Page.php:1634 +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:152 +msgid "Specify the CNAME(s) below" +msgstr "Należy wymienić poniżej pozycje CNAME" + +#: inc/Engine/Admin/Settings/Page.php:1641 +msgid "" +"Specify URL(s) of files that should not get served via CDN (one per line)." +msgstr "" +"Podaj adres(y) URL plików, które nie powinny być obsługiwane przez CDN " +"(jeden na linię)." + +#: inc/Engine/Admin/Settings/Page.php:1642 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*) " +"wildcards to exclude all files of a given file type located at a specific " +"path." +msgstr "" +"Część domenowa adresu URL zostanie automatycznie usunięta.
      Użyj (.*) " +"symboli wieloznacznych, aby wykluczyć wszystkie pliki danego typu pliku " +"znajdującego się w określonej ścieżce." + +#: inc/Engine/Admin/Settings/Page.php:1664 +#: inc/Engine/Admin/Settings/Page.php:1672 +msgid "Heartbeat" +msgstr "Heartbeat" + +#: inc/Engine/Admin/Settings/Page.php:1665 +msgid "Control WordPress Heartbeat API" +msgstr "Kontrola WordPress Heartbeat API" + +#: inc/Engine/Admin/Settings/Page.php:1673 +msgid "" +"Reducing or disabling the Heartbeat API’s activity can help save some of " +"your server’s resources." +msgstr "" +"Ograniczenie lub wyłączenie aktywności Heartbeat API może pomóc w " +"oszczędzaniu zasobów Twojego serwera." + +#: inc/Engine/Admin/Settings/Page.php:1682 +msgid "Reduce or disable Heartbeat activity" +msgstr "Zmniejszenie lub wyłączenie aktywności Heartbeat" + +#: inc/Engine/Admin/Settings/Page.php:1683 +msgid "" +"Reducing activity will change Heartbeat frequency from one hit each minute " +"to one hit every 2 minutes." +msgstr "" +"Zmniejszenie aktywności spowoduje zmianę częstotliwości Heartbeat z jednego " +"uruchomienia co minutę na jedno uruchomienie co 2 minuty." + +#: inc/Engine/Admin/Settings/Page.php:1683 +msgid "" +"Disabling Heartbeat entirely may break plugins and themes using this API." +msgstr "" +"Wyłączenie Heartbeat całkowicie może spowodować usterki wtyczek i motywów " +"korzystających z tego API." + +#: inc/Engine/Admin/Settings/Page.php:1697 +msgid "Do not limit" +msgstr "Brak limitu" + +#: inc/Engine/Admin/Settings/Page.php:1698 +msgid "Reduce activity" +msgstr "Zmniejszenie aktywności" + +#: inc/Engine/Admin/Settings/Page.php:1699 +msgid "Disable" +msgstr "Wyłącz" + +#: inc/Engine/Admin/Settings/Page.php:1707 +msgid "Control Heartbeat" +msgstr "Kontrola Heartbeat" + +#: inc/Engine/Admin/Settings/Page.php:1716 +msgid "Behavior in backend" +msgstr "Zachowanie w backendzie" + +#: inc/Engine/Admin/Settings/Page.php:1723 +msgid "Behavior in post editor" +msgstr "Zachowanie w edytorze wpisu" + +#: inc/Engine/Admin/Settings/Page.php:1729 +msgid "Behavior in frontend" +msgstr "Zachowanie w frontend" + +#: inc/Engine/Admin/Settings/Page.php:1745 +#: views/settings/page-sections/tutorials.php:36 +msgid "Add-ons" +msgstr "Dodatki" + +#: inc/Engine/Admin/Settings/Page.php:1746 +msgid "Add more features" +msgstr "Dodaj więcej funkcji" + +#: inc/Engine/Admin/Settings/Page.php:1753 +msgid "One-click Rocket Add-ons" +msgstr "Dodatki One-click Rocket Add-ons" + +#: inc/Engine/Admin/Settings/Page.php:1754 +msgid "" +"One-Click Add-ons are features extending available options without " +"configuration needed. Switch the option \"on\" to enable from this screen." +msgstr "" +"One-Click Add-ons to funkcje rozszerzające dostępne opcje bez konieczności " +"konfigurowania. Włączyć opcję \"on\", aby włączyć z tego ekranu." + +#: inc/Engine/Admin/Settings/Page.php:1764 +msgid "Rocket Add-ons" +msgstr "Dodatki One-click Rocket Add-ons" + +#: inc/Engine/Admin/Settings/Page.php:1765 +msgid "Rocket Add-ons are complementary features extending available options." +msgstr "" +"Rocket Add-ons to uzupełniające się funkcje rozszerzające dostępne opcje." + +#: inc/Engine/Admin/Settings/Page.php:1778 +msgid "Google Tracking" +msgstr "Śledzenie Google" + +#: inc/Engine/Admin/Settings/Page.php:1784 +msgid "Improve browser caching for Google Analytics" +msgstr "Popraw pamięć podręczną przeglądarki dla Google Analytics" + +#: inc/Engine/Admin/Settings/Page.php:1786 +#, php-format +msgid "" +"WP Rocket will host these Google scripts locally on your server to help " +"satisfy the PageSpeed recommendation for Leverage browser " +"caching.
      %1$sLearn more%2$s" +msgstr "" +"WP Rocket będzie hostem tych skryptów Google lokalnie na Twoim serwerze, aby" +" pomóc w spełnieniu wymagań PageSpeed dla Pamięci " +"przeglądarki.
      %1$sDowiedz się więcej%2$s" + +#: inc/Engine/Admin/Settings/Page.php:1801 +msgid "Facebook Pixel" +msgstr "Facebook Pixel" + +#: inc/Engine/Admin/Settings/Page.php:1807 +msgid "Improve browser caching for Facebook Pixel" +msgstr "Popraw pamięć podręczną przeglądarki dla Piksela Facebooka" + +#: inc/Engine/Admin/Settings/Page.php:1809 +#, php-format +msgid "" +"WP Rocket will host these Facebook Pixels locally on your server to help " +"satisfy the PageSpeed recommendation for Leverage browser " +"caching.
      %1$sLearn more%2$s" +msgstr "" +"WP Rocket będzie hostował te Piksele Facebooka lokalnie na Twoim serwerze, " +"aby pomóc w spełnieniu zaleceń PageSpeed dla Pamięci podręcznej " +"przeglądarki.
      %1$sDowiedz się więcej%2$s" + +#: inc/Engine/Admin/Settings/Page.php:1822 +#: inc/Engine/Admin/Settings/Page.php:1923 +msgid "Cloudflare" +msgstr "CloudFlare" + +#: inc/Engine/Admin/Settings/Page.php:1828 +msgid "Integrate your Cloudflare account with this add-on." +msgstr "Zintegruj swoje konto CloudFlare dzięki temu dodatkowi." + +#: inc/Engine/Admin/Settings/Page.php:1829 +msgid "" +"Provide your account email, global API key, and domain to use options such " +"as clearing the Cloudflare cache and enabling optimal settings with WP " +"Rocket." +msgstr "" +"Podaj swój adres e-mail konta, globalny klucz API i domenę, aby korzystać z " +"opcji takich jak czyszczenie pamięci podręcznej Cloudflare i umożliwienie " +"optymalnych ustawień z WP Rocket." + +#: inc/Engine/Admin/Settings/Page.php:1863 +msgid "Varnish" +msgstr "Varnish" + +#: inc/Engine/Admin/Settings/Page.php:1869 +msgid "If Varnish runs on your server, you must activate this add-on." +msgstr "Jeśli Varnish działa na Twoim serwerze, musisz aktywować ten dodatek." + +#: inc/Engine/Admin/Settings/Page.php:1871 +#, php-format +msgid "" +"Varnish cache will be purged each time WP Rocket clears its cache to ensure " +"content is always up-to-date.
      %1$sLearn more%2$s" +msgstr "" +"Pamięć podręczna Varnish będzie oczyszczana za każdym razem, gdy WP Rocket " +"wyczyści pamięć podręczną, aby zapewnić, że zawartość jest zawsze " +"aktualna.
      %1$sDowiedz się więcej%2$s" + +#: inc/Engine/Admin/Settings/Page.php:1885 +msgid "Clear the Sucuri cache when WP Rocket’s cache is cleared." +msgstr "" +"Wyczyść pamięć podręczną Sucuri, gdy pamięć podręczna WP Rocket jest " +"czyszczona." + +#: inc/Engine/Admin/Settings/Page.php:1888 +msgid "" +"Provide your API key to clear the Sucuri cache when WP Rocket’s cache is " +"cleared." +msgstr "" +"Podaj swój klucz API, aby wyczyścić pamięć podręczną Sucuri, gdy pamięć " +"podręczna WP Rocket jest czyszczona." + +#: inc/Engine/Admin/Settings/Page.php:1896 +#: inc/Engine/Admin/Settings/Page.php:2040 +msgid "Sucuri" +msgstr "Sucuri" + +#: inc/Engine/Admin/Settings/Page.php:1902 +msgid "Synchronize Sucuri cache with this add-on." +msgstr "Zsynchronizuj pamięć podręczną Sucuri, dzięki temu dodatkowi." + +#: inc/Engine/Admin/Settings/Page.php:1940 +msgid "Cloudflare credentials" +msgstr "Dane uwierzytelniające CloudFlare" + +#: inc/Engine/Admin/Settings/Page.php:1949 +msgid "Cloudflare settings" +msgstr "Ustawienia CloudFlare" + +#: inc/Engine/Admin/Settings/Page.php:1963 +msgctxt "Cloudflare" +msgid "Global API key:" +msgstr "Globalny klucz API:" + +#: inc/Engine/Admin/Settings/Page.php:1964 +msgctxt "Cloudflare" +msgid "Find your API key" +msgstr "Znajdź swój klucz API" + +#: inc/Engine/Admin/Settings/Page.php:1976 +msgctxt "Cloudflare" +msgid "Account email" +msgstr "E-mail konta" + +#: inc/Engine/Admin/Settings/Page.php:1985 +msgctxt "Cloudflare" +msgid "Zone ID" +msgstr "ID strefy" + +#: inc/Engine/Admin/Settings/Page.php:1995 +msgid "Development mode" +msgstr "Tryb deweloperski" + +#: inc/Engine/Admin/Settings/Page.php:1997 +#, php-format +msgid "" +"Temporarily activate development mode on your website. This setting will " +"automatically turn off after 3 hours. %1$sLearn more%2$s" +msgstr "" +"Tymczasowo aktywuj tryb deweloperski w swojej witrynie. To ustawienie " +"wyłączy się automatycznie po 3 godzinach. %1$sDowiedz się więcej%2$s" + +#: inc/Engine/Admin/Settings/Page.php:2005 +msgid "Optimal settings" +msgstr "Optymalne ustawienia" + +#: inc/Engine/Admin/Settings/Page.php:2006 +msgid "" +"Automatically enhances your Cloudflare configuration for speed, performance " +"grade and compatibility." +msgstr "" +"Automatycznie poprawia konfigurację CloudFlare w celu zapewnienia szybkości," +" klasy wydajności i kompatybilności." + +#: inc/Engine/Admin/Settings/Page.php:2014 +msgid "Relative protocol" +msgstr "Protokół względny" + +#: inc/Engine/Admin/Settings/Page.php:2015 +msgid "" +"Should only be used with Cloudflare's flexible SSL feature. URLs of static " +"files (CSS, JS, images) will be rewritten to use // instead of http:// or " +"https://." +msgstr "" +"Powinien być używany tylko z elastyczną funkcją Cloudflare'a SSL. adresy URL" +" plików statycznych (CSS, JS, obrazy) zostaną przepisane w celu użycia // " +"zamiast http:// lub https://." + +#: inc/Engine/Admin/Settings/Page.php:2053 +msgid "Sucuri credentials" +msgstr "Dane uwierzytelniające Sucuri" + +#: inc/Engine/Admin/Settings/Page.php:2066 +msgctxt "Sucuri" +msgid "" +"Firewall API key (for plugin), must be in format {32 characters}/{32 " +"characters}:" +msgstr "" +"Klucz API zapory (dla wtyczki), musi być w formacie {32 znaki}/{32 " +"znaki}:" + +#: inc/Engine/Admin/Settings/Page.php:2067 +msgctxt "Sucuri" +msgid "Find your API key" +msgstr "Znajdź swój klucz API" + +#: inc/Engine/Admin/Settings/Render.php:461 inc/deprecated/deprecated.php:1294 +msgid "Upload file and import settings" +msgstr "Wczytaj plik i zaimportuj ustawienia" + +#: inc/Engine/Admin/Settings/Settings.php:400 +msgid "" +"Sucuri Add-on: The API key for the Sucuri firewall must be in format " +"{32 characters}/{32 characters}." +msgstr "" +"Dodatek Sucuri: Klucz API dla zapory sieciowej Sucuri musi być w formacie " +"{32 znaki}/{32 znaki}." + +#: inc/Engine/Admin/Settings/Settings.php:491 +#: inc/deprecated/deprecated.php:1245 +msgid "Settings saved." +msgstr "Ustawienia zostały zapisane." + +#: inc/Engine/Admin/Settings/Subscriber.php:141 +#: inc/deprecated/deprecated.php:1786 +#: views/settings/page-sections/tools.php:33 +msgid "Tools" +msgstr "Narzędzia" + +#: inc/Engine/Admin/Settings/Subscriber.php:142 +msgid "Import, Export, Rollback" +msgstr "Import, Eksport, Wycofanie" + +#: inc/Engine/Admin/Settings/Subscriber.php:163 +#: views/settings/page-sections/imagify.php:14 +msgid "Image Optimization" +msgstr "Optymalizacja obrazków" + +#: inc/Engine/Admin/Settings/Subscriber.php:164 +msgid "Compress your images" +msgstr "Kompresuj obrazy" + +#: inc/Engine/Admin/Settings/Subscriber.php:181 +#: views/settings/page-sections/tutorials.php:45 +msgid "Tutorials" +msgstr "Poradniki" + +#: inc/Engine/Admin/Settings/Subscriber.php:182 +msgid "Getting started and how to videos" +msgstr "Pierwsze kroki i szkolenia wideo" + +#: inc/Engine/CDN/RocketCDN/APIClient.php:154 +msgid "RocketCDN is not available at the moment. Please retry later" +msgstr "" +"RocketCDN nie jest w tej chwili dostępny. Proszę spróbować ponownie później" + +#: inc/Engine/CDN/RocketCDN/APIClient.php:171 +msgid "RocketCDN cache purge failed: Missing identifier parameter." +msgstr "" +"RocketCDN: nie udało się oczyścić pamięci podręcznej: Brakujący parametr " +"identyfikatora." + +#: inc/Engine/CDN/RocketCDN/APIClient.php:180 +msgid "RocketCDN cache purge failed: Missing user token." +msgstr "" +"RocketCDN: nie udało się oczyścić pamięci podręcznej: Brakujący token " +"użytkownika." + +#: inc/Engine/CDN/RocketCDN/APIClient.php:199 +msgid "" +"RocketCDN cache purge failed: The API returned an unexpected response code." +msgstr "" +"RocketCDN: nie udało się oczyścić pamięci podręcznej: API zwróciło " +"nieoczekiwany kod odpowiedzi." + +#: inc/Engine/CDN/RocketCDN/APIClient.php:208 +msgid "RocketCDN cache purge failed: The API returned an empty response." +msgstr "" +"RocketCDN: nie udało się oczyścić pamięci podręcznej: API zwróciło pustą " +"odpowiedź." + +#: inc/Engine/CDN/RocketCDN/APIClient.php:217 +msgid "RocketCDN cache purge failed: The API returned an unexpected response." +msgstr "" +"RocketCDN: nie udało się oczyścić pamięci podręcznej: API zwróciło " +"nieoczekiwaną odpowiedź." + +#: inc/Engine/CDN/RocketCDN/APIClient.php:226 +#, php-format +msgid "RocketCDN cache purge failed: %s." +msgstr "" +"RocketCDN: nie udało się oczyścić pamięci podręcznej: cache purge nie " +"powiodło się: %s." + +#: inc/Engine/CDN/RocketCDN/APIClient.php:234 +msgid "RocketCDN cache purge successful." +msgstr "RocketCDN: pomyślnie oczyszczono pamięć podręczną." + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:82 +msgid "Next Billing Date" +msgstr "Data wystawienia następnego rachunku" + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:91 +msgid "No Subscription" +msgstr "Brak subskrypcji" + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:127 +msgid "Your RocketCDN subscription is currently active." +msgstr "Twoja subskrypcja RocketCDN jest obecnie aktywna." + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:133 +#, php-format +msgid "To use RocketCDN, replace your CNAME with %1$s%2$s%3$s." +msgstr "Aby użyć RocketCDN, zastąp CNAME wartością %1$s%2$s%3$s." + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:144 +#, php-format +msgid "%1$sMore Info%2$s" +msgstr "%1$sWięcej informacji%2$s" + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:190 +msgid "Manage Subscription" +msgstr "Zarządzaj subskrypcją" + +#: inc/Engine/CDN/RocketCDN/RESTSubscriber.php:137 +msgid "RocketCDN enabled" +msgstr "RocketCDN włączony" + +#: inc/Engine/CDN/RocketCDN/RESTSubscriber.php:160 +msgid "RocketCDN disabled" +msgstr "RakietaCDN wyłączony" + +#: inc/Engine/Cache/AdminSubscriber.php:118 inc/admin/admin.php:71 +#: inc/admin/admin.php:92 inc/deprecated/3.5.php:908 +msgid "Clear this cache" +msgstr "Wyczyść tą pamięć podręczną" + +#: inc/Engine/Cache/WPCache.php:330 +msgid "WP_CACHE value" +msgstr "Wartość WP_CACHE" + +#: inc/Engine/Cache/WPCache.php:351 +msgid "" +"The WP_CACHE constant needs to be set to true for WP Rocket cache to work " +"properly" +msgstr "" +"Stała WP_CACHE musi być ustawiona na wartość rzeczywistą, aby pamięć " +"podręczna WP Rocket działała prawidłowo" + +#: inc/Engine/Cache/WPCache.php:360 +msgid "WP_CACHE is set to true" +msgstr "WP_CACHE jest ustawiony na true" + +#: inc/Engine/Cache/WPCache.php:368 +msgid "WP_CACHE is not set" +msgstr "WP_CACHE nie jest ustawiony" + +#: inc/Engine/Cache/WPCache.php:376 +msgid "WP_CACHE is set to false" +msgstr "WP_CACHE jest ustawiony na false" + +#: inc/Engine/CriticalPath/APIClient.php:64 +#, php-format +msgid "Critical CSS for %1$s not generated. Error: %2$s" +msgstr "Krytyczny CSS dla %1$s nie został wygenerowany. Błąd: %2$s" + +#: inc/Engine/CriticalPath/APIClient.php:170 +#: inc/Engine/CriticalPath/DataManager.php:66 +#, php-format +msgid "" +"Critical CSS for %1$s on mobile not generated. Error: The API returned an " +"empty response." +msgstr "" +"Krytyczny CSS za %1$s na urządzeniach nie został wygenerowany. Błąd: API " +"zwróciło pustą odpowiedź." + +#: inc/Engine/CriticalPath/APIClient.php:173 +#: inc/Engine/CriticalPath/DataManager.php:69 +#, php-format +msgid "" +"Critical CSS for %1$s not generated. Error: The API returned an empty " +"response." +msgstr "" +"Krytyczny CSS dla %1$s nie został wygenerowany. Błąd: API zwróciło pustą " +"odpowiedź." + +#: inc/Engine/CriticalPath/APIClient.php:185 +#, php-format +msgid "Critical CSS for %1$s on mobile not generated." +msgstr "Krytyczny CSS dla %1$s na urządzenia mobilne nie został wygenerowany." + +#: inc/Engine/CriticalPath/APIClient.php:187 +#: inc/Engine/CriticalPath/ProcessorService.php:193 +#, php-format +msgid "Critical CSS for %1$s not generated." +msgstr "Krytyczny CSS dla %1$s nie został wygenerowany." + +#: inc/Engine/CriticalPath/APIClient.php:195 +#, php-format +msgid "" +"Critical CSS for %1$s on mobile not generated. Error: The API returned an " +"invalid response code." +msgstr "" +"Krytyczny CSS za %1$s na urządzenia mobilne nie został wygenerowany. Błąd: " +"API zwróciło nieprawidłowy kod odpowiedzi." + +#: inc/Engine/CriticalPath/APIClient.php:197 +#, php-format +msgid "" +"Critical CSS for %1$s not generated. Error: The API returned an invalid " +"response code." +msgstr "" +"Krytyczny CSS dla %1$s nie został wygenerowany. Błąd: API zwróciło " +"nieprawidłowy kod odpowiedzi." + +#: inc/Engine/CriticalPath/APIClient.php:205 +#: inc/Engine/CriticalPath/ProcessorService.php:200 +#, php-format +msgid "Error: %1$s" +msgstr "Błąd: %1$s" + +#: inc/Engine/CriticalPath/Admin/Admin.php:260 +msgid "Regenerate Critical Path CSS" +msgstr "Regeneruj CSS w krytycznej ścieżce" + +#: inc/Engine/CriticalPath/Admin/Post.php:132 +#: views/cpcss/metabox/generate.php:47 +msgid "Generate Specific CPCSS" +msgstr "Generuj specyficzny CPCSS" + +#: inc/Engine/CriticalPath/Admin/Post.php:133 +#: views/cpcss/metabox/generate.php:45 +msgid "Regenerate specific CPCSS" +msgstr "Regeneruj określony CPCSS" + +#: inc/Engine/CriticalPath/Admin/Post.php:199 +msgid "%l to use this feature." +msgstr "%l do korzystania z tej funkcji." + +#: inc/Engine/CriticalPath/Admin/Post.php:202 +#, php-format +msgid "Publish the %s" +msgstr "Opublikuj %s" + +#: inc/Engine/CriticalPath/Admin/Post.php:203 +msgid "Enable Optimize CSS delivery in WP Rocket settings" +msgstr "Włącz optymalizację dostarczania CSS w ustawieniach WP Rocket" + +#: inc/Engine/CriticalPath/Admin/Post.php:204 +msgid "Enable Optimize CSS delivery in the options above" +msgstr "Włącz optymalizację dostarczania CSS w powyższych opcjach" + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:147 +msgid "Critical CSS generation is currently running." +msgstr "Generowanie krytycznych CSS jest obecnie uruchomione." + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:152 +#: inc/Engine/Preload/PreloadSubscriber.php:242 +#, php-format +msgid "Go to the %1$sWP Rocket settings%2$s page to track progress." +msgstr "Przejdź do strony %1$sustawień WP Rocket%2$s, aby śledzić postęp." + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:366 +#, php-format +msgid "" +"Critical CSS generation is currently running: %1$d of %2$d page types " +"completed. (Refresh this page to view progress)" +msgstr "" +"Obecnie trwa generowanie krytycznego CSS: %1$d z %2$d typów stron zostało " +"zakończonych. (Odśwież tę stronę, aby zobaczyć postęp)" + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:438 +#, php-format +msgid "Critical CSS generation finished for %1$d of %2$d page types." +msgstr "Generowanie krytycznego CSS zakończone dla %1$d z %2$d typów stron." + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:445 +msgid "Critical CSS generation encountered one or more errors." +msgstr "Generowanie krytycznych CSS napotkało jeden lub więcej błędów." + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:445 +msgid "Learn more." +msgstr "Dowiedz się więcej." + +#: inc/Engine/CriticalPath/DataManager.php:102 +msgid "Critical CSS file for mobile does not exist" +msgstr "Nie istnieje krytyczny plik CSS dla urządzeń mobilnych" + +#: inc/Engine/CriticalPath/DataManager.php:104 +msgid "Critical CSS file does not exist" +msgstr "Nie istnieje krytyczny plik CSS" + +#: inc/Engine/CriticalPath/DataManager.php:116 +msgid "Critical CSS file for mobile cannot be deleted" +msgstr "Krytyczny plik CSS dla urządzeń mobilnych nie może zostać usunięty" + +#: inc/Engine/CriticalPath/DataManager.php:118 +msgid "Critical CSS file cannot be deleted" +msgstr "Krytyczny plik CSS nie może zostać usunięty" + +#: inc/Engine/CriticalPath/ProcessorService.php:186 +#, php-format +msgid "Mobile Critical CSS for %1$s not generated." +msgstr "" +"Krytyczny CSS dla urządzeń mobilnych dla %1$s nie został wygenerowany." + +#: inc/Engine/CriticalPath/ProcessorService.php:227 +#, php-format +msgid "Critical CSS for %s in progress." +msgstr "Krytyczny CSS dla %s w toku." + +#: inc/Engine/CriticalPath/ProcessorService.php:261 +#, php-format +msgid "Mobile Critical CSS for %s generated." +msgstr "Krytyczny CSS dla urządzeń mobilnych dla %s został wygenerowany." + +#: inc/Engine/CriticalPath/ProcessorService.php:272 +#, php-format +msgid "Critical CSS for %s generated." +msgstr "Krytyczne CSS dla %s zostało wygenerowane." + +#: inc/Engine/CriticalPath/ProcessorService.php:294 +msgid "Critical CSS file deleted successfully." +msgstr "Krytyczny plik CSS został pomyślnie usunięty." + +#: inc/Engine/CriticalPath/ProcessorService.php:316 +#, php-format +msgid "Mobile Critical CSS for %1$s timeout. Please retry a little later." +msgstr "" +"Krytyczny CSS dla urządzeń mobilnych dla %1$s przekroczył limit czasu. " +"Proszę spróbować ponownie trochę później." + +#: inc/Engine/CriticalPath/ProcessorService.php:329 +#, php-format +msgid "Critical CSS for %1$s timeout. Please retry a little later." +msgstr "" +"Krytyczny CSS %1$s przekroczył limit czasu. Proszę spróbować ponownie trochę" +" później." + +#: inc/Engine/CriticalPath/RESTWP.php:141 +msgid "Mobile CPCSS generation not enabled." +msgstr "Generowanie CPCSS dla urządzeń mobilnych nie jest włączone." + +#: inc/Engine/CriticalPath/RESTWPPost.php:36 +#: inc/Engine/CriticalPath/RESTWPPost.php:69 +msgid "Requested post does not exist." +msgstr "Żądany wpis nie istnieje." + +#: inc/Engine/CriticalPath/RESTWPPost.php:46 +msgid "Cannot generate CPCSS for unpublished post." +msgstr "Nie można wygenerować CPCSS dla nieopublikowanych postów." + +#: inc/Engine/HealthCheck/HealthCheck.php:82 inc/deprecated/3.5.php:868 +msgid "" +"The following scheduled event failed to run. This may indicate the CRON " +"system is not running properly, which can prevent some WP Rocket features " +"from working as intended:" +msgid_plural "" +"The following scheduled events failed to run. This may indicate the CRON " +"system is not running properly, which can prevent some WP Rocket features " +"from working as intended:" +msgstr[0] "" +"Następujące zaplanowane zdarzenie zakończyło się niepowodzeniem. Może to " +"wskazywać na to, że system CRON nie działa prawidłowo, co może uniemożliwić " +"działanie niektórych funkcji WP Rocket zgodnie z przeznaczeniem:" +msgstr[1] "" +"Następujące zaplanowane zdarzenia zakończyły się niepowodzeniem. Może to " +"wskazywać na to, że system CRON nie działa prawidłowo, co może uniemożliwić " +"działanie niektórych funkcji WP Rocket zgodnie z przeznaczeniem:" +msgstr[2] "" +"Następujące zaplanowane zdarzenia zakończyły się niepowodzeniem. Może to " +"wskazywać na to, że system CRON nie działa prawidłowo, co może uniemożliwić " +"działanie niektórych funkcji WP Rocket zgodnie z przeznaczeniem:" +msgstr[3] "" +"Następujące zaplanowane zdarzenia zakończyły się niepowodzeniem. Może to " +"wskazywać na to, że system CRON nie działa prawidłowo, co może uniemożliwić " +"działanie niektórych funkcji WP Rocket zgodnie z przeznaczeniem:" + +#: inc/Engine/HealthCheck/HealthCheck.php:88 inc/deprecated/3.5.php:877 +msgid "Please contact your host to check if CRON is working." +msgstr "" +"Prosimy o kontakt z dostawcą hostingu w celu sprawdzenia, czy usługa CRON " +"działa." + +#: inc/Engine/HealthCheck/HealthCheck.php:142 +msgid "Scheduled Cache Purge" +msgstr "Planowe oczyszczenie pamięci podręcznej" + +#: inc/Engine/HealthCheck/HealthCheck.php:143 +msgid "Scheduled Database Optimization" +msgstr "Planowa optymalizacja bazy danych" + +#: inc/Engine/HealthCheck/HealthCheck.php:144 +msgid "Database Optimization Process" +msgstr "Proces optymalizacji bazy danych" + +#: inc/Engine/HealthCheck/HealthCheck.php:145 +msgctxt "noun" +msgid "Preload" +msgstr "Preload" + +#: inc/Engine/HealthCheck/HealthCheck.php:146 +msgid "Critical Path CSS Generation Process" +msgstr "Proces generowania krytycznej ścieżki CSS" + +#: inc/Engine/Optimization/DelayJS/Admin/Settings.php:104 +msgid "Restore Defaults" +msgstr "Przywróć domyślne" + +#: inc/Engine/Preload/Homepage.php:153 +#, php-format +msgid "" +"Preload encountered an error. Could not gather links on %1$s because of the " +"following error: %2$s. %3$sLearn more%4$s." +msgstr "" +"Napotkano błąd podczas ładowania wstępnego. Nie można było zgromadzić linków" +" na %1$s z powodu następującego błędu: %2$s. %3$sDowiedz się więcej%4$s." + +#: inc/Engine/Preload/Homepage.php:166 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: %2$s. Security measures could be preventing access. " +"%3$sLearn more%4$s." +msgstr "" +"Wstępne ładowanie napotkało błąd. %1$s nie jest dostępny z powodu otrzymania" +" niniejszego kodu odpowiedzi: %2$s. Dostęp mógł być uniemożliwiony przez " +"względy bezpieczeństwa. %3$sDowiedz się więcej%4$s." + +#: inc/Engine/Preload/Homepage.php:172 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: 404. Please make sure your homepage is accessible in your " +"browser. %2$sLearn more%3$s." +msgstr "" +"Wstępne ładowanie napotkało błąd. %1$s nie jest dostępny z powodu otrzymania" +" niniejszego kodu odpowiedzi 404. Upewnij się, że wprowadziłeś poprawny URL " +"mapy witryny i że jest on dostępny w Twojej przeglądarce. %2$sDowiedz się " +"więcej%3$s." + +#: inc/Engine/Preload/Homepage.php:178 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: 500. Please check with your web host about server access. " +"%2$sLearn more%3$s." +msgstr "" +"Wstępne ładowanie napotkało błąd. %1$s nie jest dostępny z powodu otrzymania" +" niniejszego kodu odpowiedzi 500. Skontaktuj się z dostawcą hostingu. " +"%2$sDowiedz się więcej%3$s." + +#: inc/Engine/Preload/Homepage.php:184 +#, php-format +msgid "" +"Preload encountered an error. Could not gather links on %1$s because it " +"returned the following response code: %2$s. %3$sLearn more%4$s." +msgstr "" +"Napotkano błąd przy ładowaniu wstępnym. Nie można było zgromadzić linków na " +"%1$s z powodu otrzymania niniejszego kodu odpowiedzi: %2$s. %3$sDowiedz się " +"więcej%4$s." + +#: inc/Engine/Preload/PreloadSubscriber.php:237 +msgid "Preload: WP Rocket has started preloading your website." +msgstr "" +"Wstępne załadowanie: WP Rocket rozpoczął wstępne ładowanie strony " +"internetowej." + +#: inc/Engine/Preload/PreloadSubscriber.php:283 +#, php-format +msgid "" +"Preload: %1$s uncached page has now been preloaded. (refresh to see " +"progress)" +msgid_plural "" +"Preload: %1$s uncached pages have now been preloaded. (refresh to see " +"progress)" +msgstr[0] "" +"Wstępne ładowanie: %1$s niebuforowana strona zostało teraz wstępnie " +"załadowana. (odśwież, aby zobaczyć postęp)" +msgstr[1] "" +"Wstępne ładowanie: %1$s niebuforowane strony zostały teraz wstępnie " +"załadowane. (odśwież, aby zobaczyć postęp)" +msgstr[2] "" +"Wstępne ładowanie: %1$s niebuforowanych stron zostało teraz wstępnie " +"załadowanych. (odśwież, aby zobaczyć postęp)" +msgstr[3] "" +"Wstępne ładowanie: %1$s niebuforowanych stron zostało teraz wstępnie " +"załadowanych. (odśwież, aby zobaczyć postęp)" + +#: inc/Engine/Preload/PreloadSubscriber.php:292 +msgid "The following error happened during gathering of the URLs to preload:" +msgid_plural "" +"The following errors happened during gathering of the URLs to preload:" +msgstr[0] "" +"Podczas pobierania adresów URL do wstępnego załadowania wystąpił następujący" +" błąd:" +msgstr[1] "" +"Podczas pobierania adresów URL do wstępnego załadowania wystąpił następujące" +" błędy:" +msgstr[2] "" +"Podczas pobierania adresów URL do wstępnego załadowania wystąpił następujące" +" błędy:" +msgstr[3] "" +"Podczas pobierania adresów URL do wstępnego załadowania wystąpił następujące" +" błędy:" + +#: inc/Engine/Preload/PreloadSubscriber.php:344 +#, php-format +msgid "Preload complete: %d pages have been cached." +msgstr "Preload zakończono: strony %d zostały zbuforowane." + +#: inc/Engine/Preload/Sitemap.php:150 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not gather links on %1$s because" +" of the following error: %2$s. %3$sLearn more%4$s." +msgstr "" +"Wstępne ładowanie mapy witryny napotkało błąd. Nie można było zgromadzić " +"linków na %1$s z powodu następującego błędu: %2$s. %3$sDowiedz się " +"więcej%4$s." + +#: inc/Engine/Preload/Sitemap.php:165 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: %2$s. Security measures could be preventing access." +" %3$sLearn more%4$s." +msgstr "" +"Wstępne ładowanie mapy witryny napotkało błąd. %1$s nie jest dostępny z " +"powodu otrzymania niniejszego kodu odpowiedzi: %2$s. Dostęp mógł być " +"uniemożliwiony przez względy bezpieczeństwa. %3$sDowiedz się więcej%4$s." + +#: inc/Engine/Preload/Sitemap.php:170 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: 404. Please make sure you entered the correct " +"sitemap URL and it is accessible in your browser. %2$sLearn more%3$s." +msgstr "" +"Wstępne ładowanie mapy witryny napotkało błąd. %1$s nie jest dostępny z " +"powodu otrzymania niniejszego kodu odpowiedzi 404. Upewnij się, że " +"wprowadziłeś poprawny URL mapy witryny i że jest on dostępny w Twojej " +"przeglądarce. %2$sDowiedz się więcej%3$s." + +#: inc/Engine/Preload/Sitemap.php:175 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: 500. Please check with your web host about server " +"access. %2$sLearn more%3$s." +msgstr "" +"Wstępne ładowanie mapy witryny napotkało błąd. %1$s nie jest dostępny z " +"powodu otrzymania niniejszego kodu odpowiedzi 500. Skontaktuj się z dostawcą" +" hostingu. %2$sDowiedz się więcej%3$s." + +#: inc/Engine/Preload/Sitemap.php:180 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not gather links on %1$s because" +" it returned the following response code: %2$s. %3$sLearn more%4$s." +msgstr "" +"Wstępne ładowanie mapy witryny napotkało błąd. Nie można było zgromadzić " +"linków na %1$s z powodu otrzymania niniejszego kodu odpowiedzi: %2$s. " +"%3$sDowiedz się więcej%4$s." + +#: inc/Engine/Preload/Sitemap.php:196 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not collect links from %1$s " +"because the file is empty. %2$sLearn more%3$s." +msgstr "" +"Wstępne ładowanie mapy witryny napotkało błąd. Nie można było zgromadzić " +"linków na %1$s ponieważ plik jest pusty. %2$sDowiedz się więcej%3$s." + +#: inc/Engine/Preload/Sitemap.php:217 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not collect links from %1$s " +"because of an error during the XML sitemap parsing. %2$sLearn more%3$s." +msgstr "" +"Wstępne ładowanie mapy witryny napotkało błąd. Nie można było zgromadzić " +"linków na %1$s z powodu błędu podczas parsowania mapy XML witryny. " +"%2$sDowiedz się więcej%3$s." + +#: inc/Engine/Preload/SitemapPreloadSubscriber.php:120 +#, php-format +msgid "" +"%1$sSimpleXML PHP extension%2$s is not enabled on your server. Please " +"contact your host to enable it before running sitemap-based cache " +"preloading." +msgstr "" +"%1$sRozszerzenie PHP SimpleXML%2$s nie jest włączone na Twoim serwerze. " +"Prosimy o kontakt z dostawcą hostingu, w celu włączenia go przed " +"uruchomieniem wstępnego załadowania pamięci podręcznej opartej na mapie " +"witryny." + +#: inc/ThirdParty/Hostings/Cloudways.php:82 +#, php-format +msgid "" +"Varnish auto-purge will be automatically enabled once Varnish is enabled on " +"your %s server." +msgstr "" +"Varnish auto-purge zostanie automatycznie włączony po włączeniu Varnish na " +"Twoim serwerze %s." + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:78 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"Please deactivate the following %s option which conflicts with WP Rocket " +"features:" +msgid_plural "" +"Please deactivate the following %s options which conflict with WP Rocket " +"features:" +msgstr[0] "Proszę wyłączyć %s opcję, konfliktującą z funkcjami WP Rocket:" +msgstr[1] "Proszę wyłączyć %s opcje, konfliktujące z funkcjami WP Rocket:" +msgstr[2] "Proszę wyłączyć %s opcji, konfliktujących z funkcjami WP Rocket:" +msgstr[3] "Proszę wyłączyć %s opcji, konfliktujących z funkcjami WP Rocket:" + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:151 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sdisable emoji%3$s conflicts with WP Rockets %2$sdisable emoji%3$s" +msgstr "" +"%1$s %2$swyłączenie emocji%3$s konfliktuje z %2$swyłączeniem emoji%3$s WP " +"Rockets" + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:187 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sGZIP compression%3$s conflicts with WP Rocket %2$sGZIP " +"compression%3$s" +msgstr "" +"%1$s %2$skompresja GZIP%3$s konfliktuje z %2$skompresją GZIP%3$s WP Rocket" + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:223 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sbrowser caching%3$s conflicts with WP Rocket %2$sbrowser " +"caching%3$s" +msgstr "" +"%1$s %2$spamięć podręczna przeglądarki%3$s konfliktuje z %2$spamięcią " +"podręczną przeglądarki%3$s WP Rocket" + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:255 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$spage caching%3$s conflicts with WP Rocket %2$spage caching%3$s" +msgstr "" +"%1$s %2$spamięć podręczna stron%3$s konfliktuje z %2$spamięcią podręczną%3$s" +" WP Rocket" + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:289 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sasset optimization%3$s conflicts with WP Rocket %2$sfile " +"optimization%3$s" +msgstr "" +"%1$s %2$soptymalizacja zasobów%3$s konfliktuje z %2$soptymalizacją " +"plików%3$s WP Rocket" + +#: inc/ThirdParty/Plugins/Smush.php:110 inc/ThirdParty/Plugins/Smush.php:128 +msgid "Smush" +msgstr "Smush" + +#: inc/admin/admin.php:18 inc/common/admin-bar.php:367 +#: inc/deprecated/deprecated.php:1787 +msgid "Support" +msgstr "Wsparcie techniczne" + +#: inc/admin/admin.php:20 +msgid "Docs" +msgstr "Dokumentacja" + +#: inc/admin/admin.php:22 inc/common/admin-bar.php:355 +msgid "FAQ" +msgstr "FAQ" + +#: inc/admin/admin.php:24 inc/common/admin-bar.php:64 +msgid "Settings" +msgstr "Ustawienia" + +#: inc/admin/admin.php:225 inc/admin/admin.php:240 +#: inc/classes/class-wp-rocket-requirements-check.php:203 +#: inc/classes/class-wp-rocket-requirements-check.php:214 +#, php-format +msgid "%s Update Rollback" +msgstr "%s Wycofania aktualizacji" + +#: inc/admin/admin.php:266 +#, php-format +msgid "%1$sReturn to WP Rocket%2$s or %3$sgo to Plugins page%2$s" +msgstr "%1$sWróć do WP Rocket%2$s lub %3$s przejdź do strony Wtyczki%2$s" + +#: inc/admin/admin.php:503 +msgid "Settings import failed: you do not have the permissions to do this." +msgstr "" +"Importowanie ustawień nie powiodło się: nie masz uprawnień, aby to zrobić." + +#: inc/admin/admin.php:507 +msgid "Settings import failed: no file uploaded." +msgstr "Import ustawień nie powiódł się: nie został przesłany żaden plik." + +#: inc/admin/admin.php:511 +msgid "Settings import failed: incorrect filename." +msgstr "Import ustawień nie powiódł się: nieprawidłowa nazwa pliku." + +#: inc/admin/admin.php:522 +msgid "Settings import failed: incorrect filetype." +msgstr "Import ustawień nie powiódł się: nieprawidłowy typ pliku." + +#: inc/admin/admin.php:532 +msgid "Settings import failed: " +msgstr "Import ustawień nie powiódł się: " + +#: inc/admin/admin.php:548 +msgid "Settings import failed: unexpected file content." +msgstr "Import ustawień nie powiódł się: nieoczekiwana zawartość pliku." + +#: inc/admin/admin.php:569 +msgid "Settings imported and saved." +msgstr "Ustawienia zostały zaimportowane i zapisane." + +#: inc/admin/options.php:149 +#, php-format +msgid "%1$s: %2$s." +msgstr "%1$s: %2$s." + +#: inc/admin/options.php:159 +msgid "The following pattern is invalid and has been removed:" +msgid_plural "The following patterns are invalid and have been removed:" +msgstr[0] "Poniższy wzór jest nieprawidłowy i został usunięty:" +msgstr[1] "Poniższe wzory są nieprawidłowe i zostały usunięte:" +msgstr[2] "Poniższe wzory są nieprawidłowe i zostały usunięte:" +msgstr[3] "Poniższe wzory są nieprawidłowe i zostały usunięte:" + +#: inc/admin/ui/meta-boxes.php:14 inc/admin/ui/notices.php:768 +#: inc/common/admin-bar.php:85 inc/common/admin-bar.php:137 +#: views/settings/page-sections/dashboard.php:124 +msgid "Clear cache" +msgstr "Wyczyść pamięć podręczną" + +#: inc/admin/ui/meta-boxes.php:36 +msgid "WP Rocket Options" +msgstr "Opcje WP Rocket" + +#: inc/admin/ui/meta-boxes.php:65 +msgid "Never cache this page" +msgstr "Nigdy nie przechowuj w pamięci podręcznej tej strony" + +#: inc/admin/ui/meta-boxes.php:69 +msgid "Activate these options on this post:" +msgstr "Aktywuj te opcje dla tego wpisu:" + +#: inc/admin/ui/meta-boxes.php:72 +msgid "LazyLoad for images" +msgstr "LazyLoad dla obrazów" + +#: inc/admin/ui/meta-boxes.php:73 +msgid "LazyLoad for iframes/videos" +msgstr "LazyLoad dla iframe/wideo" + +#: inc/admin/ui/meta-boxes.php:74 +msgid "Minify/combine CSS" +msgstr "Minifikuj/łącz CSS" + +#: inc/admin/ui/meta-boxes.php:75 +msgid "Minify/combine JS" +msgstr "Minifikuj/łącz JS" + +#: inc/admin/ui/meta-boxes.php:77 +msgid "Optimize CSS Delivery" +msgstr "Optymalizacja dostarczania CSS" + +#: inc/admin/ui/meta-boxes.php:78 +msgid "Defer JS" +msgstr "Odroczony JS" + +#: inc/admin/ui/meta-boxes.php:85 +#, php-format +msgid "Activate first the %s option." +msgstr "Aktywuj najpierw opcję %s." + +#: inc/admin/ui/meta-boxes.php:101 +#, php-format +msgid "" +"%1$sNote:%2$s None of these options will be applied if this post has been " +"excluded from cache in the global cache settings." +msgstr "" +"%1$sUwaga:%2$s Żadna z tych opcji nie zostanie zastosowana, jeśli post ten " +"został wykluczony z pamięci podręcznej w ustawieniach globalnych pamięci " +"podręcznej." + +#: inc/admin/ui/notices.php:25 inc/admin/ui/notices.php:38 +#, php-format +msgid "" +"%1$s has not been deactivated due to missing writing permissions.
      \n" +"Make %2$s writeable and retry deactivation, or force deactivation now:" +msgstr "" +"%1$s nie został wyłączony z powodu braku uprawnień do zapisu.
      \n" +"Dodaj do %2$s możliwość zapisu i ponów dezaktywację lub wymuś dezaktywację teraz:" + +#: inc/admin/ui/notices.php:91 +#, php-format +msgid "" +"%s: One or more plugins have been enabled or disabled, " +"clear the cache if they affect the front end of your site." +msgstr "" +"%s: Jedna lub więcej wtyczek zostało włączonych lub " +"wyłączonych, wyczyścić pamięć podręczną, jeśli sądzisz, że może mieć to " +"wpływ na frontend witryny." + +#: inc/admin/ui/notices.php:184 +msgid "" +"WP Rocket Cloudflare Add-on provides similar functionalities. They can not " +"be active at the same time." +msgstr "" +"Dodatek WP Rocket Cloudflare zapewnia podobne funkcje. Nie mogą być aktywne " +"w tym samym czasie." + +#: inc/admin/ui/notices.php:208 +#, php-format +msgid "" +"%s: The following plugins are not compatible with this " +"plugin and may cause unexpected results:" +msgstr "" +"%s: Następujące wtyczki nie są kompatybilne z tą wtyczką i " +"mogą powodować nieoczekiwane rezultaty:" + +#: inc/admin/ui/notices.php:214 +msgid "Deactivate" +msgstr "Dezaktywuj" + +#: inc/admin/ui/notices.php:256 +msgid "" +"WP Rocket Footer JS is not an official add-on. It prevents some options in " +"WP Rocket from working correctly. Please deactivate it if you have problems." +msgstr "" +"WP Rocket Footer JS nie jest oficjalnym dodatkiem. Wpływa on negatywnie na " +"prawidłowe działanie niektórych opcji w WP Rocket. Jeśli masz problemy, " +"wyłącz go." + +#: inc/admin/ui/notices.php:296 +#, php-format +msgid "" +"Endurance Cache is currently enabled, which will conflict with WP Rocket " +"Cache. Please set the Endurance Cache cache level to Off (Level 0) on the " +"%1$sSettings > General%2$s page to prevent any issues." +msgstr "" +"Endurance Cache jest obecnie włączony, co spowoduje konflikt z WP Rocket " +"Cache. Proszę ustawić poziom pamięci podręcznej Endurance Cache na Off " +"(Level 0) na stronie %1$sUstawienia > Ogólne%2$s, aby zapobiec potencjalnym " +"problemom." + +#: inc/admin/ui/notices.php:317 +#, php-format +msgid "" +"%1$s: A custom permalink structure is required for the plugin to work " +"properly. %2$sGo to permalinks settings%3$s" +msgstr "" +"%1$s: Aby wtyczka działała poprawnie, wymagana jest niestandardowa struktura" +" bezpośrednich odnośników. %2$sPrzejdź do ustawień bezpośrednich " +"odnośników%3$s" + +#: inc/admin/ui/notices.php:364 +#, php-format +msgid "" +"%s could not modify the .htaccess file due to missing writing permissions." +msgstr "" +"%s nie mógł zmienić pliku .htaccess z powodu braku uprawnień do zapisu." + +#: inc/admin/ui/notices.php:370 inc/admin/ui/notices.php:845 +#, php-format +msgid "Troubleshoot: %1$sHow to make system files writeable%2$s" +msgstr "" +"Rozwiązywanie problemów: %1$sJak sprawić, aby pliki systemowe mogły być " +"zapisywane%2$s" + +#: inc/admin/ui/notices.php:372 inc/admin/ui/notices.php:847 +msgid "" +"https://docs.wp-rocket.me/article/626-how-to-make-system-files-htaccess-wp-" +"config-writeable/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://docs.wp-rocket.me/article/626-how-to-make-system-files-htaccess-wp-" +"config-writeable/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: inc/admin/ui/notices.php:378 +msgid "" +"Don’t worry, WP Rocket’s page caching and settings will still function " +"correctly." +msgstr "" +"Nie martw się, pamięć podręczna stron WP Rocket i ustawienia nadal będą " +"działać poprawnie." + +#: inc/admin/ui/notices.php:378 +msgid "" +"For optimal performance, adding the following lines into your .htaccess is " +"recommended (not required):" +msgstr "" +"W celu zapewnienia optymalnej wydajności zaleca się dodanie następujących " +"linii do pliku .htaccess (nie jest to wymagane):" + +#: inc/admin/ui/notices.php:525 +#, php-format +msgid "" +"%1$s is good to go! %2$sTest your load time%4$s, or visit your " +"%3$ssettings%4$s." +msgstr "" +"%1$s w gotowości! %2$sPrzetestuj swój czas ładowania%4$s lub odwiedź stronę " +"%3$sustawień%4$s." + +#: inc/admin/ui/notices.php:598 +msgid "" +"Would you allow WP Rocket to collect non-sensitive diagnostic data from this" +" website?" +msgstr "" +"Czy zezwoliłbyś WP Rocket na gromadzenie niewrażliwych danych " +"diagnostycznych z tej witryny internetowej?" + +#: inc/admin/ui/notices.php:599 +msgid "This would help us to improve WP Rocket for you in the future." +msgstr "Pomoże nam to w przyszłości ulepszyć WP Rocket dla Ciebie." + +#: inc/admin/ui/notices.php:605 +msgid "What info will we collect?" +msgstr "Jakie informacje będziemy gromadzić?" + +#: inc/admin/ui/notices.php:610 +msgid "" +"Below is a detailed view of all data WP Rocket will collect if granted " +"permission. WP Rocket will never transmit any domain names or email " +"addresses (except for license validation), IP addresses, or third-party API " +"keys." +msgstr "" +"Poniżej znajduje się szczegółowy widok wszystkich danych gromadzonych przez " +"WP Rocket po uzyskaniu zezwolenia. WP Rocket nigdy nie będzie transmitował " +"nazw domen ani adresów e-mail (z wyjątkiem weryfikacji licencji), adresów IP" +" lub kluczy API osób trzecich." + +#: inc/admin/ui/notices.php:619 +msgid "Yes, allow" +msgstr "Tak, zezwalam" + +#: inc/admin/ui/notices.php:622 +msgid "No, thanks" +msgstr "Nie, dziękuję" + +#: inc/admin/ui/notices.php:661 +msgid "Thank you!" +msgstr "Dziękuje!" + +#: inc/admin/ui/notices.php:666 +msgid "WP Rocket now collects these metrics from your website:" +msgstr "WP Rocket zbiera teraz te wskaźniki z Twojej witryny internetowej:" + +#: inc/admin/ui/notices.php:704 +#, php-format +msgid "%s: Cache cleared." +msgstr "%s: Oczyszczono pamięć podręczną." + +#: inc/admin/ui/notices.php:711 +#, php-format +msgid "%s: Post cache cleared." +msgstr "%s: Oczyszczono pamięć podręczną wpisów." + +#: inc/admin/ui/notices.php:718 +#, php-format +msgid "%s: Term cache cleared." +msgstr "%s: Oczyszczono pamięć podręczną wyrażeń taksonomii." + +#: inc/admin/ui/notices.php:725 +#, php-format +msgid "%s: User cache cleared." +msgstr "%s: Oczyszczono pamięć podręczną użytkowników." + +#: inc/admin/ui/notices.php:771 +msgid "Stop Preload" +msgstr "Zatrzymaj preload" + +#: inc/admin/ui/notices.php:789 +msgid "Force deactivation " +msgstr "Wymuś dezaktywację " + +#: inc/admin/ui/notices.php:802 +msgid "The following code should have been written to this file:" +msgstr "Do tego pliku należy wpisać następujący kod:" + +#: inc/admin/ui/notices.php:812 views/settings/page-sections/dashboard.php:46 +msgid "Dismiss this notice." +msgstr "Odrzuć to powiadomienie." + +#: inc/admin/ui/notices.php:833 +#, php-format +msgid "%s cannot configure itself due to missing writing permissions." +msgstr "%s nie może się skonfigurować z powodu braku uprawnień do zapisu." + +#: inc/admin/ui/notices.php:839 +#, php-format +msgid "Affected file/folder: %s" +msgstr "Plik/folder, którego dotyczy problem: %s" + +#: inc/classes/admin/Database/class-optimization.php:47 +msgid "Transients" +msgstr "Tymczasowe wpisy" + +#: inc/classes/admin/Database/class-optimization.php:48 +msgid "Tables" +msgstr "Tabele" + +#: inc/classes/admin/class-logs.php:124 +msgid "The debug file could not be deleted." +msgstr "Plik debugowania nie mógł zostać usunięty." + +#: inc/classes/class-wp-rocket-requirements-check.php:147 +#, php-format +msgid "To function properly, %1$s %2$s requires at least:" +msgstr "Aby poprawnie działać, %1$s %2$s wymaga co najmniej:" + +#: inc/classes/class-wp-rocket-requirements-check.php:151 +#, php-format +msgid "" +"PHP %1$s. To use this WP Rocket version, please ask your web host how to " +"upgrade your server to PHP %1$s or higher." +msgstr "" +"PHP %1$s. Aby użyć tej wersji WP Rocket, zapytaj swojego dostawcy hostingu " +"jak uaktualnić serwer do PHP %1$s lub nowszej." + +#: inc/classes/class-wp-rocket-requirements-check.php:156 +#, php-format +msgid "" +"WordPress %1$s. To use this WP Rocket version, please upgrade WordPress to " +"version %1$s or higher." +msgstr "" +"WordPress %1$s. Aby użyć tej wersji WP Rocket, należy uaktualnić WordPress " +"do wersji %1$s lub nowszej." + +#: inc/classes/class-wp-rocket-requirements-check.php:159 +msgid "" +"If you are not able to upgrade, you can rollback to the previous version by " +"using the button below." +msgstr "" +"Jeśli nie możesz dokonać aktualizacji, możesz wrócić do poprzedniej wersji, " +"korzystając z przycisku poniżej." + +#: inc/classes/class-wp-rocket-requirements-check.php:161 +#: inc/deprecated/deprecated.php:1947 +#, php-format +msgid "Re-install version %s" +msgstr "Ponowna instalacja wersji %s" + +#: inc/classes/dependencies/wp-media/background-processing/wp-background-process.php:439 +#, php-format +msgid "Every %d Minutes" +msgstr "Co %d minut" + +#: inc/classes/logger/class-logger.php:254 +#: inc/classes/logger/class-logger.php:286 +msgid "The log file does not exist." +msgstr "Plik dziennika nie istnieje." + +#: inc/classes/logger/class-logger.php:260 +#: inc/classes/logger/class-logger.php:292 +msgid "The log file could not be read." +msgstr "Plik dziennika nie mógł być odczytany." + +#: inc/classes/logger/class-logger.php:279 +msgid "The logs are not saved into a file." +msgstr "Dzienniki nie są zapisywane w pliku." + +#: inc/classes/subscriber/Cache/class-expired-cache-purge-subscriber.php:128 +msgid "WP Rocket Expired Cache Interval" +msgstr "Okres wygaśnięcia pamięci podręcznej WP Rocket" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:269 +#, php-format +msgid "" +"You are using %1$s to serve WebP images so you do not need to enable this " +"option. If you prefer to have WP Rocket serve WebP for you instead, please " +"disable them from serving in %1$s. %2$sMore info%3$s" +msgid_plural "" +"You are using %1$s to serve WebP images so you do not need to enable this " +"option. If you prefer to have WP Rocket serve WebP for you instead, please " +"disable them from serving in %1$s. %2$sMore info%3$s" +msgstr[0] "" +"Do obsługi obrazów WebP używasz %1$s, więc nie musisz włączać tej opcji. " +"Jeśli wolisz, aby WP Rocket obsługiwał WebP dla Ciebie, wyłącz je z " +"serwowania w %1$s. %2$sWięcej informacji%3$s" +msgstr[1] "" +"Do obsługi obrazów WebP używasz %1$s, więc nie musisz włączać tej opcji. " +"Jeśli wolisz, aby WP Rocket obsługiwał WebP dla Ciebie, wyłącz je z " +"serwowania w %1$s. %2$sWięcej informacji%3$s" +msgstr[2] "" +"Do obsługi obrazów WebP używasz %1$s, więc nie musisz włączać tej opcji. " +"Jeśli wolisz, aby WP Rocket obsługiwał WebP dla Ciebie, wyłącz je z " +"serwowania w %1$s. %2$sWięcej informacji%3$s" +msgstr[3] "" +"Do obsługi obrazów WebP używasz %1$s, więc nie musisz włączać tej opcji. " +"Jeśli wolisz, aby WP Rocket obsługiwał WebP dla Ciebie, wyłącz je z " +"serwowania w %1$s. %2$sWięcej informacji%3$s" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:280 +msgid "WebP cache is disabled by filter." +msgstr "Pamięć podręczna WebP jest wyłączona przez filtr." + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:290 +#: inc/classes/subscriber/Media/class-webp-subscriber.php:316 +#, php-format +msgid "" +"You are using %1$s to convert images to WebP. If you want WP Rocket to serve" +" them for you, activate this option. %2$sMore info%3$s" +msgid_plural "" +"You are using %1$s to convert images to WebP. If you want WP Rocket to serve" +" them for you, activate this option. %2$sMore info%3$s" +msgstr[0] "" +"Używasz %1$s do konwersji obrazów do WebP. Jeśli chcesz, aby WP Rocket " +"obsługiwał WebP, aktywuj tę opcję. %2$sWięcej informacji%3$s" +msgstr[1] "" +"Używasz %1$s do konwersji obrazów do WebP. Jeśli chcesz, aby WP Rocket " +"obsługiwał WebP, aktywuj tę opcję. %2$sWięcej informacji%3$s" +msgstr[2] "" +"Używasz %1$s do konwersji obrazów do WebP. Jeśli chcesz, aby WP Rocket " +"obsługiwał WebP, aktywuj tę opcję. %2$sWięcej informacji%3$s" +msgstr[3] "" +"Używasz %1$s do konwersji obrazów do WebP. Jeśli chcesz, aby WP Rocket " +"obsługiwał WebP, aktywuj tę opcję. %2$sWięcej informacji%3$s" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:302 +#: inc/classes/subscriber/Media/class-webp-subscriber.php:328 +#, php-format +msgid "" +"You are using %1$s to convert images to WebP. WP Rocket will create separate" +" cache files to serve your WebP images. %2$sMore info%3$s" +msgid_plural "" +"You are using %1$s to convert images to WebP. WP Rocket will create separate" +" cache files to serve your WebP images. %2$sMore info%3$s" +msgstr[0] "" +"Używasz %1$s do konwersji obrazów do WebP. WP Rocket utworzy osobne pliki " +"pamięci podręcznej do obsługi obrazów WebP. %2$sWięcej informacji%3$s" +msgstr[1] "" +"Używasz %1$s do konwersji obrazów do WebP. WP Rocket utworzy osobne pliki " +"pamięci podręcznej do obsługi obrazów WebP. %2$sWięcej informacji%3$s" +msgstr[2] "" +"Używasz %1$s do konwersji obrazów do WebP. WP Rocket utworzy osobne pliki " +"pamięci podręcznej do obsługi obrazów WebP. %2$sWięcej informacji%3$s" +msgstr[3] "" +"Używasz %1$s do konwersji obrazów do WebP. WP Rocket utworzy osobne pliki " +"pamięci podręcznej do obsługi obrazów WebP. %2$sWięcej informacji%3$s" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:349 +#, php-format +msgid "" +"You don’t seem to be using a method to create and serve WebP that we are " +"auto-compatible with. If you are not using WebP do not enable this option. " +"%1$sMore info%2$s" +msgstr "" +"Wydaje się, że nie używasz kompatybilnej metody tworzenia i obsługi WebP. " +"Jeśli nie używasz WebP, nie włączaj tej opcji. %1$sWięcej informacji%2$s" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:354 +msgid "We have not detected any compatible WebP plugin!" +msgstr "Nie wykryliśmy żadnych kompatybilnych wtyczek WebP!" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:357 +#, php-format +msgid "" +"If you activate this option WP Rocket will create separate cache files to " +"serve WebP images. Any WebP images you have on your site will be served from" +" these files to compatible browsers. If you don’t already have WebP images " +"on your site consider using %1$sImagify%3$s or another supported plugin. " +"%2$sMore info%3$s" +msgstr "" +"Jeśli aktywujesz tę opcję WP Rocket utworzy osobne pliki pamięci podręcznej " +"do obsługi obrazów WebP. Wszystkie obrazy WebP, które posiadasz na swojej " +"stronie internetowej, zostaną przesłane z tych plików do kompatybilnych " +"przeglądarek. Jeśli nie masz jeszcze obrazów WebP na swojej stronie, rozważ " +"użycie %1$sImagify%3$s lub innej obsługiwanej wtyczki. %2$sWięcej " +"informacji%3$s" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:369 +msgid "WP Rocket will create separate cache files to serve your WebP images." +msgstr "" +"WP Rocket utworzy osobne pliki pamięci podręcznej dla obsługi obrazów WebP." + +#: inc/classes/subscriber/Tools/class-detect-missing-tags-subscriber.php:151 +#, php-format +msgid "" +"Failed to detect the following requirement in your theme: closing %1$s." +msgid_plural "" +"Failed to detect the following requirements in your theme: closing %1$s." +msgstr[0] "" +"Nie udało się wykryć wymaganej zależności w motywie: zamknięcie %1$s." +msgstr[1] "" +"Nie udało się wykryć wymaganych zależności w motywie: zamknięcie %1$s." +msgstr[2] "" +"Nie udało się wykryć wymaganych zależności w motywie: zamknięcie %1$s." +msgstr[3] "" +"Nie udało się wykryć wymaganych zależności w motywie: zamknięcie %1$s." + +#: inc/classes/subscriber/Tools/class-detect-missing-tags-subscriber.php:159 +msgid "" +"https://docs.wp-rocket.me/article/99-pages-not-cached-or-minify-cssjs-not-" +"working/?utm_source=wp_plugin&utm_medium=wp_rocket#theme" +msgstr "" +"https://docs.wp-rocket.me/article/99-pages-not-cached-or-minify-cssjs-not-" +"working/?utm_source=wp_plugin&utm_medium=wp_rocket#theme" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:98 +msgid "monthly" +msgstr "miesięcznie" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:211 +msgid "Database optimization process is running" +msgstr "Trwa proces optymalizacji bazy danych" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:242 +msgid "" +"Database optimization process is complete. Everything was already optimized!" +msgstr "" +"Proces optymalizacji bazy danych został zakończony. Wszystko było już " +"zoptymalizowane!" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:245 +msgid "" +"Database optimization process is complete. List of optimized items below:" +msgstr "" +"Proces optymalizacji bazy danych został zakończony. Lista zoptymalizowanych " +"elementów poniżej:" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:253 +#, php-format +msgid "%1$d %2$s optimized." +msgstr "%1$d %2$s zoptymalizowany." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:116 +#, php-format +msgid "Sucuri cache purge error: %s" +msgstr "Błąd czyszczenia pamięci podręcznej Sucuri: %s" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:121 +msgid "" +"The Sucuri cache is being cleared. Note that it may take up to two minutes " +"for it to be fully flushed." +msgstr "" +"Sucuri cache jest czyszczony. Należy pamiętać, że pełne czyszczenie może " +"zająć do dwóch minut." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:244 +msgid "Sucuri firewall API key was not found." +msgstr "Nie znaleziono klucza API zapory sieciowej Sucuri." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:256 +msgid "Sucuri firewall API key is invalid." +msgstr "Klucz API zapory sieciowej Sucuri jest nieprawidłowy." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:311 +msgid "Error when contacting Sucuri firewall API." +msgstr "Błąd podczas kontaktu z interfejsem API zapory sieciowej Sucuri." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:324 +#, php-format +msgid "Error when contacting Sucuri firewall API. Error message was: %s" +msgstr "" +"Błąd podczas kontaktu z interfejsem API zapory sieciowej Sucuri. Komunikat o" +" błędzie to: %s" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:338 +msgid "Could not get a response from the Sucuri firewall API." +msgstr "Nie udało się uzyskać odpowiedzi z API zapory sieciowej Sucuri." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:352 +msgid "Got an invalid response from the Sucuri firewall API." +msgstr "Otrzymał nieprawidłową odpowiedź od API zapory sieciowej Sucuri." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:365 +msgid "The Sucuri firewall API returned an unknown error." +msgstr "API zapory sieciowej Sucuri zwróciło nieznany błąd." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:368 +#, php-format +msgid "The Sucuri firewall API returned the following error: %s" +msgid_plural "The Sucuri firewall API returned the following errors: %s" +msgstr[0] "API zapory Sucuri zwróciło następujący błąd: %s" +msgstr[1] "API zapory Sucuri zwróciło następujące błędy: %s" +msgstr[2] "API zapory Sucuri zwróciło następujące błędy: %s" +msgstr[3] "API zapory Sucuri zwróciło następujące błędy: %s" + +#: inc/classes/traits/trait-updater-api-tools.php:53 +#: inc/deprecated/3.3.php:761 inc/deprecated/3.3.php:770 +#, php-format +msgid "" +"An unexpected error occurred. Something may be wrong with WP-Rocket.me or " +"this server’s configuration. If you continue to have problems, contact support." +msgstr "" +"Wystąpił nieoczekiwany błąd. Coś może być nie tak z WP-Rocket.me lub " +"konfiguracją Twojego serwera. Jeśli nadal masz problemy, skontaktuj się z wsparciem technicznym." + +#: inc/common/admin-bar.php:125 inc/common/admin-bar.php:293 +#: inc/functions/i18n.php:41 inc/functions/i18n.php:51 +msgid "All languages" +msgstr "Wszystkie języki" + +#: inc/common/admin-bar.php:152 +msgid "Clear this post" +msgstr "Wyczyść ten wpis" + +#: inc/common/admin-bar.php:166 +msgid "Purge this URL" +msgstr "Oczyścić z tego adresu" + +#: inc/common/admin-bar.php:192 +msgid "Purge OPcache" +msgstr "Wyczyść OPcache" + +#: inc/common/admin-bar.php:210 +msgid "Clear Cloudflare cache" +msgstr "Wyczyść pamięć podręczną Cloudflare" + +#: inc/common/admin-bar.php:228 +msgid "Purge Sucuri cache" +msgstr "Oczyścić pamięć podręczną Sucuri" + +#: inc/common/admin-bar.php:251 inc/common/admin-bar.php:305 +#: views/settings/page-sections/dashboard.php:144 +msgid "Preload cache" +msgstr "Wczytaj pamięć cache" + +#: inc/common/admin-bar.php:330 views/settings/fields/rocket-cdn.php:55 +msgid "Purge RocketCDN cache" +msgstr "Oczyść pamięć podręczną RocketCDN" + +#: inc/common/admin-bar.php:343 views/settings/partials/documentation.php:14 +msgid "Documentation" +msgstr "Dokumentacja" + +#: inc/common/purge.php:557 +msgid "OPcache purge failed." +msgstr "Oczyszczanie OPcache nie powiodło się." + +#: inc/common/purge.php:562 +msgid "OPcache successfully purged" +msgstr "OPcache został skutecznie oczyszczony" + +#: inc/deprecated/3.2.php:52 views/settings/page-sections/imagify.php:36 +msgid "Activate Imagify" +msgstr "Aktywuj Imagify" + +#: inc/deprecated/3.2.php:52 +msgid "Install Imagify for Free" +msgstr "Zainstaluj \"Imagify\" za darmo" + +#: inc/deprecated/3.2.php:67 +msgid "" +"Speed up your website and boost your SEO by reducing image file sizes " +"without losing quality with Imagify." +msgstr "" +"Przyspiesz swoją witrynę i popraw SEO poprzez zmniejszenie rozmiaru plików " +"graficznych bez utraty jakości z Imagify." + +#: inc/deprecated/3.2.php:72 +msgid "More details" +msgstr "Więcej szczegółów" + +#: inc/deprecated/3.2.php:228 +#, php-format +msgid "Sitemap preload: %d pages have been cached." +msgstr "" +"Preload oparty o mapę witryny: %d stron(-y) zostało zachowanych do pamięci " +"podręcznej." + +#: inc/deprecated/3.2.php:261 +#, php-format +msgid "" +"Sitemap preload: %d uncached pages have now been preloaded. (refresh to see " +"progress)" +msgstr "" +"Preload oparty o mapę witryny: %d stron(-y), które nie zostały wczytane w " +"pamięci podręcznej, zostały załadowane wstępnie. (Odśwież, aby zobaczyć " +"postęp)" + +#: inc/deprecated/3.4.php:18 +msgid "Choose a domain from the list" +msgstr "Wybierz domenę z listy" + +#: inc/deprecated/3.4.php:31 +msgid "No domain available in your Cloudflare account" +msgstr "Brak domeny dostępnej na koncie Cloudflare" + +#: inc/deprecated/3.5.php:81 inc/deprecated/3.5.php:205 +msgid "" +"Curl is disabled on your server. Please ask your host to enable it. This is " +"required for the Cloudflare Add-on to work correctly." +msgstr "" +"Curl się jest wyłączone na serwerze. Proszę poprosić obsługę hostingu, aby " +"został aktywowany. Jest to wymagane, aby dodatek Cloudflare działał " +"prawidłowo." + +#: inc/deprecated/3.5.php:89 +#, php-format +msgid "" +"Cloudflare email, API key and Zone ID are not set. Read the " +"%1$sdocumentation%2$s for further guidance." +msgstr "" +"E-mail Cloudflare , klucz API i ID strefy nie są ustawione. Przeczytaj " +"%1$sdokumentację%2$s w celu uzyskania dalszych wskazówek." + +#: inc/deprecated/3.5.php:216 +#, php-format +msgid "" +"Cloudflare email and API key are not set. Read the %1$sdocumentation%2$s for" +" further guidance." +msgstr "" +"E-mail i klucz API Cloudflare nie są ustawione. Przeczytaj " +"%1$sdokumentację%2$s w celu uzyskania dalszych wskazówek." + +#: inc/deprecated/3.5.php:281 +msgid "Connection to Cloudflare failed" +msgstr "Nie powiodło się połączenie z Cloudflare" + +#: inc/deprecated/DeprecatedClassTrait.php:54 +#, php-format +msgid "" +"The called class %1$s is deprecated since version %2$s! Use" +" %3$s instead." +msgstr "" +"Tak zwana klasa %1$s jest przestarzała od wersji %2$s! Użyj" +" zamiast tego %3$s." + +#: inc/deprecated/DeprecatedClassTrait.php:65 +#, php-format +msgid "" +"The called class %1$s is deprecated since version %2$s!" +msgstr "" +"Tak zwana klasa %1$s jest przestarzała od wersji %2$s!" + +#: inc/deprecated/deprecated.php:240 +msgid "JS files with Deferred Loading JavaScript" +msgstr "" +"Pliki JS z odroczonym wczytywaniem JavaScript metodą defer" + +#: inc/deprecated/deprecated.php:293 +msgid "Add URL" +msgstr "Dodaj adres URL" + +#: inc/deprecated/deprecated.php:1277 views/settings/fields/import-form.php:22 +msgid "" +"Before you can upload your import file, you will need to fix the following " +"error:" +msgstr "" +"Zanim będzie można przesłać plik importu, trzeba rozwiązać następujący błąd:" + +#: inc/deprecated/deprecated.php:1288 views/settings/fields/import-form.php:35 +#, php-format +msgid "Choose a file from your computer (maximum size: %s)" +msgstr "Wybierz plik z komputera (maksymalny rozmiar: %s)" + +#: inc/deprecated/deprecated.php:1385 +msgid "Your Cloudflare credentials are valid." +msgstr "Twoje uwierzytelnienie CloudFlare jest ważne." + +#: inc/deprecated/deprecated.php:1389 +msgid "Your Cloudflare credentials are invalid!" +msgstr "Twoje uwierzytelnienie CloudFlare jest nieważne!" + +#: inc/deprecated/deprecated.php:1453 +msgid "Save and optimize" +msgstr "Zapisz i optymalizuj" + +#: inc/deprecated/deprecated.php:1453 +msgid "Optimize" +msgstr "Optymalizuj" + +#: inc/deprecated/deprecated.php:1464 inc/deprecated/deprecated.php:1666 +msgctxt "screen-reader-text" +msgid "Note:" +msgstr "Uwaga:" + +#: inc/deprecated/deprecated.php:1470 +msgctxt "screen-reader-text" +msgid "Performance tip:" +msgstr "Wskazówka dotycząca wydajności:" + +#: inc/deprecated/deprecated.php:1476 +msgctxt "screen-reader-text" +msgid "Third-party feature detected:" +msgstr "Wykryto zewnętrzne funkcje:" + +#: inc/deprecated/deprecated.php:1488 inc/deprecated/deprecated.php:1672 +msgctxt "screen-reader-text" +msgid "Warning:" +msgstr "Ostrzeżenie:" + +#: inc/deprecated/deprecated.php:1501 +msgctxt "button text" +msgid "Download settings" +msgstr "Pobierz ustawienia" + +#: inc/deprecated/deprecated.php:1531 +msgid "Replace site's hostname with:" +msgstr "Zastąp nazwę hosta witryny nazwą:" + +#: inc/deprecated/deprecated.php:1550 inc/deprecated/deprecated.php:1587 +#: inc/deprecated/deprecated.php:1615 views/settings/fields/cnames.php:32 +#: views/settings/fields/cnames.php:64 views/settings/fields/cnames.php:94 +msgid "reserved for" +msgstr "zarezerwowane dla" + +#: inc/deprecated/deprecated.php:1552 inc/deprecated/deprecated.php:1589 +#: inc/deprecated/deprecated.php:1617 views/settings/fields/cnames.php:35 +#: views/settings/fields/cnames.php:67 views/settings/fields/cnames.php:97 +msgid "All files" +msgstr "Wszystkie pliki" + +#: inc/deprecated/deprecated.php:1564 inc/deprecated/deprecated.php:1594 +#: inc/deprecated/deprecated.php:1622 views/settings/fields/cnames.php:47 +#: views/settings/fields/cnames.php:79 views/settings/fields/cnames.php:109 +msgid "Images" +msgstr "Obrazy" + +#: inc/deprecated/deprecated.php:1635 views/settings/fields/cnames.php:120 +msgid "Add CNAME" +msgstr "Dodaj CNAME" + +#: inc/deprecated/deprecated.php:1706 views/settings/partials/sidebar.php:16 +msgid "Watch the video" +msgstr "Obejrzyj wideo" + +#: inc/deprecated/deprecated.php:1771 +msgid "Basic" +msgstr "Podstawowe" + +#: inc/deprecated/deprecated.php:1772 +msgid "Static Files" +msgstr "Statyczne pliki" + +#: inc/deprecated/deprecated.php:1774 +msgid "Advanced" +msgstr "Zaawansowane" + +#: inc/deprecated/deprecated.php:1944 +#, php-format +msgid "" +"%1$s %2$s requires at least PHP %3$s to function properly. To use this " +"version, please ask your web host how to upgrade your server to PHP %3$s or " +"higher. If you are not able to upgrade, you can rollback to the previous " +"version by using the button below." +msgstr "" +"%1$s %2$s wymaga co najmniej PHP %3$s do prawidłowego działania. Aby użyć " +"tej wersji, zapytaj swojego dostawcę hostingu, jak uaktualnić serwer do PHP " +"%3$s lub nowszej. Jeśli nie możesz dokonać aktualizacji, możesz wrócić do " +"poprzedniej wersji, korzystając z przycisku poniżej." + +#: inc/functions/admin.php:23 +msgid "" +"There seems to be an issue validating your license. Please see the error " +"message below." +msgid_plural "" +"There seems to be an issue validating your license. You can see the error " +"messages below." +msgstr[0] "" +"Wydaje się, że istnieje problem z walidacją licencji. Proszę zapoznać się z " +"poniższym komunikatem o błędzie." +msgstr[1] "" +"Wydaje się, że istnieje problem z walidacją licencji. Proszę zapoznać się z " +"poniższymi komunikatami o błędzie." +msgstr[2] "" +"Wydaje się, że istnieje problem z walidacją licencji. Proszę zapoznać się z " +"poniższymi komunikatami o błędzie." +msgstr[3] "" +"Wydaje się, że istnieją problemy z walidacją licencji. Proszę zapoznać się z" +" poniższymi komunikatami o błędach." + +#: inc/functions/admin.php:363 +msgid "Server type:" +msgstr "Typ serwera:" + +#: inc/functions/admin.php:372 +msgid "PHP version number:" +msgstr "Numer wersji PHP:" + +#: inc/functions/admin.php:381 +msgid "WordPress version number:" +msgstr "Numer wersji WordPress:" + +#: inc/functions/admin.php:390 +msgid "WordPress multisite:" +msgstr "WordPress Multisite:" + +#: inc/functions/admin.php:399 +msgid "Current theme:" +msgstr "Bieżący motyw:" + +#: inc/functions/admin.php:408 +msgid "Current site language:" +msgstr "Aktualny język strony:" + +#: inc/functions/admin.php:417 +msgid "Active plugins:" +msgstr "Włączone wtyczki:" + +#: inc/functions/admin.php:420 +msgid "Plugin names of all active plugins" +msgstr "Nazwy wszystkich aktywnych wtyczek" + +#: inc/functions/admin.php:426 +msgid "Anonymized WP Rocket settings:" +msgstr "Anonimowe ustawienia WP Rocket:" + +#: inc/functions/admin.php:429 +msgid "Which WP Rocket settings are active" +msgstr "Które ustawienia WP Rocket są aktywne" + +#: inc/functions/options.php:527 inc/functions/options.php:566 +msgid "" +"License validation failed. Our server could not resolve the request from " +"your website." +msgstr "" +"Walidacja licencji nie powiodła się. Nasz serwer nie był w stanie " +"zrealizować żądania z Twojej witryny internetowej." + +#: inc/functions/options.php:527 inc/functions/options.php:566 +#, php-format +msgid "" +"Try clicking %1$sSave Changes%2$s below. If the error persists, follow " +"%3$sthis guide%4$s." +msgstr "" +"Spróbuj kliknąć %1$sZapisz zmiany%2$s poniżej. Jeśli błąd występuje nadal, " +"postępuj zgodnie z %3$szaleceniami przewodnika%4$s." + +#: inc/functions/options.php:543 +msgid "" +"License validation failed. You may be using a nulled version of the plugin. " +"Please do the following:" +msgstr "" +"Walidacja licencji nie powiodła się. Możliwe jest, że używasz wersji nulled " +"wtyczki. Proszę wykonać następujące czynności:" + +#: inc/functions/options.php:543 inc/functions/options.php:585 +#, php-format +msgid "Login to your WP Rocket %1$saccount%2$s" +msgstr "Zaloguj się do swojego %1$skonta WP Rocket%2$s" + +#: inc/functions/options.php:543 inc/functions/options.php:585 +msgid "Download the zip file" +msgstr "Pobierz plik zip" + +#: inc/functions/options.php:543 inc/functions/options.php:585 +msgid "Reinstall" +msgstr "Reinstalacja" + +#: inc/functions/options.php:543 +#, php-format +msgid "" +"If you do not have a WP Rocket account, please %1$spurchase a license%2$s." +msgstr "Jeśli nie posiadasz konta WP Rocket, proszę %1$szakupić licencję%2$s." + +#: inc/functions/options.php:551 +msgid "" +"License validation failed. This user account does not exist in our database." +msgstr "" +"Weryfikacja licencji nie powiodła się. To konto użytkownika nie istnieje w " +"naszej bazie danych." + +#: inc/functions/options.php:551 +msgid "To resolve, please contact support." +msgstr "" +"Aby rozwiązać problem, prosimy o kontakt z działem pomocy technicznej." + +#: inc/functions/options.php:559 +msgid "License validation failed. This user account is blocked." +msgstr "" +"Zatwierdzenie licencji nie powiodło się. To konto użytkownika jest " +"zablokowane." + +#: inc/functions/options.php:559 +#, php-format +msgid "Please see %1$sthis guide%2$s for more info." +msgstr "Zobacz %1$sten poradnik%2$s, aby uzyskać więcej informacji." + +#: inc/functions/options.php:579 +msgid "Your license is not valid." +msgstr "Twoja licencja jest niepoprawna." + +#: inc/functions/options.php:579 +#, php-format +msgid "Make sure you have an active %1$sWP Rocket license%2$s." +msgstr "Upewnij się, że posiadasz aktywną licencję %1$sWP Rocket%2$s." + +#: inc/functions/options.php:581 +msgid "You have added as many sites as your current license allows." +msgstr "Dodałeś tyle witryn, na ile pozwala aktualna licencja." + +#: inc/functions/options.php:581 +#, php-format +msgid "" +"Upgrade your %1$saccount%2$s or %3$stransfer your license%2$s to this " +"domain." +msgstr "" +"Ulepsz swoje %1$skonto%2$s lub %3$stransfer licencję%2$s do tej domeny." + +#: inc/functions/options.php:583 +msgid "This website is not allowed." +msgstr "Ta witryna nie jest dozwolona." + +#: inc/functions/options.php:583 +#, php-format +msgid "Please %1$scontact support%2$s." +msgstr "Prosimy o %1$skontakt z działem pomocy technicznej%2$s." + +#: inc/functions/options.php:585 +msgid "This license key is not recognized." +msgstr "Ten klucz licencyjny nie został rozpoznany." + +#: inc/functions/options.php:585 +#, php-format +msgid "If the issue persists, please %1$scontact support%2$s." +msgstr "" +"Jeśli problem występuje nadal się, prosimy o %1$skontakt z działem pomocy " +"technicznej%2$s." + +#: inc/functions/options.php:591 +#, php-format +msgid "License validation failed: %s" +msgstr "Weryfikacja licencji nie powiodła się: %s" + +#: inc/vendors/classes/class-imagify-partner.php:531 +msgid "Plugin installed successfully." +msgstr "Wtyczka zainstalowana pomyślnie." + +#: inc/vendors/classes/class-imagify-partner.php:532 +msgid "Sorry, you are not allowed to install plugins on this site." +msgstr "" +"Przepraszamy, nie posiadasz uprawnień do instalowania wtyczek w tej " +"witrynie." + +#: inc/vendors/classes/class-imagify-partner.php:533 +msgid "Sorry, you are not allowed to do that." +msgstr "Przepraszamy, nie wolno Ci tego robić." + +#: inc/vendors/classes/class-imagify-partner.php:534 +msgid "Plugin install failed." +msgstr "Instalacja wtyczki nie powiodła się." + +#: inc/vendors/classes/class-imagify-partner.php:535 +msgid "Go back" +msgstr "Wróć" + +#: views/cpcss/activate-cpcss-mobile.php:13 +msgid "Optimize CSS delivery for mobile" +msgstr "Optymalizacja dostarczania CSS dla urządzeń mobilnych" + +#: views/cpcss/activate-cpcss-mobile.php:14 +msgid "" +"Your website currently uses the same Critical Path CSS for both desktop and " +"mobile." +msgstr "" +"Twoja strona korzysta obecnie z tej samej ścieżki krytycznej CSS zarówno dla" +" urządzeń stacjonarnych jak i mobilnych." + +#: views/cpcss/activate-cpcss-mobile.php:15 +msgid "Click the button to enable mobile-specific CPCSS for your site." +msgstr "" +"Kliknij przycisk, aby włączyć CPCSS specyficzny dla urządzeń przenośnych dla" +" Twojej witryny." + +#: views/cpcss/activate-cpcss-mobile.php:20 +#: views/settings/enable-google-fonts.php:19 +#, php-format +msgid "" +"This is a one-time action and this button will be removed afterwards. " +"%1$sMore info%2$s" +msgstr "" +"Jest to jednorazowa czynność, a ten przycisk zostanie później usunięty. %1$s" +" Więcej informacji%2$s" + +#: views/cpcss/activate-cpcss-mobile.php:30 +#, php-format +msgid "" +"Your site is now using mobile-specific critical path CSS. %1$sMore info%2$s" +msgstr "" +"Twoja strona używa teraz specyficznej dla urządzeń mobilnych ścieżki " +"krytycznej CSS. %1$s Więcej informacji%2$s" + +#: views/cpcss/activate-cpcss-mobile.php:39 +msgid "Generate Mobile Specific CPCSS" +msgstr "Generowanie CPCSS specyficznego dla urządzeń przenośnych" + +#: views/cpcss/metabox/container.php:19 +msgid "Critical Path CSS" +msgstr "Ścieżka krytyczna CSS" + +#: views/cpcss/metabox/generate.php:23 +#, php-format +msgid "Generate specific Critical Path CSS for this post. %1$sMore info%2$s" +msgstr "" +"Wygeneruj specyficzną ścieżkę krytyczną CSS dla tego wpisu. %1$s Więcej " +"informacji%2$s" + +#: views/cpcss/metabox/generate.php:33 +#, php-format +msgid "This post uses specific Critical Path CSS. %1$sMore info%2$s" +msgstr "" +"Ten wpis wykorzystuje specyficzną ścieżkę krytyczną CSS. %1$s Więcej " +"informacji%2$s" + +#: views/cpcss/metabox/generate.php:56 +msgid "Revert back to the default CPCSS" +msgstr "Powrót do domyślnego CPCSS" + +#: views/deactivation-intent/form.php:21 +msgid "Return" +msgstr "Powrót" + +#: views/deactivation-intent/form.php:22 +msgid "WP Rocket feedback" +msgstr "Informacja zwrotna WP Rocket" + +#: views/deactivation-intent/form.php:24 +msgid "Close" +msgstr "Zamknij" + +#: views/deactivation-intent/form.php:28 +msgid "May we have a little info about why you are deactivating?" +msgstr "" +"Czy możemy dostać trochę informacji o tym, dlaczego dokonujesz dezaktywacji?" + +#: views/deactivation-intent/form.php:35 +#, php-format +msgid "%1$sIt is a temporary deactivation.%2$s I am just debugging an issue." +msgstr "%1$sJest to tymczasowa dezaktywacja.%2$s Po prostu debuguję problem." + +#: views/deactivation-intent/form.php:44 +#, php-format +msgid "The plugin %1$sbroke my layout%2$s or some functionality." +msgstr "Wtyczka %1$szepsuła mój layout%2$s lub jakąś funkcjonalność." + +#: views/deactivation-intent/form.php:53 +#, php-format +msgid "My PageSpeed or GTMetrix %1$sscore did not improve.%2$s" +msgstr "Moje wyniki PageSpeed lub GTMetrix %1$snie poprawiły się.%2$s" + +#: views/deactivation-intent/form.php:59 +msgid "I did not notice a difference in loading time." +msgstr "Nie zauważyłem różnicy w czasie ładowania." + +#: views/deactivation-intent/form.php:66 +#, php-format +msgid "The plugin is %1$stoo complicated to configure.%2$s" +msgstr "Wtyczka jest %1$szbyt skomplikowana do konfiguracji.%2$s" + +#: views/deactivation-intent/form.php:72 +msgid "My host already has its own caching system." +msgstr "Mój host ma już swój własny system pamięci podręcznej." + +#: views/deactivation-intent/form.php:74 +msgid "What is the name of your web host?" +msgstr "Jaka jest nazwa Twojego hosta?" + +#: views/deactivation-intent/form.php:79 +msgid "Other" +msgstr "Pozostałe" + +#: views/deactivation-intent/form.php:81 +msgid "" +"Let us know why you are deactivating WP Rocket so we can improve the plugin" +msgstr "" +"Daj nam znać dlaczego dezaktywujesz WP Rocket, abyśmy mogli ulepszyć wtyczkę" + +#: views/deactivation-intent/form.php:89 +msgid "The plugin broke my layout or some functionality" +msgstr "Wtyczka popsuła wygląd witryny lub niektóre funkcje" + +#: views/deactivation-intent/form.php:90 +msgid "" +"This type of issue can usually be fixed by deactivating some options in WP " +"Rocket." +msgstr "" +"Ten typ problemu może być zazwyczaj rozwiązany poprzez dezaktywację " +"niektórych opcji w WP Rocket." + +#: views/deactivation-intent/form.php:91 +msgid "" +"Click \"Apply Safe Mode\" to quickly disable LazyLoad, File Optimization, " +"Embeds and CDN options. Then check your site to see if the issue has " +"resolved." +msgstr "" +"Kliknij \"Zastosuj tryb bezpieczny\", aby szybko wyłączyć opcje LazyLoad, " +"Optymalizację plików, Osadzania i CDN. Następnie przejdź do frontendu " +"witryny, aby sprawdzić, czy problem został rozwiązany." + +#: views/deactivation-intent/form.php:93 +msgid "Apply safe mode" +msgstr "Zastosuj tryb bezpieczny" + +#: views/deactivation-intent/form.php:96 +msgid "Safe mode applied." +msgstr "Tryb bezpieczny został zastosowany." + +#: views/deactivation-intent/form.php:97 +msgid "Review your site in a private/logged out browser window." +msgstr "Przejrzyj swoją witrynę w prywatnym/zalogowanym oknie przeglądarki." + +#: views/deactivation-intent/form.php:102 +#, php-format +msgid "" +"Is the issue fixed? Now you can reactivate options one at a time to " +"determine which one caused the problem. %1$sMore info%2$s" +msgstr "" +"Czy problem został rozwiązany? Teraz możesz aktywować opcje po kolei, aby " +"określić, która z nich spowodowała problem. %1$sWięcej informacji%2$s" + +#: views/deactivation-intent/form.php:107 +msgid "My PageSpeed or GT Metrix score did not improve" +msgstr "Mój wynik w PageSpeed lub GT Metrix nie poprawił się" + +#: views/deactivation-intent/form.php:108 +msgid "" +"WP Rocket makes your site faster. The PageSpeed grade or GTMetrix score are " +"not indicators of speed. Neither your real visitors, nor Google will ever " +"see your website’s “grade”. Speed is the only metric that matters for SEO " +"and conversions." +msgstr "" +"WP Rocket przyspiesza Twoją witrynę. Ocena PageSpeed lub GTMetrix nie są " +"wskaźnikami prędkości. Ani Twoi prawdziwi goście, ani Google nigdy nie " +"zobaczą \"oceny\" Twojej strony. Prędkość jest jedyną miarą, która ma " +"znaczenie dla SEO i konwersji." + +#: views/deactivation-intent/form.php:109 +msgid "Yoast, the expert on all things related to SEO for WordPress states:" +msgstr "" +"Yoast, ekspert ds. wszystkich rzeczy związanych z SEO dla WordPress pisze:" + +#: views/deactivation-intent/form.php:110 +msgid "" +"[Google] just looks at how fast your website loads for users, so you don’t " +"have to obsess over that specific score. You have to make sure your website " +"is as fast as you can get it." +msgstr "" +"[Google] po prostu patrzy na to, jak szybko Twoja witryna ładuje się dla " +"użytkowników, więc nie musisz mieć obsesji na punkcie tego konkretnego " +"wyniku. Musisz upewnić się, że Twoja strona jest tak szybka, jak to tylko " +"możliwe." + +#: views/deactivation-intent/form.php:116 +#, php-format +msgid "" +"How to measure the load time of your site: %1$shttps://wp-rocket.me/blog" +"/correctly-measure-websites-page-load-time/%2$s" +msgstr "" +"Jak zmierzyć czas ładowania Twojej witryny: %1$shttps://wp-rocket.me/blog" +"/correctly-measure-websites-page-load-time/%2$s" + +#: views/deactivation-intent/form.php:122 +#, php-format +msgid "" +"Why you should not be chasing a PageSpeed score: %1$shttps://wp-" +"rocket.me/blog/the-truth-about-google-pagespeed-insights/%2$s" +msgstr "" +"Dlaczego nie powinieneś sugerować się nazbyt wynikami PageSpeed: %1$shttps" +"://wp-rocket.me/blog/the-truth-about-google-pagespeed-insights/%2$s" + +#: views/deactivation-intent/form.php:127 +msgid "I did not notice a difference in loading time" +msgstr "Nie zauważyłem różnicy w czasie ładowania" + +#: views/deactivation-intent/form.php:128 +msgid "" +"Make sure you look at your site while logged out to see the fast, cached " +"pages!" +msgstr "" +"Upewnij się, że patrzysz na swoją witrynę podczas gdy jesteś wylogowany, aby" +" zobaczyć buforowane strony!" + +#: views/deactivation-intent/form.php:132 +#, php-format +msgid "" +"The best way to see the improvement WP Rocket provides is to perform speed " +"tests. Follow this guide to correctly measure the load time of your website:" +" %1$shttps://wp-rocket.me/blog/correctly-measure-websites-page-load-" +"time/%2$s" +msgstr "" +"Najlepszym sposobem, aby zobaczyć poprawę, jaką zapewnia WP Rocket, jest " +"przeprowadzenie testów prędkości. Postępuj zgodnie z tą instrukcją, aby " +"prawidłowo zmierzyć czas ładowania Twojej strony internetowej: %1$shttps" +"://wp-rocket.me/blog/correctly-measure-websites-page-load-time/%2$s" + +#: views/deactivation-intent/form.php:137 +msgid "The plugin is too complicated to configure" +msgstr "Wtyczka jest zbyt skomplikowana do skonfigurowania" + +#: views/deactivation-intent/form.php:138 +msgid "We are sorry to hear you are finding it difficult to use WP Rocket." +msgstr "Przykro nam słyszeć, że masz trudności z użyciem WP Rocket." + +#: views/deactivation-intent/form.php:139 +#, php-format +msgid "" +"WP Rocket is the only caching plugin that provides 80% of best practices in " +"speed optimization, by default. That means you do not have to do anything " +"besides activate WP Rocket and your site will already be faster!" +msgstr "" +"WP Rocket jest jedyną wtyczką dla pamięci podręcznej, który domyślnie " +"zapewnia 80% ok. najlepszych praktyk w optymalizacji prędkości. Oznacza to, " +"że nie musisz nic robić poza aktywowaniem WP Rocket i Twoja witryna będzie " +"od razu szybsza!" + +#: views/deactivation-intent/form.php:140 +msgid "" +"The additional options are not required for a fast site, they are for fine-" +"tuning." +msgstr "" +"Dodatkowe opcje nie są wymagane w przypadku szybkiej witryny, służą one do " +"precyzyjnego dostrajania." + +#: views/deactivation-intent/form.php:144 +#, php-format +msgid "" +"To see the benefit WP Rocket is already providing, measure the speed of your" +" site using a tool like Pingdom: %1$shttps://wp-rocket.me/blog/correctly-" +"measure-websites-page-load-time/%2$s" +msgstr "" +"Aby zobaczyć korzyści, jakie WP Rocket zapewnia już w tej chwili, zmierz " +"prędkość swojej witryny za pomocą narzędzia takiego jak Pingdom: %1$shttps" +"://wp-rocket.me/blog/correctly-measure-websites-page-load-time/%2$s" + +#: views/deactivation-intent/form.php:151 +msgid "Send & Deactivate" +msgstr "Wyślij i dezaktywuj" + +#: views/deactivation-intent/form.php:152 +msgid "Cancel" +msgstr "Anuluj" + +#: views/deactivation-intent/form.php:154 +msgid "Skip & Deactivate" +msgstr "Pomiń i dezaktywuj" + +#: views/settings/enable-google-fonts.php:13 +msgid "Enable Google Font Optimization" +msgstr "Włącz optymalizację czcionek Google" + +#: views/settings/enable-google-fonts.php:14 +msgid "" +"Improves font performance and combines multiple font requests to reduce the " +"number of HTTP requests." +msgstr "" +"Poprawia wydajność czcionek i łączy wiele żądań dotyczących czcionek, aby " +"zmniejszyć liczbę żądań HTTP." + +#: views/settings/enable-google-fonts.php:29 +#, php-format +msgid "" +"Google Fonts Optimization is now enabled for your site. %1$sMore info%2$s" +msgstr "" +"Optymalizacja czcionek Google jest teraz włączona dla Twojej witryny. %1$s " +"Więcej informacji%2$s" + +#: views/settings/enable-google-fonts.php:38 +msgid "Optimize Google Fonts" +msgstr "Optymalizacja czcionek Google" + +#: views/settings/fields/cache-lifespan.php:26 +msgid "Clear cache after" +msgstr "Wyczyść pamięć podręczną po" + +#: views/settings/fields/cnames.php:49 views/settings/fields/cnames.php:81 +#: views/settings/fields/cnames.php:111 +msgid "CSS & JavaScript" +msgstr "CSS i JavaScript" + +#: views/settings/fields/cnames.php:50 views/settings/fields/cnames.php:82 +#: views/settings/fields/cnames.php:112 +msgid "JavaScript" +msgstr "JavaScript" + +#: views/settings/fields/cnames.php:51 views/settings/fields/cnames.php:83 +#: views/settings/fields/cnames.php:113 +msgid "CSS" +msgstr "CSS" + +#: views/settings/fields/import-form.php:29 +msgid "Import settings" +msgstr "Ustawienia importu" + +#: views/settings/fields/one-click-addon.php:40 +#: views/settings/fields/rocket-addon.php:31 +#: views/settings/fields/sliding-checkbox.php:25 views/settings/page.php:55 +msgctxt "Active state of checkbox" +msgid "On" +msgstr "On" + +#: views/settings/fields/one-click-addon.php:41 +#: views/settings/fields/rocket-addon.php:32 +#: views/settings/fields/sliding-checkbox.php:26 views/settings/page.php:56 +msgctxt "Inactive state of checkbox" +msgid "Off" +msgstr "Off" + +#: views/settings/fields/one-click-addon.php:42 +#: views/settings/fields/rocket-addon.php:33 +msgid "Add-on status" +msgstr "Status dodatku" + +#: views/settings/fields/rocket-addon.php:56 +msgid "Modify options" +msgstr "Modyfikuj opcje" + +#: views/settings/fields/rocket-cdn.php:29 +#: views/settings/fields/rocket-cdn.php:41 +msgid "CDN CNAME" +msgstr "CNAME CDN" + +#: views/settings/fields/rocket-cdn.php:62 +#, php-format +msgid "Purges RocketCDN cached resources for your website. %s" +msgstr "Czyści zasoby pamięci podręcznej RocketCDN dla Twojej witryny. %s" + +#: views/settings/fields/rocket-cdn.php:63 +#: views/settings/page-sections/cloudflare.php:36 +#: views/settings/page-sections/sucuri.php:37 +msgid "Learn more" +msgstr "Dowiedz się więcej" + +#: views/settings/fields/rocket-cdn.php:72 +msgid "Clear all RocketCDN cache files" +msgstr "Wyczyść wszystkie pliki pamięci podręcznej RocketCDN" + +#: views/settings/page-sections/cloudflare.php:27 +msgid "Cloudflare Cache" +msgstr "Pamięci podręczna CloudFlare" + +#: views/settings/page-sections/cloudflare.php:35 +#: views/settings/page-sections/sucuri.php:36 +#, php-format +msgid "Purges cached resources for your website. %s" +msgstr "" +"Oczyszcza przechowywane w pamięci podręcznej zasoby dla Twojej witryny " +"internetowej. %s" + +#: views/settings/page-sections/cloudflare.php:36 +msgid "https://support.cloudflare.com/hc/en-us/articles/200169246" +msgstr "https://support.cloudflare.com/hc/en-us/articles/200169246" + +#: views/settings/page-sections/cloudflare.php:45 +msgid "Clear all Cloudflare cache files" +msgstr "Wyczyść wszystkie pliki pamięci podręcznej CloudFlare" + +#: views/settings/page-sections/dashboard.php:38 +msgid "Congratulations!" +msgstr "Gratulacje!" + +#: views/settings/page-sections/dashboard.php:40 +msgid "WP Rocket is now activated and already working for you." +msgstr "WP Rocket jest teraz aktywny i działa w tle." + +#: views/settings/page-sections/dashboard.php:42 +msgid "Your website should be loading faster now!" +msgstr "Twoja witryna powinna ładować się teraz szybciej!" + +#: views/settings/page-sections/dashboard.php:44 +#, php-format +msgid "" +"To guarantee fast websites, WP Rocket applies 80% of web performance best " +"practices." +msgstr "" +"Aby zagwarantować szybko działające witryny internetowe, WP Rocket stosuje " +"80% operacji najlepszych praktyk w zakresie poprawy wydajności WWW." + +#: views/settings/page-sections/dashboard.php:44 +msgid "" +"We also enable options that provide immediate benefits to your website." +msgstr "" +"Oferujemy również opcje, które zapewniają natychmiastowe korzyści dla Twojej" +" witryny internetowej." + +#: views/settings/page-sections/dashboard.php:45 +msgid "Continue to the options to further optimize your site!" +msgstr "Przejdź do opcji dalszej optymalizacji swojej witryny!" + +#: views/settings/page-sections/dashboard.php:55 +msgid "My Account" +msgstr "Moje konto" + +#: views/settings/page-sections/dashboard.php:61 +msgid "Refresh info" +msgstr "Odśwież informacje" + +#: views/settings/page-sections/dashboard.php:75 +msgid "Expiration Date" +msgstr "Data wygaśnięcia" + +#: views/settings/page-sections/dashboard.php:84 +msgid "View my account" +msgstr "Zobacz moje konto" + +#: views/settings/page-sections/dashboard.php:111 +msgid "Quick Actions" +msgstr "Szybkie działania" + +#: views/settings/page-sections/dashboard.php:118 +msgid "Remove all cached files" +msgstr "Usuń wszystkie pliki pamięci podręcznej" + +#: views/settings/page-sections/dashboard.php:138 +msgid "Start cache preloading" +msgstr "Rozpocznij ładowanie wstępne pamięci podręcznej" + +#: views/settings/page-sections/dashboard.php:164 +msgid "Purge OPCache content" +msgstr "Oczyszczanie zawartości OPCache" + +#: views/settings/page-sections/dashboard.php:170 +msgid "Purge OPCache" +msgstr "Wyczyść OPcache" + +#: views/settings/page-sections/dashboard.php:181 +#: views/settings/page-sections/dashboard.php:187 +msgid "Regenerate Critical CSS" +msgstr "Regeneruj krytyczny CSS" + +#: views/settings/page-sections/dashboard.php:204 +msgid "Frequently Asked Questions" +msgstr "Najczęściej zadawane pytania" + +#: views/settings/page-sections/dashboard.php:217 +msgid "Still cannot find a solution?" +msgstr "Wciąż nie możesz znaleźć rozwiązania?" + +#: views/settings/page-sections/dashboard.php:218 +msgid "" +"Submit a ticket and get help from our friendly and knowledgeable Rocketeers." +msgstr "" +"Wyślij zgłoszenie i uzyskaj pomoc od naszych przyjaznych i kompetentnych " +"Rocketeersów." + +#: views/settings/page-sections/dashboard.php:226 +msgid "Ask support" +msgstr "Poproś o wsparcie" + +#: views/settings/page-sections/database.php:25 +msgid "Backup your database before you run a cleanup!" +msgstr "" +"Utwórz kopię zapasową swojej bazy danych przed uruchomieniem czyszczenia!" + +#: views/settings/page-sections/database.php:26 +msgid "" +"Once a database optimization has been performed, there is no way to undo it." +msgstr "" +"Po wykonaniu optymalizacji bazy danych nie ma możliwości jej cofnięcia." + +#: views/settings/page-sections/database.php:28 +msgid "Save Changes and Optimize" +msgstr "Zapisz zmiany i optymalizuj" + +#: views/settings/page-sections/imagify.php:21 +#, php-format +msgid "" +"%1$sWP ROCKET%2$s created %3$sIMAGIFY%4$s %1$sfor best-in-class image " +"optimization.%2$s" +msgstr "" +"%1$sWP ROCKET%2$s stworzył %3$sIMAGIFY%4$s %1$s dla najlepszej w swojej " +"klasie optymalizacji obrazu.%2$s" + +#: views/settings/page-sections/imagify.php:24 +msgid "" +"Compress image to make your website faster, all while maintaining image " +"quality." +msgstr "" +"Kompresuj obraz, aby uczynić Twoją witrynę szybszą, przy jednoczesnym " +"zachowaniu jakości obrazu." + +#: views/settings/page-sections/imagify.php:25 +msgid "More on Imagify:" +msgstr "Więcej na temat Imagify:" + +#: views/settings/page-sections/imagify.php:27 +msgid "Imagify Plugin Page" +msgstr "Strona wtyczki Imagify" + +#: views/settings/page-sections/imagify.php:28 +msgid "Imagify Website" +msgstr "Witryna Imagify" + +#: views/settings/page-sections/imagify.php:29 +msgid "Review of Image Compression Plugins" +msgstr "Przegląd wtyczek do kompresji obrazów" + +#: views/settings/page-sections/imagify.php:38 +msgid "Install Imagify" +msgstr "Zainstaluj Imagify za darmo" + +#: views/settings/page-sections/license.php:22 +msgid "WP Rocket was not able to automatically validate your license." +msgstr "WP Rocket nie był w stanie automatycznie zatwierdzić Twojej licencji." + +#: views/settings/page-sections/license.php:29 +#, php-format +msgid "Follow this %1$s, or contact %2$s to get the engine started." +msgstr "" +"Postępuj zgodnie z tą instrukcją %1$s, lub skontaktuj się z %2$s, aby " +"uruchomić to cacko." + +#: views/settings/page-sections/license.php:32 +#, php-format +msgid "%1$s%2$s%3$stutorial%4$s" +msgstr "%1$s%2$s%3$stutorial%4$s" + +#: views/settings/page-sections/license.php:34 +msgid "" +"https://docs.wp-rocket.me/article/100-resolving-problems-with-license-" +"validation/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://docs.wp-rocket.me/article/100-resolving-problems-with-license-" +"validation/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: views/settings/page-sections/license.php:40 +#, php-format +msgid "%1$s%2$s%3$ssupport%4$s" +msgstr "%1$s%2$s%3$swsparcie%4$s" + +#: views/settings/page-sections/sucuri.php:46 +msgid "Clear all Sucuri cache files" +msgstr "Wyczyść wszystkie pliki pamięci podręcznej Sucuri" + +#: views/settings/page-sections/tools.php:20 +#, php-format +msgid "Files size: %1$s. Number of entries: %2$s." +msgstr "Wielkość plików: %1$s. Liczba wpisów: %2$s." + +#: views/settings/page-sections/tools.php:23 +#, php-format +msgid "%1$sDownload the file%2$s." +msgstr "%1$sPobierz plik%2$s." + +#: views/settings/page-sections/tools.php:26 +#, php-format +msgid "%1$sDelete the file%2$s." +msgstr "%1$s Usuń plik%2$s." + +#: views/settings/page-sections/tools.php:37 +msgid "Export settings" +msgstr "Ustawienia eksportu" + +#: views/settings/page-sections/tools.php:38 +msgid "Download a backup file of your settings" +msgstr "Pobierz plik kopii zapasowej ustawień" + +#: views/settings/page-sections/tools.php:46 +msgid "Download settings" +msgstr "Pobierz ustawienia" + +#: views/settings/page-sections/tools.php:60 +msgid "Rollback" +msgstr "Wycofanie" + +#: views/settings/page-sections/tools.php:64 +#, php-format +msgid "Has version %s caused an issue on your website?" +msgstr "Czy wersja %s spowodowała problem na Twojej witrynie?" + +#: views/settings/page-sections/tools.php:69 +#, php-format +msgid "" +"You can rollback to the previous major version here.%sThen send us a support" +" request." +msgstr "" +"Możesz powrócić do poprzedniej głównej wersji tutaj.%sNastępnie wyślij do " +"nas zapytanie o wsparcie." + +#: views/settings/page-sections/tools.php:80 +#, php-format +msgid "Reinstall version %s" +msgstr "Wersja do ponownej instalacji %s" + +#: views/settings/page-sections/tools.php:106 +msgid "Debug mode" +msgstr "Tryb debugowania" + +#: views/settings/page-sections/tools.php:111 +msgid "Create a debug log file." +msgstr "Utwórz plik dziennika debugowania." + +#: views/settings/page-sections/tutorials.php:13 +#: views/settings/partials/getting-started.php:18 +msgid "Getting Started" +msgstr "Pierwsze kroki" + +#: views/settings/page-sections/tutorials.php:15 +msgid "Getting Started with WP Rocket" +msgstr "Rozpoczęcie pracy z pakietem WP Rocket" + +#: views/settings/page-sections/tutorials.php:16 +#: views/settings/partials/getting-started.php:12 +msgid "Finding the Best Settings for Your Site" +msgstr "Określenie najlepszych ustawień dla Twojej strony internetowej" + +#: views/settings/page-sections/tutorials.php:17 +#: views/settings/partials/getting-started.php:13 +msgid "How to Check if WP Rocket is Caching Your Site" +msgstr "Jak sprawdzić, czy WP Rocket buforuje Twoją witrynę" + +#: views/settings/page-sections/tutorials.php:18 +#: views/settings/partials/getting-started.php:14 +msgid "How to Measure the Speed of Your Site" +msgstr "Jak zmierzyć prędkość Twojej strony internetowej" + +#: views/settings/page-sections/tutorials.php:24 +msgid "Troubleshooting Display Issues with File Optimization" +msgstr "Rozwiązywanie problemów z wyświetlaniem przy optymalizacji plików" + +#: views/settings/page-sections/tutorials.php:25 +msgid "How to Find the Right JavaScript to Exclude" +msgstr "Jak znaleźć odpowiedni skrypt JavaScript, który należy wykluczyć" + +#: views/settings/page-sections/tutorials.php:26 +msgid "How External Content Slows Your Site" +msgstr "Jak zawartość zewnętrzna spowalnia Twoją stronę internetową" + +#: views/settings/page-sections/tutorials.php:32 +msgid "How Preloading Works" +msgstr "Jak działa preload" + +#: views/settings/page-sections/tutorials.php:38 +msgid "Set Up the Cloudflare Add-on" +msgstr "Skonfiguruj dodatek \"Cloudflare\"" + +#: views/settings/page.php:16 +msgid "WP Rocket Settings" +msgstr "Ustawienia WP Rocket" + +#: views/settings/page.php:30 +#, php-format +msgid "version %s" +msgstr "wersja %s" + +#: views/settings/page.php:57 +msgid "Show Sidebar" +msgstr "Pokaż boczny panel" + +#: views/settings/page.php:76 +msgid "Thanks for choosing to participate in the WP Rocket beta program!" +msgstr "Dziękujemy za udział w programie WP Rocket beta!" + +#: views/settings/page.php:77 +msgid "" +"A beta version is usually one that has new features and improvements, but we" +" want to test it a little more before full launch." +msgstr "" +"Wersja beta jest zazwyczaj wersją, która posiada nowe funkcje i ulepszenia, " +"ale chcemy przetestować ją trochę więcej przed pełnym odpaleniem." + +#: views/settings/page.php:78 +msgid "" +"We’d love it if you took our beta versions for a ride, but please keep in " +"mind that it might be less stable than our other releases. Don’t worry, you " +"can switch back to a full release version at any time." +msgstr "" +"Bardzo byśmy chcieli, gdybyś zabrał na przejażdżkę nasze wersje beta, ale " +"pamiętaj, że mogą one być mniej stabilne niż nasze inne wydania. Nie martw " +"się, w każdej chwili możesz wrócić do wersji stabilnego wydania." + +#: views/settings/page.php:79 +msgid "" +"Your mission: please send all feedback about our beta versions, including " +"bug reports, to support@wp-rocket.me" +msgstr "" +"Twoja misja: wszystkie opinie na temat naszych wersji beta, w tym raporty o " +"błędach, prosimy przesyłać na adres support@wp-rocket.me" + +#: views/settings/page.php:81 +msgid "If you don’t want to join the beta program, simply close this window." +msgstr "" +"Jeśli nie chcesz dołączyć do programu beta, po prostu zamknij to okno." + +#: views/settings/page.php:83 +msgid "Activate Rocket Tester" +msgstr "Aktywuj Rocket Tester" + +#: views/settings/page.php:94 +msgid "" +"Below is a detailed view of all data WP Rocket will collect if " +"granted permission." +msgstr "" +"Poniżej znajduje się szczegółowy widok wszystkich danych, które WP Rocket " +"zgromadzi jeśli posiada zezwolenie." + +#: views/settings/page.php:97 +msgid "" +"WP Rocket will never transmit any domain names or email addresses (except " +"for license validation), IP addresses, or third-party API keys." +msgstr "" +"WP Rocket nigdy nie będzie transmitował nazw domen ani adresów e-mail (z " +"wyjątkiem weryfikacji licencji), adresów IP lub kluczy API osób trzecich." + +#: views/settings/page.php:99 +msgid "Activate Rocket analytics" +msgstr "Aktywuj analitykę Rocket Analytics" + +#: views/settings/partials/documentation.php:15 +msgid "It is a great starting point to fix some of the most common issues." +msgstr "" +"Jest to świetny punkt wyjścia, aby naprawić niektóre z najbardziej " +"powszechnych problemów." + +#: views/settings/partials/documentation.php:22 +msgid "Read the documentation" +msgstr "Przeczytaj dokumentację" + +#: views/settings/partials/getting-started.php:11 +msgid "What WP Rocket Does For You By Default" +msgstr "Co WP Rocket robi dla Ciebie bez dodatkowej konfiguracji" + +#: views/settings/partials/sidebar.php:12 +msgid "How to correctly measure your website’s loading time" +msgstr "Jak prawidłowo zmierzyć czas ładowania witryny internetowej" + +#: views/settings/partials/sidebar.php:14 +msgid "Check our tutorial and learn how to measure the speed of your site." +msgstr "" +"Sprawdź nasz samouczek i dowiedz się, jak mierzyć prędkość Twojej witryny." + +#: views/settings/partials/sidebar.php:19 +msgid "" +"Learn how to use best practices to correctly measure your site's " +"performance." +msgstr "" +"Dowiedz się, jak stosować najlepsze praktyki, aby prawidłowo mierzyć " +"wydajność Twojej witryny." + +#: views/settings/partials/sidebar.php:20 +msgid "" +"https://wp-rocket.me/blog/correctly-measure-websites-page-load-" +"time/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://wp-rocket.me/blog/correctly-measure-websites-page-load-" +"time/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: views/settings/partials/sidebar.php:20 +msgid "Read our guide" +msgstr "Przeczytaj nasz przewodnik" + +#: views/settings/partials/sidebar.php:23 +msgid "Why Google PageSpeed grade should not matter" +msgstr "Dlaczego ocena Google PageSpeed nie ma znaczenia" + +#: views/settings/partials/sidebar.php:24 +msgid "" +"https://wp-rocket.me/blog/the-truth-about-google-pagespeed-" +"insights/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://wp-rocket.me/blog/the-truth-about-google-pagespeed-" +"insights/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: views/settings/partials/sidebar.php:24 +msgid "Read more" +msgstr "Zobacz więcej" + +#: views/settings/partials/sidebar.php:29 +msgid "You have not activated logged-in user cache." +msgstr "Nie aktywowałeś pamięci podręcznej zalogowanego użytkownika." + +#: views/settings/partials/sidebar.php:30 +msgid "" +"Use a private browser to check your website's speed and visual appearance." +msgstr "" +"Skorzystaj z trybu incognito przeglądarki, aby sprawdzić szybkość i wygląd " +"swojej strony internetowej." + +#: views/settings/rocketcdn/cta-big.php:27 +#, php-format +msgid "Valid until %s only!" +msgstr "Ważny tylko do %s!" + +#: views/settings/rocketcdn/cta-big.php:36 +msgid "Speed up your website thanks to:" +msgstr "Dzięki temu przyspieszysz swoją stronę internetową:" + +#: views/settings/rocketcdn/cta-big.php:42 +#, php-format +msgid "" +"High performance Content Delivery Network (CDN) with %1$sunlimited " +"bandwith%2$s" +msgstr "" +"Wysokowydajna sieć dostarczania treści (CDN) o nielimitowanej przepustowości" +" %1$s z %2$s" + +#: views/settings/rocketcdn/cta-big.php:48 +#, php-format +msgid "" +"Easy configuration: the %1$sbest CDN settings%2$s are automatically applied" +msgstr "" +"Łatwa konfiguracja: najważniejsze %1$sustawienia CDN%2$s są stosowane " +"automatycznie" + +#: views/settings/rocketcdn/cta-big.php:54 +#, php-format +msgid "" +"WP Rocket integration: the CDN option is %1$sautomatically configured%2$s in" +" our plugin" +msgstr "" +"Integracja z WP Rocketem: opcja CDN jest %1$sautomatycznie " +"skonfigurowana%2$s w naszej wtyczce" + +#: views/settings/rocketcdn/cta-big.php:69 +#, php-format +msgid "%s / month" +msgstr "%s / miesiąc" + +#: views/settings/rocketcdn/cta-big.php:74 +msgid "Get Started" +msgstr "Rozpocznij" + +#: views/settings/rocketcdn/cta-big.php:80 +msgid "Learn more about RocketCDN" +msgstr "Dowiedz się więcej o RocketCDN" + +#: views/settings/rocketcdn/cta-big.php:82 +msgid "Reduce this banner" +msgstr "Zredukuj ten baner" + +#: views/settings/rocketcdn/cta-big.php:88 +#, php-format +msgid "" +"* $%1$s/month for 12 months then $%2$s/month. You can cancel your " +"subscription at any time." +msgstr "" +"* $%1$s/miesiąc przez 12 miesięcy, potem $%2$s/miesiąc. Subskrypcję można " +"anulować w dowolnym momencie." + +#: views/settings/rocketcdn/cta-small.php:17 +msgid "" +"Speed up your website with RocketCDN, WP Rocket’s Content Delivery Network." +msgstr "" +"Przyspiesz swoją stronę internetową dzięki RocketCDN, dzięki sieci " +"dostarczania treści WP Rocket." + +#: views/settings/rocketcdn/cta-small.php:20 +#: views/settings/rocketcdn/promote-notice.php:13 +msgid "Learn More" +msgstr "Dowiedz się więcej" + +#: views/settings/rocketcdn/dashboard-status.php:23 +msgid "RocketCDN is unavailable on local domains and staging sites." +msgstr "" +"RocketCDN jest niedostępny na lokalnych domenach i stronach deweloperskich." + +#: views/settings/rocketcdn/dashboard-status.php:32 +msgid "Get RocketCDN" +msgstr "Zdobądź RocketCDN" + +#: views/settings/rocketcdn/promote-notice.php:11 +msgid "New!" +msgstr "Nowość!" + +#: views/settings/rocketcdn/promote-notice.php:12 +msgid "" +"Speed up your website with RocketCDN, WP Rocket’s Content Delivery Network!" +msgstr "" +"Przyspiesz swoją stronę internetową z pomocą RocketCDN, dzięki sieci " +"dostarczania treści WP Rocket!" + +#: views/settings/sections/addons-container.php:24 +#: views/settings/sections/fields-container.php:28 +msgid "Need Help?" +msgstr "Potrzebujesz pomocy?" diff --git a/wp-content/plugins/wp-rocket/languages/rocket-pt_BR.mo b/wp-content/plugins/wp-rocket/languages/rocket-pt_BR.mo new file mode 100644 index 0000000000000000000000000000000000000000..58b094c2f0d69387c324360e4e2edf4c2e90e47e GIT binary patch literal 104258 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, 2019 +# Rafael Funchal , 2019 +# Paulo Andraus , 2019 +# Deblyn Prado, 2019 +# wpmedia , 2020 +# Fabio Fava , 2020 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: WP Rocket 3.4\n" +"Report-Msgid-Bugs-To: http://wp-rocket.me/\n" +"POT-Creation-Date: 2020-10-19 15:56-0400\n" +"PO-Revision-Date: 2019-08-26 15:14+0000\n" +"Last-Translator: Fabio Fava , 2020\n" +"Language-Team: Portuguese (Brazil) (https://www.transifex.com/wp-media/teams/18133/pt_BR/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: pt_BR\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Poedit 1.8.11\n" +"X-Poedit-Basepath: ..\n" +"X-Poedit-KeywordsList: __;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c\n" +"X-Poedit-SearchPath-0: .\n" +"X-Poedit-SearchPathExcluded-0: assets\n" +"X-Poedit-SearchPathExcluded-1: src\n" +"X-Poedit-SearchPathExcluded-2: vendor\n" +"X-Poedit-SearchPathExcluded-3: node_modules\n" +"X-Poedit-SearchPathExcluded-4: tests\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Textdomain-Support: yes\n" + +#: inc/3rd-party/hosting/flywheel.php:18 inc/3rd-party/hosting/godaddy.php:18 +#: inc/3rd-party/hosting/pressidium.php:18 +#: inc/3rd-party/hosting/wp-serveur.php:27 +#: inc/ThirdParty/Hostings/Cloudways.php:90 +#: inc/ThirdParty/Hostings/Dreampress.php:44 +#: inc/ThirdParty/Hostings/O2Switch.php:49 +#: inc/ThirdParty/Hostings/Savvii.php:50 +#: inc/ThirdParty/Hostings/WPEngine.php:47 inc/deprecated/3.6.php:698 +#: inc/deprecated/3.6.php:1005 +#, php-format +msgid "" +"Your site is hosted on %s, we have enabled Varnish auto-purge for " +"compatibility." +msgstr "" +"Seu site está hospedado em %s, habilitamos a auto-limpeza do Varnish para " +"compatibilidade." + +#: inc/3rd-party/hosting/kinsta.php:161 +#, php-format +msgid "" +"Your installation seems to be missing core Kinsta files managing Cache " +"clearing and CDN, which will prevent your Kinsta installation and WP Rocket " +"from working correctly. Please get in touch with Kinsta support through your" +" %1$sMyKinsta%2$s account to resolve this issue." +msgstr "" +"A sua instalação parece não ter arquivos básicos de gerenciamento de limpeza" +" de Cache e CDN do Kinsta, o que irá impedir sua instalação Kinsta e o WP " +"Rocket de funcionarem corretamente. Por favor entre em contato com o suporte" +" Kinsta através da sua conta %1$sMyKinsta%2$s para resolver isso." + +#: inc/3rd-party/plugins/jetpack.php:86 +msgid "Jetpack XML Sitemaps" +msgstr "Sitemaps XML do Jetpack" + +#: inc/3rd-party/plugins/jetpack.php:88 +msgid "Preload the sitemap from the Jetpack plugin" +msgstr "Pré-carregar o sitemap do plugin Jetpack" + +#: inc/3rd-party/plugins/jetpack.php:96 +#: inc/3rd-party/plugins/seo/all-in-one-seo-pack.php:89 +#: inc/3rd-party/plugins/seo/rank-math-seo.php:34 +#: inc/3rd-party/plugins/seo/seopress.php:86 +#: inc/3rd-party/plugins/seo/the-seo-framework.php:144 +#: inc/3rd-party/plugins/seo/yoast-seo.php:87 +#, php-format +msgid "" +"We automatically detected the sitemap generated by the %s plugin. You can " +"check the option to preload it." +msgstr "" +"Detectamos automaticamente o sitemap gerado pelo plugin %s. Você pode marcar" +" a opção para pré-carregá-lo." + +#: inc/3rd-party/plugins/seo/all-in-one-seo-pack.php:87 +msgid "All in One SEO XML sitemap" +msgstr "Sitemap XML do All in One SEO" + +#: inc/3rd-party/plugins/seo/rank-math-seo.php:32 +msgid "Rank Math XML sitemap" +msgstr "Sitemap XML do Rank Math" + +#: inc/3rd-party/plugins/seo/seopress.php:84 +msgid "SEOPress XML sitemap" +msgstr "Sitemap XML do SEOPress" + +#: inc/3rd-party/plugins/seo/the-seo-framework.php:142 +msgid "The SEO Framework XML sitemap" +msgstr "Sitemap XML do The SEO Framework" + +#: inc/3rd-party/plugins/seo/yoast-seo.php:85 +msgid "Yoast SEO XML sitemap" +msgstr "Sitemap XML do Yoast SEO" + +#: inc/Addon/Cloudflare/APIClient.php:309 +msgid "Cloudflare did not provide any reply. Please try again later." +msgstr "O Cloudflare não forneceu nenhuma resposta. Tente mais tarde." + +#: inc/Addon/Cloudflare/APIClient.php:318 inc/deprecated/3.5.php:122 +#: inc/deprecated/3.5.php:179 +msgid "Incorrect Cloudflare email address or API key." +msgstr "Endereço de e-mail ou chave da API incorretos do Cloudflare" + +#: inc/Addon/Cloudflare/APIClient.php:322 +#: inc/Addon/Cloudflare/APIClient.php:335 +#: inc/Addon/Cloudflare/Cloudflare.php:112 +#: inc/Addon/Cloudflare/Cloudflare.php:144 +#: inc/classes/subscriber/Tools/class-detect-missing-tags-subscriber.php:157 +#: inc/deprecated/3.5.php:102 inc/deprecated/3.5.php:126 +#: inc/deprecated/3.5.php:139 inc/deprecated/3.5.php:167 +#: inc/deprecated/3.5.php:183 +#, php-format +msgid "Read the %1$sdocumentation%2$s for further guidance." +msgstr "Leia a %1$sdocumentação%2$s para orientações adicionais." + +#: inc/Addon/Cloudflare/APIClient.php:324 +#: inc/Addon/Cloudflare/APIClient.php:337 +#: inc/Addon/Cloudflare/Cloudflare.php:101 +#: inc/Addon/Cloudflare/Cloudflare.php:114 +#: inc/Addon/Cloudflare/Cloudflare.php:146 inc/deprecated/3.5.php:91 +#: inc/deprecated/3.5.php:104 inc/deprecated/3.5.php:128 +#: inc/deprecated/3.5.php:141 inc/deprecated/3.5.php:169 +#: inc/deprecated/3.5.php:185 inc/deprecated/3.5.php:218 +msgid "" +"https://docs.wp-rocket.me/article/18-using-wp-rocket-with-" +"cloudflare/?utm_source=wp_plugin&utm_medium=wp_rocket#add-on" +msgstr "" +"https://docs.wp-rocket.me/article/18-using-wp-rocket-with-" +"cloudflare/?utm_source=wp_plugin&utm_medium=wp_rocket#add-on" + +#: inc/Addon/Cloudflare/APIClient.php:331 inc/deprecated/3.5.php:135 +msgid "Incorrect Cloudflare Zone ID." +msgstr "ID incorreto da Zona do Cloudflare" + +#: inc/Addon/Cloudflare/Cloudflare.php:99 +#, php-format +msgid "" +"Cloudflare email and/or API key are not set. Read the %1$sdocumentation%2$s " +"for further guidance." +msgstr "" +"O e-mail e/ou chave da API do Cloudflare não estão definidos. Leia a " +"%1$sdocumentação%2$s para maior orientação." + +#: inc/Addon/Cloudflare/Cloudflare.php:108 inc/deprecated/3.5.php:98 +msgid "Missing Cloudflare Zone ID." +msgstr "Falta o ID da Zona do Cloudflare" + +#: inc/Addon/Cloudflare/Cloudflare.php:140 inc/deprecated/3.5.php:163 +msgid "It looks like your domain is not set up on Cloudflare." +msgstr "Parece que o seu domínio não está configurado no Cloudflare" + +#: inc/Addon/Cloudflare/Subscriber.php:215 inc/deprecated/3.5.php:597 +#, php-format +msgid "WP Rocket: %s" +msgstr "WP Rocket: %s" + +#: inc/Addon/Cloudflare/Subscriber.php:220 inc/deprecated/3.5.php:602 +msgid "WP Rocket: Cloudflare cache successfully purged." +msgstr "" +"WP Rocket: O cache do Cloudflare foi limpo com sucesso." + +#: inc/Addon/Cloudflare/Subscriber.php:364 +#: inc/Addon/Cloudflare/Subscriber.php:370 +#: inc/Addon/Cloudflare/Subscriber.php:390 +#: inc/Addon/Cloudflare/Subscriber.php:401 +#: inc/Addon/Cloudflare/Subscriber.php:420 +#: inc/Addon/Cloudflare/Subscriber.php:426 +#: inc/Addon/Cloudflare/Subscriber.php:445 +#: inc/Addon/Cloudflare/Subscriber.php:451 +#: inc/Addon/Cloudflare/Subscriber.php:470 +#: inc/Addon/Cloudflare/Subscriber.php:476 +#: inc/Addon/Cloudflare/Subscriber.php:558 inc/admin/options.php:166 +#: inc/classes/subscriber/Tools/class-detect-missing-tags-subscriber.php:148 +msgid "WP Rocket: " +msgstr "WP Rocket: " + +#: inc/Addon/Cloudflare/Subscriber.php:364 +#, php-format +msgid "Cloudflare development mode error: %s" +msgstr "Erro no modo de desenvolvimento do Cloudflare: %s" + +#: inc/Addon/Cloudflare/Subscriber.php:370 +#, php-format +msgid "Cloudflare development mode %s" +msgstr "Modo de desenvolvimento do Cloudflare %s" + +#: inc/Addon/Cloudflare/Subscriber.php:390 +#, php-format +msgid "Cloudflare cache level error: %s" +msgstr "Erro no nível de Cache do Cloudflare: %s" + +#: inc/Addon/Cloudflare/Subscriber.php:395 +msgctxt "Cloudflare caching level" +msgid "Standard" +msgstr "Padrão" + +#: inc/Addon/Cloudflare/Subscriber.php:401 +#, php-format +msgid "Cloudflare cache level set to %s" +msgstr "Nível de cache do Cloudflare definido para %s" + +#: inc/Addon/Cloudflare/Subscriber.php:420 +#, php-format +msgid "Cloudflare minification error: %s" +msgstr "Erro de minificação do Cloudflare: %s" + +#: inc/Addon/Cloudflare/Subscriber.php:426 +#, php-format +msgid "Cloudflare minification %s" +msgstr "Minificação do Cloudflare %s" + +#: inc/Addon/Cloudflare/Subscriber.php:445 +#, php-format +msgid "Cloudflare rocket loader error: %s" +msgstr "Erro no rocket loader do Cloudflare: %s" + +#: inc/Addon/Cloudflare/Subscriber.php:451 +#, php-format +msgid "Cloudflare rocket loader %s" +msgstr "Rocket loader do Cloudflare %s" + +#: inc/Addon/Cloudflare/Subscriber.php:470 +#, php-format +msgid "Cloudflare browser cache error: %s" +msgstr "Erro do cache de navegador no Cloudflare: %s" + +#: inc/Addon/Cloudflare/Subscriber.php:476 +#, php-format +msgid "Cloudflare browser cache set to %s seconds" +msgstr "Cache de navegador do Cloudflare definido para %s segundos" + +#: inc/Addon/FacebookTracking/Subscriber.php:87 +#: inc/Addon/GoogleTracking/Subscriber.php:132 +#: inc/Engine/HealthCheck/CacheDirSizeCheck.php:88 +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:92 +msgid "weekly" +msgstr "semanalmente" + +#: inc/Engine/Admin/Settings/Page.php:190 +msgid "Save Changes" +msgstr "Salvar Alterações" + +#: inc/Engine/Admin/Settings/Page.php:190 +msgid "Validate License" +msgstr "Validar a licença" + +#: inc/Engine/Admin/Settings/Page.php:246 +#: inc/Engine/Admin/Settings/Page.php:247 +msgid "Unavailable" +msgstr "Indisponível" + +#: inc/Engine/Admin/Settings/Page.php:341 inc/deprecated/deprecated.php:1789 +#: views/settings/page-sections/dashboard.php:80 +msgid "License" +msgstr "Licença" + +#: inc/Engine/Admin/Settings/Page.php:358 +msgid "API key" +msgstr "Chave da API" + +#: inc/Engine/Admin/Settings/Page.php:373 +msgid "Email address" +msgstr "Endereço de e-mail" + +#: inc/Engine/Admin/Settings/Page.php:399 +msgid "Dashboard" +msgstr "Painel" + +#: inc/Engine/Admin/Settings/Page.php:400 +msgid "Get help, account info" +msgstr "Obter ajuda, informações da conta" + +#: inc/Engine/Admin/Settings/Page.php:409 +msgid "My Status" +msgstr "Meu Status" + +#: inc/Engine/Admin/Settings/Page.php:419 views/settings/page.php:72 +msgid "Rocket Tester" +msgstr "Testador do Rocket" + +#: inc/Engine/Admin/Settings/Page.php:420 +msgid "I am part of the WP Rocket Beta Testing Program." +msgstr "Participo do Programa de Testadores Beta do WP Rocket." + +#: inc/Engine/Admin/Settings/Page.php:428 views/settings/page.php:90 +msgid "Rocket Analytics" +msgstr "Analytics do Rocket" + +#: inc/Engine/Admin/Settings/Page.php:430 +#, php-format +msgid "" +"I agree to share anonymous data with the development team to help improve WP" +" Rocket. %1$sWhat info will we collect?%2$s" +msgstr "" +"Concordo em compartilhar informações anônimas com a equipe de " +"desenvolvimento para ajudar a melhorar o WP Rocket. %1$sQuais informações " +"iremos coletar?%2$s" + +#: inc/Engine/Admin/Settings/Page.php:454 inc/Engine/Cache/WPCache.php:347 +msgid "Cache" +msgstr "Cache" + +#: inc/Engine/Admin/Settings/Page.php:455 +msgid "Basic cache options" +msgstr "Opções básica de cache" + +#: inc/Engine/Admin/Settings/Page.php:462 +msgid "Mobile Cache" +msgstr "Cache Móvel" + +#: inc/Engine/Admin/Settings/Page.php:464 +msgid "Speed up your site for mobile visitors." +msgstr "Acelera seu site em dispositivos móveis." + +#: inc/Engine/Admin/Settings/Page.php:469 +msgid "" +"We detected you use a plugin that requires a separate cache for mobile, and " +"automatically enabled this option for compatibility." +msgstr "" +"Detectamos que você usa um plugin que requer um cache separado para " +"dispositivos móveis, e habilitamos esta opção para compatibilidade." + +#: inc/Engine/Admin/Settings/Page.php:473 +msgid "User Cache" +msgstr "Cache de Usuário" + +#: inc/Engine/Admin/Settings/Page.php:476 +#, php-format +msgid "" +"%1$sUser cache%2$s is great when you have user-specific or restricted " +"content on your website." +msgstr "" +"O %1$scache de usuário%2$s é excelente quando você tem conteúdo específico " +"do usuário ou restrito no seu site." + +#: inc/Engine/Admin/Settings/Page.php:484 +msgid "Cache Lifespan" +msgstr "Vida útil do cache" + +#: inc/Engine/Admin/Settings/Page.php:487 +#, php-format +msgid "" +"Cache files older than the specified lifespan will be deleted.
      Enable " +"%1$spreloading%2$s for the cache to be rebuilt automatically after lifespan " +"expiration." +msgstr "" +"Arquivos de cache mais antigos do que a vida útil especificada serão " +"excluídos.
      Ative o %1$spré-carregamento%2$s para o cache ser " +"reconstruído automaticamente após a expiração da sua vida útil." + +#: inc/Engine/Admin/Settings/Page.php:501 +msgid "Enable caching for logged-in WordPress users" +msgstr "Ativar armazenamento em cache para usuários conectados no WordPress" + +#: inc/Engine/Admin/Settings/Page.php:509 +msgid "Enable caching for mobile devices" +msgstr "Ativar cache para dispositivos móveis" + +#: inc/Engine/Admin/Settings/Page.php:524 +msgid "Separate cache files for mobile devices" +msgstr "Arquivos de cache separados para dispositivos móveis" + +#: inc/Engine/Admin/Settings/Page.php:526 +#, php-format +msgid "" +"Most modern themes are responsive and should work without a separate cache. " +"Enable this only if you have a dedicated mobile theme or plugin. %1$sMore " +"info%2$s" +msgstr "" +"A maioria dos temas modernos é responsiva e deveria funcionar sem um cache " +"separado. Habilite isso apenas se tem um tema ou plugin dedicado a " +"dispositivos móveis. %1$sMais informações%2$s" + +#: inc/Engine/Admin/Settings/Page.php:542 +msgid "" +"Specify time after which the global cache is cleared
      (0 = unlimited )" +msgstr "" +"Especifique o tempo após o qual o Cache Global é limpo
      (0=ilimitado)" + +#: inc/Engine/Admin/Settings/Page.php:544 +#, php-format +msgid "" +"Reduce lifespan to 10 hours or less if you notice issues that seem to appear" +" periodically. %1$sWhy?%2$s" +msgstr "" +"Reduza a vida útil para 10 horas ou menos se notar erros que parecem surgir " +"periodicamente. %1$sPor que?%2$s" + +#: inc/Engine/Admin/Settings/Page.php:550 +#: inc/Engine/License/views/promo-banner.php:31 +msgid "Minutes" +msgstr "Minutos" + +#: inc/Engine/Admin/Settings/Page.php:551 +#: inc/Engine/License/views/promo-banner.php:30 +msgid "Hours" +msgstr "Horas" + +#: inc/Engine/Admin/Settings/Page.php:552 +#: inc/Engine/License/views/promo-banner.php:29 +msgid "Days" +msgstr "Dias" + +#: inc/Engine/Admin/Settings/Page.php:577 +#: views/settings/page-sections/tutorials.php:22 +msgid "File Optimization" +msgstr "Otimizar Arquivos" + +#: inc/Engine/Admin/Settings/Page.php:578 +msgid "Optimize CSS & JS" +msgstr "Otimizar CSS e JS" + +#: inc/Engine/Admin/Settings/Page.php:585 +msgid "CSS Files" +msgstr "Arquivos CSS" + +#: inc/Engine/Admin/Settings/Page.php:592 +#: inc/Engine/Admin/Settings/Page.php:602 +#, php-format +msgid "" +"%1$s Minification is currently activated in Autoptimize. If" +" you want to use %2$s’s minification, disable those options in Autoptimize." +msgstr "" +"No momento a Minificação %1$s está ativada no Autoptimize. " +"Se deseja usar a minificação do %2$s, desabilite esta opção no Autoptimize." + +#: inc/Engine/Admin/Settings/Page.php:595 +msgid "JavaScript Files" +msgstr "Arquivos JavaScript" + +#: inc/Engine/Admin/Settings/Page.php:611 +msgid "Minify CSS files" +msgstr "Minificar os arquivos CSS" + +#: inc/Engine/Admin/Settings/Page.php:612 +msgid "Minify CSS removes whitespace and comments to reduce the file size." +msgstr "" +"Minificar o CSS remove espaços em branco e comentários para reduzir o " +"tamanho do arquivo." + +#: inc/Engine/Admin/Settings/Page.php:625 +#: inc/Engine/Admin/Settings/Page.php:647 +#: inc/Engine/Admin/Settings/Page.php:729 +#: inc/Engine/Admin/Settings/Page.php:751 +msgid "This could break things!" +msgstr "Isto poderia quebrar coisas!" + +#: inc/Engine/Admin/Settings/Page.php:626 +#: inc/Engine/Admin/Settings/Page.php:648 +#: inc/Engine/Admin/Settings/Page.php:730 +#: inc/Engine/Admin/Settings/Page.php:752 +msgid "" +"If you notice any errors on your website after having activated this " +"setting, just deactivate it again, and your site will be back to normal." +msgstr "" +"Se notar quaisquer erros no seu site após ter ativado esta configuração, " +"basta desativá-la novamente e o seu site voltará ao normal." + +#: inc/Engine/Admin/Settings/Page.php:627 +msgid "Activate minify CSS" +msgstr "Ativar minificar o CSS" + +#: inc/Engine/Admin/Settings/Page.php:632 +msgid "Combine CSS files (Enable Minify CSS files to select)" +msgstr "" +"Combinar os arquivos CSS (Ative Minificar os arquivos CSS pra " +"selecionar)" + +#: inc/Engine/Admin/Settings/Page.php:634 +#, php-format +msgid "" +"Combine CSS merges all your files into 1, reducing HTTP requests. Not " +"recommended if your site uses HTTP/2. %1$sMore info%2$s" +msgstr "" +"Combinar o CSS mescla todos os seus arquivos em 1, reduzindo as requisições " +"HTTP. Não recomendamos se o seu site usa HTTP/2. %1$sMais informações%2$s" + +#: inc/Engine/Admin/Settings/Page.php:649 +msgid "Activate combine CSS" +msgstr "Ativar Combinar o CSS" + +#: inc/Engine/Admin/Settings/Page.php:654 inc/admin/options.php:125 +msgid "Excluded CSS Files" +msgstr "Arquivos CSS Excluídos" + +#: inc/Engine/Admin/Settings/Page.php:655 +msgid "" +"Specify URLs of CSS files to be excluded from minification and concatenation" +" (one per line)." +msgstr "" +"Especifique URLs de arquivos CSS a serem excluídos da minificação e " +"concatenação (um por linha)." + +#: inc/Engine/Admin/Settings/Page.php:656 +msgid "" +"Internal: The domain part of the URL will be stripped " +"automatically. Use (.*).css wildcards to exclude all CSS files located at a " +"specific path." +msgstr "" +"Interno: A parte do domínio do URL será automaticamente " +"limpa. Use coringas (.*).css para excluir todos os arquivos CSS localizados " +"em um caminho específico." + +#: inc/Engine/Admin/Settings/Page.php:658 +#, php-format +msgid "" +"3rd Party: Use either the full URL path or only the domain " +"name, to exclude external CSS. %1$sMore info%2$s" +msgstr "" +"Terceiros: Use o caminho completo do URL ou apenas o nome " +"do domínio, para excluir CSS externo. %1$sMais informações%2$s" + +#: inc/Engine/Admin/Settings/Page.php:671 +msgid "Optimize CSS delivery" +msgstr "Otimizar a entrega do CSS" + +#: inc/Engine/Admin/Settings/Page.php:678 +#, php-format +msgctxt "WP Critical CSS compatibility" +msgid "" +"Optimize CSS Delivery is currently handled by the %1$s plugin. If you want " +"to use WP Rocket’s Optimize CSS Delivery option, disable the %1$s plugin." +msgstr "" +"A Otimização da Entrega do CSS no momento é feita pelo plugin %1$s. Se " +"deseja usar a opção de Otimização da Entrega do CSS do WP Rocket, desabilite" +" o plugin %1$s" + +#: inc/Engine/Admin/Settings/Page.php:680 +#, php-format +msgid "" +"Optimize CSS delivery eliminates render-blocking CSS on your website for " +"faster perceived load time. %1$sMore info%2$s" +msgstr "" +"Otimizar a entrega de CSS elimina CSS bloqueando a renderização no seu site " +"para um tempo percebido de carregamento mais rápido. %1$sMais " +"informações%2$s" + +#: inc/Engine/Admin/Settings/Page.php:691 +msgid "Fallback critical CSS" +msgstr "CSS crítico opcional" + +#: inc/Engine/Admin/Settings/Page.php:696 +#, php-format +msgid "" +"Provides a fallback if auto-generated critical path CSS is incomplete. " +"%1$sMore info%2$s" +msgstr "" +"Fornece uma opção se o caminho de CSS crítico gerado automaticamente estiver" +" incompleto. %1$sMais informações%2$s" + +#: inc/Engine/Admin/Settings/Page.php:705 +msgid "Remove jQuery Migrate" +msgstr "Remover jQuery Migrate" + +#: inc/Engine/Admin/Settings/Page.php:707 +#, php-format +msgid "" +"Remove jQuery Migrate eliminates a JS file and can improve load time. " +"%1$sMore info%2$s" +msgstr "" +"Remover JQuery Migrate elimina um arquivo JS e pode melhorar o tempo de " +"carregamento. %1$sMais informações%2$s" + +#: inc/Engine/Admin/Settings/Page.php:715 +msgid "Minify JavaScript files" +msgstr "Minificar os arquivos JavaScript" + +#: inc/Engine/Admin/Settings/Page.php:716 +msgid "" +"Minify JavaScript removes whitespace and comments to reduce the file size." +msgstr "" +"Minificar o JavaScript remove os espaços em branco e comentários para " +"reduzir o tamanho do arquivo." + +#: inc/Engine/Admin/Settings/Page.php:731 +msgid "Activate minify JavaScript" +msgstr "Ativar minificar o JavaScript" + +#: inc/Engine/Admin/Settings/Page.php:736 +msgid "" +"Combine JavaScript files (Enable Minify JavaScript files to select)" +msgstr "" +"Combinar os arquivos JavaScript (Ative Minificar arquivos JavaScript " +"para selecionar)" + +#: inc/Engine/Admin/Settings/Page.php:738 +#, php-format +msgid "" +"Combine JavaScript files combines your site’s internal, 3rd party and inline" +" JS reducing HTTP requests. Not recommended if your site uses HTTP/2. " +"%1$sMore info%2$s" +msgstr "" +"Combinar arquivos JavaScript combina o JS interno, inline e de terceiros " +"reduzindo as chamadas HTTP. Não é recomendado se o seu site usa HTTP/2. " +"%1$sMais informações%2$s" + +#: inc/Engine/Admin/Settings/Page.php:753 +msgid "Activate combine JavaScript" +msgstr "Ativar combinar o JavaScript" + +#: inc/Engine/Admin/Settings/Page.php:758 inc/admin/options.php:126 +msgid "Excluded Inline JavaScript" +msgstr "JavaScript Inline Excluído" + +#: inc/Engine/Admin/Settings/Page.php:760 +#, php-format +msgid "" +"Specify patterns of inline JavaScript to be excluded from concatenation (one" +" per line). %1$sMore info%2$s" +msgstr "" +"Especifique padrões de JavaScript inline a serem excluídos da concatenação " +"(um por linha). %1$sMais informações%2$s" + +#: inc/Engine/Admin/Settings/Page.php:776 inc/admin/options.php:127 +msgid "Excluded JavaScript Files" +msgstr "Arquivos JavaScript Excluídos" + +#: inc/Engine/Admin/Settings/Page.php:777 +msgid "" +"Specify URLs of JavaScript files to be excluded from minification and " +"concatenation (one per line)." +msgstr "" +"Especifique URLs de arquivos JavaScript a serem excluídos da minificação e " +"concatenação (um por linha)." + +#: inc/Engine/Admin/Settings/Page.php:778 +msgid "" +"Internal: The domain part of the URL will be stripped " +"automatically. Use (.*).js wildcards to exclude all JS files located at a " +"specific path." +msgstr "" +"Interno: A parte do domínio do URL será removida " +"automaticamente. Use wildcards (.*).js para excluir todos os arquivos JS " +"localizados em um caminho específico." + +#: inc/Engine/Admin/Settings/Page.php:780 +#, php-format +msgid "" +"3rd Party: Use either the full URL path or only the domain " +"name, to exclude external JS. %1$sMore info%2$s" +msgstr "" +"Terceiros Use o caminho completo do URL ou apenas o " +"domínio, para excluir JS externo. %1$sMais Informações%2$s" + +#: inc/Engine/Admin/Settings/Page.php:796 +msgid "Load JavaScript deferred" +msgstr "Adiar o carregamento do JavaScript" + +#: inc/Engine/Admin/Settings/Page.php:798 +#, php-format +msgid "" +"Load JavaScript deferred eliminates render-blocking JS on your site and can " +"improve load time. %1$sMore info%2$s" +msgstr "" +"Adiar o carregamento do JavaScript elimina JS bloqueando a renderização no " +"seu site e pode melhorar o tempo de carregamento. %1$sMais informações%2$s" + +#: inc/Engine/Admin/Settings/Page.php:809 +msgid "Safe Mode for jQuery (recommended)" +msgstr "Modo Seguro para jQuery (recomendado)" + +#: inc/Engine/Admin/Settings/Page.php:810 +msgid "" +"Safe mode for jQuery for deferred JS ensures support for inline jQuery " +"references from themes and plugins by loading jQuery at the top of the " +"document as a render-blocking script.
      Deactivating may result in " +"broken functionality, test thoroughly!" +msgstr "" +"O Modo Seguro para jQuery para JS adiado garante o suporte para as " +"referências jQuery inline de temas e plugins, carregando o jQuery no topo do" +" documento como um script que bloqueia a renderização.
      Desativar pode" +" quebrar a funcionalidade, teste extensivamente!" + +#: inc/Engine/Admin/Settings/Page.php:823 inc/admin/ui/meta-boxes.php:79 +msgid "Delay JavaScript execution" +msgstr "Atrasa a execução do JavaScript" + +#: inc/Engine/Admin/Settings/Page.php:825 +#, php-format +msgid "" +"Improves performance by delaying the loading of JavaScript files until user " +"interaction (e.g. scroll, click). %1$sMore info%2$s" +msgstr "" +"Melhora o desempenho atrasando o carregamento dos arquivos JavaScript até a " +"interação com o usuário (como rolar ou clicar) %1$sMais informações%2$s" + +#: inc/Engine/Admin/Settings/Page.php:833 +msgid "Scripts to delay" +msgstr "Scripts a atrasar" + +#: inc/Engine/Admin/Settings/Page.php:834 +msgid "" +"Specify keywords that can identify inline or JavaScript files to be delayed " +"(one per line)." +msgstr "" +"Especifique palavras-chave que podem identificar arquivos JavaScript inline " +"a serem atrasados (um por linha)." + +#: inc/Engine/Admin/Settings/Page.php:835 +msgid "" +"A curated list of scripts that are safe to delay is provided. They may not " +"all apply to your website and it is safe to leave the list as-is unless you " +"face issues." +msgstr "" +"É fornecida uma lista curada de scripts que são seguros para atrasar. Eles " +"podem não se aplicar ao seu site e é seguro deixar a lista como está a menos" +" que encontre problemas." + +#: inc/Engine/Admin/Settings/Page.php:870 +msgid "Media" +msgstr "Mídia" + +#: inc/Engine/Admin/Settings/Page.php:871 +msgid "LazyLoad, emojis, embeds, WebP" +msgstr "LazyLoad, emojis, incorporações, WebP" + +#: inc/Engine/Admin/Settings/Page.php:880 +msgid "Avada" +msgstr "Avada" + +#: inc/Engine/Admin/Settings/Page.php:884 +msgid "Autoptimize" +msgstr "Autoptimize" + +#: inc/Engine/Admin/Settings/Page.php:929 +msgid "LazyLoad" +msgstr "LazyLoad" + +#: inc/Engine/Admin/Settings/Page.php:932 +#, php-format +msgid "" +"It can improve actual and perceived loading time as images, iframes, and " +"videos will be loaded only as they enter (or about to enter) the viewport " +"and reduces the number of HTTP requests. %1$sMore Info%2$s" +msgstr "" +"Pode melhorar o tempo real e percebido de carregamento pois imagens, iframes" +" e vídeos serão carregados apenas quando entrarem (ou estiverem para entrar)" +" na área visualizada na tela, e reduz o número de requisições HTTP. %1$sMais" +" Informações%2$s" + +#: inc/Engine/Admin/Settings/Page.php:939 +#, php-format +msgid "" +"LazyLoad is currently activated in %2$s. If you want to use WP Rocket’s " +"LazyLoad, disable this option in %2$s." +msgstr "" +"No momento o LazyLoad do %2$s está ativo. Se deseja usar o LazyLoad do WP " +"Rocket, desative esta opção no %2$s." + +#: inc/Engine/Admin/Settings/Page.php:942 +msgid "Emoji 👻" +msgstr "Emoji 👻" + +#: inc/Engine/Admin/Settings/Page.php:944 +msgid "" +"Use default emoji of visitor's browser instead of loading emoji from " +"WordPress.org" +msgstr "" +"Use o emoji padrão do navegador do visitante ao invés de carregar emoji de " +"WordPress.org" + +#: inc/Engine/Admin/Settings/Page.php:948 +msgid "Embeds" +msgstr "Incorporações" + +#: inc/Engine/Admin/Settings/Page.php:950 +msgid "" +"Prevents others from embedding content from your site, prevents you from " +"embedding content from other (non-allowed) sites, and removes JavaScript " +"requests related to WordPress embeds" +msgstr "" +"Previne que outros incorporem conteúdo do seu site, e que você incorpore " +"conteúdo de outros sites (não-permitidos), e remove as solicitações " +"JavaScript relativas às incorporações do WordPress" + +#: inc/Engine/Admin/Settings/Page.php:954 +msgid "WebP compatibility" +msgstr "Compatibilidade com WebP" + +#: inc/Engine/Admin/Settings/Page.php:958 +#, php-format +msgid "" +"Enable this option if you would like WP Rocket to serve WebP images to " +"compatible browsers. Please note that WP Rocket cannot create WebP images " +"for you. To create WebP images we recommend %1$sImagify%2$s. %3$sMore " +"info%2$s" +msgstr "" +"Ative esta opção se desejar que o WP Rocket sirva imagens WebP aos " +"navegadores compatíveis. Note que o WP Rocket não pode criar imagens WebP " +"para você. Para criar imagens WebP nós recomendamos o %1$sImagify%2$s. " +"%3$sMais informações%2$s" + +#: inc/Engine/Admin/Settings/Page.php:985 +msgid "Enable for images" +msgstr "Habilitar para imagens" + +#: inc/Engine/Admin/Settings/Page.php:997 +#, php-format +msgid "" +"LazyLoad for images is currently activated in %2$s. If you want to use " +"%1$s’s LazyLoad, disable this option in %2$s." +msgstr "" +"No momento o LazyLoad para imagens do %2$s está ativo. Se deseja usar o " +"LazyLoad de %1$s, desative esta opção no %2$s." + +#: inc/Engine/Admin/Settings/Page.php:1005 +msgid "Enable for iframes and videos" +msgstr "Habilitar para iframes e vídeos" + +#: inc/Engine/Admin/Settings/Page.php:1020 +msgid "Replace YouTube iframe with preview image" +msgstr "Substituir o iframe do YouTube pela imagem de pré-visualização" + +#: inc/Engine/Admin/Settings/Page.php:1021 +msgid "" +"This can significantly improve your loading time if you have a lot of " +"YouTube videos on a page." +msgstr "" +"Isso pode melhorar de forma significativa o tempo de carregamento se você " +"tem muitos vídeos do YouTube em uma página." + +#: inc/Engine/Admin/Settings/Page.php:1031 +#, php-format +msgid "Replace YouTube iframe with preview image is not compatible with %2$s." +msgstr "" +"Substituir o iframe do YouTube com a imagem de pré-visualização não é " +"compatível com %2$s." + +#: inc/Engine/Admin/Settings/Page.php:1035 +msgid "Disable Emoji" +msgstr "Desabilitar Emoji" + +#: inc/Engine/Admin/Settings/Page.php:1036 +msgid "Disable Emoji will reduce the number of external HTTP requests." +msgstr "Desabilitar Emoji irá reduzir o número de requisições HTTP externas." + +#: inc/Engine/Admin/Settings/Page.php:1044 +msgid "Disable WordPress embeds" +msgstr "Desabilitar incorporações do WordPress" + +#: inc/Engine/Admin/Settings/Page.php:1054 +#: inc/classes/subscriber/Media/class-webp-subscriber.php:362 +msgid "Enable WebP caching" +msgstr "Ativar cache de WebP" + +#: inc/Engine/Admin/Settings/Page.php:1074 inc/deprecated/deprecated.php:1776 +#: views/settings/page-sections/tutorials.php:30 +msgid "Preload" +msgstr "Pré-Carregar" + +#: inc/Engine/Admin/Settings/Page.php:1075 +msgid "Generate cache files, preload fonts" +msgstr "Gera os arquivos de cache, pré-carrega as fontes" + +#: inc/Engine/Admin/Settings/Page.php:1086 +msgid "Preload Cache" +msgstr "Pré-carregar o cache" + +#: inc/Engine/Admin/Settings/Page.php:1089 +#, php-format +msgid "" +"When you enable preloading WP Rocket will generate the cache starting with " +"the links on your homepage followed by the sitemaps you specify. Preloading " +"is automatically triggered when you add or update content and can also be " +"manually triggered from the admin bar or from the %1$sWP Rocket " +"Dashboard%2$s." +msgstr "" +"Quando você habilita o pré-carregamento o WP Rocket irá gerar o cache a " +"partir dos links da sua página inicial, seguidos pelos sitemaps que você " +"especificar. O pré-carregamento é iniciado automaticamente quando você " +"adiciona ou atualiza conteúdo, e pode ser iniciado manualmente a partir da " +"barra de administração ou do %1$sPainel do WP Rocket%2$s." + +#: inc/Engine/Admin/Settings/Page.php:1097 +msgid "Preload Links" +msgstr "Pré-carregar Links" + +#: inc/Engine/Admin/Settings/Page.php:1100 +#, php-format +msgid "" +"Link preloading improves the perceived load time by downloading a page when " +"a user hovers over the link. %1$sMore info%2$s" +msgstr "" +"O pré-carregamento de link melhora o tempo percebido de carregamento ao " +"carregar uma página quando um usuário passa o mouse sobre o link. %1$sMais " +"informações%2$s" + +#: inc/Engine/Admin/Settings/Page.php:1108 +msgid "Prefetch DNS Requests" +msgstr "Pré-captura das Requisições de DNS" + +#: inc/Engine/Admin/Settings/Page.php:1110 +msgid "" +"DNS prefetching can make external files load faster, especially on mobile " +"networks" +msgstr "" +"A pré-captura do DNS pode carregar mais rápido arquivos externos, " +"especialmente em redes móveis" + +#: inc/Engine/Admin/Settings/Page.php:1118 +msgid "Preload Fonts" +msgstr "Pré-carregar as fontes" + +#: inc/Engine/Admin/Settings/Page.php:1121 +#, php-format +msgid "" +"Improves performance by helping browsers discover fonts in CSS files. " +"%1$sMore info%2$s" +msgstr "" +"Melhora o desempenho ao ajudar os naveggadores a descobrirem fontes em " +"arquivos CSS. %1$sMais informações%2$s" + +#: inc/Engine/Admin/Settings/Page.php:1135 +msgid "Activate Preloading" +msgstr "Ativar o Pré-Carregamento" + +#: inc/Engine/Admin/Settings/Page.php:1154 +msgid "Activate sitemap-based cache preloading" +msgstr "Ativar o pré-carregamento em cache do sitemap" + +#: inc/Engine/Admin/Settings/Page.php:1173 +msgid "Sitemaps for preloading" +msgstr "Sitemaps para pré-carregamento" + +#: inc/Engine/Admin/Settings/Page.php:1177 +msgid "Specify XML sitemap(s) to be used for preloading" +msgstr "Especifique sitemap(s) XML a ser(em) usado(s) para o pré-carregamento" + +#: inc/Engine/Admin/Settings/Page.php:1187 +msgid "URLs to prefetch" +msgstr "URLs a pré-capturar" + +#: inc/Engine/Admin/Settings/Page.php:1188 +msgid "" +"Specify external hosts to be prefetched (no http:, one per " +"line)" +msgstr "" +"Especifique os servidores externos a serem pré-carregados (sem " +"http:, um por linha)" + +#: inc/Engine/Admin/Settings/Page.php:1197 +msgid "Fonts to preload" +msgstr "Fontes a pré-carregar" + +#: inc/Engine/Admin/Settings/Page.php:1198 +msgid "" +"Specify urls of the font files to be preloaded (one per line). Fonts must be" +" hosted on your own domain, or the domain you have specified on the CDN tab." +msgstr "" +"Especifique URLs dos arquivos das fontes a serem pré-carregadas (um por " +"linha). As fontes devem ser hospedadas no seu próprio domínio, ou o domínio " +"especificado na aba CDN." + +#: inc/Engine/Admin/Settings/Page.php:1199 +msgid "" +"The domain part of the URL will be stripped automatically.
      Allowed font " +"extensions: otf, ttf, svg, woff, woff2." +msgstr "" +"A parte do domínio do URL será automaticametne removida.
      Extensões de " +"fonte permitidas: otf, ttf, svg, woff, woff2." + +#: inc/Engine/Admin/Settings/Page.php:1208 +msgid "Enable link preloading" +msgstr "Ativar o pré-carregamento dos links" + +#: inc/Engine/Admin/Settings/Page.php:1227 +msgid "Advanced Rules" +msgstr "Regras Avançadas" + +#: inc/Engine/Admin/Settings/Page.php:1228 +msgid "Fine-tune cache rules" +msgstr "Ajuste fino das regras de cache" + +#: inc/Engine/Admin/Settings/Page.php:1237 +msgid "" +"Sensitive pages like custom login/logout URLs should be excluded from cache." +msgstr "" +"URLs de páginas dinâmicas como personalizadas de login/logout devem ser " +"excluídas do cache." + +#: inc/Engine/Admin/Settings/Page.php:1240 +msgctxt "plugin name" +msgid "WooCommerce" +msgstr "WooCommerce" + +#: inc/Engine/Admin/Settings/Page.php:1242 +msgctxt "plugin name" +msgid "Easy Digital Downloads" +msgstr "Easy Digital Downloads" + +#: inc/Engine/Admin/Settings/Page.php:1244 +msgctxt "plugin name" +msgid "iThemes Exchange" +msgstr "iThemes Exchange" + +#: inc/Engine/Admin/Settings/Page.php:1246 +msgctxt "plugin name" +msgid "Jigoshop" +msgstr "Jigoshop" + +#: inc/Engine/Admin/Settings/Page.php:1248 +msgctxt "plugin name" +msgid "WP-Shop" +msgstr "WP-Shop" + +#: inc/Engine/Admin/Settings/Page.php:1254 +#, php-format +msgid "" +"
      Cart, checkout and \"my account\" pages set in " +"%1$s%2$s%3$s will be detected and never cached by default." +msgstr "" +"
      As páginas do carrinho, check-out e “minha conta” definidas no " +"%1$s%2$s%3$s serão detectadas e por padrão nunca serão " +"armazenadas em cache." + +#: inc/Engine/Admin/Settings/Page.php:1264 inc/admin/options.php:128 +msgid "Never Cache URL(s)" +msgstr "URL(s) Jamais em Cache" + +#: inc/Engine/Admin/Settings/Page.php:1275 +msgid "Never Cache Cookies" +msgstr "Cookies Jamais em Cache" + +#: inc/Engine/Admin/Settings/Page.php:1280 inc/admin/options.php:129 +msgid "Never Cache User Agent(s)" +msgstr "User Agent(s) Jamais em Cache" + +#: inc/Engine/Admin/Settings/Page.php:1285 inc/admin/options.php:130 +msgid "Always Purge URL(s)" +msgstr "Sempre Esvaziar URL(s)" + +#: inc/Engine/Admin/Settings/Page.php:1294 +msgid "Cache Query String(s)" +msgstr "String(s) de Consulta em Cache" + +#: inc/Engine/Admin/Settings/Page.php:1297 +#, php-format +msgid "" +"%1$sCache for query strings%2$s enables you to force caching for specific " +"GET parameters." +msgstr "" +"%1$sStrings de consulta em cache%2$s permite forçar o cache de certos " +"parâmetros GET." + +#: inc/Engine/Admin/Settings/Page.php:1311 +msgid "" +"Specify URLs of pages or posts that should never be cached (one per line)" +msgstr "" +"Especifique os URLs de páginas ou posts que deseja que jamais sejam " +"armazenados em cache (um por linha)" + +#: inc/Engine/Admin/Settings/Page.php:1312 +#: inc/Engine/Admin/Settings/Page.php:1340 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*) " +"wildcards to address multiple URLs under a given path." +msgstr "" +"A parte do domínio do URL será removida automaticamente.
      Use wildcards " +"(.*) para se referir a múltiplos URLs em um dado caminho." + +#: inc/Engine/Admin/Settings/Page.php:1321 +msgid "" +"Specify the IDs of cookies that, when set in the visitor's browser, should " +"prevent a page from getting cached (one per line)" +msgstr "" +"Especifique os IDs de cookies que irão evitar uma página ser armazenada em " +"cache quando definidos no navegador do visitante (um por linha)" + +#: inc/Engine/Admin/Settings/Page.php:1329 +msgid "" +"Specify user agent strings that should never see cached pages (one per line)" +msgstr "" +"Especifique strings de agentes de usuário que nunca devem ter páginas " +"armazenadas em cache (uma por linha)" + +#: inc/Engine/Admin/Settings/Page.php:1330 +msgid "Use (.*) wildcards to detect parts of UA strings." +msgstr "" +"Use wildcards (.*) para detectar partes de strings de agentes de usuário." + +#: inc/Engine/Admin/Settings/Page.php:1339 +msgid "" +"Specify URLs you always want purged from cache whenever you update any post " +"or page (one per line)" +msgstr "" +"Especifique os URLs que deseja esvaziar cache sempre que atualizar qualquer " +"post ou página (um por linha)" + +#: inc/Engine/Admin/Settings/Page.php:1348 +msgid "Specify query strings for caching (one per line)" +msgstr "" +"Especifique parâmetros de consulta para armazenamento em cache (um por " +"linha)" + +#: inc/Engine/Admin/Settings/Page.php:1373 inc/deprecated/deprecated.php:1775 +msgid "Database" +msgstr "Banco de Dados" + +#: inc/Engine/Admin/Settings/Page.php:1374 +msgid "Optimize, reduce bloat" +msgstr "Otimize, reduza o excesso" + +#: inc/Engine/Admin/Settings/Page.php:1383 +msgid "Post Cleanup" +msgstr "Limpeza de Post" + +#: inc/Engine/Admin/Settings/Page.php:1385 +msgid "" +"Post revisions and drafts will be permanently deleted. Do not use this " +"option if you need to retain revisions or drafts." +msgstr "" +"As revisões e rascunhos de posts serão excluídos permanentemente. Não use " +"esta opção se precisa manter as revisões e rascunhos." + +#: inc/Engine/Admin/Settings/Page.php:1393 +msgid "Comments Cleanup" +msgstr "Limpeza de Comentários" + +#: inc/Engine/Admin/Settings/Page.php:1395 +msgid "Spam and trashed comments will be permanently deleted." +msgstr "Os comentários spam e na lixeira serão excluídos permanentemente." + +#: inc/Engine/Admin/Settings/Page.php:1399 +msgid "Transients Cleanup" +msgstr "Limpeza de Transientes" + +#: inc/Engine/Admin/Settings/Page.php:1401 +msgid "" +"Transients are temporary options; they are safe to remove. They will be " +"automatically regenerated as your plugins require them." +msgstr "" +"Transientes são opções temporárias e é seguro removê-los. Serão regenerados " +"automaticamente quando seus plugins precisarem deles." + +#: inc/Engine/Admin/Settings/Page.php:1405 +msgid "Database Cleanup" +msgstr "Limpeza do Banco de Dados" + +#: inc/Engine/Admin/Settings/Page.php:1407 +msgid "Reduces overhead of database tables" +msgstr "Reduz o excesso de informações nas tabelas do banco de dados" + +#: inc/Engine/Admin/Settings/Page.php:1411 +msgid "Automatic cleanup" +msgstr "Limpeza automática" + +#: inc/Engine/Admin/Settings/Page.php:1422 +#: inc/classes/admin/Database/class-optimization.php:41 +msgid "Revisions" +msgstr "Revisões" + +#: inc/Engine/Admin/Settings/Page.php:1424 +#, php-format +msgid "%s revision in your database." +msgid_plural "%s revisions in your database." +msgstr[0] "%s revisão no seu banco de dados." +msgstr[1] "%s revisões no seu banco de dados." + +#: inc/Engine/Admin/Settings/Page.php:1432 +#: inc/classes/admin/Database/class-optimization.php:42 +msgid "Auto Drafts" +msgstr "Rascunhos Automáticos" + +#: inc/Engine/Admin/Settings/Page.php:1434 +#, php-format +msgid "%s draft in your database." +msgid_plural "%s drafts in your database." +msgstr[0] "%s rascunho no seu banco de dados." +msgstr[1] "%s rascunhos no seu banco de dados." + +#: inc/Engine/Admin/Settings/Page.php:1442 +#: inc/classes/admin/Database/class-optimization.php:43 +msgid "Trashed Posts" +msgstr "Posts na Lixeira" + +#: inc/Engine/Admin/Settings/Page.php:1444 +#, php-format +msgid "%s trashed post in your database." +msgid_plural "%s trashed posts in your database." +msgstr[0] "%s post na lixeira no seu banco de dados." +msgstr[1] "%s posts na lixeira no seu banco de dados." + +#: inc/Engine/Admin/Settings/Page.php:1452 +#: inc/classes/admin/Database/class-optimization.php:44 +msgid "Spam Comments" +msgstr "Comentários Spam" + +#: inc/Engine/Admin/Settings/Page.php:1454 +#, php-format +msgid "%s spam comment in your database." +msgid_plural "%s spam comments in your database." +msgstr[0] "%s comentário spam no seu banco de dados." +msgstr[1] "%s comentários spam no seu banco de dados:" + +#: inc/Engine/Admin/Settings/Page.php:1462 +#: inc/classes/admin/Database/class-optimization.php:45 +msgid "Trashed Comments" +msgstr "Comentários na Lixeira" + +#: inc/Engine/Admin/Settings/Page.php:1464 +#, php-format +msgid "%s trashed comment in your database." +msgid_plural "%s trashed comments in your database." +msgstr[0] "%s comentário na lixeira no seu banco de dados." +msgstr[1] "%s comentários na lixeira no seu banco de dados." + +#: inc/Engine/Admin/Settings/Page.php:1472 +#: inc/classes/admin/Database/class-optimization.php:46 +msgid "Expired transients" +msgstr "Transientes expirados" + +#: inc/Engine/Admin/Settings/Page.php:1474 +#, php-format +msgid "%s expired transient in your database." +msgid_plural "%s expired transients in your database." +msgstr[0] "%s transiente expirado no seu banco de dados." +msgstr[1] "%s transientes expirados no seu banco de dados." + +#: inc/Engine/Admin/Settings/Page.php:1482 +msgid "All transients" +msgstr "Todos os transientes" + +#: inc/Engine/Admin/Settings/Page.php:1484 +#, php-format +msgid "%s transient in your database." +msgid_plural "%s transients in your database." +msgstr[0] "%s transiente no seu banco de dados." +msgstr[1] "%s transientes no seu banco de dados." + +#: inc/Engine/Admin/Settings/Page.php:1492 +msgid "Optimize Tables" +msgstr "Otimizar Tabelas" + +#: inc/Engine/Admin/Settings/Page.php:1494 +#, php-format +msgid "%s table to optimize in your database." +msgid_plural "%s tables to optimize in your database." +msgstr[0] "%s tabela a otimizar no seu banco de dados." +msgstr[1] "%s tabelas a otimizar no seu banco de dados." + +#: inc/Engine/Admin/Settings/Page.php:1505 +msgid "Schedule Automatic Cleanup" +msgstr "Agendar Limpeza Automática" + +#: inc/Engine/Admin/Settings/Page.php:1517 +msgid "Frequency" +msgstr "Frequência" + +#: inc/Engine/Admin/Settings/Page.php:1525 +msgid "Daily" +msgstr "Diária" + +#: inc/Engine/Admin/Settings/Page.php:1526 +msgid "Weekly" +msgstr "Semanal" + +#: inc/Engine/Admin/Settings/Page.php:1527 +msgid "Monthly" +msgstr "Mensal" + +#: inc/Engine/Admin/Settings/Page.php:1543 +#: inc/Engine/Admin/Settings/Page.php:1554 inc/admin/ui/meta-boxes.php:76 +#: inc/deprecated/deprecated.php:1773 +msgid "CDN" +msgstr "CDN" + +#: inc/Engine/Admin/Settings/Page.php:1544 +msgid "Integrate your CDN" +msgstr "Integrar a sua CDN" + +#: inc/Engine/Admin/Settings/Page.php:1556 +msgid "" +"All URLs of static files (CSS, JS, images) will be rewritten to the CNAME(s)" +" you provide." +msgstr "" +"Todos os URLs de arquivos estáticos (CSS, JS, imagens) serão reescritos " +"no(s) CNAME(s) que você fornecer." + +#: inc/Engine/Admin/Settings/Page.php:1558 +#, php-format +msgid "" +"Not required for services like Cloudflare and Sucuri. Please see our " +"available %1$sAdd-ons%2$s." +msgstr "" +"Não necessário para serviços como Cloudflare e Sucuri. Por favor veja os " +"%1$scomplementos%2$s disponíveis." + +#: inc/Engine/Admin/Settings/Page.php:1573 inc/admin/options.php:131 +msgid "Exclude files from CDN" +msgstr "Excluir arquivos da CDN" + +#: inc/Engine/Admin/Settings/Page.php:1599 +#, php-format +msgid "" +"%1$s%2$s Add-on%3$s is currently enabled. Configuration of the CDN settings " +"is not required for %2$s to work on your site." +msgid_plural "" +"%1$s%2$s Add-ons%3$s are currently enabled. Configuration of the CDN " +"settings is not required for %2$s to work on your site." +msgstr[0] "" +"O %1$s %2$s Complemento %3$s está ativo no momento. Não é necessário " +"configurar o CDN para %2$s funcionar no seu site." +msgstr[1] "" +"Os %1$s %2$s Complementos %3$s estão ativos no momento. Não é necessário " +"configurar o CDN para %2$s funcionar no seu site." + +#: inc/Engine/Admin/Settings/Page.php:1624 +msgid "Enable Content Delivery Network" +msgstr "Ativar a CDN" + +#: inc/Engine/Admin/Settings/Page.php:1633 +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:151 +msgid "CDN CNAME(s)" +msgstr "CNAME(s) da CDN" + +#: inc/Engine/Admin/Settings/Page.php:1634 +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:152 +msgid "Specify the CNAME(s) below" +msgstr "Especifique abaixo a(s) CNAME(s)" + +#: inc/Engine/Admin/Settings/Page.php:1641 +msgid "" +"Specify URL(s) of files that should not get served via CDN (one per line)." +msgstr "" +"Especifique URL(s) de arquivos que não devem ser servidos pela CDN (um por " +"linha)." + +#: inc/Engine/Admin/Settings/Page.php:1642 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*) " +"wildcards to exclude all files of a given file type located at a specific " +"path." +msgstr "" +"A parte do domínio do URL será removida automaticamente.
      Use wildcards " +"(.*) para excluir todos os arquivos de um dado tipo de arquivo localizado em" +" um caminho específico." + +#: inc/Engine/Admin/Settings/Page.php:1664 +#: inc/Engine/Admin/Settings/Page.php:1672 +msgid "Heartbeat" +msgstr "Heartbeat" + +#: inc/Engine/Admin/Settings/Page.php:1665 +msgid "Control WordPress Heartbeat API" +msgstr "Controla a API Heartbeat do WordPress" + +#: inc/Engine/Admin/Settings/Page.php:1673 +msgid "" +"Reducing or disabling the Heartbeat API’s activity can help save some of " +"your server’s resources." +msgstr "" +"Reduzir ou desabilitar a atividade da API Hartbeat pode economizar alguns " +"recursos do seu servidor." + +#: inc/Engine/Admin/Settings/Page.php:1682 +msgid "Reduce or disable Heartbeat activity" +msgstr "Reduz ou desabilita a atividade Heartbeat" + +#: inc/Engine/Admin/Settings/Page.php:1683 +msgid "" +"Reducing activity will change Heartbeat frequency from one hit each minute " +"to one hit every 2 minutes." +msgstr "" +"Reduzir a atividade modifica a frequência do Heartbeat de um hit por minuto " +"para um hit a cada 2 minutos." + +#: inc/Engine/Admin/Settings/Page.php:1683 +msgid "" +"Disabling Heartbeat entirely may break plugins and themes using this API." +msgstr "" +"Desabilitar totalmente Heartbeat pode quebrar plugins e temas que usem esta " +"API." + +#: inc/Engine/Admin/Settings/Page.php:1697 +msgid "Do not limit" +msgstr "Não limitar" + +#: inc/Engine/Admin/Settings/Page.php:1698 +msgid "Reduce activity" +msgstr "Reduzir atividade" + +#: inc/Engine/Admin/Settings/Page.php:1699 +msgid "Disable" +msgstr "Desativar" + +#: inc/Engine/Admin/Settings/Page.php:1707 +msgid "Control Heartbeat" +msgstr "Controlar Heartbeat" + +#: inc/Engine/Admin/Settings/Page.php:1716 +msgid "Behavior in backend" +msgstr "Comportamento no painel" + +#: inc/Engine/Admin/Settings/Page.php:1723 +msgid "Behavior in post editor" +msgstr "Comportamento no editor de post" + +#: inc/Engine/Admin/Settings/Page.php:1729 +msgid "Behavior in frontend" +msgstr "Comportamento na interface" + +#: inc/Engine/Admin/Settings/Page.php:1745 +#: views/settings/page-sections/tutorials.php:36 +msgid "Add-ons" +msgstr "Complementos" + +#: inc/Engine/Admin/Settings/Page.php:1746 +msgid "Add more features" +msgstr "Adicione mais recursos" + +#: inc/Engine/Admin/Settings/Page.php:1753 +msgid "One-click Rocket Add-ons" +msgstr "Complementos de um clique do Rocket" + +#: inc/Engine/Admin/Settings/Page.php:1754 +msgid "" +"One-Click Add-ons are features extending available options without " +"configuration needed. Switch the option \"on\" to enable from this screen." +msgstr "" +"Complementos de um clique são recursos que extendem as opções disponíveis " +"sem a necessidade de configurações. Ative a opção para ativar a partir desta" +" tela." + +#: inc/Engine/Admin/Settings/Page.php:1764 +msgid "Rocket Add-ons" +msgstr "Complementos do Rocket" + +#: inc/Engine/Admin/Settings/Page.php:1765 +msgid "Rocket Add-ons are complementary features extending available options." +msgstr "" +"Os Complementos do Rocket são recursos complementares extendendo as opções " +"disponíveis." + +#: inc/Engine/Admin/Settings/Page.php:1778 +msgid "Google Tracking" +msgstr "Rastreamento do Google" + +#: inc/Engine/Admin/Settings/Page.php:1784 +msgid "Improve browser caching for Google Analytics" +msgstr "Melhora o cache de navegador para o Google Analytics" + +#: inc/Engine/Admin/Settings/Page.php:1786 +#, php-format +msgid "" +"WP Rocket will host these Google scripts locally on your server to help " +"satisfy the PageSpeed recommendation for Leverage browser " +"caching.
      %1$sLearn more%2$s" +msgstr "" +"O WP Rocket irá hospedar localmente no seu servidor estes scripts do Google " +"para ajudar a satisfazer a recomendação do PageSpeed para Beneficiar-se " +"do cache do navegador.
      %1$sSaiba mais%2$s" + +#: inc/Engine/Admin/Settings/Page.php:1801 +msgid "Facebook Pixel" +msgstr "Pixel do Facebook" + +#: inc/Engine/Admin/Settings/Page.php:1807 +msgid "Improve browser caching for Facebook Pixel" +msgstr "Melhora o cache de navegador para o Pixel do Facebook" + +#: inc/Engine/Admin/Settings/Page.php:1809 +#, php-format +msgid "" +"WP Rocket will host these Facebook Pixels locally on your server to help " +"satisfy the PageSpeed recommendation for Leverage browser " +"caching.
      %1$sLearn more%2$s" +msgstr "" +"O WP Rocket irá hospedar localmente no seu servidor estes Pixels do Facebook" +" para satisfazer as recomendações de PageSpeed para Aproveitar o cache " +"do navegador.
      %1$sAprenda Mais%2$s" + +#: inc/Engine/Admin/Settings/Page.php:1822 +#: inc/Engine/Admin/Settings/Page.php:1923 +msgid "Cloudflare" +msgstr "Cloudflare" + +#: inc/Engine/Admin/Settings/Page.php:1828 +msgid "Integrate your Cloudflare account with this add-on." +msgstr "Integre a sua conta Cloudflare com este complemento." + +#: inc/Engine/Admin/Settings/Page.php:1829 +msgid "" +"Provide your account email, global API key, and domain to use options such " +"as clearing the Cloudflare cache and enabling optimal settings with WP " +"Rocket." +msgstr "" +"Forneça o e-mail, a chave global da API e o domínio da sua conta para usar " +"opções como esvaziar o cache do Cloudflare e ativar as configurações " +"otimizadas com o WP Rocket." + +#: inc/Engine/Admin/Settings/Page.php:1863 +msgid "Varnish" +msgstr "Varnish" + +#: inc/Engine/Admin/Settings/Page.php:1869 +msgid "If Varnish runs on your server, you must activate this add-on." +msgstr "Você deve ativar este complemento se roda o Varnish no seu servidor." + +#: inc/Engine/Admin/Settings/Page.php:1871 +#, php-format +msgid "" +"Varnish cache will be purged each time WP Rocket clears its cache to ensure " +"content is always up-to-date.
      %1$sLearn more%2$s" +msgstr "" +"O cache Varnish será esvaziado sempre que o WP Rocket esvaziar o seu cache " +"para garantir que o conteúdo esteja sempre atualizado.
      %1$sSaiba mais%2$s" + +#: inc/Engine/Admin/Settings/Page.php:1885 +msgid "Clear the Sucuri cache when WP Rocket’s cache is cleared." +msgstr "Esvazia o cache Sucuri quando o cache do WP Rocket é esvaziado." + +#: inc/Engine/Admin/Settings/Page.php:1888 +msgid "" +"Provide your API key to clear the Sucuri cache when WP Rocket’s cache is " +"cleared." +msgstr "" +"Forneça a sua chave da API para limpar o cache Sucuri quando o cache do WP " +"Rocket é limpo." + +#: inc/Engine/Admin/Settings/Page.php:1896 +#: inc/Engine/Admin/Settings/Page.php:2040 +msgid "Sucuri" +msgstr "Sucuri" + +#: inc/Engine/Admin/Settings/Page.php:1902 +msgid "Synchronize Sucuri cache with this add-on." +msgstr "Sincronize o cache Sucuri com este complemento." + +#: inc/Engine/Admin/Settings/Page.php:1940 +msgid "Cloudflare credentials" +msgstr "Credenciais do Cloudflare" + +#: inc/Engine/Admin/Settings/Page.php:1949 +msgid "Cloudflare settings" +msgstr "Configurações do Cloudflare" + +#: inc/Engine/Admin/Settings/Page.php:1963 +msgctxt "Cloudflare" +msgid "Global API key:" +msgstr "Chave global da API:" + +#: inc/Engine/Admin/Settings/Page.php:1964 +msgctxt "Cloudflare" +msgid "Find your API key" +msgstr "Encontre a sua chave da API" + +#: inc/Engine/Admin/Settings/Page.php:1976 +msgctxt "Cloudflare" +msgid "Account email" +msgstr "E-mail da Conta" + +#: inc/Engine/Admin/Settings/Page.php:1985 +msgctxt "Cloudflare" +msgid "Zone ID" +msgstr "ID de Zona" + +#: inc/Engine/Admin/Settings/Page.php:1995 +msgid "Development mode" +msgstr "Modo de desenvolvimento" + +#: inc/Engine/Admin/Settings/Page.php:1997 +#, php-format +msgid "" +"Temporarily activate development mode on your website. This setting will " +"automatically turn off after 3 hours. %1$sLearn more%2$s" +msgstr "" +"Ativa temporariamente o modo de desenvolvimento no seu site. Esta opção se " +"desativa automaticamente após 3 horas. %1$sSaiba mais%2$s" + +#: inc/Engine/Admin/Settings/Page.php:2005 +msgid "Optimal settings" +msgstr "Configurações ótimas" + +#: inc/Engine/Admin/Settings/Page.php:2006 +msgid "" +"Automatically enhances your Cloudflare configuration for speed, performance " +"grade and compatibility." +msgstr "" +"Melhora automaticamente as suas configurações no Cloudflare para velocidade," +" desempenho e compatibilidade." + +#: inc/Engine/Admin/Settings/Page.php:2014 +msgid "Relative protocol" +msgstr "Protocolo relativo" + +#: inc/Engine/Admin/Settings/Page.php:2015 +msgid "" +"Should only be used with Cloudflare's flexible SSL feature. URLs of static " +"files (CSS, JS, images) will be rewritten to use // instead of http:// or " +"https://." +msgstr "" +"Só deve ser usado com a função de SSL flexível do Cloudflare. URLs de " +"arquivos estáticos (CSS, JS, imagens) serão reescritos para usar // ao invés" +" de http:// ou https://." + +#: inc/Engine/Admin/Settings/Page.php:2053 +msgid "Sucuri credentials" +msgstr "Credenciais Sucuri" + +#: inc/Engine/Admin/Settings/Page.php:2066 +msgctxt "Sucuri" +msgid "" +"Firewall API key (for plugin), must be in format {32 characters}/{32 " +"characters}:" +msgstr "" +"A chave da API do Firewal (do plugin) precisa estar no formato{32 " +"caracteres}/{32 caracteres}:" + +#: inc/Engine/Admin/Settings/Page.php:2067 +msgctxt "Sucuri" +msgid "Find your API key" +msgstr "Encontre a sua chave da API" + +#: inc/Engine/Admin/Settings/Render.php:461 inc/deprecated/deprecated.php:1294 +msgid "Upload file and import settings" +msgstr "Enviar e importar configurações" + +#: inc/Engine/Admin/Settings/Settings.php:400 +msgid "" +"Sucuri Add-on: The API key for the Sucuri firewall must be in format " +"{32 characters}/{32 characters}." +msgstr "" +"Complemento Sucuri. A chave da API para o firewall Sucuri precisa estar no " +"formato {32 caracteres}/{32 caracteres}." + +#: inc/Engine/Admin/Settings/Settings.php:491 +#: inc/deprecated/deprecated.php:1245 +msgid "Settings saved." +msgstr "Configurações salvas." + +#: inc/Engine/Admin/Settings/Subscriber.php:148 +#: inc/deprecated/deprecated.php:1786 +#: views/settings/page-sections/tools.php:33 +msgid "Tools" +msgstr "Ferramentas" + +#: inc/Engine/Admin/Settings/Subscriber.php:149 +msgid "Import, Export, Rollback" +msgstr "Importar, Exportar, Reverter" + +#: inc/Engine/Admin/Settings/Subscriber.php:170 +#: views/settings/page-sections/imagify.php:14 +msgid "Image Optimization" +msgstr "Otimizar Imagens" + +#: inc/Engine/Admin/Settings/Subscriber.php:171 +msgid "Compress your images" +msgstr "Comprima as suas imagens" + +#: inc/Engine/Admin/Settings/Subscriber.php:188 +#: views/settings/page-sections/tutorials.php:45 +msgid "Tutorials" +msgstr "Tutoriais" + +#: inc/Engine/Admin/Settings/Subscriber.php:189 +msgid "Getting started and how to videos" +msgstr "Comece a usar e vídeos didáticos" + +#: inc/Engine/CDN/RocketCDN/APIClient.php:154 +msgid "RocketCDN is not available at the moment. Please retry later" +msgstr "A RocketCDN não está disponível no momento. Tente mais tarde" + +#: inc/Engine/CDN/RocketCDN/APIClient.php:171 +msgid "RocketCDN cache purge failed: Missing identifier parameter." +msgstr "" +"Falha esvaziando o cache da RocketCDN: faltando parâmetro identificador." + +#: inc/Engine/CDN/RocketCDN/APIClient.php:180 +msgid "RocketCDN cache purge failed: Missing user token." +msgstr "Falha esvaziando o cache da RocketCDN: token de usuário faltando." + +#: inc/Engine/CDN/RocketCDN/APIClient.php:199 +msgid "" +"RocketCDN cache purge failed: The API returned an unexpected response code." +msgstr "" +"Falha esvaziando o cache da RocketCDN: a API retornou um código inesperado " +"de resposta." + +#: inc/Engine/CDN/RocketCDN/APIClient.php:208 +msgid "RocketCDN cache purge failed: The API returned an empty response." +msgstr "" +"Falha esvaziando o cache da RocketCDN: a API retornou uma resposta vazia." + +#: inc/Engine/CDN/RocketCDN/APIClient.php:217 +msgid "RocketCDN cache purge failed: The API returned an unexpected response." +msgstr "" +"Falha esvaziando o cache da RocketCDN: a API retornou uma resposta " +"inesperada." + +#: inc/Engine/CDN/RocketCDN/APIClient.php:226 +#, php-format +msgid "RocketCDN cache purge failed: %s." +msgstr "Falha esvaziando o cache da RocketCDN: %s." + +#: inc/Engine/CDN/RocketCDN/APIClient.php:234 +msgid "RocketCDN cache purge successful." +msgstr "O cache da RocketCDN foi esvaziado com suesso." + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:82 +msgid "Next Billing Date" +msgstr "Próxima data de cobrança" + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:91 +msgid "No Subscription" +msgstr "Nenhuma assinatura" + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:127 +msgid "Your RocketCDN subscription is currently active." +msgstr "A sua assinatura da RocketCDN está ativa." + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:133 +#, php-format +msgid "To use RocketCDN, replace your CNAME with %1$s%2$s%3$s." +msgstr "Para usar a RocketCDN, substitua seu CNAME com %1$s%2$s%3$s." + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:144 +#, php-format +msgid "%1$sMore Info%2$s" +msgstr "%1$sMais informações%2$s" + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:190 +msgid "Manage Subscription" +msgstr "Gerenciar assinatura" + +#: inc/Engine/CDN/RocketCDN/RESTSubscriber.php:137 +msgid "RocketCDN enabled" +msgstr "RocketCDN ativa" + +#: inc/Engine/CDN/RocketCDN/RESTSubscriber.php:160 +msgid "RocketCDN disabled" +msgstr "RocketCDN inativa" + +#: inc/Engine/CDN/RocketCDN/views/cta-big.php:27 +#, php-format +msgid "Valid until %s only!" +msgstr "Válido apenas até %s! " + +#: inc/Engine/CDN/RocketCDN/views/cta-big.php:36 +msgid "Speed up your website thanks to:" +msgstr "Acelere o seu site graças a:" + +#: inc/Engine/CDN/RocketCDN/views/cta-big.php:42 +#, php-format +msgid "" +"High performance Content Delivery Network (CDN) with %1$sunlimited " +"bandwith%2$s" +msgstr "" +"Rede de Distribuição de Conteúdo (CDN) de alto desempenho com %1$slargura " +"ilimitada de banda%2$s" + +#: inc/Engine/CDN/RocketCDN/views/cta-big.php:48 +#, php-format +msgid "" +"Easy configuration: the %1$sbest CDN settings%2$s are automatically applied" +msgstr "" +"Configuração fácil: as %1$smelhores configurações da CDN%2$s são aplicadas " +"automaticamente" + +#: inc/Engine/CDN/RocketCDN/views/cta-big.php:54 +#, php-format +msgid "" +"WP Rocket integration: the CDN option is %1$sautomatically configured%2$s in" +" our plugin" +msgstr "" +"Integração do WP Rocket: a opção da CDN é %1$sconfigurada " +"automaticamente%2$s no nosso plugin" + +#: inc/Engine/CDN/RocketCDN/views/cta-big.php:69 +#, php-format +msgid "%s / month" +msgstr "%s por mês" + +#: inc/Engine/CDN/RocketCDN/views/cta-big.php:74 +msgid "Get Started" +msgstr "Começar" + +#: inc/Engine/CDN/RocketCDN/views/cta-big.php:80 +msgid "Learn more about RocketCDN" +msgstr "Saiba mais sobre a RocketCDN" + +#: inc/Engine/CDN/RocketCDN/views/cta-big.php:82 +msgid "Reduce this banner" +msgstr "Reduzir este banner" + +#: inc/Engine/CDN/RocketCDN/views/cta-big.php:88 +#, php-format +msgid "" +"* $%1$s/month for 12 months then $%2$s/month. You can cancel your " +"subscription at any time." +msgstr "" +"* $%1$s por mês durante 12 meses e então $%2$s por mês. Você pode cancelar a" +" sua assinatura a qualquer momento." + +#: inc/Engine/CDN/RocketCDN/views/cta-small.php:17 +msgid "" +"Speed up your website with RocketCDN, WP Rocket’s Content Delivery Network." +msgstr "" +"Acelere o seu site com a RocketCDN, a Rede de Distribuição de Conteúdo do WP" +" Rocket." + +#: inc/Engine/CDN/RocketCDN/views/cta-small.php:20 +#: inc/Engine/CDN/RocketCDN/views/promote-notice.php:13 +msgid "Learn More" +msgstr "Saiba mais" + +#: inc/Engine/CDN/RocketCDN/views/dashboard-status.php:23 +msgid "RocketCDN is unavailable on local domains and staging sites." +msgstr "A RocketCDN não funciona em domínios locais e sites de staging." + +#: inc/Engine/CDN/RocketCDN/views/dashboard-status.php:32 +msgid "Get RocketCDN" +msgstr "Obtenha a RocketCDN" + +#: inc/Engine/CDN/RocketCDN/views/promote-notice.php:11 +msgid "New!" +msgstr "Novidade!" + +#: inc/Engine/CDN/RocketCDN/views/promote-notice.php:12 +msgid "" +"Speed up your website with RocketCDN, WP Rocket’s Content Delivery Network!" +msgstr "" +"Acelere o seu site com a RocketCDN, a Rede de Distribuição de Conteúdo do WP" +" Rocket!" + +#: inc/Engine/Cache/AdminSubscriber.php:118 inc/admin/admin.php:71 +#: inc/admin/admin.php:92 inc/deprecated/3.5.php:908 +msgid "Clear this cache" +msgstr "Limpar este cache" + +#: inc/Engine/Cache/WPCache.php:330 +msgid "WP_CACHE value" +msgstr "Valor de WP_CACHE" + +#: inc/Engine/Cache/WPCache.php:351 +msgid "" +"The WP_CACHE constant needs to be set to true for WP Rocket cache to work " +"properly" +msgstr "" +"A constante WP_Cache precisa ser definida como true para que o cache do WP " +"Rocket funcione corretamente" + +#: inc/Engine/Cache/WPCache.php:360 +msgid "WP_CACHE is set to true" +msgstr "WP_CACHE está definido como true" + +#: inc/Engine/Cache/WPCache.php:368 +msgid "WP_CACHE is not set" +msgstr "WP_CACHE não está definido" + +#: inc/Engine/Cache/WPCache.php:376 +msgid "WP_CACHE is set to false" +msgstr "WP_CACHE está definido como false" + +#: inc/Engine/CriticalPath/APIClient.php:64 +#, php-format +msgid "Critical CSS for %1$s not generated. Error: %2$s" +msgstr "O CSS crítico para %1$s não foi gerado. Erro: %2$s" + +#: inc/Engine/CriticalPath/APIClient.php:170 +#: inc/Engine/CriticalPath/DataManager.php:66 +#, php-format +msgid "" +"Critical CSS for %1$s on mobile not generated. Error: The API returned an " +"empty response." +msgstr "" +"O CSS crítico de %1$s para dispositivos móveis não foi gerado. Erro: a API " +"retornou uma resposta vazia." + +#: inc/Engine/CriticalPath/APIClient.php:173 +#: inc/Engine/CriticalPath/DataManager.php:69 +#, php-format +msgid "" +"Critical CSS for %1$s not generated. Error: The API returned an empty " +"response." +msgstr "" +"O CSS crítico de %1$s não foi gerado. Erro: a API retornou uma resposta " +"vazia." + +#: inc/Engine/CriticalPath/APIClient.php:185 +#, php-format +msgid "Critical CSS for %1$s on mobile not generated." +msgstr "O CSS crítico de %1$s para dispositivos móveis não foi gerado." + +#: inc/Engine/CriticalPath/APIClient.php:187 +#: inc/Engine/CriticalPath/ProcessorService.php:193 +#, php-format +msgid "Critical CSS for %1$s not generated." +msgstr "O CSS crítico para %1$s não foi gerado. " + +#: inc/Engine/CriticalPath/APIClient.php:195 +#, php-format +msgid "" +"Critical CSS for %1$s on mobile not generated. Error: The API returned an " +"invalid response code." +msgstr "" +"O CSS crítico de %1$s para dispositivos móveis não foi gerado. Erro: a API " +"retornou um código de resposta inválido." + +#: inc/Engine/CriticalPath/APIClient.php:197 +#, php-format +msgid "" +"Critical CSS for %1$s not generated. Error: The API returned an invalid " +"response code." +msgstr "" +"O CSS crítico para %1$snão foi gerado. Erro: a API retornou um código " +"inválido de resposta. " + +#: inc/Engine/CriticalPath/APIClient.php:205 +#: inc/Engine/CriticalPath/ProcessorService.php:200 +#, php-format +msgid "Error: %1$s" +msgstr "Erro: %1$s" + +#: inc/Engine/CriticalPath/Admin/Admin.php:260 +msgid "Regenerate Critical Path CSS" +msgstr "Regenerar o Caminho do CSS Crítico" + +#: inc/Engine/CriticalPath/Admin/Post.php:132 +#: views/cpcss/metabox/generate.php:47 +msgid "Generate Specific CPCSS" +msgstr "Gerar CPCSS específico" + +#: inc/Engine/CriticalPath/Admin/Post.php:133 +#: views/cpcss/metabox/generate.php:45 +msgid "Regenerate specific CPCSS" +msgstr "Regenerar CPCSS específico" + +#: inc/Engine/CriticalPath/Admin/Post.php:199 +msgid "%l to use this feature." +msgstr "%l para usar este recurso." + +#: inc/Engine/CriticalPath/Admin/Post.php:202 +#, php-format +msgid "Publish the %s" +msgstr "Publicar o %s" + +#: inc/Engine/CriticalPath/Admin/Post.php:203 +msgid "Enable Optimize CSS delivery in WP Rocket settings" +msgstr "Ativar Otimizar anentrega do CSS nas configurações do WP Rocket" + +#: inc/Engine/CriticalPath/Admin/Post.php:204 +msgid "Enable Optimize CSS delivery in the options above" +msgstr "Ativar Otimizar a entrega do CSS nas opções acima" + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:147 +msgid "Critical CSS generation is currently running." +msgstr "A geração do CSS crítico está sendo executada." + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:152 +#: inc/Engine/Preload/PreloadSubscriber.php:242 +#, php-format +msgid "Go to the %1$sWP Rocket settings%2$s page to track progress." +msgstr "" +"Vá até as %1$sConfigurações do WP Rocket%2$s para acompanhar o progresso." + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:366 +#, php-format +msgid "" +"Critical CSS generation is currently running: %1$d of %2$d page types " +"completed. (Refresh this page to view progress)" +msgstr "" +"A geração do CSS crítico está sendo executada: %1$d de %2$d tipos de páginas" +" concluídos. (Atualize a página para ver o progresso)" + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:438 +#, php-format +msgid "Critical CSS generation finished for %1$d of %2$d page types." +msgstr "Geração de CSS crítico concluída para %1$d de %2$d tipos de página." + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:445 +msgid "Critical CSS generation encountered one or more errors." +msgstr "A geração de CSS crítico encontrou um ou mais erros." + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:445 +msgid "Learn more." +msgstr "Saiba mais." + +#: inc/Engine/CriticalPath/DataManager.php:102 +msgid "Critical CSS file for mobile does not exist" +msgstr "O arquivo de CSS crítico para dispositivos móveis não existe" + +#: inc/Engine/CriticalPath/DataManager.php:104 +msgid "Critical CSS file does not exist" +msgstr "O arquivo do CSS crítico não existe" + +#: inc/Engine/CriticalPath/DataManager.php:116 +msgid "Critical CSS file for mobile cannot be deleted" +msgstr "" +"O arquivo do CSS crítico para dispositivos móveis não pode ser excluído" + +#: inc/Engine/CriticalPath/DataManager.php:118 +msgid "Critical CSS file cannot be deleted" +msgstr "O arquivo do CSS crítico não pode ser excluído" + +#: inc/Engine/CriticalPath/ProcessorService.php:186 +#, php-format +msgid "Mobile Critical CSS for %1$s not generated." +msgstr "O CSS crítico de %1$s para dispositivos móveis não foi gerado" + +#: inc/Engine/CriticalPath/ProcessorService.php:227 +#, php-format +msgid "Critical CSS for %s in progress." +msgstr "O CSS crítico para %s está em execução." + +#: inc/Engine/CriticalPath/ProcessorService.php:261 +#, php-format +msgid "Mobile Critical CSS for %s generated." +msgstr "Gerado o CSS crítico de %s para dispositivos móveis." + +#: inc/Engine/CriticalPath/ProcessorService.php:272 +#, php-format +msgid "Critical CSS for %s generated." +msgstr "Foi gerado o CSS crítico para %s." + +#: inc/Engine/CriticalPath/ProcessorService.php:294 +msgid "Critical CSS file deleted successfully." +msgstr "O arquivo de CSS crítico foi excluído com sucesso." + +#: inc/Engine/CriticalPath/ProcessorService.php:316 +#, php-format +msgid "Mobile Critical CSS for %1$s timeout. Please retry a little later." +msgstr "" +"O tempo de execução para o CSS crítico para dispositivos móveis de %1$s foi " +"ultrapassado. Tente um pouco mais tarde." + +#: inc/Engine/CriticalPath/ProcessorService.php:329 +#, php-format +msgid "Critical CSS for %1$s timeout. Please retry a little later." +msgstr "" +"O tempo de execução para o CSS crítico de %1$s foi ultrapassado. Tente um " +"pouco mais tarde." + +#: inc/Engine/CriticalPath/RESTWP.php:141 +msgid "Mobile CPCSS generation not enabled." +msgstr "A geração do CPCSS para dispositivos móveis não está ativa." + +#: inc/Engine/CriticalPath/RESTWPPost.php:36 +#: inc/Engine/CriticalPath/RESTWPPost.php:69 +msgid "Requested post does not exist." +msgstr "O post solicitado não existe." + +#: inc/Engine/CriticalPath/RESTWPPost.php:46 +msgid "Cannot generate CPCSS for unpublished post." +msgstr "Não foi possível erar o CPCSS para post não publicado." + +#: inc/Engine/HealthCheck/HealthCheck.php:82 inc/deprecated/3.5.php:868 +msgid "" +"The following scheduled event failed to run. This may indicate the CRON " +"system is not running properly, which can prevent some WP Rocket features " +"from working as intended:" +msgid_plural "" +"The following scheduled events failed to run. This may indicate the CRON " +"system is not running properly, which can prevent some WP Rocket features " +"from working as intended:" +msgstr[0] "" +"O seguinte evento agendado falhou em ser executado. Isso pode indicar que o " +"sistema CRON não está funcionando corretamente, o que pode impedir algumas " +"funções do WP Rocket de funcionarem como esperado:" +msgstr[1] "" +"Os seguintes eventos agendados falharam em ser executados. Isso pode indicar" +" que o sistema CRON não está funcionando corretamente, o que pode impedir " +"algumas funções do WP Rocket de funcionarem como esperado:" + +#: inc/Engine/HealthCheck/HealthCheck.php:88 inc/deprecated/3.5.php:877 +msgid "Please contact your host to check if CRON is working." +msgstr "" +"Entre em contato com o seu host para verificar se o CRON está funcionando." + +#: inc/Engine/HealthCheck/HealthCheck.php:142 +msgid "Scheduled Cache Purge" +msgstr "Esvaziamento agendado do cache" + +#: inc/Engine/HealthCheck/HealthCheck.php:143 +msgid "Scheduled Database Optimization" +msgstr "Otimização agendada do banco de dados" + +#: inc/Engine/HealthCheck/HealthCheck.php:144 +msgid "Database Optimization Process" +msgstr "Processo de otimização do banco de dados" + +#: inc/Engine/HealthCheck/HealthCheck.php:145 +msgctxt "noun" +msgid "Preload" +msgstr "Pré-Carregar" + +#: inc/Engine/HealthCheck/HealthCheck.php:146 +msgid "Critical Path CSS Generation Process" +msgstr "Processo de geração do CSS do caminho crítico" + +#: inc/Engine/License/Upgrade.php:252 +#, php-format +msgid "" +"Take advantage of %1$s to speed up more websites:%2$s get a %3$s%4$s off%5$s" +" for %3$supgrading your license to Plus or Infinite!%5$s" +msgid_plural "" +"Take advantage of %1$s to speed up more websites:%2$s get a %3$s%4$s off%5$s" +" for %3$supgrading your license to Infinite!%5$s" +msgstr[0] "" +"Beneficie-se do %1$s para acelerar mais websites: %2$s te dá %3$s %4$s de " +"desconto %5$s para %3$s atualizando a sua licença para Infinita!%5$s" +msgstr[1] "" +"Beneficie-se do %1$s para acelerar mais websites:%2$s te dá %3$s%4$s de " +"desconto%5$s para %3$satualizando a sua licença para Infinita!%5$s" + +#: inc/Engine/License/Upgrade.php:369 inc/Engine/License/Upgrade.php:392 +msgid "Unlimited" +msgstr "Ilimitado" + +#: inc/Engine/License/views/promo-banner.php:16 +#, php-format +msgid "%s off" +msgstr "%sdesligado" + +#: inc/Engine/License/views/promo-banner.php:21 +#, php-format +msgid "%s promotion is live!" +msgstr "Promoção %sao vivo!" + +#: inc/Engine/License/views/promo-banner.php:27 +msgid "Hurry Up! Deal ends in:" +msgstr "Corra! A oferta termina em:" + +#: inc/Engine/License/views/promo-banner.php:32 +msgid "Seconds" +msgstr "Segundos" + +#: inc/Engine/License/views/promo-banner.php:34 +#: inc/Engine/License/views/upgrade-section.php:11 +msgid "Upgrade now" +msgstr "Atualize agora" + +#: inc/Engine/License/views/promo-banner.php:36 inc/admin/ui/notices.php:812 +#: views/settings/page-sections/dashboard.php:46 +msgid "Dismiss this notice." +msgstr "Dispensar essa notificação." + +#: inc/Engine/License/views/upgrade-popin.php:12 +msgid "Speed Up More Websites" +msgstr "Acelere mais websites" + +#: inc/Engine/License/views/upgrade-popin.php:19 +#, php-format +msgid "" +"You can use WP Rocket on more websites by upgrading your license. To " +"upgrade, simply pay the %1$sprice difference%2$s between your current and " +"new licenses, as shown below." +msgstr "" +"Você pode usar o WP Rocket em mais sites atualizando a sua licença. Para " +"atualizar, asta pagar a diferença de preço de %1$s para %2$s entre a sua " +"licença atual e a nova, como mostrado abaixo." + +#: inc/Engine/License/views/upgrade-popin.php:25 +#, php-format +msgid "" +"%1$sN.B.%2$s: Upgrading your license does not change your expiration date" +msgstr "" +"%1$s N.B. %2$s: Atualizando a sua licença não altera a sua data de expiração" +" " + +#: inc/Engine/License/views/upgrade-popin.php:35 +#, php-format +msgid "Save $%s" +msgstr "Salvar $ %s" + +#: inc/Engine/License/views/upgrade-popin.php:48 +#, php-format +msgid "%s websites" +msgstr "%s websites" + +#: inc/Engine/License/views/upgrade-popin.php:54 +#, php-format +msgid "Upgrade to %s" +msgstr "Atualize para %s" + +#: inc/Engine/License/views/upgrade-section.php:11 +msgid "" +"You can use WP Rocket on more websites by upgrading your license (you will " +"only pay the price difference between your current and new licenses)." +msgstr "" +"Você pode usar o WP Rocket em mais sites atualizando a sua licença (você só " +"paga a diferença de preço entre a sua licença atual e a nova)." + +#: inc/Engine/Optimization/DelayJS/Admin/Settings.php:105 +msgid "Restore Defaults" +msgstr "Restaurar os padrões" + +#: inc/Engine/Preload/Homepage.php:153 +#, php-format +msgid "" +"Preload encountered an error. Could not gather links on %1$s because of the " +"following error: %2$s. %3$sLearn more%4$s." +msgstr "" +"O pré-carregamento encontrou um erro. Não foi possível obter os links em " +"%1$s devido ao seguinte erro: %2$s. %3$sSaiba mais%4$s." + +#: inc/Engine/Preload/Homepage.php:166 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: %2$s. Security measures could be preventing access. " +"%3$sLearn more%4$s." +msgstr "" +"O pré-carregamento encontrou um erro: %1$s não está acessível devido ao " +"seguinte código de resposta: %2$s. Medidas de segurança podem estar " +"impedindo o acesso. %3$sSaiba mais%4$s." + +#: inc/Engine/Preload/Homepage.php:172 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: 404. Please make sure your homepage is accessible in your " +"browser. %2$sLearn more%3$s." +msgstr "" +"O pré-carregamento encontrou um erro. %1$s não está acessível devido ao " +"seguinte código de resposta: 404. Por favor certifique-se que sua homepage " +"está acessível no seu navegador. %2$sSaiba mais%3$s." + +#: inc/Engine/Preload/Homepage.php:178 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: 500. Please check with your web host about server access. " +"%2$sLearn more%3$s." +msgstr "" +"O pré-carregamento encontrou um erro. %1$s não está acessível devido ao " +"seguinte código de resposta: 500. Por favor verifique com seu host web sobre" +" o acesso ao servidor. %2$sSaiba mais%3$s." + +#: inc/Engine/Preload/Homepage.php:184 +#, php-format +msgid "" +"Preload encountered an error. Could not gather links on %1$s because it " +"returned the following response code: %2$s. %3$sLearn more%4$s." +msgstr "" +"O pré-carregamento encontrou um erro: Não foi possível obter os links em " +"%1$s pois retornou o seguinte código de resposta: %2$s. %3$sSaiba mais%4$s." + +#: inc/Engine/Preload/PreloadSubscriber.php:237 +msgid "Preload: WP Rocket has started preloading your website." +msgstr "Pré-carregamento: o WP Rocket começou a pré-carregar o seu website." + +#: inc/Engine/Preload/PreloadSubscriber.php:283 +#, php-format +msgid "" +"Preload: %1$s uncached page has now been preloaded. (refresh to see " +"progress)" +msgid_plural "" +"Preload: %1$s uncached pages have now been preloaded. (refresh to see " +"progress)" +msgstr[0] "" +"Pré-carregamento: %1$s página sem cache foi pré-carregada. (atualize a " +"página para ver o progresso)" +msgstr[1] "" +"Pré-carregamento: %1$s páginas sem cache foram pré-carregadas. (atualize a " +"página para ver o progresso)" + +#: inc/Engine/Preload/PreloadSubscriber.php:292 +msgid "The following error happened during gathering of the URLs to preload:" +msgid_plural "" +"The following errors happened during gathering of the URLs to preload:" +msgstr[0] "Ocorreu o seguinte erro obtendo os URLs a pré-carregar:" +msgstr[1] "Ocorreram os seguintes erros obtendo os URLs a pré-carregar:" + +#: inc/Engine/Preload/PreloadSubscriber.php:344 +#, php-format +msgid "Preload complete: %d pages have been cached." +msgstr "Pré-carregamento concluído: %d páginas foram armazenadas em cache." + +#: inc/Engine/Preload/Sitemap.php:150 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not gather links on %1$s because" +" of the following error: %2$s. %3$sLearn more%4$s." +msgstr "" +"O pré-carregamento do sitemap encontrou um erro. Não foi possível obter os " +"links em %1$s devido ao seguinte erro: %2$s. %3$sSaiba mais%4$s." + +#: inc/Engine/Preload/Sitemap.php:165 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: %2$s. Security measures could be preventing access." +" %3$sLearn more%4$s." +msgstr "" +"O pré-carregamento do sitemap encontrou um erro. %1$s não está acessível " +"devido ao seguinte código de resposta: %2$s. Medidas de segurança podem " +"estar impedindo o acesso. %3$sSaiba mais%4$s." + +#: inc/Engine/Preload/Sitemap.php:170 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: 404. Please make sure you entered the correct " +"sitemap URL and it is accessible in your browser. %2$sLearn more%3$s." +msgstr "" +"O pré-carregamento do sitemap encontrou um erro: %1$s não está acessível " +"devido ao seguinte código de resposta: 404. Por favor certifique-se de ter " +"inserido corretamente o URL do sitemap e que ela está acessível no seu " +"navegador. %2$sSaiba mais%3$s." + +#: inc/Engine/Preload/Sitemap.php:175 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: 500. Please check with your web host about server " +"access. %2$sLearn more%3$s." +msgstr "" +"O pré-carregameto do sitemap encontrou um erro. %1$s não está acessível " +"devido ao seguinte código de resposta: 500. Por favor verifique com seu host" +" web sobre o acesso ao servidor. %2$sSaiba mais%3$s." + +#: inc/Engine/Preload/Sitemap.php:180 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not gather links on %1$s because" +" it returned the following response code: %2$s. %3$sLearn more%4$s." +msgstr "" +"O pré-carregamento do sitemap encontrou um erro. Não foi possível obter os " +"links em %1$s porque retornou o seguinte código de resposta: %2$s. %3$sSaiba" +" mais%4$s." + +#: inc/Engine/Preload/Sitemap.php:196 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not collect links from %1$s " +"because the file is empty. %2$sLearn more%3$s." +msgstr "" +"O pré-carregamento do sitemap encontrou um erro. Não foi possível coletar os" +" links de %1$s porque o arquivo está vazio. %2$sSaiba mais%3$s." + +#: inc/Engine/Preload/Sitemap.php:217 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not collect links from %1$s " +"because of an error during the XML sitemap parsing. %2$sLearn more%3$s." +msgstr "" +"O pré-carregamento do sitemap encontrou um erro. Não foi possível coletar os" +" links de %1$s devido a um erro durante a análise do sitemap XML. %2$sSaiba " +"mais%3$s." + +#: inc/Engine/Preload/SitemapPreloadSubscriber.php:120 +#, php-format +msgid "" +"%1$sSimpleXML PHP extension%2$s is not enabled on your server. Please " +"contact your host to enable it before running sitemap-based cache " +"preloading." +msgstr "" +"A %1$sextensão SimpleXML do PHP%2$s não está ativa no seu servidor. Por " +"favor entre em contato com o seu host e ative-a antes de executar o pré-" +"carregamento do cache baseado no sitemap." + +#: inc/ThirdParty/Hostings/Cloudways.php:82 +#, php-format +msgid "" +"Varnish auto-purge will be automatically enabled once Varnish is enabled on " +"your %s server." +msgstr "" +"O auto-esvaziamento do Varnish será ativado automaticamente quando o Varnish" +" for ativado no seu servidor %s." + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:78 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"Please deactivate the following %s option which conflicts with WP Rocket " +"features:" +msgid_plural "" +"Please deactivate the following %s options which conflict with WP Rocket " +"features:" +msgstr[0] "" +"Desative a seguinte opção %s que está causando conflitos com funções do WP " +"Rocket:" +msgstr[1] "" +"Desative as seguintes opções %s que estão causando conflitos com funções do " +"WP Rocket:" + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:151 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sdisable emoji%3$s conflicts with WP Rockets %2$sdisable emoji%3$s" +msgstr "" +"A %3$s de desabilitar emojis do %1$s %2$s está gerando conflito com a %2$s " +"de desabilitar emoji %3$s do WP Rocket" + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:187 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sGZIP compression%3$s conflicts with WP Rocket %2$sGZIP " +"compression%3$s" +msgstr "" +"A %3$s de compressão GZIP do %1$s %2$s está gerando conflito com a %3$s de " +"compressão GZIP %2$s do WP Rocket" + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:223 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sbrowser caching%3$s conflicts with WP Rocket %2$sbrowser " +"caching%3$s" +msgstr "" +"A %3$s de cache do navegador do %1$s %2$s está gerando conflito com a %3$s " +"de cache do navegador %2$s do WP Rocket" + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:255 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$spage caching%3$s conflicts with WP Rocket %2$spage caching%3$s" +msgstr "" +"A %3$s de cache de páginas do %1$s %2$s está gerando conflito com a %3$s de " +"cache de páginas %2$s do WP Rocket" + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:289 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sasset optimization%3$s conflicts with WP Rocket %2$sfile " +"optimization%3$s" +msgstr "" +"A %3$s de otimização de recursos do %1$s %2$s está gerando conflito com a " +"%3$s de otimização de recursos %2$s do WP Rocket" + +#: inc/ThirdParty/Plugins/Smush.php:110 inc/ThirdParty/Plugins/Smush.php:128 +msgid "Smush" +msgstr "Smush" + +#: inc/admin/admin.php:18 inc/common/admin-bar.php:367 +#: inc/deprecated/deprecated.php:1787 +msgid "Support" +msgstr "Suporte" + +#: inc/admin/admin.php:20 +msgid "Docs" +msgstr "Documentação" + +#: inc/admin/admin.php:22 inc/common/admin-bar.php:355 +msgid "FAQ" +msgstr "Perguntas Frequentes" + +#: inc/admin/admin.php:24 inc/common/admin-bar.php:64 +msgid "Settings" +msgstr "Configurações" + +#: inc/admin/admin.php:225 inc/admin/admin.php:240 +#: inc/classes/class-wp-rocket-requirements-check.php:203 +#: inc/classes/class-wp-rocket-requirements-check.php:214 +#, php-format +msgid "%s Update Rollback" +msgstr "Reversão da Atualização %s" + +#: inc/admin/admin.php:266 +#, php-format +msgid "%1$sReturn to WP Rocket%2$s or %3$sgo to Plugins page%2$s" +msgstr "%1$sRetorne ao%2$sdo WP Rocket ou %3$svá para a página de Plugins%2$s" + +#: inc/admin/admin.php:503 +msgid "Settings import failed: you do not have the permissions to do this." +msgstr "" +"A importação das configurações falhou: você não tem permissões para fazer " +"isso." + +#: inc/admin/admin.php:507 +msgid "Settings import failed: no file uploaded." +msgstr "A importação das configurações falhou: nenhum arquivo foi enviado." + +#: inc/admin/admin.php:511 +msgid "Settings import failed: incorrect filename." +msgstr "A importação das configurações falhou: nome incorreto de arquivo." + +#: inc/admin/admin.php:522 +msgid "Settings import failed: incorrect filetype." +msgstr "A importação das configurações falhou: tipo de arquivo incorreto." + +#: inc/admin/admin.php:532 +msgid "Settings import failed: " +msgstr "A importação das configurações falhou:" + +#: inc/admin/admin.php:548 +msgid "Settings import failed: unexpected file content." +msgstr "" +"A importação das configurações falhou: arquivo com conteúdo inesperado." + +#: inc/admin/admin.php:569 +msgid "Settings imported and saved." +msgstr "Configurações importadas e salvas." + +#: inc/admin/options.php:149 +#, php-format +msgid "%1$s: %2$s." +msgstr "%1$s: %2$s." + +#: inc/admin/options.php:159 +msgid "The following pattern is invalid and has been removed:" +msgid_plural "The following patterns are invalid and have been removed:" +msgstr[0] "O seguinte padrão é inválido e foi removido:" +msgstr[1] "Os seguintes padrões são inválidos e foram removidos:" + +#: inc/admin/ui/meta-boxes.php:14 inc/admin/ui/notices.php:768 +#: inc/common/admin-bar.php:85 inc/common/admin-bar.php:137 +#: views/settings/page-sections/dashboard.php:143 +msgid "Clear cache" +msgstr "Limpar o cache" + +#: inc/admin/ui/meta-boxes.php:36 +msgid "WP Rocket Options" +msgstr "Opções do WP Rocket" + +#: inc/admin/ui/meta-boxes.php:65 +msgid "Never cache this page" +msgstr "Nunca armazenar esta página em cache" + +#: inc/admin/ui/meta-boxes.php:69 +msgid "Activate these options on this post:" +msgstr "Ativar estas opções neste post:" + +#: inc/admin/ui/meta-boxes.php:72 +msgid "LazyLoad for images" +msgstr "LazyLoad para imagens" + +#: inc/admin/ui/meta-boxes.php:73 +msgid "LazyLoad for iframes/videos" +msgstr "LazyLoad para iframes/vídeos" + +#: inc/admin/ui/meta-boxes.php:74 +msgid "Minify/combine CSS" +msgstr "Minificar/combinar o CSS" + +#: inc/admin/ui/meta-boxes.php:75 +msgid "Minify/combine JS" +msgstr "Minificar/combinar o JS" + +#: inc/admin/ui/meta-boxes.php:77 +msgid "Optimize CSS Delivery" +msgstr "Otimizar a Entrega do CSS" + +#: inc/admin/ui/meta-boxes.php:78 +msgid "Defer JS" +msgstr "Adiar o JS" + +#: inc/admin/ui/meta-boxes.php:85 +#, php-format +msgid "Activate first the %s option." +msgstr "Ative primeiro a opção %s." + +#: inc/admin/ui/meta-boxes.php:101 +#, php-format +msgid "" +"%1$sNote:%2$s None of these options will be applied if this post has been " +"excluded from cache in the global cache settings." +msgstr "" +"%1$sNota:%2$s Nenhuma destas opções será aplicada se este post tiver sido " +"excluido do cache nas configurações globais de cache." + +#: inc/admin/ui/notices.php:25 inc/admin/ui/notices.php:38 +#, php-format +msgid "" +"%1$s has not been deactivated due to missing writing permissions.
      \n" +"Make %2$s writeable and retry deactivation, or force deactivation now:" +msgstr "" +"%1$s não foi desativado por falta de permissões de escrita.
      \n" +"Ative a permissão de escrita para %2$s e tente novamente, ou forçe a desativação agora:" + +#: inc/admin/ui/notices.php:91 +#, php-format +msgid "" +"%s: One or more plugins have been enabled or disabled, " +"clear the cache if they affect the front end of your site." +msgstr "" +"%s: Um ou mais plugins foram ativados ou desativados, limpe" +" o cache se eles afetam a interface do seu site." + +#: inc/admin/ui/notices.php:184 +msgid "" +"WP Rocket Cloudflare Add-on provides similar functionalities. They can not " +"be active at the same time." +msgstr "" +"O complemento do Cloudflare para o WP Rocket fornece funcionalidades " +"similares. Eles não podem estar ativos ao mesmo tempo." + +#: inc/admin/ui/notices.php:208 +#, php-format +msgid "" +"%s: The following plugins are not compatible with this " +"plugin and may cause unexpected results:" +msgstr "" +"%s: Os plugins a seguir não são compatíveis com este plugin" +" e podem causar resultados inesperados:" + +#: inc/admin/ui/notices.php:214 +msgid "Deactivate" +msgstr "Desativar" + +#: inc/admin/ui/notices.php:256 +msgid "" +"WP Rocket Footer JS is not an official add-on. It prevents some options in " +"WP Rocket from working correctly. Please deactivate it if you have problems." +msgstr "" +"WP Rocket Footer JS não é um complemento oficial. Ele impede algumas opções " +"no WP Rocket de funcionarem corretamente. Por favor desative-o se tiver " +"problemas." + +#: inc/admin/ui/notices.php:296 +#, php-format +msgid "" +"Endurance Cache is currently enabled, which will conflict with WP Rocket " +"Cache. Please set the Endurance Cache cache level to Off (Level 0) on the " +"%1$sSettings > General%2$s page to prevent any issues." +msgstr "" +"O Cache Endurance está ativo no momento, e pode entrar em conflito com o WP " +"Rocket Cache. Por favor defina o nível de cache do Endurance Cache para " +"Inativo (Level 0) na página %1$sConfigurações > Geral%2$s para evitar " +"quaisquer problemas." + +#: inc/admin/ui/notices.php:317 +#, php-format +msgid "" +"%1$s: A custom permalink structure is required for the plugin to work " +"properly. %2$sGo to permalinks settings%3$s" +msgstr "" +"%1$s: É obrigatória uma estrutura personalizada de links permanentes para o " +"plugin funcionar corretamente. %2$sVá para as configurações de links " +"permanentes%3$s" + +#: inc/admin/ui/notices.php:364 +#, php-format +msgid "" +"%s could not modify the .htaccess file due to missing writing permissions." +msgstr "" +"%s não pôde alterar o arquivo .htaccess devido à falta de permissões de " +"escrita." + +#: inc/admin/ui/notices.php:370 inc/admin/ui/notices.php:845 +#, php-format +msgid "Troubleshoot: %1$sHow to make system files writeable%2$s" +msgstr "" +"Solução de Problemas: %1$sComo ativar a permissão escrita nos arquivos do " +"sistema%2$s" + +#: inc/admin/ui/notices.php:372 inc/admin/ui/notices.php:847 +msgid "" +"https://docs.wp-rocket.me/article/626-how-to-make-system-files-htaccess-wp-" +"config-writeable/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://docs.wp-rocket.me/article/626-how-to-make-system-files-htaccess-wp-" +"config-writeable/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: inc/admin/ui/notices.php:378 +msgid "" +"Don’t worry, WP Rocket’s page caching and settings will still function " +"correctly." +msgstr "" +"Não se preocupe, o cache de páginas e as configurações do WP Rocket vão " +"continuar funcionando corretamente." + +#: inc/admin/ui/notices.php:378 +msgid "" +"For optimal performance, adding the following lines into your .htaccess is " +"recommended (not required):" +msgstr "" +"Para um ótimo desempenho, é recomendado adicionar as linhas a seguir ao seu " +"arquivo .htaccess (não obrigatório):" + +#: inc/admin/ui/notices.php:525 +#, php-format +msgid "" +"%1$s is good to go! %2$sTest your load time%4$s, or visit your " +"%3$ssettings%4$s." +msgstr "" +"%1$s está pronto! %2$sTeste o seu tempo de carregamento%4$s ou visite as " +"suas %3$sconfigurações%4$s." + +#: inc/admin/ui/notices.php:598 +msgid "" +"Would you allow WP Rocket to collect non-sensitive diagnostic data from this" +" website?" +msgstr "" +"Você permite que o WP Rocket colete dados não-sensíveis de diagnóstico deste" +" site?" + +#: inc/admin/ui/notices.php:599 +msgid "This would help us to improve WP Rocket for you in the future." +msgstr "Isto pode nos ajudar a melhorar o WP Rocket para você no futuro." + +#: inc/admin/ui/notices.php:605 +msgid "What info will we collect?" +msgstr "Que informações iremos coletar?" + +#: inc/admin/ui/notices.php:610 +msgid "" +"Below is a detailed view of all data WP Rocket will collect if granted " +"permission. WP Rocket will never transmit any domain names or email " +"addresses (except for license validation), IP addresses, or third-party API " +"keys." +msgstr "" +"Abaixo está uma visão detalhada de todos os dados que WP Rocket irá coletar " +"se você der permissão. O WP Rocket nunca irá transmitir quaisquer nomes de " +"domínio ou endereços de e-mail (exceto para validação de licença), endereços" +" IP ou chaves de API de terceiros." + +#: inc/admin/ui/notices.php:619 +msgid "Yes, allow" +msgstr "Sim, permitir" + +#: inc/admin/ui/notices.php:622 +msgid "No, thanks" +msgstr "Não, obrigado" + +#: inc/admin/ui/notices.php:661 +msgid "Thank you!" +msgstr "Obrigado!" + +#: inc/admin/ui/notices.php:666 +msgid "WP Rocket now collects these metrics from your website:" +msgstr "O WP Rocket agora coleta estas métricas do seu website:" + +#: inc/admin/ui/notices.php:704 +#, php-format +msgid "%s: Cache cleared." +msgstr "%s: Cache limpo." + +#: inc/admin/ui/notices.php:711 +#, php-format +msgid "%s: Post cache cleared." +msgstr "%s: Cache do post limpo." + +#: inc/admin/ui/notices.php:718 +#, php-format +msgid "%s: Term cache cleared." +msgstr "%s: Cache de termos limpo." + +#: inc/admin/ui/notices.php:725 +#, php-format +msgid "%s: User cache cleared." +msgstr "%s: Cache de usuário limpo." + +#: inc/admin/ui/notices.php:771 +msgid "Stop Preload" +msgstr "Parar o Pré-carregamento" + +#: inc/admin/ui/notices.php:789 +msgid "Force deactivation " +msgstr "Forçar desativação " + +#: inc/admin/ui/notices.php:802 +msgid "The following code should have been written to this file:" +msgstr "O código a seguir deveria ter sido escrito neste arquivo:" + +#: inc/admin/ui/notices.php:833 +#, php-format +msgid "%s cannot configure itself due to missing writing permissions." +msgstr "" +"%s não pode se auto-configurar devido à falta de permissões de escrita." + +#: inc/admin/ui/notices.php:839 +#, php-format +msgid "Affected file/folder: %s" +msgstr "Arquivo/pasta afetado: %s" + +#: inc/classes/admin/Database/class-optimization.php:47 +msgid "Transients" +msgstr "Transientes" + +#: inc/classes/admin/Database/class-optimization.php:48 +msgid "Tables" +msgstr "Tabelas" + +#: inc/classes/admin/class-logs.php:124 +msgid "The debug file could not be deleted." +msgstr "Não foi possível excluir o arquivo de depuração." + +#: inc/classes/class-wp-rocket-requirements-check.php:147 +#, php-format +msgid "To function properly, %1$s %2$s requires at least:" +msgstr "Para funcionar corretamente o %1$s %2$s requer ao menos:" + +#: inc/classes/class-wp-rocket-requirements-check.php:151 +#, php-format +msgid "" +"PHP %1$s. To use this WP Rocket version, please ask your web host how to " +"upgrade your server to PHP %1$s or higher." +msgstr "" +"PHP %1$s. Para usar esta versão do WP Rocket, pergunte ao seu provedor como " +"atualizar o seu servidor para o PHP %1$s ou acima." + +#: inc/classes/class-wp-rocket-requirements-check.php:156 +#, php-format +msgid "" +"WordPress %1$s. To use this WP Rocket version, please upgrade WordPress to " +"version %1$s or higher." +msgstr "" +"WordPress %1$s. Para usar esta versão do WP Rocket, por favor atualize seu " +"WordPress para a versão %1$s ou acima." + +#: inc/classes/class-wp-rocket-requirements-check.php:159 +msgid "" +"If you are not able to upgrade, you can rollback to the previous version by " +"using the button below." +msgstr "" +"Se não puder atualizar, você ainda pode voltar para a versão anterior usando" +" o botão abaixo." + +#: inc/classes/class-wp-rocket-requirements-check.php:161 +#: inc/deprecated/deprecated.php:1947 +#, php-format +msgid "Re-install version %s" +msgstr "Reinstalar a versão %s" + +#: inc/classes/dependencies/wp-media/background-processing/wp-background-process.php:439 +#, php-format +msgid "Every %d Minutes" +msgstr "A cada %d minutos" + +#: inc/classes/logger/class-logger.php:254 +#: inc/classes/logger/class-logger.php:286 +msgid "The log file does not exist." +msgstr "O arquivo de registro não existe." + +#: inc/classes/logger/class-logger.php:260 +#: inc/classes/logger/class-logger.php:292 +msgid "The log file could not be read." +msgstr "Não foi possível ler o arquivo de registro." + +#: inc/classes/logger/class-logger.php:279 +msgid "The logs are not saved into a file." +msgstr "Os registros não foram salvos em um arquivo." + +#: inc/classes/subscriber/Cache/class-expired-cache-purge-subscriber.php:128 +msgid "WP Rocket Expired Cache Interval" +msgstr "Intervalo de cache expirado do WP Rocket" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:269 +#, php-format +msgid "" +"You are using %1$s to serve WebP images so you do not need to enable this " +"option. If you prefer to have WP Rocket serve WebP for you instead, please " +"disable them from serving in %1$s. %2$sMore info%3$s" +msgid_plural "" +"You are using %1$s to serve WebP images so you do not need to enable this " +"option. If you prefer to have WP Rocket serve WebP for you instead, please " +"disable them from serving in %1$s. %2$sMore info%3$s" +msgstr[0] "" +"Você está usando %1$s para servir imagens WebP então não precisa ativar esta" +" opção. Se preferir que o WP Rocket sirva WebP para você ao invés disso, " +"desative o serviço em %1$s. %2$sMais informações%3$s" +msgstr[1] "" +"Você está usando %1$s para servir imagens WebP então não precisa ativar esta" +" opção. Se preferir que o WP Rocket sirva WebP para você ao invés disso, " +"desative o serviço em %1$s. %2$sMais informações%3$s" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:280 +msgid "WebP cache is disabled by filter." +msgstr "O cache de WebP está desativado por filtro." + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:290 +#: inc/classes/subscriber/Media/class-webp-subscriber.php:316 +#, php-format +msgid "" +"You are using %1$s to convert images to WebP. If you want WP Rocket to serve" +" them for you, activate this option. %2$sMore info%3$s" +msgid_plural "" +"You are using %1$s to convert images to WebP. If you want WP Rocket to serve" +" them for you, activate this option. %2$sMore info%3$s" +msgstr[0] "" +"Você está usando %1$s para converter imagens para WebP. Se deseja que o WP " +"Rocket sirva elas para você, ative esta opção. %2$sMais informações%3$s" +msgstr[1] "" +"Você está usando %1$s para converter imagens para WebP. Se deseja que o WP " +"Rocket sirva elas para você, ative esta opção. %2$sMais informações%3$s" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:302 +#: inc/classes/subscriber/Media/class-webp-subscriber.php:328 +#, php-format +msgid "" +"You are using %1$s to convert images to WebP. WP Rocket will create separate" +" cache files to serve your WebP images. %2$sMore info%3$s" +msgid_plural "" +"You are using %1$s to convert images to WebP. WP Rocket will create separate" +" cache files to serve your WebP images. %2$sMore info%3$s" +msgstr[0] "" +"Você está usando %1$s para converter imagens para WebP. O WP Rocket irá " +"criar arquivos separados de cache para servir suas imagens WebP. %2$sMais " +"informações%3$s" +msgstr[1] "" +"Você está usando %1$s para converter imagens para WebP. O WP Rocket irá " +"criar arquivos separados de cache para servir suas imagens WebP. %2$sMais " +"informações%3$s" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:349 +#, php-format +msgid "" +"You don’t seem to be using a method to create and serve WebP that we are " +"auto-compatible with. If you are not using WebP do not enable this option. " +"%1$sMore info%2$s" +msgstr "" +"Você não parece estar usando um método para criar e servir WebP com que " +"sejamos compatíveis automaticamente. Se você não está usando WebP não ative " +"esta opção. %1$sMais informações%2$s" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:354 +msgid "We have not detected any compatible WebP plugin!" +msgstr "Não detectamos nenhum plugin compatível com WebP!" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:357 +#, php-format +msgid "" +"If you activate this option WP Rocket will create separate cache files to " +"serve WebP images. Any WebP images you have on your site will be served from" +" these files to compatible browsers. If you don’t already have WebP images " +"on your site consider using %1$sImagify%3$s or another supported plugin. " +"%2$sMore info%3$s" +msgstr "" +"Ativando esta opção o WP Rocket irá criar arquivos de cache separados para " +"servir imagens WebP. Quaisquer imagens WebP que tiver no seu site serão " +"servidas a partir destes arquivos para os navegadores compatíveis. Se você " +"ainda não tem imagens WebP no seu site, considere usar o %1$sImagify%3$s ou " +"algum outro plugin compatível. %2$sMais informação%3$s" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:369 +msgid "WP Rocket will create separate cache files to serve your WebP images." +msgstr "" +"O WP Rocket irá criar arquivos de cache separados para servir as suas " +"imagens WebP." + +#: inc/classes/subscriber/Tools/class-detect-missing-tags-subscriber.php:151 +#, php-format +msgid "" +"Failed to detect the following requirement in your theme: closing %1$s." +msgid_plural "" +"Failed to detect the following requirements in your theme: closing %1$s." +msgstr[0] "Falha ao detectar o seguinte requisito no seu tema: fechando %1$s." +msgstr[1] "" +"Falha ao detectar os seguintes requisitos no seu tema: fechando %1$s." + +#: inc/classes/subscriber/Tools/class-detect-missing-tags-subscriber.php:159 +msgid "" +"https://docs.wp-rocket.me/article/99-pages-not-cached-or-minify-cssjs-not-" +"working/?utm_source=wp_plugin&utm_medium=wp_rocket#theme" +msgstr "" +"https://docs.wp-rocket.me/article/99-pages-not-cached-or-minify-cssjs-not-" +"working/?utm_source=wp_plugin&utm_medium=wp_rocket#theme" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:98 +msgid "monthly" +msgstr "mensalmente" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:211 +msgid "Database optimization process is running" +msgstr "O processo de otimização do banco de dados está sendo executado" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:242 +msgid "" +"Database optimization process is complete. Everything was already optimized!" +msgstr "" +"O processo de otimização do banco de dados está concluído. Tudo já foi " +"otimizado!" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:245 +msgid "" +"Database optimization process is complete. List of optimized items below:" +msgstr "" +"O processo de otimização de banco de dados está concluído. Abaixo a lista " +"dos itens otimizados:" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:253 +#, php-format +msgid "%1$d %2$s optimized." +msgstr "%1$d %2$s otimizado." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:116 +#, php-format +msgid "Sucuri cache purge error: %s" +msgstr "Erro esvaziando o cache Sucuri: %s" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:121 +msgid "" +"The Sucuri cache is being cleared. Note that it may take up to two minutes " +"for it to be fully flushed." +msgstr "" +"O cache Sucuri está sendo esvaziado. Note que pode levar até dois minutos " +"para ele estar totalmente vazio." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:244 +msgid "Sucuri firewall API key was not found." +msgstr "A chave da API Sucuri não foi encontrada." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:256 +msgid "Sucuri firewall API key is invalid." +msgstr "A chave da API Sucuri é inválida." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:311 +msgid "Error when contacting Sucuri firewall API." +msgstr "Erro contactando a API de Firewall Sucuri." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:324 +#, php-format +msgid "Error when contacting Sucuri firewall API. Error message was: %s" +msgstr "Erro contactando a API de Firewall Sucuri. A mensagem de erro foi: %s" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:338 +msgid "Could not get a response from the Sucuri firewall API." +msgstr "Não foi possível obter resposta da API de Firewall Sucuri." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:352 +msgid "Got an invalid response from the Sucuri firewall API." +msgstr "Resposta inválida da API de Firewall Sucuri." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:365 +msgid "The Sucuri firewall API returned an unknown error." +msgstr "A API de Firewall Sucuri retornou um erro desconhecido." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:368 +#, php-format +msgid "The Sucuri firewall API returned the following error: %s" +msgid_plural "The Sucuri firewall API returned the following errors: %s" +msgstr[0] "A API do firewall Sucuri retornou o seguinte erro: %s" +msgstr[1] "A API do firewall Sucuri retornou os seguintes erros: %s" + +#: inc/classes/traits/trait-updater-api-tools.php:53 +#: inc/deprecated/3.3.php:761 inc/deprecated/3.3.php:770 +#, php-format +msgid "" +"An unexpected error occurred. Something may be wrong with WP-Rocket.me or " +"this server’s configuration. If you continue to have problems,
      contact support." +msgstr "" +"Ocorreu um erro inesperado. Algo pode estar errado com o WP-Rocket.me ou nas" +" configurações deste servidor. Se continuar a ter problemas contate o suporte." + +#: inc/common/admin-bar.php:125 inc/common/admin-bar.php:293 +#: inc/functions/i18n.php:41 inc/functions/i18n.php:51 +msgid "All languages" +msgstr "Todos os idiomas" + +#: inc/common/admin-bar.php:152 +msgid "Clear this post" +msgstr "Limpar este Post" + +#: inc/common/admin-bar.php:166 +msgid "Purge this URL" +msgstr "Esvaziar este URL" + +#: inc/common/admin-bar.php:192 +msgid "Purge OPcache" +msgstr "Esvaziar o OPcache" + +#: inc/common/admin-bar.php:210 +msgid "Clear Cloudflare cache" +msgstr "Limpar o Cache do Cloudflare" + +#: inc/common/admin-bar.php:228 +msgid "Purge Sucuri cache" +msgstr "Limpar cache Sucuri" + +#: inc/common/admin-bar.php:251 inc/common/admin-bar.php:305 +#: views/settings/page-sections/dashboard.php:163 +msgid "Preload cache" +msgstr "Pré-carregar o cache" + +#: inc/common/admin-bar.php:330 views/settings/fields/rocket-cdn.php:55 +msgid "Purge RocketCDN cache" +msgstr "Esvaziar o cache da RocketCDN" + +#: inc/common/admin-bar.php:343 views/settings/partials/documentation.php:14 +msgid "Documentation" +msgstr "Documentação" + +#: inc/common/purge.php:557 +msgid "OPcache purge failed." +msgstr "A limpeza do OPcache falhou" + +#: inc/common/purge.php:562 +msgid "OPcache successfully purged" +msgstr "O OPcache foi esvaziado com sucesso" + +#: inc/deprecated/3.2.php:52 views/settings/page-sections/imagify.php:36 +msgid "Activate Imagify" +msgstr "Ativar o Imagify" + +#: inc/deprecated/3.2.php:52 +msgid "Install Imagify for Free" +msgstr "Instale Gratuitamente o Imagify" + +#: inc/deprecated/3.2.php:67 +msgid "" +"Speed up your website and boost your SEO by reducing image file sizes " +"without losing quality with Imagify." +msgstr "" +"Acelere o seu site e turbine o seu SEO reduzindo o tamanho dos arquivos das " +"imagem sem perder qualidade com o Imagify." + +#: inc/deprecated/3.2.php:72 +msgid "More details" +msgstr "Mais detalhes" + +#: inc/deprecated/3.2.php:228 +#, php-format +msgid "Sitemap preload: %d pages have been cached." +msgstr "Pré-carregamento do sitemap: %d páginas foram armazenadas em cache." + +#: inc/deprecated/3.2.php:261 +#, php-format +msgid "" +"Sitemap preload: %d uncached pages have now been preloaded. (refresh to see " +"progress)" +msgstr "" +"Pré-carregamento do sitemap: %d páginas sem cache foram pré-carregadas. " +"(atualize a página para ver o progresso)" + +#: inc/deprecated/3.4.php:18 +msgid "Choose a domain from the list" +msgstr "Escolha um domínio da lista" + +#: inc/deprecated/3.4.php:31 +msgid "No domain available in your Cloudflare account" +msgstr "Nenhum domínio disponível na sua conta do Cloudflare" + +#: inc/deprecated/3.5.php:81 inc/deprecated/3.5.php:205 +msgid "" +"Curl is disabled on your server. Please ask your host to enable it. This is " +"required for the Cloudflare Add-on to work correctly." +msgstr "" +"O Curl está desativado no seu servidor. Peça ao seu provedor para ativá-lo. " +"Isso é necessário para que o complemento do Cloudflare funcione " +"corretamente." + +#: inc/deprecated/3.5.php:89 +#, php-format +msgid "" +"Cloudflare email, API key and Zone ID are not set. Read the " +"%1$sdocumentation%2$s for further guidance." +msgstr "" +"O e-mail, chave da API e ID da Zona não foram definidos. Leia a " +"%1$sdocumentação%2$spara mais assistência." + +#: inc/deprecated/3.5.php:216 +#, php-format +msgid "" +"Cloudflare email and API key are not set. Read the %1$sdocumentation%2$s for" +" further guidance." +msgstr "" +"O e-mail e a chave da API do Cloudflare nào estão definidos. Leia a " +"%1$sdocumentação%2$s para mais assistência." + +#: inc/deprecated/3.5.php:281 +msgid "Connection to Cloudflare failed" +msgstr "Falha na conexão com o Cloudflare" + +#: inc/deprecated/DeprecatedClassTrait.php:54 +#, php-format +msgid "" +"The called class %1$s is deprecated since version %2$s! Use" +" %3$s instead." +msgstr "" +"A classe solicitda %1$s está obsolet desde a versão %2$s! " +"Use %3$s ao invés dela." + +#: inc/deprecated/DeprecatedClassTrait.php:65 +#, php-format +msgid "" +"The called class %1$s is deprecated since version %2$s!" +msgstr "" +"A classe solicitada %1$s está obsoleta desde a versão %2$s!" + +#: inc/deprecated/deprecated.php:240 +msgid "JS files with Deferred Loading JavaScript" +msgstr "Arquivos JS com Carregamento Adiado de JavaScript" + +#: inc/deprecated/deprecated.php:293 +msgid "Add URL" +msgstr "Adicionar URL" + +#: inc/deprecated/deprecated.php:1277 views/settings/fields/import-form.php:22 +msgid "" +"Before you can upload your import file, you will need to fix the following " +"error:" +msgstr "" +"Antes de poder enviar seu arquivo de importação você precisa corrigir o " +"seguinte erro:" + +#: inc/deprecated/deprecated.php:1288 views/settings/fields/import-form.php:35 +#, php-format +msgid "Choose a file from your computer (maximum size: %s)" +msgstr "Escolha um arquivo do seu computador (tamanho máximo: %s)" + +#: inc/deprecated/deprecated.php:1385 +msgid "Your Cloudflare credentials are valid." +msgstr "Suas credenciais do Cloudflare são válidas." + +#: inc/deprecated/deprecated.php:1389 +msgid "Your Cloudflare credentials are invalid!" +msgstr "Suas credenciais do Cloudflare são inválidas!" + +#: inc/deprecated/deprecated.php:1453 +msgid "Save and optimize" +msgstr "Salvar e otimizar" + +#: inc/deprecated/deprecated.php:1453 +msgid "Optimize" +msgstr "Otimizar" + +#: inc/deprecated/deprecated.php:1464 inc/deprecated/deprecated.php:1666 +msgctxt "screen-reader-text" +msgid "Note:" +msgstr "Nota:" + +#: inc/deprecated/deprecated.php:1470 +msgctxt "screen-reader-text" +msgid "Performance tip:" +msgstr "Dica de desempenho:" + +#: inc/deprecated/deprecated.php:1476 +msgctxt "screen-reader-text" +msgid "Third-party feature detected:" +msgstr "Recurso de terceiro detectado:" + +#: inc/deprecated/deprecated.php:1488 inc/deprecated/deprecated.php:1672 +msgctxt "screen-reader-text" +msgid "Warning:" +msgstr "Alerta:" + +#: inc/deprecated/deprecated.php:1501 +msgctxt "button text" +msgid "Download settings" +msgstr "Baixar as configurações" + +#: inc/deprecated/deprecated.php:1531 +msgid "Replace site's hostname with:" +msgstr "Substituir o nome do host do site por:" + +#: inc/deprecated/deprecated.php:1550 inc/deprecated/deprecated.php:1587 +#: inc/deprecated/deprecated.php:1615 views/settings/fields/cnames.php:32 +#: views/settings/fields/cnames.php:64 views/settings/fields/cnames.php:94 +msgid "reserved for" +msgstr "reservado para" + +#: inc/deprecated/deprecated.php:1552 inc/deprecated/deprecated.php:1589 +#: inc/deprecated/deprecated.php:1617 views/settings/fields/cnames.php:35 +#: views/settings/fields/cnames.php:67 views/settings/fields/cnames.php:97 +msgid "All files" +msgstr "Todos os arquivos" + +#: inc/deprecated/deprecated.php:1564 inc/deprecated/deprecated.php:1594 +#: inc/deprecated/deprecated.php:1622 views/settings/fields/cnames.php:47 +#: views/settings/fields/cnames.php:79 views/settings/fields/cnames.php:109 +msgid "Images" +msgstr "Imagens" + +#: inc/deprecated/deprecated.php:1635 views/settings/fields/cnames.php:120 +msgid "Add CNAME" +msgstr "Adicionar CNAME" + +#: inc/deprecated/deprecated.php:1706 views/settings/partials/sidebar.php:16 +msgid "Watch the video" +msgstr "Assista ao vídeo" + +#: inc/deprecated/deprecated.php:1771 +msgid "Basic" +msgstr "Básico" + +#: inc/deprecated/deprecated.php:1772 +msgid "Static Files" +msgstr "Arquivos Estáticos" + +#: inc/deprecated/deprecated.php:1774 +msgid "Advanced" +msgstr "Avançado" + +#: inc/deprecated/deprecated.php:1944 +#, php-format +msgid "" +"%1$s %2$s requires at least PHP %3$s to function properly. To use this " +"version, please ask your web host how to upgrade your server to PHP %3$s or " +"higher. If you are not able to upgrade, you can rollback to the previous " +"version by using the button below." +msgstr "" +"%1$s %2$s requer pelo menos o PHP %3$s para funcionar corretamente. Para " +"usar esta versão, por favor pergunte ao seu provedor de hospedagem como " +"atualizar o seu servidor para o PHP %3$s ou acima. Se você não é capaz de " +"atualizar, pode reverter o plugin para a versão anterior usando o botão " +"abaixo." + +#: inc/functions/admin.php:23 +msgid "" +"There seems to be an issue validating your license. Please see the error " +"message below." +msgid_plural "" +"There seems to be an issue validating your license. You can see the error " +"messages below." +msgstr[0] "" +"Parece que houve um problema validando a sua licensa. Por favor veja as " +"mensagens de erro abaixo." +msgstr[1] "" +"Parece que houve um problema validando a sua licença. Por favor veja a " +"mensagem de erro abaixo." + +#: inc/functions/admin.php:363 +msgid "Server type:" +msgstr "Tipo de servidor:" + +#: inc/functions/admin.php:372 +msgid "PHP version number:" +msgstr "Número da versão do PHP:" + +#: inc/functions/admin.php:381 +msgid "WordPress version number:" +msgstr "Número da versão do WordPress:" + +#: inc/functions/admin.php:390 +msgid "WordPress multisite:" +msgstr "WordPress Multisite:" + +#: inc/functions/admin.php:399 +msgid "Current theme:" +msgstr "Tema atual:" + +#: inc/functions/admin.php:408 +msgid "Current site language:" +msgstr "Idioma atual do site:" + +#: inc/functions/admin.php:417 +msgid "Active plugins:" +msgstr "Plugins ativos:" + +#: inc/functions/admin.php:420 +msgid "Plugin names of all active plugins" +msgstr "Nomes de todos os plugins ativos" + +#: inc/functions/admin.php:426 +msgid "Anonymized WP Rocket settings:" +msgstr "Configurações anonimizadas do WP Rocket:" + +#: inc/functions/admin.php:429 +msgid "Which WP Rocket settings are active" +msgstr "Quais configurações do WP Rocket estão ativas" + +#: inc/functions/options.php:549 inc/functions/options.php:588 +msgid "" +"License validation failed. Our server could not resolve the request from " +"your website." +msgstr "" +"Falha na validação da licença. Nosso servidor não pôde resolver a " +"solicitação do seu website." + +#: inc/functions/options.php:549 inc/functions/options.php:588 +#, php-format +msgid "" +"Try clicking %1$sSave Changes%2$s below. If the error persists, follow " +"%3$sthis guide%4$s." +msgstr "" +"Experimente clicar abaixo em %1$sSalvar Alterações%2$s. Se o erro persistir," +" siga %3$seste guia%4$s." + +#: inc/functions/options.php:565 +msgid "" +"License validation failed. You may be using a nulled version of the plugin. " +"Please do the following:" +msgstr "" +"Falha na validação da licença. Você pode estar usando uma versão " +"desatualizada do plugin. Faça o seguinte:" + +#: inc/functions/options.php:565 inc/functions/options.php:607 +#, php-format +msgid "Login to your WP Rocket %1$saccount%2$s" +msgstr "Conecte-se à sua %1$sconta%2$s do WP Rocket" + +#: inc/functions/options.php:565 inc/functions/options.php:607 +msgid "Download the zip file" +msgstr "Baixe o arquivo zip" + +#: inc/functions/options.php:565 inc/functions/options.php:607 +msgid "Reinstall" +msgstr "Reinstalar" + +#: inc/functions/options.php:565 +#, php-format +msgid "" +"If you do not have a WP Rocket account, please %1$spurchase a license%2$s." +msgstr "Se você não tem uma conta do WP Rocket, %1$scompre uma licença%2$s." + +#: inc/functions/options.php:573 +msgid "" +"License validation failed. This user account does not exist in our database." +msgstr "" +"A validação da licença falhou: Esta conta de usuário não existe em nosso " +"banco de dados." + +#: inc/functions/options.php:573 +msgid "To resolve, please contact support." +msgstr "Contacte o suporte para solucionar." + +#: inc/functions/options.php:581 +msgid "License validation failed. This user account is blocked." +msgstr "A validação da licença falhou. Esta conta de usuário está bloqueada." + +#: inc/functions/options.php:581 +#, php-format +msgid "Please see %1$sthis guide%2$s for more info." +msgstr "Veja %1$seste guia%2$spara mais informações." + +#: inc/functions/options.php:601 +msgid "Your license is not valid." +msgstr "Sua licença não é válida." + +#: inc/functions/options.php:601 +#, php-format +msgid "Make sure you have an active %1$sWP Rocket license%2$s." +msgstr "Certifique-se de ter uma %1$slicença ativa do WP Rocket%2$s." + +#: inc/functions/options.php:603 +msgid "You have added as many sites as your current license allows." +msgstr "" +"Você já adicionou o máximo de sites permitidos para a sua licença atual." + +#: inc/functions/options.php:603 +#, php-format +msgid "" +"Upgrade your %1$saccount%2$s or %3$stransfer your license%2$s to this " +"domain." +msgstr "" +"Atualize sua %1$sconta%2$s ou %3$stransfira a sua licença%2$s para este " +"domínio." + +#: inc/functions/options.php:605 +msgid "This website is not allowed." +msgstr "Este website não é permitido." + +#: inc/functions/options.php:605 +#, php-format +msgid "Please %1$scontact support%2$s." +msgstr "Por favor %1$scontacte o suporte%2$s." + +#: inc/functions/options.php:607 +msgid "This license key is not recognized." +msgstr "Esta chave de licença não foi reconhecida." + +#: inc/functions/options.php:607 +#, php-format +msgid "If the issue persists, please %1$scontact support%2$s." +msgstr "Se o problema persistir, %1$scontacte o suporte%2$s." + +#: inc/functions/options.php:613 +#, php-format +msgid "License validation failed: %s" +msgstr "A validação da licença falhou: %s" + +#: inc/vendors/classes/class-imagify-partner.php:531 +msgid "Plugin installed successfully." +msgstr "Plugin instalado com sucesso." + +#: inc/vendors/classes/class-imagify-partner.php:532 +msgid "Sorry, you are not allowed to install plugins on this site." +msgstr "Você não pode instalar plugins neste site." + +#: inc/vendors/classes/class-imagify-partner.php:533 +msgid "Sorry, you are not allowed to do that." +msgstr "Você não pode fazer isso." + +#: inc/vendors/classes/class-imagify-partner.php:534 +msgid "Plugin install failed." +msgstr "A instalação do plugin falhou." + +#: inc/vendors/classes/class-imagify-partner.php:535 +msgid "Go back" +msgstr "Voltar" + +#: views/cpcss/activate-cpcss-mobile.php:13 +msgid "Optimize CSS delivery for mobile" +msgstr "Otimizar a entrega do CSS para dispositivos móveis" + +#: views/cpcss/activate-cpcss-mobile.php:14 +msgid "" +"Your website currently uses the same Critical Path CSS for both desktop and " +"mobile." +msgstr "" +"O seu site atualmente usa o mesmo CSS de caminho crítico para desktop e " +"dispositivos móveis." + +#: views/cpcss/activate-cpcss-mobile.php:15 +msgid "Click the button to enable mobile-specific CPCSS for your site." +msgstr "" +"Clique no botão para ativar o CPCSS específico para dispositivos móveis no " +"seu site." + +#: views/cpcss/activate-cpcss-mobile.php:20 +#: views/settings/enable-google-fonts.php:19 +#, php-format +msgid "" +"This is a one-time action and this button will be removed afterwards. " +"%1$sMore info%2$s" +msgstr "" +"Esta é uma ação única e este botão será removido em seguida. %1$sMais " +"informações%2$s" + +#: views/cpcss/activate-cpcss-mobile.php:30 +#, php-format +msgid "" +"Your site is now using mobile-specific critical path CSS. %1$sMore info%2$s" +msgstr "" +"O seu site agora esta usando CSS de caminho crítico específico para " +"dispositivos móveis. %1$sMais informações%2$s" + +#: views/cpcss/activate-cpcss-mobile.php:39 +msgid "Generate Mobile Specific CPCSS" +msgstr "Gerar CPCSS específico para dispositivos móveis" + +#: views/cpcss/metabox/container.php:19 +msgid "Critical Path CSS" +msgstr "CSS do caminho crítico" + +#: views/cpcss/metabox/generate.php:23 +#, php-format +msgid "Generate specific Critical Path CSS for this post. %1$sMore info%2$s" +msgstr "" +"Gera o CSS de caminho crítico específico para este post. %1$sMais " +"informações%2$s" + +#: views/cpcss/metabox/generate.php:33 +#, php-format +msgid "This post uses specific Critical Path CSS. %1$sMore info%2$s" +msgstr "" +"Este post usa CSS de caminho crítico específico. %1$sMais informações%2$s " + +#: views/cpcss/metabox/generate.php:56 +msgid "Revert back to the default CPCSS" +msgstr "Reverter de volta para o CPCSS padrão" + +#: views/deactivation-intent/form.php:21 +msgid "Return" +msgstr "Retornar" + +#: views/deactivation-intent/form.php:22 +msgid "WP Rocket feedback" +msgstr "Feedback do WP Rocket" + +#: views/deactivation-intent/form.php:24 +msgid "Close" +msgstr "Fechar" + +#: views/deactivation-intent/form.php:28 +msgid "May we have a little info about why you are deactivating?" +msgstr "Podemos ter alguma informação porque está desativando?" + +#: views/deactivation-intent/form.php:35 +#, php-format +msgid "%1$sIt is a temporary deactivation.%2$s I am just debugging an issue." +msgstr "%1$sÉ uma desativação temporária.%2$s Estou depurando um problema." + +#: views/deactivation-intent/form.php:44 +#, php-format +msgid "The plugin %1$sbroke my layout%2$s or some functionality." +msgstr "O plugin %1$squebrou o meu layout%2$s ou alguma funcionalidade." + +#: views/deactivation-intent/form.php:53 +#, php-format +msgid "My PageSpeed or GTMetrix %1$sscore did not improve.%2$s" +msgstr "Meu resultado no PageSpeed ou GTMetrix %1$snão melhorou%2$s" + +#: views/deactivation-intent/form.php:59 +msgid "I did not notice a difference in loading time." +msgstr "Não percebi diferença no tempo de carregamento." + +#: views/deactivation-intent/form.php:66 +#, php-format +msgid "The plugin is %1$stoo complicated to configure.%2$s" +msgstr "O plugin é %1$smuito complicado de configurar%2$s" + +#: views/deactivation-intent/form.php:72 +msgid "My host already has its own caching system." +msgstr "Meu host já tem seu próprio sistema de cache." + +#: views/deactivation-intent/form.php:74 +msgid "What is the name of your web host?" +msgstr "Qual é o nome do seu web host?" + +#: views/deactivation-intent/form.php:79 +msgid "Other" +msgstr "Outro" + +#: views/deactivation-intent/form.php:81 +msgid "" +"Let us know why you are deactivating WP Rocket so we can improve the plugin" +msgstr "" +"Informe por que está desativando o WP Rocket para que possamos melhorar o " +"plugin" + +#: views/deactivation-intent/form.php:89 +msgid "The plugin broke my layout or some functionality" +msgstr "O plugin quebrou o meu layout ou alguma funcionalidade" + +#: views/deactivation-intent/form.php:90 +msgid "" +"This type of issue can usually be fixed by deactivating some options in WP " +"Rocket." +msgstr "" +"Este tipo de erro pode ser consertado desativando algumas opções do WP " +"Rocket." + +#: views/deactivation-intent/form.php:91 +msgid "" +"Click \"Apply Safe Mode\" to quickly disable LazyLoad, File Optimization, " +"Embeds and CDN options. Then check your site to see if the issue has " +"resolved." +msgstr "" +"Clique em “Aplicar Modo Seguro” para desabilitar rapidamente as opções de " +"LazyLoad, Otimização de Arquivos, Incorporações e CDN. Verifique então ou " +"seu site para ver se o problema foi resolvido." + +#: views/deactivation-intent/form.php:93 +msgid "Apply safe mode" +msgstr "Aplicar o modo seguro" + +#: views/deactivation-intent/form.php:96 +msgid "Safe mode applied." +msgstr "Modo seguro aplicado." + +#: views/deactivation-intent/form.php:97 +msgid "Review your site in a private/logged out browser window." +msgstr "Reveja o seu site em uma janela privativa/sem login no seu navegador." + +#: views/deactivation-intent/form.php:102 +#, php-format +msgid "" +"Is the issue fixed? Now you can reactivate options one at a time to " +"determine which one caused the problem. %1$sMore info%2$s" +msgstr "" +"O problema foi resolvido? Agora você pode reativar uma opção de cada vez " +"para determinar qual delas causou o problema. %1$sMais informações%2$s" + +#: views/deactivation-intent/form.php:107 +msgid "My PageSpeed or GT Metrix score did not improve" +msgstr "Meu score no PageSpeed ou GTMetrix não melhorou" + +#: views/deactivation-intent/form.php:108 +msgid "" +"WP Rocket makes your site faster. The PageSpeed grade or GTMetrix score are " +"not indicators of speed. Neither your real visitors, nor Google will ever " +"see your website’s “grade”. Speed is the only metric that matters for SEO " +"and conversions." +msgstr "" +"O WP Rocket deixa seu site mais rápido. O score do PageSpeed ou GTMetrix não" +" indicam velocidade. Nem seus visitantes reais nem o Google jamais irão " +"olhar o seu “score”. Velocidade é a única métrica que importa para SEO e " +"conversões." + +#: views/deactivation-intent/form.php:109 +msgid "Yoast, the expert on all things related to SEO for WordPress states:" +msgstr "Yoast, o especialista em tudo que se relata ao SEO em WordPress, diz:" + +#: views/deactivation-intent/form.php:110 +msgid "" +"[Google] just looks at how fast your website loads for users, so you don’t " +"have to obsess over that specific score. You have to make sure your website " +"is as fast as you can get it." +msgstr "" +"[Google] apenas olha a velocidade que o seu site carrega para os usuários, " +"então não fique obcecado com um score. Você precisa ter certeza que o seu " +"website está tão rápido quanto possível." + +#: views/deactivation-intent/form.php:116 +#, php-format +msgid "" +"How to measure the load time of your site: %1$shttps://wp-rocket.me/blog" +"/correctly-measure-websites-page-load-time/%2$s" +msgstr "" +"Como medir o tempo de carregamento do seu site: %1$shttps://wp-" +"rocket.me/blog/correctly-measure-websites-page-load-time/%2$s" + +#: views/deactivation-intent/form.php:122 +#, php-format +msgid "" +"Why you should not be chasing a PageSpeed score: %1$shttps://wp-" +"rocket.me/blog/the-truth-about-google-pagespeed-insights/%2$s" +msgstr "" +"Por que você não deve ficar caçando um resultado no PageSpeed: %1$shttps" +"://wp-rocket.me/blog/the-truth-about-google-pagespeed-insights/%2$s" + +#: views/deactivation-intent/form.php:127 +msgid "I did not notice a difference in loading time" +msgstr "Não percebi uma diferença no tempo de carregamento" + +#: views/deactivation-intent/form.php:128 +msgid "" +"Make sure you look at your site while logged out to see the fast, cached " +"pages!" +msgstr "" +"Certifique-se olhar seu site sem conectar-se para ver as páginas rápidas do " +"cache!" + +#: views/deactivation-intent/form.php:132 +#, php-format +msgid "" +"The best way to see the improvement WP Rocket provides is to perform speed " +"tests. Follow this guide to correctly measure the load time of your website:" +" %1$shttps://wp-rocket.me/blog/correctly-measure-websites-page-load-" +"time/%2$s" +msgstr "" +"A melhor maneira de ver a melhoria promovida pelo WP Rocket é fazer testes " +"de velocidade. Siga este guia para medir corretamente o tempo de " +"carregamento do seu site: %1$shttps://wp-rocket.me/blog/correctly-measure-" +"websites-page-load-time/%2$s" + +#: views/deactivation-intent/form.php:137 +msgid "The plugin is too complicated to configure" +msgstr "O plugin é muito complicado de configurar" + +#: views/deactivation-intent/form.php:138 +msgid "We are sorry to hear you are finding it difficult to use WP Rocket." +msgstr "Lamentamos saber que você está achando difícil usar o WP Rocket." + +#: views/deactivation-intent/form.php:139 +#, php-format +msgid "" +"WP Rocket is the only caching plugin that provides 80% of best practices in " +"speed optimization, by default. That means you do not have to do anything " +"besides activate WP Rocket and your site will already be faster!" +msgstr "" +"O WP Rocket é o único plugin de cache que fornece 80% das melhores práticas " +"em otimização da velocidade, por padrão. Isso quer dizer que você não " +"precisa de nada além de ativar o WP Rocket e o seu site já vai estar mais " +"rápido!" + +#: views/deactivation-intent/form.php:140 +msgid "" +"The additional options are not required for a fast site, they are for fine-" +"tuning." +msgstr "" +"As opções adicionais não são necessárias para um site rápido, são ajustes " +"finos." + +#: views/deactivation-intent/form.php:144 +#, php-format +msgid "" +"To see the benefit WP Rocket is already providing, measure the speed of your" +" site using a tool like Pingdom: %1$shttps://wp-rocket.me/blog/correctly-" +"measure-websites-page-load-time/%2$s" +msgstr "" +"Para ver o benefício que o WP Rocket já está promovendo, faça uma medição da" +" velocidade do seu site usando uma ferrametna como o Pingdom: %1$shttps" +"://wp-rocket.me/blog/correctly-measure-websites-page-load-time/%2$s" + +#: views/deactivation-intent/form.php:151 +msgid "Send & Deactivate" +msgstr "Enviar e Desativar" + +#: views/deactivation-intent/form.php:152 +msgid "Cancel" +msgstr "Cancelar" + +#: views/deactivation-intent/form.php:154 +msgid "Skip & Deactivate" +msgstr "Pular e Desativar" + +#: views/settings/enable-google-fonts.php:13 +msgid "Enable Google Font Optimization" +msgstr "Ativar a otimização das Fontes Google" + +#: views/settings/enable-google-fonts.php:14 +msgid "" +"Improves font performance and combines multiple font requests to reduce the " +"number of HTTP requests." +msgstr "" +"Melhora o desempenho das fontes e combina múltiplas requisições de fonte " +"para reduzir o número de requisições HTTP." + +#: views/settings/enable-google-fonts.php:29 +#, php-format +msgid "" +"Google Fonts Optimization is now enabled for your site. %1$sMore info%2$s" +msgstr "" +"A otimização das fontes Google está ativada neste site. %1$sMais " +"informações%2$s" + +#: views/settings/enable-google-fonts.php:38 +msgid "Optimize Google Fonts" +msgstr "Otimizar Fontes Google" + +#: views/settings/fields/cache-lifespan.php:26 +msgid "Clear cache after" +msgstr "Limpar o cache após" + +#: views/settings/fields/cnames.php:49 views/settings/fields/cnames.php:81 +#: views/settings/fields/cnames.php:111 +msgid "CSS & JavaScript" +msgstr "CSS e JavaScript" + +#: views/settings/fields/cnames.php:50 views/settings/fields/cnames.php:82 +#: views/settings/fields/cnames.php:112 +msgid "JavaScript" +msgstr "JavaScript" + +#: views/settings/fields/cnames.php:51 views/settings/fields/cnames.php:83 +#: views/settings/fields/cnames.php:113 +msgid "CSS" +msgstr "CSS" + +#: views/settings/fields/import-form.php:29 +msgid "Import settings" +msgstr "Importar configurações" + +#: views/settings/fields/one-click-addon.php:40 +#: views/settings/fields/rocket-addon.php:31 +#: views/settings/fields/sliding-checkbox.php:25 views/settings/page.php:55 +msgctxt "Active state of checkbox" +msgid "On" +msgstr "Sim" + +#: views/settings/fields/one-click-addon.php:41 +#: views/settings/fields/rocket-addon.php:32 +#: views/settings/fields/sliding-checkbox.php:26 views/settings/page.php:56 +msgctxt "Inactive state of checkbox" +msgid "Off" +msgstr "Não" + +#: views/settings/fields/one-click-addon.php:42 +#: views/settings/fields/rocket-addon.php:33 +msgid "Add-on status" +msgstr "Status do complemento" + +#: views/settings/fields/rocket-addon.php:56 +msgid "Modify options" +msgstr "Modificar opções" + +#: views/settings/fields/rocket-cdn.php:29 +#: views/settings/fields/rocket-cdn.php:41 +msgid "CDN CNAME" +msgstr "CNAME do CDN" + +#: views/settings/fields/rocket-cdn.php:62 +#, php-format +msgid "Purges RocketCDN cached resources for your website. %s" +msgstr "Esvazia os recursos no cache da RocketCDN para o seu site. %s" + +#: views/settings/fields/rocket-cdn.php:63 +#: views/settings/page-sections/cloudflare.php:36 +#: views/settings/page-sections/sucuri.php:37 +msgid "Learn more" +msgstr "Saiba mais" + +#: views/settings/fields/rocket-cdn.php:72 +msgid "Clear all RocketCDN cache files" +msgstr "Limpar todos os arquivos do cache da RocketCDN" + +#: views/settings/page-sections/cloudflare.php:27 +msgid "Cloudflare Cache" +msgstr "Cache do Cloudflare" + +#: views/settings/page-sections/cloudflare.php:35 +#: views/settings/page-sections/sucuri.php:36 +#, php-format +msgid "Purges cached resources for your website. %s" +msgstr "Esvazia os ítens em cache no seu site. %s" + +#: views/settings/page-sections/cloudflare.php:36 +msgid "https://support.cloudflare.com/hc/en-us/articles/200169246" +msgstr "https://support.cloudflare.com/hc/en-us/articles/200169246" + +#: views/settings/page-sections/cloudflare.php:45 +msgid "Clear all Cloudflare cache files" +msgstr "Limpar todos os arquivos do cache do Cloudflare" + +#: views/settings/page-sections/dashboard.php:38 +msgid "Congratulations!" +msgstr "Parabéns!" + +#: views/settings/page-sections/dashboard.php:40 +msgid "WP Rocket is now activated and already working for you." +msgstr "O WP Rocket está ativo e já está trabalhando para você." + +#: views/settings/page-sections/dashboard.php:42 +msgid "Your website should be loading faster now!" +msgstr "Seu site já deve estar carregando mais rápido!" + +#: views/settings/page-sections/dashboard.php:44 +#, php-format +msgid "" +"To guarantee fast websites, WP Rocket applies 80% of web performance best " +"practices." +msgstr "" +"Para garantir sites mais rápidos o WP Rocket aplica 80% das melhores " +"práticas de desempenho na web." + +#: views/settings/page-sections/dashboard.php:44 +msgid "" +"We also enable options that provide immediate benefits to your website." +msgstr "" +"Também ativamos opções que permitem benefícios imediatos para o seu site." + +#: views/settings/page-sections/dashboard.php:45 +msgid "Continue to the options to further optimize your site!" +msgstr "Continue para as opções para otimizar ainda mais o seu site!" + +#: views/settings/page-sections/dashboard.php:62 +msgid "My Account" +msgstr "Minha Conta" + +#: views/settings/page-sections/dashboard.php:68 +msgid "Refresh info" +msgstr "Atualizar informações" + +#: views/settings/page-sections/dashboard.php:93 +msgid "Expiration Date" +msgstr "Data de Expiração" + +#: views/settings/page-sections/dashboard.php:103 +msgid "View my account" +msgstr "Ver a minha conta" + +#: views/settings/page-sections/dashboard.php:130 +msgid "Quick Actions" +msgstr "Ações Rápidas" + +#: views/settings/page-sections/dashboard.php:137 +msgid "Remove all cached files" +msgstr "Remover todos os arquivos em cache" + +#: views/settings/page-sections/dashboard.php:157 +msgid "Start cache preloading" +msgstr "Iniciar pré-carregamento do cache" + +#: views/settings/page-sections/dashboard.php:183 +msgid "Purge OPCache content" +msgstr "Esvaziar o conteúdo do OPCache" + +#: views/settings/page-sections/dashboard.php:189 +msgid "Purge OPCache" +msgstr "Esvaziar o OPCache" + +#: views/settings/page-sections/dashboard.php:200 +#: views/settings/page-sections/dashboard.php:206 +msgid "Regenerate Critical CSS" +msgstr "Regenerar CSS Crítico" + +#: views/settings/page-sections/dashboard.php:223 +msgid "Frequently Asked Questions" +msgstr "Dúvidas Frequentes" + +#: views/settings/page-sections/dashboard.php:236 +msgid "Still cannot find a solution?" +msgstr "Ainda não consegue achar uma solução?" + +#: views/settings/page-sections/dashboard.php:237 +msgid "" +"Submit a ticket and get help from our friendly and knowledgeable Rocketeers." +msgstr "" +"Envie um ticket e obtenha ajuda dos nossos amigos Rocketeers experientes." + +#: views/settings/page-sections/dashboard.php:245 +msgid "Ask support" +msgstr "Solicite suporte" + +#: views/settings/page-sections/database.php:25 +msgid "Backup your database before you run a cleanup!" +msgstr "Faça um backup do seu banco de dados antes de executar uma limpeza!" + +#: views/settings/page-sections/database.php:26 +msgid "" +"Once a database optimization has been performed, there is no way to undo it." +msgstr "" +"Uma vez que a otimização do banco de dados é feita, não há como desfazê-la." + +#: views/settings/page-sections/database.php:28 +msgid "Save Changes and Optimize" +msgstr "Salvar alterações e otimizar" + +#: views/settings/page-sections/imagify.php:21 +#, php-format +msgid "" +"%1$sWP ROCKET%2$s created %3$sIMAGIFY%4$s %1$sfor best-in-class image " +"optimization.%2$s" +msgstr "" +"%1$sWP ROCKET%2$s criou %3$sIMAGIFY%4$s %1$spara melhor otimização de " +"imagens.%2$s" + +#: views/settings/page-sections/imagify.php:24 +msgid "" +"Compress image to make your website faster, all while maintaining image " +"quality." +msgstr "" +"Comprime imagens para tornar seu site mais rápido, mantendo a qualidade da " +"imagem." + +#: views/settings/page-sections/imagify.php:25 +msgid "More on Imagify:" +msgstr "Mais sobre o Imagify:" + +#: views/settings/page-sections/imagify.php:27 +msgid "Imagify Plugin Page" +msgstr "Página do Plugin Imagify" + +#: views/settings/page-sections/imagify.php:28 +msgid "Imagify Website" +msgstr "Website do Imagify" + +#: views/settings/page-sections/imagify.php:29 +msgid "Review of Image Compression Plugins" +msgstr "Análise dos Plugins de Compressão de Imagem" + +#: views/settings/page-sections/imagify.php:38 +msgid "Install Imagify" +msgstr "Instalar o Imagify" + +#: views/settings/page-sections/license.php:22 +msgid "WP Rocket was not able to automatically validate your license." +msgstr "O WP Rocket não conseguiu validar automaticamente a sua licença." + +#: views/settings/page-sections/license.php:29 +#, php-format +msgid "Follow this %1$s, or contact %2$s to get the engine started." +msgstr "Siga este %1$s, ou entre em contat com %2$s para iniciar o mecanismo." + +#: views/settings/page-sections/license.php:32 +#, php-format +msgid "%1$s%2$s%3$stutorial%4$s" +msgstr "%1$s%2$s%3$stutorial%4$s" + +#: views/settings/page-sections/license.php:34 +msgid "" +"https://docs.wp-rocket.me/article/100-resolving-problems-with-license-" +"validation/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://docs.wp-rocket.me/article/100-resolving-problems-with-license-" +"validation/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: views/settings/page-sections/license.php:40 +#, php-format +msgid "%1$s%2$s%3$ssupport%4$s" +msgstr "%1$s%2$s%3$ssuporte%4$s" + +#: views/settings/page-sections/sucuri.php:46 +msgid "Clear all Sucuri cache files" +msgstr "Limpar todos os arquivos do cache Sucuri" + +#: views/settings/page-sections/tools.php:20 +#, php-format +msgid "Files size: %1$s. Number of entries: %2$s." +msgstr "Tamanho do arquivo: %1$s. Número de entradas: %2$s." + +#: views/settings/page-sections/tools.php:23 +#, php-format +msgid "%1$sDownload the file%2$s." +msgstr "%1$sBaixar o arquivo%2$s." + +#: views/settings/page-sections/tools.php:26 +#, php-format +msgid "%1$sDelete the file%2$s." +msgstr "%1$sExcluir o arquivo%2$s." + +#: views/settings/page-sections/tools.php:37 +msgid "Export settings" +msgstr "Exportar as configurações" + +#: views/settings/page-sections/tools.php:38 +msgid "Download a backup file of your settings" +msgstr "Baixar um backup das suas configurações" + +#: views/settings/page-sections/tools.php:46 +msgid "Download settings" +msgstr "Baixar as configurações" + +#: views/settings/page-sections/tools.php:60 +msgid "Rollback" +msgstr "Reverter" + +#: views/settings/page-sections/tools.php:64 +#, php-format +msgid "Has version %s caused an issue on your website?" +msgstr "A versão %s causou algum problema no seu site?" + +#: views/settings/page-sections/tools.php:69 +#, php-format +msgid "" +"You can rollback to the previous major version here.%sThen send us a support" +" request." +msgstr "" +"Você pode voltar atrás para a última versão estável aqui. %sEnvie em seguida" +" um pedido de suporte." + +#: views/settings/page-sections/tools.php:80 +#, php-format +msgid "Reinstall version %s" +msgstr "Reinstalar a versão %s" + +#: views/settings/page-sections/tools.php:106 +msgid "Debug mode" +msgstr "Módo de depuração" + +#: views/settings/page-sections/tools.php:111 +msgid "Create a debug log file." +msgstr "Criar um arquivo de registro de depuração." + +#: views/settings/page-sections/tutorials.php:13 +#: views/settings/partials/getting-started.php:18 +msgid "Getting Started" +msgstr "Comece a usar" + +#: views/settings/page-sections/tutorials.php:15 +msgid "Getting Started with WP Rocket" +msgstr "Começando a usar o WP Rocket" + +#: views/settings/page-sections/tutorials.php:16 +#: views/settings/partials/getting-started.php:12 +msgid "Finding the Best Settings for Your Site" +msgstr "Encontrando as melhores configurações para o seu site" + +#: views/settings/page-sections/tutorials.php:17 +#: views/settings/partials/getting-started.php:13 +msgid "How to Check if WP Rocket is Caching Your Site" +msgstr "Como verificar se o WP Rocket está fazendo cache do seu site" + +#: views/settings/page-sections/tutorials.php:18 +#: views/settings/partials/getting-started.php:14 +msgid "How to Measure the Speed of Your Site" +msgstr "Como medir a velocidade do seu site" + +#: views/settings/page-sections/tutorials.php:24 +msgid "Troubleshooting Display Issues with File Optimization" +msgstr "Resolvendo problemas de visualização com a otimização de arquivos" + +#: views/settings/page-sections/tutorials.php:25 +msgid "How to Find the Right JavaScript to Exclude" +msgstr "Como encontrar o JavaScript correto a excluir" + +#: views/settings/page-sections/tutorials.php:26 +msgid "How External Content Slows Your Site" +msgstr "Como o conteúdo externo deixa seus ite mais lento" + +#: views/settings/page-sections/tutorials.php:32 +msgid "How Preloading Works" +msgstr "Como funciona o pré-carregamento" + +#: views/settings/page-sections/tutorials.php:38 +msgid "Set Up the Cloudflare Add-on" +msgstr "Configure o complemento do Cloudflare" + +#: views/settings/page.php:16 +msgid "WP Rocket Settings" +msgstr "Configurações do WP Rocket" + +#: views/settings/page.php:30 +#, php-format +msgid "version %s" +msgstr "versão %s" + +#: views/settings/page.php:57 +msgid "Show Sidebar" +msgstr "Exibir Barra Lateral" + +#: views/settings/page.php:76 +msgid "Thanks for choosing to participate in the WP Rocket beta program!" +msgstr "Obrigado por escolher participar do programa beta do WP Rocket!" + +#: views/settings/page.php:77 +msgid "" +"A beta version is usually one that has new features and improvements, but we" +" want to test it a little more before full launch." +msgstr "" +"Uma versão beta costuma ter novas funções e incrementos, mas queremos testá-" +"la um pouco mais antes de lançá-la." + +#: views/settings/page.php:78 +msgid "" +"We’d love it if you took our beta versions for a ride, but please keep in " +"mind that it might be less stable than our other releases. Don’t worry, you " +"can switch back to a full release version at any time." +msgstr "" +"Adoraríamos se você testasse as versões beta, mas por favor tenha em mente " +"que elas podem ser menos estáveis que as versões finais. Não se preocupe, " +"você pode voltar à versão final atual se desejar." + +#: views/settings/page.php:79 +msgid "" +"Your mission: please send all feedback about our beta versions, including " +"bug reports, to support@wp-rocket.me" +msgstr "" +"Sua missão: por favor envie todo o feedback sobre nossas versões beta, " +"incluindo relatórios de bugs, para support@wp-rocket.me" + +#: views/settings/page.php:81 +msgid "If you don’t want to join the beta program, simply close this window." +msgstr "Se não quiser participar do programa beta, basta fechar esta janela." + +#: views/settings/page.php:83 +msgid "Activate Rocket Tester" +msgstr "Ativar Testador do Rocket" + +#: views/settings/page.php:94 +msgid "" +"Below is a detailed view of all data WP Rocket will collect if " +"granted permission." +msgstr "" +"Abaixo está uma visão detalhada dos dados que o WP Rocket irá coletar " +"se tiver permissão." + +#: views/settings/page.php:97 +msgid "" +"WP Rocket will never transmit any domain names or email addresses (except " +"for license validation), IP addresses, or third-party API keys." +msgstr "" +"O WP Rocket jamais irá transmitir quaisquer nomes de domínio e endereços de " +"e-mail (exceto para a validação da licença), endereços IP ou chaves de API " +"de terceiros." + +#: views/settings/page.php:99 +msgid "Activate Rocket analytics" +msgstr "Ativar analytics do Rocket" + +#: views/settings/partials/documentation.php:15 +msgid "It is a great starting point to fix some of the most common issues." +msgstr "É um excelente começo solucionar alguns dos problemas mais comuns." + +#: views/settings/partials/documentation.php:22 +msgid "Read the documentation" +msgstr "Ler a documentação" + +#: views/settings/partials/getting-started.php:11 +msgid "What WP Rocket Does For You By Default" +msgstr "O que o WP Rocket faz para você por padrão" + +#: views/settings/partials/sidebar.php:12 +msgid "How to correctly measure your website’s loading time" +msgstr "Como medir corretamente o tempo de carregamento do seu site" + +#: views/settings/partials/sidebar.php:14 +msgid "Check our tutorial and learn how to measure the speed of your site." +msgstr "Veja o nosso tutorial e aprenda como medir a velocidade do seu site." + +#: views/settings/partials/sidebar.php:19 +msgid "" +"Learn how to use best practices to correctly measure your site's " +"performance." +msgstr "" +"Aprenda a usar as melhores práticas para medir corretamente o desempenho do " +"seu site." + +#: views/settings/partials/sidebar.php:20 +msgid "" +"https://wp-rocket.me/blog/correctly-measure-websites-page-load-" +"time/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://wp-rocket.me/blog/correctly-measure-websites-page-load-" +"time/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: views/settings/partials/sidebar.php:20 +msgid "Read our guide" +msgstr "Leia o nosso guia" + +#: views/settings/partials/sidebar.php:23 +msgid "Why Google PageSpeed grade should not matter" +msgstr "Por que o score no Google PageSpeed não importa" + +#: views/settings/partials/sidebar.php:24 +msgid "" +"https://wp-rocket.me/blog/the-truth-about-google-pagespeed-" +"insights/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://wp-rocket.me/blog/the-truth-about-google-pagespeed-" +"insights/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: views/settings/partials/sidebar.php:24 +msgid "Read more" +msgstr "Leia mais" + +#: views/settings/partials/sidebar.php:29 +msgid "You have not activated logged-in user cache." +msgstr "Você não ativou o cache para usuários conectados." + +#: views/settings/partials/sidebar.php:30 +msgid "" +"Use a private browser to check your website's speed and visual appearance." +msgstr "" +"Use uma janela privativa do navegador para verificar a velocidade e " +"aparência visual do seu site." + +#: views/settings/sections/addons-container.php:24 +#: views/settings/sections/fields-container.php:28 +msgid "Need Help?" +msgstr "Precisa de Ajuda?" diff --git a/wp-content/plugins/wp-rocket/languages/rocket-ro_RO.mo b/wp-content/plugins/wp-rocket/languages/rocket-ro_RO.mo new file mode 100644 index 0000000000000000000000000000000000000000..7317a72055ed90620edc6a31d46ccae4ddd5c48a GIT binary patch literal 106713 zcmdR%2b^71wg1m(M5KuH4kth$fy|^)ha@nh5l9&`fk+KEbMMStGIQ^6OOgpinxKe? zAWBgLd?+e{9k3w+iYPt{cEw(w_1RJM|NX7CPq~vxNNk_?pHEJHXP>jru4}Kg_S$Rj z`_xY3Zix8%^mC$UAF#1o6g}|VDEiD~J&mGw9UDcvfbRzX27Us(34C;B6m^3uXGPH; z!FPeXgLlo2qCLQmf%@)i;CbLL!PCHVj`Q~)1otBRMR1kC1 zgMS6j2Cwakq7~q;K;^gKgeckuTnX+3o(qyybRl>W_+ju!@cDD1XbCtQr0CJBz`5Y# z;rR{(^xfH@zI!96_dnr3rQ1#+mEZ9JUlMQ_JcH*i2QL7B0Nw)@=10+`;ENVS(J**D zsQ2Se^!i-_-cI-#@J-;G7DiDgcpRDU2d)RHVssOD5%>-8`QYg%lP0(d+!?HcbXjyI zxF>iksCK^}+#7rX+!y>QsQAxcc1n&ZO1@8lI1D^o50xQd+ z=rFJeLVD5dp!(;B;0*A&J>H*3fidAF;QnA0+y{I$sP?!U+!4GVJQjQ$RC%^q?(Mca z_&UOefDEnZqoB(7H*gzp+$r8qJAg`eBB=hE2kr!(11h~bcmQ}gcqsT*Fb2O6@VDT2 z!n>U6)K;B{aD{0-O-_ArQ*--keb|7B2g_a{*K?eY@ux1+$>gii)9 z1g`=iv1n_U$(`USpvw6dup8X&bnn-*Ks~R4YQM|CBf&R=YPYY4=RXh6w>!hzV-9#A z@6QA^J}w4h@Gekv^(j#O_a{)}=Abj9Xezi6gp{K7AXSVW2Ni$(Sw0TB!E*?|9XuA? zmPS!KEdXP%4?GII5}XA-2)2XIfKBkQm0s@KLFM~i@DlK=;BMgQ=Q!P+2SQ5G#i088 zi=gQDYoNyI_d&JG&%u4cXF#>*-UaFa4uBKE_kiQTZ-Ang?*#lGQ0e>u+zb3WsPy() z<$U5WaC^ctz~jI!a1ZbjQ0d5S_3yR?A*pCjQ0-p@)nBg%cLm=D zo(w(+DxYnOKCbozRn8dPA3QAJ$>4OttHEjDt>Dh!=fKI}55V!@jwNr88KCleF{pO! z1-}ih2R{X#-sj`sAc**Q!b?Go$7?~we*>uT^IlNx^9gWI@Vnp+;9tV~Z3jHOANX9J zcYxv>)4^-OE>QLT0;ux*1l0I@8axD?Q1ie9*C^`b%37i6+2)+PZ2QCFK1)m3g0Xzu&Dk%DR2Gsc3X~@T07dV0N5O^ebJ-8Np z9E60T6DmiQ2ULEk}fOmnDdH(_M&EWUJ_kdTv0$BrgUd28515ouEq;b?Q z-v{3a?r^pD+dIJz5dI<91HJ*Ka1;1z@Fn0?*En5#A5?k%7gRZ;S9^FjP~n3>^=~Km zLU1v7BzPvMa$XPW`;UQ&|Ji^)07W-XgZggVwalf!ok6wRiQo?4O0XZSf}-cIfXeT$ z;DO){uW|V?11u4~8QczxuJiG-J-83S383ij1W@^&35tL8fuf7^L5;6hfhy;n;0o|V z;3RP8>zU($v%r19%R%+)9pH<=hrq4CFMu)lHBjYy8ax`@@3o%q3Q+YefJ$!|)c5y+ zYNyA*@!*%iW5GXx)4;=TaJudTPbPd9sPBIVD*myr^L9B4RDFiQnc$@X9|X51{8w-n z@OiIydfW@#iSR72tqq+NRQoNv(c5b!sPsla@yAz!yMk{4MfV>DRsL^+iuVg}5%_oT z5O5JhrSux0`r#5#<+v5x1AHqe`uteHpMz@eJ#Kb+cLF$va2?e5_kp5|CqeP0AAm~# zvRk6)9pJU#SHPKXK&JqAf#@Nz=o8=?@Kioh_zCbL@T@m^{@(;oA-wf%P6ua$s?Qow zKCKlfWZyhqk~=z+Uhva3OfY9WM8;2B#AK6}T9T-|X}8 z3RoumIH>oB|ChIS3A}*t#o&qHGayYH&A-#z`P-n{dGcGZC4kGp7<>>^`rirI@m3#K z7l3N7>p{`+Z6W+oQ2q94a4T?+yS#t)2Q{va25aE0p!#9Qw>jN(fCm!p0uKgD;Pb(& z!9&5!3%K*$^f}=^@I>(B zce=jxTJRvkzXI#vF88=T@p2H7kG8tk4s|kMv90rT;g5R}8(U(BcbH{tUeoH{r zYc+Tb_-au7@+oiz_%wJZ*zsPcv(vzpgtvX4x7%uP1>wsoW^fJ6;RU z2Hy!z2Y(JO2lxMgf7bvXAbcZu6u9g@r^lqo%X6MhP`arY6g*UJOm0XH` zRv(2&g0sOtg1bKG&$s`Wx92=?9?vfaA*twb5Ymg94@J={!2Lh&^?e(-GvW7xdw`z; zcL%=*icdcc?f|~vVb`Dc1m_SgfMxJb@M3U>N1Q&c1;-P92vom(9~Axn0sI{J40tg3 z*++eR{~kPm@QXfyUIiV_01qVG`$?CdSArK3ejm6Boc@@%_YL5lgx?OH0zLwY9`^c_ z^XCcRT*AkK&m-N7!EM1S9%t->*L~W*JNOBBF!3$`XMzWP*7GfZ6A51fs=W7sQ^BXe z9r%8S|Mv3lPo*k6?*zNSw}B^vPlG++{LlM1xfz6nqesDg!3)0NcEy{)HH3HjB4q<# z1zrm7@}%1rUk@t%F9huRlGE3_!0mW`KdAP56x;>;38?;j22?-p2$AdqP68EwKB#`~ z0oBff;8gHhaBuJ-Q0@3Fa4Ya9;5VKNUjfw~pZ+@YXzKqv@J)n|_@*{D^Nk zpZ&#Cp3k^%d%5-nVNKC=unK+$+zagfj+bvWIG^y#LAB3+gRcdD0jeJ_{jSf8J_%k$ z_=fK}Uyi@;^T8{?t$F@FQ1$%?xDfn0xEws_2R_dn0bj1?py;Xhhdy8V1o$$-T|c5t zz)ym=frtOt^};WK8kg0dINe3TKj007-~Th`%P0Sj zx7&l@T|8g;b8MsF*1v$qgP#Uf->ZM=`qk&b6AAwsycs;^SI)Pd1U0^%0@ZK70o9({ z|JuV7LG}M!a6j-&@F4JfQ02Z2+#h@ZoDF^roC@yo8z1)z!L10t1l%5632qAxfl6lt z+yT556usO7J|BD_Jbwt(`20NB1pfzo5m@+N&$k9D-RnTr<2G;-_+IcK@LQnh`c1!e zdiXfFE8*{e%J&bT=zXi-dAsfns(h~op9kIoo($d&ZVmndR6G0uJO|wM_s-YXfRhQ| z1s(`~3A_mWGbp~X?hkJ7x#*AH?w5kQ^8RY@x!@h3%KsK{JMaNe`F{dbJAVc|0{kKP z1i1H~Je{9{#}oc7I3GOx&)#q6gGUm6J*e+L3#wgy3{C`heA?%&ouJz99B^l_0?q<2 z4dIW0D(92nSHPcvtHF=|#oMFfuikG*1v~-Vo%f4DrB?#gZX=-j?NV?8csklA9(W7b1h@a2xASG7>iL|%d;9MVik^=P;WI$B?@PfI z;C0};z@LF7@Rq18`WD!R@~--R8$2ESJ*fJ0Kc~(5WdIycxCzb!Uk~mEehXCjeh1D1 z_k3=f>60r0z7%Zd`CGyL!7qVb;P1g>z@x^s8U36GDts%ba()#Qf0+sqsei8rRsXMp z7l4blYBPP}Q{W+lcX@uB+1qA;N9R~LABf4 zUeIQ8`%$n?_(@RX_{446j9!)oJPTC2uLf2B%fV&f+rV?czk-K@XCXAlf!Beex7UNB z^E*L}`}cq`_!01h;8URD{Q}$z{0pe|-fcTC@0s8l!k2>kf`0~I0PeoMe>Xnh6mU7u zXMt+h>p;=vXF&Dqcf$KWfy!_33)^h`p8+b|4~kBkpxW=hz?t9^;B0Ukgt+>1A*g;Y zgW>~k1vTED1os602I~7gUep%Rwh6QgYav>Y2c%v+VPK|>bL8z z9$p5%l<+X9_WCs_{T}@kZN}H9f@+te!5zU> zpz7BE+rd|WYWMp<_4lJ-5!`l=@gC+2}d(ysO8JrFdfd_)O zfhy-CpuXFBFQ>Ozpwc@Vyd1n8>;VtnyUpgE>jORo4)XkjeY{@xf-~sHZTD@Hi6lC1 zKX1n`fTFW;`#XKi1~vXJ1djth1D?uv+r@3s5aHhOZ6>Eb4{Dt6c0ilyZ6l!g)n7r$ z!yOLv_TC*7A8iNK-?KrDkHw(U9{{_+yFl@WpMf6-`wwa}d35N6Hj^uF1J&R6f@-HH zK#hy&V5hHLK+(%o@Ca}L_*U>ja1!O8aESA#r4!q19{*NQ4XE*X7byPuQBd`N6ckxU%-RG z2}k&Mi@+&_Ujd3=KLG9reiRhleG3$S_$8=*IqXR1!=2zhgx?LST|Ntno_`EJ0-kh~ zkHZ~~ZZmyq2B_~}3W`5m1B$=g0;*o`4fq78{`oN|es#?;PPZQi)vn(GWAG24#>wuT zZKmJu52~IY1Sf$14T>&)4~kDOJJ#!UEvWqN1=W9_0!6<+1+NC50hP{GGo9|<1nT|0 zpz?nhRJp$vp8p0E-93-RBhlGH@N?kSv)iIiDjxWD@b=?8{Y6ZIrs_F(ejDET#V<9TriuLec87lJC^jiAc?E^smU z2zWfW(|oU252*OP0WShYXE%YO<9C4KFCP!#=PYo#-4kr`d@`u!8N# zuR)E!{k!2y(8p|0{kiVNu1{PGs^1;}$AeFTYM(!V2Z1{+^Ko|+sP;Sqybx@Hhl9Tb zH4Z2Cxcoi})HqrRD&Kxk@vZ=m1V02G4gN1EIzMc=(?u1OeseFV_WCOL82D3A^?A=J zZP91I$H3o#H=NoQeF?m3MVr~>&Us0j&C~Zf&FTDJ@D|<=obGz>xHH;ped=WJK%RdE z6kYxW6kpuwOfT;qpvrj^C^=C9mw*?68vjp#HSo~0+M*Hgjo=z^_p{rgYrt#3W#GOm zy&s3cD+zxFyaHT)j`!O)K+)O6LYw)0Edx&`+_tJM`WUzvJRf{vuhYp@;0=Vo4(hw% zqWAmF0iOod-lvzm{YF6b=T)Hk?QZaN@DrfuczmDJ!9;L9;p0Kcs}F(t?)ZM^!>d5? z&GW&dz)28omUbR=^&fuOIaHp9MAEjvMlJUk%O zgZ=G1=i{HNyPWw0sPuMj_&7TboK5((pz8ZY@KEsiO_21agLT4Zt#SJKJUBr3_n`RJ z*=s$WYrzuXAA;(Slh=8D&kgu?Q1tUNP;&CD5tnbT0@W_d)_eP22X0IFCQx*GCn$OH zVNh~%;rTvp`#{mnCE!f(2~c#o%>}O4Tn_F`_!>~-^bYV;@ZF&5xAlc>X4jbk771Sf zs-E8k#b-{r$mypaR63V{8s9g7s{b3o+rh0~>f_}u@Bza2gF|5LVsEeSfVUAIcZu`; zJ3*y?e+WMgt|0s^@L2GOOWUGff#-q8(Ef$XT;AMrxzph{LDhSgm$gNo2G0Q>1}9(9 zX6rJ)2GxGAxYFtP22lL$9#G@|i=gQAkD%(c^~>AL&u<^_M8XxY54;b&4&3h*-e2zy z_+3zZbjPcluTKL1Lii}~U~tAOosXUljwieZWN1Yr+2J_m}<=H24yJqUh> z@YA5$^BZq){`D(R{BiXgo&S9gyp(YHR{!qjV1@7@Z*qJcD1Q9B+nk=Z1x5dRgIj~s zLDAo_p!#e^TUYz*zjgO#+Q z_{y8OKEkz-XW!uxFVWwp^$~yP2GsqZxQ87?Q$n1H;8MaGC(2WQU*vil&(&8~f!`v0 zMu`7vaFyP3{gLZZ!uN2|L?$cW&As~MUakYV{{hcG%%%1{nXAe({i*#_H}U)A@9o5! z!1YcphIWJ)jqW4_+ofhK#&Vvymv*qs_A^bB?wEmp%-Oa?hh-+Dh{aN0v3voNZ zPjE53qw7Naox{78;JM+OTfj#M-wpPLc;X9>ajho2C)WwwCx4QG;y3T)d7Z0`>wR4M zyB++E-$pMAc`5iZuAhYGGsE*X@KK(9g6sW!rzGZboz3-80vcm)2ytNz(F0r!p2Jp* zFa845I7Yk$Ho2;V;t z;_xW_JB7Qgc>h}PHm>Q!IRktv_$g3-cR85O*5vtAuHS_;i%HtVS z&kqBiAS~XkzxQ%|hU@KIk8^c$okN_D^X)y{H@J4<{wrKx;QpOl`n!|xT;jbsr0Y*< z?@{5yiKoAFxZ1hi5yB^NFZqI)h_>VUKKHwV{aiohUOZNRmyq7}TtDZz{(cEA=K7%r z?f-9ucV`ptI__cl(Y{=Jg|bNRnG@o?fcvk8Z`bqe2I71T>;6VGDsIPhYwBf`5~xj&TWO9uhqBYYe0UlSgV zg!h9yTN=L8tN-Qs9pT-<;467|3)lbh?*8!Y`@wFmZFny^TLU}7yZ3NEpZgzzAL6=< zYcALBTyNy+33>gUIOh}A-zOcSuLryU{C0SEKKIYz{(QdsB-cyA_gC}0gZuehALRaC z@HXN-4=jMkgJ*!!5A}D9L(Bi44xzUa?~jVh^?9Dn;+n_xJi`5?qrVeC)GzycQ^5ZM z-{X%WR5oL%uOr@b!~2uDAIIY(xQ^r5Dy}bae-_v8xoW)sBG29nt|R8b z$H66_{vP4^&4gdc{rACx!C!NY=h~4=f9=G1ly~}D3;uy?Iro1D@8aEaxn9rpP>5sk z2!Dd>2LxWvb+q1dJ*}7g?dy>K|2pnYq0yWnxe zIRc!|bqv>2T;Ji{vEbXdM*m$z{O5Bm3u!+Y;*2Lei~BX<`4m2Ub@=!^o-g9smhcnc z=eX|T+9AZfisv_n`}YKV75FjY?8P<2`$GwLay=a0f0E~y@O(M=W3D54z8B%Wxqle^ z4A{qYD$gGw{9LX}3GYUDf369HcLnu#Dc6JC|Bd(h`!3f9!u{1e9|-Y!!m|r`ziqgG zBli{VmvFr)#M>5p7ti0y)y?x$xxUUd$aQOob2<0_#r;#n(chU4(E!hn=emSTe-pV* zwL9#AJkxyO6`$wi$!C$%N zg!CQtdj)t{E}cUN&rT8y_zJK@oY!%^l>0w$%_82%xn9b3GS9c? zx}W>KxrVuRAgsSTxxXDe3*3q8?OX@(?mC{W0BzhJUhfEXn!TbAK_{ex*VLxbq?R$%hkvImqWZ4 zCdhOBT?>Ag_wC@9xo+gy|AcpX|1pKR&LfWg=JDdT$|oH}?mCJA$i-_Y8P9*u%3$;3TehbFaT5_sQRTLmD^n;P>HP@Al+= zLWtK5?vQ){&gR|LT$l0u16&KZKa%H5xlZSPXYl>t8^ZSlqkRaUPIxB;`1>W-GM<&e zck%qI-0uTszxIMNX>ug1-KDQ*mu z>+zaWtmYlkH`1p%T}sgM+IIy{q-IF;Jp}r8VVhGc8oS zYJ`H8EB*F%RkP8c8mmf!)wQAei_4XAU%9tn^`kPq&04KgX$+3U1?s$}&?pt-awVQw zZ`7)l{@Gp4M$&*Yr-Wx|Y1bAi4J##$ptk7{nctw3HDdVTY}3=G^RD}V70)T@=$5Q;Rn?x$F$s_}9f}zOLxsU|WpxYzGFmSV6&f|O`0VeJW6^2^jgi5 zs;BL%B3b$76nY_OweES%Qf)+;S%>m*>@8NeVL&oO>ZL*XK$Nae>cgd8(RI9F-tu_3 zP%8|T8Vpmf%iPi+A?w+`@?c5D2`{Q^D^6L;x#iWuhU!>|8>Jyyu|Ro>r7%Jm`yEOn zUKkgK;&W*v-mPl(Q~CawFGV8>LSBdP%jyh%kc74UM(s z!9fOWTo@i6ENd((0wozXzEY_3u2hLj>v{*9MPB#S=pZ!&T|(0X{e#t2g~9MFA!4uY zvJ!n~9kil5URLd0U20fKM9}m?zjaZ!^&%M-`mLp`)IH@PnB7YjFEZv;TGuF5!~*T> zFg^lNXQRRRT}RyQOtQCHY0!Q?QjAH`kN!=}I9^qv7fW%iS*fTMHI#-5!|ki!uf@e;{noW%$x znlPBKOY74<(qu4Eoq9Ya9-=e@x;N&w!PJ%p^X+J zA7dklP;VE}iFh2lC>G6>if4(p>2^t*ZDXaW73u><(VM6hiR2?aOH#&g#_Xgd9mN7_#lnADK=J&@lTuX1BW)&xIajv z)n9kSr@;iIG;#Ho27{1puB!Le$|!|U58R?qVKksubVM^()n?Br)EbjxxM}a|YEv(Z z@c~0pjTk|d#sS6@O?0WZ6CFta&8DkbTF)(AzZYQ<7tp*h$f z^PpQPtt^cJ_`Sxx@%&W&(9fGO?p2*_78h2RvT{8}gaVbVn3X8O~2*kKikYOecY4E;28qHoH z;oue}%80DY=~-!u<%_V~G>AdeU1Nix5Q$dJm>-54Yv8UeHwH*vg4MMaHNsF~guaoU z->kriyxWi$^iVyk^Nd+dZ zAe{>O$z;ibAjm<~l?rluPESvVNflEa%8BZb)b`(-`AM71dm++NWz5xE?H#Iw(uE{- z{aIB{=wH%yco>>3pmz?@{Jn)i&8XC56FUx_)X|FsB66{}P%9dzOxlEaY7P@m^?0z# zq(#XvEHiaa4V;ahe^Uw1-9!OT+LH2})RU2ngs#$sK<1YEO3cEF@gmo6;*$z%3O&Z9 z(vg;GY`NB-P~YV1IfK<^v2W1k9;PAIn~{>I6Su%U??YF!~7EH@gAH)9Gx$+OWh zSYVP(*L8I-j8~UNqOLIej2EIip`v6Dx>LO`d*;e(todQ7w!z~9L^=YY)w4GY{Z(b^ z13hi{FxT8^G5X3is-Pi@`X$+o(w}{4liZQk)WWl|65F&onN185iHdBe^i>CorCKLV6LmSKqmBA3Ev8^j*%N8%$?-{CrVZC8r5vGFlI%hA z76ViZTTv$xLt4A2s$4`KD`iW{?qHgdFFo^?#+rtN7PVJ{g-U-Dh1(00sY<+DTNtUw z-J*1{W3q_4DtYG4uoHLgwYfRgfSxMzMw?Vh7BCH4D=UbP(iPq9PIetbCg-eg+^Tc% zfk#iDcGR)x>3M5HYA4Y=qg-)S-2@_aL9b_v;ySpfB5NMFTn=Mq~;WNev%KSJrrHW=VItff#aL?>Xq zY7V<3Po@a8v`zoi|4ad48&V7?rIIfDLNthMoM0D*kHk( z>CA*tr3C%bB7Nm`Ms`qfP!x;|I!TeWdCz0?>_-RcqzCsKb6PWX^$?EE2%b) zhQ!0skaKDaBfSr~SmV2=dl;SnmjHob-bJFB^VRshW zG)qQLt=KN5VI&SRfVnD$H(h~wrFR;*;@r{(4$ezQJ(w>+8rg)y|Bn}y`$|mVDk1n{ zGbi3OUQ`r7Cdh6opxBzP2&DY?mntRRz$Uv@UFFcM3^!K| zmTfjC`lI1AWr<~kPRx5Iq@`Y05_9wr)@s@ALPe=0WSP^b=L}S3q%9=9ZMG#vCZ`5D zgty|!Zg;Y8HQ<}7%EY0=piTn)EYcIQLS1&HKS3=U(Jy1U!f0)7uhVa0R&ife*C>o+A{FJTdK)!U4Zrm-uJz& zOlDeQKtO29nB7~lE-KUNuvwxczDHGJgV$qLH85kEJG5uIj6`8O;$E@s-;_AjoHdI zvzIdsWknBrc}q98z8mxN#1bFP$z~$X?QHdBVh|~dwR&a~i}2D$w-kg)wm8%B`A`YP z7B&H&w1H;K5#@z%rcFld6q~)G$`h9_?@ux;o-O9(KIbgau<^P;SwUQNu$gFu#iASW%fZMwABq?9ypI#w&}=e zf|i8OmdK@o8rWzK+DNUB*MkaVAQK!}=Ei5A>6v<;PBJvwgV0dqWOyf6I&{*QY5m;nQS&>|#Qzp=tAq>_(emW6_fa8LK>-SHFKG&c2l zx)khoowPes7oQDQuBDWd0RJ}dhsg2hU~GdIo5x6R6?1PdPB%1{x1brc;>41LLL45$ zPKQdJ(cC3Ha`oveHC)k@!Na6Zx^CdI-%KEh@PRMm6afR4DK{O6rG|=7kLDsaM)a_xm%M42q@+!lz75jFH8 zp-AC^fv7k>%lp|ATLe4T1UCH|dow0ACfwLyXt7Y8|8@np6% zv&*Ab@N5usU`|gdtt<65C5w60s=-Hd-Qy`i=5p0@%dH`|DVTodv++uk2_JUIzHA++ zRcTAV&xCTx=7`~isdz=7F=^!0>3W>>C8H^s`Sq1eUQIw#aQPAV6Zkb| zoQ`O2)g;&;E_4k7nAG_%n?Vq&pqpX)hoVO&XO<*W*o=uJb0g)PD8b$U^@e<1QfIr| zpqQKZ0j>hZxc+i|peiKJb$F3#!$Asx+Ty zE#oSAzcdUA(~3}bJP{0&sgWWr@UwoRw$Lz<>s?_Li#Ev@D@v=n&2|DMB+ruml1M;F zV~wa?xu(h>GlUuyb_-ZOa**`QS)rUXhLS1w$sfz@8M5tHTi?oACVgUlW|>hf$;imm z>kuX^keu|;!7{pc)+TURW8JY;&2?$1z+ytM04@Cn;{h|F;F<)jhlQ>zouGoc+fPek zst}4ge4kWZr_JZZB3L@PG7WH{uV;y>m{H*((7LcYuTsSMP&V{AvT{g}WJ1-AG}wrk zL-Y>#s1X@sW@5-`=`bs?eV*0{Vm1mNoxC~>gPz$sXqKgYeeuLa7MeOqQbMF6y|pI{ zv3Pb6n}aqiTrI$l4;LFzw`{{^aY9Wnt<}A+D5DlK#9zjo3v7N=SN&qBr!K*d*sxWn zL_?;e(LDEs3lmW@S~8rI$5_x(8*zwP#3RpVjM*}4`YOld=fiW9d}5f5ktqzF(Vk2e zMavBd1BvE$y*Qd*=q;_PR#(T}<#pI{=lfy+P4506*3j7kM9>|~4#a4)iJ-CRPOOhr zW7O)Ejx9(h^UT>uLcx)^H_@D=G^xt1?8q7+G3lxZ@sdnfRj{d-)FUEpKCZ|+&#HEU zxN1s78Z)QKINgJcR=iSs0~d>6wyoI;<9u6<;bTUC>T0V5fsj&vTg^B{qNNJXmYC}s zOj>2(6dN_)fxtOjJ(qmd|M>=R6HQ{wAZ)CFy6->QUV~>?|&@fX0;nTfL@W2CtQtKLCqTFrJ>51D;XSCT#l7?xGNt&ZraO%y~8L^K6 z0~2LKc^Oo(9=ryu`;iQ3vxhWWZIp6d1%(1XD*Ieb*==5S9DpKa7jG?}u`=>XPs+HjGds&vF%sOR~~iE=Urq_l1@ zI`12d?N-sSrG%=;qA&eIX^%O5qQR74F_-`nbB<+@&$T5p8llb<5FdtAt4(G|;(DlU z1^QNtk)fI3`|hF(Nzr1NnnHB-nYA9Xb!ldaPkz{V=Y1wy**~*wF0H0zVYSOU@dPcX zrKj<&?8RwPz7)Y5rlqr!7E8P(&#gkbA|CU^H0`A@G#RBE!x?r9t-d?0;niH!PQFm2 zWDwBHZs|>FHi#npsO6aH96VAl)N^-&3=}u(D1O?(7yCVo=&8e zi6|=a{u-n-n!vYcSN@3Z@wqP(ZQB{vO}z9O6rxlKo3B=)&V?{O5bN}Oa<&bIh;leh z=I@E!!gSeDv#m`<4T@Y>>LVH=*G+wHQL$8gDBss2hwuU~Gnze`>G<0IKs$_S$Qxz9 zOEbw$MtlPRmPK`rx~ujBIQw1}mZD=AL4HsC|9B z4r)?R*wYymM6sA_cB2?06Ai$+O{r(sc6GnmnjGWUjL z788UV10&_=vV|rb9jC!k@i-RG*BZw$rjitnK=(zoc@ ztWRV&4Ck}#qnyiyh8AIWestIO!&XgR(Z zf&CwYa37kc$Y@Hh=<6N6ig88>A+^qDAi4nqbbq6?YF5C6+3e zN>utj|7^=8lREj~8CeIhk#nC6lA5A=@?#~tT;keTf5NO*MFcbchX|^+@J*Zv9v3afpS}<+9_0&{e^7(-tfA47 zsCCfJ&=HqegyB-Ljnw!pxbrwfSI;d;dNkvoFLH4hypW}vl-ft^>=;1 z76Dm(UTszi+q4S{&d-qXJMhIyoAsF9Q}$_NpiI;u9f$%k4|#)Ieo{RXPPU=myBL$c zo4+G&HL(dM%38c&dAyk2v{Go0ZB#LsECL@JBYudkT*myw4-X(8Z1CEw#hv+~WHWA5 zKjtDZ!E{zsAHf3=lgSbpPESP3KaN}RKiOtkY-GfonvQkk2uJ&oyOqTQ0V<2mRq+A9S`K?w-j3K|A%5%$z%Do?MGJ*#2vp&v?Rgq|4u z%p=6t)v_vtp_G!mOnliPHrnSTZKQ`O4Xegt*+FGIpjxrb2+llQ3vpWjE7>KCSSpK6 zBE#ZO9Eubz9mcAkO_~y#){Go$4r5V1hFB}ocGq_Df~*KQH8Hs$>987?PW0^oJlWrH zV=J|6@9AlMl6X+GK22OA#(ugfxvcqYBA639i54i`ZAuzvZg#a%0iBe-)jvb&I1|ar zm0yF(o-Wq_sHfrJu8o3>TF{7=ieMr;C<oNC4|-Q>dP=?2sMcm5L?y{U zsl!23mS;#8^-gX{smWObXG|MrQ1p^_Hl!0rIWq^yWn<2=rAssd#H(Qv9f=`ZT7^=! zx@iM~ojPOV+|+w142on%Yw5DHaw>_2gJ$OMka@Jmtx+P~4*KP}B zr-w+R2#1=O0Tvr6)WMEN_#v}rNYFhLgOgO+Lt(T9DU)nF#3fY2AxoZC_tYt9@a>D` z=(jAm>g%bL#00}WnDEqGhbX_tiKR7XA!BIiJ6Ug4RMhLBu(?uZT*{)N4kQWXeMwOz z&9LaYvhy$5zvbFzzBKT$a1@2OOse81Vp{h8qOz5#8+QO^!g#zV6FseQ$%RMF>i#4W z9-cZmV&BcCa(=AWzq5>oPdz+kUglbvXw{4j3=_861Nr7EpGdD@JEO={Ggo9P@b7Kb zBc@JGi|pgfj951QQWoI4c9@l>jl0Dq&3XOfVT)FvITVAcVuP1H^n)|lFPeIvZw5(h zc_(jXIl@#lqe!FUgc3KEtxBya&`<&AL7lFp2Z^1?xkfTpNKV|7gAB5{5F^Vy3tR>8 z(J5&>ks0a_Nt;To?gLfki+>=!Oj4*&iK_);OtLh`|H4JLn)*nP4n7!_pvjDC@o8is4$`X6^KBNs~dN(|>3R^w!DA0c#;A zFMH5zrPd*)o&VF~P1G-1-Zqe`y+uknEy@d|x|>3#82WSwJ8z;TnTnTLsMJZOalwdC zSb_@|f=0fo?djwW$HcIw#txv7#sljrV{T7eu|>Ex=SnRO-M*vP$~XZ@VuvOy?Ve-v z%9app+bAK8WAzB3)DGtcg77ro1L2X$dmT+-Y1cDvqr|cxyBX_fNN#CWEu^aLci}V3 zTW0A^Mt-q&-!fx!=c{E*E8@l4D3Cu&Vp*v@Q7;k&h-{W=_oNgNztdF0loSuDL)Da< zyRFhv(?=~IkQQ6@(4w`ljDSqS>E>|gYT8u95H35?)leMiO`pStH9)tK(|K5N(5P%> zo+AV`0#I4X%)rC3J1Xspfe~MT5BW+F3FmaC4o4dl#`+5vA~vIk@=+EVYCsJHyG`cU6&UuFxNU-U|tgQ^_EK!Uk8qDcqavX^{^UKXA z9a%PMC6a-bWx-H2^LEm{P#Bxy<+o7R5rN6NgOQjEN{gP-lyY(2tT7ME=a zZ0x7``B6cZO0$re1#NRJl*^dz$?SGowYj{B3g_!1&ab4->DUWc83uyQj+rQ!VpG9c z+Y}l%StiLy>aa4P35FDV%dwM8Y=0|L0J$_WzTg{XC)2h+bs$HXG6iQ#hYnoRxYiyy z0D|IxwXmdZL(`-9aSMtN4)Bm^N`{lvO)D&GD=mxT^h4=nkH-pKGcS=TIU{P~?v$+K z>q9%GF>gIlnyhKP>Icw$FzE}?1l+aD}OU+J3?QYz3dB;kj^`tl7 z$m&}f|0QW{tWw!LH6J5z;bN}cgPk|`#H>in!cr?5EMIgx#4M#UdIzEzUs^wIRH8Mze6nqWz7N*-WCKx;FQjS{Y9}9&_^{D= zPJwpoq+ZHTkakRVtzc`n1E6eOwlm)73#r7m71N3#aia2hYFc>AC(;^M#oBmW%)BO1 z{ZJ~cwrnib9RIN|f^NO>50Em9R+DYEexac+tCZG}w80ByiPzHBHb?{EXyY4d%a=$> zkiy<=wm?GP!I+CK&9eqa?Dh?^kzU)VdU_TmQi#JG)$b^Qunt_CL!WNu32>S*O_{>@ zK_DW_|EuFWhN{I9KeYw^+G^ngMw>VY+Bf*$6wunL=^*#_wUYeuX8L|Hd#yrN~0 z^z@|2B%yUNcC{Y8W(0w{{SR2S{uA~3*IKwXuf&;!DLIa==m=A3wxKBVQ{v2BC@>hh?Mjfv2krWyTfvhDvj8~nDk88%s-EjRp)${xjc<3{qa z;F?pur7+7w0ue$1)45Dwd^zHUmf&+(Aq*b64P zvY_D|iJ8WiYi*j0)@2JD8_6Qa$yomvaV3g@boD%?hVDs^qtNW!bP+xvo*i6)6vFr$ z&(!p4w#oRJc*JneR?mEgq&39rm({{zXdUy0^_eD{j(r|LDK^qsrphYEmZUR6!oYxF z)HaX4B(YpdUei{h+9VB`6|mKynvg7Z2`2111{)RCCNb(535(XUrPUT2Pmjd4<1AWU zEu3qG?sX3i8%)|D&cvh6IAR*2@9o!dsx=h0U~^zQfe$!(!?$jG&zn?Z0NO^IO%t4L zk@Fn|?#!%=T7GT>xns8OQc^fiY zjBN`JR3!={62lq7X0tE8FFuJ4$BW9wioxDq`zlJ^ve%EQ7_Xy|=Prqv5oJVS#s~%` zMN0asg;&`)(t>qpC?CWdb|YEfhiv5%JGD*^vzyQ{QqFBpV-hd%L=d-P-#Al7`&{Q8 zGlfNi^RwK{qUJ(g{%pQaOf#>rOFSGZ=8C&4R`B1AW##TQjB2J=W0u8?Z>bq%^ywaR z!g|o$mFn+H6{&NZ5ASG7FD4QKW z8ep95ZnbU;i$mFq>?AbpWr!yl|1_Tl4#!PM8e-)+bNav|&z~`!?G#wl`2C1l{lY1u z!hw6zdwvM2&xSiWkjM>X%1HTWn1v|mk!=55mPy5vUa_^JWQCR92#2ylwK5Fq%*)aF zhX(RxDLYXtO*1WH5=UnRS--Lhr+KQIgQA`h4v^<~Zg~zRIhxtS$kue3LfD%ZoNbn) z6zjK~IQYnyHzW)5dm7D1m2i|WB5}US?UrI-L1?Wf!`P21RXIt+dE*RUs6qE;sU_zQ zAa~v6@@Uh@9`Cn79_VOYn>}!{2E<w&PC#v*@EB9)>w5P|;Ym5*5ybyi4qI>0>t~n>plQM{%0v<2V zoJ2{H>{PXD9Mi5rlQp`lQM|JzW)%jt6!%pn34LJ}tLk?bD z(Gi!M`MEF8g8Y(ft@UMTwN(nKd+@3ae*Hzo%GiZw6p5~D22yjJY5Bzoh)pSXT7|MNO@N^) zvTUxyGlNCPtqtOv6ifrfnulQ&6xA_Pks08hONJKL{3ItJO%+LU39gl~htXoU2FkIHT0u zM2A;t`bLvk+P31JaoBV*)6_4qSv5COUprlOM)Bxcjw&nNX@>s)ONC`Y#MSf`=D`mB zAT!hVqgSd$&AiMciJ9ls6jjL)=++0K+igtAuyv<+h?TAaj63~JM{DKecs*N;YWZ^1 zSF*Nm_=OFTkQE&)Ufrnrc>wGuf((!u3Wnb$^qmT-LiWw3;wyP1p*&U+K@6FgGfTP= z4pK026!tHr9*>E1^kJKv5N7jbtLGM{dm083QR$coOL@X)O)1k37OmXxRwi=>4l+6v zHTc)rj5#>!gv};{3=tR!d70Nl*qn>b>D$(l^xZKQa$%>vYy~Fo$e4cxSxf9>8B=2Q zDdXGp-Eh2rB7VY1cfEA2eqPI!(pEc#RVXyBO-{(e1~O~7)X;u8+2WYRh$%8Fd_I#N z<7BCgW?)>LihJLx{gR)VLZ;g0YTpiTK03_o=ymtY33?TCqm*HUMoOm4p}fHan!L0Y zv`HNsK%vp3gVIz?|AMj-lSyCGe~fdv4$L0)1JIL=^3B1Qx%jBxj)pt&lf_NuX|O9Q zBULYy4cEpjKVSW>$45_{AQB*oESyr>?EJsht+7-?Ckxot(bU18ahCsqAd8bw>nem+ zA6j~rpJ*i6$n3*b)t(}b8LEmWI&1Xpcf3+Iuu97+Hg7%Nd zp~%W&_Aj?$i08-yNGh6YTxB}RF+2uO8{csZ0 z;X_4Yju*-JX`SZPQnxSEkZ?AAVmuEtp>)}EMgC?bPwnT)gKk+xd0oZVk`s-q)rPlf zI33H~&TZqCF?y^!_;H%mK@HIIp$5p@a-Aj{i5Kbzhusup_K?=~{pDC6ZBLIrQDf%4 z4U}%+Y}$%W`Q77Rlo?L2aRtfz@r}v&9u51M?d7;2=%=LXQBEl`TW@qq=4BF{lK&la zl^}T3TIPry^=v~uiZ@3KueS*Fj^*o`X9ua-RK;{dalWuj&jik$0LIpG!?BCfn$7lj zN>^gyBSrM$)L$zxn3`O()6I+^!+^%1>Vrl(W6QHM8O+bpe>X!(;lm;yGnU|VC@iCE z17j>KCtd7Lyi+{3X+SHI!&W=0wSJW@?AnV?MT%ouw4*>KPz}y-81E0IkSz)u)Wa!8 zyztYE%s1E;1~x+3!N-X77=FoDaF6V{_X=6sG7Y=Al2|@DP6kX^eK6lmlYJR8GP^MH zi`Gvk)b8LT?ZF(&jbGU>wl#;_ac9<2g}L2`WJVcMPL)$08c(34h>X%x4z)HUZ#kq0 zXDi}^GcIwbvCUeky^{R0qZu&F6g4Ns*s4LGEYt0u3=GMM{22{t#mrN5?DX9vkUzYk zHC+|j`Cr~C+^u+0pM7@EDM0LMDsk`y_1ZU$B*K`LR55H-mOxHni`u9514j$Ag$ z*`;&LPNp+aYS`X#5$3~^pf;SZXdIv-GkbI$TUXnDXh>b-?nhn zQg~}I-==AYy|td9`{+Pn|{HK3FF>N!P9#ez2aVxo4G+LeolQ-Ll z_;t5@y z(S%)|Ely&HJfgUvT$}-pg`m)JkL6xzSI}XT@s?KD(`aGluJg%60nZgHlha$WcOw(^ znV>(73?)&0Go^8A6FkZ+nENP%<&>taLaHDrkiJLR>Yhy!HyEMtEME)utz)fYKT)|% z;|+pJa->C{u>zQ^l!#7CqD}ZoJgn9>?7d9z>g1$<#BJ{9PLLev(QtDmsow&~t4%yA z@souBEL4Y$;iR0&Y9@&OgOmB6k9Mw!4>gj-e-xUH#|2tvb*aQDq5KMo)@H4RNNLCp z0Y;+Oh9=fzhm*;NwRg zek&dQM@XOFzde}uPbt|iT z`qMMgw4gt;5@)YrLN=c>4&b^iaYhn(pNSk-D{}5+F2F6aYLk0IsdX-=8n%#AOzhB= zXR~imt#&wKW1!u3RJZrr(c*U2v#BcW%;`kWbwBSpox_=ui7Mpm%Eon8$)HrE2A*(m zX>OA%oF`rO(wv0$Opa>EvaqEabv;T(GIvZrOHOfEVHPp#UoAc5sE|AoS66M$t*74p zaP9sIHVafEZSPBZ5*mWemEUpEX*z)3OmER?Raw5IGUeBy?WwJLvdV>30rRJ5Xb@_r zA9QTiAfmy{$of>wE~^9MfR)Tnl6Fau9U3c^>{=PK2RnXGPsGI1pWU|kTGrOQcBP1( z97>FTl)dFNUuU`QH=CJBu}}Q}SA?wQ#%029m29EDXeQ5prXl{brSJ|mQ5J{--9#iG z=0V9>9Dyh2q-;tx@M)Q$pca#`S^0BmhnZbs#z}{7vWwO!Ol(gdiQT{r#r-y)uyVQm ze^nES0HSVFri|i1#C8PC64oMQ&4^jrjW8J3x3so3}xVzLT{n5wER>NH3BR(c1UHv7@f(y>OumNX=;gqaVN zZ|3-sh;-&gr-l@45}V9m{`@_Rz-(! zM%@{1HaN=)sAVuUOZ4j;9cUE#U9prN1ha> zm?Pm}Y09*zQ`?&g^X*NU*B0b=pc|k!BikdVAK6Z~Y7s$A-tHbM?OHObw-2y{ zsspT4CNxM6&TCJX*|wlGn^BBoj`8V1JN%&CcsD;4QERu|DI@K@_4>JWdllH$7G!>) zG>lSOgun_qvS#f-%1s&Qol>gM0SPJ8r%azZb=r}~Oh5d{^wYFs{(&F1`3Fd4!|bTZ zX3nd&AUlo?w=+g7xD1aAv)?G#XEa|QH&4F^Ik((j=0tf60RA(Q^_D0nmHVqOl;M_# zE4tfzHh5O8&e2XO&Z=pNTSl|dcJz7c{Lqt#QK&u5_G?oSB9Ed;&QIAAR}RHde&F+W(L<-tmSXO!q;6Y9}gxA=6|s^{|i zwCxLv?WelWWoJ&*&geLN8xG?@5VbF^_m_+9Cp7!(?aQm3v2E%Z^Dk5s&AhaWbTzik#V z&1`2$y;5i9s2|Fni_SR*_X`~KufkdyJpCoqMyF0PnmY~v>7v|)T%3&EuAuH zo5c$k&&wKXTF2CF=J>K^`*Lky=M;c-jVY|wmn+AbPe103S*I+Y-+pu!FRXyK&#U0W zsGfIs!FCK*LwJi;plX8kSu>7}{dU&G%B)$_j+@#!apJ_v z1i1g~X~#^u;DQjCHEZgmgAblq84pgHblmjLX_F=$yUk157x<4Ot2w)?F#1M3t>fs9 zY14S+;r0_S!?C71&>44hWKT~Hd$ja(yq)pNmB+3u9lLT}=d{Vwd$~<+Dtd72%8G?2 zAI_`F%1X65oIFkglV|iETdMc2WDTZ9V!9n@3=M``ds@n#`mH?;Ii(+XI4frlMu(+TEE4DEn4nRPi9QzVa!`%PXXaYHItgSW95xfz$BexF~t$_}nUU zI-5m=ov5T4lNM7@pWBgXLA9dBspESWX?SmxQqT9K%xh|;P*mmUB{w|+CrqWSe!$b9 zwBDy^h4q#JwsV$bXt!piY+2>9@bY<~niak6Ee*4gY*n)|-jZ9c@>)Vr$gtN3oVQcLU!!fRafmUc=`O8j7NlrIp!i^!5d zV*5);IW1A?KT)L3DUrO{lVX8P&y1a$!LXdGGI9U0ZGB_Kq9k%Is;Xn9b(=&e@nbiYYb2`iEFTh>lSrO487SgI%1X0rt4_7{ z*e#{?WjD`=-a;ZMW9XVJkCfvD^OmPG!?F*($8IEDmc;wYWLAQcDS3Z27cqvoqLyR4 zoF_JdD@PdXGFv4cj_^1ujtVI^Zua%)hg?2 zdy6Xi$Yq_DSOxDN&WvK|Rm_=Gt&>u=!oXZ3zx24kSjHoqLKltAT14zotRCP>N)&Bs zwe22Sfb^5W!6)PQ&hg>{^YjF`jR)t=+71#1|qK9L6CgmjO1VPI*^KtxWo z>~pnY!I-p)SP%8lROA9bk9!}!Lk1@(v|1q@4pmHvF)3g!36r8(Ovyl;WB88IhwE1> zTa|qF-cfHXopbWMWylUG(UbU*v$m}tyMa8l(n1>dH!IbR zcVezN!#Bq3H~mp-H*EfQsdU=h(uEJ;-2TPpm2Jzv>U7Z;GeyAwBj%DkNs7GT8)8D- zV|ZVPP;hSYv#`$$VpCpE89r450h$_NVjQLJM3l}n| zRT@Y?#E(guj!4IU;GrSrtpW1bO`>}=y#F|B9$sXaniki-q;x))e6cKlb(kDtz5+32qZf}OXl>Q++?d``QrPx$q zqk*@Yu%+loyK1F>wz9~Q=HsBjqG}c5b3yPkIrqGAI&`Tl{q$D~jULQ&&H9`URiI}vOwEiunstrLFYE9A# z9$ZK@nRKh}Ea8b@(HqrUg_x}`#BI`RYA@;lrP)A&yHj25h}}mI}=G`C=*MBq#M`l*|AT!+?&g2XaSR z@woBu9kum1;-V8L6qin+a>T|uz@}cOqd(_?5O|}@B#qK~Q)_G;(Oi096}}FLlblh` z*0^nwqKT!IRP@rK!#{GFM2$2Baq)-m8Db&>kFduzk}ERM=wJI73u_r)8|aC>Vx;@X zWv1EXrdd_kL!~ao8L^|IY&)Vk10@CmhskXJ+|#%1l%Du#YGI z3Reg1)PXU%XGQ)U?1LYbrnu1Sn9s9*%fHr;^=@QanVa?CMH6V|Tn&O%aKps27h|VB zx}G#G-X_l4XlT>$M@>ZY`Hr>=Bs^8-g2W1-pY^k|i%rJBn7f(Ulp9f3vCw47?5Cck zA^1pouc{B3wPHgeiF#1z5m$+oOeX}nS+Nv#tx>l(B97m04q~J5U?~cNXiBkKm!(9~ ztDw!8bvBraa~M-Mqf*LUH2EfydbIUqTL@}WqI)pAlXTUjXI^Xl5DaNft*gKrLh==NKTqXC9!PNvB5IsjV9d>3k9W^9M8n`fji!;118iD zn5`F*2{umMF4-KMIi)b0Bca?@oLi&pd*m|AD(EFRw4&B_MqSbZAu&@fOqax47t1~p z3U)YWthA#!nt79k%cxS)q-vn>j89!9ZsAWd&!dN5P+D zU@&`}mCTr5rU3=hM$U{c3NIESDVK7H9j0SQBUd*x6oxLV2U15w+K@wzF~YoLo5IIS z)I!z9i)Zr%Ra=@Y9q_3=NhGjw1{trjgxYOlK$Dy0$^}p&nHd43;QMr0>+$s?qa(S9 z(WTf?&hA$1BDIq<%rLX9j@;-$^`^kZ@|xygKfm&v&6A`s8X=ip z>nd+S#|PO{`+=l*BH|xCx+LN$kPcgx;V#&~&Dn_gN|__?!bc0cjZ+|J%96xN8gdjj zGJYmS9hHsspU4jc$nG*uI!Wt8ktC_KKPd}2`Iah6_Fe)ln#-v7PGl#cPf(nm7i(hZ z?1eGn;!o*GzE3oiK$xUL%6{u>0*NG%_G!u3`rn!odpn89bXc7g}2w4@2g*V(-M;7>t{iUb*T&;%&_zEr{vlF@?L7}l>y>0B7Lh-+9U3q^dZ zjRdSGtAl9XHKFBM167%s{;~I~ObfvcTIP#gtnjdmYo~i^E@cx-ABR!;E(lIvSAc84 zhiWWxYi&`cS}n@1E0c#L{G=#ZdGY?rSaSMegL%c4#!Q`QpDjs0xG;@n`Lu?-+ghKg zE0QA*&9rad>1oDvq?yv#Gz9u#Qe$6}Y0af&ohF(~XZ*kR&TdD}>q^gcDMbt%kO8|X zYdpqSnX$qlDO-*yF{W%I69h(yEKx;ucQv}YDT#wQ@_B$926K=*$PMIhe2~k@CFFVE zwbtJItE&DXMF~#e6N&xR_wC=c*U!6twyH&lje*2mDK-Vpl$r-=gzp(Ed~r&Zf^rZ+ zEo^tQNREJtB<%{=l-i#L&0W2yda_~{rV|eK;rzZ}C_)7Ur~m1XmNVto6)n9InFT9N zJpxT5kPP5}_0cOGG7OPnUUt^^ky{yETteb?RO@v@{7=`fWkCq2kn*LKssYgz`Q8Xd zj{kEMh8E^HdxQo{g;Mm4*)O1Vs|cQpc;CWi$b&LSvZyZPI{WzH{PkK+j0cXG9vciz z&3ieg*v5)NWk{d?hPB!FY~RlTtBKv>L)hSiqR`gtQL2B;E)P4y+ivrd%YGf3lu~|z zjrM%@P)dgw2W5+pe{6UkqwE1u&Z{-B&EyxU;yD^rw*BvThF(}GU$oHHa_FMregPx4 za1?0m`Pl_L0a|OO17qN3dw7sFII-Tk8%FNYh4}7aY-RL#PngdS+AG5=g7K6;eyC#) zjljtJy1x5KKgPs;>c0GB;-Ada*IC4Wb*myc75Gw06~)w0hg=I|2dy&wTCt>>vLKWnaLMcO5kz_sb@0{TUuuXpf$%J-iA`Uc@6G=e2!oghb`ev(`tp7W% zVY7bVQgUYCAPi#yTnW-q23GhoYI)4M2^(v3v)X6LrxIJnJySA=KYHTLww>ap-A-$M z_7SzTVLxI@w|FTT=0aS$(>~%2{&WGV!5gxbCE6}Vfjb#xNm@x)3!t#BYg610E{{DVwjoyupv+*B+seD)y9q37&>?^0~?qYAv)YLyF)WaaH| zEthtW8gSF`T-iePo%(i8H9wI&(zJ6%nK#ZdhH`$Rm**i=VXF%Dd8;pDQyE3ncm~!Q zH~z(%Xq|W0E}_t(g+^DI+xA9XT&}ylt7h7&zT36AV>z_!g@suZp8T$W?FAxaE0d zgHN#ugu;ds0WEj`9xH{@kzUtOC)LGdpok}t)&*P#N24@5hdmREMF6{?)NzZ1OW)jF-2tIRLK_(h`wO4j|=JL1I9woCxwrSERzpbl3G5lKodT z2Qm=+OAgl?zsT9Ux=SqfSi^FWE1>cAZ*T>3_vm_q6`v?5@+TsxbF4)#z%FEjDyVD? zK+E-nhj+AHn$=*w>n>@~c|DEIl5V&A7SJG`P;FK-@gfRre_$MH&p}|kNHX(&8Aa}- z1;t_U9}p5~x65nh_9#2Z;NF@B-twlIi}yEcDlq7Z_)@TM0EvgQUjv8>X;zdtVsStc zsL}~O)qcYFz(5!B9E;Q*e)6=WiG+HO+mb31ZeT<`Ee5oY9?V-JycGGOW1EVIF8v!= z{9pK#kCS)XR-FCg>IgJ#_5@fOy8-EqfSvt=MIgH%1aSnJ19Pn(`fim(XTP?<-P}?Z zi?1$!ZLV|Bh>HWiR=7nT+~>=eAi|XvaO*9bd^`fDf@|O}RCPnQGDzCmmlMcjc+`w!B;2NtTmoW{&Lur3_ zpm0je9YWVo7fIj~iO!bF$qtBJSLh=xb&s0&4x z$3UxAA<~2Hh!!jth_TkG3#3|JpABEuLlIK7mTD+Nd%Zf94qO=tb23KojTu8k4c+dW4oVbzKJ5-MV^y@)e*RC11 z8(+?Ci!03KowZf!3TOPW@6BTygp*&kFnYW`m6-t14V%+WQn~QcgmsD!f~S*y$Qv?7 z7aO@Q(@gY2d4CGlgBqBYm;w$lL6V2_-ynZ5rRVytH`q)R#b!_2%O${^6;QI+%B`VezSGhx3~{9PNE zKVEJYFJty-#K9}1lN(Em)~$nrux7klp*q%s;qk>cBE}QqFL1 z@o7e|yLjVBB6<|=l6v7N%DrHdhY+AAz zE3;voQe)0%pD2P!X{sz&M4x0EV)>2J@4jYPf$nMJ%)Y=9+fvY-0LXDyDEsVjWvcFB z@2!U^(K;#x2GkAd;WX~it-?-DF^1?BE>NpELe$qS=5G}ZbEf>U(%JTctaZT;Yj!=@ z>PikMt9JNVV7*!^BV))6WT*uTJ7@O8S+g!?(kS>=U8Mrr)K9|N9)5C1KWV9*!!ZMc?yW?sBTfdyjbcl@>(tYjx?%tC708@b|M>9}5pYr%$A~Zhg`=Wu_Op0F+f74yN_ljoP-vAoNnQVe8Xr zA5E()r5Y)9vAR(oSA06{V`}LSfPwS6uU)6-6QE${^VSzhjoOG(lbebCW|NtI)*1&z zbE$^uUM>KY6vSv5k?)5ucGV1)*S64P+xYK|%E zmI>yr0!Q-q@qJLAM3r=srpQ*Xu@C4n7M6Aj>WE{M`kRfaw)?d7ia#?fIUil13~<%Sn3 zH+6(nrwWq7b}M3w$jwkIMNYAK4KK|@Nn(}!UqutrN2DM0bK&H)%|Wjnq4Qzf6=P4Y z8@0yJ_VBq}<9LCk)}?Qe#LWAAvcivH7g=oZJa>Qgl-69fr#(mvB_hE2S_b}Ibhr3F za@j?8Q2qY(zYb|Wq4n*TuElV+@PIe|KGf^^ebm-(*}2WW5e&MlTqF%n)yi?KB0@+2 zCk&LCC&&*c&39|8*SQ1~IJh(YN#`I~uGEw643UDUNh+?)1%+8KD9A^~?*PP{hA#w8 z@2H%`Guv8xjlk*1Dg;1XD7JnxY+rXUICz?dm}l1#)L z1ifeUZQ;bm+LVk%UDv%qz7{n(x(q3#ny!Nh{@&uxNyUSB2_rl^rIZGueuUUE}q3Ix}8+EFn zTw=>G*a+NY*Ij)ILaUtWRY2?-e8=S(m$6}jYbkpsC@Q1p>ljFz0x#h(igu12%*6`p zk5OB^ZRte1ydfSDpC^9DFBbo`7Dh#iC^)9bP`L6Jz>h|soO4W996UPU+zigWYnE#E zNZxeB4v|t|+I)*Q&%;x(mbN#!)4Ztt$gOFhUBg6cg9x2?s;C9_PpE&U9)}DN%w_74 z?d7~DyYM^V9S-2`J}h@PAMIDm^V7w%uMG91jg8Ag!QFcv)uj4P-Yb~qs<+e2A|xog zK>2kakY^DHtj<#l@ksxiAR`DTfqTwF);AeF=q!zD#7Xxx%+|m(rP_!xM?Wp6bgK55 zbV4uKH{S1gh)r34%W>xH5z5VtZB3a-QmYr<%S$`@h#USEu96v1VF$PsHa40xs%L9C2 zKBIjb(S6#gwUH5)qT~_D)j<>oH+i*EdKe)lsRVKfBDqbRH)toG5rbV`25uQE<0Q2| zsn%H>s7|(72A_)qOp&)Jt8{e-=C`4`(mPFxV4oOQW@$Lc+WBW;g_)vMmvJ=zKe)0-;H(Xh z^Hw3P(GNS_)=)6_+N>f;OC-1}I+s+F#(^LwNZAfxZd-(fqXt@~fq4(RfFQ-YdFu75 zF=&3`CXbu8I2h?-9_EGt+7J30d@5AFh5cfP3UT=TFJyHE{qB^lkSpxhmm%!%y#>u~ zQ=9~Ag^)~WfA0caHxE)&VbqzkgS3+bF2nl5rS1Z}Y)5c*-w_+AF}$tmu|#Ws(yXq2 zUbR%Pd8dD(cx-(s;kpu*3-2z_Se8(3lVoA|B-$9I=9Eelp>vVB2PrC;LZvZEIKYH(St#+Mu zO~Yzx2obUlJ;+ZY05E-m>E-paT7R7mwUS|YFQOpxcAV|*C+S*;9T)4AT9YM%q)%QQ zxI1ldH++{2tvJOE3dOPZYpjSfXD5fv8wt_4*cx9;vQA@(!VkLo#p&ycz>U~5a3NKZ ziNgg7a7xOm^6EsPTR2k%fGO6KU||U|rsktp;2N2NJpu}0r`QZ>0neivrML+l^I;-W zMx{7@&y}xQo3OjF*DyNvCyY3XRn4AApU1*=>8kO9F|e>-d`4Ubg%rQh9xMKGs$rbZ zwEw+<{V$pCB|!ncj)pE-pcaTI!XwH!}ddgx54hlJaBRISo~*%VXOd;2$QCKO1fYwf|NSq-LvEh6woX(d+a+tTupt1HLz+Y+pgi-K9G2dO z4?yO~)S0$xTO`tuY>YyaLuhtvuQF3TT9ms?_|=R*eG)s>G}Bo<5idN`{XU#PmFvM@ zt_*RsmgGU)gr!Jotr$0*^e~jIsADeTWyMnC40NBvg+Av}T&%ULpQ>CO)Y)pYAbA8o zi5^{P(^9&vPLF9pChIX4|A$iW80HjZ{l2` z^O0&%p;6v~Wg)UwG$wyINJQKdp_j02Xd`22=iB_!mC6!eVkoi#uG1=UP8V-w&Qc|H z_#~kUG|)^VWxRCmYgq2(6R4hcx%l*(0&!b-#bmLfoF-Cke40s#B01umT~uH}{eg2; z!I`<%J!f->oU}1)?^D18RqGxaXezHQY$=RHxf#5RqW4;|vZ=+SI7qLB)Qe}h*c57Q z^=M(n--B5t5V}>ohyMtnQqV&bLg2&ZW-Wc3PJ&FPj;_zb5EGy4Zv@{$!kO=}m4rfU zmpaY}3sJii`3JxG^phTo?w;E10^0mgAqJfok41Fdm>y^gRis`Jv?rE#n0Txiy2ZF{ z$j;y%tI8Bwwm@5Cdt-2NV!AY6)ok&{M$3KFC)pQO)ncYgNnTr1w(9JnKw=J2+1g)E zYj{B6Rb_0BEZHW7aunwBKmfW=A>6|71pa2Tvyd(QNV-P_UzM+udF!l|!W+q4*|vGx z-(e@3{ck~1INl}()4OS@K541YNMipu0q7+vOc zRRyYG0hTMmN*5AO62y>`Qnd_C7c$^T4RDZ2qF@F+&L10Tl9>aos?0$sp^~``=%Hwm zl)&gkm2ea(F@=$Q-N6q!{GYt{lO`FsvX)v^-84pTiIRv|j7L56;(tbLolUqN$>6~L(@n(JRWF8zyWh}c$cSb}2erBk? ziOYsq^F!o2(xl|TLuYjEVU(*9^nVHAy#pG$=}@;11bi`l!F39*9ZYbFD(}Zhkq=iV zE!pe5;QnF^$pq*?W^2*m36`Cq5$|l-2&qjPmS?lu`IjPgTYqn*H8wzED~pjjc~^8V zt#6m*v|P&F-l^mFE;@&=B;)(R`)`^=u+ai6w*b(Dz=m)^d76c3!*s>@*ao!V1vU!? ziEvkTNWgz2R>}y|jRBfx5C*QyiY$;S*ISuswj=^ zJ9*2eU)HKBTSSlQPHX4%Q%$S+;Tlz^K45n&U|^Xuw9st99H*F$WiKnv_6^2_TDHn! z9f-UaF9xo#FcHK{8*vcA0s6?cQVUnQA^gi_^HMw8TiGkor^;Ci0V9vNMSe)<$NO|Q zNg8kvRRN<%@c3Sb^3x{|oHx*)Gy-8EcYjSYwQSk85<{GM)wQZc%BomHr=dB5J+x*j z40IoiE6Q%3q#~OMgp6{|>^C=R?aBu3M-WEZK6?s&{$_FV)%-CRmZ5-#DjSqts=VU3 zDN&iVib|30Poym~o$x;O$KuyJMU85toUFY?kwCesqsg}n&3S(nYQCu&>HZvCu9JeqC|}FndBX=;x>m z)08k8$c{`O%sVV=%JB-`jpr$%<(9F7g&4S#ie zm@|Z%@_db&hjxdxxOycYT$4mQm7l^E8echH5%!}kfB7FTmS^8iKHvJS<0y>#v*1ru&Z29B`JR z2UKP%L`C0W!)pn9H|(OKTx0;Cympo4*#)(G!_tNp&y`6U~SRLqi+_RqG%;S0g)ZYU4zHmV&oZcLegY=*Qm_~{9BBI zBTG53HMg%aoaStAR+v1=E=G7S9T-FMvg)2B%rGFNDT;BziAS*T$VkJnHD4ovweC1(=u9-80N zSZdLsRpa3&4uwM@bvSqihJ{2YEKMf8GUy}=^(gZirYvI`*G6G=49v~O6+!gPSVSUw z4kj zMU^dnSTrJO81l^Op;ed8tY`*=RIVk0k|OZ}lCd79aT7-I>{e7`e7ZQwiy4?lxS_@0 zXO}$pjBNpdn5(_vMUlwlC&WH-J3~MRgDcB)@NqliOdacvMf4Z)hm~)@OX86uP@Ky% zzVy@!2jm!QC!I={uM9g(>3)QZz!uwzV~Aly*Grmhp-kA)#Rih#+i?A{55km|K33d6Dg z!fQ18E(dG2{9BnBz)>0u+Ad$N`B@r7)2S+W`|z5NDEFlmD^={KpQSsvK4U}UU=b1* z*$tP?p;^2mbFO2Z&0W_9Tv4`DFBtDVmqVMa$K}!dh3pHw&(+vah~OW>Ps}PgR{XoY z2#?GM_jgDm&seRAABN4H=+pdJEbw&BBevt~$-K+*o+bw(t7`@K)*D%S)w zqELDy-lpyv$sk`5o-iS+0-WlJU&kBTROL4T`hTcN|FG_h8_w#J8#*)0*2(5jE&0OhEfn58A$yyoEbE;&%iAQIu z{HK(ev`ci@Q=(+|C}&TPFE&DE$?_tV5s~b;Icsh3}E(V2z?%KwU_DO9nZ8)n$g|`viKda1JTx>{10C zxmG6A*I)tkrvNG;n>Xola3XnX-*3<14D^Xb`x>J}E?-v%%|&S99v9};BJW>gH{O$+ z*eqflgnCQqlf}`l0BcIVE^L(s6)UShu;*L2k+9Xgyj>==px?;$y<#}UuGp?G`FL?B zxE3O0Y5}EE2_c0sv2*A;i5d}v?yCsvWC!&f(J&(-kNLX~Ntmsmv?sJE(l8Bq~^sMXG^7I)}YN#vAGo02VH z;RP#i=yGVc^*5RGcwR6kb`OYZ8Vu*d9{R`dpX0q%`Gy0_kvoe)Kor&q)~c#in-rAE z-;66Q;wwm@U4GYZYSQING9q5CH{&iS8sAgzvBWw(nlvewV}gyNL$M8$qh)%p}JnvUPlP>d*Sgo@mLZ~pg~ds*n{ z&N%f;_^*sMrvfo4`WRv;5gVG-)Gm(jja>6)!)g`4stR7y zBC;KiaE6jhW(L(l2S{uBUfZ{;N|oYR$U&XcQu+e zE6zrw(w2!MaiPe>>OCJT37K&Pjra4fBNh9Ew}5E`>w%=)-xbxn{iCW@uq`lHBlSN8oS#@gcJ6mc)HF*U3!u~ z&K}%gv^EK|7@o>C+~gZErNG8aLQuYTQ7GB$DKH>+z$bU8i;a7cu`QczaMw>UB)*7l&1EAg99rH97l(#Ki4U9`rRG&d5zH8qx`(R~IaE*|)i zQ1q|YXJ19a+ptpJmk@+3ne4N%E-@ab3c}Se2pCboS+7;{e65>pBDkTLyH_P!lxLRs zW4Ps2x6H81Eo!r(i;>3McedW(?9#U1`1_uU41VRxy7GFy&G%AhRjlWoeE%er=$+cp z4XM?-;$MWR5@D7{8()HMh+Gid47?id&L!NImZRdtChjM`?{xB#OBMRjO#noOrE!MQ zlLkS($i>WZZyOo-VFzd{ljYlqe**B~FiqWNj4wR#y5wA^UZJK%vzmc0ExE{(fpX)z zQyzmA0ei85au@SID8V-L*Nn--77#Os?Y-zTI)b_JrFgIcNKKyMM-%`+)t zoH~`FQBXnFcu{P13lDSlXX1s_AlSOo0&DF%bn(PR^CG`!(uG!=v4wX3!}JmMSz}Qh zWQ!E?#r#?*Cxnm5gXS+G9669dj!A3gwz_{5 z<|{W=P{_OreC^ zjTW2bLb)db;FAI=*!$9e@au;05VhrVz#VdVVqU4`B+)``s3?jR;$Wz38A1#5T*aaK z4H5RGtSOM((t0e|no%NXPa@6ckifi}UudZHb4WZwrv*u|3Q~}!X3y~;saSKY8Wkr) zM@*AykZn_|Pg`MDV-Y%`5Esv(UPjveI4=>GP-A4T+- z4vF+V>7xsq`e=<_j57{K&hRez0VG$ z90#_XukH%lZ^vpg{iw18)Fa<4*Mf(V0?i%IpHQ9xO#B_&b!`&Sc@L<*D}osU!@PF6ZIwx5x#;+lQ-kD(Oiam3xy;Uawp~WqbvOqB>TUai%CyV^qt32W_8=vitEB zW|Tg)Isk|B-=RkH7QwZyPNa7Vnu5QC&CKQ!h=zvA<(SYy-jvOuSwfzJYkS9KU2*C^;#K>9K3Xo%d1bC=D4j$y1 z2S3q{f2Ipm2&P=l%1G21N(U&RmObK{KsSKMaO6r8wg*9@(}5Zk4fP^Q**HDWZj`nnhb8Dd@>}ZVa_qob1AZMl$qJatAgDAF zUAoaac2snCGKqG?fHNA=%3BEMs->xx*eX`DrK%pT&t7DCu%4x`isFWd1W`)IL4UNl z6~6>+)E4oK8!-H$fiVW*8!$Rqa6wj3Vmr zo(tmnxu|&$_We7R&Il?;W4zF5)e(s+=RUpkvO~}F1^->G15IKsW?&3OJ=Kxz;T1)b zg6NHf!X_?nf3I)tZc`j$Und>P6@kMT+7=J((X@lqSEFq79vhZ|^7v}yB6!5dXc)=d zy_4a-=Ug9w2n)$MK0S0{YLph!sU2_V?7j@T_c!Ys`O$g}sHMEM(q1^24G5;zA<~%2 z@w(QxIo=s*m?BO1=%n{H&CbUvZ=qu~W1y5QuN75Vo7!7Eyra^+)e0;ho_rj4%?!>v zPu>}P{WXBXwyg?tGJzxq&HBkqC{LStrC31iV5Z#Omze4^91oM3lk2e=VK7{gjLbJM z&bB^_5?N5AyAU^tT{1eFgwUAPHL6(lGYU9!%;m~>i&cJRvso^VU6q50vdt5Rpzw5% z9106++KVron#-UhFT`kuS&POd>^69Y=Pov9jq=to-|)gam|fp#&h^^i{1<0L`dZB@QJariNjweTdQV_SlA;QrZO$>=7f|C&$~m49$cJ&Me3*hLR8Oob0s2|Q5rCVbL!(6TC!x5ehuBy=8)Pm@^H3g~ zt*gSlGcP7LP3|^L5*BAvexNCwP!<6 z99bY48&OFKP{X&42@ihKswU=#%3b>HIoEVX#*oDH@#32m*X5M7n@E1=C6V!TxeV$@ zmvx!Uh1G8fK}k|OVz^Bwv-sFGM%0qcq>g^CQwSBg&p|Y=xE5;DzQ7N~X-KL^OR=_H znRp_6`!oF1#DY`Ctywq}P%$#$i%q7|L(^VSK7(q5FD3M35zEl1362)MTu>GJ!skdh|Vg_x= zo7c2Qh!xcVbR`fnBs6-u0ofy{qv;8eP_=Nz<7Hvlm5Tzf^9`xcCTGa_%!YW6gO3c`xMQ7|_A18u+pn_Hbj9#ReVq8uu ztfkat%opWX@4?PKNo<{o{D@6Q=gA0Wm1TZ19v5+N&*}N{8LI{0Ac8IwC02Oxd~xx@ zQl9-*?GG{6fBm0FIuI>BTO*1MiYuL>H7x_uj<-U`WG>Eu)6uO85NJkZLg%;Lhb${Z*gkBg;Etpg}5M_9eR)`aIb#$F;4jxU!HFUg-Qh8?-N_B zD1|AKQL>_e!fY4{pT22NtvT_i^2rfR=S@Oh2il!u&vKs6zdWG&@5TASi}m^i`v*); zHR|Q^`2ldCM|@8UF>CgFT7^#vdq@zk@uxgy(umt~HCVH4qSgN1Cg-ZYi#tcWNjhyO zK5?z8=j^f0-+`&Fef|MF4*+f`^*Q|XJ5_{3P8_gU3Wb2I%347yZ9_DZNez;aAyyKi zW>N)Mv%G$a{CXiH2S*X4~iwZ-LD%=fb8e;J@}uekcqI4x~B+B()KPo%kRLl<#ok&$~&tl5Cw zFB!iE`-(~%(8820G$KeU?p!6hPMxh($S}t}N{Ro1j00MHOGfdRIR|*~|H(ez7tU1r zHtM@>$3pZEb-j;ugN9T^C2Ozj&piCm<~}#uqd~cbh%UJzVvu-4q%y)ANESV68pI$| zp$o~i0H-xZc}ccJa>C3UkQz(Mkn|Sw-QYq&2xzE4@@Wq`4?2WCc=jhvEx7BP^7lEa zjPHWlpEM%{Cp6Wtnt`>t+RZ;vZ8&=6AyN6yP_|@{e8M1f?(GQ)?k-!fF`ab_eT5d~m4i*~m> z!&1(oXI8`IRoA z9Meyt@Fh-VUGq5Z`X!O%=z=?K1aos@O+^rpBTMh8#D=6!zKI%PfeKCf)kIA_3^sA0m|3Di;c0rvEj8iN z@4oxWUZ4=z=5QpPiJ~&={wLI8-3zTz4zaH@5ev=+512FY5TNo%;E9!9u?zWkcoe$kh!C8 z4~TFfv1WMyb&6Uyp3MO``||@Z#kX3l-R^FV>%76<9Qo3-EiiBPXtDWr{&4jI&U!R| zxc-{ht;O@r>{qK7>&=(z)7kHz96a^^*XsxC<6~VbIa`rBM?mZR(KpY&T%5dE&UD`K zzZY}k+A25=_q0Ts1$s@7oTJM5i3+O{sSsc{05QH1F{Xt2`EowHZ@A+%V)=vFfGTZf Jh`0fv{=X{$^WXpg literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-rocket/languages/rocket-ro_RO.po b/wp-content/plugins/wp-rocket/languages/rocket-ro_RO.po new file mode 100644 index 0000000..04377f7 --- /dev/null +++ b/wp-content/plugins/wp-rocket/languages/rocket-ro_RO.po @@ -0,0 +1,4268 @@ +# Copyright (C) 2016 WP Rocket +# This file is distributed under the same license as the WP Rocket package. +# Translators: +# wpmedia , 2019 +# Ciomîrtan Andrei , 2019 +# Dan Caragea , 2020 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: WP Rocket 3.4\n" +"Report-Msgid-Bugs-To: http://wp-rocket.me/\n" +"POT-Creation-Date: 2020-08-17 15:20-0400\n" +"PO-Revision-Date: 2019-08-26 15:14+0000\n" +"Last-Translator: Dan Caragea , 2020\n" +"Language-Team: Romanian (Romania) (https://www.transifex.com/wp-media/teams/18133/ro_RO/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ro_RO\n" +"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n" +"X-Generator: Poedit 1.8.11\n" +"X-Poedit-Basepath: ..\n" +"X-Poedit-KeywordsList: __;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c\n" +"X-Poedit-SearchPath-0: .\n" +"X-Poedit-SearchPathExcluded-0: assets\n" +"X-Poedit-SearchPathExcluded-1: src\n" +"X-Poedit-SearchPathExcluded-2: vendor\n" +"X-Poedit-SearchPathExcluded-3: node_modules\n" +"X-Poedit-SearchPathExcluded-4: tests\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Textdomain-Support: yes\n" + +#: inc/3rd-party/hosting/flywheel.php:18 inc/3rd-party/hosting/godaddy.php:18 +#: inc/3rd-party/hosting/pressidium.php:18 +#: inc/3rd-party/hosting/wp-serveur.php:27 +#: inc/ThirdParty/Hostings/Cloudways.php:90 +#: inc/ThirdParty/Hostings/O2Switch.php:49 +#: inc/ThirdParty/Hostings/Savvii.php:50 +#: inc/ThirdParty/Hostings/WPEngine.php:47 inc/deprecated/3.6.php:698 +#: inc/deprecated/3.6.php:1005 +#, php-format +msgid "" +"Your site is hosted on %s, we have enabled Varnish auto-purge for " +"compatibility." +msgstr "" +"Site-ul tău este găzduit pe %s, am activat ștergerea automată Varnish pentru" +" compatibilitate." + +#: inc/3rd-party/hosting/kinsta.php:161 +#, php-format +msgid "" +"Your installation seems to be missing core Kinsta files managing Cache " +"clearing and CDN, which will prevent your Kinsta installation and WP Rocket " +"from working correctly. Please get in touch with Kinsta support through your" +" %1$sMyKinsta%2$s account to resolve this issue." +msgstr "" +"Se pare că instalării tale îi lipsesc fișierele nucleului Kinsta care " +"administrează ștergerea cache-ului și CDN-ul, fără ele instalarea ta Kinsta " +"și WP Rocket nu pot să funcționeze corect. Te rog apelează la suportul " +"Kinsta prin contul tău %1$sMyKinsta%2$spentru a rezolva problema." + +#: inc/3rd-party/plugins/jetpack.php:86 +msgid "Jetpack XML Sitemaps" +msgstr "Hărți site XML Jetpack" + +#: inc/3rd-party/plugins/jetpack.php:88 +msgid "Preload the sitemap from the Jetpack plugin" +msgstr "Pre-încarcă hărțile site din modulul Jetpack" + +#: inc/3rd-party/plugins/jetpack.php:96 +#: inc/3rd-party/plugins/seo/all-in-one-seo-pack.php:89 +#: inc/3rd-party/plugins/seo/rank-math-seo.php:34 +#: inc/3rd-party/plugins/seo/seopress.php:86 +#: inc/3rd-party/plugins/seo/the-seo-framework.php:144 +#: inc/3rd-party/plugins/seo/yoast-seo.php:87 +#, php-format +msgid "" +"We automatically detected the sitemap generated by the %s plugin. You can " +"check the option to preload it." +msgstr "" +"Am detectat automat hărțile site generate de modulul %s. Poți bifa opțiunea " +"de a le pre-încărca." + +#: inc/3rd-party/plugins/seo/all-in-one-seo-pack.php:87 +msgid "All in One SEO XML sitemap" +msgstr "Hărți site XML All in One SEO" + +#: inc/3rd-party/plugins/seo/rank-math-seo.php:32 +msgid "Rank Math XML sitemap" +msgstr "Hărți site XML Rank Math" + +#: inc/3rd-party/plugins/seo/seopress.php:84 +msgid "SEOPress XML sitemap" +msgstr "Hărți site SEOPress" + +#: inc/3rd-party/plugins/seo/the-seo-framework.php:142 +msgid "The SEO Framework XML sitemap" +msgstr "Hărți site XML The SEO Framework" + +#: inc/3rd-party/plugins/seo/yoast-seo.php:85 +msgid "Yoast SEO XML sitemap" +msgstr "Hărți site XML Yoast SEO" + +#: inc/Addon/Cloudflare/APIClient.php:309 +msgid "Ops Cloudflare did not provide any reply. Please try again later." +msgstr "" +"Hopa, Cloudflare nu a dat niciun răspuns. Te rog reîncearcă mai târziu." + +#: inc/Addon/Cloudflare/APIClient.php:318 inc/deprecated/3.5.php:122 +#: inc/deprecated/3.5.php:179 +msgid "Incorrect Cloudflare email address or API key." +msgstr "Adresă email sau cheie API Cloudflare incorectă." + +#: inc/Addon/Cloudflare/APIClient.php:322 +#: inc/Addon/Cloudflare/APIClient.php:335 +#: inc/Addon/Cloudflare/Cloudflare.php:112 +#: inc/Addon/Cloudflare/Cloudflare.php:144 +#: inc/classes/subscriber/Tools/class-detect-missing-tags-subscriber.php:157 +#: inc/deprecated/3.5.php:102 inc/deprecated/3.5.php:126 +#: inc/deprecated/3.5.php:139 inc/deprecated/3.5.php:167 +#: inc/deprecated/3.5.php:183 +#, php-format +msgid "Read the %1$sdocumentation%2$s for further guidance." +msgstr "Citește %1$sdocumentația%2$s pentru îndrumări suplimentare." + +#: inc/Addon/Cloudflare/APIClient.php:324 +#: inc/Addon/Cloudflare/APIClient.php:337 +#: inc/Addon/Cloudflare/Cloudflare.php:101 +#: inc/Addon/Cloudflare/Cloudflare.php:114 +#: inc/Addon/Cloudflare/Cloudflare.php:146 inc/deprecated/3.5.php:91 +#: inc/deprecated/3.5.php:104 inc/deprecated/3.5.php:128 +#: inc/deprecated/3.5.php:141 inc/deprecated/3.5.php:169 +#: inc/deprecated/3.5.php:185 inc/deprecated/3.5.php:218 +msgid "" +"https://docs.wp-rocket.me/article/18-using-wp-rocket-with-" +"cloudflare/?utm_source=wp_plugin&utm_medium=wp_rocket#add-on" +msgstr "" +"https://docs.wp-rocket.me/article/18-using-wp-rocket-with-" +"cloudflare/?utm_source=wp_plugin&utm_medium=wp_rocket#add-on" + +#: inc/Addon/Cloudflare/APIClient.php:331 inc/deprecated/3.5.php:135 +msgid "Incorrect Cloudflare Zone ID." +msgstr "ID zonă Cloudflare incorect." + +#: inc/Addon/Cloudflare/Cloudflare.php:99 +#, php-format +msgid "" +"Cloudflare email and/or API key are not set. Read the %1$sdocumentation%2$s " +"for further guidance." +msgstr "" +"Emailul și/sau cheia API Cloudflare nu sunt setate. Pentru îndrumări " +"suplimentare, citește %1$sdocumentația%2$s." + +#: inc/Addon/Cloudflare/Cloudflare.php:108 inc/deprecated/3.5.php:98 +msgid "Missing Cloudflare Zone ID." +msgstr "Lipsește ID-ul zonei Cloudflare." + +#: inc/Addon/Cloudflare/Cloudflare.php:140 inc/deprecated/3.5.php:163 +msgid "It looks like your domain is not set up on Cloudflare." +msgstr "Se pare că domeniul tău nu este configurat pe Cloudflare." + +#: inc/Addon/Cloudflare/Subscriber.php:215 inc/deprecated/3.5.php:597 +#, php-format +msgid "WP Rocket: %s" +msgstr "WP Rocket: %s" + +#: inc/Addon/Cloudflare/Subscriber.php:220 inc/deprecated/3.5.php:602 +msgid "WP Rocket: Cloudflare cache successfully purged." +msgstr "" +"WP Rocket: cache-ul Cloudflare a fost șters cu succes." + +#: inc/Addon/Cloudflare/Subscriber.php:364 +#: inc/Addon/Cloudflare/Subscriber.php:370 +#: inc/Addon/Cloudflare/Subscriber.php:390 +#: inc/Addon/Cloudflare/Subscriber.php:401 +#: inc/Addon/Cloudflare/Subscriber.php:420 +#: inc/Addon/Cloudflare/Subscriber.php:426 +#: inc/Addon/Cloudflare/Subscriber.php:445 +#: inc/Addon/Cloudflare/Subscriber.php:451 +#: inc/Addon/Cloudflare/Subscriber.php:470 +#: inc/Addon/Cloudflare/Subscriber.php:476 +#: inc/Addon/Cloudflare/Subscriber.php:558 inc/admin/options.php:166 +#: inc/classes/subscriber/Tools/class-detect-missing-tags-subscriber.php:148 +msgid "WP Rocket: " +msgstr "WP Rocket: " + +#: inc/Addon/Cloudflare/Subscriber.php:364 +#, php-format +msgid "Cloudflare development mode error: %s" +msgstr "Eroare mod dezvoltare Cloudflare: %s" + +#: inc/Addon/Cloudflare/Subscriber.php:370 +#, php-format +msgid "Cloudflare development mode %s" +msgstr "Mod dezvoltare Cloudflare %s" + +#: inc/Addon/Cloudflare/Subscriber.php:390 +#, php-format +msgid "Cloudflare cache level error: %s" +msgstr "Eroare nivel de cache Cloudflare: %s" + +#: inc/Addon/Cloudflare/Subscriber.php:395 +msgctxt "Cloudflare caching level" +msgid "Standard" +msgstr "Standard" + +#: inc/Addon/Cloudflare/Subscriber.php:401 +#, php-format +msgid "Cloudflare cache level set to %s" +msgstr "Nivel de cache Cloudflare setat la %s" + +#: inc/Addon/Cloudflare/Subscriber.php:420 +#, php-format +msgid "Cloudflare minification error: %s" +msgstr "Eroare de minificare Cloudflare: %s" + +#: inc/Addon/Cloudflare/Subscriber.php:426 +#, php-format +msgid "Cloudflare minification %s" +msgstr "Minificare Cloudflare %s" + +#: inc/Addon/Cloudflare/Subscriber.php:445 +#, php-format +msgid "Cloudflare rocket loader error: %s" +msgstr "Eroare rocket loader Cloudflare: %s" + +#: inc/Addon/Cloudflare/Subscriber.php:451 +#, php-format +msgid "Cloudflare rocket loader %s" +msgstr "Rocket loader Cloudflare %s" + +#: inc/Addon/Cloudflare/Subscriber.php:470 +#, php-format +msgid "Cloudflare browser cache error: %s" +msgstr "Eroare cache navigator Cloudflare: %s" + +#: inc/Addon/Cloudflare/Subscriber.php:476 +#, php-format +msgid "Cloudflare browser cache set to %s seconds" +msgstr "Cache navigator Cloudflare setat la %s secunde" + +#: inc/Addon/FacebookTracking/Subscriber.php:87 +#: inc/Addon/GoogleTracking/Subscriber.php:132 +#: inc/Engine/HealthCheck/CacheDirSizeCheck.php:88 +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:92 +msgid "weekly" +msgstr "săptămânal" + +#: inc/Engine/Admin/Settings/Page.php:171 +msgid "Save Changes" +msgstr "Salvează modificările" + +#: inc/Engine/Admin/Settings/Page.php:171 +msgid "Validate License" +msgstr "Validează licența" + +#: inc/Engine/Admin/Settings/Page.php:236 +#: inc/Engine/Admin/Settings/Page.php:237 +msgid "Unavailable" +msgstr "Indisponibilă" + +#: inc/Engine/Admin/Settings/Page.php:341 inc/deprecated/deprecated.php:1789 +#: views/settings/page-sections/dashboard.php:73 +msgid "License" +msgstr "Licență" + +#: inc/Engine/Admin/Settings/Page.php:358 +msgid "API key" +msgstr "Cheie API" + +#: inc/Engine/Admin/Settings/Page.php:373 +msgid "Email address" +msgstr "Adresă email" + +#: inc/Engine/Admin/Settings/Page.php:399 +msgid "Dashboard" +msgstr "Panou control" + +#: inc/Engine/Admin/Settings/Page.php:400 +msgid "Get help, account info" +msgstr "Primești ajutor, informații despre cont" + +#: inc/Engine/Admin/Settings/Page.php:409 +msgid "My Status" +msgstr "Starea mea" + +#: inc/Engine/Admin/Settings/Page.php:419 views/settings/page.php:72 +msgid "Rocket Tester" +msgstr "Tester Rocket" + +#: inc/Engine/Admin/Settings/Page.php:420 +msgid "I am part of the WP Rocket Beta Testing Program." +msgstr "Iau parte la programul de testare WP Rocket Beta." + +#: inc/Engine/Admin/Settings/Page.php:428 views/settings/page.php:90 +msgid "Rocket Analytics" +msgstr "Analitice Rocket" + +#: inc/Engine/Admin/Settings/Page.php:430 +#, php-format +msgid "" +"I agree to share anonymous data with the development team to help improve WP" +" Rocket. %1$sWhat info will we collect?%2$s" +msgstr "" +"Sunt de acord să partajez date anonime cu echipa de dezvoltare pentru a " +"ajuta la îmbunătățirea WP Rocket. %1$sCe informații vom colecta?%2$s" + +#: inc/Engine/Admin/Settings/Page.php:454 inc/Engine/Cache/WPCache.php:347 +msgid "Cache" +msgstr "Cache" + +#: inc/Engine/Admin/Settings/Page.php:455 +msgid "Basic cache options" +msgstr "Opțiuni de bază pentru cache" + +#: inc/Engine/Admin/Settings/Page.php:462 +msgid "Mobile Cache" +msgstr "Cache pentru mobil" + +#: inc/Engine/Admin/Settings/Page.php:464 +msgid "Speed up your site for mobile visitors." +msgstr "" +"Îți accelerează site-ul pentru vizitatorii care folosesc dispozitive mobile." + +#: inc/Engine/Admin/Settings/Page.php:469 +msgid "" +"We detected you use a plugin that requires a separate cache for mobile, and " +"automatically enabled this option for compatibility." +msgstr "" +"Am detectat că folosești un modul care solicită un cache separat pentru " +"mobil și s-a activat automat această opțiune pentru compatibilitate." + +#: inc/Engine/Admin/Settings/Page.php:473 +msgid "User Cache" +msgstr "Cache utilizatori" + +#: inc/Engine/Admin/Settings/Page.php:476 +#, php-format +msgid "" +"%1$sUser cache%2$s is great when you have user-specific or restricted " +"content on your website." +msgstr "" +"%1$sCache utilizatori%2$s este foarte bun când ai conținut specific pentru " +"utilizatori sau conținut restricționat pe site-ul tău web." + +#: inc/Engine/Admin/Settings/Page.php:484 +msgid "Cache Lifespan" +msgstr "Durată de viață cache" + +#: inc/Engine/Admin/Settings/Page.php:487 +#, php-format +msgid "" +"Cache files older than the specified lifespan will be deleted.
      Enable " +"%1$spreloading%2$s for the cache to be rebuilt automatically after lifespan " +"expiration." +msgstr "" +"Fișierele cache mai vechi decât durata de viață specificată vor fi șterse. " +"
      Activează %1$spre-încărcarea%2$s pentru cache-ul care să fie reconstruit" +" automat după expirarea duratei de viață." + +#: inc/Engine/Admin/Settings/Page.php:501 +msgid "Enable caching for logged-in WordPress users" +msgstr "Activează cache pentru utilizatorii WordPress autentificați" + +#: inc/Engine/Admin/Settings/Page.php:509 +msgid "Enable caching for mobile devices" +msgstr "Activează cache pentru dispozitivele mobile" + +#: inc/Engine/Admin/Settings/Page.php:524 +msgid "Separate cache files for mobile devices" +msgstr "Separă fișierele cache pentru dispozitivele mobile" + +#: inc/Engine/Admin/Settings/Page.php:526 +#, php-format +msgid "" +"Most modern themes are responsive and should work without a separate cache. " +"Enable this only if you have a dedicated mobile theme or plugin. %1$sMore " +"info%2$s" +msgstr "" +"Majoritatea temelor moderne sunt responsive și ar trebui să funcționeze fără" +" un cache separat. Activează asta numai dacă ai o temă sau un modul dedicat " +"pentru dispozitive mobile. %1$sMai multe informații%2$s." + +#: inc/Engine/Admin/Settings/Page.php:542 +msgid "" +"Specify time after which the global cache is cleared
      (0 = unlimited )" +msgstr "" +"Specifică timpul după care cache-ul global este șters
      (0 = nelimitat)" + +#: inc/Engine/Admin/Settings/Page.php:544 +#, php-format +msgid "" +"Reduce lifespan to 10 hours or less if you notice issues that seem to appear" +" periodically. %1$sWhy?%2$s" +msgstr "" +"Reduci durata de viață la 10 ore sau mai puțin dacă remarci probleme care " +"par să apară periodic. %1$sDe ce?%2$s" + +#: inc/Engine/Admin/Settings/Page.php:550 +msgid "Minutes" +msgstr "Minute" + +#: inc/Engine/Admin/Settings/Page.php:551 +msgid "Hours" +msgstr "Ore" + +#: inc/Engine/Admin/Settings/Page.php:552 +msgid "Days" +msgstr "Zile" + +#: inc/Engine/Admin/Settings/Page.php:577 +#: views/settings/page-sections/tutorials.php:22 +msgid "File Optimization" +msgstr "Optimizare fișiere" + +#: inc/Engine/Admin/Settings/Page.php:578 +msgid "Optimize CSS & JS" +msgstr "Optimizează CSS și JS" + +#: inc/Engine/Admin/Settings/Page.php:585 +msgid "CSS Files" +msgstr "Fișiere CSS" + +#: inc/Engine/Admin/Settings/Page.php:592 +#: inc/Engine/Admin/Settings/Page.php:602 +#, php-format +msgid "" +"%1$s Minification is currently activated in Autoptimize. If" +" you want to use %2$s’s minification, disable those options in Autoptimize." +msgstr "" +"%1$sMinificarea este activată acum în Autoptimize. Dacă " +"vrei să folosești minificarea %2$s, dezactivează acele opțiuni în " +"Autoptimize." + +#: inc/Engine/Admin/Settings/Page.php:595 +msgid "JavaScript Files" +msgstr "Fișiere JavaScript" + +#: inc/Engine/Admin/Settings/Page.php:611 +msgid "Minify CSS files" +msgstr "Minifică fișierele CSS" + +#: inc/Engine/Admin/Settings/Page.php:612 +msgid "Minify CSS removes whitespace and comments to reduce the file size." +msgstr "" +"Minifică CSS înlătură spațiile goale și comentariile pentru a reduce " +"dimensiunea fișierului." + +#: inc/Engine/Admin/Settings/Page.php:625 +#: inc/Engine/Admin/Settings/Page.php:647 +#: inc/Engine/Admin/Settings/Page.php:729 +#: inc/Engine/Admin/Settings/Page.php:751 +msgid "This could break things!" +msgstr "Asta ar putea strica unele lucruri!" + +#: inc/Engine/Admin/Settings/Page.php:626 +#: inc/Engine/Admin/Settings/Page.php:648 +#: inc/Engine/Admin/Settings/Page.php:730 +#: inc/Engine/Admin/Settings/Page.php:752 +msgid "" +"If you notice any errors on your website after having activated this " +"setting, just deactivate it again, and your site will be back to normal." +msgstr "" +"Dacă după activarea acestei setări observi erori pe site-ul tău, trebuie " +"doar s-o dezactivezi și site-ul va reveni la normal." + +#: inc/Engine/Admin/Settings/Page.php:627 +msgid "Activate minify CSS" +msgstr "Activează minifică CSS" + +#: inc/Engine/Admin/Settings/Page.php:632 +msgid "Combine CSS files (Enable Minify CSS files to select)" +msgstr "" +"Combină fișierele CSS (activează Minifică fișierele CSS pentru a " +"selecta)" + +#: inc/Engine/Admin/Settings/Page.php:634 +#, php-format +msgid "" +"Combine CSS merges all your files into 1, reducing HTTP requests. Not " +"recommended if your site uses HTTP/2. %1$sMore info%2$s" +msgstr "" +"Combină CSS îmbină toate fișierele tale într-unul singur, reducând cererile " +"HTTP. Nu este recomandată dacă site-ul tău folosește HTTP/2. %1$sMai multe " +"informații%2$s" + +#: inc/Engine/Admin/Settings/Page.php:649 +msgid "Activate combine CSS" +msgstr "Activează combină CSS" + +#: inc/Engine/Admin/Settings/Page.php:654 inc/admin/options.php:125 +msgid "Excluded CSS Files" +msgstr "Fișiere CSS excluse" + +#: inc/Engine/Admin/Settings/Page.php:655 +msgid "" +"Specify URLs of CSS files to be excluded from minification and concatenation" +" (one per line)." +msgstr "" +"Specifică URL-urile fișierelor CSS care să fie excluse din minificare și " +"concatenare (câte unul pe un rând)." + +#: inc/Engine/Admin/Settings/Page.php:656 +msgid "" +"Internal: The domain part of the URL will be stripped " +"automatically. Use (.*).css wildcards to exclude all CSS files located at a " +"specific path." +msgstr "" +"Interne: Partea din URL care conține domeniul va fi " +"eliminată automat. Folosește metacaracterele (.*).css pentru a exclude toate" +" fișierele CSS localizate pe o anumită cale." + +#: inc/Engine/Admin/Settings/Page.php:658 +#, php-format +msgid "" +"3rd Party: Use either the full URL path or only the domain " +"name, to exclude external CSS. %1$sMore info%2$s" +msgstr "" +"Parte terță: pentru a exclude CSS-ul extern, folosește " +"calea completă a URL-ului sau doar numele de domeniu. %1$sMai multe " +"informații%2$s" + +#: inc/Engine/Admin/Settings/Page.php:671 +msgid "Optimize CSS delivery" +msgstr "Optimizează livrarea CSS" + +#: inc/Engine/Admin/Settings/Page.php:678 +#, php-format +msgctxt "WP Critical CSS compatibility" +msgid "" +"Optimize CSS Delivery is currently handled by the %1$s plugin. If you want " +"to use WP Rocket’s Optimize CSS Delivery option, disable the %1$s plugin." +msgstr "" +"În prezent, Optimizează livrarea CSS este gestionată de modulul %1$s. Dacă " +"vrei să folosești opțiunea Optimizează livrarea CSS oferită de WP Rocket, " +"dezactivează modulul %1$s." + +#: inc/Engine/Admin/Settings/Page.php:680 +#, php-format +msgid "" +"Optimize CSS delivery eliminates render-blocking CSS on your website for " +"faster perceived load time. %1$sMore info%2$s" +msgstr "" +"Optimizează livrarea CSS elimină CSS-ul care blochează randarea pe site-ul " +"tău web pentru un timp de încărcare mai rapid perceput. %1$sMai multe " +"informații%2$s" + +#: inc/Engine/Admin/Settings/Page.php:691 +msgid "Fallback critical CSS" +msgstr "CSS critic de rezervă" + +#: inc/Engine/Admin/Settings/Page.php:696 +#, php-format +msgid "" +"Provides a fallback if auto-generated critical path CSS is incomplete. " +"%1$sMore info%2$s" +msgstr "" +"Oferă o alternativă dacă CSS-ul de cale critic generat automat este " +"incomplet. %1$sMai multe informații%2$s" + +#: inc/Engine/Admin/Settings/Page.php:705 +msgid "Remove jQuery Migrate" +msgstr "Înlătură migrarea jQuery" + +#: inc/Engine/Admin/Settings/Page.php:707 +#, php-format +msgid "" +"Remove jQuery Migrate eliminates a JS file and can improve load time. " +"%1$sMore info%2$s" +msgstr "" +"Înlătură migrarea jQuery elimină un fișier JS și poate îmbunătăți timpul de " +"încărcare. %1$sMai multe informații%2$s." + +#: inc/Engine/Admin/Settings/Page.php:715 +msgid "Minify JavaScript files" +msgstr "Minifică fișierele JavaScript" + +#: inc/Engine/Admin/Settings/Page.php:716 +msgid "" +"Minify JavaScript removes whitespace and comments to reduce the file size." +msgstr "" +"Minifică JavaScript înlătură spațiile goale și comentariile pentru a reduce " +"dimensiunea fișierului." + +#: inc/Engine/Admin/Settings/Page.php:731 +msgid "Activate minify JavaScript" +msgstr "Activează minifică JavaScript" + +#: inc/Engine/Admin/Settings/Page.php:736 +msgid "" +"Combine JavaScript files (Enable Minify JavaScript files to select)" +msgstr "" +"Combină fișierele JavaScript (activează Minifică fișierele JavaScript " +"pentru a selecta)" + +#: inc/Engine/Admin/Settings/Page.php:738 +#, php-format +msgid "" +"Combine JavaScript files combines your site’s internal, 3rd party and inline" +" JS reducing HTTP requests. Not recommended if your site uses HTTP/2. " +"%1$sMore info%2$s" +msgstr "" +"Combină fișierele JavaScript îmbină resursele interne ale site-ului, " +"resursele terțe și JS-ul în-line, reducând cererile HTTP. Nu este recomandat" +" dacă site-ul tău folosește HTTP/2. %1$sMai multe informații%2$s" + +#: inc/Engine/Admin/Settings/Page.php:753 +msgid "Activate combine JavaScript" +msgstr "Activează combină JavaScript" + +#: inc/Engine/Admin/Settings/Page.php:758 inc/admin/options.php:126 +msgid "Excluded Inline JavaScript" +msgstr "JavaScript în-linie exclus" + +#: inc/Engine/Admin/Settings/Page.php:760 +#, php-format +msgid "" +"Specify patterns of inline JavaScript to be excluded from concatenation (one" +" per line). %1$sMore info%2$s" +msgstr "" +"Specifică structurile JavaScript în-line care să fie excluse din concatenare" +" (câte una pe un rând). %1$sMai multe informații%2$s" + +#: inc/Engine/Admin/Settings/Page.php:776 inc/admin/options.php:127 +msgid "Excluded JavaScript Files" +msgstr "Fișiere JavaScript excluse" + +#: inc/Engine/Admin/Settings/Page.php:777 +msgid "" +"Specify URLs of JavaScript files to be excluded from minification and " +"concatenation (one per line)." +msgstr "" +"Specifică URL-urile fișierelor JavaScript care să fie excluse din minificare" +" și concatenare (câte unul pe un rând)." + +#: inc/Engine/Admin/Settings/Page.php:778 +msgid "" +"Internal: The domain part of the URL will be stripped " +"automatically. Use (.*).js wildcards to exclude all JS files located at a " +"specific path." +msgstr "" +"Interne: Partea din URL care conține domeniul va fi " +"eliminată automat. Folosește metacaracterele (.*).js pentru a exclude toate " +"fișierele JS localizate pe o anumită cale." + +#: inc/Engine/Admin/Settings/Page.php:780 +#, php-format +msgid "" +"3rd Party: Use either the full URL path or only the domain " +"name, to exclude external JS. %1$sMore info%2$s" +msgstr "" +"Părți terțe: pentru a exclude JS-ul extern, folosește fie " +"calea completă a URL-ului ori fie numai numele de domeniu. %1$sMai multe " +"informații%2$s" + +#: inc/Engine/Admin/Settings/Page.php:796 +msgid "Load JavaScript deferred" +msgstr "Încarcă JavaScript întârziat" + +#: inc/Engine/Admin/Settings/Page.php:798 +#, php-format +msgid "" +"Load JavaScript deferred eliminates render-blocking JS on your site and can " +"improve load time. %1$sMore info%2$s" +msgstr "" +"Încarcă JavaScript întârziat elimină JS-ul care blochează randarea pe site-" +"ul tău și poate îmbunătăți timpul de încărcare. %1$sMai multe informații%2$s" + +#: inc/Engine/Admin/Settings/Page.php:809 +msgid "Safe Mode for jQuery (recommended)" +msgstr "Mod în siguranță pentru jQuery (recomandat)" + +#: inc/Engine/Admin/Settings/Page.php:810 +msgid "" +"Safe mode for jQuery for deferred JS ensures support for inline jQuery " +"references from themes and plugins by loading jQuery at the top of the " +"document as a render-blocking script.
      Deactivating may result in " +"broken functionality, test thoroughly!" +msgstr "" +"Modul în siguranță pentru jQuery pentru JS întârziat asigură suport pentru " +"referințele jQuery în-linie din teme și module prin încărcarea jQuery în " +"partea de sus a documentului ca script care blochează randarea. " +"
      Dezactivarea poate duce la o funcționare defectuoasă, testează " +"temeinic!
      " + +#: inc/Engine/Admin/Settings/Page.php:822 +msgid "Delay JavaScript execution" +msgstr "Întârzie executarea JavaScript" + +#: inc/Engine/Admin/Settings/Page.php:824 +#, php-format +msgid "" +"Improves performance by delaying the loading of JavaScript files until user " +"interaction (e.g. scroll, click). %1$sMore info%2$s" +msgstr "" +"Îmbunătățește performanța prin întârzierea încărcării fișierelor JavaScript " +"până la interacțiunea cu utilizatorul (de exemplu: derulează, dă clic). " +"%1$sMai multe informații%2$s" + +#: inc/Engine/Admin/Settings/Page.php:832 +msgid "Scripts to delay" +msgstr "Scripturi care să fie întârziate" + +#: inc/Engine/Admin/Settings/Page.php:833 +msgid "" +"Specify keywords that can identify inline or JavaScript files to be delayed " +"(one per line)." +msgstr "" +"Specifică cuvintele cheie care pot identifica fișierele în-line sau " +"JavaScript care să fie fi întârziate (câte unul pe o linie)." + +#: inc/Engine/Admin/Settings/Page.php:868 +msgid "Media" +msgstr "Media" + +#: inc/Engine/Admin/Settings/Page.php:869 +msgid "LazyLoad, emojis, embeds, WebP" +msgstr "Încărcare lentă, emoticoane, înglobări, WebP" + +#: inc/Engine/Admin/Settings/Page.php:878 +msgid "Avada" +msgstr "Avada" + +#: inc/Engine/Admin/Settings/Page.php:882 +msgid "Autoptimize" +msgstr "Autoptimize" + +#: inc/Engine/Admin/Settings/Page.php:927 +msgid "LazyLoad" +msgstr "Încărcare lentă" + +#: inc/Engine/Admin/Settings/Page.php:930 +#, php-format +msgid "" +"It can improve actual and perceived loading time as images, iframes, and " +"videos will be loaded only as they enter (or about to enter) the viewport " +"and reduces the number of HTTP requests. %1$sMore Info%2$s" +msgstr "" +"Acesta poate îmbunătăți timpul de încărcare real și perceput, deoarece " +"imaginile, iframe-urile și videourile vor fi încărcate numai în momentul în " +"care intră (sau urmează să intre) în fereastra de vizualizare, astfel se " +"reduce numărul de cereri HTTP. %1$sMai multe informații%2$s" + +#: inc/Engine/Admin/Settings/Page.php:937 +#, php-format +msgid "" +"LazyLoad is currently activated in %2$s. If you want to use WP Rocket’s " +"LazyLoad, disable this option in %2$s." +msgstr "" +"Încărcarea lentă este activată acum în %2$s. Dacă vrei să folosești " +"încărcarea lentă a imaginilor de la WP Rocket, dezactivează această opțiune " +"în %2$s." + +#: inc/Engine/Admin/Settings/Page.php:940 +msgid "Emoji 👻" +msgstr "Emoticon 👻" + +#: inc/Engine/Admin/Settings/Page.php:942 +msgid "" +"Use default emoji of visitor's browser instead of loading emoji from " +"WordPress.org" +msgstr "" +"Folosește emoticonul implicit al navigatorului vizitatorilor în loc de a " +"încărca emoticonul de la WordPress.org" + +#: inc/Engine/Admin/Settings/Page.php:946 +msgid "Embeds" +msgstr "Înglobări" + +#: inc/Engine/Admin/Settings/Page.php:948 +msgid "" +"Prevents others from embedding content from your site, prevents you from " +"embedding content from other (non-allowed) sites, and removes JavaScript " +"requests related to WordPress embeds" +msgstr "" +"Îi împiedică pe alții să înglobeze conținut de pe site-ul tău, te împiedică " +"să înglobezi conținut de pe alte site-uri (nepermise) și înlătură cererile " +"JavaScript legate de înglobările WordPress" + +#: inc/Engine/Admin/Settings/Page.php:952 +msgid "WebP compatibility" +msgstr "Compatibilitate cu WebP" + +#: inc/Engine/Admin/Settings/Page.php:956 +#, php-format +msgid "" +"Enable this option if you would like WP Rocket to serve WebP images to " +"compatible browsers. Please note that WP Rocket cannot create WebP images " +"for you. To create WebP images we recommend %1$sImagify%2$s. %3$sMore " +"info%2$s" +msgstr "" +"Activează această opțiune dacă vrei ca WP Rocket să servească imagini WebP " +"în navigatoarele compatibile. Reține că WP Rocket nu poate crea imagini WebP" +" pentru tine. Pentru a crea imagini WebP recomandăm %1$sImagify%2$s. %3$sMai" +" multe informații%2$s" + +#: inc/Engine/Admin/Settings/Page.php:983 +msgid "Enable for images" +msgstr "Activează pentru imagini" + +#: inc/Engine/Admin/Settings/Page.php:995 +#, php-format +msgid "" +"LazyLoad for images is currently activated in %2$s. If you want to use " +"%1$s’s LazyLoad, disable this option in %2$s." +msgstr "" +"Încărcarea lentă a imaginilor este activată acum în %2$s. Dacă vrei să " +"folosești încărcarea lentă a imaginilor de la %1$s, dezactivează această " +"opțiune în %2$s." + +#: inc/Engine/Admin/Settings/Page.php:1003 +msgid "Enable for iframes and videos" +msgstr "Activează pentru iframe-uri și videouri" + +#: inc/Engine/Admin/Settings/Page.php:1018 +msgid "Replace YouTube iframe with preview image" +msgstr "Înlocuiește iframe-ul YouTube cu imaginea de previzualizare" + +#: inc/Engine/Admin/Settings/Page.php:1019 +msgid "" +"This can significantly improve your loading time if you have a lot of " +"YouTube videos on a page." +msgstr "" +"Îți poate îmbunătăți semnificativ timpul de încărcare dacă ai o mulțime de " +"videouri YouTube pe o pagină." + +#: inc/Engine/Admin/Settings/Page.php:1029 +#, php-format +msgid "Replace YouTube iframe with preview image is not compatible with %2$s." +msgstr "" +"Înlocuiește iframe-ul YouTube cu imaginea de previzualizare nu este o " +"acțiune compatibilă cu %2$s." + +#: inc/Engine/Admin/Settings/Page.php:1033 +msgid "Disable Emoji" +msgstr "Dezactivează emoticoanele" + +#: inc/Engine/Admin/Settings/Page.php:1034 +msgid "Disable Emoji will reduce the number of external HTTP requests." +msgstr "Dezactivarea emoticoanelor va reduce numărul de cereri HTTP externe." + +#: inc/Engine/Admin/Settings/Page.php:1042 +msgid "Disable WordPress embeds" +msgstr "Dezactivează înglobările WordPress" + +#: inc/Engine/Admin/Settings/Page.php:1052 +#: inc/classes/subscriber/Media/class-webp-subscriber.php:362 +msgid "Enable WebP caching" +msgstr "Activează cache-ul pentru WebP" + +#: inc/Engine/Admin/Settings/Page.php:1072 inc/deprecated/deprecated.php:1776 +#: views/settings/page-sections/tutorials.php:30 +msgid "Preload" +msgstr "Pre-încărcare" + +#: inc/Engine/Admin/Settings/Page.php:1073 +msgid "Generate cache files, preload fonts" +msgstr "Generează fișiere cache, pre-încarcă fonturi" + +#: inc/Engine/Admin/Settings/Page.php:1084 +msgid "Preload Cache" +msgstr "Pre-încarcă cache" + +#: inc/Engine/Admin/Settings/Page.php:1087 +#, php-format +msgid "" +"When you enable preloading WP Rocket will generate the cache starting with " +"the links on your homepage followed by the sitemaps you specify. Preloading " +"is automatically triggered when you add or update content and can also be " +"manually triggered from the admin bar or from the %1$sWP Rocket " +"Dashboard%2$s." +msgstr "" +"Când activezi pre-încărcarea, WP Rocket va genera cache-ul pornind cu " +"legăturile din prima ta pagină și continuând cu hărțile site pe care le-ai " +"specificat. Pre-încărcarea este declanșată automat când adaugi conținut sau " +"îl actualizezi și poți s-o declanșezi manual și din bara de administrare sau" +" din %1$sPanoul de control WP Rocket%2$s." + +#: inc/Engine/Admin/Settings/Page.php:1095 +msgid "Prefetch DNS Requests" +msgstr "Pre-aduce cereri DNS" + +#: inc/Engine/Admin/Settings/Page.php:1097 +msgid "" +"DNS prefetching can make external files load faster, especially on mobile " +"networks" +msgstr "" +"Pre-aducerea DNS poate face ca fișierele externe să se încarce mai rapid, în" +" special în rețelele pentru mobil" + +#: inc/Engine/Admin/Settings/Page.php:1105 +msgid "Preload Fonts" +msgstr "Pre-încarcă fonturi" + +#: inc/Engine/Admin/Settings/Page.php:1108 +#, php-format +msgid "" +"Improves performance by helping browsers discover fonts in CSS files. " +"%1$sMore info%2$s" +msgstr "" +"Îmbunătățește performanța ajutând navigatoarele să descopere fonturi în " +"fișierele CSS. %1$sMai multe informații%2$s" + +#: inc/Engine/Admin/Settings/Page.php:1116 +msgid "Preload Links" +msgstr "Pre-încarcă legături" + +#: inc/Engine/Admin/Settings/Page.php:1119 +#, php-format +msgid "" +"Link preloading improves the perceived load time by downloading a page when " +"a user hovers over the link. %1$sMore info%2$s" +msgstr "" +"Pre-încărcarea legăturilor îmbunătățește timpul de încărcare perceput prin " +"descărcarea unei pagini atunci când un utilizator trece peste legătură. " +"%1$sMai multe informații%2$s" + +#: inc/Engine/Admin/Settings/Page.php:1133 +msgid "Activate Preloading" +msgstr "Activează pre-încărcarea" + +#: inc/Engine/Admin/Settings/Page.php:1152 +msgid "Activate sitemap-based cache preloading" +msgstr "Activează pre-încărcarea cache-ului pe baza hărților site" + +#: inc/Engine/Admin/Settings/Page.php:1171 +msgid "Sitemaps for preloading" +msgstr "Hărți site pentru pre-încărcare" + +#: inc/Engine/Admin/Settings/Page.php:1175 +msgid "Specify XML sitemap(s) to be used for preloading" +msgstr "" +"Specifică hărțile (harta) site XML care să fie folosite pentru pre-încărcare" + +#: inc/Engine/Admin/Settings/Page.php:1185 +msgid "URLs to prefetch" +msgstr "URL-uri de pre-adus" + +#: inc/Engine/Admin/Settings/Page.php:1186 +msgid "" +"Specify external hosts to be prefetched (no http:, one per " +"line)" +msgstr "" +"Specifică gazdele externe care să fie pre-aduse (fără http:, " +"una pe linie)" + +#: inc/Engine/Admin/Settings/Page.php:1195 +msgid "Fonts to preload" +msgstr "Fonturi pentru pre-încărcat" + +#: inc/Engine/Admin/Settings/Page.php:1196 +msgid "" +"Specify urls of the font files to be preloaded (one per line). Fonts must be" +" hosted on your own domain, or the domain you have specified on the CDN tab." +msgstr "" +"Specifică URL-urile fișierelor cu fonturi care trebuie preîncărcate (câte " +"unul pe o linie). Fonturile trebuie să fie găzduite pe propriu domeniu sau " +"pe domeniul specificat în fila CDN." + +#: inc/Engine/Admin/Settings/Page.php:1197 +msgid "" +"The domain part of the URL will be stripped automatically.
      Allowed font " +"extensions: otf, ttf, svg, woff, woff2." +msgstr "" +"Partea din URL care conține domeniul va fi eliminată automat.
      Extensii " +"de font permise: otf, ttf, svg, woff, woff2." + +#: inc/Engine/Admin/Settings/Page.php:1206 +msgid "Enable link preloading" +msgstr "Activează pre-încărcarea legăturilor" + +#: inc/Engine/Admin/Settings/Page.php:1225 +msgid "Advanced Rules" +msgstr "Reguli avansate" + +#: inc/Engine/Admin/Settings/Page.php:1226 +msgid "Fine-tune cache rules" +msgstr "Ajustează fin regulile cache" + +#: inc/Engine/Admin/Settings/Page.php:1235 +msgid "" +"Sensitive pages like custom login/logout URLs should be excluded from cache." +msgstr "" +"Paginile sensibile, cum ar fi URL-urile personalizate de " +"autentificare/dezautentificare, ar trebui să fie excluse din cache." + +#: inc/Engine/Admin/Settings/Page.php:1238 +msgctxt "plugin name" +msgid "WooCommerce" +msgstr "WooCommerce" + +#: inc/Engine/Admin/Settings/Page.php:1240 +msgctxt "plugin name" +msgid "Easy Digital Downloads" +msgstr "Easy Digital Downloads" + +#: inc/Engine/Admin/Settings/Page.php:1242 +msgctxt "plugin name" +msgid "iThemes Exchange" +msgstr "iThemes Exchange" + +#: inc/Engine/Admin/Settings/Page.php:1244 +msgctxt "plugin name" +msgid "Jigoshop" +msgstr "Jigoshop" + +#: inc/Engine/Admin/Settings/Page.php:1246 +msgctxt "plugin name" +msgid "WP-Shop" +msgstr "WP-Shop" + +#: inc/Engine/Admin/Settings/Page.php:1252 +#, php-format +msgid "" +"
      Cart, checkout and \"my account\" pages set in " +"%1$s%2$s%3$s will be detected and never cached by default." +msgstr "" +"
      Paginile coș de cumpărături, finalizare comandă și „contul meu” setate " +"în %1$s%2$s%3$s vor fi detectate și implicit nu sunt " +"memorate niciodată în cache." + +#: inc/Engine/Admin/Settings/Page.php:1262 inc/admin/options.php:128 +msgid "Never Cache URL(s)" +msgstr "Nu memora niciodată în cache URL-uri" + +#: inc/Engine/Admin/Settings/Page.php:1273 +msgid "Never Cache Cookies" +msgstr "Nu memora niciodată în cache cookie-uri" + +#: inc/Engine/Admin/Settings/Page.php:1278 inc/admin/options.php:129 +msgid "Never Cache User Agent(s)" +msgstr "Nu memora niciodată în cache agentul (agenții) utilizator" + +#: inc/Engine/Admin/Settings/Page.php:1283 inc/admin/options.php:130 +msgid "Always Purge URL(s)" +msgstr "Curăță întotdeauna URL-ul (URL-urile)" + +#: inc/Engine/Admin/Settings/Page.php:1292 +msgid "Cache Query String(s)" +msgstr "Memorează în cache șirul (șirurile) de interogare" + +#: inc/Engine/Admin/Settings/Page.php:1295 +#, php-format +msgid "" +"%1$sCache for query strings%2$s enables you to force caching for specific " +"GET parameters." +msgstr "" +"%1$sCache pentru șiruri de interogare%2$s îți permite să forțezi cache-ul " +"pentru parametrii GET specifici." + +#: inc/Engine/Admin/Settings/Page.php:1309 +msgid "" +"Specify URLs of pages or posts that should never be cached (one per line)" +msgstr "" +"Specifică URL-urile paginilor sau articolelor care nu ar trebui să fie " +"niciodată memorate în cache (unul pe linie)" + +#: inc/Engine/Admin/Settings/Page.php:1310 +#: inc/Engine/Admin/Settings/Page.php:1338 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*) " +"wildcards to address multiple URLs under a given path." +msgstr "" +"Partea din URL care conține domeniul va fi eliminată automat.
      Folosește " +"metacaracterele (.*) pentru a scrie adresa mai multor URL-uri pentru o cale " +"dată." + +#: inc/Engine/Admin/Settings/Page.php:1319 +msgid "" +"Specify the IDs of cookies that, when set in the visitor's browser, should " +"prevent a page from getting cached (one per line)" +msgstr "" +"Specifică ID-urile cookie-urilor care, atunci când sunt setate în " +"navigatorul vizitatorilor, ar trebui să împiedice o pagină să fie memorată " +"în cache (unul pe linie)" + +#: inc/Engine/Admin/Settings/Page.php:1327 +msgid "" +"Specify user agent strings that should never see cached pages (one per line)" +msgstr "" +"Specifică șirurile de agenți utilizator care nu ar trebui să vadă niciodată " +"pagini memorate în cache (unul pe linie)" + +#: inc/Engine/Admin/Settings/Page.php:1328 +msgid "Use (.*) wildcards to detect parts of UA strings." +msgstr "Folosește metacaractere (.*) pentru a detecta părți din șirurile UA." + +#: inc/Engine/Admin/Settings/Page.php:1337 +msgid "" +"Specify URLs you always want purged from cache whenever you update any post " +"or page (one per line)" +msgstr "" +"Specifică URL-urile care vrei să fie curățate întotdeauna din cache ori de " +"câte ori actualizezi un articol sau o pagină (unul pe linie)" + +#: inc/Engine/Admin/Settings/Page.php:1346 +msgid "Specify query strings for caching (one per line)" +msgstr "" +"Specifică șirurile de interogare pentru memorare în cache (unul pe linie)" + +#: inc/Engine/Admin/Settings/Page.php:1371 inc/deprecated/deprecated.php:1775 +msgid "Database" +msgstr "Bază de date" + +#: inc/Engine/Admin/Settings/Page.php:1372 +msgid "Optimize, reduce bloat" +msgstr "Optimizează, reduce dimensiunea" + +#: inc/Engine/Admin/Settings/Page.php:1381 +msgid "Post Cleanup" +msgstr "Curățare articole" + +#: inc/Engine/Admin/Settings/Page.php:1383 +msgid "" +"Post revisions and drafts will be permanently deleted. Do not use this " +"option if you need to retain revisions or drafts." +msgstr "" +"Reviziile și ciornele articolelor vor fi șterse definitiv. Nu folosi această" +" opțiune dacă trebuie să păstrezi reviziile sau ciornele." + +#: inc/Engine/Admin/Settings/Page.php:1391 +msgid "Comments Cleanup" +msgstr "Curățare comentarii" + +#: inc/Engine/Admin/Settings/Page.php:1393 +msgid "Spam and trashed comments will be permanently deleted." +msgstr "" +"Comentariile spam și comentariile aruncate la gunoi vor fi șterse definitiv." + +#: inc/Engine/Admin/Settings/Page.php:1397 +msgid "Transients Cleanup" +msgstr "Curățare tranzienți" + +#: inc/Engine/Admin/Settings/Page.php:1399 +msgid "" +"Transients are temporary options; they are safe to remove. They will be " +"automatically regenerated as your plugins require them." +msgstr "" +"Tranzienții sunt opțiuni temporare; pot fi înlăturați fără probleme. Vor fi " +"regenerați automat pe măsură ce modulele tale îi cer." + +#: inc/Engine/Admin/Settings/Page.php:1403 +msgid "Database Cleanup" +msgstr "Curățare bază de date" + +#: inc/Engine/Admin/Settings/Page.php:1405 +msgid "Reduces overhead of database tables" +msgstr "Reduce costul de funcționare a tabelelor din baza de date" + +#: inc/Engine/Admin/Settings/Page.php:1409 +msgid "Automatic cleanup" +msgstr "Curățare automată" + +#: inc/Engine/Admin/Settings/Page.php:1420 +#: inc/classes/admin/Database/class-optimization.php:41 +msgid "Revisions" +msgstr "Revizii" + +#: inc/Engine/Admin/Settings/Page.php:1422 +#, php-format +msgid "%s revision in your database." +msgid_plural "%s revisions in your database." +msgstr[0] "%s revizie în baza ta de date." +msgstr[1] "%s revizii în baza ta de date." +msgstr[2] "%s de revizii în baza ta de date." + +#: inc/Engine/Admin/Settings/Page.php:1430 +#: inc/classes/admin/Database/class-optimization.php:42 +msgid "Auto Drafts" +msgstr "Ciorne automate" + +#: inc/Engine/Admin/Settings/Page.php:1432 +#, php-format +msgid "%s draft in your database." +msgid_plural "%s drafts in your database." +msgstr[0] "%s ciornă în baza ta de date." +msgstr[1] "%s ciorne în baza ta de date." +msgstr[2] "%s de ciorne în baza ta de date." + +#: inc/Engine/Admin/Settings/Page.php:1440 +#: inc/classes/admin/Database/class-optimization.php:43 +msgid "Trashed Posts" +msgstr "Articole aruncate la gunoi" + +#: inc/Engine/Admin/Settings/Page.php:1442 +#, php-format +msgid "%s trashed post in your database." +msgid_plural "%s trashed posts in your database." +msgstr[0] "%s articol aruncat la gunoi în baza ta de date." +msgstr[1] "%s articole aruncate la gunoi în baza ta de date." +msgstr[2] "%s de articole aruncate la gunoi în baza ta de date." + +#: inc/Engine/Admin/Settings/Page.php:1450 +#: inc/classes/admin/Database/class-optimization.php:44 +msgid "Spam Comments" +msgstr "Comentarii spam" + +#: inc/Engine/Admin/Settings/Page.php:1452 +#, php-format +msgid "%s spam comment in your database." +msgid_plural "%s spam comments in your database." +msgstr[0] "%s comentariu spam în baza ta de date." +msgstr[1] "%s comentarii spam în baza ta de date." +msgstr[2] "%s de comentarii spam în baza ta de date." + +#: inc/Engine/Admin/Settings/Page.php:1460 +#: inc/classes/admin/Database/class-optimization.php:45 +msgid "Trashed Comments" +msgstr "Comentarii aruncate la gunoi" + +#: inc/Engine/Admin/Settings/Page.php:1462 +#, php-format +msgid "%s trashed comment in your database." +msgid_plural "%s trashed comments in your database." +msgstr[0] "%s comentariu aruncat la gunoi în baza ta de date." +msgstr[1] "%s comentarii aruncate la gunoi în baza ta de date." +msgstr[2] "%s de comentarii aruncate la gunoi în baza ta de date." + +#: inc/Engine/Admin/Settings/Page.php:1470 +#: inc/classes/admin/Database/class-optimization.php:46 +msgid "Expired transients" +msgstr "Tranzienți expirați" + +#: inc/Engine/Admin/Settings/Page.php:1472 +#, php-format +msgid "%s expired transient in your database." +msgid_plural "%s expired transients in your database." +msgstr[0] "%s tranzient expirat în baza ta de date." +msgstr[1] "%s tranzienți expirați în baza ta de date." +msgstr[2] "%s de tranzienți expirați în baza ta de date." + +#: inc/Engine/Admin/Settings/Page.php:1480 +msgid "All transients" +msgstr "Toți tranzienții" + +#: inc/Engine/Admin/Settings/Page.php:1482 +#, php-format +msgid "%s transient in your database." +msgid_plural "%s transients in your database." +msgstr[0] "%s tranzient în baza ta de date." +msgstr[1] "%s tranzienți în baza ta de date." +msgstr[2] "%s de tranzienți în baza ta de date." + +#: inc/Engine/Admin/Settings/Page.php:1490 +msgid "Optimize Tables" +msgstr "Optimizează tabelele" + +#: inc/Engine/Admin/Settings/Page.php:1492 +#, php-format +msgid "%s table to optimize in your database." +msgid_plural "%s tables to optimize in your database." +msgstr[0] "%s tabel de optimizat în baza ta de date." +msgstr[1] "%s tabele de optimizat în baza ta de date." +msgstr[2] "%s de tabele de optimizat în baza ta de date." + +#: inc/Engine/Admin/Settings/Page.php:1503 +msgid "Schedule Automatic Cleanup" +msgstr "Programează ștergerea automată" + +#: inc/Engine/Admin/Settings/Page.php:1515 +msgid "Frequency" +msgstr "Frecvență" + +#: inc/Engine/Admin/Settings/Page.php:1523 +msgid "Daily" +msgstr "Zilnic" + +#: inc/Engine/Admin/Settings/Page.php:1524 +msgid "Weekly" +msgstr "Săptămânal" + +#: inc/Engine/Admin/Settings/Page.php:1525 +msgid "Monthly" +msgstr "Lunar" + +#: inc/Engine/Admin/Settings/Page.php:1541 +#: inc/Engine/Admin/Settings/Page.php:1552 inc/admin/ui/meta-boxes.php:76 +#: inc/deprecated/deprecated.php:1773 +msgid "CDN" +msgstr "CDN" + +#: inc/Engine/Admin/Settings/Page.php:1542 +msgid "Integrate your CDN" +msgstr "Integrează-ți CDN-ul" + +#: inc/Engine/Admin/Settings/Page.php:1554 +msgid "" +"All URLs of static files (CSS, JS, images) will be rewritten to the CNAME(s)" +" you provide." +msgstr "" +"Toate URL-urile fișierelor statice (CSS, JS, imagini) vor fi rescrise în " +"CNAME-ul furnizat (CNAME-urile furnizate)." + +#: inc/Engine/Admin/Settings/Page.php:1556 +#, php-format +msgid "" +"Not required for services like Cloudflare and Sucuri. Please see our " +"available %1$sAdd-ons%2$s." +msgstr "" +"Nu este necesar pentru servicii cum ar fi Cloudflare și Sucuri. Te rog vezi " +"%1$ssuplimentele%2$s noastre disponibile." + +#: inc/Engine/Admin/Settings/Page.php:1571 inc/admin/options.php:131 +msgid "Exclude files from CDN" +msgstr "Exclude fișiere din CDN" + +#: inc/Engine/Admin/Settings/Page.php:1597 +#, php-format +msgid "" +"%1$s%2$s Add-on%3$s is currently enabled. Configuration of the CDN settings " +"is not required for %2$s to work on your site." +msgid_plural "" +"%1$s%2$s Add-ons%3$s are currently enabled. Configuration of the CDN " +"settings is not required for %2$s to work on your site." +msgstr[0] "" +"În prezent este activat %1$s%2$s supliment%3$s. Configurarea setărilor CDN " +"nu este necesară pentru ca %2$s să funcționeze pe site-ul tău. " +msgstr[1] "" +"În prezent sunt activate %1$s%2$s suplimente%3$s. Configurarea setărilor CDN" +" nu este necesară pentru ca %2$s să funcționeze pe site-ul tău." +msgstr[2] "" +"În prezent sunt activate %1$s%2$s de suplimente%3$s. Configurarea setărilor " +"CDN nu este necesară pentru ca %2$s să funcționeze pe site-ul tău." + +#: inc/Engine/Admin/Settings/Page.php:1622 +msgid "Enable Content Delivery Network" +msgstr "Activează rețeaua de livrare a conținutului" + +#: inc/Engine/Admin/Settings/Page.php:1631 +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:151 +msgid "CDN CNAME(s)" +msgstr "CNAME (CNAME-uri) CDN" + +#: inc/Engine/Admin/Settings/Page.php:1632 +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:152 +msgid "Specify the CNAME(s) below" +msgstr "Specifică CNAME-ul (CNAME-urile) mai jos" + +#: inc/Engine/Admin/Settings/Page.php:1639 +msgid "" +"Specify URL(s) of files that should not get served via CDN (one per line)." +msgstr "" +"Specifică URL-urile fișierelor care nu ar trebui să fie servite prin CDN " +"(unul pe linie)." + +#: inc/Engine/Admin/Settings/Page.php:1640 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*) " +"wildcards to exclude all files of a given file type located at a specific " +"path." +msgstr "" +"Partea din URL care conține domeniul va fi eliminată automat.
      Folosește " +"metacaracterele (.*) pentru a exclude toate fișierele unui tip de fișier dat" +" localizate pe o anumită cale." + +#: inc/Engine/Admin/Settings/Page.php:1662 +#: inc/Engine/Admin/Settings/Page.php:1670 +msgid "Heartbeat" +msgstr "Heartbeat" + +#: inc/Engine/Admin/Settings/Page.php:1663 +msgid "Control WordPress Heartbeat API" +msgstr "Controlează WordPress Heartbeat API" + +#: inc/Engine/Admin/Settings/Page.php:1671 +msgid "" +"Reducing or disabling the Heartbeat API’s activity can help save some of " +"your server’s resources." +msgstr "" +"Reducând sau dezactivând activitățile API-ului Heartbeat te poate ajuta să " +"nu mai folosești o parte din resursele serverului tău." + +#: inc/Engine/Admin/Settings/Page.php:1680 +msgid "Reduce or disable Heartbeat activity" +msgstr "Reduce sau dezactivează activitățile Heartbeat" + +#: inc/Engine/Admin/Settings/Page.php:1681 +msgid "" +"Reducing activity will change Heartbeat frequency from one hit each minute " +"to one hit every 2 minutes." +msgstr "" +"Reducerea activității va modifica frecvența Heartbeat de la o vizită în " +"fiecare minut la o vizită la fiecare 2 minute." + +#: inc/Engine/Admin/Settings/Page.php:1681 +msgid "" +"Disabling Heartbeat entirely may break plugins and themes using this API." +msgstr "" +"Dezactivarea completă a Heartbeat poate întrerupe funcționarea modulelor și " +"temelor când de folosește acest API." + +#: inc/Engine/Admin/Settings/Page.php:1695 +msgid "Do not limit" +msgstr "Nu limita" + +#: inc/Engine/Admin/Settings/Page.php:1696 +msgid "Reduce activity" +msgstr "Reduce activitatea" + +#: inc/Engine/Admin/Settings/Page.php:1697 +msgid "Disable" +msgstr "Dezactivează" + +#: inc/Engine/Admin/Settings/Page.php:1705 +msgid "Control Heartbeat" +msgstr "Controlează Heartbeat" + +#: inc/Engine/Admin/Settings/Page.php:1714 +msgid "Behavior in backend" +msgstr "Comportament în partea administrativă a sitului" + +#: inc/Engine/Admin/Settings/Page.php:1721 +msgid "Behavior in post editor" +msgstr "Comportament în editor de articole" + +#: inc/Engine/Admin/Settings/Page.php:1727 +msgid "Behavior in frontend" +msgstr "Comportament în partea din față a sitului" + +#: inc/Engine/Admin/Settings/Page.php:1743 +#: views/settings/page-sections/tutorials.php:36 +msgid "Add-ons" +msgstr "Suplimente" + +#: inc/Engine/Admin/Settings/Page.php:1744 +msgid "Add more features" +msgstr "Adaugă mai multe funcționalități" + +#: inc/Engine/Admin/Settings/Page.php:1751 +msgid "One-click Rocket Add-ons" +msgstr "Suplimente Rocket cu un singur clic" + +#: inc/Engine/Admin/Settings/Page.php:1752 +msgid "" +"One-Click Add-ons are features extending available options without " +"configuration needed. Switch the option \"on\" to enable from this screen." +msgstr "" +"Suplimentele cu un singur clic sunt funcționalități care extind opțiunile " +"disponibile fără a fi necesară o configurare. Comută opțiunea pe „pornit” " +"pentru a le activa din acest ecran." + +#: inc/Engine/Admin/Settings/Page.php:1762 +msgid "Rocket Add-ons" +msgstr "Suplimente Rocket" + +#: inc/Engine/Admin/Settings/Page.php:1763 +msgid "Rocket Add-ons are complementary features extending available options." +msgstr "" +"Suplimentele Rocket sunt funcționalități complementare care extind opțiunile" +" disponibile." + +#: inc/Engine/Admin/Settings/Page.php:1776 +msgid "Google Tracking" +msgstr "Urmărire Google" + +#: inc/Engine/Admin/Settings/Page.php:1782 +msgid "Improve browser caching for Google Analytics" +msgstr "Îmbunătățește cache-ul navigatorului pentru Google Analytics" + +#: inc/Engine/Admin/Settings/Page.php:1784 +#, php-format +msgid "" +"WP Rocket will host these Google scripts locally on your server to help " +"satisfy the PageSpeed recommendation for Leverage browser " +"caching.
      %1$sLearn more%2$s" +msgstr "" +"WP Rocket va găzdui aceste scripturi Google pe serverul tău pentru a " +"răspunde la recomandarea PageSpeed pentru Utilizează la maxim cache-ul " +"navigatorului.
      %1$sAflă mai multe%2$s" + +#: inc/Engine/Admin/Settings/Page.php:1799 +msgid "Facebook Pixel" +msgstr "Pixel Facebook" + +#: inc/Engine/Admin/Settings/Page.php:1805 +msgid "Improve browser caching for Facebook Pixel" +msgstr "Îmbunătățește cache-ul navigatorului pentru Pixel Facebook" + +#: inc/Engine/Admin/Settings/Page.php:1807 +#, php-format +msgid "" +"WP Rocket will host these Facebook Pixels locally on your server to help " +"satisfy the PageSpeed recommendation for Leverage browser " +"caching.
      %1$sLearn more%2$s" +msgstr "" +"WP Rocket va găzdui acest Pixel Facebook pe serverul tău pentru a ajuta să " +"te conformezi recomandării PageSpeed pentru Utilizează la maxim cache-ul" +" navigatorului.
      %1$sAflă mai mult%2$s" + +#: inc/Engine/Admin/Settings/Page.php:1820 +#: inc/Engine/Admin/Settings/Page.php:1921 +msgid "Cloudflare" +msgstr "Cloudflare" + +#: inc/Engine/Admin/Settings/Page.php:1826 +msgid "Integrate your Cloudflare account with this add-on." +msgstr "Integrează-ți contul Cloudflare cu acest supliment." + +#: inc/Engine/Admin/Settings/Page.php:1827 +msgid "" +"Provide your account email, global API key, and domain to use options such " +"as clearing the Cloudflare cache and enabling optimal settings with WP " +"Rocket." +msgstr "" +"Furnizează emailul contului, cheia API globală și domeniul pentru a folosi " +"câteva opțiuni, cum ar fi ștergerea cache-ului Cloudflare și activarea " +"setărilor optime cu WP Rocket." + +#: inc/Engine/Admin/Settings/Page.php:1861 +msgid "Varnish" +msgstr "Varnish" + +#: inc/Engine/Admin/Settings/Page.php:1867 +msgid "If Varnish runs on your server, you must activate this add-on." +msgstr "" +"Dacă Varnish rulează pe serverul tău, trebuie să activezi acest supliment." + +#: inc/Engine/Admin/Settings/Page.php:1869 +#, php-format +msgid "" +"Varnish cache will be purged each time WP Rocket clears its cache to ensure " +"content is always up-to-date.
      %1$sLearn more%2$s" +msgstr "" +"Cache-ul Varnish va fi șters de fiecare dată când WP Rocket își șterge " +"cache-ul, astfel conținutul este întotdeauna actualizat.
      %1$sAflă mai " +"mult%2$s" + +#: inc/Engine/Admin/Settings/Page.php:1883 +msgid "Clear the Sucuri cache when WP Rocket’s cache is cleared." +msgstr "Șterge cache-ul Sucuri când cache-ul WP Rocket este șters." + +#: inc/Engine/Admin/Settings/Page.php:1886 +msgid "" +"Provide your API key to clear the Sucuri cache when WP Rocket’s cache is " +"cleared." +msgstr "" +"Furnizează cheia ta API pentru a șterge cache-ul Sucuri când cache-ul WP " +"Rocket este șters." + +#: inc/Engine/Admin/Settings/Page.php:1894 +#: inc/Engine/Admin/Settings/Page.php:2038 +msgid "Sucuri" +msgstr "Sucuri" + +#: inc/Engine/Admin/Settings/Page.php:1900 +msgid "Synchronize Sucuri cache with this add-on." +msgstr "Sincronizează cache-ul Sucuri cu acest supliment." + +#: inc/Engine/Admin/Settings/Page.php:1938 +msgid "Cloudflare credentials" +msgstr "Date de conectare Cloudflare" + +#: inc/Engine/Admin/Settings/Page.php:1947 +msgid "Cloudflare settings" +msgstr "Setări Cloudflare" + +#: inc/Engine/Admin/Settings/Page.php:1961 +msgctxt "Cloudflare" +msgid "Global API key:" +msgstr "Cheie API globală:" + +#: inc/Engine/Admin/Settings/Page.php:1962 +msgctxt "Cloudflare" +msgid "Find your API key" +msgstr "Găsește-ți cheia API" + +#: inc/Engine/Admin/Settings/Page.php:1974 +msgctxt "Cloudflare" +msgid "Account email" +msgstr "Email cont" + +#: inc/Engine/Admin/Settings/Page.php:1983 +msgctxt "Cloudflare" +msgid "Zone ID" +msgstr "ID zonă" + +#: inc/Engine/Admin/Settings/Page.php:1993 +msgid "Development mode" +msgstr "Mod dezvoltare" + +#: inc/Engine/Admin/Settings/Page.php:1995 +#, php-format +msgid "" +"Temporarily activate development mode on your website. This setting will " +"automatically turn off after 3 hours. %1$sLearn more%2$s" +msgstr "" +"Activează temporar modul dezvoltare pe site-ul tău web. Această setare va fi" +" oprită automat după 3 ore. %1$sAflă mai mult%2$s" + +#: inc/Engine/Admin/Settings/Page.php:2003 +msgid "Optimal settings" +msgstr "Setări optime" + +#: inc/Engine/Admin/Settings/Page.php:2004 +msgid "" +"Automatically enhances your Cloudflare configuration for speed, performance " +"grade and compatibility." +msgstr "" +"Îți îmbunătățește automat configurarea Cloudflare pentru viteză, grad de " +"performanță și compatibilitate." + +#: inc/Engine/Admin/Settings/Page.php:2012 +msgid "Relative protocol" +msgstr "Protocol relativ" + +#: inc/Engine/Admin/Settings/Page.php:2013 +msgid "" +"Should only be used with Cloudflare's flexible SSL feature. URLs of static " +"files (CSS, JS, images) will be rewritten to use // instead of http:// or " +"https://." +msgstr "" +"Ar trebui să fie folosit numai cu funcționalitatea SSL flexibil de la " +"Cloudflare. URL-urile fișierelor statice (CSS, JS, imagini) vor fi rescrise " +"pentru a folosi // în loc de http:// sau https://." + +#: inc/Engine/Admin/Settings/Page.php:2051 +msgid "Sucuri credentials" +msgstr "Date de conectare Sucuri" + +#: inc/Engine/Admin/Settings/Page.php:2064 +msgctxt "Sucuri" +msgid "" +"Firewall API key (for plugin), must be in format {32 characters}/{32 " +"characters}:" +msgstr "" +"Cheia API pentru firewall (pentru modul) trebuie să fie în formatul de " +"{32 de caractere}/{32 de caractere}:" + +#: inc/Engine/Admin/Settings/Page.php:2065 +msgctxt "Sucuri" +msgid "Find your API key" +msgstr "Găsește-ți cheia API" + +#: inc/Engine/Admin/Settings/Render.php:461 inc/deprecated/deprecated.php:1294 +msgid "Upload file and import settings" +msgstr "Încarcă fișierul și importă setările" + +#: inc/Engine/Admin/Settings/Settings.php:400 +msgid "" +"Sucuri Add-on: The API key for the Sucuri firewall must be in format " +"{32 characters}/{32 characters}." +msgstr "" +"Supliment Sucuri: cheia API pentru firewall-ul Sucuri trebuie să fie în " +"formatul {32 de caractere}/{32 de caractere}." + +#: inc/Engine/Admin/Settings/Settings.php:491 +#: inc/deprecated/deprecated.php:1245 +msgid "Settings saved." +msgstr "Setări salvate." + +#: inc/Engine/Admin/Settings/Subscriber.php:141 +#: inc/deprecated/deprecated.php:1786 +#: views/settings/page-sections/tools.php:33 +msgid "Tools" +msgstr "Unelte" + +#: inc/Engine/Admin/Settings/Subscriber.php:142 +msgid "Import, Export, Rollback" +msgstr "Import, export, restaurare" + +#: inc/Engine/Admin/Settings/Subscriber.php:163 +#: views/settings/page-sections/imagify.php:14 +msgid "Image Optimization" +msgstr "Optimizare imagini" + +#: inc/Engine/Admin/Settings/Subscriber.php:164 +msgid "Compress your images" +msgstr "Comprimă-ți imaginile" + +#: inc/Engine/Admin/Settings/Subscriber.php:181 +#: views/settings/page-sections/tutorials.php:45 +msgid "Tutorials" +msgstr "Tutoriale" + +#: inc/Engine/Admin/Settings/Subscriber.php:182 +msgid "Getting started and how to videos" +msgstr "Noțiuni de bază și cum să vezi videourile" + +#: inc/Engine/CDN/RocketCDN/APIClient.php:154 +msgid "RocketCDN is not available at the moment. Please retry later" +msgstr "" +"RocketCDN nu este disponibil în acest moment. Te rog încearcă mai târziu" + +#: inc/Engine/CDN/RocketCDN/APIClient.php:171 +msgid "RocketCDN cache purge failed: Missing identifier parameter." +msgstr "" +"Ștergerea cache-ului RocketCDN a eșuat: lipsește parametrul de identificare." + +#: inc/Engine/CDN/RocketCDN/APIClient.php:180 +msgid "RocketCDN cache purge failed: Missing user token." +msgstr "" +"Ștergerea cache-ului RocketCDN a eșuat: lipsește tokenul utilizatorului." + +#: inc/Engine/CDN/RocketCDN/APIClient.php:199 +msgid "" +"RocketCDN cache purge failed: The API returned an unexpected response code." +msgstr "" +"Ștergerea cache-ului RocketCDN a eșuat: API-ul a returnat un cod de răspuns " +"neașteptat." + +#: inc/Engine/CDN/RocketCDN/APIClient.php:208 +msgid "RocketCDN cache purge failed: The API returned an empty response." +msgstr "" +"Ștergerea cache-ului RocketCDN a eșuat: API-ul a returnat un răspuns gol." + +#: inc/Engine/CDN/RocketCDN/APIClient.php:217 +msgid "RocketCDN cache purge failed: The API returned an unexpected response." +msgstr "" +"Ștergerea cache-ului RocketCDN a eșuat: API-ul a returnat un răspuns " +"neașteptat." + +#: inc/Engine/CDN/RocketCDN/APIClient.php:226 +#, php-format +msgid "RocketCDN cache purge failed: %s." +msgstr "Ștergerea cache-ului RocketCDN a eșuat: %s." + +#: inc/Engine/CDN/RocketCDN/APIClient.php:234 +msgid "RocketCDN cache purge successful." +msgstr "Ștergerea cache-ului RocketCDN s-a făcut cu succes." + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:82 +msgid "Next Billing Date" +msgstr "Următoarea dată de facturare" + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:91 +msgid "No Subscription" +msgstr "Niciun abonament" + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:127 +msgid "Your RocketCDN subscription is currently active." +msgstr "Abonamentul tău RocketCDN este în prezent activ." + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:133 +#, php-format +msgid "To use RocketCDN, replace your CNAME with %1$s%2$s%3$s." +msgstr "Pentru a folosi RocketCDN, înlocuiește CNAME cu %1$s%2$s%3$s." + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:144 +#, php-format +msgid "%1$sMore Info%2$s" +msgstr "%1$sMai multe informații%2$s" + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:190 +msgid "Manage Subscription" +msgstr "Administrează abonamentul" + +#: inc/Engine/CDN/RocketCDN/RESTSubscriber.php:137 +msgid "RocketCDN enabled" +msgstr "RocketCDN activat" + +#: inc/Engine/CDN/RocketCDN/RESTSubscriber.php:160 +msgid "RocketCDN disabled" +msgstr "RocketCDN dezactivat" + +#: inc/Engine/Cache/AdminSubscriber.php:118 inc/admin/admin.php:71 +#: inc/admin/admin.php:92 inc/deprecated/3.5.php:908 +msgid "Clear this cache" +msgstr "Șterge acest cache" + +#: inc/Engine/Cache/WPCache.php:330 +msgid "WP_CACHE value" +msgstr "Valoare WP_CACHE" + +#: inc/Engine/Cache/WPCache.php:351 +msgid "" +"The WP_CACHE constant needs to be set to true for WP Rocket cache to work " +"properly" +msgstr "" +"Pentru ca WP Rocket să funcționeze așa cum trebuie, constanta WP_CACHE " +"trebuie să fie setată la „true”." + +#: inc/Engine/Cache/WPCache.php:360 +msgid "WP_CACHE is set to true" +msgstr "WP_CACHE este setată la „true”" + +#: inc/Engine/Cache/WPCache.php:368 +msgid "WP_CACHE is not set" +msgstr "WP_CACHE nu este setată" + +#: inc/Engine/Cache/WPCache.php:376 +msgid "WP_CACHE is set to false" +msgstr "WP_CACHE este setată la „false”" + +#: inc/Engine/CriticalPath/APIClient.php:64 +#, php-format +msgid "Critical CSS for %1$s not generated. Error: %2$s" +msgstr "CSS-ul critic pentru %1$s nu a fost generat. Eroare: %2$s" + +#: inc/Engine/CriticalPath/APIClient.php:170 +#: inc/Engine/CriticalPath/DataManager.php:66 +#, php-format +msgid "" +"Critical CSS for %1$s on mobile not generated. Error: The API returned an " +"empty response." +msgstr "" +"CSS-ul critic pentru %1$s nu a fost generat pentru dispozitive mobile. " +"Eroare: API-ul a returnat un răspuns gol." + +#: inc/Engine/CriticalPath/APIClient.php:173 +#: inc/Engine/CriticalPath/DataManager.php:69 +#, php-format +msgid "" +"Critical CSS for %1$s not generated. Error: The API returned an empty " +"response." +msgstr "" +"CSS-ul critic pentru %1$s nu a fost generat. Eroare: API-ul a returnat un " +"răspuns gol." + +#: inc/Engine/CriticalPath/APIClient.php:185 +#, php-format +msgid "Critical CSS for %1$s on mobile not generated." +msgstr "" +"CSS-ul critic pentru %1$s nu a fost generat pentru dispozitive mobile." + +#: inc/Engine/CriticalPath/APIClient.php:187 +#: inc/Engine/CriticalPath/ProcessorService.php:193 +#, php-format +msgid "Critical CSS for %1$s not generated." +msgstr "CSS-ul critic pentru %1$s nu a fost generat." + +#: inc/Engine/CriticalPath/APIClient.php:195 +#, php-format +msgid "" +"Critical CSS for %1$s on mobile not generated. Error: The API returned an " +"invalid response code." +msgstr "" +"CSS-ul critic pentru %1$s nu a fost generat pentru dispozitive mobile. " +"Eroare: API-ul a returnat un cod de răspuns invalid." + +#: inc/Engine/CriticalPath/APIClient.php:197 +#, php-format +msgid "" +"Critical CSS for %1$s not generated. Error: The API returned an invalid " +"response code." +msgstr "" +"CSS-ul critic pentru %1$s nu a fost generat. Eroare: API-ul a returnat un " +"cod de răspuns invalid." + +#: inc/Engine/CriticalPath/APIClient.php:205 +#: inc/Engine/CriticalPath/ProcessorService.php:200 +#, php-format +msgid "Error: %1$s" +msgstr "Eroare: %1$s" + +#: inc/Engine/CriticalPath/Admin/Admin.php:260 +msgid "Regenerate Critical Path CSS" +msgstr "Regenerează CSS-ul de cale critic" + +#: inc/Engine/CriticalPath/Admin/Post.php:132 +#: views/cpcss/metabox/generate.php:47 +msgid "Generate Specific CPCSS" +msgstr "Generează un anumit CSS de cale critic" + +#: inc/Engine/CriticalPath/Admin/Post.php:133 +#: views/cpcss/metabox/generate.php:45 +msgid "Regenerate specific CPCSS" +msgstr "Regenerează un anumit CSS de cale critic" + +#: inc/Engine/CriticalPath/Admin/Post.php:199 +msgid "%l to use this feature." +msgstr "%l pentru a folosi această funcționalitate." + +#: inc/Engine/CriticalPath/Admin/Post.php:202 +#, php-format +msgid "Publish the %s" +msgstr "Publică %s" + +#: inc/Engine/CriticalPath/Admin/Post.php:203 +msgid "Enable Optimize CSS delivery in WP Rocket settings" +msgstr "Activează Optimizează livrarea CSS în setările WP Rocket" + +#: inc/Engine/CriticalPath/Admin/Post.php:204 +msgid "Enable Optimize CSS delivery in the options above" +msgstr "Activează Optimizează livrarea CSS în opțiunile de mai sus" + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:147 +msgid "Critical CSS generation is currently running." +msgstr "Generarea CSS-ului critic rulează acum." + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:152 +#: inc/Engine/Preload/PreloadSubscriber.php:242 +#, php-format +msgid "Go to the %1$sWP Rocket settings%2$s page to track progress." +msgstr "Mergi la pagina %1$sSetări WP Rocket%2$s pentru a urmări progresul." + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:366 +#, php-format +msgid "" +"Critical CSS generation is currently running: %1$d of %2$d page types " +"completed. (Refresh this page to view progress)" +msgstr "" +"Generarea CSS-ului critic rulează acum: %1$d din %2$d tipuri de pagină au " +"fost finalizate. (Reîmprospătează această pagină pentru a vedea progresul.)" + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:438 +#, php-format +msgid "Critical CSS generation finished for %1$d of %2$d page types." +msgstr "" +"Generarea CSS-ului critic s-a terminat pentru %1$d din %2$d tipuri de " +"pagină." + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:445 +msgid "Critical CSS generation encountered one or more errors." +msgstr "Generarea CSS-ului critic a întâmpinat una sau mai multe erori." + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:445 +msgid "Learn more." +msgstr "Află mai mult." + +#: inc/Engine/CriticalPath/DataManager.php:102 +msgid "Critical CSS file for mobile does not exist" +msgstr "Fișierul CSS critic pentru dispozitive mobile nu există" + +#: inc/Engine/CriticalPath/DataManager.php:104 +msgid "Critical CSS file does not exist" +msgstr "Fișierul CSS critic nu există" + +#: inc/Engine/CriticalPath/DataManager.php:116 +msgid "Critical CSS file for mobile cannot be deleted" +msgstr "Fișierul CSS critic pentru dispozitive mobile nu poate fi șters" + +#: inc/Engine/CriticalPath/DataManager.php:118 +msgid "Critical CSS file cannot be deleted" +msgstr "Fișierul CSS critic nu poate fi șters" + +#: inc/Engine/CriticalPath/ProcessorService.php:186 +#, php-format +msgid "Mobile Critical CSS for %1$s not generated." +msgstr "CSS-ul critic mobil pentru %1$s nu a fost generat." + +#: inc/Engine/CriticalPath/ProcessorService.php:227 +#, php-format +msgid "Critical CSS for %s in progress." +msgstr "CSS-ul critic pentru %s este în desfășurare." + +#: inc/Engine/CriticalPath/ProcessorService.php:261 +#, php-format +msgid "Mobile Critical CSS for %s generated." +msgstr "CSS-ul critic mobil pentru %s a fost generat." + +#: inc/Engine/CriticalPath/ProcessorService.php:272 +#, php-format +msgid "Critical CSS for %s generated." +msgstr "CSS-ul critic pentru %s a fost generat." + +#: inc/Engine/CriticalPath/ProcessorService.php:294 +msgid "Critical CSS file deleted successfully." +msgstr "Fișierul CSS critic a fost șters cu succes." + +#: inc/Engine/CriticalPath/ProcessorService.php:316 +#, php-format +msgid "Mobile Critical CSS for %1$s timeout. Please retry a little later." +msgstr "" +"CSS-ul critic mobil pentru %1$s a expirat. Te rog încearcă un pic mai " +"târziu." + +#: inc/Engine/CriticalPath/ProcessorService.php:329 +#, php-format +msgid "Critical CSS for %1$s timeout. Please retry a little later." +msgstr "" +"CSS-ul critic pentru %1$s a expirat. Te rog încearcă un pic mai târziu." + +#: inc/Engine/CriticalPath/RESTWP.php:141 +msgid "Mobile CPCSS generation not enabled." +msgstr "" +"Generarea CSS-ului de cale critic pentru dispozitive mobile nu este " +"activată." + +#: inc/Engine/CriticalPath/RESTWPPost.php:36 +#: inc/Engine/CriticalPath/RESTWPPost.php:69 +msgid "Requested post does not exist." +msgstr "Articolul cerut nu există." + +#: inc/Engine/CriticalPath/RESTWPPost.php:46 +msgid "Cannot generate CPCSS for unpublished post." +msgstr "Nu pot genera CSS-ul de cale critic pentru articole nepublicate." + +#: inc/Engine/HealthCheck/HealthCheck.php:82 inc/deprecated/3.5.php:868 +msgid "" +"The following scheduled event failed to run. This may indicate the CRON " +"system is not running properly, which can prevent some WP Rocket features " +"from working as intended:" +msgid_plural "" +"The following scheduled events failed to run. This may indicate the CRON " +"system is not running properly, which can prevent some WP Rocket features " +"from working as intended:" +msgstr[0] "" +"Următorul eveniment programat a eșuat în timpul rulării. Acest lucru poate " +"indica că sistemul CRON nu funcționează corect și poate împiedica unele " +"funcționalități WP Rocket să lucreze așa cum ar trebui:" +msgstr[1] "" +"Următoarele evenimente programate au eșuat în timpul rulării. Acest lucru " +"poate indica că sistemul CRON nu funcționează corect și poate împiedica " +"unele funcționalități WP Rocket să lucreze așa cum ar trebui:" +msgstr[2] "" +"Următoarele evenimente programate au eșuat în timpul rulării. Acest lucru " +"poate indica că sistemul CRON nu funcționează corect și poate împiedica " +"unele funcționalități WP Rocket să lucreze așa cum ar trebui:" + +#: inc/Engine/HealthCheck/HealthCheck.php:88 inc/deprecated/3.5.php:877 +msgid "Please contact your host to check if CRON is working." +msgstr "" +"Te rog contactează serviciul tău de găzduire pentru a verifica dacă CRON " +"funcționează." + +#: inc/Engine/HealthCheck/HealthCheck.php:142 +msgid "Scheduled Cache Purge" +msgstr "Ștergere cache programată" + +#: inc/Engine/HealthCheck/HealthCheck.php:143 +msgid "Scheduled Database Optimization" +msgstr "Optimizare bază de date programată" + +#: inc/Engine/HealthCheck/HealthCheck.php:144 +msgid "Database Optimization Process" +msgstr "Proces de optimizare a bazei de date" + +#: inc/Engine/HealthCheck/HealthCheck.php:145 +msgctxt "noun" +msgid "Preload" +msgstr "Pre-încărcare" + +#: inc/Engine/HealthCheck/HealthCheck.php:146 +msgid "Critical Path CSS Generation Process" +msgstr "Proces de generare CSS de cale critic" + +#: inc/Engine/Optimization/DelayJS/Admin/Settings.php:92 +msgid "Restore Defaults" +msgstr "Restaurează valorile implicite" + +#: inc/Engine/Preload/Homepage.php:153 +#, php-format +msgid "" +"Preload encountered an error. Could not gather links on %1$s because of the " +"following error: %2$s. %3$sLearn more%4$s." +msgstr "" +"Pre-încărcarea a întâmpinat o eroare. Nu am putut colecta legături din %1$s " +"din cauza următoarei erori: %2$s. %3$sAflă mai multe%4$s." + +#: inc/Engine/Preload/Homepage.php:166 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: %2$s. Security measures could be preventing access. " +"%3$sLearn more%4$s." +msgstr "" +"Pre-încărcarea a întâmpinat o eroare. %1$s nu este accesibilă din cauza " +"următorului cod de răspuns: %2$s. Măsurile de securitate ar putea împiedica " +"accesul. %3$sAflă mai multe%4$s." + +#: inc/Engine/Preload/Homepage.php:172 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: 404. Please make sure your homepage is accessible in your " +"browser. %2$sLearn more%3$s." +msgstr "" +"Pre-încărcarea a întâmpinat o eroare. %1$s nu este accesibilă din cauza " +"următorului cod de răspuns: 404. Te rog asigură-te că prima ta pagină este " +"accesibilă în navigator. %2$sAflă mai multe%3$s." + +#: inc/Engine/Preload/Homepage.php:178 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: 500. Please check with your web host about server access. " +"%2$sLearn more%3$s." +msgstr "" +"Pre-încărcarea a întâmpinat o eroare. %1$s nu este accesibilă din cauza " +"următorului cod de răspuns: 500. Te rog verifică împreună cu gazda ta web " +"accesul la server. %2$sAflă mai multe%3$s." + +#: inc/Engine/Preload/Homepage.php:184 +#, php-format +msgid "" +"Preload encountered an error. Could not gather links on %1$s because it " +"returned the following response code: %2$s. %3$sLearn more%4$s." +msgstr "" +"Pre-încărcarea a întâmpinat o eroare. Nu am putut colecta legături din %1$s " +"deoarece colectarea a returnat următorul cod de răspuns: %2$s. %3$sAflă mai " +"multe%4$s." + +#: inc/Engine/Preload/PreloadSubscriber.php:237 +msgid "Preload: WP Rocket has started preloading your website." +msgstr "Pre-încărcare: WP Rocket a început pre-încărcarea site-ului tău web." + +#: inc/Engine/Preload/PreloadSubscriber.php:283 +#, php-format +msgid "" +"Preload: %1$s uncached page has now been preloaded. (refresh to see " +"progress)" +msgid_plural "" +"Preload: %1$s uncached pages have now been preloaded. (refresh to see " +"progress)" +msgstr[0] "" +"Pre-încărcare: %1$s pagină nememorată în cache a fost acum preîncărcată " +"(reîmprospătează pentru a vedea progresul)." +msgstr[1] "" +"Pre-încărcare: %1$s pagini nememorate în cache au fost acum preîncărcate " +"(reîmprospătează pentru a vedea progresul)." +msgstr[2] "" +"Pre-încărcare: %1$s de pagini nememorate în cache au fost acum preîncărcate " +"(reîmprospătează pentru a vedea progresul)." + +#: inc/Engine/Preload/PreloadSubscriber.php:292 +msgid "The following error happened during gathering of the URLs to preload:" +msgid_plural "" +"The following errors happened during gathering of the URLs to preload:" +msgstr[0] "" +"A apărut următoarea eroare în timpul colectării URL-urilor pentru pre-" +"încărcare:" +msgstr[1] "" +"Au apărut următoarele erori în timpul colectării URL-urilor pentru pre-" +"încărcare:" +msgstr[2] "" +"Au apărut următoarele erori în timpul colectării URL-urilor pentru pre-" +"încărcare:" + +#: inc/Engine/Preload/PreloadSubscriber.php:344 +#, php-format +msgid "Preload complete: %d pages have been cached." +msgstr "Pre-încărcare completă: %d de pagini au fost memorate în cache." + +#: inc/Engine/Preload/Sitemap.php:150 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not gather links on %1$s because" +" of the following error: %2$s. %3$sLearn more%4$s." +msgstr "" +"Pre-încărcarea hărților site a întâmpinat o eroare. Nu am putut colecta " +"legături din %1$s din cauza următoarei erori:%2$s. %3$sAflă mai multe%4$s." + +#: inc/Engine/Preload/Sitemap.php:165 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: %2$s. Security measures could be preventing access." +" %3$sLearn more%4$s." +msgstr "" +"Pre-încărcarea hărții site a întâmpinat o eroare. %1$s nu este accesibilă " +"din cauza următorului cod de răspuns: %2$s. Măsurile de securitate ar putea " +"împiedica accesul. %3$sAflă mai multe%4$s." + +#: inc/Engine/Preload/Sitemap.php:170 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: 404. Please make sure you entered the correct " +"sitemap URL and it is accessible in your browser. %2$sLearn more%3$s." +msgstr "" +"Pre-încărcarea hărții site a întâmpinat o eroare. %1$s nu este accesibilă " +"din cauza următorului cod de răspuns: 404. Te rog asigură-te că ai introdus " +"URL-ul corect și că acesta este accesibil în navigator. %2$sAflă mai " +"multe%3$s." + +#: inc/Engine/Preload/Sitemap.php:175 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: 500. Please check with your web host about server " +"access. %2$sLearn more%3$s." +msgstr "" +"Pre-încărcarea hărții site a întâmpinat o eroare. %1$s nu este accesibilă " +"din cauza următorului cod de răspuns: 500. Te rog verifică împreună cu gazda" +" ta web accesul la server. %2$sAflă mai multe%3$s." + +#: inc/Engine/Preload/Sitemap.php:180 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not gather links on %1$s because" +" it returned the following response code: %2$s. %3$sLearn more%4$s." +msgstr "" +"Pre-încărcarea hărții site a întâmpinat o eroare. Nu am putut colecta " +"legături din %1$s deoarece colectarea a returnat următorul cod de răspuns: " +"%2$s. %3$sAflă mai multe%4$s." + +#: inc/Engine/Preload/Sitemap.php:196 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not collect links from %1$s " +"because the file is empty. %2$sLearn more%3$s." +msgstr "" +"Pre-încărcarea hărții site a întâmpinat o eroare. Nu am putut colecta " +"legături din %1$s deoarece fișierul este gol. %2$sAflă mai multe%3$s." + +#: inc/Engine/Preload/Sitemap.php:217 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not collect links from %1$s " +"because of an error during the XML sitemap parsing. %2$sLearn more%3$s." +msgstr "" +"Pre-încărcarea hărții site a întâmpinat o eroare. Nu am putut colecta " +"legături din %1$s din cauza unei erori în timpul interpretării hărții site " +"XML. %2$sAflă mai multe%3$s." + +#: inc/Engine/Preload/SitemapPreloadSubscriber.php:120 +#, php-format +msgid "" +"%1$sSimpleXML PHP extension%2$s is not enabled on your server. Please " +"contact your host to enable it before running sitemap-based cache " +"preloading." +msgstr "" +"%1$sExtensia PHP SimpleXML%2$s nu este activată pe serverul tău. Te rog " +"contactează serviciul tău de găzduire pentru a o activa înainte de a executa" +" pre-încărcarea în cache a hărților site-ului." + +#: inc/ThirdParty/Hostings/Cloudways.php:82 +#, php-format +msgid "" +"Varnish auto-purge will be automatically enabled once Varnish is enabled on " +"your %s server." +msgstr "" +"Ștergerea automată Varnish va fi activată automat pe serverul tău %s după ce" +" Varnish este activat. " + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:78 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"Please deactivate the following %s option which conflicts with WP Rocket " +"features:" +msgid_plural "" +"Please deactivate the following %s options which conflict with WP Rocket " +"features:" +msgstr[0] "" +"Te rog dezactivează %s opțiune care intră în conflict cu funcționalitățile " +"WP Rocket:" +msgstr[1] "" +"Te rog dezactivează următoarele %s opțiuni care intră în conflict cu " +"funcționalitățile WP Rocket:" +msgstr[2] "" +"Te rog dezactivează următoarele %s de opțiuni care intră în conflict cu " +"funcționalitățile WP Rocket:" + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:151 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sdisable emoji%3$s conflicts with WP Rockets %2$sdisable emoji%3$s" +msgstr "" +"%2$sDezactivează emoticoanele%3$s %1$s intră în conflict cu %2$sdezactivează" +" emoticoanele%3$s WP Rockets" + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:187 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sGZIP compression%3$s conflicts with WP Rocket %2$sGZIP " +"compression%3$s" +msgstr "" +"%2$sCompresia GZIP%3$s %1$s intră în conflict cu %2$scompresia GZIP%3$s WP " +"Rocket" + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:223 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sbrowser caching%3$s conflicts with WP Rocket %2$sbrowser " +"caching%3$s" +msgstr "" +"%2$scache-ul navigatorului%3$s %1$s intră în conflict cu %2$scache-ul " +"navigatorului%3$s WP Rocket" + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:255 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$spage caching%3$s conflicts with WP Rocket %2$spage caching%3$s" +msgstr "" +"%2$sCache-ul paginilor%3$s %1$s intră în conflict cu %2$scache-ul " +"paginilor%3$s WP Rocket" + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:289 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sasset optimization%3$s conflicts with WP Rocket %2$sfile " +"optimization%3$s" +msgstr "" +"%2$sOptimizarea resurselor%3$s %1$s intră în conflict cu %2$soptimizarea " +"resurselor%3$s WP Rocket" + +#: inc/ThirdParty/Plugins/Smush.php:110 inc/ThirdParty/Plugins/Smush.php:128 +msgid "Smush" +msgstr "Smush" + +#: inc/admin/admin.php:18 inc/common/admin-bar.php:367 +#: inc/deprecated/deprecated.php:1787 +msgid "Support" +msgstr "Suport" + +#: inc/admin/admin.php:20 +msgid "Docs" +msgstr "Documentații" + +#: inc/admin/admin.php:22 inc/common/admin-bar.php:355 +msgid "FAQ" +msgstr "Întrebări frecvente" + +#: inc/admin/admin.php:24 inc/common/admin-bar.php:64 +msgid "Settings" +msgstr "Setări" + +#: inc/admin/admin.php:225 inc/admin/admin.php:240 +#: inc/classes/class-wp-rocket-requirements-check.php:203 +#: inc/classes/class-wp-rocket-requirements-check.php:214 +#, php-format +msgid "%s Update Rollback" +msgstr "Actualizează restaurarea %s" + +#: inc/admin/admin.php:266 +#, php-format +msgid "%1$sReturn to WP Rocket%2$s or %3$sgo to Plugins page%2$s" +msgstr "%1$sÎntoarce-te la WP Rocket%2$s sau %3$smergi la pagina Module%2$s" + +#: inc/admin/admin.php:503 +msgid "Settings import failed: you do not have the permissions to do this." +msgstr "Importul setărilor a eșuat: nu ai permisiunea de a face asta." + +#: inc/admin/admin.php:507 +msgid "Settings import failed: no file uploaded." +msgstr "Importul setărilor a eșuat: niciun fișier încărcat." + +#: inc/admin/admin.php:511 +msgid "Settings import failed: incorrect filename." +msgstr "Importul setărilor a eșuat: nume fișier incorect." + +#: inc/admin/admin.php:522 +msgid "Settings import failed: incorrect filetype." +msgstr "Importul setărilor a eșuat: tip de fișier incorect." + +#: inc/admin/admin.php:532 +msgid "Settings import failed: " +msgstr "Importul setărilor a eșuat: " + +#: inc/admin/admin.php:548 +msgid "Settings import failed: unexpected file content." +msgstr "Importul setărilor a eșuat: conținut neașteptat pentru fișier." + +#: inc/admin/admin.php:569 +msgid "Settings imported and saved." +msgstr "Setările au fost importate și salvate." + +#: inc/admin/options.php:149 +#, php-format +msgid "%1$s: %2$s." +msgstr "%1$s: %2$s." + +#: inc/admin/options.php:159 +msgid "The following pattern is invalid and has been removed:" +msgid_plural "The following patterns are invalid and have been removed:" +msgstr[0] "Următorul model este invalid și a fost înlăturat:" +msgstr[1] "Următoarele modele sunt invalide și au fost înlăturate:" +msgstr[2] "Următoarele modele sunt invalide și au fost înlăturate:" + +#: inc/admin/ui/meta-boxes.php:14 inc/admin/ui/notices.php:767 +#: inc/common/admin-bar.php:85 inc/common/admin-bar.php:137 +#: views/settings/page-sections/dashboard.php:124 +msgid "Clear cache" +msgstr "Șterge cache" + +#: inc/admin/ui/meta-boxes.php:36 +msgid "WP Rocket Options" +msgstr "Opțiuni WP Rocket" + +#: inc/admin/ui/meta-boxes.php:65 +msgid "Never cache this page" +msgstr "Nu memora niciodată în cache această pagină" + +#: inc/admin/ui/meta-boxes.php:69 +msgid "Activate these options on this post:" +msgstr "Activează aceste opțiuni pentru acest articol:" + +#: inc/admin/ui/meta-boxes.php:72 +msgid "LazyLoad for images" +msgstr "Încărcare lentă pentru imagini" + +#: inc/admin/ui/meta-boxes.php:73 +msgid "LazyLoad for iframes/videos" +msgstr "Încărcare lentă pentru iframe-uri/videouri" + +#: inc/admin/ui/meta-boxes.php:74 +msgid "Minify/combine CSS" +msgstr "Minifică/combină CSS" + +#: inc/admin/ui/meta-boxes.php:75 +msgid "Minify/combine JS" +msgstr "Minifică/combină JS" + +#: inc/admin/ui/meta-boxes.php:77 +msgid "Optimize CSS Delivery" +msgstr "Optimizează livrarea CSS" + +#: inc/admin/ui/meta-boxes.php:78 +msgid "Defer JS" +msgstr "Amână JS" + +#: inc/admin/ui/meta-boxes.php:84 +#, php-format +msgid "Activate first the %s option." +msgstr "Activează mai întâi opțiunea %s." + +#: inc/admin/ui/meta-boxes.php:100 +#, php-format +msgid "" +"%1$sNote:%2$s None of these options will be applied if this post has been " +"excluded from cache in the global cache settings." +msgstr "" +"%1$sNotă:%2$s niciuna dintre aceste opțiuni nu va fi aplicată dacă acest " +"articol a fost exclus din cache în setările globale privind cache-ul." + +#: inc/admin/ui/notices.php:25 inc/admin/ui/notices.php:38 +#, php-format +msgid "" +"%1$s has not been deactivated due to missing writing permissions.
      \n" +"Make %2$s writeable and retry deactivation, or force deactivation now:" +msgstr "" +"%1$s nu a fost dezactivat deoarece lipsesc permisiunile de scriere.
      \n" +"Fă ca %2$s să poată fi scris și reîncearcă dezactivarea sau forțează dezactivarea acum:" + +#: inc/admin/ui/notices.php:91 +#, php-format +msgid "" +"%s: One or more plugins have been enabled or disabled, " +"clear the cache if they affect the front end of your site." +msgstr "" +"%s: unul sau mai multe module au fost activate sau " +"dezactivate, șterge cache-ul dacă ele afectează partea din față a site-ului." + +#: inc/admin/ui/notices.php:183 +msgid "" +"WP Rocket Cloudflare Add-on provides similar functionalities. They can not " +"be active at the same time." +msgstr "" +"Suplimentele Cloudflare WP Rocket oferă funcționalități similare. Ele nu pot" +" fi active în același timp." + +#: inc/admin/ui/notices.php:207 +#, php-format +msgid "" +"%s: The following plugins are not compatible with this " +"plugin and may cause unexpected results:" +msgstr "" +"%s: următoarele module nu sunt compatibile cu acest modul " +"și pot duce la rezultate neașteptate:" + +#: inc/admin/ui/notices.php:213 +msgid "Deactivate" +msgstr "Dezactivează" + +#: inc/admin/ui/notices.php:255 +msgid "" +"WP Rocket Footer JS is not an official add-on. It prevents some options in " +"WP Rocket from working correctly. Please deactivate it if you have problems." +msgstr "" +"WP Rocket Footer JS nu este un supliment oficial. El împiedică unele opțiuni" +" din WP Rocket să funcționeze corect. Te rog dezactivează-l dacă ai " +"probleme." + +#: inc/admin/ui/notices.php:295 +#, php-format +msgid "" +"Endurance Cache is currently enabled, which will conflict with WP Rocket " +"Cache. Please set the Endurance Cache cache level to Off (Level 0) on the " +"%1$sSettings > General%2$s page to prevent any issues." +msgstr "" +"În prezent, Endurance Cache este activat și va intra în conflict cu cache-ul" +" WP Rocket. Te rog setează nivelul de cache la Oprit (nivel 0) pentru " +"Endurance Cache în pagina %1$sSetări > Generale%2$s pentru a nu avea " +"probleme." + +#: inc/admin/ui/notices.php:316 +#, php-format +msgid "" +"%1$s: A custom permalink structure is required for the plugin to work " +"properly. %2$sGo to permalinks settings%3$s" +msgstr "" +"%1$s: pentru ca modulul să funcționeze cum trebuie, este necesară o " +"structură personalizată pentru legăturile permanente. %2$sDu-te la setări " +"Legături permanente%3$s" + +#: inc/admin/ui/notices.php:363 +#, php-format +msgid "" +"%s could not modify the .htaccess file due to missing writing permissions." +msgstr "" +"%s nu a putut modifica fișierul .htaccess deoarece lipsesc permisiunile de " +"scriere." + +#: inc/admin/ui/notices.php:369 inc/admin/ui/notices.php:844 +#, php-format +msgid "Troubleshoot: %1$sHow to make system files writeable%2$s" +msgstr "" +"Depanare: %1$scum să faci ca fișierele de sistem să poată fi scrise%2$s" + +#: inc/admin/ui/notices.php:371 inc/admin/ui/notices.php:846 +msgid "" +"https://docs.wp-rocket.me/article/626-how-to-make-system-files-htaccess-wp-" +"config-writeable/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://docs.wp-rocket.me/article/626-how-to-make-system-files-htaccess-wp-" +"config-writeable/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: inc/admin/ui/notices.php:377 +msgid "" +"Don’t worry, WP Rocket’s page caching and settings will still function " +"correctly." +msgstr "" +"Nu-ți face griji, cache-ul paginilor și setările WP Rocket vor funcționa " +"corect." + +#: inc/admin/ui/notices.php:377 +msgid "" +"For optimal performance, adding the following lines into your .htaccess is " +"recommended (not required):" +msgstr "" +"Pentru o performanță optimă, se recomandă adăugarea următoarelor linii în " +"fișierul .htaccess (dat nu sunt obligatorii):" + +#: inc/admin/ui/notices.php:524 +#, php-format +msgid "" +"%1$s is good to go! %2$sTest your load time%4$s, or visit your " +"%3$ssettings%4$s." +msgstr "" +"%1$s este un început bun! %2$sTestează timpul de încărcare%4$ssau mergi la " +"%3$sSetări%4$s." + +#: inc/admin/ui/notices.php:597 +msgid "" +"Would you allow WP Rocket to collect non-sensitive diagnostic data from this" +" website?" +msgstr "" +"Vrei să-i permiți modulului WP Rocket să colecteze de pe acest site date de " +"diagnosticare care nu sunt sensibile?" + +#: inc/admin/ui/notices.php:598 +msgid "This would help us to improve WP Rocket for you in the future." +msgstr "Acest lucru ne ajută să îmbunătățim WP Rocket în viitor." + +#: inc/admin/ui/notices.php:604 +msgid "What info will we collect?" +msgstr "Ce informații vom colecta?" + +#: inc/admin/ui/notices.php:609 +msgid "" +"Below is a detailed view of all data WP Rocket will collect if granted " +"permission. WP Rocket will never transmit any domain names or email " +"addresses (except for license validation), IP addresses, or third-party API " +"keys." +msgstr "" +"Mai jos este o listă detaliată a tuturor datelor pe care WP Rocket le va " +"colecta dacă îți dai acceptul. WP Rocket nu va divulga niciodată nume de " +"domenii sau adrese de email (cu excepția validării licenței), adrese IP sau " +"chei API de la părți terțe." + +#: inc/admin/ui/notices.php:618 +msgid "Yes, allow" +msgstr "Da, permit" + +#: inc/admin/ui/notices.php:621 +msgid "No, thanks" +msgstr "Nu, mulțumesc" + +#: inc/admin/ui/notices.php:660 +msgid "Thank you!" +msgstr "Îți mulțumim!" + +#: inc/admin/ui/notices.php:665 +msgid "WP Rocket now collects these metrics from your website:" +msgstr "Acum WP Rocket colectează aceste valori de pe site-ul tău web:" + +#: inc/admin/ui/notices.php:703 +#, php-format +msgid "%s: Cache cleared." +msgstr "%s: cache șters." + +#: inc/admin/ui/notices.php:710 +#, php-format +msgid "%s: Post cache cleared." +msgstr "%s: cache articol șters." + +#: inc/admin/ui/notices.php:717 +#, php-format +msgid "%s: Term cache cleared." +msgstr "%s: cache termen șters." + +#: inc/admin/ui/notices.php:724 +#, php-format +msgid "%s: User cache cleared." +msgstr "%s: cache utilizator șters." + +#: inc/admin/ui/notices.php:770 +msgid "Stop Preload" +msgstr "Oprește pre-încărcarea" + +#: inc/admin/ui/notices.php:788 +msgid "Force deactivation " +msgstr "Forțează dezactivarea" + +#: inc/admin/ui/notices.php:801 +msgid "The following code should have been written to this file:" +msgstr "Codul următor ar fi trebuit să poată fi scris în acest fișier:" + +#: inc/admin/ui/notices.php:811 views/settings/page-sections/dashboard.php:46 +msgid "Dismiss this notice." +msgstr "Respinge această notificare." + +#: inc/admin/ui/notices.php:832 +#, php-format +msgid "%s cannot configure itself due to missing writing permissions." +msgstr "" +"%s nu se poate configura singur deoarece lipsesc permisiunile de scriere." + +#: inc/admin/ui/notices.php:838 +#, php-format +msgid "Affected file/folder: %s" +msgstr "Fișier/dosar afectat: %s" + +#: inc/classes/admin/Database/class-optimization.php:47 +msgid "Transients" +msgstr "Tranzienți" + +#: inc/classes/admin/Database/class-optimization.php:48 +msgid "Tables" +msgstr "Tabele" + +#: inc/classes/admin/class-logs.php:124 +msgid "The debug file could not be deleted." +msgstr "Fișierul de depanare nu a putut fi șters." + +#: inc/classes/class-wp-rocket-requirements-check.php:147 +#, php-format +msgid "To function properly, %1$s %2$s requires at least:" +msgstr "Pentru a funcționa cum trebuie, %1$s%2$s necesită cel puțin:" + +#: inc/classes/class-wp-rocket-requirements-check.php:151 +#, php-format +msgid "" +"PHP %1$s. To use this WP Rocket version, please ask your web host how to " +"upgrade your server to PHP %1$s or higher." +msgstr "" +"PHP %1$s. Pentru a folosi această versiune a WP Rocket, întreabă-ți gazda " +"web cum să actualizezi serverul la PHP %1$s sau la o versiune ulterioară. " + +#: inc/classes/class-wp-rocket-requirements-check.php:156 +#, php-format +msgid "" +"WordPress %1$s. To use this WP Rocket version, please upgrade WordPress to " +"version %1$s or higher." +msgstr "" +"WordPress %1$s. Pentru a folosi această versiune a WP Rocket, te rog " +"actualizează WordPress la versiunea %1$s sau la una ulterioară." + +#: inc/classes/class-wp-rocket-requirements-check.php:159 +msgid "" +"If you are not able to upgrade, you can rollback to the previous version by " +"using the button below." +msgstr "" +"Dacă nu reușești să faci actualizarea, poți restaura o versiune anterioară " +"folosind butonul de mai jos." + +#: inc/classes/class-wp-rocket-requirements-check.php:161 +#: inc/deprecated/deprecated.php:1947 +#, php-format +msgid "Re-install version %s" +msgstr "Reinstalează versiunea %s" + +#: inc/classes/logger/class-logger.php:254 +#: inc/classes/logger/class-logger.php:286 +msgid "The log file does not exist." +msgstr "Fișierul jurnal nu există." + +#: inc/classes/logger/class-logger.php:260 +#: inc/classes/logger/class-logger.php:292 +msgid "The log file could not be read." +msgstr "Fișierul jurnal nu a putut fi citit." + +#: inc/classes/logger/class-logger.php:279 +msgid "The logs are not saved into a file." +msgstr "Jurnalele nu sunt salvate într-un fișier." + +#: inc/classes/subscriber/Cache/class-expired-cache-purge-subscriber.php:128 +msgid "WP Rocket Expired Cache Interval" +msgstr "Interval de cache expirat WP Rocket" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:269 +#, php-format +msgid "" +"You are using %1$s to serve WebP images so you do not need to enable this " +"option. If you prefer to have WP Rocket serve WebP for you instead, please " +"disable them from serving in %1$s. %2$sMore info%3$s" +msgid_plural "" +"You are using %1$s to serve WebP images so you do not need to enable this " +"option. If you prefer to have WP Rocket serve WebP for you instead, please " +"disable them from serving in %1$s. %2$sMore info%3$s" +msgstr[0] "" +"Folosești %1$s pentru a servi imaginile WebP, deci nu trebuie să activezi " +"această opțiune. Dacă, în schimb, preferi ca WP Rocket să-ți servească " +"imaginile WebP, te rog dezactivează servirea lor în %1$s. %2$sMai multe " +"informații%3$s" +msgstr[1] "" +"Folosești %1$s pentru a servi imaginile WebP, deci nu trebuie să activezi " +"această opțiune. Dacă, în schimb, preferi ca WP Rocket să-ți servească " +"imaginile WebP, te rog dezactivează servirea lor în %1$s. %2$sMai multe " +"informații%3$s" +msgstr[2] "" +"Folosești %1$s pentru a servi imaginile WebP, deci nu trebuie să activezi " +"această opțiune. Dacă, în schimb, preferi ca WP Rocket să-ți servească " +"imaginile WebP, te rog dezactivează servirea lor în %1$s. %2$sMai multe " +"informații%3$s" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:280 +msgid "WebP cache is disabled by filter." +msgstr "Cache-ul WebP este dezactivat printr-un filtru." + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:290 +#: inc/classes/subscriber/Media/class-webp-subscriber.php:316 +#, php-format +msgid "" +"You are using %1$s to convert images to WebP. If you want WP Rocket to serve" +" them for you, activate this option. %2$sMore info%3$s" +msgid_plural "" +"You are using %1$s to convert images to WebP. If you want WP Rocket to serve" +" them for you, activate this option. %2$sMore info%3$s" +msgstr[0] "" +"Folosești %1$s pentru a converti imaginile în WebP. Dacă vrei ca WP Rocket " +"să le servească pentru tine, activează această opțiune. %2$sMai multe " +"informații%3$s" +msgstr[1] "" +"Folosești %1$s pentru a converti imaginile în WebP. Dacă vrei ca WP Rocket " +"să le servească pentru tine, activează această opțiune. %2$sMai multe " +"informații%3$s" +msgstr[2] "" +"Folosești %1$s pentru a converti imaginile în WebP. Dacă vrei ca WP Rocket " +"să le servească pentru tine, activează această opțiune. %2$sMai multe " +"informații%3$s" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:302 +#: inc/classes/subscriber/Media/class-webp-subscriber.php:328 +#, php-format +msgid "" +"You are using %1$s to convert images to WebP. WP Rocket will create separate" +" cache files to serve your WebP images. %2$sMore info%3$s" +msgid_plural "" +"You are using %1$s to convert images to WebP. WP Rocket will create separate" +" cache files to serve your WebP images. %2$sMore info%3$s" +msgstr[0] "" +"Folosești %1$s pentru a converti imaginile în WebP. WP Rocket va crea " +"fișiere cache separate pentru a-ți servi imaginile WebP. %2$sMai multe " +"informații%3$s" +msgstr[1] "" +"Folosești %1$s pentru a converti imaginile în WebP. WP Rocket va crea " +"fișiere cache separate pentru a-ți servi imaginile WebP. %2$sMai multe " +"informații%3$s" +msgstr[2] "" +"Folosești %1$s pentru a converti imaginile în WebP. WP Rocket va crea " +"fișiere cache separate pentru a-ți servi imaginile WebP. %2$sMai multe " +"informații%3$s" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:349 +#, php-format +msgid "" +"You don’t seem to be using a method to create and serve WebP that we are " +"auto-compatible with. If you are not using WebP do not enable this option. " +"%1$sMore info%2$s" +msgstr "" +"Se pare că nu folosești o metodă pentru a crea și servi imagini WebP care " +"sunt compatibile automat. Dacă nu folosești WebP nu activa această opțiune. " +"%1$sMai multe informații%2$s" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:354 +msgid "We have not detected any compatible WebP plugin!" +msgstr "Nu am detectat niciun modul compatibil cu WebP!" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:357 +#, php-format +msgid "" +"If you activate this option WP Rocket will create separate cache files to " +"serve WebP images. Any WebP images you have on your site will be served from" +" these files to compatible browsers. If you don’t already have WebP images " +"on your site consider using %1$sImagify%3$s or another supported plugin. " +"%2$sMore info%3$s" +msgstr "" +"Dacă activezi această opțiune, WP Rocket va crea separat fișiere cache " +"pentru a servi imaginile WebP. Toate imaginile WebP pe care le ai pe site " +"vor fi servite în navigatoarele compatibile din aceste fișiere. Dacă nu ai " +"deja imagini WebP pe site, ar trebui să folosești %1$sImagify%3$s sau un alt" +" modul. %2$sMai multe informații%3$s" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:369 +msgid "WP Rocket will create separate cache files to serve your WebP images." +msgstr "" +"WP Rocket va crea separat fișiere cache pentru a-ți servi imaginile WebP." + +#: inc/classes/subscriber/Tools/class-detect-missing-tags-subscriber.php:151 +#, php-format +msgid "" +"Failed to detect the following requirement in your theme: closing %1$s." +msgid_plural "" +"Failed to detect the following requirements in your theme: closing %1$s." +msgstr[0] "Detectarea următoarei cerințe în tema ta a eșuat: închid %1$s." +msgstr[1] "Detectarea următoarele cerințe în tema ta a eșuat: închid %1$s." +msgstr[2] "Detectarea următoarele cerințe în tema ta a eșuat: închid %1$s." + +#: inc/classes/subscriber/Tools/class-detect-missing-tags-subscriber.php:159 +msgid "" +"https://docs.wp-rocket.me/article/99-pages-not-cached-or-minify-cssjs-not-" +"working/?utm_source=wp_plugin&utm_medium=wp_rocket#theme" +msgstr "" +"https://docs.wp-rocket.me/article/99-pages-not-cached-or-minify-cssjs-not-" +"working/?utm_source=wp_plugin&utm_medium=wp_rocket#theme" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:98 +msgid "monthly" +msgstr "lunar" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:211 +msgid "Database optimization process is running" +msgstr "Procesul de optimizare a bazei de date rulează acum" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:242 +msgid "" +"Database optimization process is complete. Everything was already optimized!" +msgstr "" +"Procesul de optimizare a bazei de date s-a finalizat. Totul a fost deja " +"optimizat!" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:245 +msgid "" +"Database optimization process is complete. List of optimized items below:" +msgstr "" +"Procesul de optimizare a bazei de date s-a finalizat. Mai jos este lista " +"elementelor optimizate:" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:253 +#, php-format +msgid "%1$d %2$s optimized." +msgstr "%1$d (de) %2$s optimizate (optimizați)." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:116 +#, php-format +msgid "Sucuri cache purge error: %s" +msgstr "Eroare ștergere cache Sucuri: %s" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:121 +msgid "" +"The Sucuri cache is being cleared. Note that it may take up to two minutes " +"for it to be fully flushed." +msgstr "" +"Cache-ul Sucuri este șters acum. Reține că s-ar putea să dureze până la două" +" minute pentru a fi șters complet." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:244 +msgid "Sucuri firewall API key was not found." +msgstr "Cheia API pentru firewall-ul Sucuri nu a fost găsită." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:256 +msgid "Sucuri firewall API key is invalid." +msgstr "Cheia API pentru firewall-ul Sucuri este invalidă." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:311 +msgid "Error when contacting Sucuri firewall API." +msgstr "Eroare la stabilirea contactului cu API-ul firewall-ului Sucuri." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:324 +#, php-format +msgid "Error when contacting Sucuri firewall API. Error message was: %s" +msgstr "" +"Eroare la stabilirea contactului cu API-ul firewall-ului Sucuri. Mesajul de " +"eroare a fost: %s" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:338 +msgid "Could not get a response from the Sucuri firewall API." +msgstr "Nu am primit un răspuns de la API-ului firewall-ului Sucuri." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:352 +msgid "Got an invalid response from the Sucuri firewall API." +msgstr "Am primit un răspuns invalid de la API-ului firewall-ului Sucuri." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:365 +msgid "The Sucuri firewall API returned an unknown error." +msgstr "API-ului firewall-ului Sucuri a returnat o eroare necunoscută." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:368 +#, php-format +msgid "The Sucuri firewall API returned the following error: %s" +msgid_plural "The Sucuri firewall API returned the following errors: %s" +msgstr[0] "API-ului firewall-ului Sucuri a returnat următoarea eroare: %s" +msgstr[1] "API-ului firewall-ului Sucuri a returnat următoarele erori: %s" +msgstr[2] "API-ului firewall-ului Sucuri a returnat următoarele erori: %s" + +#: inc/classes/traits/trait-updater-api-tools.php:53 +#: inc/deprecated/3.3.php:761 inc/deprecated/3.3.php:770 +#, php-format +msgid "" +"An unexpected error occurred. Something may be wrong with WP-Rocket.me or " +"this server’s configuration. If you continue to have problems,
      contact support." +msgstr "" +"A apărut o eroare neașteptată. Este posibil să fie ceva greșit la WP-" +"Rocket.me sau la configurarea acestui server. Dacă ai probleme în " +"continuare, contactează suportul." + +#: inc/common/admin-bar.php:125 inc/common/admin-bar.php:293 +#: inc/functions/i18n.php:41 inc/functions/i18n.php:51 +msgid "All languages" +msgstr "Toate limbile" + +#: inc/common/admin-bar.php:152 +msgid "Clear this post" +msgstr "Șterge acest articol" + +#: inc/common/admin-bar.php:166 +msgid "Purge this URL" +msgstr "Curăță acest URL" + +#: inc/common/admin-bar.php:192 +msgid "Purge OPcache" +msgstr "Curăță OPcache" + +#: inc/common/admin-bar.php:210 +msgid "Clear Cloudflare cache" +msgstr "Șterge cache Cloudflare" + +#: inc/common/admin-bar.php:228 +msgid "Purge Sucuri cache" +msgstr "Șterge cache-ul Sucuri" + +#: inc/common/admin-bar.php:251 inc/common/admin-bar.php:305 +#: views/settings/page-sections/dashboard.php:144 +msgid "Preload cache" +msgstr "Pre-încarcă cache" + +#: inc/common/admin-bar.php:330 views/settings/fields/rocket-cdn.php:55 +msgid "Purge RocketCDN cache" +msgstr "Șterge cache-ul RocketCDN" + +#: inc/common/admin-bar.php:343 views/settings/partials/documentation.php:14 +msgid "Documentation" +msgstr "Documentație" + +#: inc/common/purge.php:557 +msgid "OPcache purge failed." +msgstr "Ștergerea OPcache a eșuat." + +#: inc/common/purge.php:562 +msgid "OPcache successfully purged" +msgstr "OPcache șters cu succes" + +#: inc/deprecated/3.2.php:52 views/settings/page-sections/imagify.php:36 +msgid "Activate Imagify" +msgstr "Activează Imagify" + +#: inc/deprecated/3.2.php:52 +msgid "Install Imagify for Free" +msgstr "Instalează Imagify gratuit" + +#: inc/deprecated/3.2.php:67 +msgid "" +"Speed up your website and boost your SEO by reducing image file sizes " +"without losing quality with Imagify." +msgstr "" +"Cu Imagify îți accelerezi site-ul și îmbunătățești SEO prin reducerea " +"dimensiunilor fișierelor imagine fără a pierde calitatea imaginilor." + +#: inc/deprecated/3.2.php:72 +msgid "More details" +msgstr "Mai multe detalii" + +#: inc/deprecated/3.2.php:228 +#, php-format +msgid "Sitemap preload: %d pages have been cached." +msgstr "Pre-încărcare hărți site: %d de pagini au fost memorate în cache." + +#: inc/deprecated/3.2.php:261 +#, php-format +msgid "" +"Sitemap preload: %d uncached pages have now been preloaded. (refresh to see " +"progress)" +msgstr "" +"Pre-încărcare hărți site: %d de pagini nememorate în cache au fost pre-" +"încărcate acum. (reîmprospătează pentru a vedea progresul)" + +#: inc/deprecated/3.4.php:18 +msgid "Choose a domain from the list" +msgstr "Alege un domeniu din listă" + +#: inc/deprecated/3.4.php:31 +msgid "No domain available in your Cloudflare account" +msgstr "Nu este disponibil niciun domeniu în contul tău Cloudflare" + +#: inc/deprecated/3.5.php:81 inc/deprecated/3.5.php:205 +msgid "" +"Curl is disabled on your server. Please ask your host to enable it. This is " +"required for the Cloudflare Add-on to work correctly." +msgstr "" +"curl este dezactivat pe serverul tău. Te rog cere-i serviciului tău de " +"găzduire să-l activeze. El este necesar pentru ca suplimentul Cloudflare să " +"funcționeze corect." + +#: inc/deprecated/3.5.php:89 +#, php-format +msgid "" +"Cloudflare email, API key and Zone ID are not set. Read the " +"%1$sdocumentation%2$s for further guidance." +msgstr "" +"Emailul, cheia API și ID-ul zonei Cloudflare nu sunt setate. Pentru " +"îndrumări suplimentare, citește %1$sdocumentația%2$s." + +#: inc/deprecated/3.5.php:216 +#, php-format +msgid "" +"Cloudflare email and API key are not set. Read the %1$sdocumentation%2$s for" +" further guidance." +msgstr "" +"Emailul și cheia API Cloudflare nu sunt setate. Pentru îndrumări " +"suplimentare, citește %1$sdocumentația%2$s." + +#: inc/deprecated/3.5.php:281 +msgid "Connection to Cloudflare failed" +msgstr "Conectarea la Cloudflare a eșuat" + +#: inc/deprecated/DeprecatedClassTrait.php:54 +#, php-format +msgid "" +"The called class %1$s is deprecated since version %2$s! Use" +" %3$s instead." +msgstr "" +"Clasa numită %1$s este învechită începând cu versiunea " +"%2$s! Folosește în schimb %3$s. " + +#: inc/deprecated/DeprecatedClassTrait.php:65 +#, php-format +msgid "" +"The called class %1$s is deprecated since version %2$s!" +msgstr "" +"Clasa numită %1$s este învechită începând cu versiunea " +"%2$s! " + +#: inc/deprecated/deprecated.php:240 +msgid "JS files with Deferred Loading JavaScript" +msgstr "Fișiere JS cu încărcare JavaScript întârziată" + +#: inc/deprecated/deprecated.php:293 +msgid "Add URL" +msgstr "Adaugă URL" + +#: inc/deprecated/deprecated.php:1277 views/settings/fields/import-form.php:22 +msgid "" +"Before you can upload your import file, you will need to fix the following " +"error:" +msgstr "" +"Înainte de a-ți putea încărca fișierul de import, trebuie să corectezi " +"următoarea eroare:" + +#: inc/deprecated/deprecated.php:1288 views/settings/fields/import-form.php:35 +#, php-format +msgid "Choose a file from your computer (maximum size: %s)" +msgstr "Alege un fișier din computer (dimensiune maximă: %s)" + +#: inc/deprecated/deprecated.php:1385 +msgid "Your Cloudflare credentials are valid." +msgstr "Datele tale de conectare Cloudflare sunt valide." + +#: inc/deprecated/deprecated.php:1389 +msgid "Your Cloudflare credentials are invalid!" +msgstr "Datele tale de conectare Cloudflare sunt invalide!" + +#: inc/deprecated/deprecated.php:1453 +msgid "Save and optimize" +msgstr "Salvează și optimizează" + +#: inc/deprecated/deprecated.php:1453 +msgid "Optimize" +msgstr "Optimizează" + +#: inc/deprecated/deprecated.php:1464 inc/deprecated/deprecated.php:1666 +msgctxt "screen-reader-text" +msgid "Note:" +msgstr "Notă:" + +#: inc/deprecated/deprecated.php:1470 +msgctxt "screen-reader-text" +msgid "Performance tip:" +msgstr "Tip de performanță" + +#: inc/deprecated/deprecated.php:1476 +msgctxt "screen-reader-text" +msgid "Third-party feature detected:" +msgstr "Funcționalitate terță detectată: " + +#: inc/deprecated/deprecated.php:1488 inc/deprecated/deprecated.php:1672 +msgctxt "screen-reader-text" +msgid "Warning:" +msgstr "Avertizare:" + +#: inc/deprecated/deprecated.php:1501 +msgctxt "button text" +msgid "Download settings" +msgstr "Descarcă setările" + +#: inc/deprecated/deprecated.php:1531 +msgid "Replace site's hostname with:" +msgstr "Înlocuiește numele gazdei site-ului cu:" + +#: inc/deprecated/deprecated.php:1550 inc/deprecated/deprecated.php:1587 +#: inc/deprecated/deprecated.php:1615 views/settings/fields/cnames.php:32 +#: views/settings/fields/cnames.php:64 views/settings/fields/cnames.php:94 +msgid "reserved for" +msgstr "rezervat pentru" + +#: inc/deprecated/deprecated.php:1552 inc/deprecated/deprecated.php:1589 +#: inc/deprecated/deprecated.php:1617 views/settings/fields/cnames.php:35 +#: views/settings/fields/cnames.php:67 views/settings/fields/cnames.php:97 +msgid "All files" +msgstr "Toate fișierele" + +#: inc/deprecated/deprecated.php:1564 inc/deprecated/deprecated.php:1594 +#: inc/deprecated/deprecated.php:1622 views/settings/fields/cnames.php:47 +#: views/settings/fields/cnames.php:79 views/settings/fields/cnames.php:109 +msgid "Images" +msgstr "Imagini" + +#: inc/deprecated/deprecated.php:1635 views/settings/fields/cnames.php:120 +msgid "Add CNAME" +msgstr "Adaugă CNAME" + +#: inc/deprecated/deprecated.php:1706 views/settings/partials/sidebar.php:16 +msgid "Watch the video" +msgstr "Urmărește videoul" + +#: inc/deprecated/deprecated.php:1771 +msgid "Basic" +msgstr "De bază" + +#: inc/deprecated/deprecated.php:1772 +msgid "Static Files" +msgstr "Fișiere statice" + +#: inc/deprecated/deprecated.php:1774 +msgid "Advanced" +msgstr "Avansat" + +#: inc/deprecated/deprecated.php:1944 +#, php-format +msgid "" +"%1$s %2$s requires at least PHP %3$s to function properly. To use this " +"version, please ask your web host how to upgrade your server to PHP %3$s or " +"higher. If you are not able to upgrade, you can rollback to the previous " +"version by using the button below." +msgstr "" +"Pentru a funcționa cum trebuie, %1$s%2$s necesită cel puțin PHP %3$s. Pentru" +" a folosi această versiune, te rog întreabă gazda ta web cum poți actualiza " +"serverul la PHP %3$s sau la o versiune ulterioară. Dacă nu reușești să faci " +"actualizarea, poți restaura o versiune anterioară folosind butonul de mai " +"jos." + +#: inc/functions/admin.php:23 +msgid "" +"There seems to be an issue validating your license. Please see the error " +"message below." +msgid_plural "" +"There seems to be an issue validating your license. You can see the error " +"messages below." +msgstr[0] "" +"Se pare că există o problemă de validare cu licența ta. Te rog vezi mai jos " +"mesajul de eroare." +msgstr[1] "" +"Se pare că există o problemă de validare cu licența ta. Poți vedea mai jos " +"mesajele de eroare." +msgstr[2] "" +"Se pare că există o problemă de validare cu licența ta. Poți vedea mai jos " +"mesajele de eroare." + +#: inc/functions/admin.php:363 +msgid "Server type:" +msgstr "Tip de server:" + +#: inc/functions/admin.php:372 +msgid "PHP version number:" +msgstr "Număr versiune PHP:" + +#: inc/functions/admin.php:381 +msgid "WordPress version number:" +msgstr "Număr versiune WordPress:" + +#: inc/functions/admin.php:390 +msgid "WordPress multisite:" +msgstr "Multi-site WordPress:" + +#: inc/functions/admin.php:399 +msgid "Current theme:" +msgstr "Tema actuală:" + +#: inc/functions/admin.php:408 +msgid "Current site language:" +msgstr "Limba actuală a site-ului:" + +#: inc/functions/admin.php:417 +msgid "Active plugins:" +msgstr "Module active:" + +#: inc/functions/admin.php:420 +msgid "Plugin names of all active plugins" +msgstr "Numele tuturor modulelor active" + +#: inc/functions/admin.php:426 +msgid "Anonymized WP Rocket settings:" +msgstr "Setări WP Rocket făcute anonime:" + +#: inc/functions/admin.php:429 +msgid "Which WP Rocket settings are active" +msgstr "Care setări WP Rocket sunt active" + +#: inc/functions/options.php:524 inc/functions/options.php:563 +msgid "" +"License validation failed. Our server could not resolve the request from " +"your website." +msgstr "" +"Validarea licenței a eșuat. Serverul nostru nu a putut rezolva cererea de pe" +" site-ul tău web." + +#: inc/functions/options.php:524 inc/functions/options.php:563 +#, php-format +msgid "" +"Try clicking %1$sSave Changes%2$s below. If the error persists, follow " +"%3$sthis guide%4$s." +msgstr "" +"Încearcă să dai clic pe %1$sSalvează modificările%2$s mai jos. Dacă eroarea " +"persistă, urmează %3$sacest ghid%4$s." + +#: inc/functions/options.php:540 +msgid "" +"License validation failed. You may be using a nulled version of the plugin. " +"Please do the following:" +msgstr "" +"Validarea licenței a eșuat. Probabil folosești o versiune a modulului " +"nevalidă. Te rog să faci următoarele:" + +#: inc/functions/options.php:540 inc/functions/options.php:582 +#, php-format +msgid "Login to your WP Rocket %1$saccount%2$s" +msgstr "Autentifică-te în %1$scontul%2$s tău WP Rocket" + +#: inc/functions/options.php:540 inc/functions/options.php:582 +msgid "Download the zip file" +msgstr "Descarcă fișierul zip" + +#: inc/functions/options.php:540 inc/functions/options.php:582 +msgid "Reinstall" +msgstr "Reinstalează" + +#: inc/functions/options.php:540 +#, php-format +msgid "" +"If you do not have a WP Rocket account, please %1$spurchase a license%2$s." +msgstr "Dacă nu ai un cont WP Rocket, te rog %1$scumpără o licență%2$s." + +#: inc/functions/options.php:548 +msgid "" +"License validation failed. This user account does not exist in our database." +msgstr "" +"Validarea licenței a eșuat. Acest cont de utilizator nu există în baza " +"noastră de date." + +#: inc/functions/options.php:548 +msgid "To resolve, please contact support." +msgstr "Pentru a rezolva, te rog contactează suportul." + +#: inc/functions/options.php:556 +msgid "License validation failed. This user account is blocked." +msgstr "Validarea licenței a eșuat. Acest cont de utilizator este blocat." + +#: inc/functions/options.php:556 +#, php-format +msgid "Please see %1$sthis guide%2$s for more info." +msgstr "Pentru mai multe informații, te rog vezi %1$sacest ghid%2$s." + +#: inc/functions/options.php:576 +msgid "Your license is not valid." +msgstr "Licența ta nu este validă." + +#: inc/functions/options.php:576 +#, php-format +msgid "Make sure you have an active %1$sWP Rocket license%2$s." +msgstr "Asigură-te că ai o %1$slicență WP Rocket%2$s activă." + +#: inc/functions/options.php:578 +msgid "You have added as many sites as your current license allows." +msgstr "Ai adăugat numărul de site-uri pe care le permite licența ta actuală." + +#: inc/functions/options.php:578 +#, php-format +msgid "" +"Upgrade your %1$saccount%2$s or %3$stransfer your license%2$s to this " +"domain." +msgstr "" +"Actualizează-ți %1$scontul%2$s sau %3$stransferă-ți licența%2$s la acest " +"domeniu." + +#: inc/functions/options.php:580 +msgid "This website is not allowed." +msgstr "Acest site web nu este permis." + +#: inc/functions/options.php:580 +#, php-format +msgid "Please %1$scontact support%2$s." +msgstr "Te rog %1$scontactează suportul%2$s." + +#: inc/functions/options.php:582 +msgid "This license key is not recognized." +msgstr "Această cheie de licență nu este recunoscută." + +#: inc/functions/options.php:582 +#, php-format +msgid "If the issue persists, please %1$scontact support%2$s." +msgstr "Dacă problema persistă, te rog %1$scontactează suportul%2$s." + +#: inc/functions/options.php:588 +#, php-format +msgid "License validation failed: %s" +msgstr "Validarea licenței a eșuat: %s" + +#: inc/vendors/classes/class-imagify-partner.php:531 +msgid "Plugin installed successfully." +msgstr "Modul instalat cu succes." + +#: inc/vendors/classes/class-imagify-partner.php:532 +msgid "Sorry, you are not allowed to install plugins on this site." +msgstr "Regret, nu ai voie să instalezi module pe acest site." + +#: inc/vendors/classes/class-imagify-partner.php:533 +msgid "Sorry, you are not allowed to do that." +msgstr "Regret, nu voie să faci asta." + +#: inc/vendors/classes/class-imagify-partner.php:534 +msgid "Plugin install failed." +msgstr "Instalarea modulului a eșuat." + +#: inc/vendors/classes/class-imagify-partner.php:535 +msgid "Go back" +msgstr "Du-te înapoi" + +#: views/cpcss/activate-cpcss-mobile.php:13 +msgid "Optimize CSS delivery for mobile" +msgstr "Optimizează livrarea CSS pentru dispozitive mobile" + +#: views/cpcss/activate-cpcss-mobile.php:14 +msgid "" +"Your website currently uses the same Critical Path CSS for both desktop and " +"mobile." +msgstr "" +"În prezent, site-ul tău folosește același CSS de cale critic atât pentru " +"desktop cât și pentru dispozitive mobile." + +#: views/cpcss/activate-cpcss-mobile.php:15 +msgid "Click the button to enable mobile-specific CPCSS for your site." +msgstr "" +"Dă clic pe buton pentru a activa CSS-ul de cale critic specific pentru " +"dispozitive mobile pe site-ul tău." + +#: views/cpcss/activate-cpcss-mobile.php:20 +#: views/settings/enable-google-fonts.php:19 +#, php-format +msgid "" +"This is a one-time action and this button will be removed afterwards. " +"%1$sMore info%2$s" +msgstr "" +"Aceasta este o acțiune unică și acest buton va fi înlăturat ulterior. " +"%1$sMai multe informații%2$s" + +#: views/cpcss/activate-cpcss-mobile.php:30 +#, php-format +msgid "" +"Your site is now using mobile-specific critical path CSS. %1$sMore info%2$s" +msgstr "" +"Acum site-ul tău folosește CSS-ul de cale critic specific pentru dispozitive" +" mobile. %1$sMai multe informații%2$s" + +#: views/cpcss/activate-cpcss-mobile.php:39 +msgid "Generate Mobile Specific CPCSS" +msgstr "Generează CSS-ul de cale critic specific pentru dispozitive mobile" + +#: views/cpcss/metabox/container.php:19 +msgid "Critical Path CSS" +msgstr "CSS de cale critic" + +#: views/cpcss/metabox/generate.php:23 +#, php-format +msgid "Generate specific Critical Path CSS for this post. %1$sMore info%2$s" +msgstr "" +"Generează un anumit CSS de cale critic pentru acest articol. %1$sMai multe " +"informații%2$s" + +#: views/cpcss/metabox/generate.php:33 +#, php-format +msgid "This post uses specific Critical Path CSS. %1$sMore info%2$s" +msgstr "" +"Acest articol folosește un anumit CSS de cale critic. %1$sMai multe " +"informații%2$s" + +#: views/cpcss/metabox/generate.php:56 +msgid "Revert back to the default CPCSS" +msgstr "Revino la CSS-ul de cale critic" + +#: views/deactivation-intent/form.php:21 +msgid "Return" +msgstr "Revino" + +#: views/deactivation-intent/form.php:22 +msgid "WP Rocket feedback" +msgstr "Impresii WP Rocket" + +#: views/deactivation-intent/form.php:24 +msgid "Close" +msgstr "Închide" + +#: views/deactivation-intent/form.php:28 +msgid "May we have a little info about why you are deactivating?" +msgstr "Ne oferi câteva informații despre motivul pentru care dezactivezi?" + +#: views/deactivation-intent/form.php:35 +#, php-format +msgid "%1$sIt is a temporary deactivation.%2$s I am just debugging an issue." +msgstr "%1$sEste o dezactivare temporară.%2$s Chiar acum depanez o problemă." + +#: views/deactivation-intent/form.php:44 +#, php-format +msgid "The plugin %1$sbroke my layout%2$s or some functionality." +msgstr "" +"Modulul %1$smi-a stricat aranjamentul%2$s sau a întrerupt unele " +"funcționalități." + +#: views/deactivation-intent/form.php:53 +#, php-format +msgid "My PageSpeed or GTMetrix %1$sscore did not improve.%2$s" +msgstr "%1$sPunctajul nu s-a îmbunătățit%2$s pentru PageSpeed sau GTMetrix." + +#: views/deactivation-intent/form.php:59 +msgid "I did not notice a difference in loading time." +msgstr "Nu am observat nicio diferență pentru timpul de încărcare." + +#: views/deactivation-intent/form.php:66 +#, php-format +msgid "The plugin is %1$stoo complicated to configure.%2$s" +msgstr "Modulul este %1$sprea complicat la configurare.%2$s" + +#: views/deactivation-intent/form.php:72 +msgid "My host already has its own caching system." +msgstr "Gazda mea are deja un sistem propriu de cache." + +#: views/deactivation-intent/form.php:74 +msgid "What is the name of your web host?" +msgstr "Care este numele gazdei tale web?" + +#: views/deactivation-intent/form.php:79 +msgid "Other" +msgstr "Altceva" + +#: views/deactivation-intent/form.php:81 +msgid "" +"Let us know why you are deactivating WP Rocket so we can improve the plugin" +msgstr "" +"Spune-ne de ce dezactivezi WP Rocket pentru a-l putea îmbunătăți în viitor" + +#: views/deactivation-intent/form.php:89 +msgid "The plugin broke my layout or some functionality" +msgstr "Modulul mi-a distrus aranjamentul sau unele funcționalități" + +#: views/deactivation-intent/form.php:90 +msgid "" +"This type of issue can usually be fixed by deactivating some options in WP " +"Rocket." +msgstr "" +"De obicei, acest tip de probleme poate fi corectat prin dezactivarea câtorva" +" opțiuni în WP Rocket." + +#: views/deactivation-intent/form.php:91 +msgid "" +"Click \"Apply Safe Mode\" to quickly disable LazyLoad, File Optimization, " +"Embeds and CDN options. Then check your site to see if the issue has " +"resolved." +msgstr "" +"Dă clic pe „Aplică modul în siguranță” pentru a dezactiva rapid opțiunile " +"încărcare lentă, optimizare fișiere, înglobări și CDN. Apoi verifică-ți " +"site-ul și vezi dacă problema a fost rezolvată." + +#: views/deactivation-intent/form.php:93 +msgid "Apply safe mode" +msgstr "Aplică modul în siguranță" + +#: views/deactivation-intent/form.php:96 +msgid "Safe mode applied." +msgstr "Modul în siguranță aplicat." + +#: views/deactivation-intent/form.php:97 +msgid "Review your site in a private/logged out browser window." +msgstr "" +"Examinează-ți sie-tul într-o fereastră de navigator privată/fără " +"autentificare." + +#: views/deactivation-intent/form.php:102 +#, php-format +msgid "" +"Is the issue fixed? Now you can reactivate options one at a time to " +"determine which one caused the problem. %1$sMore info%2$s" +msgstr "" +"Problema este rezolvată? Acum poți să-ți reactivezi opțiunile, una câte una," +" pentru a determina care dintre ele a cauzat problema. %1$sMai multe " +"informații%2$s." + +#: views/deactivation-intent/form.php:107 +msgid "My PageSpeed or GT Metrix score did not improve" +msgstr "Punctajul meu PageSpeed sau GT Metrix nu s-a îmbunătățit" + +#: views/deactivation-intent/form.php:108 +msgid "" +"WP Rocket makes your site faster. The PageSpeed grade or GTMetrix score are " +"not indicators of speed. Neither your real visitors, nor Google will ever " +"see your website’s “grade”. Speed is the only metric that matters for SEO " +"and conversions." +msgstr "" +"WP Rocket îți face siteul mai rapid. Gradul de optimizare PageSpeed și " +"punctajul GTMetrix nu sunt indicatori ai vitezei. Nici vizitatorii tăi " +"reali, nici Google nu vor vedea vreodată „gradul” sau „punctajul” site-ului " +"web. Viteza este singura valoare metrică care contează pentru SEO și " +"conversii." + +#: views/deactivation-intent/form.php:109 +msgid "Yoast, the expert on all things related to SEO for WordPress states:" +msgstr "" +"Yoast, expertul în toate aspectele legate de SEO pentru WordPress, afirmă:" + +#: views/deactivation-intent/form.php:110 +msgid "" +"[Google] just looks at how fast your website loads for users, so you don’t " +"have to obsess over that specific score. You have to make sure your website " +"is as fast as you can get it." +msgstr "" +"[Google] se uită doar la cât de repede se încarcă site-ul tău pentru " +"utilizatori, deci nu trebuie să te îngrijoreze acest punctaj specific. " +"Trebuie să te asiguri că site-ul tău web este la fel de rapid ca și tine." + +#: views/deactivation-intent/form.php:116 +#, php-format +msgid "" +"How to measure the load time of your site: %1$shttps://wp-rocket.me/blog" +"/correctly-measure-websites-page-load-time/%2$s" +msgstr "" +"Cum să măsori timpul de încărcare a site-ului tău: %1$shttps://wp-" +"rocket.me/blog/correctly-measure-websites-page-load-time/%2$s" + +#: views/deactivation-intent/form.php:122 +#, php-format +msgid "" +"Why you should not be chasing a PageSpeed score: %1$shttps://wp-" +"rocket.me/blog/the-truth-about-google-pagespeed-insights/%2$s" +msgstr "" +"De ce nu ar trebui să urmărești punctajul dat de PageSpeed: %1$shttps://wp-" +"rocket.me/blog/the-truth-about-google-pagespeed-insights/%2$s" + +#: views/deactivation-intent/form.php:127 +msgid "I did not notice a difference in loading time" +msgstr "Nu am observat o diferență pentru timpul de încărcare" + +#: views/deactivation-intent/form.php:128 +msgid "" +"Make sure you look at your site while logged out to see the fast, cached " +"pages!" +msgstr "" +"Asigură-te că te uiți la site-ul tău când nu ești autentificat pentru a " +"vedea cât de rapide sunt paginile memorate în cache!" + +#: views/deactivation-intent/form.php:132 +#, php-format +msgid "" +"The best way to see the improvement WP Rocket provides is to perform speed " +"tests. Follow this guide to correctly measure the load time of your website:" +" %1$shttps://wp-rocket.me/blog/correctly-measure-websites-page-load-" +"time/%2$s" +msgstr "" +"Cel mai bun mod pentru a vedea îmbunătățirile oferite de WP Rocket este să " +"faci teste de viteză. Urmează acest ghid pentru a măsura corect timpul de " +"încărcare a site-ului tău web: %1$shttps://wp-rocket.me/blog/correctly-" +"measure-websites-page-load-time/%2$s" + +#: views/deactivation-intent/form.php:137 +msgid "The plugin is too complicated to configure" +msgstr "Modulul este prea complicat la configurare" + +#: views/deactivation-intent/form.php:138 +msgid "We are sorry to hear you are finding it difficult to use WP Rocket." +msgstr "Ne pare rău să auzim că și se pare dificil să folosești WP Rocket." + +#: views/deactivation-intent/form.php:139 +#, php-format +msgid "" +"WP Rocket is the only caching plugin that provides 80% of best practices in " +"speed optimization, by default. That means you do not have to do anything " +"besides activate WP Rocket and your site will already be faster!" +msgstr "" +"WP Rocket este singurul modul de cache care oferă implicit 80% din cele mai " +"bune practici pentru optimizarea vitezei. Aceasta înseamnă că nu trebuie să " +"faci nimic în afară de a activa WP Rocket și site-ul tău va fi deja mai " +"rapid!" + +#: views/deactivation-intent/form.php:140 +msgid "" +"The additional options are not required for a fast site, they are for fine-" +"tuning." +msgstr "" +"Opțiunile suplimentare nu sunt necesare pentru un site rapid, ele sunt " +"pentru ajustări fine." + +#: views/deactivation-intent/form.php:144 +#, php-format +msgid "" +"To see the benefit WP Rocket is already providing, measure the speed of your" +" site using a tool like Pingdom: %1$shttps://wp-rocket.me/blog/correctly-" +"measure-websites-page-load-time/%2$s" +msgstr "" +"Pentru a vedea beneficiile oferite de WP Rocket, măsoară viteza site-ului " +"tău folosind un instrument precum Pingdom: %1$shttps://wp-rocket.me/blog" +"/correctly-measure-websites-page-load-time/%2$s" + +#: views/deactivation-intent/form.php:151 +msgid "Send & Deactivate" +msgstr "Trimite și dezactivează" + +#: views/deactivation-intent/form.php:152 +msgid "Cancel" +msgstr "Anulează" + +#: views/deactivation-intent/form.php:154 +msgid "Skip & Deactivate" +msgstr "Sari și dezactivează" + +#: views/settings/enable-google-fonts.php:13 +msgid "Enable Google Font Optimization" +msgstr "Activează optimizarea Fonturilor Google" + +#: views/settings/enable-google-fonts.php:14 +msgid "" +"Improves font performance and combines multiple font requests to reduce the " +"number of HTTP requests." +msgstr "" +"Îmbunătățește performanța fonturilor și combină mai multe cereri de fonturi " +"pentru a reduce numărul de cereri HTTP." + +#: views/settings/enable-google-fonts.php:29 +#, php-format +msgid "" +"Google Fonts Optimization is now enabled for your site. %1$sMore info%2$s" +msgstr "" +"Optimizarea Fonturilor Google este activată acum pentru site-ul tău. %1$sMai" +" multe informații%2$s" + +#: views/settings/enable-google-fonts.php:38 +msgid "Optimize Google Fonts" +msgstr "Optimizează fonturile Google" + +#: views/settings/fields/cache-lifespan.php:26 +msgid "Clear cache after" +msgstr "Șterge cache după" + +#: views/settings/fields/cnames.php:49 views/settings/fields/cnames.php:81 +#: views/settings/fields/cnames.php:111 +msgid "CSS & JavaScript" +msgstr "CSS și JavaScript" + +#: views/settings/fields/cnames.php:50 views/settings/fields/cnames.php:82 +#: views/settings/fields/cnames.php:112 +msgid "JavaScript" +msgstr "JavaScript" + +#: views/settings/fields/cnames.php:51 views/settings/fields/cnames.php:83 +#: views/settings/fields/cnames.php:113 +msgid "CSS" +msgstr "CSS" + +#: views/settings/fields/import-form.php:29 +msgid "Import settings" +msgstr "Setări import" + +#: views/settings/fields/one-click-addon.php:40 +#: views/settings/fields/rocket-addon.php:31 +#: views/settings/fields/sliding-checkbox.php:25 views/settings/page.php:55 +msgctxt "Active state of checkbox" +msgid "On" +msgstr "Pornit" + +#: views/settings/fields/one-click-addon.php:41 +#: views/settings/fields/rocket-addon.php:32 +#: views/settings/fields/sliding-checkbox.php:26 views/settings/page.php:56 +msgctxt "Inactive state of checkbox" +msgid "Off" +msgstr "Oprit" + +#: views/settings/fields/one-click-addon.php:42 +#: views/settings/fields/rocket-addon.php:33 +msgid "Add-on status" +msgstr "Stare supliment" + +#: views/settings/fields/rocket-addon.php:56 +msgid "Modify options" +msgstr "Modifică opțiunile" + +#: views/settings/fields/rocket-cdn.php:29 +#: views/settings/fields/rocket-cdn.php:41 +msgid "CDN CNAME" +msgstr "CNAME CDN" + +#: views/settings/fields/rocket-cdn.php:62 +#, php-format +msgid "Purges RocketCDN cached resources for your website. %s" +msgstr "" +"Șterge resursele memorate în cache-ul RocketCDN pentru site-ul tău web. %s" + +#: views/settings/fields/rocket-cdn.php:63 +#: views/settings/page-sections/cloudflare.php:36 +#: views/settings/page-sections/sucuri.php:37 +msgid "Learn more" +msgstr "Află mai mult" + +#: views/settings/fields/rocket-cdn.php:72 +msgid "Clear all RocketCDN cache files" +msgstr "Șterge toate fișierele cache RocketCDN" + +#: views/settings/page-sections/cloudflare.php:27 +msgid "Cloudflare Cache" +msgstr "Cache Cloudflare" + +#: views/settings/page-sections/cloudflare.php:35 +#: views/settings/page-sections/sucuri.php:36 +#, php-format +msgid "Purges cached resources for your website. %s" +msgstr "Șterge resursele memorate în cache pentru site-ul tău web. %s" + +#: views/settings/page-sections/cloudflare.php:36 +msgid "https://support.cloudflare.com/hc/en-us/articles/200169246" +msgstr "https://support.cloudflare.com/hc/en-us/articles/200169246" + +#: views/settings/page-sections/cloudflare.php:45 +msgid "Clear all Cloudflare cache files" +msgstr "Șterge toate fișierele cache Cloudflare" + +#: views/settings/page-sections/dashboard.php:38 +msgid "Congratulations!" +msgstr "Felicitări!" + +#: views/settings/page-sections/dashboard.php:40 +msgid "WP Rocket is now activated and already working for you." +msgstr "Acum WP Rocket este activat și deja lucrează pentru tine." + +#: views/settings/page-sections/dashboard.php:42 +msgid "Your website should be loading faster now!" +msgstr "Site-ul tău web ar trebui să se încarce mai rapid acum!" + +#: views/settings/page-sections/dashboard.php:44 +#, php-format +msgid "" +"To guarantee fast websites, WP Rocket applies 80% of web performance best " +"practices." +msgstr "" +"Pentru a garanta site-uri web rapide, WP Rocket aplică 80% din cele mai bune" +" practici de performanță de pe web." + +#: views/settings/page-sections/dashboard.php:44 +msgid "" +"We also enable options that provide immediate benefits to your website." +msgstr "" +"De asemenea, avem opțiuni care oferă avantaje imediate pentru site-ul tău " +"web." + +#: views/settings/page-sections/dashboard.php:45 +msgid "Continue to the options to further optimize your site!" +msgstr "Continuă cu opțiunile pentru a-ți optimiza în continuare site-ul!" + +#: views/settings/page-sections/dashboard.php:55 +msgid "My Account" +msgstr "Contul meu" + +#: views/settings/page-sections/dashboard.php:61 +msgid "Refresh info" +msgstr "Reîmprospătează informațiile" + +#: views/settings/page-sections/dashboard.php:75 +msgid "Expiration Date" +msgstr "Data expirării" + +#: views/settings/page-sections/dashboard.php:84 +msgid "View my account" +msgstr "Vezi contul meu" + +#: views/settings/page-sections/dashboard.php:111 +msgid "Quick Actions" +msgstr "Acțiuni rapide" + +#: views/settings/page-sections/dashboard.php:118 +msgid "Remove all cached files" +msgstr "Înlătură toate fișierele cache" + +#: views/settings/page-sections/dashboard.php:138 +msgid "Start cache preloading" +msgstr "Începe pre-încărcarea cache" + +#: views/settings/page-sections/dashboard.php:164 +msgid "Purge OPCache content" +msgstr "Curăță conținutul OPCache" + +#: views/settings/page-sections/dashboard.php:170 +msgid "Purge OPCache" +msgstr "Curăță OPCache" + +#: views/settings/page-sections/dashboard.php:181 +#: views/settings/page-sections/dashboard.php:187 +msgid "Regenerate Critical CSS" +msgstr "Regenerează CSS critic" + +#: views/settings/page-sections/dashboard.php:204 +msgid "Frequently Asked Questions" +msgstr "Întrebări frecvente" + +#: views/settings/page-sections/dashboard.php:217 +msgid "Still cannot find a solution?" +msgstr "Încă nu poți găsi o soluție?" + +#: views/settings/page-sections/dashboard.php:218 +msgid "" +"Submit a ticket and get help from our friendly and knowledgeable Rocketeers." +msgstr "" +"Trimite un tichet și primești ajutor de la membrii prietenoși și pricepuți " +"WP Rocket." + +#: views/settings/page-sections/dashboard.php:226 +msgid "Ask support" +msgstr "Contactează suportul" + +#: views/settings/page-sections/database.php:25 +msgid "Backup your database before you run a cleanup!" +msgstr "Fă o copie de siguranță a bazei de date înainte de a rula o curățare!" + +#: views/settings/page-sections/database.php:26 +msgid "" +"Once a database optimization has been performed, there is no way to undo it." +msgstr "" +"După ce a fost efectuată o optimizare a bazei de date, nu există nicio " +"modalitate de a o anula." + +#: views/settings/page-sections/database.php:28 +msgid "Save Changes and Optimize" +msgstr "Salvează modificările și optimizează" + +#: views/settings/page-sections/imagify.php:21 +#, php-format +msgid "" +"%1$sWP ROCKET%2$s created %3$sIMAGIFY%4$s %1$sfor best-in-class image " +"optimization.%2$s" +msgstr "" +"%1$sWP ROCKET%2$s a creat %3$sIMAGIFY%4$s %1$spentru optimizarea de înaltă " +"clasă a imaginilor.%2$s" + +#: views/settings/page-sections/imagify.php:24 +msgid "" +"Compress image to make your website faster, all while maintaining image " +"quality." +msgstr "" +"Comprimă imaginile pentru a-ți face site-ul mai rapid, menținând calitatea " +"imaginilor." + +#: views/settings/page-sections/imagify.php:25 +msgid "More on Imagify:" +msgstr "Mai multe despre Imagify:" + +#: views/settings/page-sections/imagify.php:27 +msgid "Imagify Plugin Page" +msgstr "Pagină modul Imagify" + +#: views/settings/page-sections/imagify.php:28 +msgid "Imagify Website" +msgstr "Site web Imagify" + +#: views/settings/page-sections/imagify.php:29 +msgid "Review of Image Compression Plugins" +msgstr "Examinează modulele care comprimă imagini" + +#: views/settings/page-sections/imagify.php:38 +msgid "Install Imagify" +msgstr "Instalează Imagify" + +#: views/settings/page-sections/license.php:22 +msgid "WP Rocket was not able to automatically validate your license." +msgstr "WP Rocket nu a putut să-ți valideze automat licența." + +#: views/settings/page-sections/license.php:29 +#, php-format +msgid "Follow this %1$s, or contact %2$s to get the engine started." +msgstr "Vezi acest %1$ssau contactează %2$s pentru a porni motorul." + +#: views/settings/page-sections/license.php:32 +#, php-format +msgid "%1$s%2$s%3$stutorial%4$s" +msgstr "%1$s%2$s%3$stutorial%4$s" + +#: views/settings/page-sections/license.php:34 +msgid "" +"https://docs.wp-rocket.me/article/100-resolving-problems-with-license-" +"validation/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://docs.wp-rocket.me/article/100-resolving-problems-with-license-" +"validation/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: views/settings/page-sections/license.php:40 +#, php-format +msgid "%1$s%2$s%3$ssupport%4$s" +msgstr "%1$s%2$s%3$ssuport%4$s" + +#: views/settings/page-sections/sucuri.php:46 +msgid "Clear all Sucuri cache files" +msgstr "Șterge toate fișierele cache Sucuri" + +#: views/settings/page-sections/tools.php:20 +#, php-format +msgid "Files size: %1$s. Number of entries: %2$s." +msgstr "Dimensiune fișier: %1$s. Număr de intrări: %2$s." + +#: views/settings/page-sections/tools.php:23 +#, php-format +msgid "%1$sDownload the file%2$s." +msgstr "%1$sDescarcă fișierul%2$s." + +#: views/settings/page-sections/tools.php:26 +#, php-format +msgid "%1$sDelete the file%2$s." +msgstr "%1$sȘterge fișierul%2$s." + +#: views/settings/page-sections/tools.php:37 +msgid "Export settings" +msgstr "Setări export" + +#: views/settings/page-sections/tools.php:38 +msgid "Download a backup file of your settings" +msgstr "Descarcă un fișier cu copia de siguranță a setărilor" + +#: views/settings/page-sections/tools.php:46 +msgid "Download settings" +msgstr "Descarcă setările" + +#: views/settings/page-sections/tools.php:60 +msgid "Rollback" +msgstr "Restaurează" + +#: views/settings/page-sections/tools.php:64 +#, php-format +msgid "Has version %s caused an issue on your website?" +msgstr "Versiunea %s a provocat o problemă pe site-ul tău?" + +#: views/settings/page-sections/tools.php:69 +#, php-format +msgid "" +"You can rollback to the previous major version here.%sThen send us a support" +" request." +msgstr "" +"Aici poți restaura la o versiune majoră anterioară.%sApoi trimite-ne o " +"cerere de suport." + +#: views/settings/page-sections/tools.php:80 +#, php-format +msgid "Reinstall version %s" +msgstr "Reinstalează versiune %s" + +#: views/settings/page-sections/tools.php:106 +msgid "Debug mode" +msgstr "Mod depanare" + +#: views/settings/page-sections/tools.php:111 +msgid "Create a debug log file." +msgstr "Creează un fișier jurnal de depanare." + +#: views/settings/page-sections/tutorials.php:13 +#: views/settings/partials/getting-started.php:18 +msgid "Getting Started" +msgstr "Noțiuni de bază" + +#: views/settings/page-sections/tutorials.php:15 +msgid "Getting Started with WP Rocket" +msgstr "Începe cu WP Rocket" + +#: views/settings/page-sections/tutorials.php:16 +#: views/settings/partials/getting-started.php:12 +msgid "Finding the Best Settings for Your Site" +msgstr "Îți găsește cele mai bune setări pentru site" + +#: views/settings/page-sections/tutorials.php:17 +#: views/settings/partials/getting-started.php:13 +msgid "How to Check if WP Rocket is Caching Your Site" +msgstr "Cum să verifici dacă WP Rocket îți memorează în cache site-ul" + +#: views/settings/page-sections/tutorials.php:18 +#: views/settings/partials/getting-started.php:14 +msgid "How to Measure the Speed of Your Site" +msgstr "Cum să măsori viteza site-ului" + +#: views/settings/page-sections/tutorials.php:24 +msgid "Troubleshooting Display Issues with File Optimization" +msgstr "Depanarea problemelor de afișare cu optimizarea fișierelor" + +#: views/settings/page-sections/tutorials.php:25 +msgid "How to Find the Right JavaScript to Exclude" +msgstr "Cum să găsești JavaScript-ul care poate fi exclus" + +#: views/settings/page-sections/tutorials.php:26 +msgid "How External Content Slows Your Site" +msgstr "Cum îți încetinește site-ul conținutul extern" + +#: views/settings/page-sections/tutorials.php:32 +msgid "How Preloading Works" +msgstr "Cum funcționează pre-încărcarea" + +#: views/settings/page-sections/tutorials.php:38 +msgid "Set Up the Cloudflare Add-on" +msgstr "Inițializează suplimentele Cloudflare" + +#: views/settings/page.php:16 +msgid "WP Rocket Settings" +msgstr "Setări WP Rocket" + +#: views/settings/page.php:30 +#, php-format +msgid "version %s" +msgstr "versiunea %s" + +#: views/settings/page.php:57 +msgid "Show Sidebar" +msgstr "Arată bara laterală" + +#: views/settings/page.php:76 +msgid "Thanks for choosing to participate in the WP Rocket beta program!" +msgstr "Îți mulțumim că ai ales să participi la programul beta WP Rocket!" + +#: views/settings/page.php:77 +msgid "" +"A beta version is usually one that has new features and improvements, but we" +" want to test it a little more before full launch." +msgstr "" +"De obicei, o versiune beta este una care are funcționalități noi și " +"îmbunătățiri, dar pe care dorim să o testăm înainte de a o lansa definitiv." + +#: views/settings/page.php:78 +msgid "" +"We’d love it if you took our beta versions for a ride, but please keep in " +"mind that it might be less stable than our other releases. Don’t worry, you " +"can switch back to a full release version at any time." +msgstr "" +"Ne-ar plăcea să testezi versiunile noastre beta pe situl tău, dar te rog să " +"reții că ar putea să nu fie la fel de stabile ca și celelalte versiuni deja " +"lansate. Dar nu-ți face griji, poți reveni oricând la ultima versiune " +"stabilă lansată." + +#: views/settings/page.php:79 +msgid "" +"Your mission: please send all feedback about our beta versions, including " +"bug reports, to support@wp-rocket.me" +msgstr "" +"Scopul este să ne trimiți toate impresiile și informațiile tale despre " +"versiunile beta, inclusiv rapoartele de erori, la support@wp-rocket.me" + +#: views/settings/page.php:81 +msgid "If you don’t want to join the beta program, simply close this window." +msgstr "" +"Dacă nu vrei să participi la programul nostru beta, închide pur și simplu " +"această fereastră." + +#: views/settings/page.php:83 +msgid "Activate Rocket Tester" +msgstr "Activează testerul Rocket" + +#: views/settings/page.php:94 +msgid "" +"Below is a detailed view of all data WP Rocket will collect if " +"granted permission." +msgstr "" +"Mai jos este o listă detaliată a tuturor datelor pe care WP Rocket le va " +"colecta, dacă acorzi permisiunea." + +#: views/settings/page.php:97 +msgid "" +"WP Rocket will never transmit any domain names or email addresses (except " +"for license validation), IP addresses, or third-party API keys." +msgstr "" +"WP Rocket nu va divulga niciodată nume de domenii sau adrese de email (cu " +"excepția validării licenței), adrese IP sau chei API de la părți terțe." + +#: views/settings/page.php:99 +msgid "Activate Rocket analytics" +msgstr "Activează analitice Rocket" + +#: views/settings/partials/documentation.php:15 +msgid "It is a great starting point to fix some of the most common issues." +msgstr "" +"Este un punct de plecare bun pentru a rezolva unele dintre cele mai " +"frecvente probleme." + +#: views/settings/partials/documentation.php:22 +msgid "Read the documentation" +msgstr "Citește documentația" + +#: views/settings/partials/getting-started.php:11 +msgid "What WP Rocket Does For You By Default" +msgstr "Ce face implicit WP Rocket pentru tine" + +#: views/settings/partials/sidebar.php:12 +msgid "How to correctly measure your website’s loading time" +msgstr "Cum să măsori corect timpul de încărcare al site-ului tău web" + +#: views/settings/partials/sidebar.php:14 +msgid "Check our tutorial and learn how to measure the speed of your site." +msgstr "Vezi tutorialul nostru și învață cum să măsori viteza site-ului." + +#: views/settings/partials/sidebar.php:19 +msgid "" +"Learn how to use best practices to correctly measure your site's " +"performance." +msgstr "" +"Află cum să folosești cele mai bune practici pentru a măsura corect " +"performanța site-ului tău." + +#: views/settings/partials/sidebar.php:20 +msgid "" +"https://wp-rocket.me/blog/correctly-measure-websites-page-load-" +"time/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://wp-rocket.me/blog/correctly-measure-websites-page-load-" +"time/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: views/settings/partials/sidebar.php:20 +msgid "Read our guide" +msgstr "Citește ghidul nostru" + +#: views/settings/partials/sidebar.php:23 +msgid "Why Google PageSpeed grade should not matter" +msgstr "" +"De ce gradul de optimizare PageSpeed Insights Google nu ar trebui să aibă " +"importanță" + +#: views/settings/partials/sidebar.php:24 +msgid "" +"https://wp-rocket.me/blog/the-truth-about-google-pagespeed-" +"insights/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://wp-rocket.me/blog/the-truth-about-google-pagespeed-" +"insights/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: views/settings/partials/sidebar.php:24 +msgid "Read more" +msgstr "Citește mai mult" + +#: views/settings/partials/sidebar.php:29 +msgid "You have not activated logged-in user cache." +msgstr "Nu ai activat cache-ul pentru utilizatorii autentificați." + +#: views/settings/partials/sidebar.php:30 +msgid "" +"Use a private browser to check your website's speed and visual appearance." +msgstr "" +"Folosește un navigator privat pentru a verifica viteza și aspectul vizual " +"pentru site-ul tău web." + +#: views/settings/rocketcdn/cta-big.php:27 +#, php-format +msgid "Valid until %s only!" +msgstr "Valid numai până la %s!" + +#: views/settings/rocketcdn/cta-big.php:36 +msgid "Speed up your website thanks to:" +msgstr "Accelerează-ți site-ul web cu ajutorul:" + +#: views/settings/rocketcdn/cta-big.php:42 +#, php-format +msgid "" +"High performance Content Delivery Network (CDN) with %1$sunlimited " +"bandwith%2$s" +msgstr "" +"Rețea de livrare conținut (CDN) de înaltă performanță cu %1$slățime de bandă" +" nelimitată%2$s" + +#: views/settings/rocketcdn/cta-big.php:48 +#, php-format +msgid "" +"Easy configuration: the %1$sbest CDN settings%2$s are automatically applied" +msgstr "" +"Configurare ușoară: %1$scele mai bune setări pentru CDN%2$s sunt aplicate " +"automat" + +#: views/settings/rocketcdn/cta-big.php:54 +#, php-format +msgid "" +"WP Rocket integration: the CDN option is %1$sautomatically configured%2$s in" +" our plugin" +msgstr "" +"Integrare WP Rocket: opțiunea CDN este %1$sconfigurată automat%2$s în " +"modulul nostru" + +#: views/settings/rocketcdn/cta-big.php:69 +#, php-format +msgid "%s / month" +msgstr "%s/lună" + +#: views/settings/rocketcdn/cta-big.php:74 +msgid "Get Started" +msgstr "Începe" + +#: views/settings/rocketcdn/cta-big.php:80 +msgid "Learn more about RocketCDN" +msgstr "Află mai multe despre RocketCDN" + +#: views/settings/rocketcdn/cta-big.php:82 +msgid "Reduce this banner" +msgstr "Micșorează acest banner" + +#: views/settings/rocketcdn/cta-big.php:88 +#, php-format +msgid "" +"* $%1$s/month for 12 months then $%2$s/month. You can cancel your " +"subscription at any time." +msgstr "" +"* %1$s $/lună în primele 12 luni, apoi %2$s $/lună. Îți poți anula " +"abonamentul oricând." + +#: views/settings/rocketcdn/cta-small.php:17 +msgid "" +"Speed up your website with RocketCDN, WP Rocket’s Content Delivery Network." +msgstr "" +"Accelerează-ți site-ul web cu RocketCDN, rețeaua de livrare conținut oferită" +" de WP Rocket." + +#: views/settings/rocketcdn/cta-small.php:20 +#: views/settings/rocketcdn/promote-notice.php:13 +msgid "Learn More" +msgstr "Află mai mult" + +#: views/settings/rocketcdn/dashboard-status.php:23 +msgid "RocketCDN is unavailable on local domains and staging sites." +msgstr "" +"RocketCDN nu este disponibil pentru domenii locale și site-uri în pregătire " +"sau în testare." + +#: views/settings/rocketcdn/dashboard-status.php:32 +msgid "Get RocketCDN" +msgstr "Ia RocketCDN" + +#: views/settings/rocketcdn/promote-notice.php:11 +msgid "New!" +msgstr "Nou!" + +#: views/settings/rocketcdn/promote-notice.php:12 +msgid "" +"Speed up your website with RocketCDN, WP Rocket’s Content Delivery Network!" +msgstr "" +"Accelerează-ți site-ul web cu RocketCDN, rețeaua de livrare conținut oferită" +" de WP Rocket!" + +#: views/settings/sections/addons-container.php:24 +#: views/settings/sections/fields-container.php:28 +msgid "Need Help?" +msgstr "Ai nevoie de ajutor?" diff --git a/wp-content/plugins/wp-rocket/languages/rocket-ru.mo b/wp-content/plugins/wp-rocket/languages/rocket-ru.mo new file mode 100644 index 0000000000000000000000000000000000000000..2da33d3f01fea75d32fdfef96aeaca9eb8ed376d GIT binary patch literal 1068 zcmaJ=UvJYe5Fdi4Jo3zgkziUyoy187owIDx#)c*~QFR6O7MbMM1{yoEowbwpHTZgb z2tEPlbZvz+^`uko&+qPcj?aHyzWBX^@(lGA>KoMOsC`r?1Ju75IKZ#NtYxUxPbe(C zDCsxQrc#oV??WFJl0C<69Q}OmTP>uiZeigUs&)g_P*x(aSYZM-U~wGiHt2a*7guMSQ!+pFPL;GE zEgj!CIH`q&4Vsy#WJ-#u&<1Swb$m_-8=Pah1x?Rnp~^~5I2rt??0QO0bn6XgtrjzS zu5@iUkxl2CEJ?}I%=YA47G@bEySv1h;p>bsa!f*kaP*I|Xq7t55@&W5;USC2!^5)V zh$THNVUHzQ7P?f2JIeMq6aG z9Y7eoezO(DI5E1|3W+$m16eA)6&2&Xs}k~BmF*0+lO}FY&3}`rRu^!(Tv$$)8+(Hf VW?@TJ<2KXlws9|*lY4Bw^AGr7LU;fG literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-rocket/languages/rocket-ru.po b/wp-content/plugins/wp-rocket/languages/rocket-ru.po new file mode 100644 index 0000000..b6768de --- /dev/null +++ b/wp-content/plugins/wp-rocket/languages/rocket-ru.po @@ -0,0 +1,2975 @@ +# Copyright (C) 2016 WP Rocket +# This file is distributed under the same license as the WP Rocket package. +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: WP Rocket 3.3.7\n" +"Report-Msgid-Bugs-To: http://wp-rocket.me/\n" +"POT-Creation-Date: 2019-08-26 11:14-0400\n" +"PO-Revision-Date: 2019-08-26 15:14+0000\n" +"Language-Team: Russian (https://www.transifex.com/wp-media/teams/18133/ru/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ru\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" +"X-Generator: Poedit 1.8.11\n" +"X-Poedit-Basepath: ..\n" +"X-Poedit-KeywordsList: __;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c\n" +"X-Poedit-SearchPath-0: .\n" +"X-Poedit-SearchPathExcluded-0: assets\n" +"X-Poedit-SearchPathExcluded-1: src\n" +"X-Poedit-SearchPathExcluded-2: vendor\n" +"X-Poedit-SearchPathExcluded-3: node_modules\n" +"X-Poedit-SearchPathExcluded-4: tests\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Textdomain-Support: yes\n" + +#: inc/3rd-party/hosting/flywheel.php:15 inc/3rd-party/hosting/godaddy.php:15 +#: inc/3rd-party/hosting/o2switch.php:15 +#: inc/3rd-party/hosting/pressidium.php:15 inc/3rd-party/hosting/savvii.php:15 +#: inc/3rd-party/hosting/wp-serveur.php:24 +#: inc/3rd-party/hosting/wpengine.php:15 +#, php-format +msgid "" +"Your site is hosted on %s, we have enabled Varnish auto-purge for " +"compatibility." +msgstr "" + +#: inc/3rd-party/hosting/kinsta.php:150 +#, php-format +msgid "" +"Your installation seems to be missing core Kinsta files managing Cache " +"clearing and CDN, which will prevent your Kinsta installation and WP Rocket " +"from working correctly. Please get in touch with Kinsta support through your" +" %1$sMyKinsta%2$s account to resolve this issue." +msgstr "" + +#: inc/3rd-party/plugins/jetpack.php:86 +msgid "Jetpack XML Sitemaps" +msgstr "" + +#: inc/3rd-party/plugins/jetpack.php:88 +msgid "Preload the sitemap from the Jetpack plugin" +msgstr "" + +#: inc/3rd-party/plugins/jetpack.php:96 +#: inc/3rd-party/plugins/seo/all-in-one-seo-pack.php:88 +#: inc/3rd-party/plugins/seo/rank-math-seo.php:34 +#: inc/3rd-party/plugins/seo/seopress.php:85 +#: inc/3rd-party/plugins/seo/the-seo-framework.php:123 +#: inc/3rd-party/plugins/seo/yoast-seo.php:86 +#, php-format +msgid "" +"We automatically detected the sitemap generated by the %s plugin. You can " +"check the option to preload it." +msgstr "" + +#: inc/3rd-party/plugins/seo/all-in-one-seo-pack.php:86 +msgid "All in One SEO XML sitemap" +msgstr "" + +#: inc/3rd-party/plugins/seo/rank-math-seo.php:32 +msgid "Rank Math XML sitemap" +msgstr "" + +#: inc/3rd-party/plugins/seo/seopress.php:83 +msgid "SEOPress XML sitemap" +msgstr "" + +#: inc/3rd-party/plugins/seo/the-seo-framework.php:121 +msgid "The SEO Framework XML sitemap" +msgstr "" + +#: inc/3rd-party/plugins/seo/yoast-seo.php:84 +msgid "Yoast SEO XML sitemap" +msgstr "" + +#: inc/admin/admin.php:13 inc/common/admin-bar.php:311 +#: inc/deprecated/deprecated.php:1789 +msgid "Support" +msgstr "" + +#: inc/admin/admin.php:15 +msgid "Docs" +msgstr "" + +#: inc/admin/admin.php:17 inc/common/admin-bar.php:299 +msgid "FAQ" +msgstr "" + +#: inc/admin/admin.php:19 inc/common/admin-bar.php:46 +msgid "Settings" +msgstr "" + +#: inc/admin/admin.php:64 inc/admin/admin.php:86 inc/admin/admin.php:105 +msgid "Clear this cache" +msgstr "" + +#: inc/admin/admin.php:249 inc/admin/admin.php:264 +#: inc/classes/class-wp-rocket-requirements-check.php:204 +#: inc/classes/class-wp-rocket-requirements-check.php:214 +#, php-format +msgid "%s Update Rollback" +msgstr "" + +#: inc/admin/admin.php:290 +#, php-format +msgid "%1$sReturn to WP Rocket%2$s or %3$sgo to Plugins page%2$s" +msgstr "" + +#: inc/admin/admin.php:529 +msgid "Settings import failed: you do not have the permissions to do this." +msgstr "" + +#: inc/admin/admin.php:533 +msgid "Settings import failed: no file uploaded." +msgstr "" + +#: inc/admin/admin.php:537 +msgid "Settings import failed: incorrect filename." +msgstr "" + +#: inc/admin/admin.php:546 +msgid "Settings import failed: incorrect filetype." +msgstr "" + +#: inc/admin/admin.php:554 +msgid "Settings import failed: " +msgstr "" + +#: inc/admin/admin.php:571 +msgid "Settings import failed: unexpected file content." +msgstr "" + +#: inc/admin/admin.php:592 +msgid "Settings imported and saved." +msgstr "" + +#: inc/admin/options.php:101 +#, php-format +msgid "Cloudflare development mode error: %s" +msgstr "" + +#: inc/admin/options.php:107 +#, php-format +msgid "Cloudflare development mode %s" +msgstr "" + +#: inc/admin/options.php:124 +#, php-format +msgid "Cloudflare cache level error: %s" +msgstr "" + +#: inc/admin/options.php:128 +msgctxt "Cloudflare caching level" +msgid "Standard" +msgstr "" + +#: inc/admin/options.php:134 +#, php-format +msgid "Cloudflare cache level set to %s" +msgstr "" + +#: inc/admin/options.php:146 +#, php-format +msgid "Cloudflare minification error: %s" +msgstr "" + +#: inc/admin/options.php:152 +#, php-format +msgid "Cloudflare minification %s" +msgstr "" + +#: inc/admin/options.php:164 +#, php-format +msgid "Cloudflare rocket loader error: %s" +msgstr "" + +#: inc/admin/options.php:170 +#, php-format +msgid "Cloudflare rocket loader %s" +msgstr "" + +#: inc/admin/options.php:182 +#, php-format +msgid "Cloudflare browser cache error: %s" +msgstr "" + +#: inc/admin/options.php:188 +#, php-format +msgid "Cloudflare browser cache set to %s seconds" +msgstr "" + +#: inc/admin/options.php:241 inc/classes/admin/settings/class-page.php:692 +msgid "Excluded CSS Files" +msgstr "" + +#: inc/admin/options.php:242 inc/classes/admin/settings/class-page.php:784 +msgid "Excluded Inline JavaScript" +msgstr "" + +#: inc/admin/options.php:243 inc/classes/admin/settings/class-page.php:802 +msgid "Excluded JavaScript Files" +msgstr "" + +#: inc/admin/options.php:244 inc/classes/admin/settings/class-page.php:1128 +msgid "Never Cache URL(s)" +msgstr "" + +#: inc/admin/options.php:245 inc/classes/admin/settings/class-page.php:1144 +msgid "Never Cache User Agent(s)" +msgstr "" + +#: inc/admin/options.php:246 inc/classes/admin/settings/class-page.php:1149 +msgid "Always Purge URL(s)" +msgstr "" + +#: inc/admin/options.php:247 inc/classes/admin/settings/class-page.php:1443 +msgid "Exclude files from CDN" +msgstr "" + +#: inc/admin/options.php:265 +#, php-format +msgid "%1$s: %2$s." +msgstr "" + +#: inc/admin/options.php:275 +msgid "The following pattern is invalid and has been removed:" +msgid_plural "The following patterns are invalid and have been removed:" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: inc/admin/ui/meta-boxes.php:14 inc/admin/ui/notices.php:955 +#: inc/common/admin-bar.php:65 inc/common/admin-bar.php:118 +#: views/settings/page-sections/dashboard.php:115 +msgid "Clear cache" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:36 +msgid "WP Rocket Options" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:66 +msgid "Never cache this page" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:70 +msgid "Activate these options on this post:" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:73 +msgid "LazyLoad for images" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:74 +msgid "LazyLoad for iframes/videos" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:75 +#: inc/classes/admin/settings/class-page.php:615 +msgid "Minify HTML" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:76 +msgid "Minify/combine CSS" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:77 +msgid "Minify/combine JS" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:78 +#: inc/classes/admin/settings/class-page.php:1413 +#: inc/classes/admin/settings/class-page.php:1424 +#: inc/deprecated/deprecated.php:1775 +msgid "CDN" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:79 +msgid "Optimize CSS Delivery" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:80 +msgid "Defer JS" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:86 +#, php-format +msgid "Activate first the %s option." +msgstr "" + +#: inc/admin/ui/meta-boxes.php:102 +#, php-format +msgid "" +"%1$sNote:%2$s None of these options will be applied if this post has been " +"excluded from cache in the global cache settings." +msgstr "" + +#: inc/admin/ui/notices.php:24 inc/admin/ui/notices.php:34 +#, php-format +msgid "" +"%1$s has not been deactivated due to missing writing permissions.
      \n" +"Make %2$s writeable and retry deactivation, or force deactivation now:" +msgstr "" + +#: inc/admin/ui/notices.php:83 +#, php-format +msgid "" +"%s: One or more plugins have been enabled or disabled, " +"clear the cache if they affect the front end of your site." +msgstr "" + +#: inc/admin/ui/notices.php:196 +#, php-format +msgid "" +"%s: The following plugins are not compatible with this " +"plugin and may cause unexpected results:" +msgstr "" + +#: inc/admin/ui/notices.php:202 +msgid "Deactivate" +msgstr "" + +#: inc/admin/ui/notices.php:243 +msgid "" +"WP Rocket Footer JS is not an official add-on. It prevents some options in " +"WP Rocket from working correctly. Please deactivate it if you have problems." +msgstr "" + +#: inc/admin/ui/notices.php:283 +#, php-format +msgid "" +"Endurance Cache is currently enabled, which will conflict with WP Rocket " +"Cache. Please set the Endurance Cache cache level to Off (Level 0) on the " +"%1$sSettings > General%2$s page to prevent any issues." +msgstr "" + +#: inc/admin/ui/notices.php:305 +#, php-format +msgid "" +"%1$s: A custom permalink structure is required for the plugin to work " +"properly. %2$sGo to permalinks settings%3$s" +msgstr "" + +#: inc/admin/ui/notices.php:442 +#, php-format +msgid "" +"%s could not modify the .htaccess file due to missing writing permissions." +msgstr "" + +#: inc/admin/ui/notices.php:448 inc/admin/ui/notices.php:1032 +#, php-format +msgid "Troubleshoot: %1$sHow to make system files writeable%2$s" +msgstr "" + +#: inc/admin/ui/notices.php:450 inc/admin/ui/notices.php:1034 +msgid "" +"https://docs.wp-rocket.me/article/626-how-to-make-system-files-htaccess-wp-" +"config-writeable/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" + +#: inc/admin/ui/notices.php:456 +msgid "" +"Don’t worry, WP Rocket’s page caching and settings will still function " +"correctly." +msgstr "" + +#: inc/admin/ui/notices.php:456 +msgid "" +"For optimal performance, adding the following lines into your .htaccess is " +"recommended (not required):" +msgstr "" + +#: inc/admin/ui/notices.php:600 +#, php-format +msgid "" +"%1$s is good to go! %2$sTest your load time%4$s, or visit your " +"%3$ssettings%4$s." +msgstr "" + +#: inc/admin/ui/notices.php:721 +msgid "" +"Would you allow WP Rocket to collect non-sensitive diagnostic data from this" +" website?" +msgstr "" + +#: inc/admin/ui/notices.php:722 +msgid "This would help us to improve WP Rocket for you in the future." +msgstr "" + +#: inc/admin/ui/notices.php:728 +msgid "What info will we collect?" +msgstr "" + +#: inc/admin/ui/notices.php:733 +msgid "" +"Below is a detailed view of all data WP Rocket will collect if granted " +"permission. WP Rocket will never transmit any domain names or email " +"addresses (except for license validation), IP addresses, or third-party API " +"keys." +msgstr "" + +#: inc/admin/ui/notices.php:742 +msgid "Yes, allow" +msgstr "" + +#: inc/admin/ui/notices.php:745 +msgid "No, thanks" +msgstr "" + +#: inc/admin/ui/notices.php:783 +msgid "Thank you!" +msgstr "" + +#: inc/admin/ui/notices.php:788 +msgid "WP Rocket now collects these metrics from your website:" +msgstr "" + +#: inc/admin/ui/notices.php:825 +#, php-format +msgid "%s: Cache cleared." +msgstr "" + +#: inc/admin/ui/notices.php:830 +#, php-format +msgid "%s: Post cache cleared." +msgstr "" + +#: inc/admin/ui/notices.php:835 +#, php-format +msgid "%s: Term cache cleared." +msgstr "" + +#: inc/admin/ui/notices.php:840 +#, php-format +msgid "%s: User cache cleared." +msgstr "" + +#: inc/admin/ui/notices.php:910 +msgid "" +"The following scheduled event failed to run. This may indicate the CRON " +"system is not running properly, which can prevent some WP Rocket features " +"from working as intended:" +msgid_plural "" +"The following scheduled events failed to run. This may indicate the CRON " +"system is not running properly, which can prevent some WP Rocket features " +"from working as intended:" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: inc/admin/ui/notices.php:919 +msgid "Please contact your host to check if CRON is working." +msgstr "" + +#: inc/admin/ui/notices.php:958 +msgid "Stop Preload" +msgstr "" + +#: inc/admin/ui/notices.php:976 +msgid "Force deactivation " +msgstr "" + +#: inc/admin/ui/notices.php:989 +msgid "The following code should have been written to this file:" +msgstr "" + +#: inc/admin/ui/notices.php:999 views/settings/page-sections/dashboard.php:45 +msgid "Dismiss this notice." +msgstr "" + +#: inc/admin/ui/notices.php:1020 +#, php-format +msgid "%s cannot configure itself due to missing writing permissions." +msgstr "" + +#: inc/admin/ui/notices.php:1026 +#, php-format +msgid "Affected file/folder: %s" +msgstr "" + +#: inc/classes/admin/Database/class-optimization.php:41 +#: inc/classes/admin/settings/class-page.php:1289 +msgid "Revisions" +msgstr "" + +#: inc/classes/admin/Database/class-optimization.php:42 +#: inc/classes/admin/settings/class-page.php:1299 +msgid "Auto Drafts" +msgstr "" + +#: inc/classes/admin/Database/class-optimization.php:43 +#: inc/classes/admin/settings/class-page.php:1309 +msgid "Trashed Posts" +msgstr "" + +#: inc/classes/admin/Database/class-optimization.php:44 +#: inc/classes/admin/settings/class-page.php:1319 +msgid "Spam Comments" +msgstr "" + +#: inc/classes/admin/Database/class-optimization.php:45 +#: inc/classes/admin/settings/class-page.php:1329 +msgid "Trashed Comments" +msgstr "" + +#: inc/classes/admin/Database/class-optimization.php:46 +#: inc/classes/admin/settings/class-page.php:1339 +msgid "Expired transients" +msgstr "" + +#: inc/classes/admin/Database/class-optimization.php:47 +msgid "Transients" +msgstr "" + +#: inc/classes/admin/Database/class-optimization.php:48 +msgid "Tables" +msgstr "" + +#: inc/classes/admin/class-logs.php:124 +msgid "The debug file could not be deleted." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:212 +#: inc/classes/admin/settings/class-page.php:213 +msgid "Unavailable" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:327 +#: inc/deprecated/deprecated.php:1791 +#: views/settings/page-sections/dashboard.php:72 +msgid "License" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:344 +msgid "API key" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:359 +msgid "Email address" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:388 +msgid "Dashboard" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:389 +msgid "Get help, account info" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:398 +msgid "My Status" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:408 views/settings/page.php:71 +msgid "Rocket Tester" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:409 +msgid "I am part of the WP Rocket Beta Testing Program." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:417 views/settings/page.php:89 +msgid "Rocket Analytics" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:419 +#, php-format +msgid "" +"I agree to share anonymous data with the development team to help improve WP" +" Rocket. %1$sWhat info will we collect?%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:447 +msgid "Cache" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:448 +msgid "Basic cache options" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:455 +msgid "Mobile Cache" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:457 +msgid "Speed up your site for mobile visitors." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:462 +msgid "" +"We detected you use a plugin that requires a separate cache for mobile, and " +"automatically enabled this option for compatibility." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:466 +msgid "User Cache" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:469 +#, php-format +msgid "" +"%1$sUser cache%2$s is great when you have user-specific or restricted " +"content on your website." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:477 +msgid "Cache Lifespan" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:480 +#, php-format +msgid "" +"Cache lifespan is the period of time after which all cache files are " +"removed.
      Enable %1$spreloading%2$s for the cache to be rebuilt " +"automatically after lifespan expiration." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:494 +msgid "Enable caching for logged-in WordPress users" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:502 +msgid "Enable caching for mobile devices" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:517 +msgid "Separate cache files for mobile devices" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:519 +#, php-format +msgid "" +"%1$sMobile cache%2$s works safest with both options enabled. When in doubt, " +"keep both." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:535 +msgid "" +"Specify time after which the global cache is cleared
      (0 = unlimited )" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:537 +#, php-format +msgid "" +"Reduce lifespan to 10 hours or less if you notice issues that seem to appear" +" periodically. %1$sWhy?%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:543 +msgid "Minutes" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:544 +msgid "Hours" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:545 +msgid "Days" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:571 +msgid "File Optimization" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:572 +msgid "Optimize CSS & JS" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:579 +msgid "Basic Settings" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:586 +#: inc/classes/admin/settings/class-page.php:596 +#: inc/classes/admin/settings/class-page.php:606 +#, php-format +msgid "" +"%1$s Minification is currently activated in Autoptimize. If" +" you want to use %2$s’s minification, disable those options in Autoptimize." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:589 +msgid "CSS Files" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:599 +msgid "JavaScript Files" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:619 +msgid "Minifying HTML removes whitespace and comments to reduce the size." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:630 +msgid "Combine Google Fonts files" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:631 +msgid "Combining Google Fonts will reduce the number of HTTP requests." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:639 +msgid "Remove query strings from static resources" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:641 +#, php-format +msgid "" +"Removes the version query string from static files (e.g. style.css?ver=1.0) " +"and encodes it into the filename instead (e.g. style-1.0.css). Can improve " +"your GTMetrix score. %1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:649 +msgid "Minify CSS files" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:650 +msgid "Minify CSS removes whitespace and comments to reduce the file size." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:663 +#: inc/classes/admin/settings/class-page.php:685 +#: inc/classes/admin/settings/class-page.php:755 +#: inc/classes/admin/settings/class-page.php:777 +msgid "This could break things!" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:664 +#: inc/classes/admin/settings/class-page.php:686 +#: inc/classes/admin/settings/class-page.php:756 +#: inc/classes/admin/settings/class-page.php:778 +msgid "" +"If you notice any errors on your website after having activated this " +"setting, just deactivate it again, and your site will be back to normal." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:665 +msgid "Activate minify CSS" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:670 +msgid "Combine CSS files (Enable Minify CSS files to select)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:672 +#, php-format +msgid "" +"Combine CSS merges all your files into 1, reducing HTTP requests. Not " +"recommended if your site uses HTTP/2. %1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:687 +msgid "Activate combine CSS" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:693 +msgid "" +"Specify URLs of CSS files to be excluded from minification and concatenation" +" (one per line)." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:694 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*).css " +"wildcards to exclude all CSS files located at a specific path." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:707 +msgid "Optimize CSS delivery" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:714 +#, php-format +msgctxt "WP Critical CSS compatibility" +msgid "" +"Optimize CSS Delivery is currently handled by the %1$s plugin. If you want " +"to use WP Rocket’s Optimize CSS Delivery option, disable the %1$s plugin." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:716 +#, php-format +msgid "" +"Optimize CSS delivery eliminates render-blocking CSS on your website for " +"faster perceived load time. %1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:727 +msgid "Fallback critical CSS" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:732 +#, php-format +msgid "" +"Provides a fallback if auto-generated critical path CSS is incomplete. " +"%1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:741 +msgid "Minify JavaScript files" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:742 +msgid "" +"Minify JavaScript removes whitespace and comments to reduce the file size." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:757 +msgid "Activate minify JavaScript" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:762 +msgid "" +"Combine JavaScript files (Enable Minify JavaScript files to select)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:764 +#, php-format +msgid "" +"Combine JavaScript files combines your site’s internal, 3rd party and inline" +" JS reducing HTTP requests. Not recommended if your site uses HTTP/2. " +"%1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:779 +msgid "Activate combine JavaScript" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:786 +#, php-format +msgid "" +"Specify patterns of inline JavaScript to be excluded from concatenation (one" +" per line). %1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:803 +msgid "" +"Specify URLs of JavaScript files to be excluded from minification and " +"concatenation (one per line)." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:804 +msgid "" +"Internal: The domain part of the URL will be stripped " +"automatically. Use (.*).js wildcards to exclude all JS files located at a " +"specific path." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:806 +#, php-format +msgid "" +"3rd Party: Use either the full URL path or only the domain " +"name, to exclude external JS. %1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:822 +msgid "Load JavaScript deferred" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:824 +#, php-format +msgid "" +"Load JavaScript deferred eliminates render-blocking JS on your site and can " +"improve load time. %1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:835 +msgid "Safe Mode for jQuery (recommended)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:836 +msgid "" +"Safe mode for jQuery for deferred JS ensures support for inline jQuery " +"references from themes and plugins by loading jQuery at the top of the " +"document as a render-blocking script.
      Deactivating may result in " +"broken functionality, test thoroughly!" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:861 +msgid "Media" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:862 +msgid "LazyLoad, emojis, embeds" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:869 +msgid "LazyLoad" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:872 +#, php-format +msgid "" +"It can improve actual and perceived loading time as images, iframes, and " +"videos will be loaded only as they enter (or about to enter) the viewport " +"and reduces the number of HTTP requests. %1$sMore Info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:879 +#, php-format +msgid "" +"Lazyload is currently activated in Autoptimize. If you want" +" to use %1$s’s lazyload, disable this option in Autoptimize." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:882 +msgid "Emoji 👻" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:884 +msgid "" +"Use default emoji of visitor's browser instead of loading emoji from " +"WordPress.org" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:888 +msgid "Embeds" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:890 +msgid "" +"Prevents others from embedding content from your site, prevents you from " +"embedding content from other (non-whitelisted) sites, and removes JavaScript" +" requests related to WordPress embeds" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:900 +msgid "Enable for images" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:911 +msgctxt "Avada" +msgid "" +"Lazyload for images is currently activated in Avada. If you want to use WP " +"Rocket’s LazyLoad, disable this option in Avada." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:919 +msgid "Enable for iframes and videos" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:934 +msgid "Replace YouTube iframe with preview image" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:935 +msgid "" +"This can significantly improve your loading time if you have a lot of " +"YouTube videos on a page." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:947 +msgid "Disable Emoji" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:948 +msgid "Disable Emoji will reduce the number of external HTTP requests." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:956 +msgid "Disable WordPress embeds" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:978 +#: inc/classes/admin/settings/class-page.php:988 +#: inc/deprecated/deprecated.php:1778 +msgid "Preload" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:979 +msgid "Generate cache files" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:991 +#, php-format +msgid "" +"When you enable preloading WP Rocket will generate the cache starting with " +"the links on your homepage followed by the sitemaps you specify. Preloading " +"is automatically triggered when you add or update content and can also be " +"manually triggered from the admin bar or from the %1$sWP Rocket " +"Dashboard%2$s." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:999 +msgid "Prefetch DNS Requests" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1001 +msgid "" +"DNS prefetching can make external files load faster, especially on mobile " +"networks" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1015 +msgid "Activate Preloading" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1034 +msgid "Activate sitemap-based cache preloading" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1053 +msgid "Sitemaps for preloading" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1057 +msgid "Specify XML sitemap(s) to be used for preloading" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1067 +msgid "URLs to prefetch" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1068 +msgid "" +"Specify external hosts to be prefetched (no http:, one per " +"line)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1091 +msgid "Advanced Rules" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1092 +msgid "Fine-tune cache rules" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1101 +msgid "" +"Sensitive pages like custom login/logout URLs should be excluded from cache." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1104 +msgctxt "plugin name" +msgid "WooCommerce" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1106 +msgctxt "plugin name" +msgid "Easy Digital Downloads" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1108 +msgctxt "plugin name" +msgid "iThemes Exchange" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1110 +msgctxt "plugin name" +msgid "Jigoshop" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1112 +msgctxt "plugin name" +msgid "WP-Shop" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1118 +#, php-format +msgid "" +"
      Cart, checkout and \"my account\" pages set in " +"%1$s%2$s%3$s will be detected and never cached by default." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1139 +msgid "Never Cache Cookies" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1158 +msgid "Cache Query String(s)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1161 +#, php-format +msgid "" +"%1$sCache for query strings%2$s enables you to force caching for specific " +"GET parameters." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1175 +msgid "" +"Specify URLs of pages or posts that should never be cached (one per line)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1176 +#: inc/classes/admin/settings/class-page.php:1204 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*) " +"wildcards to address multiple URLs under a given path." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1185 +msgid "" +"Specify the IDs of cookies that, when set in the visitor's browser, should " +"prevent a page from getting cached (one per line)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1193 +msgid "" +"Specify user agent strings that should never see cached pages (one per line)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1194 +msgid "Use (.*) wildcards to detect parts of UA strings." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1203 +msgid "" +"Specify URLs you always want purged from cache whenever you update any post " +"or page (one per line)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1212 +msgid "Specify query strings for caching (one per line)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1240 +#: inc/deprecated/deprecated.php:1777 +msgid "Database" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1241 +msgid "Optimize, reduce bloat" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1250 +msgid "Post Cleanup" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1252 +msgid "" +"Post revisions and drafts will be permanently deleted. Do not use this " +"option if you need to retain revisions or drafts." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1260 +msgid "Comments Cleanup" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1262 +msgid "Spam and trashed comments will be permanently deleted." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1266 +msgid "Transients Cleanup" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1268 +msgid "" +"Transients are temporary options; they are safe to remove. They will be " +"automatically regenerated as your plugins require them." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1272 +msgid "Database Cleanup" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1274 +msgid "Reduces overhead of database tables" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1278 +msgid "Automatic cleanup" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1291 +#, php-format +msgid "%s revision in your database." +msgid_plural "%s revisions in your database." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: inc/classes/admin/settings/class-page.php:1301 +#, php-format +msgid "%s draft in your database." +msgid_plural "%s drafts in your database." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: inc/classes/admin/settings/class-page.php:1311 +#, php-format +msgid "%s trashed post in your database." +msgid_plural "%s trashed posts in your database." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: inc/classes/admin/settings/class-page.php:1321 +#, php-format +msgid "%s spam comment in your database." +msgid_plural "%s spam comments in your database." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: inc/classes/admin/settings/class-page.php:1331 +#, php-format +msgid "%s trashed comment in your database." +msgid_plural "%s trashed comments in your database." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: inc/classes/admin/settings/class-page.php:1341 +#, php-format +msgid "%s expired transient in your database." +msgid_plural "%s expired transients in your database." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: inc/classes/admin/settings/class-page.php:1349 +msgid "All transients" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1351 +#, php-format +msgid "%s transient in your database." +msgid_plural "%s transients in your database." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: inc/classes/admin/settings/class-page.php:1359 +msgid "Optimize Tables" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1361 +#, php-format +msgid "%s table to optimize in your database." +msgid_plural "%s tables to optimize in your database." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: inc/classes/admin/settings/class-page.php:1372 +msgid "Schedule Automatic Cleanup" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1384 +msgid "Frequency" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1392 +msgid "Daily" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1393 +msgid "Weekly" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1394 +msgid "Monthly" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1414 +msgid "Integrate your CDN" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1426 +msgid "" +"All URLs of static files (CSS, JS, images) will be rewritten to the CNAME(s)" +" you provide." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1428 +#, php-format +msgid "" +"Not required for services like Cloudflare and Sucuri. Please see our " +"available %1$sAdd-ons%2$s." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1469 +#, php-format +msgid "" +"%1$s%2$s Add-on%3$s is currently enabled. Configuration of the CDN settings " +"is not required for %2$s to work on your site." +msgid_plural "" +"%1$s%2$s Add-ons%3$s are currently enabled. Configuration of the CDN " +"settings is not required for %2$s to work on your site." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: inc/classes/admin/settings/class-page.php:1484 +msgid "Enable Content Delivery Network" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1493 +msgid "CDN CNAME(s)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1494 +msgid "Specify the CNAME(s) below" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1501 +msgid "" +"Specify URL(s) of files that should not get served via CDN (one per line)." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1502 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*) " +"wildcards to exclude all files of a given file type located at a specific " +"path." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1525 +#: inc/classes/admin/settings/class-page.php:1533 +msgid "Heartbeat" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1526 +msgid "Control WordPress Heartbeat API" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1534 +msgid "" +"Reducing or disabling the Heartbeat API’s activity can help save some of " +"your server’s resources." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1543 +msgid "Reduce or disable Heartbeat activity" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1544 +msgid "" +"Reducing activity will change Heartbeat frequency from one hit each minute " +"to one hit every 2 minutes." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1544 +msgid "" +"Disabling Heartbeat entirely may break plugins and themes using this API." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1558 +msgid "Do not limit" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1559 +msgid "Reduce activity" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1560 +msgid "Disable" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1568 +msgid "Control Heartbeat" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1577 +msgid "Behavior in backend" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1584 +msgid "Behavior in post editor" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1590 +msgid "Behavior in frontend" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1609 +msgid "Add-ons" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1610 +msgid "Add more features" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1617 +msgid "One-click Rocket Add-ons" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1618 +msgid "" +"One-Click Add-ons are features extending available options without " +"configuration needed. Switch the option \"on\" to enable from this screen." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1628 +msgid "Rocket Add-ons" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1629 +msgid "Rocket Add-ons are complementary features extending available options." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1642 +msgid "Google Tracking" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1648 +msgid "Improve browser caching for Google Analytics" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1650 +#, php-format +msgid "" +"WP Rocket will host these Google scripts locally on your server to help " +"satisfy the PageSpeed recommendation for Leverage browser " +"caching.
      %1$sLearn more%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1665 +msgid "Facebook Pixel" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1671 +msgid "Improve browser caching for Facebook Pixel" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1673 +#, php-format +msgid "" +"WP Rocket will host these Facebook Pixels locally on your server to help " +"satisfy the PageSpeed recommendation for Leverage browser " +"caching.
      %1$sLearn more%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1706 +msgid "Varnish" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1712 +msgid "If Varnish runs on your server, you must activate this add-on." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1714 +#, php-format +msgid "" +"Varnish cache will be purged each time WP Rocket clears its cache to ensure " +"content is always up-to-date.
      %1$sLearn more%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1729 +#: inc/classes/admin/settings/class-page.php:1789 +msgid "Cloudflare" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1735 +msgid "Integrate your Cloudflare account with this add-on." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1736 +msgid "" +"Provide your account email, global API key, and domain to use options such " +"as clearing the Cloudflare cache and enabling optimal settings with WP " +"Rocket." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1748 +msgid "Clear the Sucuri cache when WP Rocket’s cache is cleared." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1751 +msgid "" +"Provide your API key to clear the Sucuri cache when WP Rocket’s cache is " +"cleared." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1759 +#: inc/classes/admin/settings/class-page.php:1907 +msgid "Sucuri" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1765 +msgid "Synchronize Sucuri cache with this add-on." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1805 +msgid "Cloudflare credentials" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1814 +msgid "Cloudflare settings" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1828 +msgctxt "Cloudflare" +msgid "Global API key:" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1829 +msgid "" +"https://support.cloudflare.com/hc/en-us/articles/200167836-Where-do-I-find-" +"my-Cloudflare-API-key-" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1829 +msgctxt "Cloudflare" +msgid "Find your API key" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1841 +msgctxt "Cloudflare" +msgid "Account email" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1850 +msgctxt "Cloudflare" +msgid "Zone ID" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1860 +msgid "Development mode" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1862 +#, php-format +msgid "" +"Temporarily activate development mode on your website. This setting will " +"automatically turn off after 3 hours. %1$sLearn more%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1870 +msgid "Optimal settings" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1871 +msgid "" +"Automatically enhances your Cloudflare configuration for speed, performance " +"grade and compatibility." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1879 +msgid "Relative protocol" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1880 +msgid "" +"Should only be used with Cloudflare's flexible SSL feature. URLs of static " +"files (CSS, JS, images) will be rewritten to use // instead of http:// or " +"https://." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1920 +msgid "Sucuri credentials" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1933 +msgctxt "Sucuri" +msgid "" +"Firewall API key (for plugin), must be in format {32 characters}/{32 " +"characters}:" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1934 +msgctxt "Sucuri" +msgid "Find your API key" +msgstr "" + +#: inc/classes/admin/settings/class-render.php:486 +#: inc/deprecated/deprecated.php:1296 +msgid "Upload file and import settings" +msgstr "" + +#: inc/classes/admin/settings/class-settings.php:385 +msgid "" +"Sucuri Add-on: The API key for the Sucuri firewall must be in format " +"{32 characters}/{32 characters}." +msgstr "" + +#: inc/classes/admin/settings/class-settings.php:462 +#: inc/deprecated/deprecated.php:1247 +msgid "Settings saved." +msgstr "" + +#: inc/classes/class-wp-rocket-requirements-check.php:148 +#, php-format +msgid "To function properly, %1$s %2$s requires at least:" +msgstr "" + +#: inc/classes/class-wp-rocket-requirements-check.php:152 +#, php-format +msgid "" +"PHP %1$s. To use this WP Rocket version, please ask your web host how to " +"upgrade your server to PHP %1$s or higher." +msgstr "" + +#: inc/classes/class-wp-rocket-requirements-check.php:157 +#, php-format +msgid "" +"WordPress %1$s. To use this WP Rocket version, please upgrade WordPress to " +"version %1$s or higher." +msgstr "" + +#: inc/classes/class-wp-rocket-requirements-check.php:160 +msgid "" +"If you are not able to upgrade, you can rollback to the previous version by " +"using the button below." +msgstr "" + +#: inc/classes/class-wp-rocket-requirements-check.php:162 +#: inc/deprecated/deprecated.php:1949 +#, php-format +msgid "Re-install version %s" +msgstr "" + +#: inc/classes/logger/class-logger.php:253 +#: inc/classes/logger/class-logger.php:285 +msgid "The log file does not exist." +msgstr "" + +#: inc/classes/logger/class-logger.php:259 +#: inc/classes/logger/class-logger.php:291 +msgid "The log file could not be read." +msgstr "" + +#: inc/classes/logger/class-logger.php:278 +msgid "The logs are not saved into a file." +msgstr "" + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:88 +#: inc/classes/optimization/CSS/class-critical-css-generation.php:99 +#: inc/classes/optimization/CSS/class-critical-css-generation.php:110 +#: inc/classes/optimization/CSS/class-critical-css-generation.php:120 +#: inc/classes/optimization/CSS/class-critical-css-generation.php:142 +#, php-format +msgid "Critical CSS for %1$s not generated. Error: %2$s" +msgstr "" + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:99 +msgid "The API returned an invalid response code." +msgstr "" + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:110 +msgid "The API returned an empty response." +msgstr "" + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:145 +#, php-format +msgid "The critical CSS content could not be saved as a file in %s." +msgstr "" + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:154 +#, php-format +msgid "Critical CSS for %s generated." +msgstr "" + +#: inc/classes/preload/class-homepage.php:83 +#, php-format +msgid "" +"Preload encountered an error. Could not gather links on %1$s because of the " +"following error: %2$s. %3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-homepage.php:96 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: %2$s. Security measures could be preventing access. " +"%3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-homepage.php:102 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: 404. Please make sure your homepage is accessible in your " +"browser. %2$sLearn more%3$s." +msgstr "" + +#: inc/classes/preload/class-homepage.php:108 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: 500. Please check with your web host about server access. " +"%2$sLearn more%3$s." +msgstr "" + +#: inc/classes/preload/class-homepage.php:114 +#, php-format +msgid "" +"Preload encountered an error. Could not gather links on %1$s because it " +"returned the following response code: %2$s. %3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:138 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not gather links on %1$s because" +" of the following error: %2$s. %3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:153 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: %2$s. Security measures could be preventing access." +" %3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:158 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: 404. Please make sure you entered the correct " +"sitemap URL and it is accessible in your browser. %2$sLearn more%3$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:163 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: 500. Please check with your web host about server " +"access. %2$sLearn more%3$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:168 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not gather links on %1$s because" +" it returned the following response code: %2$s. %3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:184 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not collect links from %1$s " +"because the file is empty. %2$sLearn more%3$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:205 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not collect links from %1$s " +"because of an error during the XML sitemap parsing. %2$sLearn more%3$s." +msgstr "" + +#: inc/classes/subscriber/Optimization/class-critical-css-subscriber.php:138 +#, php-format +msgid "" +"Critical CSS generation is currently running: %1$d of %2$d page types " +"completed. (Refresh this page to view progress)" +msgstr "" + +#: inc/classes/subscriber/Optimization/class-critical-css-subscriber.php:189 +#, php-format +msgid "Critical CSS generation finished for %1$d of %2$d page types." +msgstr "" + +#: inc/classes/subscriber/Optimization/class-critical-css-subscriber.php:203 +msgid "Critical CSS generation encountered one or more errors." +msgstr "" + +#: inc/classes/subscriber/Optimization/class-critical-css-subscriber.php:203 +msgid "Learn more." +msgstr "" + +#: inc/classes/subscriber/Tools/class-cache-dir-size-check-subscriber.php:51 +#: inc/classes/subscriber/class-facebook-tracking-cache-busting-subscriber.php:97 +#: inc/classes/subscriber/class-google-tracking-cache-busting-subscriber.php:154 +#: inc/common/cron.php:33 +msgid "weekly" +msgstr "" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:148 +msgid "Database optimization process is running" +msgstr "" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:179 +msgid "" +"Database optimization process is complete. Everything was already optimized!" +msgstr "" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:182 +msgid "" +"Database optimization process is complete. List of optimized items below:" +msgstr "" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:190 +#, php-format +msgid "%1$d %2$s optimized." +msgstr "" + +#: inc/classes/subscriber/admin/Settings/class-page-subscriber.php:137 +#: inc/deprecated/deprecated.php:1788 +#: views/settings/page-sections/tools.php:33 +msgid "Tools" +msgstr "" + +#: inc/classes/subscriber/admin/Settings/class-page-subscriber.php:138 +msgid "Import, Export, Rollback" +msgstr "" + +#: inc/classes/subscriber/admin/Settings/class-page-subscriber.php:160 +#: views/settings/page-sections/imagify.php:13 +msgid "Image Optimization" +msgstr "" + +#: inc/classes/subscriber/admin/Settings/class-page-subscriber.php:161 +msgid "Compress your images" +msgstr "" + +#: inc/classes/subscriber/preload/class-preload-subscriber.php:212 +#, php-format +msgid "" +"Preload: WP Rocket has started preloading your website. Go to the %1$sWP " +"Rocket settings%2$s page to track progress." +msgstr "" + +#: inc/classes/subscriber/preload/class-preload-subscriber.php:246 +#, php-format +msgid "" +"Preload: %1$s uncached page has now been preloaded. (refresh to see " +"progress)" +msgid_plural "" +"Preload: %1$s uncached pages have now been preloaded. (refresh to see " +"progress)" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: inc/classes/subscriber/preload/class-preload-subscriber.php:255 +msgid "The following error happened during gathering of the URLs to preload:" +msgid_plural "" +"The following errors happened during gathering of the URLs to preload:" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: inc/classes/subscriber/preload/class-preload-subscriber.php:308 +#, php-format +msgid "Preload complete: %d pages have been cached." +msgstr "" + +#: inc/classes/subscriber/preload/class-sitemap-preload-subscriber.php:117 +#, php-format +msgid "" +"%1$sSimpleXML PHP extension%2$s is not enabled on your server. Please " +"contact your host to enable it before running sitemap-based cache " +"preloading." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:72 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"Please deactivate the following %s option which conflicts with WP Rocket " +"features:" +msgid_plural "" +"Please deactivate the following %s options which conflict with WP Rocket " +"features:" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:145 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sdisable emoji%3$s conflicts with WP Rockets %2$sdisable emoji%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:167 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sremove query strings%3$s conflicts with WP Rocket %2$sremove query " +"strings%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:203 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sGZIP compression%3$s conflicts with WP Rocket %2$sGZIP " +"compression%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:239 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sbrowser caching%3$s conflicts with WP Rocket %2$sbrowser " +"caching%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:271 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$spage caching%3$s conflicts with WP Rocket %2$spage caching%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:305 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sasset optimization%3$s conflicts with WP Rocket %2$sfile " +"optimization%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:123 +#, php-format +msgid "Sucuri cache purge error: %s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:128 +msgid "" +"The Sucuri cache is being cleared. Note that it may take up to two minutes " +"for it to be fully flushed." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:242 +msgid "Sucuri firewall API key was not found." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:251 +msgid "Sucuri firewall API key is invalid." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:303 +msgid "Error when contacting Sucuri firewall API." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:313 +#, php-format +msgid "Error when contacting Sucuri firewall API. Error message was: %s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:324 +msgid "Could not get a response from the Sucuri firewall API." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:335 +msgid "Got an invalid response from the Sucuri firewall API." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:345 +msgid "The Sucuri firewall API returned an unknown error." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:348 +#, php-format +msgid "The Sucuri firewall API returned the following error: %s" +msgid_plural "The Sucuri firewall API returned the following errors: %s" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: inc/classes/traits/trait-updater-api-tools.php:53 +#: inc/deprecated/3.3.php:760 inc/deprecated/3.3.php:769 +#, php-format +msgid "" +"An unexpected error occurred. Something may be wrong with WP-Rocket.me or " +"this server’s configuration. If you continue to have problems, contact support." +msgstr "" + +#: inc/common/admin-bar.php:106 inc/common/admin-bar.php:260 +#: inc/functions/i18n.php:39 inc/functions/i18n.php:48 +msgid "All languages" +msgstr "" + +#: inc/common/admin-bar.php:133 +msgid "Clear this post" +msgstr "" + +#: inc/common/admin-bar.php:147 +msgid "Purge this URL" +msgstr "" + +#: inc/common/admin-bar.php:163 +msgid "Purge OPcache" +msgstr "" + +#: inc/common/admin-bar.php:180 +msgid "Regenerate Critical Path CSS" +msgstr "" + +#: inc/common/admin-bar.php:196 +msgid "Clear Cloudflare cache" +msgstr "" + +#: inc/common/admin-bar.php:217 inc/common/admin-bar.php:272 +#: views/settings/page-sections/dashboard.php:135 +msgid "Preload cache" +msgstr "" + +#: inc/common/admin-bar.php:287 views/settings/partials/documentation.php:13 +msgid "Documentation" +msgstr "" + +#: inc/common/cron.php:24 +#, php-format +msgid "%s clear" +msgstr "" + +#: inc/common/cron.php:39 +msgid "monthly" +msgstr "" + +#: inc/common/purge.php:456 +#, php-format +msgid "Cloudflare cache purge error: %s" +msgstr "" + +#: inc/common/purge.php:461 +msgid "Cloudflare cache successfully purged" +msgstr "" + +#: inc/deprecated/3.2.php:51 views/settings/page-sections/imagify.php:35 +msgid "Activate Imagify" +msgstr "" + +#: inc/deprecated/3.2.php:51 +msgid "Install Imagify for Free" +msgstr "" + +#: inc/deprecated/3.2.php:66 +msgid "" +"Speed up your website and boost your SEO by reducing image file sizes " +"without losing quality with Imagify." +msgstr "" + +#: inc/deprecated/3.2.php:71 +msgid "More details" +msgstr "" + +#: inc/deprecated/3.2.php:227 +#, php-format +msgid "Sitemap preload: %d pages have been cached." +msgstr "" + +#: inc/deprecated/3.2.php:260 +#, php-format +msgid "" +"Sitemap preload: %d uncached pages have now been preloaded. (refresh to see " +"progress)" +msgstr "" + +#: inc/deprecated/deprecated.php:242 +msgid "JS files with Deferred Loading JavaScript" +msgstr "" + +#: inc/deprecated/deprecated.php:295 +msgid "Add URL" +msgstr "" + +#: inc/deprecated/deprecated.php:1279 views/settings/fields/import-form.php:22 +msgid "" +"Before you can upload your import file, you will need to fix the following " +"error:" +msgstr "" + +#: inc/deprecated/deprecated.php:1290 views/settings/fields/import-form.php:35 +#, php-format +msgid "Choose a file from your computer (maximum size: %s)" +msgstr "" + +#: inc/deprecated/deprecated.php:1387 +msgid "Your Cloudflare credentials are valid." +msgstr "" + +#: inc/deprecated/deprecated.php:1391 +msgid "Your Cloudflare credentials are invalid!" +msgstr "" + +#: inc/deprecated/deprecated.php:1455 +msgid "Save and optimize" +msgstr "" + +#: inc/deprecated/deprecated.php:1455 +#: views/settings/page-sections/database.php:27 +msgid "Optimize" +msgstr "" + +#: inc/deprecated/deprecated.php:1466 inc/deprecated/deprecated.php:1668 +msgctxt "screen-reader-text" +msgid "Note:" +msgstr "" + +#: inc/deprecated/deprecated.php:1472 +msgctxt "screen-reader-text" +msgid "Performance tip:" +msgstr "" + +#: inc/deprecated/deprecated.php:1478 +msgctxt "screen-reader-text" +msgid "Third-party feature detected:" +msgstr "" + +#: inc/deprecated/deprecated.php:1490 inc/deprecated/deprecated.php:1674 +msgctxt "screen-reader-text" +msgid "Warning:" +msgstr "" + +#: inc/deprecated/deprecated.php:1503 +msgctxt "button text" +msgid "Download settings" +msgstr "" + +#: inc/deprecated/deprecated.php:1533 +msgid "Replace site's hostname with:" +msgstr "" + +#: inc/deprecated/deprecated.php:1552 inc/deprecated/deprecated.php:1589 +#: inc/deprecated/deprecated.php:1617 views/settings/fields/cnames.php:32 +#: views/settings/fields/cnames.php:63 views/settings/fields/cnames.php:93 +msgid "reserved for" +msgstr "" + +#: inc/deprecated/deprecated.php:1554 inc/deprecated/deprecated.php:1591 +#: inc/deprecated/deprecated.php:1619 views/settings/fields/cnames.php:35 +#: views/settings/fields/cnames.php:66 views/settings/fields/cnames.php:96 +msgid "All files" +msgstr "" + +#: inc/deprecated/deprecated.php:1566 inc/deprecated/deprecated.php:1596 +#: inc/deprecated/deprecated.php:1624 views/settings/fields/cnames.php:47 +#: views/settings/fields/cnames.php:78 views/settings/fields/cnames.php:108 +msgid "Images" +msgstr "" + +#: inc/deprecated/deprecated.php:1637 views/settings/fields/cnames.php:119 +msgid "Add CNAME" +msgstr "" + +#: inc/deprecated/deprecated.php:1708 +msgid "Watch the video" +msgstr "" + +#: inc/deprecated/deprecated.php:1773 +msgid "Basic" +msgstr "" + +#: inc/deprecated/deprecated.php:1774 +msgid "Static Files" +msgstr "" + +#: inc/deprecated/deprecated.php:1776 +msgid "Advanced" +msgstr "" + +#: inc/deprecated/deprecated.php:1946 +#, php-format +msgid "" +"%1$s %2$s requires at least PHP %3$s to function properly. To use this " +"version, please ask your web host how to upgrade your server to PHP %3$s or " +"higher. If you are not able to upgrade, you can rollback to the previous " +"version by using the button below." +msgstr "" + +#: inc/functions/admin.php:23 +msgid "" +"There seems to be an issue validating your license. Please see the error " +"message below." +msgid_plural "" +"There seems to be an issue validating your license. You can see the error " +"messages below." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: inc/functions/admin.php:361 +msgid "Server type:" +msgstr "" + +#: inc/functions/admin.php:370 +msgid "PHP version number:" +msgstr "" + +#: inc/functions/admin.php:379 +msgid "WordPress version number:" +msgstr "" + +#: inc/functions/admin.php:388 +msgid "WordPress multisite:" +msgstr "" + +#: inc/functions/admin.php:397 +msgid "Current theme:" +msgstr "" + +#: inc/functions/admin.php:406 +msgid "Current site language:" +msgstr "" + +#: inc/functions/admin.php:415 +msgid "Active plugins:" +msgstr "" + +#: inc/functions/admin.php:418 +msgid "Plugin names of all active plugins" +msgstr "" + +#: inc/functions/admin.php:424 +msgid "Anonymized WP Rocket settings:" +msgstr "" + +#: inc/functions/admin.php:427 +msgid "Which WP Rocket settings are active" +msgstr "" + +#: inc/functions/cloudflare.php:14 +msgid "" +"Curl functions are disabled, they are required for the Cloudflare Add-on to " +"work correctly." +msgstr "" + +#: inc/functions/cloudflare.php:21 +msgid "Cloudflare Email and API key are not set" +msgstr "" + +#: inc/functions/cloudflare.php:52 +#, php-format +msgid "Missing Cloudflare zone ID. %s could not fix this automatically." +msgstr "" + +#: inc/functions/cloudflare.php:58 +#, php-format +msgid "Read the %1$sdocumentation%2$s for further guidance." +msgstr "" + +#: inc/functions/cloudflare.php:60 +msgid "" +"https://docs.wp-rocket.me/article/18-using-wp-rocket-with-" +"cloudflare/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" + +#: inc/functions/cloudflare.php:100 +msgid "Connection to Cloudflare failed" +msgstr "" + +#: inc/functions/cloudflare.php:122 +msgid "Choose a domain from the list" +msgstr "" + +#: inc/functions/cloudflare.php:135 +msgid "No domain available in your Cloudflare account" +msgstr "" + +#: inc/functions/options.php:580 inc/functions/options.php:619 +msgid "" +"License validation failed. Our server could not resolve the request from " +"your website." +msgstr "" + +#: inc/functions/options.php:580 inc/functions/options.php:619 +#, php-format +msgid "" +"Try clicking %1$sSave Changes%2$s below. If the error persists, follow " +"%3$sthis guide%4$s." +msgstr "" + +#: inc/functions/options.php:596 +msgid "" +"License validation failed. You may be using a nulled version of the plugin. " +"Please do the following:" +msgstr "" + +#: inc/functions/options.php:596 inc/functions/options.php:638 +#, php-format +msgid "Login to your WP Rocket %1$saccount%2$s" +msgstr "" + +#: inc/functions/options.php:596 inc/functions/options.php:638 +msgid "Download the zip file" +msgstr "" + +#: inc/functions/options.php:596 inc/functions/options.php:638 +msgid "Reinstall" +msgstr "" + +#: inc/functions/options.php:596 +#, php-format +msgid "" +"If you do not have a WP Rocket account, please %1$spurchase a license%2$s." +msgstr "" + +#: inc/functions/options.php:604 +msgid "" +"License validation failed. This user account does not exist in our database." +msgstr "" + +#: inc/functions/options.php:604 +msgid "To resolve, please contact support." +msgstr "" + +#: inc/functions/options.php:612 +msgid "License validation failed. This user account is blacklisted." +msgstr "" + +#: inc/functions/options.php:612 +#, php-format +msgid "Please see %1$sthis guide%2$s for more info." +msgstr "" + +#: inc/functions/options.php:632 +msgid "Your license is not valid." +msgstr "" + +#: inc/functions/options.php:632 +#, php-format +msgid "Make sure you have an active %1$sWP Rocket license%2$s." +msgstr "" + +#: inc/functions/options.php:634 +msgid "You have added as many sites as your current license allows." +msgstr "" + +#: inc/functions/options.php:634 +#, php-format +msgid "" +"Upgrade your %1$saccount%2$s or %3$stransfer your license%2$s to this " +"domain." +msgstr "" + +#: inc/functions/options.php:636 +msgid "This website is not allowed." +msgstr "" + +#: inc/functions/options.php:636 +#, php-format +msgid "Please %1$scontact support%2$s." +msgstr "" + +#: inc/functions/options.php:638 +msgid "This license key is not recognized." +msgstr "" + +#: inc/functions/options.php:638 +#, php-format +msgid "If the issue persists, please %1$scontact support%2$s." +msgstr "" + +#: inc/functions/options.php:644 +#, php-format +msgid "License validation failed: %s" +msgstr "" + +#: inc/vendors/classes/class-imagify-partner.php:531 +msgid "Plugin installed successfully." +msgstr "" + +#: inc/vendors/classes/class-imagify-partner.php:532 +msgid "Sorry, you are not allowed to install plugins on this site." +msgstr "" + +#: inc/vendors/classes/class-imagify-partner.php:533 +msgid "Sorry, you are not allowed to do that." +msgstr "" + +#: inc/vendors/classes/class-imagify-partner.php:534 +msgid "Plugin install failed." +msgstr "" + +#: inc/vendors/classes/class-imagify-partner.php:535 +msgid "Go back" +msgstr "" + +#: views/deactivation-intent/form.php:20 +msgid "Return" +msgstr "" + +#: views/deactivation-intent/form.php:21 +msgid "WP Rocket feedback" +msgstr "" + +#: views/deactivation-intent/form.php:23 +msgid "Close" +msgstr "" + +#: views/deactivation-intent/form.php:27 +msgid "May we have a little info about why you are deactivating?" +msgstr "" + +#: views/deactivation-intent/form.php:31 +msgid "" +"It is a temporary deactivation. I am just debugging an " +"issue." +msgstr "" + +#: views/deactivation-intent/form.php:35 +msgid "The plugin broke my layout or some functionality." +msgstr "" + +#: views/deactivation-intent/form.php:39 +msgid "My PageSpeed or GTMetrix score did not improve." +msgstr "" + +#: views/deactivation-intent/form.php:43 +msgid "I did not notice a difference in loading time." +msgstr "" + +#: views/deactivation-intent/form.php:47 +msgid "The plugin is too complicated to configure." +msgstr "" + +#: views/deactivation-intent/form.php:51 +msgid "My host already has its own caching system." +msgstr "" + +#: views/deactivation-intent/form.php:53 +msgid "What is the name of your web host?" +msgstr "" + +#: views/deactivation-intent/form.php:58 +msgid "Other" +msgstr "" + +#: views/deactivation-intent/form.php:60 +msgid "" +"Let us know why you are deactivating WP Rocket so we can improve the plugin" +msgstr "" + +#: views/deactivation-intent/form.php:68 +msgid "The plugin broke my layout or some functionality" +msgstr "" + +#: views/deactivation-intent/form.php:69 +msgid "" +"This type of issue can usually be fixed by deactivating some options in WP " +"Rocket." +msgstr "" + +#: views/deactivation-intent/form.php:70 +msgid "" +"Click \"Apply Safe Mode\" to quickly disable LazyLoad, File Optimization, " +"Embeds and CDN options. Then check your site to see if the issue has " +"resolved." +msgstr "" + +#: views/deactivation-intent/form.php:72 +msgid "Apply safe mode" +msgstr "" + +#: views/deactivation-intent/form.php:75 +msgid "Safe mode applied." +msgstr "" + +#: views/deactivation-intent/form.php:76 +msgid "Review your site in a private/logged out browser window." +msgstr "" + +#: views/deactivation-intent/form.php:78 +msgid "" +"Is the issue fixed? Now you can reactivate options one at a time to " +"determine which one caused the problem. More info" +msgstr "" + +#: views/deactivation-intent/form.php:81 +msgid "My PageSpeed or GT Metrix score did not improve" +msgstr "" + +#: views/deactivation-intent/form.php:82 +msgid "" +"WP Rocket makes your site faster. The PageSpeed grade or GTMetrix score are " +"not indicators of speed. Neither your real visitors, nor Google will ever " +"see your website’s “grade”. Speed is the only metric that matters for SEO " +"and conversions." +msgstr "" + +#: views/deactivation-intent/form.php:83 +msgid "Yoast, the expert on all things related to SEO for WordPress states:" +msgstr "" + +#: views/deactivation-intent/form.php:84 +msgid "" +"[Google] just looks at how fast your website loads for users, so you don’t " +"have to obsess over that specific score. You have to make sure your website " +"is as fast as you can get it." +msgstr "" + +#: views/deactivation-intent/form.php:87 +msgid "" +"How to measure the load time of your site:
      https" +"://wp-rocket.me/blog/correctly-measure-websites-page-load-time/" +msgstr "" + +#: views/deactivation-intent/form.php:88 +msgid "" +"Why you should not be chasing a PageSpeed score:
      https://wp-rocket.me/blog/the-truth-about-google-" +"pagespeed-insights/" +msgstr "" + +#: views/deactivation-intent/form.php:91 +msgid "I did not notice a difference in loading time" +msgstr "" + +#: views/deactivation-intent/form.php:92 +msgid "" +"Make sure you look at your site while logged out to see the fast, cached " +"pages!" +msgstr "" + +#: views/deactivation-intent/form.php:93 +msgid "" +"The best way to see the improvement WP Rocket provides is to perform speed " +"tests. Follow this guide to correctly measure the load time of your " +"website:
      https://wp-rocket.me/blog/correctly-measure-websites-page-" +"load-time/" +msgstr "" + +#: views/deactivation-intent/form.php:96 +msgid "The plugin is too complicated to configure" +msgstr "" + +#: views/deactivation-intent/form.php:97 +msgid "We are sorry to hear you are finding it difficult to use WP Rocket." +msgstr "" + +#: views/deactivation-intent/form.php:98 +#, php-format +msgid "" +"WP Rocket is the only caching plugin that provides 80% of best practices in " +"speed optimization, by default. That means you do not have to do anything " +"besides activate WP Rocket and your site will already be faster!" +msgstr "" + +#: views/deactivation-intent/form.php:99 +msgid "" +"The additional options are not required for a fast site, they are for fine-" +"tuning." +msgstr "" + +#: views/deactivation-intent/form.php:100 +msgid "" +"To see the benefit WP Rocket is already providing, measure the speed of your" +" site using a tool like Pingdom:
      https" +"://wp-rocket.me/blog/correctly-measure-websites-page-load-time/" +msgstr "" + +#: views/deactivation-intent/form.php:105 +msgid "Send & Deactivate" +msgstr "" + +#: views/deactivation-intent/form.php:106 +msgid "Cancel" +msgstr "" + +#: views/deactivation-intent/form.php:108 +msgid "Skip & Deactivate" +msgstr "" + +#: views/settings/fields/cache-lifespan.php:26 +msgid "Clear cache after" +msgstr "" + +#: views/settings/fields/cnames.php:49 views/settings/fields/cnames.php:80 +#: views/settings/fields/cnames.php:110 +msgid "CSS & JavaScript" +msgstr "" + +#: views/settings/fields/cnames.php:50 views/settings/fields/cnames.php:81 +#: views/settings/fields/cnames.php:111 +msgid "JavaScript" +msgstr "" + +#: views/settings/fields/cnames.php:51 views/settings/fields/cnames.php:82 +#: views/settings/fields/cnames.php:112 +msgid "CSS" +msgstr "" + +#: views/settings/fields/import-form.php:29 +msgid "Import settings" +msgstr "" + +#: views/settings/fields/one-click-addon.php:39 +#: views/settings/fields/rocket-addon.php:31 +#: views/settings/fields/sliding-checkbox.php:24 views/settings/page.php:54 +msgctxt "Active state of checkbox" +msgid "On" +msgstr "" + +#: views/settings/fields/one-click-addon.php:40 +#: views/settings/fields/rocket-addon.php:32 +#: views/settings/fields/sliding-checkbox.php:25 views/settings/page.php:55 +msgctxt "Inactive state of checkbox" +msgid "Off" +msgstr "" + +#: views/settings/fields/one-click-addon.php:41 +#: views/settings/fields/rocket-addon.php:33 +msgid "Add-on status" +msgstr "" + +#: views/settings/fields/rocket-addon.php:56 +msgid "Modify options" +msgstr "" + +#: views/settings/page-sections/cloudflare.php:26 +msgid "Cloudflare Cache" +msgstr "" + +#: views/settings/page-sections/cloudflare.php:33 +#: views/settings/page-sections/sucuri.php:34 +#, php-format +msgid "Purges cached resources for your website. %s" +msgstr "" + +#: views/settings/page-sections/cloudflare.php:34 +msgid "https://support.cloudflare.com/hc/en-us/articles/200169246" +msgstr "" + +#: views/settings/page-sections/cloudflare.php:34 +#: views/settings/page-sections/sucuri.php:35 +msgid "Learn more" +msgstr "" + +#: views/settings/page-sections/cloudflare.php:40 +msgid "Clear all Cloudflare cache files" +msgstr "" + +#: views/settings/page-sections/dashboard.php:37 +msgid "Congratulations!" +msgstr "" + +#: views/settings/page-sections/dashboard.php:39 +msgid "WP Rocket is now activated and already working for you." +msgstr "" + +#: views/settings/page-sections/dashboard.php:41 +msgid "Your website should be loading faster now!" +msgstr "" + +#: views/settings/page-sections/dashboard.php:43 +#, php-format +msgid "" +"To guarantee fast websites, WP Rocket applies 80% of web performance best " +"practices." +msgstr "" + +#: views/settings/page-sections/dashboard.php:43 +msgid "" +"We also enable options that provide immediate benefits to your website." +msgstr "" + +#: views/settings/page-sections/dashboard.php:44 +msgid "Continue to the options to further optimize your site!" +msgstr "" + +#: views/settings/page-sections/dashboard.php:54 +msgid "My Account" +msgstr "" + +#: views/settings/page-sections/dashboard.php:60 +msgid "Refresh info" +msgstr "" + +#: views/settings/page-sections/dashboard.php:74 +msgid "Expiration Date" +msgstr "" + +#: views/settings/page-sections/dashboard.php:83 +msgid "View my account" +msgstr "" + +#: views/settings/page-sections/dashboard.php:103 +msgid "Quick Actions" +msgstr "" + +#: views/settings/page-sections/dashboard.php:109 +msgid "Remove all cached files" +msgstr "" + +#: views/settings/page-sections/dashboard.php:129 +msgid "Start cache preloading" +msgstr "" + +#: views/settings/page-sections/dashboard.php:147 +msgid "Purge OPCache content" +msgstr "" + +#: views/settings/page-sections/dashboard.php:153 +msgid "Purge OPCache" +msgstr "" + +#: views/settings/page-sections/dashboard.php:164 +#: views/settings/page-sections/dashboard.php:170 +msgid "Regenerate Critical CSS" +msgstr "" + +#: views/settings/page-sections/dashboard.php:186 +msgid "Frequently Asked Questions" +msgstr "" + +#: views/settings/page-sections/dashboard.php:199 +msgid "Still cannot find a solution?" +msgstr "" + +#: views/settings/page-sections/dashboard.php:200 +msgid "" +"Submit a ticket and get help from our friendly and knowledgeable Rocketeers." +msgstr "" + +#: views/settings/page-sections/dashboard.php:208 +msgid "Ask support" +msgstr "" + +#: views/settings/page-sections/database.php:24 +msgid "Backup your database before you run a cleanup!" +msgstr "" + +#: views/settings/page-sections/database.php:25 +msgid "" +"Once a database optimization has been performed, there is no way to undo it." +msgstr "" + +#: views/settings/page-sections/imagify.php:20 +#, php-format +msgid "" +"%1$sWP ROCKET%2$s created %3$sIMAGIFY%4$s %1$sfor best-in-class image " +"optimization.%2$s" +msgstr "" + +#: views/settings/page-sections/imagify.php:23 +msgid "" +"Compress image to make your website faster, all while maintaining image " +"quality." +msgstr "" + +#: views/settings/page-sections/imagify.php:24 +msgid "More on Imagify:" +msgstr "" + +#: views/settings/page-sections/imagify.php:26 +msgid "Imagify Plugin Page" +msgstr "" + +#: views/settings/page-sections/imagify.php:27 +msgid "Imagify Website" +msgstr "" + +#: views/settings/page-sections/imagify.php:28 +msgid "Review of Image Compression Plugins" +msgstr "" + +#: views/settings/page-sections/imagify.php:37 +msgid "Install Imagify" +msgstr "" + +#: views/settings/page-sections/license.php:21 +msgid "WP Rocket was not able to automatically validate your license." +msgstr "" + +#: views/settings/page-sections/license.php:26 +#, php-format +msgid "" +"Follow this tutorial, or contact support to get the engine started." +msgstr "" + +#: views/settings/page-sections/license.php:26 +msgid "" +"https://docs.wp-rocket.me/article/100-resolving-problems-with-license-" +"validation/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" + +#: views/settings/page-sections/sucuri.php:41 +msgid "Clear all Sucuri cache files" +msgstr "" + +#: views/settings/page-sections/tools.php:20 +#, php-format +msgid "Files size: %1$s. Number of entries: %2$s." +msgstr "" + +#: views/settings/page-sections/tools.php:23 +#, php-format +msgid "%1$sDownload the file%2$s." +msgstr "" + +#: views/settings/page-sections/tools.php:26 +#, php-format +msgid "%1$sDelete the file%2$s." +msgstr "" + +#: views/settings/page-sections/tools.php:37 +msgid "Export settings" +msgstr "" + +#: views/settings/page-sections/tools.php:38 +msgid "Download a backup file of your settings" +msgstr "" + +#: views/settings/page-sections/tools.php:43 +msgid "Download settings" +msgstr "" + +#: views/settings/page-sections/tools.php:56 +msgid "Rollback" +msgstr "" + +#: views/settings/page-sections/tools.php:60 +#, php-format +msgid "Has version %s caused an issue on your website?" +msgstr "" + +#: views/settings/page-sections/tools.php:62 +msgid "" +"You can rollback to the previous major version here.
      Then send us a " +"support request." +msgstr "" + +#: views/settings/page-sections/tools.php:69 +#, php-format +msgid "Reinstall version %s" +msgstr "" + +#: views/settings/page-sections/tools.php:85 +msgid "Debug mode" +msgstr "" + +#: views/settings/page-sections/tools.php:90 +msgid "Create a debug log file." +msgstr "" + +#: views/settings/page.php:16 +msgid "WP Rocket Settings" +msgstr "" + +#: views/settings/page.php:30 +#, php-format +msgid "version %s" +msgstr "" + +#: views/settings/page.php:40 +msgid "Save Changes" +msgstr "" + +#: views/settings/page.php:56 +msgid "Show Sidebar" +msgstr "" + +#: views/settings/page.php:75 +msgid "Thanks for choosing to participate in the WP Rocket beta program!" +msgstr "" + +#: views/settings/page.php:76 +msgid "" +"A beta version is usually one that has new features and improvements, but we" +" want to test it a little more before full launch." +msgstr "" + +#: views/settings/page.php:77 +msgid "" +"We’d love it if you took our beta versions for a ride, but please keep in " +"mind that it might be less stable than our other releases. Don’t worry, you " +"can switch back to a full release version at any time." +msgstr "" + +#: views/settings/page.php:78 +msgid "" +"Your mission: please send all feedback about our beta versions, including " +"bug reports, to support@wp-rocket.me" +msgstr "" + +#: views/settings/page.php:80 +msgid "If you don’t want to join the beta program, simply close this window." +msgstr "" + +#: views/settings/page.php:82 +msgid "Activate Rocket Tester" +msgstr "" + +#: views/settings/page.php:93 +msgid "" +"Below is a detailed view of all data WP Rocket will collect if " +"granted permission." +msgstr "" + +#: views/settings/page.php:96 +msgid "" +"WP Rocket will never transmit any domain names or email addresses (except " +"for license validation), IP addresses, or third-party API keys." +msgstr "" + +#: views/settings/page.php:98 +msgid "Activate Rocket analytics" +msgstr "" + +#: views/settings/partials/documentation.php:14 +msgid "It is a great starting point to fix some of the most common issues." +msgstr "" + +#: views/settings/partials/documentation.php:18 +msgid "Read the documentation" +msgstr "" + +#: views/settings/partials/sidebar.php:11 +msgid "How to correctly measure your website’s loading time" +msgstr "" + +#: views/settings/partials/sidebar.php:13 +msgid "" +"Learn how to use best practices to correctly measure your site's " +"performance." +msgstr "" + +#: views/settings/partials/sidebar.php:14 +msgid "" +"https://wp-rocket.me/blog/correctly-measure-websites-page-load-" +"time/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" + +#: views/settings/partials/sidebar.php:14 +msgid "Read our guide" +msgstr "" + +#: views/settings/partials/sidebar.php:17 +msgid "Why Google PageSpeed grade should not matter" +msgstr "" + +#: views/settings/partials/sidebar.php:18 +msgid "" +"https://wp-rocket.me/blog/the-truth-about-google-pagespeed-" +"insights/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" + +#: views/settings/partials/sidebar.php:18 +msgid "Read more" +msgstr "" + +#: views/settings/partials/sidebar.php:23 +msgid "You have not activated logged-in user cache." +msgstr "" + +#: views/settings/partials/sidebar.php:24 +msgid "" +"Use a private browser to check your website's speed and visual appearance." +msgstr "" + +#: views/settings/sections/addons-container.php:23 +#: views/settings/sections/fields-container.php:27 +msgid "Need Help?" +msgstr "" diff --git a/wp-content/plugins/wp-rocket/languages/rocket-ru_RU.mo b/wp-content/plugins/wp-rocket/languages/rocket-ru_RU.mo new file mode 100644 index 0000000000000000000000000000000000000000..9ef98b9ad93a0ac7cee6c9b8f7a44da9d59609bf GIT binary patch literal 126335 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 z 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, 2019 +# Nikita Galkin , 2019 +# Serghey Colos , 2019 +# Sabrina Zeidan , 2020 +# Bogdan Gerasymenko , 2020 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: WP Rocket 3.4\n" +"Report-Msgid-Bugs-To: http://wp-rocket.me/\n" +"POT-Creation-Date: 2020-10-19 15:56-0400\n" +"PO-Revision-Date: 2019-08-26 15:14+0000\n" +"Last-Translator: Bogdan Gerasymenko , 2020\n" +"Language-Team: Russian (Russia) (https://www.transifex.com/wp-media/teams/18133/ru_RU/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ru_RU\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" +"X-Generator: Poedit 1.8.11\n" +"X-Poedit-Basepath: ..\n" +"X-Poedit-KeywordsList: __;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c\n" +"X-Poedit-SearchPath-0: .\n" +"X-Poedit-SearchPathExcluded-0: assets\n" +"X-Poedit-SearchPathExcluded-1: src\n" +"X-Poedit-SearchPathExcluded-2: vendor\n" +"X-Poedit-SearchPathExcluded-3: node_modules\n" +"X-Poedit-SearchPathExcluded-4: tests\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Textdomain-Support: yes\n" + +#: inc/3rd-party/hosting/flywheel.php:18 inc/3rd-party/hosting/godaddy.php:18 +#: inc/3rd-party/hosting/pressidium.php:18 +#: inc/3rd-party/hosting/wp-serveur.php:27 +#: inc/ThirdParty/Hostings/Cloudways.php:90 +#: inc/ThirdParty/Hostings/Dreampress.php:44 +#: inc/ThirdParty/Hostings/O2Switch.php:49 +#: inc/ThirdParty/Hostings/Savvii.php:50 +#: inc/ThirdParty/Hostings/WPEngine.php:47 inc/deprecated/3.6.php:698 +#: inc/deprecated/3.6.php:1005 +#, php-format +msgid "" +"Your site is hosted on %s, we have enabled Varnish auto-purge for " +"compatibility." +msgstr "Ваш сайт размещён на %s, поэтому мы включили автоочистку Varnish." + +#: inc/3rd-party/hosting/kinsta.php:161 +#, php-format +msgid "" +"Your installation seems to be missing core Kinsta files managing Cache " +"clearing and CDN, which will prevent your Kinsta installation and WP Rocket " +"from working correctly. Please get in touch with Kinsta support through your" +" %1$sMyKinsta%2$s account to resolve this issue." +msgstr "" +"Похоже, на сервере отсутствуют основные файлы Kinsta отвечающие за очистку " +"кэша и CDN с помощью WP Rocket. Пожалуйста, свяжитесь с техподдержкой " +"%1$sMyKinsta%2$s для решения этой проблемы." + +#: inc/3rd-party/plugins/jetpack.php:86 +msgid "Jetpack XML Sitemaps" +msgstr "Карта сайта Jetpack" + +#: inc/3rd-party/plugins/jetpack.php:88 +msgid "Preload the sitemap from the Jetpack plugin" +msgstr "Кэшировать карту сайта от Jetpack" + +#: inc/3rd-party/plugins/jetpack.php:96 +#: inc/3rd-party/plugins/seo/all-in-one-seo-pack.php:89 +#: inc/3rd-party/plugins/seo/rank-math-seo.php:34 +#: inc/3rd-party/plugins/seo/seopress.php:86 +#: inc/3rd-party/plugins/seo/the-seo-framework.php:144 +#: inc/3rd-party/plugins/seo/yoast-seo.php:87 +#, php-format +msgid "" +"We automatically detected the sitemap generated by the %s plugin. You can " +"check the option to preload it." +msgstr "" +"Карта сайта автоматически генерируется плагином %s. Можно активировать её " +"кэширование." + +#: inc/3rd-party/plugins/seo/all-in-one-seo-pack.php:87 +msgid "All in One SEO XML sitemap" +msgstr "Карта сайта All in One SEO" + +#: inc/3rd-party/plugins/seo/rank-math-seo.php:32 +msgid "Rank Math XML sitemap" +msgstr "Карта сайта Rank Math" + +#: inc/3rd-party/plugins/seo/seopress.php:84 +msgid "SEOPress XML sitemap" +msgstr "Карта сайта SEOPress XML" + +#: inc/3rd-party/plugins/seo/the-seo-framework.php:142 +msgid "The SEO Framework XML sitemap" +msgstr "Карта сайта SEO Framework" + +#: inc/3rd-party/plugins/seo/yoast-seo.php:85 +msgid "Yoast SEO XML sitemap" +msgstr "Карта сайта Yoast SEO" + +#: inc/Addon/Cloudflare/APIClient.php:309 +msgid "Cloudflare did not provide any reply. Please try again later." +msgstr "Cloudflare не отвечает, попробуйте чуть позже." + +#: inc/Addon/Cloudflare/APIClient.php:318 inc/deprecated/3.5.php:122 +#: inc/deprecated/3.5.php:179 +msgid "Incorrect Cloudflare email address or API key." +msgstr "Неправильный email или API ключ от Cloudflare." + +#: inc/Addon/Cloudflare/APIClient.php:322 +#: inc/Addon/Cloudflare/APIClient.php:335 +#: inc/Addon/Cloudflare/Cloudflare.php:112 +#: inc/Addon/Cloudflare/Cloudflare.php:144 +#: inc/classes/subscriber/Tools/class-detect-missing-tags-subscriber.php:157 +#: inc/deprecated/3.5.php:102 inc/deprecated/3.5.php:126 +#: inc/deprecated/3.5.php:139 inc/deprecated/3.5.php:167 +#: inc/deprecated/3.5.php:183 +#, php-format +msgid "Read the %1$sdocumentation%2$s for further guidance." +msgstr "Читайте %1$sдокументацию%2$s для лучшего понимания." + +#: inc/Addon/Cloudflare/APIClient.php:324 +#: inc/Addon/Cloudflare/APIClient.php:337 +#: inc/Addon/Cloudflare/Cloudflare.php:101 +#: inc/Addon/Cloudflare/Cloudflare.php:114 +#: inc/Addon/Cloudflare/Cloudflare.php:146 inc/deprecated/3.5.php:91 +#: inc/deprecated/3.5.php:104 inc/deprecated/3.5.php:128 +#: inc/deprecated/3.5.php:141 inc/deprecated/3.5.php:169 +#: inc/deprecated/3.5.php:185 inc/deprecated/3.5.php:218 +msgid "" +"https://docs.wp-rocket.me/article/18-using-wp-rocket-with-" +"cloudflare/?utm_source=wp_plugin&utm_medium=wp_rocket#add-on" +msgstr "" +"https://docs.wp-rocket.me/article/18-using-wp-rocket-with-" +"cloudflare/?utm_source=wp_plugin&utm_medium=wp_rocket#add-on" + +#: inc/Addon/Cloudflare/APIClient.php:331 inc/deprecated/3.5.php:135 +msgid "Incorrect Cloudflare Zone ID." +msgstr "Неверный Zone ID от Cloudflare." + +#: inc/Addon/Cloudflare/Cloudflare.php:99 +#, php-format +msgid "" +"Cloudflare email and/or API key are not set. Read the %1$sdocumentation%2$s " +"for further guidance." +msgstr "" +"Не указаны API ключ и email от аккаунта Cloudflare. Прочитайте " +"%1$sдокументацию%2$s по настройке." + +#: inc/Addon/Cloudflare/Cloudflare.php:108 inc/deprecated/3.5.php:98 +msgid "Missing Cloudflare Zone ID." +msgstr "Отсутствует Zone ID для Cloudflare." + +#: inc/Addon/Cloudflare/Cloudflare.php:140 inc/deprecated/3.5.php:163 +msgid "It looks like your domain is not set up on Cloudflare." +msgstr "Похоже, что ваш сайт не обслуживается Cloudflare." + +#: inc/Addon/Cloudflare/Subscriber.php:215 inc/deprecated/3.5.php:597 +#, php-format +msgid "WP Rocket: %s" +msgstr "WP Rocket: %s" + +#: inc/Addon/Cloudflare/Subscriber.php:220 inc/deprecated/3.5.php:602 +msgid "WP Rocket: Cloudflare cache successfully purged." +msgstr "WP Rocket: кэш Cloudflare успешно очищен." + +#: inc/Addon/Cloudflare/Subscriber.php:364 +#: inc/Addon/Cloudflare/Subscriber.php:370 +#: inc/Addon/Cloudflare/Subscriber.php:390 +#: inc/Addon/Cloudflare/Subscriber.php:401 +#: inc/Addon/Cloudflare/Subscriber.php:420 +#: inc/Addon/Cloudflare/Subscriber.php:426 +#: inc/Addon/Cloudflare/Subscriber.php:445 +#: inc/Addon/Cloudflare/Subscriber.php:451 +#: inc/Addon/Cloudflare/Subscriber.php:470 +#: inc/Addon/Cloudflare/Subscriber.php:476 +#: inc/Addon/Cloudflare/Subscriber.php:558 inc/admin/options.php:166 +#: inc/classes/subscriber/Tools/class-detect-missing-tags-subscriber.php:148 +msgid "WP Rocket: " +msgstr "WP Rocket: " + +#: inc/Addon/Cloudflare/Subscriber.php:364 +#, php-format +msgid "Cloudflare development mode error: %s" +msgstr "Ошибка в режиме разработчика Cloudflare: %s" + +#: inc/Addon/Cloudflare/Subscriber.php:370 +#, php-format +msgid "Cloudflare development mode %s" +msgstr "Режим разработчика Cloudflare %s" + +#: inc/Addon/Cloudflare/Subscriber.php:390 +#, php-format +msgid "Cloudflare cache level error: %s" +msgstr "Ошибка уровня кэширования Cloudflare: %s" + +#: inc/Addon/Cloudflare/Subscriber.php:395 +msgctxt "Cloudflare caching level" +msgid "Standard" +msgstr "Стандарт" + +#: inc/Addon/Cloudflare/Subscriber.php:401 +#, php-format +msgid "Cloudflare cache level set to %s" +msgstr "Уровень кэширования Cloudflare %s" + +#: inc/Addon/Cloudflare/Subscriber.php:420 +#, php-format +msgid "Cloudflare minification error: %s" +msgstr "Ошибка минификации Cloudflare: %s" + +#: inc/Addon/Cloudflare/Subscriber.php:426 +#, php-format +msgid "Cloudflare minification %s" +msgstr "Минификация Cloudflare %s" + +#: inc/Addon/Cloudflare/Subscriber.php:445 +#, php-format +msgid "Cloudflare rocket loader error: %s" +msgstr "Ошибка загрузки Cloudflare:%s " + +#: inc/Addon/Cloudflare/Subscriber.php:451 +#, php-format +msgid "Cloudflare rocket loader %s" +msgstr "Загрузчик Cloudflare%s " + +#: inc/Addon/Cloudflare/Subscriber.php:470 +#, php-format +msgid "Cloudflare browser cache error: %s" +msgstr "Ошибка кэша браузера Cloudflare: %s" + +#: inc/Addon/Cloudflare/Subscriber.php:476 +#, php-format +msgid "Cloudflare browser cache set to %s seconds" +msgstr "Кэш браузера Cloudflare установлен в %s секунд." + +#: inc/Addon/FacebookTracking/Subscriber.php:87 +#: inc/Addon/GoogleTracking/Subscriber.php:132 +#: inc/Engine/HealthCheck/CacheDirSizeCheck.php:88 +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:92 +msgid "weekly" +msgstr "еженедельно" + +#: inc/Engine/Admin/Settings/Page.php:190 +msgid "Save Changes" +msgstr "Сохранить изменения" + +#: inc/Engine/Admin/Settings/Page.php:190 +msgid "Validate License" +msgstr "Валидация Лицензии" + +#: inc/Engine/Admin/Settings/Page.php:246 +#: inc/Engine/Admin/Settings/Page.php:247 +msgid "Unavailable" +msgstr "Недоступно" + +#: inc/Engine/Admin/Settings/Page.php:341 inc/deprecated/deprecated.php:1789 +#: views/settings/page-sections/dashboard.php:80 +msgid "License" +msgstr "Лицензия" + +#: inc/Engine/Admin/Settings/Page.php:358 +msgid "API key" +msgstr "API ключ" + +#: inc/Engine/Admin/Settings/Page.php:373 +msgid "Email address" +msgstr "E-mail" + +#: inc/Engine/Admin/Settings/Page.php:399 +msgid "Dashboard" +msgstr "Панель управления" + +#: inc/Engine/Admin/Settings/Page.php:400 +msgid "Get help, account info" +msgstr "Информация и помощь" + +#: inc/Engine/Admin/Settings/Page.php:409 +msgid "My Status" +msgstr "Ваш статус" + +#: inc/Engine/Admin/Settings/Page.php:419 views/settings/page.php:72 +msgid "Rocket Tester" +msgstr "Бета-тестер" + +#: inc/Engine/Admin/Settings/Page.php:420 +msgid "I am part of the WP Rocket Beta Testing Program." +msgstr "Я участник программы бета-тестирования WP Rocket" + +#: inc/Engine/Admin/Settings/Page.php:428 views/settings/page.php:90 +msgid "Rocket Analytics" +msgstr "Сбор аналитики" + +#: inc/Engine/Admin/Settings/Page.php:430 +#, php-format +msgid "" +"I agree to share anonymous data with the development team to help improve WP" +" Rocket. %1$sWhat info will we collect?%2$s" +msgstr "" +"Я разрешаю сбор анонимной информации для улучшения WP Rocket. %1$sКакие " +"данные собираются?%2$s" + +#: inc/Engine/Admin/Settings/Page.php:454 inc/Engine/Cache/WPCache.php:347 +msgid "Cache" +msgstr "Кэш" + +#: inc/Engine/Admin/Settings/Page.php:455 +msgid "Basic cache options" +msgstr "Настройки кэша" + +#: inc/Engine/Admin/Settings/Page.php:462 +msgid "Mobile Cache" +msgstr "Мобильный кэш" + +#: inc/Engine/Admin/Settings/Page.php:464 +msgid "Speed up your site for mobile visitors." +msgstr "Ускорить сайт для мобильных пользователей." + +#: inc/Engine/Admin/Settings/Page.php:469 +msgid "" +"We detected you use a plugin that requires a separate cache for mobile, and " +"automatically enabled this option for compatibility." +msgstr "" +"Мы обнаружили плагин, который требует раздельное кэширование для мобильных " +"устройств, поэтому включили эту опцию автоматически." + +#: inc/Engine/Admin/Settings/Page.php:473 +msgid "User Cache" +msgstr "Пользовательский кэш" + +#: inc/Engine/Admin/Settings/Page.php:476 +#, php-format +msgid "" +"%1$sUser cache%2$s is great when you have user-specific or restricted " +"content on your website." +msgstr "" +"%1$sПользовательский кэш%2$s хорош, когда вы разделяете контент для гостей и" +" пользователей." + +#: inc/Engine/Admin/Settings/Page.php:484 +msgid "Cache Lifespan" +msgstr "Время жизни кэша" + +#: inc/Engine/Admin/Settings/Page.php:487 +#, php-format +msgid "" +"Cache files older than the specified lifespan will be deleted.
      Enable " +"%1$spreloading%2$s for the cache to be rebuilt automatically after lifespan " +"expiration." +msgstr "" +"Файлы кеша, старше установленного срока жизни, будут удалены.
      Включите " +"%1$sпредзагрузку%2$s, чтобы кеш создавался автоматически после очистки. " + +#: inc/Engine/Admin/Settings/Page.php:501 +msgid "Enable caching for logged-in WordPress users" +msgstr "Кэшировать авторизированных пользователей" + +#: inc/Engine/Admin/Settings/Page.php:509 +msgid "Enable caching for mobile devices" +msgstr "Включить кэширование для мобильных устройств" + +#: inc/Engine/Admin/Settings/Page.php:524 +msgid "Separate cache files for mobile devices" +msgstr "Разделять файлы для мобильных устройств" + +#: inc/Engine/Admin/Settings/Page.php:526 +#, php-format +msgid "" +"Most modern themes are responsive and should work without a separate cache. " +"Enable this only if you have a dedicated mobile theme or plugin. %1$sMore " +"info%2$s" +msgstr "" +"Большинство современных тем работают без раздельного кэша. Включайте эту " +"настройку только если используете мобильную тему или плагины. " +"%1$sПодробнее%2$s" + +#: inc/Engine/Admin/Settings/Page.php:542 +msgid "" +"Specify time after which the global cache is cleared
      (0 = unlimited )" +msgstr "Укажите, через какое время очищать весь кэш (0 - отключает очистку)" + +#: inc/Engine/Admin/Settings/Page.php:544 +#, php-format +msgid "" +"Reduce lifespan to 10 hours or less if you notice issues that seem to appear" +" periodically. %1$sWhy?%2$s" +msgstr "" +"Укажите время жизни до 10 часов и меньше, если на сайте возникают " +"периодические ошибки. %1$sПочему?%2$s" + +#: inc/Engine/Admin/Settings/Page.php:550 +#: inc/Engine/License/views/promo-banner.php:31 +msgid "Minutes" +msgstr "Минут" + +#: inc/Engine/Admin/Settings/Page.php:551 +#: inc/Engine/License/views/promo-banner.php:30 +msgid "Hours" +msgstr "Часов" + +#: inc/Engine/Admin/Settings/Page.php:552 +#: inc/Engine/License/views/promo-banner.php:29 +msgid "Days" +msgstr "Дней" + +#: inc/Engine/Admin/Settings/Page.php:577 +#: views/settings/page-sections/tutorials.php:22 +msgid "File Optimization" +msgstr "Файлы" + +#: inc/Engine/Admin/Settings/Page.php:578 +msgid "Optimize CSS & JS" +msgstr "Оптимизация CSS и JS" + +#: inc/Engine/Admin/Settings/Page.php:585 +msgid "CSS Files" +msgstr "CSS файлы" + +#: inc/Engine/Admin/Settings/Page.php:592 +#: inc/Engine/Admin/Settings/Page.php:602 +#, php-format +msgid "" +"%1$s Minification is currently activated in Autoptimize. If" +" you want to use %2$s’s minification, disable those options in Autoptimize." +msgstr "" +"%1$s Сжатие файлов в данный момент активировано в плагине " +"Autoptimize. Если хотите использовать настройки %2$s, " +"отключите плагин Autoptimize." + +#: inc/Engine/Admin/Settings/Page.php:595 +msgid "JavaScript Files" +msgstr "JavaScript файлы" + +#: inc/Engine/Admin/Settings/Page.php:611 +msgid "Minify CSS files" +msgstr "Сжимать стили CSS" + +#: inc/Engine/Admin/Settings/Page.php:612 +msgid "Minify CSS removes whitespace and comments to reduce the file size." +msgstr "Сжатие CSS убирает лишние пробелы и комментарии." + +#: inc/Engine/Admin/Settings/Page.php:625 +#: inc/Engine/Admin/Settings/Page.php:647 +#: inc/Engine/Admin/Settings/Page.php:729 +#: inc/Engine/Admin/Settings/Page.php:751 +msgid "This could break things!" +msgstr "Это может навредить сайту!" + +#: inc/Engine/Admin/Settings/Page.php:626 +#: inc/Engine/Admin/Settings/Page.php:648 +#: inc/Engine/Admin/Settings/Page.php:730 +#: inc/Engine/Admin/Settings/Page.php:752 +msgid "" +"If you notice any errors on your website after having activated this " +"setting, just deactivate it again, and your site will be back to normal." +msgstr "" +"Если вы заметили визуальные неполадки на сайте после активации этой опции - " +"просто отключите её, и сайт снова заработает." + +#: inc/Engine/Admin/Settings/Page.php:627 +msgid "Activate minify CSS" +msgstr "Включить сжатие CSS" + +#: inc/Engine/Admin/Settings/Page.php:632 +msgid "Combine CSS files (Enable Minify CSS files to select)" +msgstr "Объединять CSS файлы (Включите сначала CSS сжатие)" + +#: inc/Engine/Admin/Settings/Page.php:634 +#, php-format +msgid "" +"Combine CSS merges all your files into 1, reducing HTTP requests. Not " +"recommended if your site uses HTTP/2. %1$sMore info%2$s" +msgstr "" +"Объединение CSS файлов уменьшает количество HTTP запросов. Не рекомендуется " +"для сайтов с HTTP/2. %1$sПодробнее%2$s" + +#: inc/Engine/Admin/Settings/Page.php:649 +msgid "Activate combine CSS" +msgstr "Включить объединение CSS" + +#: inc/Engine/Admin/Settings/Page.php:654 inc/admin/options.php:125 +msgid "Excluded CSS Files" +msgstr "Исключить CSS файлы" + +#: inc/Engine/Admin/Settings/Page.php:655 +msgid "" +"Specify URLs of CSS files to be excluded from minification and concatenation" +" (one per line)." +msgstr "" +"Укажите URL на CSS файлы, которые не нужно сжимать и объединять (по одному в" +" строке)." + +#: inc/Engine/Admin/Settings/Page.php:656 +msgid "" +"Internal: The domain part of the URL will be stripped " +"automatically. Use (.*).css wildcards to exclude all CSS files located at a " +"specific path." +msgstr "" +"Внутренние: Доменная часть будет обрезана автоматически. " +"Используйте маску (.*).css для исключения всех CSS файлов в папке." + +#: inc/Engine/Admin/Settings/Page.php:658 +#, php-format +msgid "" +"3rd Party: Use either the full URL path or only the domain " +"name, to exclude external CSS. %1$sMore info%2$s" +msgstr "" +"Сторонние: Используйте полный путь или доменное имя для " +"исключения сторонних CSS. %1$sПодробнее%2$s" + +#: inc/Engine/Admin/Settings/Page.php:671 +msgid "Optimize CSS delivery" +msgstr "Оптимизация доставки CSS" + +#: inc/Engine/Admin/Settings/Page.php:678 +#, php-format +msgctxt "WP Critical CSS compatibility" +msgid "" +"Optimize CSS Delivery is currently handled by the %1$s plugin. If you want " +"to use WP Rocket’s Optimize CSS Delivery option, disable the %1$s plugin." +msgstr "" +"Оптимизированная загрузка CSS обеспечивается плагином %1$s. Если Вы хотите, " +"чтобы эту работу выполнял WP Rocket, отключите плагин %1$s." + +#: inc/Engine/Admin/Settings/Page.php:680 +#, php-format +msgid "" +"Optimize CSS delivery eliminates render-blocking CSS on your website for " +"faster perceived load time. %1$sMore info%2$s" +msgstr "" +"Оптимизируйте время загрузки стилей с помощью критических CSS. " +"%1$sПодробнее%2$s" + +#: inc/Engine/Admin/Settings/Page.php:691 +msgid "Fallback critical CSS" +msgstr "Запасной критичный CSS" + +#: inc/Engine/Admin/Settings/Page.php:696 +#, php-format +msgid "" +"Provides a fallback if auto-generated critical path CSS is incomplete. " +"%1$sMore info%2$s" +msgstr "" +"Нужно на случай если автоматически созданный критичный CSS не полный. " +"%1$sПодробнее%2$s" + +#: inc/Engine/Admin/Settings/Page.php:705 +msgid "Remove jQuery Migrate" +msgstr "Отключить jQuery Migrate" + +#: inc/Engine/Admin/Settings/Page.php:707 +#, php-format +msgid "" +"Remove jQuery Migrate eliminates a JS file and can improve load time. " +"%1$sMore info%2$s" +msgstr "" +"Убрать jQuery Migrate, чтобы ускорить загрузку сайта. %1$sПодробнее%2$s" + +#: inc/Engine/Admin/Settings/Page.php:715 +msgid "Minify JavaScript files" +msgstr "Сжатие JavaScript файлов" + +#: inc/Engine/Admin/Settings/Page.php:716 +msgid "" +"Minify JavaScript removes whitespace and comments to reduce the file size." +msgstr "Сжатие JavaScript убирает лишние пробелы и комментарии." + +#: inc/Engine/Admin/Settings/Page.php:731 +msgid "Activate minify JavaScript" +msgstr "Включить сжатие JavaScript" + +#: inc/Engine/Admin/Settings/Page.php:736 +msgid "" +"Combine JavaScript files (Enable Minify JavaScript files to select)" +msgstr "Объединять JavaScript файлы (сначала включите сжатие JavaScript)" + +#: inc/Engine/Admin/Settings/Page.php:738 +#, php-format +msgid "" +"Combine JavaScript files combines your site’s internal, 3rd party and inline" +" JS reducing HTTP requests. Not recommended if your site uses HTTP/2. " +"%1$sMore info%2$s" +msgstr "" +"Объединение JavaScript файлов уменьшает количество запросов к HTTP серверу. " +"Не рекомендуется для сайтов на HTTP/2. %1$sПодробнее%2$s" + +#: inc/Engine/Admin/Settings/Page.php:753 +msgid "Activate combine JavaScript" +msgstr "Включить объединение JavaScript" + +#: inc/Engine/Admin/Settings/Page.php:758 inc/admin/options.php:126 +msgid "Excluded Inline JavaScript" +msgstr "Исключенный код JavaScript" + +#: inc/Engine/Admin/Settings/Page.php:760 +#, php-format +msgid "" +"Specify patterns of inline JavaScript to be excluded from concatenation (one" +" per line). %1$sMore info%2$s" +msgstr "" +"Задайте шаблон для исключения JavaScript из объединения (по одному в " +"строке). %1$sПодробнее%2$s" + +#: inc/Engine/Admin/Settings/Page.php:776 inc/admin/options.php:127 +msgid "Excluded JavaScript Files" +msgstr "Исключаемые JavaScript файлы" + +#: inc/Engine/Admin/Settings/Page.php:777 +msgid "" +"Specify URLs of JavaScript files to be excluded from minification and " +"concatenation (one per line)." +msgstr "" +"Укажите URL на JavaScript файлы, которые не нужно сжимать и объединять (по " +"одному в строке)." + +#: inc/Engine/Admin/Settings/Page.php:778 +msgid "" +"Internal: The domain part of the URL will be stripped " +"automatically. Use (.*).js wildcards to exclude all JS files located at a " +"specific path." +msgstr "" +"Примечание: доменное имя будет удалено автоматически. " +"Используйте маску (.*).js для исключения всех JS файлов в заданном пути." + +#: inc/Engine/Admin/Settings/Page.php:780 +#, php-format +msgid "" +"3rd Party: Use either the full URL path or only the domain " +"name, to exclude external JS. %1$sMore info%2$s" +msgstr "" +"Сторонние плагины: Используйте полный путь либо доменное " +"имя чтобы исключить внешние JS. %1$sПодробнее%2$s" + +#: inc/Engine/Admin/Settings/Page.php:796 +msgid "Load JavaScript deferred" +msgstr "Асинхронная загрузка JavaScript" + +#: inc/Engine/Admin/Settings/Page.php:798 +#, php-format +msgid "" +"Load JavaScript deferred eliminates render-blocking JS on your site and can " +"improve load time. %1$sMore info%2$s" +msgstr "" +"Асинхронная загрузка JavaScript устраняет проблему рендеринга страницы и " +"ускоряет время загрузки. %1$sПодробнее%2$s" + +#: inc/Engine/Admin/Settings/Page.php:809 +msgid "Safe Mode for jQuery (recommended)" +msgstr "Безопасный режим для jQuery (рекомендуется)" + +#: inc/Engine/Admin/Settings/Page.php:810 +msgid "" +"Safe mode for jQuery for deferred JS ensures support for inline jQuery " +"references from themes and plugins by loading jQuery at the top of the " +"document as a render-blocking script.
      Deactivating may result in " +"broken functionality, test thoroughly!" +msgstr "" +"Безопасный режим для jQuery используется для работы встроенных скриптов и " +"зависимостей, загружая jQuery асинхронно в самом верху " +"страницы.
      Отключение этой опции может нарушить работу сайта!" + +#: inc/Engine/Admin/Settings/Page.php:823 inc/admin/ui/meta-boxes.php:79 +msgid "Delay JavaScript execution" +msgstr "Отложить загрузку JavaScript" + +#: inc/Engine/Admin/Settings/Page.php:825 +#, php-format +msgid "" +"Improves performance by delaying the loading of JavaScript files until user " +"interaction (e.g. scroll, click). %1$sMore info%2$s" +msgstr "" +"Ускоряет сайт за счет откладывания загрузки JavaScript файлов, пока " +"пользователь не произведёт действия (скрол, клик). %1$sПодробнее%2$s" + +#: inc/Engine/Admin/Settings/Page.php:833 +msgid "Scripts to delay" +msgstr "Отложенные скрипты" + +#: inc/Engine/Admin/Settings/Page.php:834 +msgid "" +"Specify keywords that can identify inline or JavaScript files to be delayed " +"(one per line)." +msgstr "" +"Используйте ключевые слова для идентификации скриптов или JavaScript файлов " +"(по одному в строке)." + +#: inc/Engine/Admin/Settings/Page.php:835 +msgid "" +"A curated list of scripts that are safe to delay is provided. They may not " +"all apply to your website and it is safe to leave the list as-is unless you " +"face issues." +msgstr "" +"Система автоматически распознает скрипты, загрузку которых можно безопасно " +"отложить. Могут распознаться не все скрипты, оставьте всё как есть, если не " +"возникнет проблем." + +#: inc/Engine/Admin/Settings/Page.php:870 +msgid "Media" +msgstr "Медиа" + +#: inc/Engine/Admin/Settings/Page.php:871 +msgid "LazyLoad, emojis, embeds, WebP" +msgstr "LazyLoad, смайлики, вставки, WebP" + +#: inc/Engine/Admin/Settings/Page.php:880 +msgid "Avada" +msgstr "Avada" + +#: inc/Engine/Admin/Settings/Page.php:884 +msgid "Autoptimize" +msgstr "Autoptimize" + +#: inc/Engine/Admin/Settings/Page.php:929 +msgid "LazyLoad" +msgstr "LazyLoad" + +#: inc/Engine/Admin/Settings/Page.php:932 +#, php-format +msgid "" +"It can improve actual and perceived loading time as images, iframes, and " +"videos will be loaded only as they enter (or about to enter) the viewport " +"and reduces the number of HTTP requests. %1$sMore Info%2$s" +msgstr "" +"Ускоряет сайт за счёт отложенной загрузки изображений, фреймов и видео по " +"мере их появления в области видимости и уменьшает количество HTTP запросов. " +"%1$sПодробнее%2$s" + +#: inc/Engine/Admin/Settings/Page.php:939 +#, php-format +msgid "" +"LazyLoad is currently activated in %2$s. If you want to use WP Rocket’s " +"LazyLoad, disable this option in %2$s." +msgstr "" +"LazyLoad активирован в %2$s. Если хотите использовать WP Rocket’s LazyLoad, " +"отключите его в %2$s." + +#: inc/Engine/Admin/Settings/Page.php:942 +msgid "Emoji 👻" +msgstr "Emoji 👻" + +#: inc/Engine/Admin/Settings/Page.php:944 +msgid "" +"Use default emoji of visitor's browser instead of loading emoji from " +"WordPress.org" +msgstr "" +"Использовать встроенные в браузер emoji, вместо загрузки с сайта " +"WordPress.org" + +#: inc/Engine/Admin/Settings/Page.php:948 +msgid "Embeds" +msgstr "Вставки" + +#: inc/Engine/Admin/Settings/Page.php:950 +msgid "" +"Prevents others from embedding content from your site, prevents you from " +"embedding content from other (non-allowed) sites, and removes JavaScript " +"requests related to WordPress embeds" +msgstr "" +"Ограничивает возможность использовать ваш контент на чужих сайтах, а также " +"чужой контент на вашем сайте, убирает JavaScript запросы к WordPress " +"серверам." + +#: inc/Engine/Admin/Settings/Page.php:954 +msgid "WebP compatibility" +msgstr "Поддержка WebP" + +#: inc/Engine/Admin/Settings/Page.php:958 +#, php-format +msgid "" +"Enable this option if you would like WP Rocket to serve WebP images to " +"compatible browsers. Please note that WP Rocket cannot create WebP images " +"for you. To create WebP images we recommend %1$sImagify%2$s. %3$sMore " +"info%2$s" +msgstr "" +"Включите эту настройку, чтобы WP Rocket предлагал WebP изображения " +"совместимым браузерам. Учтите, что WP Rocket не создаёт WebP изображения. " +"Для этого используйте %1$sImagify%2$s. %3$sПодробнее%2$s" + +#: inc/Engine/Admin/Settings/Page.php:985 +msgid "Enable for images" +msgstr "Включить для изображений" + +#: inc/Engine/Admin/Settings/Page.php:997 +#, php-format +msgid "" +"LazyLoad for images is currently activated in %2$s. If you want to use " +"%1$s’s LazyLoad, disable this option in %2$s." +msgstr "" +"LazyLoad для изображений активирован в %2$s. Если хотите использовать %1$s’s" +" LazyLoad, отключите его в %2$s." + +#: inc/Engine/Admin/Settings/Page.php:1005 +msgid "Enable for iframes and videos" +msgstr "Включить для фреймов и видео" + +#: inc/Engine/Admin/Settings/Page.php:1020 +msgid "Replace YouTube iframe with preview image" +msgstr "Заменять видео YouTube превью картинкой" + +#: inc/Engine/Admin/Settings/Page.php:1021 +msgid "" +"This can significantly improve your loading time if you have a lot of " +"YouTube videos on a page." +msgstr "" +"Эта функция ускорит загрузку страницы, если на ней много YouTube видео." + +#: inc/Engine/Admin/Settings/Page.php:1031 +#, php-format +msgid "Replace YouTube iframe with preview image is not compatible with %2$s." +msgstr "Замена YouTube фреймов на картинку не работает с %2$s." + +#: inc/Engine/Admin/Settings/Page.php:1035 +msgid "Disable Emoji" +msgstr "Отключить Emoji" + +#: inc/Engine/Admin/Settings/Page.php:1036 +msgid "Disable Emoji will reduce the number of external HTTP requests." +msgstr "Отключение Emoji уменьшит количество HTTP запросов." + +#: inc/Engine/Admin/Settings/Page.php:1044 +msgid "Disable WordPress embeds" +msgstr "Отключить WordPress вставки" + +#: inc/Engine/Admin/Settings/Page.php:1054 +#: inc/classes/subscriber/Media/class-webp-subscriber.php:362 +msgid "Enable WebP caching" +msgstr "Включить кеширование WebP" + +#: inc/Engine/Admin/Settings/Page.php:1074 inc/deprecated/deprecated.php:1776 +#: views/settings/page-sections/tutorials.php:30 +msgid "Preload" +msgstr "Предзагрузка" + +#: inc/Engine/Admin/Settings/Page.php:1075 +msgid "Generate cache files, preload fonts" +msgstr "Создать файлы кэша, предзагрузить шрифты" + +#: inc/Engine/Admin/Settings/Page.php:1086 +msgid "Preload Cache" +msgstr "Презагрузка кэша" + +#: inc/Engine/Admin/Settings/Page.php:1089 +#, php-format +msgid "" +"When you enable preloading WP Rocket will generate the cache starting with " +"the links on your homepage followed by the sitemaps you specify. Preloading " +"is automatically triggered when you add or update content and can also be " +"manually triggered from the admin bar or from the %1$sWP Rocket " +"Dashboard%2$s." +msgstr "" +"Включив предзагрузку WP Rocket будет создавать кэш начиная с ссылок на " +"главной странице либо согласно указанной карте сайта. Кэш обнуляется " +"автоматически во время добавления и редактирования либо вручную через " +"%1$sпанель управления%2$s." + +#: inc/Engine/Admin/Settings/Page.php:1097 +msgid "Preload Links" +msgstr "Предзагрузка ссылок" + +#: inc/Engine/Admin/Settings/Page.php:1100 +#, php-format +msgid "" +"Link preloading improves the perceived load time by downloading a page when " +"a user hovers over the link. %1$sMore info%2$s" +msgstr "" +"Предзагрузка ссылок начинает загружать страницу уже когда пользователь " +"наводит курсор на ссылку. %1$sПодробнее%2$s" + +#: inc/Engine/Admin/Settings/Page.php:1108 +msgid "Prefetch DNS Requests" +msgstr "Оптимизация DNS запросов" + +#: inc/Engine/Admin/Settings/Page.php:1110 +msgid "" +"DNS prefetching can make external files load faster, especially on mobile " +"networks" +msgstr "" +"DNS кэширование ускоряет загрузку удаленных файлов, особенно в мобильных " +"сетях." + +#: inc/Engine/Admin/Settings/Page.php:1118 +msgid "Preload Fonts" +msgstr "Предзагрузка шрифтов" + +#: inc/Engine/Admin/Settings/Page.php:1121 +#, php-format +msgid "" +"Improves performance by helping browsers discover fonts in CSS files. " +"%1$sMore info%2$s" +msgstr "" +"Улучшает производительность помогая браузерам обнаруживать шрифты в CSS " +"файлах. %1$sПодробнее%2$s" + +#: inc/Engine/Admin/Settings/Page.php:1135 +msgid "Activate Preloading" +msgstr "Активировать предзагрузку" + +#: inc/Engine/Admin/Settings/Page.php:1154 +msgid "Activate sitemap-based cache preloading" +msgstr "Активировать предзагрузку страниц на основе карты сайта" + +#: inc/Engine/Admin/Settings/Page.php:1173 +msgid "Sitemaps for preloading" +msgstr "Карты сайта для предзагрузки" + +#: inc/Engine/Admin/Settings/Page.php:1177 +msgid "Specify XML sitemap(s) to be used for preloading" +msgstr "Укажите XML карты сайта для предзагрузки" + +#: inc/Engine/Admin/Settings/Page.php:1187 +msgid "URLs to prefetch" +msgstr "URL для кэширования" + +#: inc/Engine/Admin/Settings/Page.php:1188 +msgid "" +"Specify external hosts to be prefetched (no http:, one per " +"line)" +msgstr "" +"Укажите удаленные хосты для кэширования (без http:, по одному в" +" строке)" + +#: inc/Engine/Admin/Settings/Page.php:1197 +msgid "Fonts to preload" +msgstr "Шрифты для предзагрузки" + +#: inc/Engine/Admin/Settings/Page.php:1198 +msgid "" +"Specify urls of the font files to be preloaded (one per line). Fonts must be" +" hosted on your own domain, or the domain you have specified on the CDN tab." +msgstr "" +"Укажите ссылки на шрифты для предзагрузки (по одной в строке). Файлы должны " +"находиться на вашем сервере либо на домене, указанном во вкладке CDN." + +#: inc/Engine/Admin/Settings/Page.php:1199 +msgid "" +"The domain part of the URL will be stripped automatically.
      Allowed font " +"extensions: otf, ttf, svg, woff, woff2." +msgstr "" +"Доменная часть будет удалена автоматически.
      Допустимые файлы: otf, ttf, " +"svg, woff, woff2." + +#: inc/Engine/Admin/Settings/Page.php:1208 +msgid "Enable link preloading" +msgstr "Включить предзагрузку ссылок" + +#: inc/Engine/Admin/Settings/Page.php:1227 +msgid "Advanced Rules" +msgstr "Расширенные" + +#: inc/Engine/Admin/Settings/Page.php:1228 +msgid "Fine-tune cache rules" +msgstr "Расширенные правила" + +#: inc/Engine/Admin/Settings/Page.php:1237 +msgid "" +"Sensitive pages like custom login/logout URLs should be excluded from cache." +msgstr "" +"Чувствительные страницы по типу ссылок на вход/выход нужно исключать из " +"кэширования." + +#: inc/Engine/Admin/Settings/Page.php:1240 +msgctxt "plugin name" +msgid "WooCommerce" +msgstr "WooCommerce" + +#: inc/Engine/Admin/Settings/Page.php:1242 +msgctxt "plugin name" +msgid "Easy Digital Downloads" +msgstr "Easy Digital Downloads" + +#: inc/Engine/Admin/Settings/Page.php:1244 +msgctxt "plugin name" +msgid "iThemes Exchange" +msgstr "iThemes Exchange" + +#: inc/Engine/Admin/Settings/Page.php:1246 +msgctxt "plugin name" +msgid "Jigoshop" +msgstr "Jigoshop" + +#: inc/Engine/Admin/Settings/Page.php:1248 +msgctxt "plugin name" +msgid "WP-Shop" +msgstr "WP-Shop" + +#: inc/Engine/Admin/Settings/Page.php:1254 +#, php-format +msgid "" +"
      Cart, checkout and \"my account\" pages set in " +"%1$s%2$s%3$s will be detected and never cached by default." +msgstr "" +"
      Корзина, оформление заказа и кабинет покупателя в " +"%1$s%2$s%3$s определяются автоматически, их указывать не " +"нужно." + +#: inc/Engine/Admin/Settings/Page.php:1264 inc/admin/options.php:128 +msgid "Never Cache URL(s)" +msgstr "Некэшируемые URL" + +#: inc/Engine/Admin/Settings/Page.php:1275 +msgid "Never Cache Cookies" +msgstr "Некэшируемые Cookies" + +#: inc/Engine/Admin/Settings/Page.php:1280 inc/admin/options.php:129 +msgid "Never Cache User Agent(s)" +msgstr "Некэшируемые User-Agent" + +#: inc/Engine/Admin/Settings/Page.php:1285 inc/admin/options.php:130 +msgid "Always Purge URL(s)" +msgstr "Всегда очищаемые страницы" + +#: inc/Engine/Admin/Settings/Page.php:1294 +msgid "Cache Query String(s)" +msgstr "Кэшируемые запросы" + +#: inc/Engine/Admin/Settings/Page.php:1297 +#, php-format +msgid "" +"%1$sCache for query strings%2$s enables you to force caching for specific " +"GET parameters." +msgstr "%1$sКэширование запросов%2$s ускоряет работу GET параметров." + +#: inc/Engine/Admin/Settings/Page.php:1311 +msgid "" +"Specify URLs of pages or posts that should never be cached (one per line)" +msgstr "" +"Укажите ссылки на страницы или записи которые не нужно кэшировать (по одному" +" в строке)" + +#: inc/Engine/Admin/Settings/Page.php:1312 +#: inc/Engine/Admin/Settings/Page.php:1340 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*) " +"wildcards to address multiple URLs under a given path." +msgstr "" +"Доменное имя будет автоматически убрано.
      Используйте маску (.*) для " +"указания нескольких URLs в текущем пути." + +#: inc/Engine/Admin/Settings/Page.php:1321 +msgid "" +"Specify the IDs of cookies that, when set in the visitor's browser, should " +"prevent a page from getting cached (one per line)" +msgstr "" +"Укажите ID файлов cookies, которые не следует кэшировать (по одному в " +"строке)" + +#: inc/Engine/Admin/Settings/Page.php:1329 +msgid "" +"Specify user agent strings that should never see cached pages (one per line)" +msgstr "" +"Укажите User-agent которые не должны видеть кэшированные страницы (по одному" +" в ряд)" + +#: inc/Engine/Admin/Settings/Page.php:1330 +msgid "Use (.*) wildcards to detect parts of UA strings." +msgstr "Используйте маску (.*) для определения UA строк." + +#: inc/Engine/Admin/Settings/Page.php:1339 +msgid "" +"Specify URLs you always want purged from cache whenever you update any post " +"or page (one per line)" +msgstr "" +"Укажите URL страниц которые нужно всегда очищать от кэша (по одной в ряд)" + +#: inc/Engine/Admin/Settings/Page.php:1348 +msgid "Specify query strings for caching (one per line)" +msgstr "Укажите запросы для кэширования (по одному в ряд)" + +#: inc/Engine/Admin/Settings/Page.php:1373 inc/deprecated/deprecated.php:1775 +msgid "Database" +msgstr "База данных" + +#: inc/Engine/Admin/Settings/Page.php:1374 +msgid "Optimize, reduce bloat" +msgstr "Оптимизация и очистка" + +#: inc/Engine/Admin/Settings/Page.php:1383 +msgid "Post Cleanup" +msgstr "Очистка записей" + +#: inc/Engine/Admin/Settings/Page.php:1385 +msgid "" +"Post revisions and drafts will be permanently deleted. Do not use this " +"option if you need to retain revisions or drafts." +msgstr "" +"Очистка устаревших ревизий и черновиков. Не используйте эту функцию, если " +"вам важны черновики и ревизии." + +#: inc/Engine/Admin/Settings/Page.php:1393 +msgid "Comments Cleanup" +msgstr "Очистка комментариев" + +#: inc/Engine/Admin/Settings/Page.php:1395 +msgid "Spam and trashed comments will be permanently deleted." +msgstr "Спам и комментарии в корзине будут удалены сразу." + +#: inc/Engine/Admin/Settings/Page.php:1399 +msgid "Transients Cleanup" +msgstr "Очистка транзакций" + +#: inc/Engine/Admin/Settings/Page.php:1401 +msgid "" +"Transients are temporary options; they are safe to remove. They will be " +"automatically regenerated as your plugins require them." +msgstr "" +"Транзакции это временные настройки, их можно смело удалять. Они будут " +"созданы автоматически, если потребуются плагину." + +#: inc/Engine/Admin/Settings/Page.php:1405 +msgid "Database Cleanup" +msgstr "Очистка базы данных" + +#: inc/Engine/Admin/Settings/Page.php:1407 +msgid "Reduces overhead of database tables" +msgstr "Уменьшает переполнение таблиц базы данных" + +#: inc/Engine/Admin/Settings/Page.php:1411 +msgid "Automatic cleanup" +msgstr "Автоматическая очистка" + +#: inc/Engine/Admin/Settings/Page.php:1422 +#: inc/classes/admin/Database/class-optimization.php:41 +msgid "Revisions" +msgstr "Ревизии" + +#: inc/Engine/Admin/Settings/Page.php:1424 +#, php-format +msgid "%s revision in your database." +msgid_plural "%s revisions in your database." +msgstr[0] "%s ревизия в базе данных." +msgstr[1] "%s ревизии в базе данных." +msgstr[2] "%s ревизий в базе данных." +msgstr[3] "%s ревизий в базе данных." + +#: inc/Engine/Admin/Settings/Page.php:1432 +#: inc/classes/admin/Database/class-optimization.php:42 +msgid "Auto Drafts" +msgstr "Авто-черновики" + +#: inc/Engine/Admin/Settings/Page.php:1434 +#, php-format +msgid "%s draft in your database." +msgid_plural "%s drafts in your database." +msgstr[0] "%s черновик в вашей базе данных." +msgstr[1] "%s черновика в вашей базе данных." +msgstr[2] "%s черновиков в вашей базе данных." +msgstr[3] "%s черновик в вашей базе данных." + +#: inc/Engine/Admin/Settings/Page.php:1442 +#: inc/classes/admin/Database/class-optimization.php:43 +msgid "Trashed Posts" +msgstr "Удалённые записи" + +#: inc/Engine/Admin/Settings/Page.php:1444 +#, php-format +msgid "%s trashed post in your database." +msgid_plural "%s trashed posts in your database." +msgstr[0] "%s удаленная запись в базе данных." +msgstr[1] "%s удаленные записи в базе данных." +msgstr[2] "%s удаленных записей в базе данных." +msgstr[3] "%s удалённых записей в базе данных." + +#: inc/Engine/Admin/Settings/Page.php:1452 +#: inc/classes/admin/Database/class-optimization.php:44 +msgid "Spam Comments" +msgstr "Спам" + +#: inc/Engine/Admin/Settings/Page.php:1454 +#, php-format +msgid "%s spam comment in your database." +msgid_plural "%s spam comments in your database." +msgstr[0] "%s спамный комментарий в базе данных." +msgstr[1] "%s спамных комментария в базе данных." +msgstr[2] "%s спамных комментариев в базе данных." +msgstr[3] "%s спамных комментариев в базе данных." + +#: inc/Engine/Admin/Settings/Page.php:1462 +#: inc/classes/admin/Database/class-optimization.php:45 +msgid "Trashed Comments" +msgstr "Удалённые комментарии" + +#: inc/Engine/Admin/Settings/Page.php:1464 +#, php-format +msgid "%s trashed comment in your database." +msgid_plural "%s trashed comments in your database." +msgstr[0] "%s удаленный комментарий в базе данных." +msgstr[1] "%s удаленных комментария в базе данных." +msgstr[2] "%s удаленных комментариев в базе данных." +msgstr[3] "%s удаленных комментариев в базе данных." + +#: inc/Engine/Admin/Settings/Page.php:1472 +#: inc/classes/admin/Database/class-optimization.php:46 +msgid "Expired transients" +msgstr "Истёкшие транзакции" + +#: inc/Engine/Admin/Settings/Page.php:1474 +#, php-format +msgid "%s expired transient in your database." +msgid_plural "%s expired transients in your database." +msgstr[0] "%s истёкшая транзакция в базе данных." +msgstr[1] "%s истёкших транзакции в базе данных." +msgstr[2] "%s истёкших транзакций в базе данных." +msgstr[3] "%s истёкших транзакций в базе данных." + +#: inc/Engine/Admin/Settings/Page.php:1482 +msgid "All transients" +msgstr "Все транзакции" + +#: inc/Engine/Admin/Settings/Page.php:1484 +#, php-format +msgid "%s transient in your database." +msgid_plural "%s transients in your database." +msgstr[0] "%s транзакция в базе данных." +msgstr[1] "%s транзакции в базе данных." +msgstr[2] "%s транзакций в базе данных." +msgstr[3] "%s транзакций в базе данных." + +#: inc/Engine/Admin/Settings/Page.php:1492 +msgid "Optimize Tables" +msgstr "Оптимизация таблиц" + +#: inc/Engine/Admin/Settings/Page.php:1494 +#, php-format +msgid "%s table to optimize in your database." +msgid_plural "%s tables to optimize in your database." +msgstr[0] "%s таблица нуждается в оптимизации." +msgstr[1] "%s таблиц нуждаются в оптимизации." +msgstr[2] "%s таблиц нуждаются в оптимизации." +msgstr[3] "%s таблиц нуждаются в оптимизации." + +#: inc/Engine/Admin/Settings/Page.php:1505 +msgid "Schedule Automatic Cleanup" +msgstr "Очистка по расписанию" + +#: inc/Engine/Admin/Settings/Page.php:1517 +msgid "Frequency" +msgstr "очищать мусор в базе данных" + +#: inc/Engine/Admin/Settings/Page.php:1525 +msgid "Daily" +msgstr "Ежедневно" + +#: inc/Engine/Admin/Settings/Page.php:1526 +msgid "Weekly" +msgstr "Еженедельно" + +#: inc/Engine/Admin/Settings/Page.php:1527 +msgid "Monthly" +msgstr "Ежемесячно" + +#: inc/Engine/Admin/Settings/Page.php:1543 +#: inc/Engine/Admin/Settings/Page.php:1554 inc/admin/ui/meta-boxes.php:76 +#: inc/deprecated/deprecated.php:1773 +msgid "CDN" +msgstr "CDN" + +#: inc/Engine/Admin/Settings/Page.php:1544 +msgid "Integrate your CDN" +msgstr "Интеграция с CDN" + +#: inc/Engine/Admin/Settings/Page.php:1556 +msgid "" +"All URLs of static files (CSS, JS, images) will be rewritten to the CNAME(s)" +" you provide." +msgstr "" +"Все ссылки на статические файлы (CSS, JS, изображения) будут заменены на " +"указанные CNAME." + +#: inc/Engine/Admin/Settings/Page.php:1558 +#, php-format +msgid "" +"Not required for services like Cloudflare and Sucuri. Please see our " +"available %1$sAdd-ons%2$s." +msgstr "" +"Не нужно для сервисов по типу Cloudflare или Sucuri. Смотрите наши " +"%1$sдополнения%2$s." + +#: inc/Engine/Admin/Settings/Page.php:1573 inc/admin/options.php:131 +msgid "Exclude files from CDN" +msgstr "Исключить файлы из CDN" + +#: inc/Engine/Admin/Settings/Page.php:1599 +#, php-format +msgid "" +"%1$s%2$s Add-on%3$s is currently enabled. Configuration of the CDN settings " +"is not required for %2$s to work on your site." +msgid_plural "" +"%1$s%2$s Add-ons%3$s are currently enabled. Configuration of the CDN " +"settings is not required for %2$s to work on your site." +msgstr[0] "" +"%1$s %2$sдополнение%3$s включено. Настройка CDN для %2$s для вашего сайта не" +" требуется." +msgstr[1] "" +"%1$s %2$sдополнения%3$s включено. Настройка CDN для %2$s для вашего сайта не" +" требуется." +msgstr[2] "" +"%1$s %2$sдополнений%3$s включены. Настройка CDN для %2$s для вашего сайта не" +" требуется." +msgstr[3] "" +"%1$s %2$sдополнений%3$s включены. Настройка CDN для %2$s для вашего сайта не" +" требуется." + +#: inc/Engine/Admin/Settings/Page.php:1624 +msgid "Enable Content Delivery Network" +msgstr "Включить сети доставки контента (CDN)" + +#: inc/Engine/Admin/Settings/Page.php:1633 +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:151 +msgid "CDN CNAME(s)" +msgstr "CDN CNAME" + +#: inc/Engine/Admin/Settings/Page.php:1634 +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:152 +msgid "Specify the CNAME(s) below" +msgstr "Укажите CNAME ниже" + +#: inc/Engine/Admin/Settings/Page.php:1641 +msgid "" +"Specify URL(s) of files that should not get served via CDN (one per line)." +msgstr "Укажите URL которые не нужно направлять через CDN (по одной в строке)" + +#: inc/Engine/Admin/Settings/Page.php:1642 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*) " +"wildcards to exclude all files of a given file type located at a specific " +"path." +msgstr "" +"Доменное имя будет автоматически убрано.
      Используйте маску (.*) для " +"исключения всех файлов в данном пути." + +#: inc/Engine/Admin/Settings/Page.php:1664 +#: inc/Engine/Admin/Settings/Page.php:1672 +msgid "Heartbeat" +msgstr "Пульсация" + +#: inc/Engine/Admin/Settings/Page.php:1665 +msgid "Control WordPress Heartbeat API" +msgstr "Управлять WordPress Heartbeat API" + +#: inc/Engine/Admin/Settings/Page.php:1673 +msgid "" +"Reducing or disabling the Heartbeat API’s activity can help save some of " +"your server’s resources." +msgstr "" +"Уменьшить или отключить периодический опрос сервера на предмет новых данных." + +#: inc/Engine/Admin/Settings/Page.php:1682 +msgid "Reduce or disable Heartbeat activity" +msgstr "Уменьшить или отключить Heartbeat API" + +#: inc/Engine/Admin/Settings/Page.php:1683 +msgid "" +"Reducing activity will change Heartbeat frequency from one hit each minute " +"to one hit every 2 minutes." +msgstr "" +"Уменьшение активности позволяет изменить частоту пульсации с минуты до 2 " +"минут." + +#: inc/Engine/Admin/Settings/Page.php:1683 +msgid "" +"Disabling Heartbeat entirely may break plugins and themes using this API." +msgstr "" +"Отключение пульсации может навредить некоторым плагинам и темам использующим" +" это API." + +#: inc/Engine/Admin/Settings/Page.php:1697 +msgid "Do not limit" +msgstr "Не ограничивать" + +#: inc/Engine/Admin/Settings/Page.php:1698 +msgid "Reduce activity" +msgstr "Уменьшить активность" + +#: inc/Engine/Admin/Settings/Page.php:1699 +msgid "Disable" +msgstr "Отключить" + +#: inc/Engine/Admin/Settings/Page.php:1707 +msgid "Control Heartbeat" +msgstr "Контроль пульсации" + +#: inc/Engine/Admin/Settings/Page.php:1716 +msgid "Behavior in backend" +msgstr "Поведение в админке" + +#: inc/Engine/Admin/Settings/Page.php:1723 +msgid "Behavior in post editor" +msgstr "Поведение в редакторе" + +#: inc/Engine/Admin/Settings/Page.php:1729 +msgid "Behavior in frontend" +msgstr "Поведение во фронтенде" + +#: inc/Engine/Admin/Settings/Page.php:1745 +#: views/settings/page-sections/tutorials.php:36 +msgid "Add-ons" +msgstr "Дополнения" + +#: inc/Engine/Admin/Settings/Page.php:1746 +msgid "Add more features" +msgstr "Новые возможности" + +#: inc/Engine/Admin/Settings/Page.php:1753 +msgid "One-click Rocket Add-ons" +msgstr "Быстрые Rocket дополнения" + +#: inc/Engine/Admin/Settings/Page.php:1754 +msgid "" +"One-Click Add-ons are features extending available options without " +"configuration needed. Switch the option \"on\" to enable from this screen." +msgstr "" +"Следующие дополнения не требуют настройки. Просто активируйте их переключив " +"выключатель." + +#: inc/Engine/Admin/Settings/Page.php:1764 +msgid "Rocket Add-ons" +msgstr "Дополнения Rocket" + +#: inc/Engine/Admin/Settings/Page.php:1765 +msgid "Rocket Add-ons are complementary features extending available options." +msgstr "Дополнения Rocket расширяют функционал плагина." + +#: inc/Engine/Admin/Settings/Page.php:1778 +msgid "Google Tracking" +msgstr "Google Аналитика" + +#: inc/Engine/Admin/Settings/Page.php:1784 +msgid "Improve browser caching for Google Analytics" +msgstr "Улучшить кэширование Google Analytics" + +#: inc/Engine/Admin/Settings/Page.php:1786 +#, php-format +msgid "" +"WP Rocket will host these Google scripts locally on your server to help " +"satisfy the PageSpeed recommendation for Leverage browser " +"caching.
      %1$sLearn more%2$s" +msgstr "" +"WP Rocket будет хранить скрипты Google на вашем сервере, чтобы удовлетворить" +" PageSpeed в плане браузерного кэширования.
      %1$sПодробнее%2$s" + +#: inc/Engine/Admin/Settings/Page.php:1801 +msgid "Facebook Pixel" +msgstr "Facebook Пиксель" + +#: inc/Engine/Admin/Settings/Page.php:1807 +msgid "Improve browser caching for Facebook Pixel" +msgstr "Улучшить кэширование для Facebook Pixel" + +#: inc/Engine/Admin/Settings/Page.php:1809 +#, php-format +msgid "" +"WP Rocket will host these Facebook Pixels locally on your server to help " +"satisfy the PageSpeed recommendation for Leverage browser " +"caching.
      %1$sLearn more%2$s" +msgstr "" +"WP Rocket будет хранить Facebook Пиксель на вашем сервере, чтобы улучшить " +"показатели PageSpeed в плане браузерного " +"кэширования.
      %1$sПодробнее%2$s" + +#: inc/Engine/Admin/Settings/Page.php:1822 +#: inc/Engine/Admin/Settings/Page.php:1923 +msgid "Cloudflare" +msgstr "Cloudflare" + +#: inc/Engine/Admin/Settings/Page.php:1828 +msgid "Integrate your Cloudflare account with this add-on." +msgstr "Интеграция с Cloudflare аккаунтом" + +#: inc/Engine/Admin/Settings/Page.php:1829 +msgid "" +"Provide your account email, global API key, and domain to use options such " +"as clearing the Cloudflare cache and enabling optimal settings with WP " +"Rocket." +msgstr "" +"Укажите ваш email, глобальный API ключ и домен для интеграции Cloudflare с " +"WP Rocket." + +#: inc/Engine/Admin/Settings/Page.php:1863 +msgid "Varnish" +msgstr "Varnish" + +#: inc/Engine/Admin/Settings/Page.php:1869 +msgid "If Varnish runs on your server, you must activate this add-on." +msgstr "Если вы используете Varnish на сервере включите эту опцию." + +#: inc/Engine/Admin/Settings/Page.php:1871 +#, php-format +msgid "" +"Varnish cache will be purged each time WP Rocket clears its cache to ensure " +"content is always up-to-date.
      %1$sLearn more%2$s" +msgstr "" +"Varnish кэш очищается вместе с остальным кэшем, чтобы поддерживать " +"актуальность контента.
      %1$sПодробнее%2$s" + +#: inc/Engine/Admin/Settings/Page.php:1885 +msgid "Clear the Sucuri cache when WP Rocket’s cache is cleared." +msgstr "Очищать Sucuri кэш вместе с очисткой кэша WP Rocket." + +#: inc/Engine/Admin/Settings/Page.php:1888 +msgid "" +"Provide your API key to clear the Sucuri cache when WP Rocket’s cache is " +"cleared." +msgstr "Укажите API ключ для очистки Sucuri кэша вместе с кэшом WP Rocket." + +#: inc/Engine/Admin/Settings/Page.php:1896 +#: inc/Engine/Admin/Settings/Page.php:2040 +msgid "Sucuri" +msgstr "Sucuri" + +#: inc/Engine/Admin/Settings/Page.php:1902 +msgid "Synchronize Sucuri cache with this add-on." +msgstr "Синхронизировать Sucuri кэш с этими дополнениями." + +#: inc/Engine/Admin/Settings/Page.php:1940 +msgid "Cloudflare credentials" +msgstr "Cloudflare авторизация" + +#: inc/Engine/Admin/Settings/Page.php:1949 +msgid "Cloudflare settings" +msgstr "Cloudflare настройки" + +#: inc/Engine/Admin/Settings/Page.php:1963 +msgctxt "Cloudflare" +msgid "Global API key:" +msgstr "Глобальный API ключ:" + +#: inc/Engine/Admin/Settings/Page.php:1964 +msgctxt "Cloudflare" +msgid "Find your API key" +msgstr "Найти API ключ" + +#: inc/Engine/Admin/Settings/Page.php:1976 +msgctxt "Cloudflare" +msgid "Account email" +msgstr "E-mail" + +#: inc/Engine/Admin/Settings/Page.php:1985 +msgctxt "Cloudflare" +msgid "Zone ID" +msgstr "ID зоны" + +#: inc/Engine/Admin/Settings/Page.php:1995 +msgid "Development mode" +msgstr "Режим разработчика" + +#: inc/Engine/Admin/Settings/Page.php:1997 +#, php-format +msgid "" +"Temporarily activate development mode on your website. This setting will " +"automatically turn off after 3 hours. %1$sLearn more%2$s" +msgstr "" +"На вашем сайте временно включён режим разработчика. Он будет отключен " +"автоматически через 3 часа. %1$sПодробнее%2$s" + +#: inc/Engine/Admin/Settings/Page.php:2005 +msgid "Optimal settings" +msgstr "Оптимальные настройки" + +#: inc/Engine/Admin/Settings/Page.php:2006 +msgid "" +"Automatically enhances your Cloudflare configuration for speed, performance " +"grade and compatibility." +msgstr "" +"Автоматическая настройка Cloudflare на быструю работу, производительность и " +"совместимость." + +#: inc/Engine/Admin/Settings/Page.php:2014 +msgid "Relative protocol" +msgstr "Относительный протокол" + +#: inc/Engine/Admin/Settings/Page.php:2015 +msgid "" +"Should only be used with Cloudflare's flexible SSL feature. URLs of static " +"files (CSS, JS, images) will be rewritten to use // instead of http:// or " +"https://." +msgstr "" +"Будет использоваться относительный протокол // для CSS, JS и изображений " +"вместо http:// или https://." + +#: inc/Engine/Admin/Settings/Page.php:2053 +msgid "Sucuri credentials" +msgstr "Разрешения Sucuri" + +#: inc/Engine/Admin/Settings/Page.php:2066 +msgctxt "Sucuri" +msgid "" +"Firewall API key (for plugin), must be in format {32 characters}/{32 " +"characters}:" +msgstr "" +"Firewall API ключ (для плагина), в формате {32 символа}/{32 " +"символа}:" + +#: inc/Engine/Admin/Settings/Page.php:2067 +msgctxt "Sucuri" +msgid "Find your API key" +msgstr "Найти API ключ" + +#: inc/Engine/Admin/Settings/Render.php:461 inc/deprecated/deprecated.php:1294 +msgid "Upload file and import settings" +msgstr "Загрузить файл и импортировать настройки" + +#: inc/Engine/Admin/Settings/Settings.php:400 +msgid "" +"Sucuri Add-on: The API key for the Sucuri firewall must be in format " +"{32 characters}/{32 characters}." +msgstr "" +"Брандмауэр Sucuri: API ключ должен быть в формате {32 символа}/{32 " +"символа}." + +#: inc/Engine/Admin/Settings/Settings.php:491 +#: inc/deprecated/deprecated.php:1245 +msgid "Settings saved." +msgstr "Настройки сохранены." + +#: inc/Engine/Admin/Settings/Subscriber.php:148 +#: inc/deprecated/deprecated.php:1786 +#: views/settings/page-sections/tools.php:33 +msgid "Tools" +msgstr "Инструменты" + +#: inc/Engine/Admin/Settings/Subscriber.php:149 +msgid "Import, Export, Rollback" +msgstr "Импорт, экспорт и откат" + +#: inc/Engine/Admin/Settings/Subscriber.php:170 +#: views/settings/page-sections/imagify.php:14 +msgid "Image Optimization" +msgstr "Оптимизация фото" + +#: inc/Engine/Admin/Settings/Subscriber.php:171 +msgid "Compress your images" +msgstr "Сожмите ваши фото" + +#: inc/Engine/Admin/Settings/Subscriber.php:188 +#: views/settings/page-sections/tutorials.php:45 +msgid "Tutorials" +msgstr "Инструкции" + +#: inc/Engine/Admin/Settings/Subscriber.php:189 +msgid "Getting started and how to videos" +msgstr "Обучающие видео" + +#: inc/Engine/CDN/RocketCDN/APIClient.php:154 +msgid "RocketCDN is not available at the moment. Please retry later" +msgstr "RocketCDN не доступен в данный момент. Попробуйте позже" + +#: inc/Engine/CDN/RocketCDN/APIClient.php:171 +msgid "RocketCDN cache purge failed: Missing identifier parameter." +msgstr "Ошибка очистки кэша RocketCDN: отсутствует индификатор параметра." + +#: inc/Engine/CDN/RocketCDN/APIClient.php:180 +msgid "RocketCDN cache purge failed: Missing user token." +msgstr "Ошибка очистки кэша RocketCDN: отсутствует токен." + +#: inc/Engine/CDN/RocketCDN/APIClient.php:199 +msgid "" +"RocketCDN cache purge failed: The API returned an unexpected response code." +msgstr "Ошибка очистки кэша RocketCDN: API вернул неправильный код ответа." + +#: inc/Engine/CDN/RocketCDN/APIClient.php:208 +msgid "RocketCDN cache purge failed: The API returned an empty response." +msgstr "Ошибка очистки кэша RocketCDN: API вернул пустой ответ." + +#: inc/Engine/CDN/RocketCDN/APIClient.php:217 +msgid "RocketCDN cache purge failed: The API returned an unexpected response." +msgstr "Ошибка очистки кэша RocketCDN: API вернул неизвестный ответ." + +#: inc/Engine/CDN/RocketCDN/APIClient.php:226 +#, php-format +msgid "RocketCDN cache purge failed: %s." +msgstr "Ошибка очистки кэша RocketCDN: %s." + +#: inc/Engine/CDN/RocketCDN/APIClient.php:234 +msgid "RocketCDN cache purge successful." +msgstr "Кэш RocketCDN успешно очищен." + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:82 +msgid "Next Billing Date" +msgstr "Дата следующей оплаты" + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:91 +msgid "No Subscription" +msgstr "Нет подписки" + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:127 +msgid "Your RocketCDN subscription is currently active." +msgstr "Ваша подписка на RocketCDN активна." + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:133 +#, php-format +msgid "To use RocketCDN, replace your CNAME with %1$s%2$s%3$s." +msgstr "Для использования RocketCDN измените CNAME на %1$s%2$s%3$s." + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:144 +#, php-format +msgid "%1$sMore Info%2$s" +msgstr "%1$sПодробнее%2$s" + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:190 +msgid "Manage Subscription" +msgstr "Управление подпиской" + +#: inc/Engine/CDN/RocketCDN/RESTSubscriber.php:137 +msgid "RocketCDN enabled" +msgstr "RocketCDN включен" + +#: inc/Engine/CDN/RocketCDN/RESTSubscriber.php:160 +msgid "RocketCDN disabled" +msgstr "RocketCDN отключен" + +#: inc/Engine/CDN/RocketCDN/views/cta-big.php:27 +#, php-format +msgid "Valid until %s only!" +msgstr "Действительно только до %s!" + +#: inc/Engine/CDN/RocketCDN/views/cta-big.php:36 +msgid "Speed up your website thanks to:" +msgstr "Ваш сайт ускорится благодаря:" + +#: inc/Engine/CDN/RocketCDN/views/cta-big.php:42 +#, php-format +msgid "" +"High performance Content Delivery Network (CDN) with %1$sunlimited " +"bandwith%2$s" +msgstr "" +"Высокопроизводительная Сеть Доставки Контента (CDN) с %1$sбезлимитной " +"пропускной способностью%2$s" + +#: inc/Engine/CDN/RocketCDN/views/cta-big.php:48 +#, php-format +msgid "" +"Easy configuration: the %1$sbest CDN settings%2$s are automatically applied" +msgstr "" +"Легкая настройка: лучшие %1$sпараметры CDN%2$s применяются автоматически" + +#: inc/Engine/CDN/RocketCDN/views/cta-big.php:54 +#, php-format +msgid "" +"WP Rocket integration: the CDN option is %1$sautomatically configured%2$s in" +" our plugin" +msgstr "" +"Поддержка WP Rocket: CDN %1$sавтоматически настраивается%2$s с помощью этого" +" плагина" + +#: inc/Engine/CDN/RocketCDN/views/cta-big.php:69 +#, php-format +msgid "%s / month" +msgstr "%s / месяц" + +#: inc/Engine/CDN/RocketCDN/views/cta-big.php:74 +msgid "Get Started" +msgstr "Начать" + +#: inc/Engine/CDN/RocketCDN/views/cta-big.php:80 +msgid "Learn more about RocketCDN" +msgstr "Узнать больше о RocketCDN" + +#: inc/Engine/CDN/RocketCDN/views/cta-big.php:82 +msgid "Reduce this banner" +msgstr "Уменьшить баннер" + +#: inc/Engine/CDN/RocketCDN/views/cta-big.php:88 +#, php-format +msgid "" +"* $%1$s/month for 12 months then $%2$s/month. You can cancel your " +"subscription at any time." +msgstr "" +"* $%1$s/месяц при оплате за 12 месяцев за $%2$s/месяц. Вы можете отменить " +"подписку в любое время." + +#: inc/Engine/CDN/RocketCDN/views/cta-small.php:17 +msgid "" +"Speed up your website with RocketCDN, WP Rocket’s Content Delivery Network." +msgstr "" +"Ускорьте свой сайт с помощью RocketCDN - службы доставки контента от WP " +"Rocket." + +#: inc/Engine/CDN/RocketCDN/views/cta-small.php:20 +#: inc/Engine/CDN/RocketCDN/views/promote-notice.php:13 +msgid "Learn More" +msgstr "Подробнее" + +#: inc/Engine/CDN/RocketCDN/views/dashboard-status.php:23 +msgid "RocketCDN is unavailable on local domains and staging sites." +msgstr "RocketCDN не доступен на локальных сайтах и платформах." + +#: inc/Engine/CDN/RocketCDN/views/dashboard-status.php:32 +msgid "Get RocketCDN" +msgstr "Получить RocketCDN" + +#: inc/Engine/CDN/RocketCDN/views/promote-notice.php:11 +msgid "New!" +msgstr "Новинка!" + +#: inc/Engine/CDN/RocketCDN/views/promote-notice.php:12 +msgid "" +"Speed up your website with RocketCDN, WP Rocket’s Content Delivery Network!" +msgstr "" +"Ускорьте свой сайт с помощью RocketCDN - службы доставки контента от WP " +"Rocket!" + +#: inc/Engine/Cache/AdminSubscriber.php:118 inc/admin/admin.php:71 +#: inc/admin/admin.php:92 inc/deprecated/3.5.php:908 +msgid "Clear this cache" +msgstr "Очистить этот кэш" + +#: inc/Engine/Cache/WPCache.php:330 +msgid "WP_CACHE value" +msgstr "Значение WP_CACHE" + +#: inc/Engine/Cache/WPCache.php:351 +msgid "" +"The WP_CACHE constant needs to be set to true for WP Rocket cache to work " +"properly" +msgstr "" +"Для работы WP Rocket константа WP_CACHE должна быть установлена в true" + +#: inc/Engine/Cache/WPCache.php:360 +msgid "WP_CACHE is set to true" +msgstr "WP_CACHE установлена в true" + +#: inc/Engine/Cache/WPCache.php:368 +msgid "WP_CACHE is not set" +msgstr "WP_CACHE не задана" + +#: inc/Engine/Cache/WPCache.php:376 +msgid "WP_CACHE is set to false" +msgstr "WP_CACHE установлена в false" + +#: inc/Engine/CriticalPath/APIClient.php:64 +#, php-format +msgid "Critical CSS for %1$s not generated. Error: %2$s" +msgstr "Критические CSS для %1$sне созданы. Причина: %2$s" + +#: inc/Engine/CriticalPath/APIClient.php:170 +#: inc/Engine/CriticalPath/DataManager.php:66 +#, php-format +msgid "" +"Critical CSS for %1$s on mobile not generated. Error: The API returned an " +"empty response." +msgstr "" +"Критические CSS для %1$s для мобильных устройств не созданы: API вернуло " +"пустой ответ." + +#: inc/Engine/CriticalPath/APIClient.php:173 +#: inc/Engine/CriticalPath/DataManager.php:69 +#, php-format +msgid "" +"Critical CSS for %1$s not generated. Error: The API returned an empty " +"response." +msgstr "Критические CSS для %1$s не созданы: API вернуло пустой ответ." + +#: inc/Engine/CriticalPath/APIClient.php:185 +#, php-format +msgid "Critical CSS for %1$s on mobile not generated." +msgstr "Критические CSS для %1$s для мобильных устройств не созданы." + +#: inc/Engine/CriticalPath/APIClient.php:187 +#: inc/Engine/CriticalPath/ProcessorService.php:193 +#, php-format +msgid "Critical CSS for %1$s not generated." +msgstr "Критические CSS для %1$s не созданы." + +#: inc/Engine/CriticalPath/APIClient.php:195 +#, php-format +msgid "" +"Critical CSS for %1$s on mobile not generated. Error: The API returned an " +"invalid response code." +msgstr "" +"Критические CSS для %1$s для мобильных устройств не созданы: API вернуло " +"неправильный ответ." + +#: inc/Engine/CriticalPath/APIClient.php:197 +#, php-format +msgid "" +"Critical CSS for %1$s not generated. Error: The API returned an invalid " +"response code." +msgstr "" +"Критические CSS для %1$s не созданы. Ошибка: API вернуло не верный код " +"ответа." + +#: inc/Engine/CriticalPath/APIClient.php:205 +#: inc/Engine/CriticalPath/ProcessorService.php:200 +#, php-format +msgid "Error: %1$s" +msgstr "Ошибка: %1$s" + +#: inc/Engine/CriticalPath/Admin/Admin.php:260 +msgid "Regenerate Critical Path CSS" +msgstr "Пересоздать критические CSS" + +#: inc/Engine/CriticalPath/Admin/Post.php:132 +#: views/cpcss/metabox/generate.php:47 +msgid "Generate Specific CPCSS" +msgstr "Создать особые критические CSS" + +#: inc/Engine/CriticalPath/Admin/Post.php:133 +#: views/cpcss/metabox/generate.php:45 +msgid "Regenerate specific CPCSS" +msgstr "Пересоздать особые критические CSS" + +#: inc/Engine/CriticalPath/Admin/Post.php:199 +msgid "%l to use this feature." +msgstr "%l для использования этой настройки." + +#: inc/Engine/CriticalPath/Admin/Post.php:202 +#, php-format +msgid "Publish the %s" +msgstr "Опубликуйте %s" + +#: inc/Engine/CriticalPath/Admin/Post.php:203 +msgid "Enable Optimize CSS delivery in WP Rocket settings" +msgstr "Включить Оптимизацию доставки CSS в настройках WP Rocket" + +#: inc/Engine/CriticalPath/Admin/Post.php:204 +msgid "Enable Optimize CSS delivery in the options above" +msgstr "Включить Оптимизацию доставки CSS в настройках выше" + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:147 +msgid "Critical CSS generation is currently running." +msgstr "Критическая генерация CSS в настоящее время работает." + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:152 +#: inc/Engine/Preload/PreloadSubscriber.php:242 +#, php-format +msgid "Go to the %1$sWP Rocket settings%2$s page to track progress." +msgstr "Перейдите в %1$sнастройки WP Rocket%2$s для отслеживания процесса." + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:366 +#, php-format +msgid "" +"Critical CSS generation is currently running: %1$d of %2$d page types " +"completed. (Refresh this page to view progress)" +msgstr "" +"Создание критических CSS запущено: %1$d из %2$d страниц уже создано " +"(обновите, чтобы увидеть процесс)." + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:438 +#, php-format +msgid "Critical CSS generation finished for %1$d of %2$d page types." +msgstr "Создание критических CSS завершено: %1$d из %2$d страниц." + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:445 +msgid "Critical CSS generation encountered one or more errors." +msgstr "Создание критических CSS вызвала ошибку." + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:445 +msgid "Learn more." +msgstr "Подробнее." + +#: inc/Engine/CriticalPath/DataManager.php:102 +msgid "Critical CSS file for mobile does not exist" +msgstr "Критические CSS для мобильных не созданы" + +#: inc/Engine/CriticalPath/DataManager.php:104 +msgid "Critical CSS file does not exist" +msgstr "Файл критических CSS не создан" + +#: inc/Engine/CriticalPath/DataManager.php:116 +msgid "Critical CSS file for mobile cannot be deleted" +msgstr "Невозможно удалить критические CSS для мобильных" + +#: inc/Engine/CriticalPath/DataManager.php:118 +msgid "Critical CSS file cannot be deleted" +msgstr "Невозможно удалить критические CSS" + +#: inc/Engine/CriticalPath/ProcessorService.php:186 +#, php-format +msgid "Mobile Critical CSS for %1$s not generated." +msgstr "Мобильные критические CSS для %1$s не созданы." + +#: inc/Engine/CriticalPath/ProcessorService.php:227 +#, php-format +msgid "Critical CSS for %s in progress." +msgstr "Критические CSS для %s в процессе создания." + +#: inc/Engine/CriticalPath/ProcessorService.php:261 +#, php-format +msgid "Mobile Critical CSS for %s generated." +msgstr "Мобильные критические CSS для %s созданы." + +#: inc/Engine/CriticalPath/ProcessorService.php:272 +#, php-format +msgid "Critical CSS for %s generated." +msgstr "Критические CSS для %s созданы." + +#: inc/Engine/CriticalPath/ProcessorService.php:294 +msgid "Critical CSS file deleted successfully." +msgstr "Критические CSS успешно удалены." + +#: inc/Engine/CriticalPath/ProcessorService.php:316 +#, php-format +msgid "Mobile Critical CSS for %1$s timeout. Please retry a little later." +msgstr "Мобильные критические CSS для %1$s истекли. Повторите позже." + +#: inc/Engine/CriticalPath/ProcessorService.php:329 +#, php-format +msgid "Critical CSS for %1$s timeout. Please retry a little later." +msgstr "Критические CSS для %1$s истекли. Повторите попытку позже." + +#: inc/Engine/CriticalPath/RESTWP.php:141 +msgid "Mobile CPCSS generation not enabled." +msgstr "Мобильные критические CSS не включены." + +#: inc/Engine/CriticalPath/RESTWPPost.php:36 +#: inc/Engine/CriticalPath/RESTWPPost.php:69 +msgid "Requested post does not exist." +msgstr "Запрошенная запись не существует." + +#: inc/Engine/CriticalPath/RESTWPPost.php:46 +msgid "Cannot generate CPCSS for unpublished post." +msgstr "Невозможно создать критические CSS для неопубликованной записи." + +#: inc/Engine/HealthCheck/HealthCheck.php:82 inc/deprecated/3.5.php:868 +msgid "" +"The following scheduled event failed to run. This may indicate the CRON " +"system is not running properly, which can prevent some WP Rocket features " +"from working as intended:" +msgid_plural "" +"The following scheduled events failed to run. This may indicate the CRON " +"system is not running properly, which can prevent some WP Rocket features " +"from working as intended:" +msgstr[0] "" +"Не удалось запустить запланированное задание. Это может указывать на то, что" +" система CRON не работает корректно, и соответвенно, функционал WP Rocket, " +"который от неё зависит, не функционирует:" +msgstr[1] "" +"Не удалось запустить запланированные задания. Это может указывать на то, что" +" система CRON не работает корректно, и соответвенно, функционал WP Rocket, " +"который от неё зависит, не функционирует:" +msgstr[2] "" +"Не удалось запустить запланированные задания. Это может указывать на то, что" +" система CRON не работает корректно, и соответвенно, функционал WP Rocket, " +"который от неё зависит, не функционирует:" +msgstr[3] "" +"Не удалось запустить запланированные задания. Это может указывать на то, что" +" система CRON не работает корректно, и соответвенно, функционал WP Rocket, " +"который от неё зависит, не функционирует:" + +#: inc/Engine/HealthCheck/HealthCheck.php:88 inc/deprecated/3.5.php:877 +msgid "Please contact your host to check if CRON is working." +msgstr "" +"Пожалуйста, свяжитесь с вашим хостом, чтобы проверить, работает ли CRON." + +#: inc/Engine/HealthCheck/HealthCheck.php:142 +msgid "Scheduled Cache Purge" +msgstr "Запланированная очистка кэша" + +#: inc/Engine/HealthCheck/HealthCheck.php:143 +msgid "Scheduled Database Optimization" +msgstr "Запланированная оптимизация базы данных" + +#: inc/Engine/HealthCheck/HealthCheck.php:144 +msgid "Database Optimization Process" +msgstr "Процесс оптимизации базы данных" + +#: inc/Engine/HealthCheck/HealthCheck.php:145 +msgctxt "noun" +msgid "Preload" +msgstr "Предзагрузка" + +#: inc/Engine/HealthCheck/HealthCheck.php:146 +msgid "Critical Path CSS Generation Process" +msgstr "Процесс создания критических CSS" + +#: inc/Engine/License/Upgrade.php:252 +#, php-format +msgid "" +"Take advantage of %1$s to speed up more websites:%2$s get a %3$s%4$s off%5$s" +" for %3$supgrading your license to Plus or Infinite!%5$s" +msgid_plural "" +"Take advantage of %1$s to speed up more websites:%2$s get a %3$s%4$s off%5$s" +" for %3$supgrading your license to Infinite!%5$s" +msgstr[0] "" +"Извлеките выгоду от %1$s ускорив больше сайтов: %2$s получите %3$s%4$s " +"скидки%5$s для %3$s обновления лицензии до Plus или Пожизненной.%5$s" +msgstr[1] "" +"Извлеките выгоду от %1$s ускорив больше сайтов: %2$s получите %3$s%4$s " +"скидки%5$s для %3$s обновления лицензии до Plus или Пожизненной.%5$s" +msgstr[2] "" +"Извлеките выгоду от %1$s ускорив больше сайтов: %2$s получите %3$s%4$s " +"скидки%5$s для %3$s обновления лицензии до Plus или Пожизненной.%5$s" +msgstr[3] "" +"Извлеките выгоду от %1$s ускорив больше сайтов: %2$s получите %3$s%4$s " +"скидки%5$s для %3$sполучения пожизненной лицензии!%5$s" + +#: inc/Engine/License/Upgrade.php:369 inc/Engine/License/Upgrade.php:392 +msgid "Unlimited" +msgstr "Без ограничений" + +#: inc/Engine/License/views/promo-banner.php:16 +#, php-format +msgid "%s off" +msgstr "%s скидка" + +#: inc/Engine/License/views/promo-banner.php:21 +#, php-format +msgid "%s promotion is live!" +msgstr "%s акций доступно!" + +#: inc/Engine/License/views/promo-banner.php:27 +msgid "Hurry Up! Deal ends in:" +msgstr "Поспешите! Акция закончится:" + +#: inc/Engine/License/views/promo-banner.php:32 +msgid "Seconds" +msgstr "Секунд" + +#: inc/Engine/License/views/promo-banner.php:34 +#: inc/Engine/License/views/upgrade-section.php:11 +msgid "Upgrade now" +msgstr "Обновить сейчас" + +#: inc/Engine/License/views/promo-banner.php:36 inc/admin/ui/notices.php:812 +#: views/settings/page-sections/dashboard.php:46 +msgid "Dismiss this notice." +msgstr "Игнорировать" + +#: inc/Engine/License/views/upgrade-popin.php:12 +msgid "Speed Up More Websites" +msgstr "Ускорить больше сайтов" + +#: inc/Engine/License/views/upgrade-popin.php:19 +#, php-format +msgid "" +"You can use WP Rocket on more websites by upgrading your license. To " +"upgrade, simply pay the %1$sprice difference%2$s between your current and " +"new licenses, as shown below." +msgstr "" +"Вы можете использовать WP Rocket на нескольких сайтах обновив свою лицензию." +" Оплатите %1$sразницу в цене%2$s между текущей и расширенной лицензиями." + +#: inc/Engine/License/views/upgrade-popin.php:25 +#, php-format +msgid "" +"%1$sN.B.%2$s: Upgrading your license does not change your expiration date" +msgstr "%1$sПримечание:%2$s обновление не изменяет срок истечения лицензии" + +#: inc/Engine/License/views/upgrade-popin.php:35 +#, php-format +msgid "Save $%s" +msgstr "Сэкономить %s$" + +#: inc/Engine/License/views/upgrade-popin.php:48 +#, php-format +msgid "%s websites" +msgstr "%s сайтов" + +#: inc/Engine/License/views/upgrade-popin.php:54 +#, php-format +msgid "Upgrade to %s" +msgstr "Обновить до %s" + +#: inc/Engine/License/views/upgrade-section.php:11 +msgid "" +"You can use WP Rocket on more websites by upgrading your license (you will " +"only pay the price difference between your current and new licenses)." +msgstr "" +"Вы можете использовать WP Rocket на нескольких сайтах обновив свою лицензию " +"(вы оплачиваете только разницу в цене)." + +#: inc/Engine/Optimization/DelayJS/Admin/Settings.php:105 +msgid "Restore Defaults" +msgstr "Восстановить настройки" + +#: inc/Engine/Preload/Homepage.php:153 +#, php-format +msgid "" +"Preload encountered an error. Could not gather links on %1$s because of the " +"following error: %2$s. %3$sLearn more%4$s." +msgstr "" +"Предзагрузка вызвала ошибку. Невозможно получить ссылки на %1$s из-за " +"ошибки: %2$s. %3$sПодробнее%4$s." + +#: inc/Engine/Preload/Homepage.php:166 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: %2$s. Security measures could be preventing access. " +"%3$sLearn more%4$s." +msgstr "" +"Предзагрузка вызвала ошибку. %1$s недоступен из-за ошибки: %2$s. Возможно, " +"доступ блокируют настройки безопасности. %3$sПодробнее%4$s." + +#: inc/Engine/Preload/Homepage.php:172 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: 404. Please make sure your homepage is accessible in your " +"browser. %2$sLearn more%3$s." +msgstr "" +"Возникла ошибка во время предзагрузки. %1$s получил код ответа 404. " +"Убедитесь, что главная страница вашего сайта отображается в браузере. " +"%2$sПодробнее%3$s." + +#: inc/Engine/Preload/Homepage.php:178 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: 500. Please check with your web host about server access. " +"%2$sLearn more%3$s." +msgstr "" +"Возникла ошибка во время предзагрузки. %1$s получил код ответа 500. " +"Убедитесь, что у вас есть доступ к хостингу. %2$sПодробнее%3$s." + +#: inc/Engine/Preload/Homepage.php:184 +#, php-format +msgid "" +"Preload encountered an error. Could not gather links on %1$s because it " +"returned the following response code: %2$s. %3$sLearn more%4$s." +msgstr "" +"Возникла ошибка во время предзагрузки. Не возможно получить доступ к ссылкам" +" на %1$s потому что получен код ошибки: %2$s. %3$sПодробнее%4$s." + +#: inc/Engine/Preload/PreloadSubscriber.php:237 +msgid "Preload: WP Rocket has started preloading your website." +msgstr "Предзагрузка: WP Rocket начал создавать статические файлы." + +#: inc/Engine/Preload/PreloadSubscriber.php:283 +#, php-format +msgid "" +"Preload: %1$s uncached page has now been preloaded. (refresh to see " +"progress)" +msgid_plural "" +"Preload: %1$s uncached pages have now been preloaded. (refresh to see " +"progress)" +msgstr[0] "" +"Предзагрузка: %1$s страница сохранена в кэш (обновите для более точных " +"данных)." +msgstr[1] "" +"Предзагрузка: %1$s страницы сохранены в кэш (обновите для более точных " +"данных)." +msgstr[2] "" +"Предзагрузка: %1$s страниц сохранено в кэш (обновите для более точных " +"данных)." +msgstr[3] "" +"Предзагрузка: %1$s страниц сохранено в кэш (обновите для более точных " +"данных)." + +#: inc/Engine/Preload/PreloadSubscriber.php:292 +msgid "The following error happened during gathering of the URLs to preload:" +msgid_plural "" +"The following errors happened during gathering of the URLs to preload:" +msgstr[0] "" +"Возникла следующая ошибка во время получения ссылок для кэширования:" +msgstr[1] "" +"Возникли следующие ошибки во время получения ссылок для кэширования:" +msgstr[2] "" +"Возникли следующие ошибки во время получения ссылок для кэширования:" +msgstr[3] "" +"Возникли следующие ошибки во время получения ссылок для кэширования:" + +#: inc/Engine/Preload/PreloadSubscriber.php:344 +#, php-format +msgid "Preload complete: %d pages have been cached." +msgstr "Предзагрузка завершена: %d страниц в кэше." + +#: inc/Engine/Preload/Sitemap.php:150 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not gather links on %1$s because" +" of the following error: %2$s. %3$sLearn more%4$s." +msgstr "" +"Предзагрузка вызвала ошибку. Невозможно получить ссылки на %1$s из-за " +"ошибки: %2$s. %3$sПодробнее%4$s." + +#: inc/Engine/Preload/Sitemap.php:165 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: %2$s. Security measures could be preventing access." +" %3$sLearn more%4$s." +msgstr "" +"Предзагрузка вызвала ошибку. %1$s недоступен из-за ошибки: %2$s. Возможно, " +"доступ блокируют настройки безопасности. %3$sПодробнее%4$s." + +#: inc/Engine/Preload/Sitemap.php:170 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: 404. Please make sure you entered the correct " +"sitemap URL and it is accessible in your browser. %2$sLearn more%3$s." +msgstr "" +"Возникла ошибка во время предзагрузки. %1$s получил код ответа 404. " +"Убедитесь, что главная страница вашего сайта отображается в браузере. " +"%2$sПодробнее%3$s" + +#: inc/Engine/Preload/Sitemap.php:175 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: 500. Please check with your web host about server " +"access. %2$sLearn more%3$s." +msgstr "" +"Возникла ошибка во время предзагрузки. %1$s получил код ответа 500. " +"Убедитесь, что у вас есть доступ к хостингу. %2$sПодробнее%3$s" + +#: inc/Engine/Preload/Sitemap.php:180 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not gather links on %1$s because" +" it returned the following response code: %2$s. %3$sLearn more%4$s." +msgstr "" +"Возникла ошибка во время предзагрузки. Не возможно получить ссылкам на %1$s " +"из-за ошибки: %2$s. %3$sПодробнее%4$s" + +#: inc/Engine/Preload/Sitemap.php:196 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not collect links from %1$s " +"because the file is empty. %2$sLearn more%3$s." +msgstr "" +"Предзагрузка вызвала ошибку. Невозможно получить ссылки из %1$s, так как " +"файл пуст. %2$sПодробнее%3$s" + +#: inc/Engine/Preload/Sitemap.php:217 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not collect links from %1$s " +"because of an error during the XML sitemap parsing. %2$sLearn more%3$s." +msgstr "" +"Предзагрузка вызвала ошибку. Не возможно получить ссылки с %1$s из-за ошибки" +" в XML. %2$sПодробнее%3$s" + +#: inc/Engine/Preload/SitemapPreloadSubscriber.php:120 +#, php-format +msgid "" +"%1$sSimpleXML PHP extension%2$s is not enabled on your server. Please " +"contact your host to enable it before running sitemap-based cache " +"preloading." +msgstr "" +"Отсутствует модуль %1$sSimpleXML PHP%2$s на сервере. Обратитесь в " +"техподдержку хостинга перед включением предзагрузки." + +#: inc/ThirdParty/Hostings/Cloudways.php:82 +#, php-format +msgid "" +"Varnish auto-purge will be automatically enabled once Varnish is enabled on " +"your %s server." +msgstr "" +"Очистка кэша Varnish будет включена автоматически, когда станет доступен " +"Varnish кэш на %s сервере." + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:78 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"Please deactivate the following %s option which conflicts with WP Rocket " +"features:" +msgid_plural "" +"Please deactivate the following %s options which conflict with WP Rocket " +"features:" +msgstr[0] "" +"Пожалуйста, отключите %s настройку которая конфликтует с WP Rocket:" +msgstr[1] "" +"Пожалуйста, отключите %s настройки которые конфликтуют с WP Rocket:" +msgstr[2] "Пожалуйста, отключите %s настроек которые конфликтуют с WP Rocket:" +msgstr[3] "Пожалуйста, отключите %s настроек которые конфликтуют с WP Rocket:" + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:151 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sdisable emoji%3$s conflicts with WP Rockets %2$sdisable emoji%3$s" +msgstr "" +"%1$s%2$sотключение смайликов%3$s конфликтует с %2$sаналогичной " +"настройкой%3$s в WP Rocket." + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:187 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sGZIP compression%3$s conflicts with WP Rocket %2$sGZIP " +"compression%3$s" +msgstr "" +"%1$s%2$sGZIP сжатие%3$s конфликтует с %2$sаналогичной настройкой%3$s в WP " +"Rocket." + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:223 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sbrowser caching%3$s conflicts with WP Rocket %2$sbrowser " +"caching%3$s" +msgstr "" +"%1$s%2$sбраузерное кэширование%3$s конфликтует с %2$sаналогичной " +"настройкой%3$s в WP Rocket." + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:255 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$spage caching%3$s conflicts with WP Rocket %2$spage caching%3$s" +msgstr "" +"%1$s%2$sкэширование страниц%3$s конфликтует с %2$sаналогичной настройкой%3$s" +" в WP Rocket." + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:289 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sasset optimization%3$s conflicts with WP Rocket %2$sfile " +"optimization%3$s" +msgstr "" +"%1$s%2$sоптимизация%3$s конфликтует с %2$sаналогичной настройкой%3$s в WP " +"Rocket." + +#: inc/ThirdParty/Plugins/Smush.php:110 inc/ThirdParty/Plugins/Smush.php:128 +msgid "Smush" +msgstr "Smush" + +#: inc/admin/admin.php:18 inc/common/admin-bar.php:367 +#: inc/deprecated/deprecated.php:1787 +msgid "Support" +msgstr "Поддержка" + +#: inc/admin/admin.php:20 +msgid "Docs" +msgstr "Документация" + +#: inc/admin/admin.php:22 inc/common/admin-bar.php:355 +msgid "FAQ" +msgstr "FAQ" + +#: inc/admin/admin.php:24 inc/common/admin-bar.php:64 +msgid "Settings" +msgstr "Настройки" + +#: inc/admin/admin.php:225 inc/admin/admin.php:240 +#: inc/classes/class-wp-rocket-requirements-check.php:203 +#: inc/classes/class-wp-rocket-requirements-check.php:214 +#, php-format +msgid "%s Update Rollback" +msgstr "%sотменить обновление" + +#: inc/admin/admin.php:266 +#, php-format +msgid "%1$sReturn to WP Rocket%2$s or %3$sgo to Plugins page%2$s" +msgstr "%1$sВернитесь в WP Rocket%2$s или на %3$sстраницу плагинов%2$s" + +#: inc/admin/admin.php:503 +msgid "Settings import failed: you do not have the permissions to do this." +msgstr "Ошибка импорта: у вас нет прав для совершения данной операции." + +#: inc/admin/admin.php:507 +msgid "Settings import failed: no file uploaded." +msgstr "Ошибка импортирования настроек: файл не загружен." + +#: inc/admin/admin.php:511 +msgid "Settings import failed: incorrect filename." +msgstr "Ошибка импортирования настроек: неверное название файла." + +#: inc/admin/admin.php:522 +msgid "Settings import failed: incorrect filetype." +msgstr "Ошибка импортирования настроек: неверный тип файла." + +#: inc/admin/admin.php:532 +msgid "Settings import failed: " +msgstr "Ошибка импорта настроек:" + +#: inc/admin/admin.php:548 +msgid "Settings import failed: unexpected file content." +msgstr "Ошибка импорта настроек: неверное содержимое файла." + +#: inc/admin/admin.php:569 +msgid "Settings imported and saved." +msgstr "Настройки импортированы и сохранены." + +#: inc/admin/options.php:149 +#, php-format +msgid "%1$s: %2$s." +msgstr "%1$s: %2$s." + +#: inc/admin/options.php:159 +msgid "The following pattern is invalid and has been removed:" +msgid_plural "The following patterns are invalid and have been removed:" +msgstr[0] "Следующий паттерн ошибочный и был удалены:" +msgstr[1] "Следующие паттерны ошибочны и были удалены:" +msgstr[2] "Следующие паттерны ошибочны и были удалены:" +msgstr[3] "Следующие паттерны ошибочны и были удалены:" + +#: inc/admin/ui/meta-boxes.php:14 inc/admin/ui/notices.php:768 +#: inc/common/admin-bar.php:85 inc/common/admin-bar.php:137 +#: views/settings/page-sections/dashboard.php:143 +msgid "Clear cache" +msgstr "Очистить кэш" + +#: inc/admin/ui/meta-boxes.php:36 +msgid "WP Rocket Options" +msgstr "Настройки WP Rocket" + +#: inc/admin/ui/meta-boxes.php:65 +msgid "Never cache this page" +msgstr "Не кэшировать эту страницу" + +#: inc/admin/ui/meta-boxes.php:69 +msgid "Activate these options on this post:" +msgstr "Применить к этой записи:" + +#: inc/admin/ui/meta-boxes.php:72 +msgid "LazyLoad for images" +msgstr "LazyLoad для изображений" + +#: inc/admin/ui/meta-boxes.php:73 +msgid "LazyLoad for iframes/videos" +msgstr "LazyLoad для фреймов и видео" + +#: inc/admin/ui/meta-boxes.php:74 +msgid "Minify/combine CSS" +msgstr "Сжатие и объединение CSS" + +#: inc/admin/ui/meta-boxes.php:75 +msgid "Minify/combine JS" +msgstr "Сжатие и объединение JS" + +#: inc/admin/ui/meta-boxes.php:77 +msgid "Optimize CSS Delivery" +msgstr "Оптимизировать CSS загрузку" + +#: inc/admin/ui/meta-boxes.php:78 +msgid "Defer JS" +msgstr "Асинхронный JS" + +#: inc/admin/ui/meta-boxes.php:85 +#, php-format +msgid "Activate first the %s option." +msgstr "Активируйте сначала %s" + +#: inc/admin/ui/meta-boxes.php:101 +#, php-format +msgid "" +"%1$sNote:%2$s None of these options will be applied if this post has been " +"excluded from cache in the global cache settings." +msgstr "" +"%1$sПримечание:%2$s данные настройки не применяются, если запись исключена " +"из кэширования в общих настройках." + +#: inc/admin/ui/notices.php:25 inc/admin/ui/notices.php:38 +#, php-format +msgid "" +"%1$s has not been deactivated due to missing writing permissions.
      \n" +"Make %2$s writeable and retry deactivation, or force deactivation now:" +msgstr "" +"%1$sне может быть отключено из-за ошибки прав записи CHMOD.
      \n" +"Позвольте запись в %2$s и повторите попытку, либо отключите насильно:" + +#: inc/admin/ui/notices.php:91 +#, php-format +msgid "" +"%s: One or more plugins have been enabled or disabled, " +"clear the cache if they affect the front end of your site." +msgstr "" +"%s: Один или несколько плагинов были отключены или удалены." +" Очистите кэш, чтобы стереть их следы." + +#: inc/admin/ui/notices.php:184 +msgid "" +"WP Rocket Cloudflare Add-on provides similar functionalities. They can not " +"be active at the same time." +msgstr "" +"Дополнение WP Rocket Cloudflare предоставляет аналогичные функциональные " +"возможности. Они не могут быть активны одновременно." + +#: inc/admin/ui/notices.php:208 +#, php-format +msgid "" +"%s: The following plugins are not compatible with this " +"plugin and may cause unexpected results:" +msgstr "" +"%s: Следующие плагины не совместимы с WP Rocket и могут " +"вызывать ошибки:" + +#: inc/admin/ui/notices.php:214 +msgid "Deactivate" +msgstr "Отключить" + +#: inc/admin/ui/notices.php:256 +msgid "" +"WP Rocket Footer JS is not an official add-on. It prevents some options in " +"WP Rocket from working correctly. Please deactivate it if you have problems." +msgstr "" +"WP Rocket Footer JS - неофициальное дополнение, поэтому может нарушать " +"работу WP Rocket. Отключите его, если на сайте возникают ошибки." + +#: inc/admin/ui/notices.php:296 +#, php-format +msgid "" +"Endurance Cache is currently enabled, which will conflict with WP Rocket " +"Cache. Please set the Endurance Cache cache level to Off (Level 0) on the " +"%1$sSettings > General%2$s page to prevent any issues." +msgstr "" +"Endurance Cache сейчас включен и создает конфликты с кешем WP Rocket. " +"Пожалуйста, установите отключите кеширование в Endurance Cache (режим Off " +"или Level 0) на странице %1$sНастройки > Общие%2$s, чтобы избежать проблем. " + +#: inc/admin/ui/notices.php:317 +#, php-format +msgid "" +"%1$s: A custom permalink structure is required for the plugin to work " +"properly. %2$sGo to permalinks settings%3$s" +msgstr "" +"%1$s: Активируйте постоянные ссылки для работы WP Rocket. %2$sЭто можно " +"сделать в меню настроек%3$s" + +#: inc/admin/ui/notices.php:364 +#, php-format +msgid "" +"%s could not modify the .htaccess file due to missing writing permissions." +msgstr "%s не может изменить файл .htaccess из-за отсутствующих прав записи." + +#: inc/admin/ui/notices.php:370 inc/admin/ui/notices.php:845 +#, php-format +msgid "Troubleshoot: %1$sHow to make system files writeable%2$s" +msgstr "Решение проблем: %1$sКак разрешить запись файлов%2$s" + +#: inc/admin/ui/notices.php:372 inc/admin/ui/notices.php:847 +msgid "" +"https://docs.wp-rocket.me/article/626-how-to-make-system-files-htaccess-wp-" +"config-writeable/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://docs.wp-rocket.me/article/626-how-to-make-system-files-htaccess-wp-" +"config-writeable/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: inc/admin/ui/notices.php:378 +msgid "" +"Don’t worry, WP Rocket’s page caching and settings will still function " +"correctly." +msgstr "" +"Не волнуйтесь, кэширование страниц и настройки WP Rocket продолжают " +"работать." + +#: inc/admin/ui/notices.php:378 +msgid "" +"For optimal performance, adding the following lines into your .htaccess is " +"recommended (not required):" +msgstr "" +"Для лучшей производительности, рекомендуется добавить эти строки в файл " +".htaccess (не обязательно):" + +#: inc/admin/ui/notices.php:525 +#, php-format +msgid "" +"%1$s is good to go! %2$sTest your load time%4$s, or visit your " +"%3$ssettings%4$s." +msgstr "" +"%1$sработает отлично! %2$sПроверьте скорость загрузки %4$s, или перейдите в " +"%3$sнастройки%4$s." + +#: inc/admin/ui/notices.php:598 +msgid "" +"Would you allow WP Rocket to collect non-sensitive diagnostic data from this" +" website?" +msgstr "Вы разрешаете WP Rocket собирать анонимные данные с вашего сайта?" + +#: inc/admin/ui/notices.php:599 +msgid "This would help us to improve WP Rocket for you in the future." +msgstr "Это позволит улучшить WP Rocket в будущем." + +#: inc/admin/ui/notices.php:605 +msgid "What info will we collect?" +msgstr "Какую информацию мы собираем?" + +#: inc/admin/ui/notices.php:610 +msgid "" +"Below is a detailed view of all data WP Rocket will collect if granted " +"permission. WP Rocket will never transmit any domain names or email " +"addresses (except for license validation), IP addresses, or third-party API " +"keys." +msgstr "" +"Ниже представлен список данных, собираемых плагином WP Rocket, если вы это " +"позволили. Мы никогда не передаем названия доменов, электронные адреса " +"(кроме проверки лицензии), IP или любые API ключи." + +#: inc/admin/ui/notices.php:619 +msgid "Yes, allow" +msgstr "Да, разрешаю" + +#: inc/admin/ui/notices.php:622 +msgid "No, thanks" +msgstr "Нет, спасибо" + +#: inc/admin/ui/notices.php:661 +msgid "Thank you!" +msgstr "Спасибо!" + +#: inc/admin/ui/notices.php:666 +msgid "WP Rocket now collects these metrics from your website:" +msgstr "WP Rocket собирает такие данные с вашего сайта:" + +#: inc/admin/ui/notices.php:704 +#, php-format +msgid "%s: Cache cleared." +msgstr "%s: кэш успешно очищен." + +#: inc/admin/ui/notices.php:711 +#, php-format +msgid "%s: Post cache cleared." +msgstr "%s: кэш записей очищен." + +#: inc/admin/ui/notices.php:718 +#, php-format +msgid "%s: Term cache cleared." +msgstr "%s: очистка кэша категорий." + +#: inc/admin/ui/notices.php:725 +#, php-format +msgid "%s: User cache cleared." +msgstr "%s: очистка кэша пользователей." + +#: inc/admin/ui/notices.php:771 +msgid "Stop Preload" +msgstr "Оставновить предзагрузку" + +#: inc/admin/ui/notices.php:789 +msgid "Force deactivation " +msgstr "Полная деактивация" + +#: inc/admin/ui/notices.php:802 +msgid "The following code should have been written to this file:" +msgstr "Нужно записать следующий код в этот файл:" + +#: inc/admin/ui/notices.php:833 +#, php-format +msgid "%s cannot configure itself due to missing writing permissions." +msgstr "%sнельзя настроить автоматически из-за ошибки записи в файл." + +#: inc/admin/ui/notices.php:839 +#, php-format +msgid "Affected file/folder: %s" +msgstr "Проблемная папка/файл: %s" + +#: inc/classes/admin/Database/class-optimization.php:47 +msgid "Transients" +msgstr "Транзакции" + +#: inc/classes/admin/Database/class-optimization.php:48 +msgid "Tables" +msgstr "Таблицы" + +#: inc/classes/admin/class-logs.php:124 +msgid "The debug file could not be deleted." +msgstr "Невозможно удалить файл отладки." + +#: inc/classes/class-wp-rocket-requirements-check.php:147 +#, php-format +msgid "To function properly, %1$s %2$s requires at least:" +msgstr "Для корректной работы %1$s %2$s требуется хотя бы" + +#: inc/classes/class-wp-rocket-requirements-check.php:151 +#, php-format +msgid "" +"PHP %1$s. To use this WP Rocket version, please ask your web host how to " +"upgrade your server to PHP %1$s or higher." +msgstr "" +"PHP %1$s. Для использования WP Rocket попросите своего хостинг-провайдера " +"установить версию PHP %1$s и выше." + +#: inc/classes/class-wp-rocket-requirements-check.php:156 +#, php-format +msgid "" +"WordPress %1$s. To use this WP Rocket version, please upgrade WordPress to " +"version %1$s or higher." +msgstr "" +"WordPress %1$s. Для использования WP Rocket обновите версию WordPress до " +"%1$s и выше." + +#: inc/classes/class-wp-rocket-requirements-check.php:159 +msgid "" +"If you are not able to upgrade, you can rollback to the previous version by " +"using the button below." +msgstr "" +"Если вы не можете этого сделать, попробуйте использовать более старую версию" +" WP Rocket." + +#: inc/classes/class-wp-rocket-requirements-check.php:161 +#: inc/deprecated/deprecated.php:1947 +#, php-format +msgid "Re-install version %s" +msgstr "Установить версию %s" + +#: inc/classes/dependencies/wp-media/background-processing/wp-background-process.php:439 +#, php-format +msgid "Every %d Minutes" +msgstr "Каждые %d минут" + +#: inc/classes/logger/class-logger.php:254 +#: inc/classes/logger/class-logger.php:286 +msgid "The log file does not exist." +msgstr "Журнал ошибок не существует." + +#: inc/classes/logger/class-logger.php:260 +#: inc/classes/logger/class-logger.php:292 +msgid "The log file could not be read." +msgstr "Невозможно прочитать журнал ошибок." + +#: inc/classes/logger/class-logger.php:279 +msgid "The logs are not saved into a file." +msgstr "Журнал ошибок не записывается в файл." + +#: inc/classes/subscriber/Cache/class-expired-cache-purge-subscriber.php:128 +msgid "WP Rocket Expired Cache Interval" +msgstr "Интервал истёкшего кэша WP Rocket" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:269 +#, php-format +msgid "" +"You are using %1$s to serve WebP images so you do not need to enable this " +"option. If you prefer to have WP Rocket serve WebP for you instead, please " +"disable them from serving in %1$s. %2$sMore info%3$s" +msgid_plural "" +"You are using %1$s to serve WebP images so you do not need to enable this " +"option. If you prefer to have WP Rocket serve WebP for you instead, please " +"disable them from serving in %1$s. %2$sMore info%3$s" +msgstr[0] "" +"Вы используете %1$s для обработки WebP, поэтому не нужно включать эту " +"настройку. Если вы хотите, чтобы WebP обрабатывал WP Rocket, отключите " +"поддержку в %1$s. %2$sПодробнее%3$s" +msgstr[1] "" +"Вы используете %1$s для обработки WebP, поэтому не нужно включать эту " +"настройку. Если вы хотите, чтобы WebP обрабатывал WP Rocket, отключите " +"поддержку в %1$s. %2$sПодробнее%3$s" +msgstr[2] "" +"Вы используете %1$s для обработки WebP, поэтому не нужно включать эту " +"настройку. Если вы хотите, чтобы WebP обрабатывал WP Rocket, отключите " +"поддержку в %1$s. %2$sПодробнее%3$s" +msgstr[3] "" +"Вы используете %1$s для обработки WebP, поэтому не нужно включать эту " +"настройку. Если вы хотите, чтобы WebP обрабатывал WP Rocket, отключите " +"поддержку в %1$s. %2$sПодробнее%3$s" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:280 +msgid "WebP cache is disabled by filter." +msgstr "Кэш WebP отключен фильтром." + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:290 +#: inc/classes/subscriber/Media/class-webp-subscriber.php:316 +#, php-format +msgid "" +"You are using %1$s to convert images to WebP. If you want WP Rocket to serve" +" them for you, activate this option. %2$sMore info%3$s" +msgid_plural "" +"You are using %1$s to convert images to WebP. If you want WP Rocket to serve" +" them for you, activate this option. %2$sMore info%3$s" +msgstr[0] "" +"Вы используете %1$s для конвертации изображений в WebP. Если Вы хотите " +"включить поддержку WebP, включите эту настройку. %2$sПодробнее%3$s" +msgstr[1] "" +"Вы используете %1$s для конвертации изображений в WebP. Если Вы хотите " +"включить поддержку WebP, включите эту настройку. %2$sПодробнее%3$s" +msgstr[2] "" +"Вы используете %1$s для конвертации изображений в WebP. Если Вы хотите " +"включить поддержку WebP, включите эту настройку. %2$sПодробнее%3$s" +msgstr[3] "" +"Вы используете %1$s для конвертации изображений в WebP. Если Вы хотите " +"включить поддержку WebP, включите эту настройку. %2$sПодробнее%3$s" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:302 +#: inc/classes/subscriber/Media/class-webp-subscriber.php:328 +#, php-format +msgid "" +"You are using %1$s to convert images to WebP. WP Rocket will create separate" +" cache files to serve your WebP images. %2$sMore info%3$s" +msgid_plural "" +"You are using %1$s to convert images to WebP. WP Rocket will create separate" +" cache files to serve your WebP images. %2$sMore info%3$s" +msgstr[0] "" +"Вы используете %1$s для конвертации изображений в WebP. WP Rocket включит " +"раздельное кэширование для работы WebP изображений. %2$sПодробнее%3$s" +msgstr[1] "" +"Вы используете %1$s для конвертации изображений в WebP. WP Rocket включит " +"раздельное кэширование для работы WebP изображений. %2$sПодробнее%3$s" +msgstr[2] "" +"Вы используете %1$s для конвертации изображений в WebP. WP Rocket включит " +"раздельное кэширование для работы WebP изображений. %2$sПодробнее%3$s" +msgstr[3] "" +"Вы используете %1$s для конвертации изображений в WebP. WP Rocket включит " +"раздельное кэширование для работы WebP изображений. %2$sПодробнее%3$s" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:349 +#, php-format +msgid "" +"You don’t seem to be using a method to create and serve WebP that we are " +"auto-compatible with. If you are not using WebP do not enable this option. " +"%1$sMore info%2$s" +msgstr "" +"Похоже, у вас не установлен плагин для создания WebP изображений. Если это " +"так, то не включайте эту опцию. %1$sПодробнее%2$s" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:354 +msgid "We have not detected any compatible WebP plugin!" +msgstr "Отсутствуют поддерживаемые плагины для создания WebP!" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:357 +#, php-format +msgid "" +"If you activate this option WP Rocket will create separate cache files to " +"serve WebP images. Any WebP images you have on your site will be served from" +" these files to compatible browsers. If you don’t already have WebP images " +"on your site consider using %1$sImagify%3$s or another supported plugin. " +"%2$sMore info%3$s" +msgstr "" +"Включив эту настройку, WP Rocket создаст раздельный кэш для поддержки WebP " +"изображений. Для корректной работы нужно, чтобы на сайте были WebP " +"изображения созданные плагином %1$sImagify%3$s или другим поддерживаемым. " +"%2$sПодробнее%3$s" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:369 +msgid "WP Rocket will create separate cache files to serve your WebP images." +msgstr "WP Rocket создаст раздельный кэш для поддержки WebP изображений." + +#: inc/classes/subscriber/Tools/class-detect-missing-tags-subscriber.php:151 +#, php-format +msgid "" +"Failed to detect the following requirement in your theme: closing %1$s." +msgid_plural "" +"Failed to detect the following requirements in your theme: closing %1$s." +msgstr[0] "Ошибка определения следующего требования в теме: %1$s." +msgstr[1] "Ошибка определения следующих требований в теме: %1$s." +msgstr[2] "Ошибка определения следующих требований в теме: %1$s." +msgstr[3] "Ошибка определения следующих требований в теме: %1$s." + +#: inc/classes/subscriber/Tools/class-detect-missing-tags-subscriber.php:159 +msgid "" +"https://docs.wp-rocket.me/article/99-pages-not-cached-or-minify-cssjs-not-" +"working/?utm_source=wp_plugin&utm_medium=wp_rocket#theme" +msgstr "" +"https://docs.wp-rocket.me/article/99-pages-not-cached-or-minify-cssjs-not-" +"working/?utm_source=wp_plugin&utm_medium=wp_rocket#theme" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:98 +msgid "monthly" +msgstr "ежемесячно" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:211 +msgid "Database optimization process is running" +msgstr "Оптимизация базы данных в процессе" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:242 +msgid "" +"Database optimization process is complete. Everything was already optimized!" +msgstr "Оптимизация базы данных завершена. Все неполадки устранены." + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:245 +msgid "" +"Database optimization process is complete. List of optimized items below:" +msgstr "Оптимизация базы данных завершена. Список выполненных задач:" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:253 +#, php-format +msgid "%1$d %2$s optimized." +msgstr "%1$d%2$s исправлено." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:116 +#, php-format +msgid "Sucuri cache purge error: %s" +msgstr "Ошибка очистки кэша Sucuri: %s" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:121 +msgid "" +"The Sucuri cache is being cleared. Note that it may take up to two minutes " +"for it to be fully flushed." +msgstr "" +"Кэш Sucuri очищен. Учтите, что может потребоваться около двух минут для " +"полного сброса." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:244 +msgid "Sucuri firewall API key was not found." +msgstr "API ключ безопасности Sucuri не найден." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:256 +msgid "Sucuri firewall API key is invalid." +msgstr "API ключ безопасности Sucuri не верный." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:311 +msgid "Error when contacting Sucuri firewall API." +msgstr "Ошибка связи с Sucuri firewall API." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:324 +#, php-format +msgid "Error when contacting Sucuri firewall API. Error message was: %s" +msgstr "Ошибка связи с Sucuri firewall API. Ответа сервера: %s" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:338 +msgid "Could not get a response from the Sucuri firewall API." +msgstr "Не удалось получить ответ от Sucuri firewall API." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:352 +msgid "Got an invalid response from the Sucuri firewall API." +msgstr "Ошибочный ответ от Sucuri firewall API." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:365 +msgid "The Sucuri firewall API returned an unknown error." +msgstr "Sucuri firewall API вернул неизвестную ошибку." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:368 +#, php-format +msgid "The Sucuri firewall API returned the following error: %s" +msgid_plural "The Sucuri firewall API returned the following errors: %s" +msgstr[0] "Брандмауэр Sucuri вернул следующую ошибку: %s" +msgstr[1] "Брандмауэр Sucuri вернул следующие ошибки: %s" +msgstr[2] "Брандмауэр Sucuri вернул следующие ошибки: %s" +msgstr[3] "Брандмауэр Sucuri вернул следующие ошибки: %s" + +#: inc/classes/traits/trait-updater-api-tools.php:53 +#: inc/deprecated/3.3.php:761 inc/deprecated/3.3.php:770 +#, php-format +msgid "" +"An unexpected error occurred. Something may be wrong with WP-Rocket.me or " +"this server’s configuration. If you continue to have problems, contact support." +msgstr "" +"Непредвиденная ошибка. Что-то пошло не так с сайтом WP-Rocket.me или " +"сервером. Если ошибка появляется часто, свяжитесь с нами." + +#: inc/common/admin-bar.php:125 inc/common/admin-bar.php:293 +#: inc/functions/i18n.php:41 inc/functions/i18n.php:51 +msgid "All languages" +msgstr "Все языки" + +#: inc/common/admin-bar.php:152 +msgid "Clear this post" +msgstr "Очистить этот пост" + +#: inc/common/admin-bar.php:166 +msgid "Purge this URL" +msgstr "Очистить данный URL" + +#: inc/common/admin-bar.php:192 +msgid "Purge OPcache" +msgstr "Очистить OPcache" + +#: inc/common/admin-bar.php:210 +msgid "Clear Cloudflare cache" +msgstr "Очистить кэш Cloudflare" + +#: inc/common/admin-bar.php:228 +msgid "Purge Sucuri cache" +msgstr "Очистить кэш Sucuri" + +#: inc/common/admin-bar.php:251 inc/common/admin-bar.php:305 +#: views/settings/page-sections/dashboard.php:163 +msgid "Preload cache" +msgstr "Начать кэширование" + +#: inc/common/admin-bar.php:330 views/settings/fields/rocket-cdn.php:55 +msgid "Purge RocketCDN cache" +msgstr "Очистить кэш RocketCDN" + +#: inc/common/admin-bar.php:343 views/settings/partials/documentation.php:14 +msgid "Documentation" +msgstr "Документация" + +#: inc/common/purge.php:557 +msgid "OPcache purge failed." +msgstr "Ошибка очистки OPcache" + +#: inc/common/purge.php:562 +msgid "OPcache successfully purged" +msgstr "OPcache успешно очищен" + +#: inc/deprecated/3.2.php:52 views/settings/page-sections/imagify.php:36 +msgid "Activate Imagify" +msgstr "Включить Imagify" + +#: inc/deprecated/3.2.php:52 +msgid "Install Imagify for Free" +msgstr "Установить Imagify" + +#: inc/deprecated/3.2.php:67 +msgid "" +"Speed up your website and boost your SEO by reducing image file sizes " +"without losing quality with Imagify." +msgstr "" +"Ускорьте свой сайт и показатели SEO установив бесплатный плагин Imagify для" +" сжатия фото без потери качества." + +#: inc/deprecated/3.2.php:72 +msgid "More details" +msgstr "Подробнее" + +#: inc/deprecated/3.2.php:228 +#, php-format +msgid "Sitemap preload: %d pages have been cached." +msgstr "Кэширование по карте сайта: %d страниц закэшировано." + +#: inc/deprecated/3.2.php:261 +#, php-format +msgid "" +"Sitemap preload: %d uncached pages have now been preloaded. (refresh to see " +"progress)" +msgstr "Кэширование по карте сайта: %d страниц закэшировано." + +#: inc/deprecated/3.4.php:18 +msgid "Choose a domain from the list" +msgstr "Выберите домен из списка" + +#: inc/deprecated/3.4.php:31 +msgid "No domain available in your Cloudflare account" +msgstr "Нет доступных доменов в Cloudflare аккаунте" + +#: inc/deprecated/3.5.php:81 inc/deprecated/3.5.php:205 +msgid "" +"Curl is disabled on your server. Please ask your host to enable it. This is " +"required for the Cloudflare Add-on to work correctly." +msgstr "" +"Curl отключен на вашем сервере. Попросите техподдержку хостинга включить " +"его. Это нужно для работы дополнения Cloudflare." + +#: inc/deprecated/3.5.php:89 +#, php-format +msgid "" +"Cloudflare email, API key and Zone ID are not set. Read the " +"%1$sdocumentation%2$s for further guidance." +msgstr "" +"Cloudflare email, API ключ и Zone ID не установлены. Прочитайте " +"%1$sдокументацию%2$s для лучшего понимания." + +#: inc/deprecated/3.5.php:216 +#, php-format +msgid "" +"Cloudflare email and API key are not set. Read the %1$sdocumentation%2$s for" +" further guidance." +msgstr "" +"Cloudflare email и API ключ не установлены. Прочитайте %1$sдокументацию%2$s " +"для лучшего понимания." + +#: inc/deprecated/3.5.php:281 +msgid "Connection to Cloudflare failed" +msgstr "Ошибка подключения к Cloudflare" + +#: inc/deprecated/DeprecatedClassTrait.php:54 +#, php-format +msgid "" +"The called class %1$s is deprecated since version %2$s! Use" +" %3$s instead." +msgstr "" +"Класс %1$s уже устарел с версии %2$s! Используйте %3$s " +"взамен." + +#: inc/deprecated/DeprecatedClassTrait.php:65 +#, php-format +msgid "" +"The called class %1$s is deprecated since version %2$s!" +msgstr "Класс %1$s уже устарел с версии %2$s!" + +#: inc/deprecated/deprecated.php:240 +msgid "JS files with Deferred Loading JavaScript" +msgstr "JS файлы с отложенной загрузкой" + +#: inc/deprecated/deprecated.php:293 +msgid "Add URL" +msgstr "Добавить URL" + +#: inc/deprecated/deprecated.php:1277 views/settings/fields/import-form.php:22 +msgid "" +"Before you can upload your import file, you will need to fix the following " +"error:" +msgstr "" +"Прежде чем вы сможете загрузить файл импорта, вам необходимо исправить такие" +" ошибки:" + +#: inc/deprecated/deprecated.php:1288 views/settings/fields/import-form.php:35 +#, php-format +msgid "Choose a file from your computer (maximum size: %s)" +msgstr "Выберите файл на компьютере (максимальный размер: %s)" + +#: inc/deprecated/deprecated.php:1385 +msgid "Your Cloudflare credentials are valid." +msgstr "Ваши данные от Cloudflare верны." + +#: inc/deprecated/deprecated.php:1389 +msgid "Your Cloudflare credentials are invalid!" +msgstr "Вы указали не верные данные от Cloudflare!" + +#: inc/deprecated/deprecated.php:1453 +msgid "Save and optimize" +msgstr "Сохранить и очистить" + +#: inc/deprecated/deprecated.php:1453 +msgid "Optimize" +msgstr "Начать оптимизацию" + +#: inc/deprecated/deprecated.php:1464 inc/deprecated/deprecated.php:1666 +msgctxt "screen-reader-text" +msgid "Note:" +msgstr "Примечание:" + +#: inc/deprecated/deprecated.php:1470 +msgctxt "screen-reader-text" +msgid "Performance tip:" +msgstr "Совет:" + +#: inc/deprecated/deprecated.php:1476 +msgctxt "screen-reader-text" +msgid "Third-party feature detected:" +msgstr "Обнаружен сторонний плагин:" + +#: inc/deprecated/deprecated.php:1488 inc/deprecated/deprecated.php:1672 +msgctxt "screen-reader-text" +msgid "Warning:" +msgstr "Внимание:" + +#: inc/deprecated/deprecated.php:1501 +msgctxt "button text" +msgid "Download settings" +msgstr "Скачать настройки" + +#: inc/deprecated/deprecated.php:1531 +msgid "Replace site's hostname with:" +msgstr "Заменить адреса сайта на:" + +#: inc/deprecated/deprecated.php:1550 inc/deprecated/deprecated.php:1587 +#: inc/deprecated/deprecated.php:1615 views/settings/fields/cnames.php:32 +#: views/settings/fields/cnames.php:64 views/settings/fields/cnames.php:94 +msgid "reserved for" +msgstr "использовать для" + +#: inc/deprecated/deprecated.php:1552 inc/deprecated/deprecated.php:1589 +#: inc/deprecated/deprecated.php:1617 views/settings/fields/cnames.php:35 +#: views/settings/fields/cnames.php:67 views/settings/fields/cnames.php:97 +msgid "All files" +msgstr "Всех файлов" + +#: inc/deprecated/deprecated.php:1564 inc/deprecated/deprecated.php:1594 +#: inc/deprecated/deprecated.php:1622 views/settings/fields/cnames.php:47 +#: views/settings/fields/cnames.php:79 views/settings/fields/cnames.php:109 +msgid "Images" +msgstr "Изображений" + +#: inc/deprecated/deprecated.php:1635 views/settings/fields/cnames.php:120 +msgid "Add CNAME" +msgstr "Добавить CNAME" + +#: inc/deprecated/deprecated.php:1706 views/settings/partials/sidebar.php:16 +msgid "Watch the video" +msgstr "Посмотреть видео" + +#: inc/deprecated/deprecated.php:1771 +msgid "Basic" +msgstr "Основное" + +#: inc/deprecated/deprecated.php:1772 +msgid "Static Files" +msgstr "Файлы" + +#: inc/deprecated/deprecated.php:1774 +msgid "Advanced" +msgstr "Расширенное" + +#: inc/deprecated/deprecated.php:1944 +#, php-format +msgid "" +"%1$s %2$s requires at least PHP %3$s to function properly. To use this " +"version, please ask your web host how to upgrade your server to PHP %3$s or " +"higher. If you are not able to upgrade, you can rollback to the previous " +"version by using the button below." +msgstr "" +"%1$s%2$sтребует наличия версии PHP не ниже %3$s. Чтобы использовать эту " +"функцию, обратитесь к хостеру с просьбой повысить версию PHP до %3$s и выше." +" В противном случае, используйте старую версию плагина." + +#: inc/functions/admin.php:23 +msgid "" +"There seems to be an issue validating your license. Please see the error " +"message below." +msgid_plural "" +"There seems to be an issue validating your license. You can see the error " +"messages below." +msgstr[0] "" +"Произошла ошибка с проверкой вашей лицензии. Ниже содержится текст ошибки." +msgstr[1] "" +"Произошли ошибки с проверкой вашей лицензии. Ниже содержится текст ошибки." +msgstr[2] "" +"Произошли ошибки с проверкой вашей лицензии. Ниже содержится текст ошибки." +msgstr[3] "" +"Произошли ошибки с проверкой вашей лицензии. Ниже содержится текст ошибки." + +#: inc/functions/admin.php:363 +msgid "Server type:" +msgstr "Тип сервера:" + +#: inc/functions/admin.php:372 +msgid "PHP version number:" +msgstr "Версия PHP:" + +#: inc/functions/admin.php:381 +msgid "WordPress version number:" +msgstr "Версия WordPress:" + +#: inc/functions/admin.php:390 +msgid "WordPress multisite:" +msgstr "WordPress сеть:" + +#: inc/functions/admin.php:399 +msgid "Current theme:" +msgstr "Текущая тема:" + +#: inc/functions/admin.php:408 +msgid "Current site language:" +msgstr "Текущий язык сайта:" + +#: inc/functions/admin.php:417 +msgid "Active plugins:" +msgstr "Активные плагины:" + +#: inc/functions/admin.php:420 +msgid "Plugin names of all active plugins" +msgstr "Названия всех активных плагинов" + +#: inc/functions/admin.php:426 +msgid "Anonymized WP Rocket settings:" +msgstr "Анонимные данные WP Rocket:" + +#: inc/functions/admin.php:429 +msgid "Which WP Rocket settings are active" +msgstr "Какие настройки WP Rocket активны" + +#: inc/functions/options.php:549 inc/functions/options.php:588 +msgid "" +"License validation failed. Our server could not resolve the request from " +"your website." +msgstr "" +"Ошибка проверки лицензии. Наш сервер на распознал запрос с вашего сайта." + +#: inc/functions/options.php:549 inc/functions/options.php:588 +#, php-format +msgid "" +"Try clicking %1$sSave Changes%2$s below. If the error persists, follow " +"%3$sthis guide%4$s." +msgstr "" +"Нажмите %1$sСохранить изменения%2$s ниже. Если ошибка повториться, следуйте " +"%3$sэтой инструкции%4$s." + +#: inc/functions/options.php:565 +msgid "" +"License validation failed. You may be using a nulled version of the plugin. " +"Please do the following:" +msgstr "" +"Ошибка подтверждения лицензии. Возможно, вы используете взломанный плагин. " +"Сделайте следующее:" + +#: inc/functions/options.php:565 inc/functions/options.php:607 +#, php-format +msgid "Login to your WP Rocket %1$saccount%2$s" +msgstr "%1$sВойдите%2$s в свой аккаунт WP Rocket." + +#: inc/functions/options.php:565 inc/functions/options.php:607 +msgid "Download the zip file" +msgstr "Скачать zip-архив" + +#: inc/functions/options.php:565 inc/functions/options.php:607 +msgid "Reinstall" +msgstr "Переустановить" + +#: inc/functions/options.php:565 +#, php-format +msgid "" +"If you do not have a WP Rocket account, please %1$spurchase a license%2$s." +msgstr "Если у вас нет аккаунта WP Rocket, вы можете %1$sкупить лицензию%2$s." + +#: inc/functions/options.php:573 +msgid "" +"License validation failed. This user account does not exist in our database." +msgstr "Ошибка регистрации. Такого аккаунта нет в нашей базе данных." + +#: inc/functions/options.php:573 +msgid "To resolve, please contact support." +msgstr "Для решения свяжитесь с техподдержкой." + +#: inc/functions/options.php:581 +msgid "License validation failed. This user account is blocked." +msgstr "Ваша лицензия не прошла проверку. Аккаунт заблокирован." + +#: inc/functions/options.php:581 +#, php-format +msgid "Please see %1$sthis guide%2$s for more info." +msgstr "Посмотрите %1$sэту справку%2$s для подробной информации." + +#: inc/functions/options.php:601 +msgid "Your license is not valid." +msgstr "Ваша лицензия не валидна." + +#: inc/functions/options.php:601 +#, php-format +msgid "Make sure you have an active %1$sWP Rocket license%2$s." +msgstr "Убедитесь, что у вас есть %1$sактивная лицензия%2$s." + +#: inc/functions/options.php:603 +msgid "You have added as many sites as your current license allows." +msgstr "Вы добавили максимальное допустимое число сайтов." + +#: inc/functions/options.php:603 +#, php-format +msgid "" +"Upgrade your %1$saccount%2$s or %3$stransfer your license%2$s to this " +"domain." +msgstr "" +"Обновите %1$sтарифный план%2$s либо %3$sперенесите лицензию%2$s на этот " +"домен." + +#: inc/functions/options.php:605 +msgid "This website is not allowed." +msgstr "Этот сайт не разрешен." + +#: inc/functions/options.php:605 +#, php-format +msgid "Please %1$scontact support%2$s." +msgstr "Свяжитесь со %1$sслужбой поддержки%2$s." + +#: inc/functions/options.php:607 +msgid "This license key is not recognized." +msgstr "Лицензионный ключ не распознан." + +#: inc/functions/options.php:607 +#, php-format +msgid "If the issue persists, please %1$scontact support%2$s." +msgstr "В этом случае свяжитесь со %1$sслужбой поддержки%2$s." + +#: inc/functions/options.php:613 +#, php-format +msgid "License validation failed: %s" +msgstr "Ошибка лицензирования: %s" + +#: inc/vendors/classes/class-imagify-partner.php:531 +msgid "Plugin installed successfully." +msgstr "Плагин установлен успешно." + +#: inc/vendors/classes/class-imagify-partner.php:532 +msgid "Sorry, you are not allowed to install plugins on this site." +msgstr "Извините, вы не можете устанавливать плагины на этом сайте." + +#: inc/vendors/classes/class-imagify-partner.php:533 +msgid "Sorry, you are not allowed to do that." +msgstr "Извините, у вас нет прав для этого действия." + +#: inc/vendors/classes/class-imagify-partner.php:534 +msgid "Plugin install failed." +msgstr "Ошибка установки плагина." + +#: inc/vendors/classes/class-imagify-partner.php:535 +msgid "Go back" +msgstr "Назад" + +#: views/cpcss/activate-cpcss-mobile.php:13 +msgid "Optimize CSS delivery for mobile" +msgstr "Оптимизировать доставку CSS на мобильных устройствах" + +#: views/cpcss/activate-cpcss-mobile.php:14 +msgid "" +"Your website currently uses the same Critical Path CSS for both desktop and " +"mobile." +msgstr "" +"Ваш сайт использует общие критические CSS для компьютерной и мобильной " +"версий." + +#: views/cpcss/activate-cpcss-mobile.php:15 +msgid "Click the button to enable mobile-specific CPCSS for your site." +msgstr "Нажмите на кнопку для включения раздельных критических CSS." + +#: views/cpcss/activate-cpcss-mobile.php:20 +#: views/settings/enable-google-fonts.php:19 +#, php-format +msgid "" +"This is a one-time action and this button will be removed afterwards. " +"%1$sMore info%2$s" +msgstr "" +"Это единоразовое действие и после выполнения кнопка исчезнет. " +"%1$sПодробнее%2$s" + +#: views/cpcss/activate-cpcss-mobile.php:30 +#, php-format +msgid "" +"Your site is now using mobile-specific critical path CSS. %1$sMore info%2$s" +msgstr "Ваш сайт использует мобильные критические CSS. %1$sПодробнее%2$s" + +#: views/cpcss/activate-cpcss-mobile.php:39 +msgid "Generate Mobile Specific CPCSS" +msgstr "Создать Мобильные CPCSS" + +#: views/cpcss/metabox/container.php:19 +msgid "Critical Path CSS" +msgstr "Критические CSS:" + +#: views/cpcss/metabox/generate.php:23 +#, php-format +msgid "Generate specific Critical Path CSS for this post. %1$sMore info%2$s" +msgstr "" +"Создать специфические критические CSS для этой записи. %1$sПодробнее%2$s" + +#: views/cpcss/metabox/generate.php:33 +#, php-format +msgid "This post uses specific Critical Path CSS. %1$sMore info%2$s" +msgstr "" +"Эта запись использует специфические критические CSS. %1$sПодробнее%2$s" + +#: views/cpcss/metabox/generate.php:56 +msgid "Revert back to the default CPCSS" +msgstr "Откатиться к обычным критическим CSS" + +#: views/deactivation-intent/form.php:21 +msgid "Return" +msgstr "Вернуться" + +#: views/deactivation-intent/form.php:22 +msgid "WP Rocket feedback" +msgstr "Отзыв о WP Rocket" + +#: views/deactivation-intent/form.php:24 +msgid "Close" +msgstr "Закрыть" + +#: views/deactivation-intent/form.php:28 +msgid "May we have a little info about why you are deactivating?" +msgstr "Почему Вы решили отключить WP Rocket?" + +#: views/deactivation-intent/form.php:35 +#, php-format +msgid "%1$sIt is a temporary deactivation.%2$s I am just debugging an issue." +msgstr "%1$sЭто временное отключение%2$s. Сайт находится в разработке." + +#: views/deactivation-intent/form.php:44 +#, php-format +msgid "The plugin %1$sbroke my layout%2$s or some functionality." +msgstr "Плагин %1$sнарушает шаблон%2$s или другой функционал." + +#: views/deactivation-intent/form.php:53 +#, php-format +msgid "My PageSpeed or GTMetrix %1$sscore did not improve.%2$s" +msgstr "Мои показатели PageSpeed или GTMetrix %1$sне улучшились%2$s." + +#: views/deactivation-intent/form.php:59 +msgid "I did not notice a difference in loading time." +msgstr "Я не заметил ускорения сайта." + +#: views/deactivation-intent/form.php:66 +#, php-format +msgid "The plugin is %1$stoo complicated to configure.%2$s" +msgstr "Плагин %1$sслишком сложный в настройке%2$s." + +#: views/deactivation-intent/form.php:72 +msgid "My host already has its own caching system." +msgstr "Я уже использую плагин для кэширования." + +#: views/deactivation-intent/form.php:74 +msgid "What is the name of your web host?" +msgstr "Пожалуйста, напишите какой" + +#: views/deactivation-intent/form.php:79 +msgid "Other" +msgstr "Другое" + +#: views/deactivation-intent/form.php:81 +msgid "" +"Let us know why you are deactivating WP Rocket so we can improve the plugin" +msgstr "" +"Пожалуйста, напишите что не так, чтобы мы могли улучшить WP Rocket для Вас." + +#: views/deactivation-intent/form.php:89 +msgid "The plugin broke my layout or some functionality" +msgstr "Плагин портит внешний вид и функционал сайта" + +#: views/deactivation-intent/form.php:90 +msgid "" +"This type of issue can usually be fixed by deactivating some options in WP " +"Rocket." +msgstr "Эту ошибку можно исправить отключив несколько настроек в WP Rocket." + +#: views/deactivation-intent/form.php:91 +msgid "" +"Click \"Apply Safe Mode\" to quickly disable LazyLoad, File Optimization, " +"Embeds and CDN options. Then check your site to see if the issue has " +"resolved." +msgstr "" +"Нажмите Включить безопасный режим чтобы отключить LazyLoad, оптимизацию " +"файлов, вставок и CDN. Затем проверьте сайт на наличие ошибок." + +#: views/deactivation-intent/form.php:93 +msgid "Apply safe mode" +msgstr "Включить безопасный режим" + +#: views/deactivation-intent/form.php:96 +msgid "Safe mode applied." +msgstr "Безопасный режим включен." + +#: views/deactivation-intent/form.php:97 +msgid "Review your site in a private/logged out browser window." +msgstr "Посетите свой сайт как гость в режиме инкогнито (приватной вкладки)." + +#: views/deactivation-intent/form.php:102 +#, php-format +msgid "" +"Is the issue fixed? Now you can reactivate options one at a time to " +"determine which one caused the problem. %1$sMore info%2$s" +msgstr "" +"Проблема решена? Теперь можно включать настройки по одной, чтобы выявить не " +"работающую. %1$sПодробнее%2$s" + +#: views/deactivation-intent/form.php:107 +msgid "My PageSpeed or GT Metrix score did not improve" +msgstr "Мои показатели PageSpeed или GT Metrix не улучшились" + +#: views/deactivation-intent/form.php:108 +msgid "" +"WP Rocket makes your site faster. The PageSpeed grade or GTMetrix score are " +"not indicators of speed. Neither your real visitors, nor Google will ever " +"see your website’s “grade”. Speed is the only metric that matters for SEO " +"and conversions." +msgstr "" +"WP Rocket ускоряет ваш сайт. Результаты PageSpeed или GTMetrix не являются " +"показателями скорости. Посетители и Google никогда не смогут " +"\"почувствовать\" скорость сайта. Это важно лишь для СЕО и конверсии." + +#: views/deactivation-intent/form.php:109 +msgid "Yoast, the expert on all things related to SEO for WordPress states:" +msgstr "Эксперты из Yoast, плагина для СЕО-оптимизации говорят:" + +#: views/deactivation-intent/form.php:110 +msgid "" +"[Google] just looks at how fast your website loads for users, so you don’t " +"have to obsess over that specific score. You have to make sure your website " +"is as fast as you can get it." +msgstr "" +"[Google] просто смотрит, насколько быстро загружается сайт для " +"пользователей, поэтому вам не нужно стремиться достичь какого-то " +"определенного показателя. Просто убедитесь, что сайт действительно быстрый." + +#: views/deactivation-intent/form.php:116 +#, php-format +msgid "" +"How to measure the load time of your site: %1$shttps://wp-rocket.me/blog" +"/correctly-measure-websites-page-load-time/%2$s" +msgstr "" +"Как измерить скорость загрузки сайта: %1$shttps://wp-rocket.me/blog" +"/correctly-measure-websites-page-load-time/%2$s" + +#: views/deactivation-intent/form.php:122 +#, php-format +msgid "" +"Why you should not be chasing a PageSpeed score: %1$shttps://wp-" +"rocket.me/blog/the-truth-about-google-pagespeed-insights/%2$s" +msgstr "" +"Почему не стоит обращать внимание на показатели PageSpeed: %1$shttps://wp-" +"rocket.me/blog/the-truth-about-google-pagespeed-insights/%2$s" + +#: views/deactivation-intent/form.php:127 +msgid "I did not notice a difference in loading time" +msgstr "Я не заметил разницы во времени загрузки" + +#: views/deactivation-intent/form.php:128 +msgid "" +"Make sure you look at your site while logged out to see the fast, cached " +"pages!" +msgstr "Убедитесь, что вы просматриваете сайт как гость." + +#: views/deactivation-intent/form.php:132 +#, php-format +msgid "" +"The best way to see the improvement WP Rocket provides is to perform speed " +"tests. Follow this guide to correctly measure the load time of your website:" +" %1$shttps://wp-rocket.me/blog/correctly-measure-websites-page-load-" +"time/%2$s" +msgstr "" +"Лучший способ, проверить результаты работы WP Rocket это использовать тест " +"скорости. Здесь описано, как правильно проводить эту процедуру: %1$shttps" +"://wp-rocket.me/blog/correctly-measure-websites-page-load-time/%2$s" + +#: views/deactivation-intent/form.php:137 +msgid "The plugin is too complicated to configure" +msgstr "Плагин слишком сложный в настройке" + +#: views/deactivation-intent/form.php:138 +msgid "We are sorry to hear you are finding it difficult to use WP Rocket." +msgstr "Нам печально слышать, что WP Rocket вызвал у вас трудности." + +#: views/deactivation-intent/form.php:139 +#, php-format +msgid "" +"WP Rocket is the only caching plugin that provides 80% of best practices in " +"speed optimization, by default. That means you do not have to do anything " +"besides activate WP Rocket and your site will already be faster!" +msgstr "" +"WP Rocket использует 80% лучших наработок в области оптимизации. Это значит," +" что вам не нужно проводить тонких настроек - сайт станет быстрее сразу " +"после активации плагина." + +#: views/deactivation-intent/form.php:140 +msgid "" +"The additional options are not required for a fast site, they are for fine-" +"tuning." +msgstr "Дополнительные настройки не обязательны и нужны для экспериментов." + +#: views/deactivation-intent/form.php:144 +#, php-format +msgid "" +"To see the benefit WP Rocket is already providing, measure the speed of your" +" site using a tool like Pingdom: %1$shttps://wp-rocket.me/blog/correctly-" +"measure-websites-page-load-time/%2$s" +msgstr "" +"Чтобы увидеть преимущества WP Rocket, проверьте скорость сайта с помощью " +"инструментов по типу Pingdom: %1$shttps://wp-rocket.me/blog/correctly-" +"measure-websites-page-load-time/%2$s" + +#: views/deactivation-intent/form.php:151 +msgid "Send & Deactivate" +msgstr "Отправить и отключить" + +#: views/deactivation-intent/form.php:152 +msgid "Cancel" +msgstr "Отмена" + +#: views/deactivation-intent/form.php:154 +msgid "Skip & Deactivate" +msgstr "Отключить" + +#: views/settings/enable-google-fonts.php:13 +msgid "Enable Google Font Optimization" +msgstr "Включить оптимизацию Google Шрифтов" + +#: views/settings/enable-google-fonts.php:14 +msgid "" +"Improves font performance and combines multiple font requests to reduce the " +"number of HTTP requests." +msgstr "" +"Оптимизирует подключаемые шрифты и объединяет их в один запрос для " +"уменьшения HTTP запросов." + +#: views/settings/enable-google-fonts.php:29 +#, php-format +msgid "" +"Google Fonts Optimization is now enabled for your site. %1$sMore info%2$s" +msgstr "Оптимизация Google Шрифтов включена. %1$sПодробнее%2$s" + +#: views/settings/enable-google-fonts.php:38 +msgid "Optimize Google Fonts" +msgstr "Оптимизация Google Fonts" + +#: views/settings/fields/cache-lifespan.php:26 +msgid "Clear cache after" +msgstr "Очистить кэш после" + +#: views/settings/fields/cnames.php:49 views/settings/fields/cnames.php:81 +#: views/settings/fields/cnames.php:111 +msgid "CSS & JavaScript" +msgstr "CSS и JavaScript" + +#: views/settings/fields/cnames.php:50 views/settings/fields/cnames.php:82 +#: views/settings/fields/cnames.php:112 +msgid "JavaScript" +msgstr "JavaScript" + +#: views/settings/fields/cnames.php:51 views/settings/fields/cnames.php:83 +#: views/settings/fields/cnames.php:113 +msgid "CSS" +msgstr "CSS" + +#: views/settings/fields/import-form.php:29 +msgid "Import settings" +msgstr "Импорт настроек" + +#: views/settings/fields/one-click-addon.php:40 +#: views/settings/fields/rocket-addon.php:31 +#: views/settings/fields/sliding-checkbox.php:25 views/settings/page.php:55 +msgctxt "Active state of checkbox" +msgid "On" +msgstr "Да" + +#: views/settings/fields/one-click-addon.php:41 +#: views/settings/fields/rocket-addon.php:32 +#: views/settings/fields/sliding-checkbox.php:26 views/settings/page.php:56 +msgctxt "Inactive state of checkbox" +msgid "Off" +msgstr "Нет" + +#: views/settings/fields/one-click-addon.php:42 +#: views/settings/fields/rocket-addon.php:33 +msgid "Add-on status" +msgstr "Состояние" + +#: views/settings/fields/rocket-addon.php:56 +msgid "Modify options" +msgstr "Настройка" + +#: views/settings/fields/rocket-cdn.php:29 +#: views/settings/fields/rocket-cdn.php:41 +msgid "CDN CNAME" +msgstr "CDN CNAME" + +#: views/settings/fields/rocket-cdn.php:62 +#, php-format +msgid "Purges RocketCDN cached resources for your website. %s" +msgstr "Очищает кэш RocketCDN для вашего сайта. %s" + +#: views/settings/fields/rocket-cdn.php:63 +#: views/settings/page-sections/cloudflare.php:36 +#: views/settings/page-sections/sucuri.php:37 +msgid "Learn more" +msgstr "Подробнее" + +#: views/settings/fields/rocket-cdn.php:72 +msgid "Clear all RocketCDN cache files" +msgstr "Очистить все файлы RocketCDN" + +#: views/settings/page-sections/cloudflare.php:27 +msgid "Cloudflare Cache" +msgstr "Cloudflare кэш" + +#: views/settings/page-sections/cloudflare.php:35 +#: views/settings/page-sections/sucuri.php:36 +#, php-format +msgid "Purges cached resources for your website. %s" +msgstr "Очистка кэшированых ресурсов. %s" + +#: views/settings/page-sections/cloudflare.php:36 +msgid "https://support.cloudflare.com/hc/en-us/articles/200169246" +msgstr "https://support.cloudflare.com/hc/en-us/articles/200169246" + +#: views/settings/page-sections/cloudflare.php:45 +msgid "Clear all Cloudflare cache files" +msgstr "Удалить кэш Cloudflare" + +#: views/settings/page-sections/dashboard.php:38 +msgid "Congratulations!" +msgstr "Поздравляем!" + +#: views/settings/page-sections/dashboard.php:40 +msgid "WP Rocket is now activated and already working for you." +msgstr "WP Rocket активирован и уже работает на Вас." + +#: views/settings/page-sections/dashboard.php:42 +msgid "Your website should be loading faster now!" +msgstr "Теперь Ваш сайт будет грузиться быстрее!" + +#: views/settings/page-sections/dashboard.php:44 +#, php-format +msgid "" +"To guarantee fast websites, WP Rocket applies 80% of web performance best " +"practices." +msgstr "" +"Для гарантированного эффекта WP Rocket использует 80% лучших наработок." + +#: views/settings/page-sections/dashboard.php:44 +msgid "" +"We also enable options that provide immediate benefits to your website." +msgstr "Мы также активировали настройки, которые гарантированно ускорят сайт." + +#: views/settings/page-sections/dashboard.php:45 +msgid "Continue to the options to further optimize your site!" +msgstr "Для лучшего ускорения используйте ручную настройку." + +#: views/settings/page-sections/dashboard.php:62 +msgid "My Account" +msgstr "Мой профиль" + +#: views/settings/page-sections/dashboard.php:68 +msgid "Refresh info" +msgstr "Обновить" + +#: views/settings/page-sections/dashboard.php:93 +msgid "Expiration Date" +msgstr "Действительно до" + +#: views/settings/page-sections/dashboard.php:103 +msgid "View my account" +msgstr "Просмотр профиля" + +#: views/settings/page-sections/dashboard.php:130 +msgid "Quick Actions" +msgstr "Быстрые действия" + +#: views/settings/page-sections/dashboard.php:137 +msgid "Remove all cached files" +msgstr "Удалить все файлы кэша" + +#: views/settings/page-sections/dashboard.php:157 +msgid "Start cache preloading" +msgstr "Начать кэширование страниц" + +#: views/settings/page-sections/dashboard.php:183 +msgid "Purge OPCache content" +msgstr "Очистить OPCache данные" + +#: views/settings/page-sections/dashboard.php:189 +msgid "Purge OPCache" +msgstr "Очистить OPcache" + +#: views/settings/page-sections/dashboard.php:200 +#: views/settings/page-sections/dashboard.php:206 +msgid "Regenerate Critical CSS" +msgstr "Пересоздать критический CSS" + +#: views/settings/page-sections/dashboard.php:223 +msgid "Frequently Asked Questions" +msgstr "Часто задаваемые вопросы" + +#: views/settings/page-sections/dashboard.php:236 +msgid "Still cannot find a solution?" +msgstr "Не нашли ответа на вопрос?" + +#: views/settings/page-sections/dashboard.php:237 +msgid "" +"Submit a ticket and get help from our friendly and knowledgeable Rocketeers." +msgstr "Создайте тикет и получите помощь от нашего дружелюбного сообщества." + +#: views/settings/page-sections/dashboard.php:245 +msgid "Ask support" +msgstr "Поддержка" + +#: views/settings/page-sections/database.php:25 +msgid "Backup your database before you run a cleanup!" +msgstr "Сделайте резервную копию базы данных перед очисткой!" + +#: views/settings/page-sections/database.php:26 +msgid "" +"Once a database optimization has been performed, there is no way to undo it." +msgstr "Отменить результаты очистки и оптимизации базы данных невозможно." + +#: views/settings/page-sections/database.php:28 +msgid "Save Changes and Optimize" +msgstr "Сохранить и оптимизировать" + +#: views/settings/page-sections/imagify.php:21 +#, php-format +msgid "" +"%1$sWP ROCKET%2$s created %3$sIMAGIFY%4$s %1$sfor best-in-class image " +"optimization.%2$s" +msgstr "" +"%1$sWP ROCKET%2$s создали %3$sIMAGIFY%4$s%1$s для лучшей оптимизации " +"изображений.%2$s" + +#: views/settings/page-sections/imagify.php:24 +msgid "" +"Compress image to make your website faster, all while maintaining image " +"quality." +msgstr "Сожмите фото для ускорения сайта, не теряя качество изображений." + +#: views/settings/page-sections/imagify.php:25 +msgid "More on Imagify:" +msgstr "Больше о Imagify:" + +#: views/settings/page-sections/imagify.php:27 +msgid "Imagify Plugin Page" +msgstr "Страница плагина Imagify" + +#: views/settings/page-sections/imagify.php:28 +msgid "Imagify Website" +msgstr "Веб-сайт Imagify" + +#: views/settings/page-sections/imagify.php:29 +msgid "Review of Image Compression Plugins" +msgstr "Обзор на плагины для сжатия фото" + +#: views/settings/page-sections/imagify.php:38 +msgid "Install Imagify" +msgstr "Установить Imagify" + +#: views/settings/page-sections/license.php:22 +msgid "WP Rocket was not able to automatically validate your license." +msgstr "WP Rocket не смог проверить вашу лицензию автоматически." + +#: views/settings/page-sections/license.php:29 +#, php-format +msgid "Follow this %1$s, or contact %2$s to get the engine started." +msgstr "Следуйте этой %1$s либо напишите в %2$s для запуска." + +#: views/settings/page-sections/license.php:32 +#, php-format +msgid "%1$s%2$s%3$stutorial%4$s" +msgstr "%1$s%2$s%3$sиструкции%4$s" + +#: views/settings/page-sections/license.php:34 +msgid "" +"https://docs.wp-rocket.me/article/100-resolving-problems-with-license-" +"validation/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://docs.wp-rocket.me/article/100-resolving-problems-with-license-" +"validation/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: views/settings/page-sections/license.php:40 +#, php-format +msgid "%1$s%2$s%3$ssupport%4$s" +msgstr "%1$s%2$s%3$sподдержку%4$s" + +#: views/settings/page-sections/sucuri.php:46 +msgid "Clear all Sucuri cache files" +msgstr "Очистить все файлы Sucuri кэша" + +#: views/settings/page-sections/tools.php:20 +#, php-format +msgid "Files size: %1$s. Number of entries: %2$s." +msgstr "Размер файлов: %1$s. Количество записей: %2$s." + +#: views/settings/page-sections/tools.php:23 +#, php-format +msgid "%1$sDownload the file%2$s." +msgstr "%1$sСкачать файл%2$s." + +#: views/settings/page-sections/tools.php:26 +#, php-format +msgid "%1$sDelete the file%2$s." +msgstr "%1$sУдалить файл%2$s." + +#: views/settings/page-sections/tools.php:37 +msgid "Export settings" +msgstr "Экспорт настроек" + +#: views/settings/page-sections/tools.php:38 +msgid "Download a backup file of your settings" +msgstr "Скачать файл настроек для использования на другом сайте" + +#: views/settings/page-sections/tools.php:46 +msgid "Download settings" +msgstr "Скачать настройки" + +#: views/settings/page-sections/tools.php:60 +msgid "Rollback" +msgstr "Восстановление" + +#: views/settings/page-sections/tools.php:64 +#, php-format +msgid "Has version %s caused an issue on your website?" +msgstr "Возникли проблемы с версией %s?" + +#: views/settings/page-sections/tools.php:69 +#, php-format +msgid "" +"You can rollback to the previous major version here.%sThen send us a support" +" request." +msgstr "" +"Вы можете откатиться к предыдущей версии здесь.%sПосле этого отправьте нам " +"отчёт об ошибке." + +#: views/settings/page-sections/tools.php:80 +#, php-format +msgid "Reinstall version %s" +msgstr "Установить версию %s" + +#: views/settings/page-sections/tools.php:106 +msgid "Debug mode" +msgstr "Режим отладки" + +#: views/settings/page-sections/tools.php:111 +msgid "Create a debug log file." +msgstr "Создать отладочный файл." + +#: views/settings/page-sections/tutorials.php:13 +#: views/settings/partials/getting-started.php:18 +msgid "Getting Started" +msgstr "Начало работы" + +#: views/settings/page-sections/tutorials.php:15 +msgid "Getting Started with WP Rocket" +msgstr "Начало работы с WP Rocket" + +#: views/settings/page-sections/tutorials.php:16 +#: views/settings/partials/getting-started.php:12 +msgid "Finding the Best Settings for Your Site" +msgstr "Поиск лучших настроек для вашего сайта" + +#: views/settings/page-sections/tutorials.php:17 +#: views/settings/partials/getting-started.php:13 +msgid "How to Check if WP Rocket is Caching Your Site" +msgstr "Как убедиться, что WP Rocket кэширует сайт" + +#: views/settings/page-sections/tutorials.php:18 +#: views/settings/partials/getting-started.php:14 +msgid "How to Measure the Speed of Your Site" +msgstr "Как измерить скорость работы сайта" + +#: views/settings/page-sections/tutorials.php:24 +msgid "Troubleshooting Display Issues with File Optimization" +msgstr "Ошибки отображения из-за файловой оптимизации" + +#: views/settings/page-sections/tutorials.php:25 +msgid "How to Find the Right JavaScript to Exclude" +msgstr "Какие JavaScript файлы исключить" + +#: views/settings/page-sections/tutorials.php:26 +msgid "How External Content Slows Your Site" +msgstr "Как внешний контент замедляет ваш сайт" + +#: views/settings/page-sections/tutorials.php:32 +msgid "How Preloading Works" +msgstr "Как работает предзагрузка" + +#: views/settings/page-sections/tutorials.php:38 +msgid "Set Up the Cloudflare Add-on" +msgstr "Установка Cloudflare дополнения" + +#: views/settings/page.php:16 +msgid "WP Rocket Settings" +msgstr "Настройки WP Rocket" + +#: views/settings/page.php:30 +#, php-format +msgid "version %s" +msgstr "Версия %s" + +#: views/settings/page.php:57 +msgid "Show Sidebar" +msgstr "Показывать панель" + +#: views/settings/page.php:76 +msgid "Thanks for choosing to participate in the WP Rocket beta program!" +msgstr "Спасибо за участие в программе бета-тестировщиков WP Rocket!" + +#: views/settings/page.php:77 +msgid "" +"A beta version is usually one that has new features and improvements, but we" +" want to test it a little more before full launch." +msgstr "" +"Бета-версия обычно содержит новые функции и улучшения, которые нужно " +"протестировать перед запуском." + +#: views/settings/page.php:78 +msgid "" +"We’d love it if you took our beta versions for a ride, but please keep in " +"mind that it might be less stable than our other releases. Don’t worry, you " +"can switch back to a full release version at any time." +msgstr "" +"Мы будем рады, если вы станете тестировщиком, но учтите что бета-версии " +"менее стабильны и могут вызывать ошибки. В любом случае, Вы можете всегда " +"переключится на стабильную версию." + +#: views/settings/page.php:79 +msgid "" +"Your mission: please send all feedback about our beta versions, including " +"bug reports, to support@wp-rocket.me" +msgstr "" +"Ваша задача: присылайте все отзывы о бета-версиях, включая отчеты об ошибках" +" на support@wp-rocket.me" + +#: views/settings/page.php:81 +msgid "If you don’t want to join the beta program, simply close this window." +msgstr "" +"Если вы не хотите участвовать в бета-тестировании, просто закройте это окно" + +#: views/settings/page.php:83 +msgid "Activate Rocket Tester" +msgstr "Включить режим тестировщика" + +#: views/settings/page.php:94 +msgid "" +"Below is a detailed view of all data WP Rocket will collect if " +"granted permission." +msgstr "" +"Вот список данных, которые WP Rocket будет собирать для улучшения работы, " +"если вы позволите это делать." + +#: views/settings/page.php:97 +msgid "" +"WP Rocket will never transmit any domain names or email addresses (except " +"for license validation), IP addresses, or third-party API keys." +msgstr "" +"WP Rocket никогда не передает имя домена, email (кроме проверки лицензии), " +"IP адреса и API ключи сторонним людям." + +#: views/settings/page.php:99 +msgid "Activate Rocket analytics" +msgstr "Включить сбор данных" + +#: views/settings/partials/documentation.php:15 +msgid "It is a great starting point to fix some of the most common issues." +msgstr "Большинство проблем описаны в нашей документации." + +#: views/settings/partials/documentation.php:22 +msgid "Read the documentation" +msgstr "Читать документацию" + +#: views/settings/partials/getting-started.php:11 +msgid "What WP Rocket Does For You By Default" +msgstr "Что WP Rocket делает по умолчанию" + +#: views/settings/partials/sidebar.php:12 +msgid "How to correctly measure your website’s loading time" +msgstr "Как правильно измерить скорость работы сайта" + +#: views/settings/partials/sidebar.php:14 +msgid "Check our tutorial and learn how to measure the speed of your site." +msgstr "Посмотрите видео как измерить скорость работы сайта." + +#: views/settings/partials/sidebar.php:19 +msgid "" +"Learn how to use best practices to correctly measure your site's " +"performance." +msgstr "Лучшие решения в плане ускорения работы сайта" + +#: views/settings/partials/sidebar.php:20 +msgid "" +"https://wp-rocket.me/blog/correctly-measure-websites-page-load-" +"time/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://wp-rocket.me/blog/correctly-measure-websites-page-load-" +"time/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: views/settings/partials/sidebar.php:20 +msgid "Read our guide" +msgstr "Читать статью" + +#: views/settings/partials/sidebar.php:23 +msgid "Why Google PageSpeed grade should not matter" +msgstr "Почему не стоит обращать внимание на Google PageSpeed?" + +#: views/settings/partials/sidebar.php:24 +msgid "" +"https://wp-rocket.me/blog/the-truth-about-google-pagespeed-" +"insights/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://wp-rocket.me/blog/the-truth-about-google-pagespeed-" +"insights/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: views/settings/partials/sidebar.php:24 +msgid "Read more" +msgstr "Читать статью" + +#: views/settings/partials/sidebar.php:29 +msgid "You have not activated logged-in user cache." +msgstr "Вы не включили кэширование для пользователей." + +#: views/settings/partials/sidebar.php:30 +msgid "" +"Use a private browser to check your website's speed and visual appearance." +msgstr "" +"Перейдите в режим инкогнито для проверки скорости сайта и внешнего вида." + +#: views/settings/sections/addons-container.php:24 +#: views/settings/sections/fields-container.php:28 +msgid "Need Help?" +msgstr "Нужна помощь?" diff --git a/wp-content/plugins/wp-rocket/languages/rocket-sr.mo b/wp-content/plugins/wp-rocket/languages/rocket-sr.mo new file mode 100644 index 0000000000000000000000000000000000000000..a660d67828c5752b49ee8475196adfc353ce1a57 GIT binary patch literal 8428 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, 2019 +# Marko Nikolic , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: WP Rocket 3.3.7\n" +"Report-Msgid-Bugs-To: http://wp-rocket.me/\n" +"POT-Creation-Date: 2019-08-26 11:14-0400\n" +"PO-Revision-Date: 2019-08-26 15:14+0000\n" +"Last-Translator: Marko Nikolic , 2019\n" +"Language-Team: Serbian (https://www.transifex.com/wp-media/teams/18133/sr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sr\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Generator: Poedit 1.8.11\n" +"X-Poedit-Basepath: ..\n" +"X-Poedit-KeywordsList: __;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c\n" +"X-Poedit-SearchPath-0: .\n" +"X-Poedit-SearchPathExcluded-0: assets\n" +"X-Poedit-SearchPathExcluded-1: src\n" +"X-Poedit-SearchPathExcluded-2: vendor\n" +"X-Poedit-SearchPathExcluded-3: node_modules\n" +"X-Poedit-SearchPathExcluded-4: tests\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Textdomain-Support: yes\n" + +#: inc/3rd-party/hosting/flywheel.php:15 inc/3rd-party/hosting/godaddy.php:15 +#: inc/3rd-party/hosting/o2switch.php:15 +#: inc/3rd-party/hosting/pressidium.php:15 inc/3rd-party/hosting/savvii.php:15 +#: inc/3rd-party/hosting/wp-serveur.php:24 +#: inc/3rd-party/hosting/wpengine.php:15 +#, php-format +msgid "" +"Your site is hosted on %s, we have enabled Varnish auto-purge for " +"compatibility." +msgstr "" + +#: inc/3rd-party/hosting/kinsta.php:150 +#, php-format +msgid "" +"Your installation seems to be missing core Kinsta files managing Cache " +"clearing and CDN, which will prevent your Kinsta installation and WP Rocket " +"from working correctly. Please get in touch with Kinsta support through your" +" %1$sMyKinsta%2$s account to resolve this issue." +msgstr "" + +#: inc/3rd-party/plugins/jetpack.php:86 +msgid "Jetpack XML Sitemaps" +msgstr "JetPack XML mape sajta" + +#: inc/3rd-party/plugins/jetpack.php:88 +msgid "Preload the sitemap from the Jetpack plugin" +msgstr "" + +#: inc/3rd-party/plugins/jetpack.php:96 +#: inc/3rd-party/plugins/seo/all-in-one-seo-pack.php:88 +#: inc/3rd-party/plugins/seo/rank-math-seo.php:34 +#: inc/3rd-party/plugins/seo/seopress.php:85 +#: inc/3rd-party/plugins/seo/the-seo-framework.php:123 +#: inc/3rd-party/plugins/seo/yoast-seo.php:86 +#, php-format +msgid "" +"We automatically detected the sitemap generated by the %s plugin. You can " +"check the option to preload it." +msgstr "" +"Mi automatski detektujemo mapu sajta kreiranu od strane %s dodatka. Možete " +"da izaberete opcije za preload." + +#: inc/3rd-party/plugins/seo/all-in-one-seo-pack.php:86 +msgid "All in One SEO XML sitemap" +msgstr "All In One SEO XML mapa sajta" + +#: inc/3rd-party/plugins/seo/rank-math-seo.php:32 +msgid "Rank Math XML sitemap" +msgstr "" + +#: inc/3rd-party/plugins/seo/seopress.php:83 +msgid "SEOPress XML sitemap" +msgstr "" + +#: inc/3rd-party/plugins/seo/the-seo-framework.php:121 +msgid "The SEO Framework XML sitemap" +msgstr "" + +#: inc/3rd-party/plugins/seo/yoast-seo.php:84 +msgid "Yoast SEO XML sitemap" +msgstr "Yoast SEO XML mapa sajta" + +#: inc/admin/admin.php:13 inc/common/admin-bar.php:311 +#: inc/deprecated/deprecated.php:1789 +msgid "Support" +msgstr "Podrška" + +#: inc/admin/admin.php:15 +msgid "Docs" +msgstr "Dokumentacija" + +#: inc/admin/admin.php:17 inc/common/admin-bar.php:299 +msgid "FAQ" +msgstr "Česta pitanja" + +#: inc/admin/admin.php:19 inc/common/admin-bar.php:46 +msgid "Settings" +msgstr "Podešavanja" + +#: inc/admin/admin.php:64 inc/admin/admin.php:86 inc/admin/admin.php:105 +msgid "Clear this cache" +msgstr "Očisti ovu keš memoriju" + +#: inc/admin/admin.php:249 inc/admin/admin.php:264 +#: inc/classes/class-wp-rocket-requirements-check.php:204 +#: inc/classes/class-wp-rocket-requirements-check.php:214 +#, php-format +msgid "%s Update Rollback" +msgstr "%s Vraćanje Ažuriranja" + +#: inc/admin/admin.php:290 +#, php-format +msgid "%1$sReturn to WP Rocket%2$s or %3$sgo to Plugins page%2$s" +msgstr "" + +#: inc/admin/admin.php:529 +msgid "Settings import failed: you do not have the permissions to do this." +msgstr "" + +#: inc/admin/admin.php:533 +msgid "Settings import failed: no file uploaded." +msgstr "Увоз подешавања није успео: датотека није увезена." + +#: inc/admin/admin.php:537 +msgid "Settings import failed: incorrect filename." +msgstr "Увоз подешавања није успео: погрешно име датотеке." + +#: inc/admin/admin.php:546 +msgid "Settings import failed: incorrect filetype." +msgstr "Увоз подешавања није успео: погрешан тип датотеке." + +#: inc/admin/admin.php:554 +msgid "Settings import failed: " +msgstr "" + +#: inc/admin/admin.php:571 +msgid "Settings import failed: unexpected file content." +msgstr "" + +#: inc/admin/admin.php:592 +msgid "Settings imported and saved." +msgstr "Podešavanja su uvezena i snimljena." + +#: inc/admin/options.php:101 +#, php-format +msgid "Cloudflare development mode error: %s" +msgstr "Cloudflare грешка развојног мода: %s" + +#: inc/admin/options.php:107 +#, php-format +msgid "Cloudflare development mode %s" +msgstr "Cloudflare развојни мод %s" + +#: inc/admin/options.php:124 +#, php-format +msgid "Cloudflare cache level error: %s" +msgstr "Cloudflare грешка нивоа кеширања: %s" + +#: inc/admin/options.php:128 +msgctxt "Cloudflare caching level" +msgid "Standard" +msgstr "Стандардно" + +#: inc/admin/options.php:134 +#, php-format +msgid "Cloudflare cache level set to %s" +msgstr "Cloudflare ниво кеширања: %s" + +#: inc/admin/options.php:146 +#, php-format +msgid "Cloudflare minification error: %s" +msgstr "Cloudflare грешка приликом минификације: %s" + +#: inc/admin/options.php:152 +#, php-format +msgid "Cloudflare minification %s" +msgstr "Cloudflare минификацијa: %s" + +#: inc/admin/options.php:164 +#, php-format +msgid "Cloudflare rocket loader error: %s" +msgstr "Грешка Cloudflare-овог Rocket Loader-а: %s" + +#: inc/admin/options.php:170 +#, php-format +msgid "Cloudflare rocket loader %s" +msgstr "Cloudflare-ов Rocket Loader %s" + +#: inc/admin/options.php:182 +#, php-format +msgid "Cloudflare browser cache error: %s" +msgstr "Грешка Cloudflare-овог кеширања претраживача: %s" + +#: inc/admin/options.php:188 +#, php-format +msgid "Cloudflare browser cache set to %s seconds" +msgstr "Cloudflare-ово кеширање претраживача подешено на %s секунд-и" + +#: inc/admin/options.php:241 inc/classes/admin/settings/class-page.php:692 +msgid "Excluded CSS Files" +msgstr "" + +#: inc/admin/options.php:242 inc/classes/admin/settings/class-page.php:784 +msgid "Excluded Inline JavaScript" +msgstr "" + +#: inc/admin/options.php:243 inc/classes/admin/settings/class-page.php:802 +msgid "Excluded JavaScript Files" +msgstr "" + +#: inc/admin/options.php:244 inc/classes/admin/settings/class-page.php:1128 +msgid "Never Cache URL(s)" +msgstr "" + +#: inc/admin/options.php:245 inc/classes/admin/settings/class-page.php:1144 +msgid "Never Cache User Agent(s)" +msgstr "" + +#: inc/admin/options.php:246 inc/classes/admin/settings/class-page.php:1149 +msgid "Always Purge URL(s)" +msgstr "" + +#: inc/admin/options.php:247 inc/classes/admin/settings/class-page.php:1443 +msgid "Exclude files from CDN" +msgstr "" + +#: inc/admin/options.php:265 +#, php-format +msgid "%1$s: %2$s." +msgstr "" + +#: inc/admin/options.php:275 +msgid "The following pattern is invalid and has been removed:" +msgid_plural "The following patterns are invalid and have been removed:" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: inc/admin/ui/meta-boxes.php:14 inc/admin/ui/notices.php:955 +#: inc/common/admin-bar.php:65 inc/common/admin-bar.php:118 +#: views/settings/page-sections/dashboard.php:115 +msgid "Clear cache" +msgstr "Očisti keš memoriju" + +#: inc/admin/ui/meta-boxes.php:36 +msgid "WP Rocket Options" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:66 +msgid "Never cache this page" +msgstr "Ne keširaj ovu stranu" + +#: inc/admin/ui/meta-boxes.php:70 +msgid "Activate these options on this post:" +msgstr "Aktiviraj sledeće opcije na ovom postu:" + +#: inc/admin/ui/meta-boxes.php:73 +msgid "LazyLoad for images" +msgstr "LazyLoad слика" + +#: inc/admin/ui/meta-boxes.php:74 +msgid "LazyLoad for iframes/videos" +msgstr "LazyLoad iframe-а/видеа" + +#: inc/admin/ui/meta-boxes.php:75 +#: inc/classes/admin/settings/class-page.php:615 +msgid "Minify HTML" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:76 +msgid "Minify/combine CSS" +msgstr "Умањи/комбинуј CSS" + +#: inc/admin/ui/meta-boxes.php:77 +msgid "Minify/combine JS" +msgstr "Умањи/комбинуј ЈS" + +#: inc/admin/ui/meta-boxes.php:78 +#: inc/classes/admin/settings/class-page.php:1413 +#: inc/classes/admin/settings/class-page.php:1424 +#: inc/deprecated/deprecated.php:1775 +msgid "CDN" +msgstr "CDN" + +#: inc/admin/ui/meta-boxes.php:79 +msgid "Optimize CSS Delivery" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:80 +msgid "Defer JS" +msgstr "Одложено учитавање JS кода" + +#: inc/admin/ui/meta-boxes.php:86 +#, php-format +msgid "Activate first the %s option." +msgstr "Prvo aktiviraj %s opciju." + +#: inc/admin/ui/meta-boxes.php:102 +#, php-format +msgid "" +"%1$sNote:%2$s None of these options will be applied if this post has been " +"excluded from cache in the global cache settings." +msgstr "" + +#: inc/admin/ui/notices.php:24 inc/admin/ui/notices.php:34 +#, php-format +msgid "" +"%1$s has not been deactivated due to missing writing permissions.
      \n" +"Make %2$s writeable and retry deactivation, or force deactivation now:" +msgstr "" + +#: inc/admin/ui/notices.php:83 +#, php-format +msgid "" +"%s: One or more plugins have been enabled or disabled, " +"clear the cache if they affect the front end of your site." +msgstr "" + +#: inc/admin/ui/notices.php:196 +#, php-format +msgid "" +"%s: The following plugins are not compatible with this " +"plugin and may cause unexpected results:" +msgstr "" + +#: inc/admin/ui/notices.php:202 +msgid "Deactivate" +msgstr "Deaktiviraj" + +#: inc/admin/ui/notices.php:243 +msgid "" +"WP Rocket Footer JS is not an official add-on. It prevents some options in " +"WP Rocket from working correctly. Please deactivate it if you have problems." +msgstr "" + +#: inc/admin/ui/notices.php:283 +#, php-format +msgid "" +"Endurance Cache is currently enabled, which will conflict with WP Rocket " +"Cache. Please set the Endurance Cache cache level to Off (Level 0) on the " +"%1$sSettings > General%2$s page to prevent any issues." +msgstr "" + +#: inc/admin/ui/notices.php:305 +#, php-format +msgid "" +"%1$s: A custom permalink structure is required for the plugin to work " +"properly. %2$sGo to permalinks settings%3$s" +msgstr "" + +#: inc/admin/ui/notices.php:442 +#, php-format +msgid "" +"%s could not modify the .htaccess file due to missing writing permissions." +msgstr "" + +#: inc/admin/ui/notices.php:448 inc/admin/ui/notices.php:1032 +#, php-format +msgid "Troubleshoot: %1$sHow to make system files writeable%2$s" +msgstr "" + +#: inc/admin/ui/notices.php:450 inc/admin/ui/notices.php:1034 +msgid "" +"https://docs.wp-rocket.me/article/626-how-to-make-system-files-htaccess-wp-" +"config-writeable/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" + +#: inc/admin/ui/notices.php:456 +msgid "" +"Don’t worry, WP Rocket’s page caching and settings will still function " +"correctly." +msgstr "" + +#: inc/admin/ui/notices.php:456 +msgid "" +"For optimal performance, adding the following lines into your .htaccess is " +"recommended (not required):" +msgstr "" + +#: inc/admin/ui/notices.php:600 +#, php-format +msgid "" +"%1$s is good to go! %2$sTest your load time%4$s, or visit your " +"%3$ssettings%4$s." +msgstr "" + +#: inc/admin/ui/notices.php:721 +msgid "" +"Would you allow WP Rocket to collect non-sensitive diagnostic data from this" +" website?" +msgstr "" + +#: inc/admin/ui/notices.php:722 +msgid "This would help us to improve WP Rocket for you in the future." +msgstr "" + +#: inc/admin/ui/notices.php:728 +msgid "What info will we collect?" +msgstr "" + +#: inc/admin/ui/notices.php:733 +msgid "" +"Below is a detailed view of all data WP Rocket will collect if granted " +"permission. WP Rocket will never transmit any domain names or email " +"addresses (except for license validation), IP addresses, or third-party API " +"keys." +msgstr "" + +#: inc/admin/ui/notices.php:742 +msgid "Yes, allow" +msgstr "" + +#: inc/admin/ui/notices.php:745 +msgid "No, thanks" +msgstr "" + +#: inc/admin/ui/notices.php:783 +msgid "Thank you!" +msgstr "" + +#: inc/admin/ui/notices.php:788 +msgid "WP Rocket now collects these metrics from your website:" +msgstr "" + +#: inc/admin/ui/notices.php:825 +#, php-format +msgid "%s: Cache cleared." +msgstr "" + +#: inc/admin/ui/notices.php:830 +#, php-format +msgid "%s: Post cache cleared." +msgstr "" + +#: inc/admin/ui/notices.php:835 +#, php-format +msgid "%s: Term cache cleared." +msgstr "" + +#: inc/admin/ui/notices.php:840 +#, php-format +msgid "%s: User cache cleared." +msgstr "" + +#: inc/admin/ui/notices.php:910 +msgid "" +"The following scheduled event failed to run. This may indicate the CRON " +"system is not running properly, which can prevent some WP Rocket features " +"from working as intended:" +msgid_plural "" +"The following scheduled events failed to run. This may indicate the CRON " +"system is not running properly, which can prevent some WP Rocket features " +"from working as intended:" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: inc/admin/ui/notices.php:919 +msgid "Please contact your host to check if CRON is working." +msgstr "" + +#: inc/admin/ui/notices.php:958 +msgid "Stop Preload" +msgstr "" + +#: inc/admin/ui/notices.php:976 +msgid "Force deactivation " +msgstr "" + +#: inc/admin/ui/notices.php:989 +msgid "The following code should have been written to this file:" +msgstr "" + +#: inc/admin/ui/notices.php:999 views/settings/page-sections/dashboard.php:45 +msgid "Dismiss this notice." +msgstr "" + +#: inc/admin/ui/notices.php:1020 +#, php-format +msgid "%s cannot configure itself due to missing writing permissions." +msgstr "" + +#: inc/admin/ui/notices.php:1026 +#, php-format +msgid "Affected file/folder: %s" +msgstr "" + +#: inc/classes/admin/Database/class-optimization.php:41 +#: inc/classes/admin/settings/class-page.php:1289 +msgid "Revisions" +msgstr "Revizije" + +#: inc/classes/admin/Database/class-optimization.php:42 +#: inc/classes/admin/settings/class-page.php:1299 +msgid "Auto Drafts" +msgstr "Auto Nacrti" + +#: inc/classes/admin/Database/class-optimization.php:43 +#: inc/classes/admin/settings/class-page.php:1309 +msgid "Trashed Posts" +msgstr "" + +#: inc/classes/admin/Database/class-optimization.php:44 +#: inc/classes/admin/settings/class-page.php:1319 +msgid "Spam Comments" +msgstr "" + +#: inc/classes/admin/Database/class-optimization.php:45 +#: inc/classes/admin/settings/class-page.php:1329 +msgid "Trashed Comments" +msgstr "" + +#: inc/classes/admin/Database/class-optimization.php:46 +#: inc/classes/admin/settings/class-page.php:1339 +msgid "Expired transients" +msgstr "Istekli tranzijenti" + +#: inc/classes/admin/Database/class-optimization.php:47 +msgid "Transients" +msgstr "" + +#: inc/classes/admin/Database/class-optimization.php:48 +msgid "Tables" +msgstr "" + +#: inc/classes/admin/class-logs.php:124 +msgid "The debug file could not be deleted." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:212 +#: inc/classes/admin/settings/class-page.php:213 +msgid "Unavailable" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:327 +#: inc/deprecated/deprecated.php:1791 +#: views/settings/page-sections/dashboard.php:72 +msgid "License" +msgstr "Licenca" + +#: inc/classes/admin/settings/class-page.php:344 +msgid "API key" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:359 +msgid "Email address" +msgstr "Емаил адреса" + +#: inc/classes/admin/settings/class-page.php:388 +msgid "Dashboard" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:389 +msgid "Get help, account info" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:398 +msgid "My Status" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:408 views/settings/page.php:71 +msgid "Rocket Tester" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:409 +msgid "I am part of the WP Rocket Beta Testing Program." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:417 views/settings/page.php:89 +msgid "Rocket Analytics" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:419 +#, php-format +msgid "" +"I agree to share anonymous data with the development team to help improve WP" +" Rocket. %1$sWhat info will we collect?%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:447 +msgid "Cache" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:448 +msgid "Basic cache options" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:455 +msgid "Mobile Cache" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:457 +msgid "Speed up your site for mobile visitors." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:462 +msgid "" +"We detected you use a plugin that requires a separate cache for mobile, and " +"automatically enabled this option for compatibility." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:466 +msgid "User Cache" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:469 +#, php-format +msgid "" +"%1$sUser cache%2$s is great when you have user-specific or restricted " +"content on your website." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:477 +msgid "Cache Lifespan" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:480 +#, php-format +msgid "" +"Cache lifespan is the period of time after which all cache files are " +"removed.
      Enable %1$spreloading%2$s for the cache to be rebuilt " +"automatically after lifespan expiration." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:494 +msgid "Enable caching for logged-in WordPress users" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:502 +msgid "Enable caching for mobile devices" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:517 +msgid "Separate cache files for mobile devices" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:519 +#, php-format +msgid "" +"%1$sMobile cache%2$s works safest with both options enabled. When in doubt, " +"keep both." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:535 +msgid "" +"Specify time after which the global cache is cleared
      (0 = unlimited )" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:537 +#, php-format +msgid "" +"Reduce lifespan to 10 hours or less if you notice issues that seem to appear" +" periodically. %1$sWhy?%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:543 +msgid "Minutes" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:544 +msgid "Hours" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:545 +msgid "Days" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:571 +msgid "File Optimization" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:572 +msgid "Optimize CSS & JS" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:579 +msgid "Basic Settings" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:586 +#: inc/classes/admin/settings/class-page.php:596 +#: inc/classes/admin/settings/class-page.php:606 +#, php-format +msgid "" +"%1$s Minification is currently activated in Autoptimize. If" +" you want to use %2$s’s minification, disable those options in Autoptimize." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:589 +msgid "CSS Files" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:599 +msgid "JavaScript Files" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:619 +msgid "Minifying HTML removes whitespace and comments to reduce the size." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:630 +msgid "Combine Google Fonts files" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:631 +msgid "Combining Google Fonts will reduce the number of HTTP requests." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:639 +msgid "Remove query strings from static resources" +msgstr "Uklonite \"query stringove\" sa statičkih resursa" + +#: inc/classes/admin/settings/class-page.php:641 +#, php-format +msgid "" +"Removes the version query string from static files (e.g. style.css?ver=1.0) " +"and encodes it into the filename instead (e.g. style-1.0.css). Can improve " +"your GTMetrix score. %1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:649 +msgid "Minify CSS files" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:650 +msgid "Minify CSS removes whitespace and comments to reduce the file size." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:663 +#: inc/classes/admin/settings/class-page.php:685 +#: inc/classes/admin/settings/class-page.php:755 +#: inc/classes/admin/settings/class-page.php:777 +msgid "This could break things!" +msgstr "Ово би могло да ... ствари" + +#: inc/classes/admin/settings/class-page.php:664 +#: inc/classes/admin/settings/class-page.php:686 +#: inc/classes/admin/settings/class-page.php:756 +#: inc/classes/admin/settings/class-page.php:778 +msgid "" +"If you notice any errors on your website after having activated this " +"setting, just deactivate it again, and your site will be back to normal." +msgstr "" +"Уколико приметите било какву грешку на Вашем сајту након активирања овог " +"подешавања, исклјучите га и Ваш сајт ће бити враћен у нормално стање." + +#: inc/classes/admin/settings/class-page.php:665 +msgid "Activate minify CSS" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:670 +msgid "Combine CSS files (Enable Minify CSS files to select)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:672 +#, php-format +msgid "" +"Combine CSS merges all your files into 1, reducing HTTP requests. Not " +"recommended if your site uses HTTP/2. %1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:687 +msgid "Activate combine CSS" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:693 +msgid "" +"Specify URLs of CSS files to be excluded from minification and concatenation" +" (one per line)." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:694 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*).css " +"wildcards to exclude all CSS files located at a specific path." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:707 +msgid "Optimize CSS delivery" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:714 +#, php-format +msgctxt "WP Critical CSS compatibility" +msgid "" +"Optimize CSS Delivery is currently handled by the %1$s plugin. If you want " +"to use WP Rocket’s Optimize CSS Delivery option, disable the %1$s plugin." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:716 +#, php-format +msgid "" +"Optimize CSS delivery eliminates render-blocking CSS on your website for " +"faster perceived load time. %1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:727 +msgid "Fallback critical CSS" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:732 +#, php-format +msgid "" +"Provides a fallback if auto-generated critical path CSS is incomplete. " +"%1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:741 +msgid "Minify JavaScript files" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:742 +msgid "" +"Minify JavaScript removes whitespace and comments to reduce the file size." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:757 +msgid "Activate minify JavaScript" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:762 +msgid "" +"Combine JavaScript files (Enable Minify JavaScript files to select)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:764 +#, php-format +msgid "" +"Combine JavaScript files combines your site’s internal, 3rd party and inline" +" JS reducing HTTP requests. Not recommended if your site uses HTTP/2. " +"%1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:779 +msgid "Activate combine JavaScript" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:786 +#, php-format +msgid "" +"Specify patterns of inline JavaScript to be excluded from concatenation (one" +" per line). %1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:803 +msgid "" +"Specify URLs of JavaScript files to be excluded from minification and " +"concatenation (one per line)." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:804 +msgid "" +"Internal: The domain part of the URL will be stripped " +"automatically. Use (.*).js wildcards to exclude all JS files located at a " +"specific path." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:806 +#, php-format +msgid "" +"3rd Party: Use either the full URL path or only the domain " +"name, to exclude external JS. %1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:822 +msgid "Load JavaScript deferred" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:824 +#, php-format +msgid "" +"Load JavaScript deferred eliminates render-blocking JS on your site and can " +"improve load time. %1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:835 +msgid "Safe Mode for jQuery (recommended)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:836 +msgid "" +"Safe mode for jQuery for deferred JS ensures support for inline jQuery " +"references from themes and plugins by loading jQuery at the top of the " +"document as a render-blocking script.
      Deactivating may result in " +"broken functionality, test thoroughly!" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:861 +msgid "Media" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:862 +msgid "LazyLoad, emojis, embeds" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:869 +msgid "LazyLoad" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:872 +#, php-format +msgid "" +"It can improve actual and perceived loading time as images, iframes, and " +"videos will be loaded only as they enter (or about to enter) the viewport " +"and reduces the number of HTTP requests. %1$sMore Info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:879 +#, php-format +msgid "" +"Lazyload is currently activated in Autoptimize. If you want" +" to use %1$s’s lazyload, disable this option in Autoptimize." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:882 +msgid "Emoji 👻" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:884 +msgid "" +"Use default emoji of visitor's browser instead of loading emoji from " +"WordPress.org" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:888 +msgid "Embeds" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:890 +msgid "" +"Prevents others from embedding content from your site, prevents you from " +"embedding content from other (non-whitelisted) sites, and removes JavaScript" +" requests related to WordPress embeds" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:900 +msgid "Enable for images" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:911 +msgctxt "Avada" +msgid "" +"Lazyload for images is currently activated in Avada. If you want to use WP " +"Rocket’s LazyLoad, disable this option in Avada." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:919 +msgid "Enable for iframes and videos" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:934 +msgid "Replace YouTube iframe with preview image" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:935 +msgid "" +"This can significantly improve your loading time if you have a lot of " +"YouTube videos on a page." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:947 +msgid "Disable Emoji" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:948 +msgid "Disable Emoji will reduce the number of external HTTP requests." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:956 +msgid "Disable WordPress embeds" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:978 +#: inc/classes/admin/settings/class-page.php:988 +#: inc/deprecated/deprecated.php:1778 +msgid "Preload" +msgstr "Preload" + +#: inc/classes/admin/settings/class-page.php:979 +msgid "Generate cache files" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:991 +#, php-format +msgid "" +"When you enable preloading WP Rocket will generate the cache starting with " +"the links on your homepage followed by the sitemaps you specify. Preloading " +"is automatically triggered when you add or update content and can also be " +"manually triggered from the admin bar or from the %1$sWP Rocket " +"Dashboard%2$s." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:999 +msgid "Prefetch DNS Requests" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1001 +msgid "" +"DNS prefetching can make external files load faster, especially on mobile " +"networks" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1015 +msgid "Activate Preloading" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1034 +msgid "Activate sitemap-based cache preloading" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1053 +msgid "Sitemaps for preloading" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1057 +msgid "Specify XML sitemap(s) to be used for preloading" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1067 +msgid "URLs to prefetch" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1068 +msgid "" +"Specify external hosts to be prefetched (no http:, one per " +"line)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1091 +msgid "Advanced Rules" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1092 +msgid "Fine-tune cache rules" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1101 +msgid "" +"Sensitive pages like custom login/logout URLs should be excluded from cache." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1104 +msgctxt "plugin name" +msgid "WooCommerce" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1106 +msgctxt "plugin name" +msgid "Easy Digital Downloads" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1108 +msgctxt "plugin name" +msgid "iThemes Exchange" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1110 +msgctxt "plugin name" +msgid "Jigoshop" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1112 +msgctxt "plugin name" +msgid "WP-Shop" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1118 +#, php-format +msgid "" +"
      Cart, checkout and \"my account\" pages set in " +"%1$s%2$s%3$s will be detected and never cached by default." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1139 +msgid "Never Cache Cookies" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1158 +msgid "Cache Query String(s)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1161 +#, php-format +msgid "" +"%1$sCache for query strings%2$s enables you to force caching for specific " +"GET parameters." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1175 +msgid "" +"Specify URLs of pages or posts that should never be cached (one per line)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1176 +#: inc/classes/admin/settings/class-page.php:1204 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*) " +"wildcards to address multiple URLs under a given path." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1185 +msgid "" +"Specify the IDs of cookies that, when set in the visitor's browser, should " +"prevent a page from getting cached (one per line)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1193 +msgid "" +"Specify user agent strings that should never see cached pages (one per line)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1194 +msgid "Use (.*) wildcards to detect parts of UA strings." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1203 +msgid "" +"Specify URLs you always want purged from cache whenever you update any post " +"or page (one per line)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1212 +msgid "Specify query strings for caching (one per line)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1240 +#: inc/deprecated/deprecated.php:1777 +msgid "Database" +msgstr "Baza podataka" + +#: inc/classes/admin/settings/class-page.php:1241 +msgid "Optimize, reduce bloat" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1250 +msgid "Post Cleanup" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1252 +msgid "" +"Post revisions and drafts will be permanently deleted. Do not use this " +"option if you need to retain revisions or drafts." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1260 +msgid "Comments Cleanup" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1262 +msgid "Spam and trashed comments will be permanently deleted." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1266 +msgid "Transients Cleanup" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1268 +msgid "" +"Transients are temporary options; they are safe to remove. They will be " +"automatically regenerated as your plugins require them." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1272 +msgid "Database Cleanup" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1274 +msgid "Reduces overhead of database tables" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1278 +msgid "Automatic cleanup" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1291 +#, php-format +msgid "%s revision in your database." +msgid_plural "%s revisions in your database." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: inc/classes/admin/settings/class-page.php:1301 +#, php-format +msgid "%s draft in your database." +msgid_plural "%s drafts in your database." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: inc/classes/admin/settings/class-page.php:1311 +#, php-format +msgid "%s trashed post in your database." +msgid_plural "%s trashed posts in your database." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: inc/classes/admin/settings/class-page.php:1321 +#, php-format +msgid "%s spam comment in your database." +msgid_plural "%s spam comments in your database." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: inc/classes/admin/settings/class-page.php:1331 +#, php-format +msgid "%s trashed comment in your database." +msgid_plural "%s trashed comments in your database." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: inc/classes/admin/settings/class-page.php:1341 +#, php-format +msgid "%s expired transient in your database." +msgid_plural "%s expired transients in your database." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: inc/classes/admin/settings/class-page.php:1349 +msgid "All transients" +msgstr "Svi tranzijenti" + +#: inc/classes/admin/settings/class-page.php:1351 +#, php-format +msgid "%s transient in your database." +msgid_plural "%s transients in your database." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: inc/classes/admin/settings/class-page.php:1359 +msgid "Optimize Tables" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1361 +#, php-format +msgid "%s table to optimize in your database." +msgid_plural "%s tables to optimize in your database." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: inc/classes/admin/settings/class-page.php:1372 +msgid "Schedule Automatic Cleanup" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1384 +msgid "Frequency" +msgstr "Učestalost" + +#: inc/classes/admin/settings/class-page.php:1392 +msgid "Daily" +msgstr "Dnevno" + +#: inc/classes/admin/settings/class-page.php:1393 +msgid "Weekly" +msgstr "Nedeljno" + +#: inc/classes/admin/settings/class-page.php:1394 +msgid "Monthly" +msgstr "Mesečno" + +#: inc/classes/admin/settings/class-page.php:1414 +msgid "Integrate your CDN" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1426 +msgid "" +"All URLs of static files (CSS, JS, images) will be rewritten to the CNAME(s)" +" you provide." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1428 +#, php-format +msgid "" +"Not required for services like Cloudflare and Sucuri. Please see our " +"available %1$sAdd-ons%2$s." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1469 +#, php-format +msgid "" +"%1$s%2$s Add-on%3$s is currently enabled. Configuration of the CDN settings " +"is not required for %2$s to work on your site." +msgid_plural "" +"%1$s%2$s Add-ons%3$s are currently enabled. Configuration of the CDN " +"settings is not required for %2$s to work on your site." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: inc/classes/admin/settings/class-page.php:1484 +msgid "Enable Content Delivery Network" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1493 +msgid "CDN CNAME(s)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1494 +msgid "Specify the CNAME(s) below" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1501 +msgid "" +"Specify URL(s) of files that should not get served via CDN (one per line)." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1502 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*) " +"wildcards to exclude all files of a given file type located at a specific " +"path." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1525 +#: inc/classes/admin/settings/class-page.php:1533 +msgid "Heartbeat" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1526 +msgid "Control WordPress Heartbeat API" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1534 +msgid "" +"Reducing or disabling the Heartbeat API’s activity can help save some of " +"your server’s resources." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1543 +msgid "Reduce or disable Heartbeat activity" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1544 +msgid "" +"Reducing activity will change Heartbeat frequency from one hit each minute " +"to one hit every 2 minutes." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1544 +msgid "" +"Disabling Heartbeat entirely may break plugins and themes using this API." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1558 +msgid "Do not limit" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1559 +msgid "Reduce activity" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1560 +msgid "Disable" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1568 +msgid "Control Heartbeat" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1577 +msgid "Behavior in backend" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1584 +msgid "Behavior in post editor" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1590 +msgid "Behavior in frontend" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1609 +msgid "Add-ons" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1610 +msgid "Add more features" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1617 +msgid "One-click Rocket Add-ons" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1618 +msgid "" +"One-Click Add-ons are features extending available options without " +"configuration needed. Switch the option \"on\" to enable from this screen." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1628 +msgid "Rocket Add-ons" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1629 +msgid "Rocket Add-ons are complementary features extending available options." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1642 +msgid "Google Tracking" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1648 +msgid "Improve browser caching for Google Analytics" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1650 +#, php-format +msgid "" +"WP Rocket will host these Google scripts locally on your server to help " +"satisfy the PageSpeed recommendation for Leverage browser " +"caching.
      %1$sLearn more%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1665 +msgid "Facebook Pixel" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1671 +msgid "Improve browser caching for Facebook Pixel" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1673 +#, php-format +msgid "" +"WP Rocket will host these Facebook Pixels locally on your server to help " +"satisfy the PageSpeed recommendation for Leverage browser " +"caching.
      %1$sLearn more%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1706 +msgid "Varnish" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1712 +msgid "If Varnish runs on your server, you must activate this add-on." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1714 +#, php-format +msgid "" +"Varnish cache will be purged each time WP Rocket clears its cache to ensure " +"content is always up-to-date.
      %1$sLearn more%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1729 +#: inc/classes/admin/settings/class-page.php:1789 +msgid "Cloudflare" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1735 +msgid "Integrate your Cloudflare account with this add-on." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1736 +msgid "" +"Provide your account email, global API key, and domain to use options such " +"as clearing the Cloudflare cache and enabling optimal settings with WP " +"Rocket." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1748 +msgid "Clear the Sucuri cache when WP Rocket’s cache is cleared." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1751 +msgid "" +"Provide your API key to clear the Sucuri cache when WP Rocket’s cache is " +"cleared." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1759 +#: inc/classes/admin/settings/class-page.php:1907 +msgid "Sucuri" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1765 +msgid "Synchronize Sucuri cache with this add-on." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1805 +msgid "Cloudflare credentials" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1814 +msgid "Cloudflare settings" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1828 +msgctxt "Cloudflare" +msgid "Global API key:" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1829 +msgid "" +"https://support.cloudflare.com/hc/en-us/articles/200167836-Where-do-I-find-" +"my-Cloudflare-API-key-" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1829 +msgctxt "Cloudflare" +msgid "Find your API key" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1841 +msgctxt "Cloudflare" +msgid "Account email" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1850 +msgctxt "Cloudflare" +msgid "Zone ID" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1860 +msgid "Development mode" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1862 +#, php-format +msgid "" +"Temporarily activate development mode on your website. This setting will " +"automatically turn off after 3 hours. %1$sLearn more%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1870 +msgid "Optimal settings" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1871 +msgid "" +"Automatically enhances your Cloudflare configuration for speed, performance " +"grade and compatibility." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1879 +msgid "Relative protocol" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1880 +msgid "" +"Should only be used with Cloudflare's flexible SSL feature. URLs of static " +"files (CSS, JS, images) will be rewritten to use // instead of http:// or " +"https://." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1920 +msgid "Sucuri credentials" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1933 +msgctxt "Sucuri" +msgid "" +"Firewall API key (for plugin), must be in format {32 characters}/{32 " +"characters}:" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1934 +msgctxt "Sucuri" +msgid "Find your API key" +msgstr "" + +#: inc/classes/admin/settings/class-render.php:486 +#: inc/deprecated/deprecated.php:1296 +msgid "Upload file and import settings" +msgstr "Upload datoteke i uvoz podešavanja" + +#: inc/classes/admin/settings/class-settings.php:385 +msgid "" +"Sucuri Add-on: The API key for the Sucuri firewall must be in format " +"{32 characters}/{32 characters}." +msgstr "" + +#: inc/classes/admin/settings/class-settings.php:462 +#: inc/deprecated/deprecated.php:1247 +msgid "Settings saved." +msgstr "Podešavanja snimljena." + +#: inc/classes/class-wp-rocket-requirements-check.php:148 +#, php-format +msgid "To function properly, %1$s %2$s requires at least:" +msgstr "" + +#: inc/classes/class-wp-rocket-requirements-check.php:152 +#, php-format +msgid "" +"PHP %1$s. To use this WP Rocket version, please ask your web host how to " +"upgrade your server to PHP %1$s or higher." +msgstr "" + +#: inc/classes/class-wp-rocket-requirements-check.php:157 +#, php-format +msgid "" +"WordPress %1$s. To use this WP Rocket version, please upgrade WordPress to " +"version %1$s or higher." +msgstr "" + +#: inc/classes/class-wp-rocket-requirements-check.php:160 +msgid "" +"If you are not able to upgrade, you can rollback to the previous version by " +"using the button below." +msgstr "" + +#: inc/classes/class-wp-rocket-requirements-check.php:162 +#: inc/deprecated/deprecated.php:1949 +#, php-format +msgid "Re-install version %s" +msgstr "" + +#: inc/classes/logger/class-logger.php:253 +#: inc/classes/logger/class-logger.php:285 +msgid "The log file does not exist." +msgstr "" + +#: inc/classes/logger/class-logger.php:259 +#: inc/classes/logger/class-logger.php:291 +msgid "The log file could not be read." +msgstr "" + +#: inc/classes/logger/class-logger.php:278 +msgid "The logs are not saved into a file." +msgstr "" + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:88 +#: inc/classes/optimization/CSS/class-critical-css-generation.php:99 +#: inc/classes/optimization/CSS/class-critical-css-generation.php:110 +#: inc/classes/optimization/CSS/class-critical-css-generation.php:120 +#: inc/classes/optimization/CSS/class-critical-css-generation.php:142 +#, php-format +msgid "Critical CSS for %1$s not generated. Error: %2$s" +msgstr "" + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:99 +msgid "The API returned an invalid response code." +msgstr "" + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:110 +msgid "The API returned an empty response." +msgstr "" + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:145 +#, php-format +msgid "The critical CSS content could not be saved as a file in %s." +msgstr "" + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:154 +#, php-format +msgid "Critical CSS for %s generated." +msgstr "" + +#: inc/classes/preload/class-homepage.php:83 +#, php-format +msgid "" +"Preload encountered an error. Could not gather links on %1$s because of the " +"following error: %2$s. %3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-homepage.php:96 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: %2$s. Security measures could be preventing access. " +"%3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-homepage.php:102 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: 404. Please make sure your homepage is accessible in your " +"browser. %2$sLearn more%3$s." +msgstr "" + +#: inc/classes/preload/class-homepage.php:108 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: 500. Please check with your web host about server access. " +"%2$sLearn more%3$s." +msgstr "" + +#: inc/classes/preload/class-homepage.php:114 +#, php-format +msgid "" +"Preload encountered an error. Could not gather links on %1$s because it " +"returned the following response code: %2$s. %3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:138 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not gather links on %1$s because" +" of the following error: %2$s. %3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:153 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: %2$s. Security measures could be preventing access." +" %3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:158 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: 404. Please make sure you entered the correct " +"sitemap URL and it is accessible in your browser. %2$sLearn more%3$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:163 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: 500. Please check with your web host about server " +"access. %2$sLearn more%3$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:168 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not gather links on %1$s because" +" it returned the following response code: %2$s. %3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:184 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not collect links from %1$s " +"because the file is empty. %2$sLearn more%3$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:205 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not collect links from %1$s " +"because of an error during the XML sitemap parsing. %2$sLearn more%3$s." +msgstr "" + +#: inc/classes/subscriber/Optimization/class-critical-css-subscriber.php:138 +#, php-format +msgid "" +"Critical CSS generation is currently running: %1$d of %2$d page types " +"completed. (Refresh this page to view progress)" +msgstr "" + +#: inc/classes/subscriber/Optimization/class-critical-css-subscriber.php:189 +#, php-format +msgid "Critical CSS generation finished for %1$d of %2$d page types." +msgstr "" + +#: inc/classes/subscriber/Optimization/class-critical-css-subscriber.php:203 +msgid "Critical CSS generation encountered one or more errors." +msgstr "" + +#: inc/classes/subscriber/Optimization/class-critical-css-subscriber.php:203 +msgid "Learn more." +msgstr "" + +#: inc/classes/subscriber/Tools/class-cache-dir-size-check-subscriber.php:51 +#: inc/classes/subscriber/class-facebook-tracking-cache-busting-subscriber.php:97 +#: inc/classes/subscriber/class-google-tracking-cache-busting-subscriber.php:154 +#: inc/common/cron.php:33 +msgid "weekly" +msgstr "nedeljno" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:148 +msgid "Database optimization process is running" +msgstr "" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:179 +msgid "" +"Database optimization process is complete. Everything was already optimized!" +msgstr "" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:182 +msgid "" +"Database optimization process is complete. List of optimized items below:" +msgstr "" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:190 +#, php-format +msgid "%1$d %2$s optimized." +msgstr "" + +#: inc/classes/subscriber/admin/Settings/class-page-subscriber.php:137 +#: inc/deprecated/deprecated.php:1788 +#: views/settings/page-sections/tools.php:33 +msgid "Tools" +msgstr "Alati" + +#: inc/classes/subscriber/admin/Settings/class-page-subscriber.php:138 +msgid "Import, Export, Rollback" +msgstr "" + +#: inc/classes/subscriber/admin/Settings/class-page-subscriber.php:160 +#: views/settings/page-sections/imagify.php:13 +msgid "Image Optimization" +msgstr "" + +#: inc/classes/subscriber/admin/Settings/class-page-subscriber.php:161 +msgid "Compress your images" +msgstr "" + +#: inc/classes/subscriber/preload/class-preload-subscriber.php:212 +#, php-format +msgid "" +"Preload: WP Rocket has started preloading your website. Go to the %1$sWP " +"Rocket settings%2$s page to track progress." +msgstr "" + +#: inc/classes/subscriber/preload/class-preload-subscriber.php:246 +#, php-format +msgid "" +"Preload: %1$s uncached page has now been preloaded. (refresh to see " +"progress)" +msgid_plural "" +"Preload: %1$s uncached pages have now been preloaded. (refresh to see " +"progress)" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: inc/classes/subscriber/preload/class-preload-subscriber.php:255 +msgid "The following error happened during gathering of the URLs to preload:" +msgid_plural "" +"The following errors happened during gathering of the URLs to preload:" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: inc/classes/subscriber/preload/class-preload-subscriber.php:308 +#, php-format +msgid "Preload complete: %d pages have been cached." +msgstr "" + +#: inc/classes/subscriber/preload/class-sitemap-preload-subscriber.php:117 +#, php-format +msgid "" +"%1$sSimpleXML PHP extension%2$s is not enabled on your server. Please " +"contact your host to enable it before running sitemap-based cache " +"preloading." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:72 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"Please deactivate the following %s option which conflicts with WP Rocket " +"features:" +msgid_plural "" +"Please deactivate the following %s options which conflict with WP Rocket " +"features:" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:145 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sdisable emoji%3$s conflicts with WP Rockets %2$sdisable emoji%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:167 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sremove query strings%3$s conflicts with WP Rocket %2$sremove query " +"strings%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:203 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sGZIP compression%3$s conflicts with WP Rocket %2$sGZIP " +"compression%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:239 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sbrowser caching%3$s conflicts with WP Rocket %2$sbrowser " +"caching%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:271 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$spage caching%3$s conflicts with WP Rocket %2$spage caching%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:305 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sasset optimization%3$s conflicts with WP Rocket %2$sfile " +"optimization%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:123 +#, php-format +msgid "Sucuri cache purge error: %s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:128 +msgid "" +"The Sucuri cache is being cleared. Note that it may take up to two minutes " +"for it to be fully flushed." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:242 +msgid "Sucuri firewall API key was not found." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:251 +msgid "Sucuri firewall API key is invalid." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:303 +msgid "Error when contacting Sucuri firewall API." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:313 +#, php-format +msgid "Error when contacting Sucuri firewall API. Error message was: %s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:324 +msgid "Could not get a response from the Sucuri firewall API." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:335 +msgid "Got an invalid response from the Sucuri firewall API." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:345 +msgid "The Sucuri firewall API returned an unknown error." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:348 +#, php-format +msgid "The Sucuri firewall API returned the following error: %s" +msgid_plural "The Sucuri firewall API returned the following errors: %s" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: inc/classes/traits/trait-updater-api-tools.php:53 +#: inc/deprecated/3.3.php:760 inc/deprecated/3.3.php:769 +#, php-format +msgid "" +"An unexpected error occurred. Something may be wrong with WP-Rocket.me or " +"this server’s configuration. If you continue to have problems, contact support." +msgstr "" + +#: inc/common/admin-bar.php:106 inc/common/admin-bar.php:260 +#: inc/functions/i18n.php:39 inc/functions/i18n.php:48 +msgid "All languages" +msgstr "Svi jezici" + +#: inc/common/admin-bar.php:133 +msgid "Clear this post" +msgstr "Poništite ovaj članak" + +#: inc/common/admin-bar.php:147 +msgid "Purge this URL" +msgstr "Očistite ovaj URL" + +#: inc/common/admin-bar.php:163 +msgid "Purge OPcache" +msgstr "Očisti OPcache" + +#: inc/common/admin-bar.php:180 +msgid "Regenerate Critical Path CSS" +msgstr "" + +#: inc/common/admin-bar.php:196 +msgid "Clear Cloudflare cache" +msgstr "" + +#: inc/common/admin-bar.php:217 inc/common/admin-bar.php:272 +#: views/settings/page-sections/dashboard.php:135 +msgid "Preload cache" +msgstr "Preloading keš-a" + +#: inc/common/admin-bar.php:287 views/settings/partials/documentation.php:13 +msgid "Documentation" +msgstr "Dokumentacija" + +#: inc/common/cron.php:24 +#, php-format +msgid "%s clear" +msgstr "%s očišćeno" + +#: inc/common/cron.php:39 +msgid "monthly" +msgstr "mesečno" + +#: inc/common/purge.php:456 +#, php-format +msgid "Cloudflare cache purge error: %s" +msgstr "" + +#: inc/common/purge.php:461 +msgid "Cloudflare cache successfully purged" +msgstr "" + +#: inc/deprecated/3.2.php:51 views/settings/page-sections/imagify.php:35 +msgid "Activate Imagify" +msgstr "Aktiviraj Imagify" + +#: inc/deprecated/3.2.php:51 +msgid "Install Imagify for Free" +msgstr "Besplatno instaliraj Imagify" + +#: inc/deprecated/3.2.php:66 +msgid "" +"Speed up your website and boost your SEO by reducing image file sizes " +"without losing quality with Imagify." +msgstr "" +"Ubrzajte Vaš sajt i poboljšajte SEO redukovanjem veličine slika bez gubitka " +"na kvalitetu pomoću Imagify-a." + +#: inc/deprecated/3.2.php:71 +msgid "More details" +msgstr "" + +#: inc/deprecated/3.2.php:227 +#, php-format +msgid "Sitemap preload: %d pages have been cached." +msgstr "" + +#: inc/deprecated/3.2.php:260 +#, php-format +msgid "" +"Sitemap preload: %d uncached pages have now been preloaded. (refresh to see " +"progress)" +msgstr "" + +#: inc/deprecated/deprecated.php:242 +msgid "JS files with Deferred Loading JavaScript" +msgstr "" + +#: inc/deprecated/deprecated.php:295 +msgid "Add URL" +msgstr "Dodaj URL" + +#: inc/deprecated/deprecated.php:1279 views/settings/fields/import-form.php:22 +msgid "" +"Before you can upload your import file, you will need to fix the following " +"error:" +msgstr "" +"Pre nego što možete otpremiti svoju datoteku za uvoz, trebate popraviti " +"sledeću grešku:" + +#: inc/deprecated/deprecated.php:1290 views/settings/fields/import-form.php:35 +#, php-format +msgid "Choose a file from your computer (maximum size: %s)" +msgstr "Изаберите датотеку са Вашег компјутера (максимална величина: %s)" + +#: inc/deprecated/deprecated.php:1387 +msgid "Your Cloudflare credentials are valid." +msgstr "Ваши Cloudflare подаци су тачни." + +#: inc/deprecated/deprecated.php:1391 +msgid "Your Cloudflare credentials are invalid!" +msgstr "Ваши Cloudflare подаци нису тачни!" + +#: inc/deprecated/deprecated.php:1455 +msgid "Save and optimize" +msgstr "Snimi i optimizuj" + +#: inc/deprecated/deprecated.php:1455 +#: views/settings/page-sections/database.php:27 +msgid "Optimize" +msgstr "Optimizuj" + +#: inc/deprecated/deprecated.php:1466 inc/deprecated/deprecated.php:1668 +msgctxt "screen-reader-text" +msgid "Note:" +msgstr "Напомена:" + +#: inc/deprecated/deprecated.php:1472 +msgctxt "screen-reader-text" +msgid "Performance tip:" +msgstr "Савет:" + +#: inc/deprecated/deprecated.php:1478 +msgctxt "screen-reader-text" +msgid "Third-party feature detected:" +msgstr "" + +#: inc/deprecated/deprecated.php:1490 inc/deprecated/deprecated.php:1674 +msgctxt "screen-reader-text" +msgid "Warning:" +msgstr "Упозорење:" + +#: inc/deprecated/deprecated.php:1503 +msgctxt "button text" +msgid "Download settings" +msgstr "Преузми подешавања" + +#: inc/deprecated/deprecated.php:1533 +msgid "Replace site's hostname with:" +msgstr "Zamenite hostname naziv stranice sa:" + +#: inc/deprecated/deprecated.php:1552 inc/deprecated/deprecated.php:1589 +#: inc/deprecated/deprecated.php:1617 views/settings/fields/cnames.php:32 +#: views/settings/fields/cnames.php:63 views/settings/fields/cnames.php:93 +msgid "reserved for" +msgstr "rezervisano za" + +#: inc/deprecated/deprecated.php:1554 inc/deprecated/deprecated.php:1591 +#: inc/deprecated/deprecated.php:1619 views/settings/fields/cnames.php:35 +#: views/settings/fields/cnames.php:66 views/settings/fields/cnames.php:96 +msgid "All files" +msgstr "Sve datoteke" + +#: inc/deprecated/deprecated.php:1566 inc/deprecated/deprecated.php:1596 +#: inc/deprecated/deprecated.php:1624 views/settings/fields/cnames.php:47 +#: views/settings/fields/cnames.php:78 views/settings/fields/cnames.php:108 +msgid "Images" +msgstr "Slike" + +#: inc/deprecated/deprecated.php:1637 views/settings/fields/cnames.php:119 +msgid "Add CNAME" +msgstr "Dodaj CNAME" + +#: inc/deprecated/deprecated.php:1708 +msgid "Watch the video" +msgstr "Pogledajte video" + +#: inc/deprecated/deprecated.php:1773 +msgid "Basic" +msgstr "Основно" + +#: inc/deprecated/deprecated.php:1774 +msgid "Static Files" +msgstr "Статични фајлови" + +#: inc/deprecated/deprecated.php:1776 +msgid "Advanced" +msgstr "Напредно" + +#: inc/deprecated/deprecated.php:1946 +#, php-format +msgid "" +"%1$s %2$s requires at least PHP %3$s to function properly. To use this " +"version, please ask your web host how to upgrade your server to PHP %3$s or " +"higher. If you are not able to upgrade, you can rollback to the previous " +"version by using the button below." +msgstr "" + +#: inc/functions/admin.php:23 +msgid "" +"There seems to be an issue validating your license. Please see the error " +"message below." +msgid_plural "" +"There seems to be an issue validating your license. You can see the error " +"messages below." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: inc/functions/admin.php:361 +msgid "Server type:" +msgstr "" + +#: inc/functions/admin.php:370 +msgid "PHP version number:" +msgstr "" + +#: inc/functions/admin.php:379 +msgid "WordPress version number:" +msgstr "" + +#: inc/functions/admin.php:388 +msgid "WordPress multisite:" +msgstr "" + +#: inc/functions/admin.php:397 +msgid "Current theme:" +msgstr "" + +#: inc/functions/admin.php:406 +msgid "Current site language:" +msgstr "" + +#: inc/functions/admin.php:415 +msgid "Active plugins:" +msgstr "" + +#: inc/functions/admin.php:418 +msgid "Plugin names of all active plugins" +msgstr "" + +#: inc/functions/admin.php:424 +msgid "Anonymized WP Rocket settings:" +msgstr "" + +#: inc/functions/admin.php:427 +msgid "Which WP Rocket settings are active" +msgstr "" + +#: inc/functions/cloudflare.php:14 +msgid "" +"Curl functions are disabled, they are required for the Cloudflare Add-on to " +"work correctly." +msgstr "" + +#: inc/functions/cloudflare.php:21 +msgid "Cloudflare Email and API key are not set" +msgstr "" + +#: inc/functions/cloudflare.php:52 +#, php-format +msgid "Missing Cloudflare zone ID. %s could not fix this automatically." +msgstr "" + +#: inc/functions/cloudflare.php:58 +#, php-format +msgid "Read the %1$sdocumentation%2$s for further guidance." +msgstr "" + +#: inc/functions/cloudflare.php:60 +msgid "" +"https://docs.wp-rocket.me/article/18-using-wp-rocket-with-" +"cloudflare/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" + +#: inc/functions/cloudflare.php:100 +msgid "Connection to Cloudflare failed" +msgstr "" + +#: inc/functions/cloudflare.php:122 +msgid "Choose a domain from the list" +msgstr "Izaberite domen sa liste" + +#: inc/functions/cloudflare.php:135 +msgid "No domain available in your Cloudflare account" +msgstr "" + +#: inc/functions/options.php:580 inc/functions/options.php:619 +msgid "" +"License validation failed. Our server could not resolve the request from " +"your website." +msgstr "" + +#: inc/functions/options.php:580 inc/functions/options.php:619 +#, php-format +msgid "" +"Try clicking %1$sSave Changes%2$s below. If the error persists, follow " +"%3$sthis guide%4$s." +msgstr "" + +#: inc/functions/options.php:596 +msgid "" +"License validation failed. You may be using a nulled version of the plugin. " +"Please do the following:" +msgstr "" + +#: inc/functions/options.php:596 inc/functions/options.php:638 +#, php-format +msgid "Login to your WP Rocket %1$saccount%2$s" +msgstr "" + +#: inc/functions/options.php:596 inc/functions/options.php:638 +msgid "Download the zip file" +msgstr "" + +#: inc/functions/options.php:596 inc/functions/options.php:638 +msgid "Reinstall" +msgstr "" + +#: inc/functions/options.php:596 +#, php-format +msgid "" +"If you do not have a WP Rocket account, please %1$spurchase a license%2$s." +msgstr "" + +#: inc/functions/options.php:604 +msgid "" +"License validation failed. This user account does not exist in our database." +msgstr "" + +#: inc/functions/options.php:604 +msgid "To resolve, please contact support." +msgstr "" + +#: inc/functions/options.php:612 +msgid "License validation failed. This user account is blacklisted." +msgstr "" + +#: inc/functions/options.php:612 +#, php-format +msgid "Please see %1$sthis guide%2$s for more info." +msgstr "" + +#: inc/functions/options.php:632 +msgid "Your license is not valid." +msgstr "Vaša licenca nije validna." + +#: inc/functions/options.php:632 +#, php-format +msgid "Make sure you have an active %1$sWP Rocket license%2$s." +msgstr "" + +#: inc/functions/options.php:634 +msgid "You have added as many sites as your current license allows." +msgstr "" + +#: inc/functions/options.php:634 +#, php-format +msgid "" +"Upgrade your %1$saccount%2$s or %3$stransfer your license%2$s to this " +"domain." +msgstr "" + +#: inc/functions/options.php:636 +msgid "This website is not allowed." +msgstr "Ova web stranica nije dozvoljena." + +#: inc/functions/options.php:636 +#, php-format +msgid "Please %1$scontact support%2$s." +msgstr "" + +#: inc/functions/options.php:638 +msgid "This license key is not recognized." +msgstr "" + +#: inc/functions/options.php:638 +#, php-format +msgid "If the issue persists, please %1$scontact support%2$s." +msgstr "" + +#: inc/functions/options.php:644 +#, php-format +msgid "License validation failed: %s" +msgstr "" + +#: inc/vendors/classes/class-imagify-partner.php:531 +msgid "Plugin installed successfully." +msgstr "" + +#: inc/vendors/classes/class-imagify-partner.php:532 +msgid "Sorry, you are not allowed to install plugins on this site." +msgstr "" + +#: inc/vendors/classes/class-imagify-partner.php:533 +msgid "Sorry, you are not allowed to do that." +msgstr "" + +#: inc/vendors/classes/class-imagify-partner.php:534 +msgid "Plugin install failed." +msgstr "" + +#: inc/vendors/classes/class-imagify-partner.php:535 +msgid "Go back" +msgstr "" + +#: views/deactivation-intent/form.php:20 +msgid "Return" +msgstr "" + +#: views/deactivation-intent/form.php:21 +msgid "WP Rocket feedback" +msgstr "" + +#: views/deactivation-intent/form.php:23 +msgid "Close" +msgstr "" + +#: views/deactivation-intent/form.php:27 +msgid "May we have a little info about why you are deactivating?" +msgstr "" + +#: views/deactivation-intent/form.php:31 +msgid "" +"It is a temporary deactivation. I am just debugging an " +"issue." +msgstr "" + +#: views/deactivation-intent/form.php:35 +msgid "The plugin broke my layout or some functionality." +msgstr "" + +#: views/deactivation-intent/form.php:39 +msgid "My PageSpeed or GTMetrix score did not improve." +msgstr "" + +#: views/deactivation-intent/form.php:43 +msgid "I did not notice a difference in loading time." +msgstr "" + +#: views/deactivation-intent/form.php:47 +msgid "The plugin is too complicated to configure." +msgstr "" + +#: views/deactivation-intent/form.php:51 +msgid "My host already has its own caching system." +msgstr "" + +#: views/deactivation-intent/form.php:53 +msgid "What is the name of your web host?" +msgstr "" + +#: views/deactivation-intent/form.php:58 +msgid "Other" +msgstr "" + +#: views/deactivation-intent/form.php:60 +msgid "" +"Let us know why you are deactivating WP Rocket so we can improve the plugin" +msgstr "" + +#: views/deactivation-intent/form.php:68 +msgid "The plugin broke my layout or some functionality" +msgstr "" + +#: views/deactivation-intent/form.php:69 +msgid "" +"This type of issue can usually be fixed by deactivating some options in WP " +"Rocket." +msgstr "" + +#: views/deactivation-intent/form.php:70 +msgid "" +"Click \"Apply Safe Mode\" to quickly disable LazyLoad, File Optimization, " +"Embeds and CDN options. Then check your site to see if the issue has " +"resolved." +msgstr "" + +#: views/deactivation-intent/form.php:72 +msgid "Apply safe mode" +msgstr "" + +#: views/deactivation-intent/form.php:75 +msgid "Safe mode applied." +msgstr "" + +#: views/deactivation-intent/form.php:76 +msgid "Review your site in a private/logged out browser window." +msgstr "" + +#: views/deactivation-intent/form.php:78 +msgid "" +"Is the issue fixed? Now you can reactivate options one at a time to " +"determine which one caused the problem. More info" +msgstr "" + +#: views/deactivation-intent/form.php:81 +msgid "My PageSpeed or GT Metrix score did not improve" +msgstr "" + +#: views/deactivation-intent/form.php:82 +msgid "" +"WP Rocket makes your site faster. The PageSpeed grade or GTMetrix score are " +"not indicators of speed. Neither your real visitors, nor Google will ever " +"see your website’s “grade”. Speed is the only metric that matters for SEO " +"and conversions." +msgstr "" + +#: views/deactivation-intent/form.php:83 +msgid "Yoast, the expert on all things related to SEO for WordPress states:" +msgstr "" + +#: views/deactivation-intent/form.php:84 +msgid "" +"[Google] just looks at how fast your website loads for users, so you don’t " +"have to obsess over that specific score. You have to make sure your website " +"is as fast as you can get it." +msgstr "" + +#: views/deactivation-intent/form.php:87 +msgid "" +"How to measure the load time of your site:
      https" +"://wp-rocket.me/blog/correctly-measure-websites-page-load-time/" +msgstr "" + +#: views/deactivation-intent/form.php:88 +msgid "" +"Why you should not be chasing a PageSpeed score:
      https://wp-rocket.me/blog/the-truth-about-google-" +"pagespeed-insights/" +msgstr "" + +#: views/deactivation-intent/form.php:91 +msgid "I did not notice a difference in loading time" +msgstr "" + +#: views/deactivation-intent/form.php:92 +msgid "" +"Make sure you look at your site while logged out to see the fast, cached " +"pages!" +msgstr "" + +#: views/deactivation-intent/form.php:93 +msgid "" +"The best way to see the improvement WP Rocket provides is to perform speed " +"tests. Follow this guide to correctly measure the load time of your " +"website:
      https://wp-rocket.me/blog/correctly-measure-websites-page-" +"load-time/" +msgstr "" + +#: views/deactivation-intent/form.php:96 +msgid "The plugin is too complicated to configure" +msgstr "" + +#: views/deactivation-intent/form.php:97 +msgid "We are sorry to hear you are finding it difficult to use WP Rocket." +msgstr "" + +#: views/deactivation-intent/form.php:98 +#, php-format +msgid "" +"WP Rocket is the only caching plugin that provides 80% of best practices in " +"speed optimization, by default. That means you do not have to do anything " +"besides activate WP Rocket and your site will already be faster!" +msgstr "" + +#: views/deactivation-intent/form.php:99 +msgid "" +"The additional options are not required for a fast site, they are for fine-" +"tuning." +msgstr "" + +#: views/deactivation-intent/form.php:100 +msgid "" +"To see the benefit WP Rocket is already providing, measure the speed of your" +" site using a tool like Pingdom:
      https" +"://wp-rocket.me/blog/correctly-measure-websites-page-load-time/" +msgstr "" + +#: views/deactivation-intent/form.php:105 +msgid "Send & Deactivate" +msgstr "" + +#: views/deactivation-intent/form.php:106 +msgid "Cancel" +msgstr "Otkaži" + +#: views/deactivation-intent/form.php:108 +msgid "Skip & Deactivate" +msgstr "" + +#: views/settings/fields/cache-lifespan.php:26 +msgid "Clear cache after" +msgstr "" + +#: views/settings/fields/cnames.php:49 views/settings/fields/cnames.php:80 +#: views/settings/fields/cnames.php:110 +msgid "CSS & JavaScript" +msgstr "" + +#: views/settings/fields/cnames.php:50 views/settings/fields/cnames.php:81 +#: views/settings/fields/cnames.php:111 +msgid "JavaScript" +msgstr "" + +#: views/settings/fields/cnames.php:51 views/settings/fields/cnames.php:82 +#: views/settings/fields/cnames.php:112 +msgid "CSS" +msgstr "" + +#: views/settings/fields/import-form.php:29 +msgid "Import settings" +msgstr "" + +#: views/settings/fields/one-click-addon.php:39 +#: views/settings/fields/rocket-addon.php:31 +#: views/settings/fields/sliding-checkbox.php:24 views/settings/page.php:54 +msgctxt "Active state of checkbox" +msgid "On" +msgstr "Uključeno" + +#: views/settings/fields/one-click-addon.php:40 +#: views/settings/fields/rocket-addon.php:32 +#: views/settings/fields/sliding-checkbox.php:25 views/settings/page.php:55 +msgctxt "Inactive state of checkbox" +msgid "Off" +msgstr "Isključeno" + +#: views/settings/fields/one-click-addon.php:41 +#: views/settings/fields/rocket-addon.php:33 +msgid "Add-on status" +msgstr "" + +#: views/settings/fields/rocket-addon.php:56 +msgid "Modify options" +msgstr "" + +#: views/settings/page-sections/cloudflare.php:26 +msgid "Cloudflare Cache" +msgstr "" + +#: views/settings/page-sections/cloudflare.php:33 +#: views/settings/page-sections/sucuri.php:34 +#, php-format +msgid "Purges cached resources for your website. %s" +msgstr "" + +#: views/settings/page-sections/cloudflare.php:34 +msgid "https://support.cloudflare.com/hc/en-us/articles/200169246" +msgstr "" + +#: views/settings/page-sections/cloudflare.php:34 +#: views/settings/page-sections/sucuri.php:35 +msgid "Learn more" +msgstr "" + +#: views/settings/page-sections/cloudflare.php:40 +msgid "Clear all Cloudflare cache files" +msgstr "" + +#: views/settings/page-sections/dashboard.php:37 +msgid "Congratulations!" +msgstr "" + +#: views/settings/page-sections/dashboard.php:39 +msgid "WP Rocket is now activated and already working for you." +msgstr "" + +#: views/settings/page-sections/dashboard.php:41 +msgid "Your website should be loading faster now!" +msgstr "" + +#: views/settings/page-sections/dashboard.php:43 +#, php-format +msgid "" +"To guarantee fast websites, WP Rocket applies 80% of web performance best " +"practices." +msgstr "" + +#: views/settings/page-sections/dashboard.php:43 +msgid "" +"We also enable options that provide immediate benefits to your website." +msgstr "" + +#: views/settings/page-sections/dashboard.php:44 +msgid "Continue to the options to further optimize your site!" +msgstr "" + +#: views/settings/page-sections/dashboard.php:54 +msgid "My Account" +msgstr "" + +#: views/settings/page-sections/dashboard.php:60 +msgid "Refresh info" +msgstr "" + +#: views/settings/page-sections/dashboard.php:74 +msgid "Expiration Date" +msgstr "" + +#: views/settings/page-sections/dashboard.php:83 +msgid "View my account" +msgstr "" + +#: views/settings/page-sections/dashboard.php:103 +msgid "Quick Actions" +msgstr "" + +#: views/settings/page-sections/dashboard.php:109 +msgid "Remove all cached files" +msgstr "" + +#: views/settings/page-sections/dashboard.php:129 +msgid "Start cache preloading" +msgstr "" + +#: views/settings/page-sections/dashboard.php:147 +msgid "Purge OPCache content" +msgstr "" + +#: views/settings/page-sections/dashboard.php:153 +msgid "Purge OPCache" +msgstr "" + +#: views/settings/page-sections/dashboard.php:164 +#: views/settings/page-sections/dashboard.php:170 +msgid "Regenerate Critical CSS" +msgstr "" + +#: views/settings/page-sections/dashboard.php:186 +msgid "Frequently Asked Questions" +msgstr "" + +#: views/settings/page-sections/dashboard.php:199 +msgid "Still cannot find a solution?" +msgstr "" + +#: views/settings/page-sections/dashboard.php:200 +msgid "" +"Submit a ticket and get help from our friendly and knowledgeable Rocketeers." +msgstr "" + +#: views/settings/page-sections/dashboard.php:208 +msgid "Ask support" +msgstr "" + +#: views/settings/page-sections/database.php:24 +msgid "Backup your database before you run a cleanup!" +msgstr "" + +#: views/settings/page-sections/database.php:25 +msgid "" +"Once a database optimization has been performed, there is no way to undo it." +msgstr "" + +#: views/settings/page-sections/imagify.php:20 +#, php-format +msgid "" +"%1$sWP ROCKET%2$s created %3$sIMAGIFY%4$s %1$sfor best-in-class image " +"optimization.%2$s" +msgstr "" + +#: views/settings/page-sections/imagify.php:23 +msgid "" +"Compress image to make your website faster, all while maintaining image " +"quality." +msgstr "" + +#: views/settings/page-sections/imagify.php:24 +msgid "More on Imagify:" +msgstr "" + +#: views/settings/page-sections/imagify.php:26 +msgid "Imagify Plugin Page" +msgstr "" + +#: views/settings/page-sections/imagify.php:27 +msgid "Imagify Website" +msgstr "" + +#: views/settings/page-sections/imagify.php:28 +msgid "Review of Image Compression Plugins" +msgstr "" + +#: views/settings/page-sections/imagify.php:37 +msgid "Install Imagify" +msgstr "" + +#: views/settings/page-sections/license.php:21 +msgid "WP Rocket was not able to automatically validate your license." +msgstr "" + +#: views/settings/page-sections/license.php:26 +#, php-format +msgid "" +"Follow this tutorial, or contact support to get the engine started." +msgstr "" + +#: views/settings/page-sections/license.php:26 +msgid "" +"https://docs.wp-rocket.me/article/100-resolving-problems-with-license-" +"validation/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" + +#: views/settings/page-sections/sucuri.php:41 +msgid "Clear all Sucuri cache files" +msgstr "" + +#: views/settings/page-sections/tools.php:20 +#, php-format +msgid "Files size: %1$s. Number of entries: %2$s." +msgstr "" + +#: views/settings/page-sections/tools.php:23 +#, php-format +msgid "%1$sDownload the file%2$s." +msgstr "" + +#: views/settings/page-sections/tools.php:26 +#, php-format +msgid "%1$sDelete the file%2$s." +msgstr "" + +#: views/settings/page-sections/tools.php:37 +msgid "Export settings" +msgstr "" + +#: views/settings/page-sections/tools.php:38 +msgid "Download a backup file of your settings" +msgstr "" + +#: views/settings/page-sections/tools.php:43 +msgid "Download settings" +msgstr "Преузми подешавања" + +#: views/settings/page-sections/tools.php:56 +msgid "Rollback" +msgstr "" + +#: views/settings/page-sections/tools.php:60 +#, php-format +msgid "Has version %s caused an issue on your website?" +msgstr "" + +#: views/settings/page-sections/tools.php:62 +msgid "" +"You can rollback to the previous major version here.
      Then send us a " +"support request." +msgstr "" + +#: views/settings/page-sections/tools.php:69 +#, php-format +msgid "Reinstall version %s" +msgstr "" + +#: views/settings/page-sections/tools.php:85 +msgid "Debug mode" +msgstr "" + +#: views/settings/page-sections/tools.php:90 +msgid "Create a debug log file." +msgstr "" + +#: views/settings/page.php:16 +msgid "WP Rocket Settings" +msgstr "" + +#: views/settings/page.php:30 +#, php-format +msgid "version %s" +msgstr "" + +#: views/settings/page.php:40 +msgid "Save Changes" +msgstr "" + +#: views/settings/page.php:56 +msgid "Show Sidebar" +msgstr "" + +#: views/settings/page.php:75 +msgid "Thanks for choosing to participate in the WP Rocket beta program!" +msgstr "" + +#: views/settings/page.php:76 +msgid "" +"A beta version is usually one that has new features and improvements, but we" +" want to test it a little more before full launch." +msgstr "" + +#: views/settings/page.php:77 +msgid "" +"We’d love it if you took our beta versions for a ride, but please keep in " +"mind that it might be less stable than our other releases. Don’t worry, you " +"can switch back to a full release version at any time." +msgstr "" + +#: views/settings/page.php:78 +msgid "" +"Your mission: please send all feedback about our beta versions, including " +"bug reports, to support@wp-rocket.me" +msgstr "" + +#: views/settings/page.php:80 +msgid "If you don’t want to join the beta program, simply close this window." +msgstr "" + +#: views/settings/page.php:82 +msgid "Activate Rocket Tester" +msgstr "" + +#: views/settings/page.php:93 +msgid "" +"Below is a detailed view of all data WP Rocket will collect if " +"granted permission." +msgstr "" + +#: views/settings/page.php:96 +msgid "" +"WP Rocket will never transmit any domain names or email addresses (except " +"for license validation), IP addresses, or third-party API keys." +msgstr "" + +#: views/settings/page.php:98 +msgid "Activate Rocket analytics" +msgstr "" + +#: views/settings/partials/documentation.php:14 +msgid "It is a great starting point to fix some of the most common issues." +msgstr "" + +#: views/settings/partials/documentation.php:18 +msgid "Read the documentation" +msgstr "" + +#: views/settings/partials/sidebar.php:11 +msgid "How to correctly measure your website’s loading time" +msgstr "" + +#: views/settings/partials/sidebar.php:13 +msgid "" +"Learn how to use best practices to correctly measure your site's " +"performance." +msgstr "" + +#: views/settings/partials/sidebar.php:14 +msgid "" +"https://wp-rocket.me/blog/correctly-measure-websites-page-load-" +"time/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" + +#: views/settings/partials/sidebar.php:14 +msgid "Read our guide" +msgstr "" + +#: views/settings/partials/sidebar.php:17 +msgid "Why Google PageSpeed grade should not matter" +msgstr "" + +#: views/settings/partials/sidebar.php:18 +msgid "" +"https://wp-rocket.me/blog/the-truth-about-google-pagespeed-" +"insights/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" + +#: views/settings/partials/sidebar.php:18 +msgid "Read more" +msgstr "" + +#: views/settings/partials/sidebar.php:23 +msgid "You have not activated logged-in user cache." +msgstr "" + +#: views/settings/partials/sidebar.php:24 +msgid "" +"Use a private browser to check your website's speed and visual appearance." +msgstr "" + +#: views/settings/sections/addons-container.php:23 +#: views/settings/sections/fields-container.php:27 +msgid "Need Help?" +msgstr "" diff --git a/wp-content/plugins/wp-rocket/languages/rocket-sv_SE.mo b/wp-content/plugins/wp-rocket/languages/rocket-sv_SE.mo new file mode 100644 index 0000000000000000000000000000000000000000..41279ce301b4ef2ca975e33f10e0f69e9d041cf1 GIT binary patch literal 3047 zcmaKu$!{D*6o(54+k`D)-zyLl8{D(l4wyDpG~U39olNX82@=wz++8!%nVzavSIuGx zfdnTI2QCPS11DQTzyTqV3sHnL7bM_@;70y{Tsd;!_quy#k`Sdd-Cr%Qs@{9`y59VK z_`v53aFZ^sLzcn4#L!4h~6xC}lEZh$nW1wIXa2Hp#P2i^@{%-Wa1 z`_cXdJOlm-;>RWqFm@L>1s()vz=yyS;DcZV%z@`Y{8$SwS|z@ZX7=R`46Oi=11d=^JgCzHB*8T$|`>%j+fmcD2pM@~lHwV&wCqO!f zb?^zW2I9y1c+q+vfn@imAo=l2kmi32(oz19wSNT3o=YID_Zvw1UjfNq|ANQBgHY;m za0Vp5o&;Y6x3YE*d>QQzK-%vckmBGckk)2&W%ct0qP@W9g64{D%p;}f?^#5N68N`;Q$ehBKwP)znX-ft3;1jl5KEu}9iOOp# z5xlAC^*UP*JgJOil~^XWq`Or*aYLr=BX?}dC=?!+2&_D2coPaJ(U!ay*rv<2q_wcf zj4GKgV7X8}H=-;3{CIHK?nLA;R;4rQ$sJmoqpGy!f}BK?s#=GJZKrOg14&lQTy2K? zo)y+>ChqM9zSQg;I*%|lY`A1sgaHK={6bAhO{VHOf`kl zTxn*eV7j%fmBM6hV{Kz)?3hx%m|N1yBF3ERZUp13?ArnYBT)1BoJ5TCSlF(vI&)(= z+N>^PXGMA1M~t|9ZYQuKja{DXm8*oEScJ~1j@!oNDoUDWVS1jY)rASgk1X)ge=y|Cj;p9F+~-_0$hO7L^+-BM)QhsU+qb@MBaED_^iFX3E*4KSLXr|w}Aw955h4$SQn?U1^aXt`P_?;6}nFG7?B;aUVB{;DHJU zdyR(6DuaDiR=5DOq(IdyD_|SkLdZyAD7cB@!G4RaDTQ3%cX$g3h3^X_hKM8Hvx^W@ zrg(d>Z*apw45l;&dojeIa;8yThG{M+cX#4l%QgkRagim1tbvbNjk<7Y3(}i6vD8p? zX`zhB>_tjwB`IN4$#MgfZs?e6+?l3}?7A3)*o>9CSu$X&@MLO7nhiFS&2UHW2p<=y zk%}$uT8={->?w@#E}4Ujpg3+57dng&3hQ6r943bt7N$Bxg6jDj<;<`@iwdMXvY*tz zrDF|G4Tn!HGA+di{tMt9Z`s`jTOS<*oS$ryCJl0GaJ_offDS(z?DHghD7K7)OS8v# Ri$)OIpfSoHP&kPk_8*PELVW-L literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-rocket/languages/rocket-sv_SE.po b/wp-content/plugins/wp-rocket/languages/rocket-sv_SE.po new file mode 100644 index 0000000..8796f53 --- /dev/null +++ b/wp-content/plugins/wp-rocket/languages/rocket-sv_SE.po @@ -0,0 +1,2948 @@ +# Copyright (C) 2016 WP Rocket +# This file is distributed under the same license as the WP Rocket package. +# Translators: +# wpmedia , 2019 +# Malin Andersson, 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: WP Rocket 3.3.7\n" +"Report-Msgid-Bugs-To: http://wp-rocket.me/\n" +"POT-Creation-Date: 2019-08-26 11:14-0400\n" +"PO-Revision-Date: 2019-08-26 15:14+0000\n" +"Last-Translator: Malin Andersson, 2019\n" +"Language-Team: Swedish (Sweden) (https://www.transifex.com/wp-media/teams/18133/sv_SE/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sv_SE\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 1.8.11\n" +"X-Poedit-Basepath: ..\n" +"X-Poedit-KeywordsList: __;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c\n" +"X-Poedit-SearchPath-0: .\n" +"X-Poedit-SearchPathExcluded-0: assets\n" +"X-Poedit-SearchPathExcluded-1: src\n" +"X-Poedit-SearchPathExcluded-2: vendor\n" +"X-Poedit-SearchPathExcluded-3: node_modules\n" +"X-Poedit-SearchPathExcluded-4: tests\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Textdomain-Support: yes\n" + +#: inc/3rd-party/hosting/flywheel.php:15 inc/3rd-party/hosting/godaddy.php:15 +#: inc/3rd-party/hosting/o2switch.php:15 +#: inc/3rd-party/hosting/pressidium.php:15 inc/3rd-party/hosting/savvii.php:15 +#: inc/3rd-party/hosting/wp-serveur.php:24 +#: inc/3rd-party/hosting/wpengine.php:15 +#, php-format +msgid "" +"Your site is hosted on %s, we have enabled Varnish auto-purge for " +"compatibility." +msgstr "" + +#: inc/3rd-party/hosting/kinsta.php:150 +#, php-format +msgid "" +"Your installation seems to be missing core Kinsta files managing Cache " +"clearing and CDN, which will prevent your Kinsta installation and WP Rocket " +"from working correctly. Please get in touch with Kinsta support through your" +" %1$sMyKinsta%2$s account to resolve this issue." +msgstr "" + +#: inc/3rd-party/plugins/jetpack.php:86 +msgid "Jetpack XML Sitemaps" +msgstr "" + +#: inc/3rd-party/plugins/jetpack.php:88 +msgid "Preload the sitemap from the Jetpack plugin" +msgstr "" + +#: inc/3rd-party/plugins/jetpack.php:96 +#: inc/3rd-party/plugins/seo/all-in-one-seo-pack.php:88 +#: inc/3rd-party/plugins/seo/rank-math-seo.php:34 +#: inc/3rd-party/plugins/seo/seopress.php:85 +#: inc/3rd-party/plugins/seo/the-seo-framework.php:123 +#: inc/3rd-party/plugins/seo/yoast-seo.php:86 +#, php-format +msgid "" +"We automatically detected the sitemap generated by the %s plugin. You can " +"check the option to preload it." +msgstr "" + +#: inc/3rd-party/plugins/seo/all-in-one-seo-pack.php:86 +msgid "All in One SEO XML sitemap" +msgstr "" + +#: inc/3rd-party/plugins/seo/rank-math-seo.php:32 +msgid "Rank Math XML sitemap" +msgstr "" + +#: inc/3rd-party/plugins/seo/seopress.php:83 +msgid "SEOPress XML sitemap" +msgstr "" + +#: inc/3rd-party/plugins/seo/the-seo-framework.php:121 +msgid "The SEO Framework XML sitemap" +msgstr "" + +#: inc/3rd-party/plugins/seo/yoast-seo.php:84 +msgid "Yoast SEO XML sitemap" +msgstr "" + +#: inc/admin/admin.php:13 inc/common/admin-bar.php:311 +#: inc/deprecated/deprecated.php:1789 +msgid "Support" +msgstr "Support" + +#: inc/admin/admin.php:15 +msgid "Docs" +msgstr "Dokument" + +#: inc/admin/admin.php:17 inc/common/admin-bar.php:299 +msgid "FAQ" +msgstr "Frågor och svar" + +#: inc/admin/admin.php:19 inc/common/admin-bar.php:46 +msgid "Settings" +msgstr "Inställningar" + +#: inc/admin/admin.php:64 inc/admin/admin.php:86 inc/admin/admin.php:105 +msgid "Clear this cache" +msgstr "Radera denna cache" + +#: inc/admin/admin.php:249 inc/admin/admin.php:264 +#: inc/classes/class-wp-rocket-requirements-check.php:204 +#: inc/classes/class-wp-rocket-requirements-check.php:214 +#, php-format +msgid "%s Update Rollback" +msgstr "%s Uppdatera återställning" + +#: inc/admin/admin.php:290 +#, php-format +msgid "%1$sReturn to WP Rocket%2$s or %3$sgo to Plugins page%2$s" +msgstr "" + +#: inc/admin/admin.php:529 +msgid "Settings import failed: you do not have the permissions to do this." +msgstr "" + +#: inc/admin/admin.php:533 +msgid "Settings import failed: no file uploaded." +msgstr "" + +#: inc/admin/admin.php:537 +msgid "Settings import failed: incorrect filename." +msgstr "" + +#: inc/admin/admin.php:546 +msgid "Settings import failed: incorrect filetype." +msgstr "" + +#: inc/admin/admin.php:554 +msgid "Settings import failed: " +msgstr "" + +#: inc/admin/admin.php:571 +msgid "Settings import failed: unexpected file content." +msgstr "" + +#: inc/admin/admin.php:592 +msgid "Settings imported and saved." +msgstr "Inställningar importerade och sparade." + +#: inc/admin/options.php:101 +#, php-format +msgid "Cloudflare development mode error: %s" +msgstr "" + +#: inc/admin/options.php:107 +#, php-format +msgid "Cloudflare development mode %s" +msgstr "" + +#: inc/admin/options.php:124 +#, php-format +msgid "Cloudflare cache level error: %s" +msgstr "" + +#: inc/admin/options.php:128 +msgctxt "Cloudflare caching level" +msgid "Standard" +msgstr "" + +#: inc/admin/options.php:134 +#, php-format +msgid "Cloudflare cache level set to %s" +msgstr "" + +#: inc/admin/options.php:146 +#, php-format +msgid "Cloudflare minification error: %s" +msgstr "" + +#: inc/admin/options.php:152 +#, php-format +msgid "Cloudflare minification %s" +msgstr "" + +#: inc/admin/options.php:164 +#, php-format +msgid "Cloudflare rocket loader error: %s" +msgstr "" + +#: inc/admin/options.php:170 +#, php-format +msgid "Cloudflare rocket loader %s" +msgstr "" + +#: inc/admin/options.php:182 +#, php-format +msgid "Cloudflare browser cache error: %s" +msgstr "" + +#: inc/admin/options.php:188 +#, php-format +msgid "Cloudflare browser cache set to %s seconds" +msgstr "" + +#: inc/admin/options.php:241 inc/classes/admin/settings/class-page.php:692 +msgid "Excluded CSS Files" +msgstr "" + +#: inc/admin/options.php:242 inc/classes/admin/settings/class-page.php:784 +msgid "Excluded Inline JavaScript" +msgstr "" + +#: inc/admin/options.php:243 inc/classes/admin/settings/class-page.php:802 +msgid "Excluded JavaScript Files" +msgstr "" + +#: inc/admin/options.php:244 inc/classes/admin/settings/class-page.php:1128 +msgid "Never Cache URL(s)" +msgstr "" + +#: inc/admin/options.php:245 inc/classes/admin/settings/class-page.php:1144 +msgid "Never Cache User Agent(s)" +msgstr "" + +#: inc/admin/options.php:246 inc/classes/admin/settings/class-page.php:1149 +msgid "Always Purge URL(s)" +msgstr "" + +#: inc/admin/options.php:247 inc/classes/admin/settings/class-page.php:1443 +msgid "Exclude files from CDN" +msgstr "" + +#: inc/admin/options.php:265 +#, php-format +msgid "%1$s: %2$s." +msgstr "" + +#: inc/admin/options.php:275 +msgid "The following pattern is invalid and has been removed:" +msgid_plural "The following patterns are invalid and have been removed:" +msgstr[0] "" +msgstr[1] "" + +#: inc/admin/ui/meta-boxes.php:14 inc/admin/ui/notices.php:955 +#: inc/common/admin-bar.php:65 inc/common/admin-bar.php:118 +#: views/settings/page-sections/dashboard.php:115 +msgid "Clear cache" +msgstr "Radera cache" + +#: inc/admin/ui/meta-boxes.php:36 +msgid "WP Rocket Options" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:66 +msgid "Never cache this page" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:70 +msgid "Activate these options on this post:" +msgstr "Aktivera följande alternativ för detta inlägg:" + +#: inc/admin/ui/meta-boxes.php:73 +msgid "LazyLoad for images" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:74 +msgid "LazyLoad for iframes/videos" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:75 +#: inc/classes/admin/settings/class-page.php:615 +msgid "Minify HTML" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:76 +msgid "Minify/combine CSS" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:77 +msgid "Minify/combine JS" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:78 +#: inc/classes/admin/settings/class-page.php:1413 +#: inc/classes/admin/settings/class-page.php:1424 +#: inc/deprecated/deprecated.php:1775 +msgid "CDN" +msgstr "CDN" + +#: inc/admin/ui/meta-boxes.php:79 +msgid "Optimize CSS Delivery" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:80 +msgid "Defer JS" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:86 +#, php-format +msgid "Activate first the %s option." +msgstr "Aktivera först %s alternativet." + +#: inc/admin/ui/meta-boxes.php:102 +#, php-format +msgid "" +"%1$sNote:%2$s None of these options will be applied if this post has been " +"excluded from cache in the global cache settings." +msgstr "" + +#: inc/admin/ui/notices.php:24 inc/admin/ui/notices.php:34 +#, php-format +msgid "" +"%1$s has not been deactivated due to missing writing permissions.
      \n" +"Make %2$s writeable and retry deactivation, or force deactivation now:" +msgstr "" + +#: inc/admin/ui/notices.php:83 +#, php-format +msgid "" +"%s: One or more plugins have been enabled or disabled, " +"clear the cache if they affect the front end of your site." +msgstr "" + +#: inc/admin/ui/notices.php:196 +#, php-format +msgid "" +"%s: The following plugins are not compatible with this " +"plugin and may cause unexpected results:" +msgstr "" + +#: inc/admin/ui/notices.php:202 +msgid "Deactivate" +msgstr "Inaktivera" + +#: inc/admin/ui/notices.php:243 +msgid "" +"WP Rocket Footer JS is not an official add-on. It prevents some options in " +"WP Rocket from working correctly. Please deactivate it if you have problems." +msgstr "" + +#: inc/admin/ui/notices.php:283 +#, php-format +msgid "" +"Endurance Cache is currently enabled, which will conflict with WP Rocket " +"Cache. Please set the Endurance Cache cache level to Off (Level 0) on the " +"%1$sSettings > General%2$s page to prevent any issues." +msgstr "" + +#: inc/admin/ui/notices.php:305 +#, php-format +msgid "" +"%1$s: A custom permalink structure is required for the plugin to work " +"properly. %2$sGo to permalinks settings%3$s" +msgstr "" + +#: inc/admin/ui/notices.php:442 +#, php-format +msgid "" +"%s could not modify the .htaccess file due to missing writing permissions." +msgstr "" + +#: inc/admin/ui/notices.php:448 inc/admin/ui/notices.php:1032 +#, php-format +msgid "Troubleshoot: %1$sHow to make system files writeable%2$s" +msgstr "" + +#: inc/admin/ui/notices.php:450 inc/admin/ui/notices.php:1034 +msgid "" +"https://docs.wp-rocket.me/article/626-how-to-make-system-files-htaccess-wp-" +"config-writeable/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" + +#: inc/admin/ui/notices.php:456 +msgid "" +"Don’t worry, WP Rocket’s page caching and settings will still function " +"correctly." +msgstr "" + +#: inc/admin/ui/notices.php:456 +msgid "" +"For optimal performance, adding the following lines into your .htaccess is " +"recommended (not required):" +msgstr "" + +#: inc/admin/ui/notices.php:600 +#, php-format +msgid "" +"%1$s is good to go! %2$sTest your load time%4$s, or visit your " +"%3$ssettings%4$s." +msgstr "" + +#: inc/admin/ui/notices.php:721 +msgid "" +"Would you allow WP Rocket to collect non-sensitive diagnostic data from this" +" website?" +msgstr "" + +#: inc/admin/ui/notices.php:722 +msgid "This would help us to improve WP Rocket for you in the future." +msgstr "" + +#: inc/admin/ui/notices.php:728 +msgid "What info will we collect?" +msgstr "" + +#: inc/admin/ui/notices.php:733 +msgid "" +"Below is a detailed view of all data WP Rocket will collect if granted " +"permission. WP Rocket will never transmit any domain names or email " +"addresses (except for license validation), IP addresses, or third-party API " +"keys." +msgstr "" + +#: inc/admin/ui/notices.php:742 +msgid "Yes, allow" +msgstr "" + +#: inc/admin/ui/notices.php:745 +msgid "No, thanks" +msgstr "" + +#: inc/admin/ui/notices.php:783 +msgid "Thank you!" +msgstr "" + +#: inc/admin/ui/notices.php:788 +msgid "WP Rocket now collects these metrics from your website:" +msgstr "" + +#: inc/admin/ui/notices.php:825 +#, php-format +msgid "%s: Cache cleared." +msgstr "" + +#: inc/admin/ui/notices.php:830 +#, php-format +msgid "%s: Post cache cleared." +msgstr "" + +#: inc/admin/ui/notices.php:835 +#, php-format +msgid "%s: Term cache cleared." +msgstr "" + +#: inc/admin/ui/notices.php:840 +#, php-format +msgid "%s: User cache cleared." +msgstr "" + +#: inc/admin/ui/notices.php:910 +msgid "" +"The following scheduled event failed to run. This may indicate the CRON " +"system is not running properly, which can prevent some WP Rocket features " +"from working as intended:" +msgid_plural "" +"The following scheduled events failed to run. This may indicate the CRON " +"system is not running properly, which can prevent some WP Rocket features " +"from working as intended:" +msgstr[0] "" +msgstr[1] "" + +#: inc/admin/ui/notices.php:919 +msgid "Please contact your host to check if CRON is working." +msgstr "" + +#: inc/admin/ui/notices.php:958 +msgid "Stop Preload" +msgstr "" + +#: inc/admin/ui/notices.php:976 +msgid "Force deactivation " +msgstr "" + +#: inc/admin/ui/notices.php:989 +msgid "The following code should have been written to this file:" +msgstr "" + +#: inc/admin/ui/notices.php:999 views/settings/page-sections/dashboard.php:45 +msgid "Dismiss this notice." +msgstr "" + +#: inc/admin/ui/notices.php:1020 +#, php-format +msgid "%s cannot configure itself due to missing writing permissions." +msgstr "" + +#: inc/admin/ui/notices.php:1026 +#, php-format +msgid "Affected file/folder: %s" +msgstr "" + +#: inc/classes/admin/Database/class-optimization.php:41 +#: inc/classes/admin/settings/class-page.php:1289 +msgid "Revisions" +msgstr "" + +#: inc/classes/admin/Database/class-optimization.php:42 +#: inc/classes/admin/settings/class-page.php:1299 +msgid "Auto Drafts" +msgstr "" + +#: inc/classes/admin/Database/class-optimization.php:43 +#: inc/classes/admin/settings/class-page.php:1309 +msgid "Trashed Posts" +msgstr "" + +#: inc/classes/admin/Database/class-optimization.php:44 +#: inc/classes/admin/settings/class-page.php:1319 +msgid "Spam Comments" +msgstr "" + +#: inc/classes/admin/Database/class-optimization.php:45 +#: inc/classes/admin/settings/class-page.php:1329 +msgid "Trashed Comments" +msgstr "" + +#: inc/classes/admin/Database/class-optimization.php:46 +#: inc/classes/admin/settings/class-page.php:1339 +msgid "Expired transients" +msgstr "" + +#: inc/classes/admin/Database/class-optimization.php:47 +msgid "Transients" +msgstr "" + +#: inc/classes/admin/Database/class-optimization.php:48 +msgid "Tables" +msgstr "" + +#: inc/classes/admin/class-logs.php:124 +msgid "The debug file could not be deleted." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:212 +#: inc/classes/admin/settings/class-page.php:213 +msgid "Unavailable" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:327 +#: inc/deprecated/deprecated.php:1791 +#: views/settings/page-sections/dashboard.php:72 +msgid "License" +msgstr "Licens" + +#: inc/classes/admin/settings/class-page.php:344 +msgid "API key" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:359 +msgid "Email address" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:388 +msgid "Dashboard" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:389 +msgid "Get help, account info" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:398 +msgid "My Status" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:408 views/settings/page.php:71 +msgid "Rocket Tester" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:409 +msgid "I am part of the WP Rocket Beta Testing Program." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:417 views/settings/page.php:89 +msgid "Rocket Analytics" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:419 +#, php-format +msgid "" +"I agree to share anonymous data with the development team to help improve WP" +" Rocket. %1$sWhat info will we collect?%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:447 +msgid "Cache" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:448 +msgid "Basic cache options" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:455 +msgid "Mobile Cache" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:457 +msgid "Speed up your site for mobile visitors." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:462 +msgid "" +"We detected you use a plugin that requires a separate cache for mobile, and " +"automatically enabled this option for compatibility." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:466 +msgid "User Cache" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:469 +#, php-format +msgid "" +"%1$sUser cache%2$s is great when you have user-specific or restricted " +"content on your website." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:477 +msgid "Cache Lifespan" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:480 +#, php-format +msgid "" +"Cache lifespan is the period of time after which all cache files are " +"removed.
      Enable %1$spreloading%2$s for the cache to be rebuilt " +"automatically after lifespan expiration." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:494 +msgid "Enable caching for logged-in WordPress users" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:502 +msgid "Enable caching for mobile devices" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:517 +msgid "Separate cache files for mobile devices" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:519 +#, php-format +msgid "" +"%1$sMobile cache%2$s works safest with both options enabled. When in doubt, " +"keep both." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:535 +msgid "" +"Specify time after which the global cache is cleared
      (0 = unlimited )" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:537 +#, php-format +msgid "" +"Reduce lifespan to 10 hours or less if you notice issues that seem to appear" +" periodically. %1$sWhy?%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:543 +msgid "Minutes" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:544 +msgid "Hours" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:545 +msgid "Days" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:571 +msgid "File Optimization" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:572 +msgid "Optimize CSS & JS" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:579 +msgid "Basic Settings" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:586 +#: inc/classes/admin/settings/class-page.php:596 +#: inc/classes/admin/settings/class-page.php:606 +#, php-format +msgid "" +"%1$s Minification is currently activated in Autoptimize. If" +" you want to use %2$s’s minification, disable those options in Autoptimize." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:589 +msgid "CSS Files" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:599 +msgid "JavaScript Files" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:619 +msgid "Minifying HTML removes whitespace and comments to reduce the size." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:630 +msgid "Combine Google Fonts files" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:631 +msgid "Combining Google Fonts will reduce the number of HTTP requests." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:639 +msgid "Remove query strings from static resources" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:641 +#, php-format +msgid "" +"Removes the version query string from static files (e.g. style.css?ver=1.0) " +"and encodes it into the filename instead (e.g. style-1.0.css). Can improve " +"your GTMetrix score. %1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:649 +msgid "Minify CSS files" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:650 +msgid "Minify CSS removes whitespace and comments to reduce the file size." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:663 +#: inc/classes/admin/settings/class-page.php:685 +#: inc/classes/admin/settings/class-page.php:755 +#: inc/classes/admin/settings/class-page.php:777 +msgid "This could break things!" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:664 +#: inc/classes/admin/settings/class-page.php:686 +#: inc/classes/admin/settings/class-page.php:756 +#: inc/classes/admin/settings/class-page.php:778 +msgid "" +"If you notice any errors on your website after having activated this " +"setting, just deactivate it again, and your site will be back to normal." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:665 +msgid "Activate minify CSS" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:670 +msgid "Combine CSS files (Enable Minify CSS files to select)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:672 +#, php-format +msgid "" +"Combine CSS merges all your files into 1, reducing HTTP requests. Not " +"recommended if your site uses HTTP/2. %1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:687 +msgid "Activate combine CSS" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:693 +msgid "" +"Specify URLs of CSS files to be excluded from minification and concatenation" +" (one per line)." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:694 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*).css " +"wildcards to exclude all CSS files located at a specific path." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:707 +msgid "Optimize CSS delivery" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:714 +#, php-format +msgctxt "WP Critical CSS compatibility" +msgid "" +"Optimize CSS Delivery is currently handled by the %1$s plugin. If you want " +"to use WP Rocket’s Optimize CSS Delivery option, disable the %1$s plugin." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:716 +#, php-format +msgid "" +"Optimize CSS delivery eliminates render-blocking CSS on your website for " +"faster perceived load time. %1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:727 +msgid "Fallback critical CSS" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:732 +#, php-format +msgid "" +"Provides a fallback if auto-generated critical path CSS is incomplete. " +"%1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:741 +msgid "Minify JavaScript files" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:742 +msgid "" +"Minify JavaScript removes whitespace and comments to reduce the file size." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:757 +msgid "Activate minify JavaScript" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:762 +msgid "" +"Combine JavaScript files (Enable Minify JavaScript files to select)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:764 +#, php-format +msgid "" +"Combine JavaScript files combines your site’s internal, 3rd party and inline" +" JS reducing HTTP requests. Not recommended if your site uses HTTP/2. " +"%1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:779 +msgid "Activate combine JavaScript" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:786 +#, php-format +msgid "" +"Specify patterns of inline JavaScript to be excluded from concatenation (one" +" per line). %1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:803 +msgid "" +"Specify URLs of JavaScript files to be excluded from minification and " +"concatenation (one per line)." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:804 +msgid "" +"Internal: The domain part of the URL will be stripped " +"automatically. Use (.*).js wildcards to exclude all JS files located at a " +"specific path." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:806 +#, php-format +msgid "" +"3rd Party: Use either the full URL path or only the domain " +"name, to exclude external JS. %1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:822 +msgid "Load JavaScript deferred" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:824 +#, php-format +msgid "" +"Load JavaScript deferred eliminates render-blocking JS on your site and can " +"improve load time. %1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:835 +msgid "Safe Mode for jQuery (recommended)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:836 +msgid "" +"Safe mode for jQuery for deferred JS ensures support for inline jQuery " +"references from themes and plugins by loading jQuery at the top of the " +"document as a render-blocking script.
      Deactivating may result in " +"broken functionality, test thoroughly!" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:861 +msgid "Media" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:862 +msgid "LazyLoad, emojis, embeds" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:869 +msgid "LazyLoad" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:872 +#, php-format +msgid "" +"It can improve actual and perceived loading time as images, iframes, and " +"videos will be loaded only as they enter (or about to enter) the viewport " +"and reduces the number of HTTP requests. %1$sMore Info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:879 +#, php-format +msgid "" +"Lazyload is currently activated in Autoptimize. If you want" +" to use %1$s’s lazyload, disable this option in Autoptimize." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:882 +msgid "Emoji 👻" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:884 +msgid "" +"Use default emoji of visitor's browser instead of loading emoji from " +"WordPress.org" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:888 +msgid "Embeds" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:890 +msgid "" +"Prevents others from embedding content from your site, prevents you from " +"embedding content from other (non-whitelisted) sites, and removes JavaScript" +" requests related to WordPress embeds" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:900 +msgid "Enable for images" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:911 +msgctxt "Avada" +msgid "" +"Lazyload for images is currently activated in Avada. If you want to use WP " +"Rocket’s LazyLoad, disable this option in Avada." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:919 +msgid "Enable for iframes and videos" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:934 +msgid "Replace YouTube iframe with preview image" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:935 +msgid "" +"This can significantly improve your loading time if you have a lot of " +"YouTube videos on a page." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:947 +msgid "Disable Emoji" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:948 +msgid "Disable Emoji will reduce the number of external HTTP requests." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:956 +msgid "Disable WordPress embeds" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:978 +#: inc/classes/admin/settings/class-page.php:988 +#: inc/deprecated/deprecated.php:1778 +msgid "Preload" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:979 +msgid "Generate cache files" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:991 +#, php-format +msgid "" +"When you enable preloading WP Rocket will generate the cache starting with " +"the links on your homepage followed by the sitemaps you specify. Preloading " +"is automatically triggered when you add or update content and can also be " +"manually triggered from the admin bar or from the %1$sWP Rocket " +"Dashboard%2$s." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:999 +msgid "Prefetch DNS Requests" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1001 +msgid "" +"DNS prefetching can make external files load faster, especially on mobile " +"networks" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1015 +msgid "Activate Preloading" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1034 +msgid "Activate sitemap-based cache preloading" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1053 +msgid "Sitemaps for preloading" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1057 +msgid "Specify XML sitemap(s) to be used for preloading" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1067 +msgid "URLs to prefetch" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1068 +msgid "" +"Specify external hosts to be prefetched (no http:, one per " +"line)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1091 +msgid "Advanced Rules" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1092 +msgid "Fine-tune cache rules" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1101 +msgid "" +"Sensitive pages like custom login/logout URLs should be excluded from cache." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1104 +msgctxt "plugin name" +msgid "WooCommerce" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1106 +msgctxt "plugin name" +msgid "Easy Digital Downloads" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1108 +msgctxt "plugin name" +msgid "iThemes Exchange" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1110 +msgctxt "plugin name" +msgid "Jigoshop" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1112 +msgctxt "plugin name" +msgid "WP-Shop" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1118 +#, php-format +msgid "" +"
      Cart, checkout and \"my account\" pages set in " +"%1$s%2$s%3$s will be detected and never cached by default." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1139 +msgid "Never Cache Cookies" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1158 +msgid "Cache Query String(s)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1161 +#, php-format +msgid "" +"%1$sCache for query strings%2$s enables you to force caching for specific " +"GET parameters." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1175 +msgid "" +"Specify URLs of pages or posts that should never be cached (one per line)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1176 +#: inc/classes/admin/settings/class-page.php:1204 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*) " +"wildcards to address multiple URLs under a given path." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1185 +msgid "" +"Specify the IDs of cookies that, when set in the visitor's browser, should " +"prevent a page from getting cached (one per line)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1193 +msgid "" +"Specify user agent strings that should never see cached pages (one per line)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1194 +msgid "Use (.*) wildcards to detect parts of UA strings." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1203 +msgid "" +"Specify URLs you always want purged from cache whenever you update any post " +"or page (one per line)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1212 +msgid "Specify query strings for caching (one per line)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1240 +#: inc/deprecated/deprecated.php:1777 +msgid "Database" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1241 +msgid "Optimize, reduce bloat" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1250 +msgid "Post Cleanup" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1252 +msgid "" +"Post revisions and drafts will be permanently deleted. Do not use this " +"option if you need to retain revisions or drafts." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1260 +msgid "Comments Cleanup" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1262 +msgid "Spam and trashed comments will be permanently deleted." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1266 +msgid "Transients Cleanup" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1268 +msgid "" +"Transients are temporary options; they are safe to remove. They will be " +"automatically regenerated as your plugins require them." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1272 +msgid "Database Cleanup" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1274 +msgid "Reduces overhead of database tables" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1278 +msgid "Automatic cleanup" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1291 +#, php-format +msgid "%s revision in your database." +msgid_plural "%s revisions in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1301 +#, php-format +msgid "%s draft in your database." +msgid_plural "%s drafts in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1311 +#, php-format +msgid "%s trashed post in your database." +msgid_plural "%s trashed posts in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1321 +#, php-format +msgid "%s spam comment in your database." +msgid_plural "%s spam comments in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1331 +#, php-format +msgid "%s trashed comment in your database." +msgid_plural "%s trashed comments in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1341 +#, php-format +msgid "%s expired transient in your database." +msgid_plural "%s expired transients in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1349 +msgid "All transients" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1351 +#, php-format +msgid "%s transient in your database." +msgid_plural "%s transients in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1359 +msgid "Optimize Tables" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1361 +#, php-format +msgid "%s table to optimize in your database." +msgid_plural "%s tables to optimize in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1372 +msgid "Schedule Automatic Cleanup" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1384 +msgid "Frequency" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1392 +msgid "Daily" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1393 +msgid "Weekly" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1394 +msgid "Monthly" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1414 +msgid "Integrate your CDN" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1426 +msgid "" +"All URLs of static files (CSS, JS, images) will be rewritten to the CNAME(s)" +" you provide." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1428 +#, php-format +msgid "" +"Not required for services like Cloudflare and Sucuri. Please see our " +"available %1$sAdd-ons%2$s." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1469 +#, php-format +msgid "" +"%1$s%2$s Add-on%3$s is currently enabled. Configuration of the CDN settings " +"is not required for %2$s to work on your site." +msgid_plural "" +"%1$s%2$s Add-ons%3$s are currently enabled. Configuration of the CDN " +"settings is not required for %2$s to work on your site." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/admin/settings/class-page.php:1484 +msgid "Enable Content Delivery Network" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1493 +msgid "CDN CNAME(s)" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1494 +msgid "Specify the CNAME(s) below" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1501 +msgid "" +"Specify URL(s) of files that should not get served via CDN (one per line)." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1502 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*) " +"wildcards to exclude all files of a given file type located at a specific " +"path." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1525 +#: inc/classes/admin/settings/class-page.php:1533 +msgid "Heartbeat" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1526 +msgid "Control WordPress Heartbeat API" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1534 +msgid "" +"Reducing or disabling the Heartbeat API’s activity can help save some of " +"your server’s resources." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1543 +msgid "Reduce or disable Heartbeat activity" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1544 +msgid "" +"Reducing activity will change Heartbeat frequency from one hit each minute " +"to one hit every 2 minutes." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1544 +msgid "" +"Disabling Heartbeat entirely may break plugins and themes using this API." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1558 +msgid "Do not limit" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1559 +msgid "Reduce activity" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1560 +msgid "Disable" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1568 +msgid "Control Heartbeat" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1577 +msgid "Behavior in backend" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1584 +msgid "Behavior in post editor" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1590 +msgid "Behavior in frontend" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1609 +msgid "Add-ons" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1610 +msgid "Add more features" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1617 +msgid "One-click Rocket Add-ons" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1618 +msgid "" +"One-Click Add-ons are features extending available options without " +"configuration needed. Switch the option \"on\" to enable from this screen." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1628 +msgid "Rocket Add-ons" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1629 +msgid "Rocket Add-ons are complementary features extending available options." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1642 +msgid "Google Tracking" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1648 +msgid "Improve browser caching for Google Analytics" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1650 +#, php-format +msgid "" +"WP Rocket will host these Google scripts locally on your server to help " +"satisfy the PageSpeed recommendation for Leverage browser " +"caching.
      %1$sLearn more%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1665 +msgid "Facebook Pixel" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1671 +msgid "Improve browser caching for Facebook Pixel" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1673 +#, php-format +msgid "" +"WP Rocket will host these Facebook Pixels locally on your server to help " +"satisfy the PageSpeed recommendation for Leverage browser " +"caching.
      %1$sLearn more%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1706 +msgid "Varnish" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1712 +msgid "If Varnish runs on your server, you must activate this add-on." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1714 +#, php-format +msgid "" +"Varnish cache will be purged each time WP Rocket clears its cache to ensure " +"content is always up-to-date.
      %1$sLearn more%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1729 +#: inc/classes/admin/settings/class-page.php:1789 +msgid "Cloudflare" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1735 +msgid "Integrate your Cloudflare account with this add-on." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1736 +msgid "" +"Provide your account email, global API key, and domain to use options such " +"as clearing the Cloudflare cache and enabling optimal settings with WP " +"Rocket." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1748 +msgid "Clear the Sucuri cache when WP Rocket’s cache is cleared." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1751 +msgid "" +"Provide your API key to clear the Sucuri cache when WP Rocket’s cache is " +"cleared." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1759 +#: inc/classes/admin/settings/class-page.php:1907 +msgid "Sucuri" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1765 +msgid "Synchronize Sucuri cache with this add-on." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1805 +msgid "Cloudflare credentials" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1814 +msgid "Cloudflare settings" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1828 +msgctxt "Cloudflare" +msgid "Global API key:" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1829 +msgid "" +"https://support.cloudflare.com/hc/en-us/articles/200167836-Where-do-I-find-" +"my-Cloudflare-API-key-" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1829 +msgctxt "Cloudflare" +msgid "Find your API key" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1841 +msgctxt "Cloudflare" +msgid "Account email" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1850 +msgctxt "Cloudflare" +msgid "Zone ID" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1860 +msgid "Development mode" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1862 +#, php-format +msgid "" +"Temporarily activate development mode on your website. This setting will " +"automatically turn off after 3 hours. %1$sLearn more%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1870 +msgid "Optimal settings" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1871 +msgid "" +"Automatically enhances your Cloudflare configuration for speed, performance " +"grade and compatibility." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1879 +msgid "Relative protocol" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1880 +msgid "" +"Should only be used with Cloudflare's flexible SSL feature. URLs of static " +"files (CSS, JS, images) will be rewritten to use // instead of http:// or " +"https://." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1920 +msgid "Sucuri credentials" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1933 +msgctxt "Sucuri" +msgid "" +"Firewall API key (for plugin), must be in format {32 characters}/{32 " +"characters}:" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1934 +msgctxt "Sucuri" +msgid "Find your API key" +msgstr "" + +#: inc/classes/admin/settings/class-render.php:486 +#: inc/deprecated/deprecated.php:1296 +msgid "Upload file and import settings" +msgstr "Ladda upp fil och importera inställningar" + +#: inc/classes/admin/settings/class-settings.php:385 +msgid "" +"Sucuri Add-on: The API key for the Sucuri firewall must be in format " +"{32 characters}/{32 characters}." +msgstr "" + +#: inc/classes/admin/settings/class-settings.php:462 +#: inc/deprecated/deprecated.php:1247 +msgid "Settings saved." +msgstr "Inställningar sparade." + +#: inc/classes/class-wp-rocket-requirements-check.php:148 +#, php-format +msgid "To function properly, %1$s %2$s requires at least:" +msgstr "" + +#: inc/classes/class-wp-rocket-requirements-check.php:152 +#, php-format +msgid "" +"PHP %1$s. To use this WP Rocket version, please ask your web host how to " +"upgrade your server to PHP %1$s or higher." +msgstr "" + +#: inc/classes/class-wp-rocket-requirements-check.php:157 +#, php-format +msgid "" +"WordPress %1$s. To use this WP Rocket version, please upgrade WordPress to " +"version %1$s or higher." +msgstr "" + +#: inc/classes/class-wp-rocket-requirements-check.php:160 +msgid "" +"If you are not able to upgrade, you can rollback to the previous version by " +"using the button below." +msgstr "" + +#: inc/classes/class-wp-rocket-requirements-check.php:162 +#: inc/deprecated/deprecated.php:1949 +#, php-format +msgid "Re-install version %s" +msgstr "" + +#: inc/classes/logger/class-logger.php:253 +#: inc/classes/logger/class-logger.php:285 +msgid "The log file does not exist." +msgstr "" + +#: inc/classes/logger/class-logger.php:259 +#: inc/classes/logger/class-logger.php:291 +msgid "The log file could not be read." +msgstr "" + +#: inc/classes/logger/class-logger.php:278 +msgid "The logs are not saved into a file." +msgstr "" + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:88 +#: inc/classes/optimization/CSS/class-critical-css-generation.php:99 +#: inc/classes/optimization/CSS/class-critical-css-generation.php:110 +#: inc/classes/optimization/CSS/class-critical-css-generation.php:120 +#: inc/classes/optimization/CSS/class-critical-css-generation.php:142 +#, php-format +msgid "Critical CSS for %1$s not generated. Error: %2$s" +msgstr "" + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:99 +msgid "The API returned an invalid response code." +msgstr "" + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:110 +msgid "The API returned an empty response." +msgstr "" + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:145 +#, php-format +msgid "The critical CSS content could not be saved as a file in %s." +msgstr "" + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:154 +#, php-format +msgid "Critical CSS for %s generated." +msgstr "" + +#: inc/classes/preload/class-homepage.php:83 +#, php-format +msgid "" +"Preload encountered an error. Could not gather links on %1$s because of the " +"following error: %2$s. %3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-homepage.php:96 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: %2$s. Security measures could be preventing access. " +"%3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-homepage.php:102 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: 404. Please make sure your homepage is accessible in your " +"browser. %2$sLearn more%3$s." +msgstr "" + +#: inc/classes/preload/class-homepage.php:108 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: 500. Please check with your web host about server access. " +"%2$sLearn more%3$s." +msgstr "" + +#: inc/classes/preload/class-homepage.php:114 +#, php-format +msgid "" +"Preload encountered an error. Could not gather links on %1$s because it " +"returned the following response code: %2$s. %3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:138 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not gather links on %1$s because" +" of the following error: %2$s. %3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:153 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: %2$s. Security measures could be preventing access." +" %3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:158 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: 404. Please make sure you entered the correct " +"sitemap URL and it is accessible in your browser. %2$sLearn more%3$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:163 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: 500. Please check with your web host about server " +"access. %2$sLearn more%3$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:168 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not gather links on %1$s because" +" it returned the following response code: %2$s. %3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:184 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not collect links from %1$s " +"because the file is empty. %2$sLearn more%3$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:205 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not collect links from %1$s " +"because of an error during the XML sitemap parsing. %2$sLearn more%3$s." +msgstr "" + +#: inc/classes/subscriber/Optimization/class-critical-css-subscriber.php:138 +#, php-format +msgid "" +"Critical CSS generation is currently running: %1$d of %2$d page types " +"completed. (Refresh this page to view progress)" +msgstr "" + +#: inc/classes/subscriber/Optimization/class-critical-css-subscriber.php:189 +#, php-format +msgid "Critical CSS generation finished for %1$d of %2$d page types." +msgstr "" + +#: inc/classes/subscriber/Optimization/class-critical-css-subscriber.php:203 +msgid "Critical CSS generation encountered one or more errors." +msgstr "" + +#: inc/classes/subscriber/Optimization/class-critical-css-subscriber.php:203 +msgid "Learn more." +msgstr "" + +#: inc/classes/subscriber/Tools/class-cache-dir-size-check-subscriber.php:51 +#: inc/classes/subscriber/class-facebook-tracking-cache-busting-subscriber.php:97 +#: inc/classes/subscriber/class-google-tracking-cache-busting-subscriber.php:154 +#: inc/common/cron.php:33 +msgid "weekly" +msgstr "" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:148 +msgid "Database optimization process is running" +msgstr "" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:179 +msgid "" +"Database optimization process is complete. Everything was already optimized!" +msgstr "" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:182 +msgid "" +"Database optimization process is complete. List of optimized items below:" +msgstr "" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:190 +#, php-format +msgid "%1$d %2$s optimized." +msgstr "" + +#: inc/classes/subscriber/admin/Settings/class-page-subscriber.php:137 +#: inc/deprecated/deprecated.php:1788 +#: views/settings/page-sections/tools.php:33 +msgid "Tools" +msgstr "Verktyg" + +#: inc/classes/subscriber/admin/Settings/class-page-subscriber.php:138 +msgid "Import, Export, Rollback" +msgstr "" + +#: inc/classes/subscriber/admin/Settings/class-page-subscriber.php:160 +#: views/settings/page-sections/imagify.php:13 +msgid "Image Optimization" +msgstr "" + +#: inc/classes/subscriber/admin/Settings/class-page-subscriber.php:161 +msgid "Compress your images" +msgstr "" + +#: inc/classes/subscriber/preload/class-preload-subscriber.php:212 +#, php-format +msgid "" +"Preload: WP Rocket has started preloading your website. Go to the %1$sWP " +"Rocket settings%2$s page to track progress." +msgstr "" + +#: inc/classes/subscriber/preload/class-preload-subscriber.php:246 +#, php-format +msgid "" +"Preload: %1$s uncached page has now been preloaded. (refresh to see " +"progress)" +msgid_plural "" +"Preload: %1$s uncached pages have now been preloaded. (refresh to see " +"progress)" +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/subscriber/preload/class-preload-subscriber.php:255 +msgid "The following error happened during gathering of the URLs to preload:" +msgid_plural "" +"The following errors happened during gathering of the URLs to preload:" +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/subscriber/preload/class-preload-subscriber.php:308 +#, php-format +msgid "Preload complete: %d pages have been cached." +msgstr "" + +#: inc/classes/subscriber/preload/class-sitemap-preload-subscriber.php:117 +#, php-format +msgid "" +"%1$sSimpleXML PHP extension%2$s is not enabled on your server. Please " +"contact your host to enable it before running sitemap-based cache " +"preloading." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:72 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"Please deactivate the following %s option which conflicts with WP Rocket " +"features:" +msgid_plural "" +"Please deactivate the following %s options which conflict with WP Rocket " +"features:" +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:145 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sdisable emoji%3$s conflicts with WP Rockets %2$sdisable emoji%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:167 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sremove query strings%3$s conflicts with WP Rocket %2$sremove query " +"strings%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:203 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sGZIP compression%3$s conflicts with WP Rocket %2$sGZIP " +"compression%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:239 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sbrowser caching%3$s conflicts with WP Rocket %2$sbrowser " +"caching%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:271 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$spage caching%3$s conflicts with WP Rocket %2$spage caching%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:305 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sasset optimization%3$s conflicts with WP Rocket %2$sfile " +"optimization%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:123 +#, php-format +msgid "Sucuri cache purge error: %s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:128 +msgid "" +"The Sucuri cache is being cleared. Note that it may take up to two minutes " +"for it to be fully flushed." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:242 +msgid "Sucuri firewall API key was not found." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:251 +msgid "Sucuri firewall API key is invalid." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:303 +msgid "Error when contacting Sucuri firewall API." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:313 +#, php-format +msgid "Error when contacting Sucuri firewall API. Error message was: %s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:324 +msgid "Could not get a response from the Sucuri firewall API." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:335 +msgid "Got an invalid response from the Sucuri firewall API." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:345 +msgid "The Sucuri firewall API returned an unknown error." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:348 +#, php-format +msgid "The Sucuri firewall API returned the following error: %s" +msgid_plural "The Sucuri firewall API returned the following errors: %s" +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/traits/trait-updater-api-tools.php:53 +#: inc/deprecated/3.3.php:760 inc/deprecated/3.3.php:769 +#, php-format +msgid "" +"An unexpected error occurred. Something may be wrong with WP-Rocket.me or " +"this server’s configuration. If you continue to have problems, contact support." +msgstr "" + +#: inc/common/admin-bar.php:106 inc/common/admin-bar.php:260 +#: inc/functions/i18n.php:39 inc/functions/i18n.php:48 +msgid "All languages" +msgstr "Alla språk" + +#: inc/common/admin-bar.php:133 +msgid "Clear this post" +msgstr "Rensa det här inlägget" + +#: inc/common/admin-bar.php:147 +msgid "Purge this URL" +msgstr "Rensa webbadressen" + +#: inc/common/admin-bar.php:163 +msgid "Purge OPcache" +msgstr "" + +#: inc/common/admin-bar.php:180 +msgid "Regenerate Critical Path CSS" +msgstr "" + +#: inc/common/admin-bar.php:196 +msgid "Clear Cloudflare cache" +msgstr "" + +#: inc/common/admin-bar.php:217 inc/common/admin-bar.php:272 +#: views/settings/page-sections/dashboard.php:135 +msgid "Preload cache" +msgstr "Förladda cache" + +#: inc/common/admin-bar.php:287 views/settings/partials/documentation.php:13 +msgid "Documentation" +msgstr "Dokumentation" + +#: inc/common/cron.php:24 +#, php-format +msgid "%s clear" +msgstr "%s klart" + +#: inc/common/cron.php:39 +msgid "monthly" +msgstr "" + +#: inc/common/purge.php:456 +#, php-format +msgid "Cloudflare cache purge error: %s" +msgstr "" + +#: inc/common/purge.php:461 +msgid "Cloudflare cache successfully purged" +msgstr "" + +#: inc/deprecated/3.2.php:51 views/settings/page-sections/imagify.php:35 +msgid "Activate Imagify" +msgstr "" + +#: inc/deprecated/3.2.php:51 +msgid "Install Imagify for Free" +msgstr "" + +#: inc/deprecated/3.2.php:66 +msgid "" +"Speed up your website and boost your SEO by reducing image file sizes " +"without losing quality with Imagify." +msgstr "" + +#: inc/deprecated/3.2.php:71 +msgid "More details" +msgstr "" + +#: inc/deprecated/3.2.php:227 +#, php-format +msgid "Sitemap preload: %d pages have been cached." +msgstr "" + +#: inc/deprecated/3.2.php:260 +#, php-format +msgid "" +"Sitemap preload: %d uncached pages have now been preloaded. (refresh to see " +"progress)" +msgstr "" + +#: inc/deprecated/deprecated.php:242 +msgid "JS files with Deferred Loading JavaScript" +msgstr "" + +#: inc/deprecated/deprecated.php:295 +msgid "Add URL" +msgstr "Ange URL" + +#: inc/deprecated/deprecated.php:1279 views/settings/fields/import-form.php:22 +msgid "" +"Before you can upload your import file, you will need to fix the following " +"error:" +msgstr "Innan du kan ladda upp din importfil, måste du åtgärda följande fel:" + +#: inc/deprecated/deprecated.php:1290 views/settings/fields/import-form.php:35 +#, php-format +msgid "Choose a file from your computer (maximum size: %s)" +msgstr "" + +#: inc/deprecated/deprecated.php:1387 +msgid "Your Cloudflare credentials are valid." +msgstr "" + +#: inc/deprecated/deprecated.php:1391 +msgid "Your Cloudflare credentials are invalid!" +msgstr "" + +#: inc/deprecated/deprecated.php:1455 +msgid "Save and optimize" +msgstr "" + +#: inc/deprecated/deprecated.php:1455 +#: views/settings/page-sections/database.php:27 +msgid "Optimize" +msgstr "" + +#: inc/deprecated/deprecated.php:1466 inc/deprecated/deprecated.php:1668 +msgctxt "screen-reader-text" +msgid "Note:" +msgstr "" + +#: inc/deprecated/deprecated.php:1472 +msgctxt "screen-reader-text" +msgid "Performance tip:" +msgstr "" + +#: inc/deprecated/deprecated.php:1478 +msgctxt "screen-reader-text" +msgid "Third-party feature detected:" +msgstr "" + +#: inc/deprecated/deprecated.php:1490 inc/deprecated/deprecated.php:1674 +msgctxt "screen-reader-text" +msgid "Warning:" +msgstr "" + +#: inc/deprecated/deprecated.php:1503 +msgctxt "button text" +msgid "Download settings" +msgstr "" + +#: inc/deprecated/deprecated.php:1533 +msgid "Replace site's hostname with:" +msgstr "Byt domänens värdnamn med:" + +#: inc/deprecated/deprecated.php:1552 inc/deprecated/deprecated.php:1589 +#: inc/deprecated/deprecated.php:1617 views/settings/fields/cnames.php:32 +#: views/settings/fields/cnames.php:63 views/settings/fields/cnames.php:93 +msgid "reserved for" +msgstr "reserverad för" + +#: inc/deprecated/deprecated.php:1554 inc/deprecated/deprecated.php:1591 +#: inc/deprecated/deprecated.php:1619 views/settings/fields/cnames.php:35 +#: views/settings/fields/cnames.php:66 views/settings/fields/cnames.php:96 +msgid "All files" +msgstr "Alla filer" + +#: inc/deprecated/deprecated.php:1566 inc/deprecated/deprecated.php:1596 +#: inc/deprecated/deprecated.php:1624 views/settings/fields/cnames.php:47 +#: views/settings/fields/cnames.php:78 views/settings/fields/cnames.php:108 +msgid "Images" +msgstr "Bilder" + +#: inc/deprecated/deprecated.php:1637 views/settings/fields/cnames.php:119 +msgid "Add CNAME" +msgstr "Ange CNAME" + +#: inc/deprecated/deprecated.php:1708 +msgid "Watch the video" +msgstr "Titta på videon" + +#: inc/deprecated/deprecated.php:1773 +msgid "Basic" +msgstr "" + +#: inc/deprecated/deprecated.php:1774 +msgid "Static Files" +msgstr "" + +#: inc/deprecated/deprecated.php:1776 +msgid "Advanced" +msgstr "" + +#: inc/deprecated/deprecated.php:1946 +#, php-format +msgid "" +"%1$s %2$s requires at least PHP %3$s to function properly. To use this " +"version, please ask your web host how to upgrade your server to PHP %3$s or " +"higher. If you are not able to upgrade, you can rollback to the previous " +"version by using the button below." +msgstr "" + +#: inc/functions/admin.php:23 +msgid "" +"There seems to be an issue validating your license. Please see the error " +"message below." +msgid_plural "" +"There seems to be an issue validating your license. You can see the error " +"messages below." +msgstr[0] "" +msgstr[1] "" + +#: inc/functions/admin.php:361 +msgid "Server type:" +msgstr "" + +#: inc/functions/admin.php:370 +msgid "PHP version number:" +msgstr "" + +#: inc/functions/admin.php:379 +msgid "WordPress version number:" +msgstr "" + +#: inc/functions/admin.php:388 +msgid "WordPress multisite:" +msgstr "" + +#: inc/functions/admin.php:397 +msgid "Current theme:" +msgstr "" + +#: inc/functions/admin.php:406 +msgid "Current site language:" +msgstr "" + +#: inc/functions/admin.php:415 +msgid "Active plugins:" +msgstr "" + +#: inc/functions/admin.php:418 +msgid "Plugin names of all active plugins" +msgstr "" + +#: inc/functions/admin.php:424 +msgid "Anonymized WP Rocket settings:" +msgstr "" + +#: inc/functions/admin.php:427 +msgid "Which WP Rocket settings are active" +msgstr "" + +#: inc/functions/cloudflare.php:14 +msgid "" +"Curl functions are disabled, they are required for the Cloudflare Add-on to " +"work correctly." +msgstr "" + +#: inc/functions/cloudflare.php:21 +msgid "Cloudflare Email and API key are not set" +msgstr "" + +#: inc/functions/cloudflare.php:52 +#, php-format +msgid "Missing Cloudflare zone ID. %s could not fix this automatically." +msgstr "" + +#: inc/functions/cloudflare.php:58 +#, php-format +msgid "Read the %1$sdocumentation%2$s for further guidance." +msgstr "" + +#: inc/functions/cloudflare.php:60 +msgid "" +"https://docs.wp-rocket.me/article/18-using-wp-rocket-with-" +"cloudflare/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" + +#: inc/functions/cloudflare.php:100 +msgid "Connection to Cloudflare failed" +msgstr "" + +#: inc/functions/cloudflare.php:122 +msgid "Choose a domain from the list" +msgstr "" + +#: inc/functions/cloudflare.php:135 +msgid "No domain available in your Cloudflare account" +msgstr "" + +#: inc/functions/options.php:580 inc/functions/options.php:619 +msgid "" +"License validation failed. Our server could not resolve the request from " +"your website." +msgstr "" + +#: inc/functions/options.php:580 inc/functions/options.php:619 +#, php-format +msgid "" +"Try clicking %1$sSave Changes%2$s below. If the error persists, follow " +"%3$sthis guide%4$s." +msgstr "" + +#: inc/functions/options.php:596 +msgid "" +"License validation failed. You may be using a nulled version of the plugin. " +"Please do the following:" +msgstr "" + +#: inc/functions/options.php:596 inc/functions/options.php:638 +#, php-format +msgid "Login to your WP Rocket %1$saccount%2$s" +msgstr "" + +#: inc/functions/options.php:596 inc/functions/options.php:638 +msgid "Download the zip file" +msgstr "" + +#: inc/functions/options.php:596 inc/functions/options.php:638 +msgid "Reinstall" +msgstr "" + +#: inc/functions/options.php:596 +#, php-format +msgid "" +"If you do not have a WP Rocket account, please %1$spurchase a license%2$s." +msgstr "" + +#: inc/functions/options.php:604 +msgid "" +"License validation failed. This user account does not exist in our database." +msgstr "" + +#: inc/functions/options.php:604 +msgid "To resolve, please contact support." +msgstr "" + +#: inc/functions/options.php:612 +msgid "License validation failed. This user account is blacklisted." +msgstr "" + +#: inc/functions/options.php:612 +#, php-format +msgid "Please see %1$sthis guide%2$s for more info." +msgstr "" + +#: inc/functions/options.php:632 +msgid "Your license is not valid." +msgstr "Din licens är inte giltig." + +#: inc/functions/options.php:632 +#, php-format +msgid "Make sure you have an active %1$sWP Rocket license%2$s." +msgstr "" + +#: inc/functions/options.php:634 +msgid "You have added as many sites as your current license allows." +msgstr "" + +#: inc/functions/options.php:634 +#, php-format +msgid "" +"Upgrade your %1$saccount%2$s or %3$stransfer your license%2$s to this " +"domain." +msgstr "" + +#: inc/functions/options.php:636 +msgid "This website is not allowed." +msgstr "Denna webbplats är inte tillåten." + +#: inc/functions/options.php:636 +#, php-format +msgid "Please %1$scontact support%2$s." +msgstr "" + +#: inc/functions/options.php:638 +msgid "This license key is not recognized." +msgstr "" + +#: inc/functions/options.php:638 +#, php-format +msgid "If the issue persists, please %1$scontact support%2$s." +msgstr "" + +#: inc/functions/options.php:644 +#, php-format +msgid "License validation failed: %s" +msgstr "" + +#: inc/vendors/classes/class-imagify-partner.php:531 +msgid "Plugin installed successfully." +msgstr "" + +#: inc/vendors/classes/class-imagify-partner.php:532 +msgid "Sorry, you are not allowed to install plugins on this site." +msgstr "" + +#: inc/vendors/classes/class-imagify-partner.php:533 +msgid "Sorry, you are not allowed to do that." +msgstr "" + +#: inc/vendors/classes/class-imagify-partner.php:534 +msgid "Plugin install failed." +msgstr "" + +#: inc/vendors/classes/class-imagify-partner.php:535 +msgid "Go back" +msgstr "" + +#: views/deactivation-intent/form.php:20 +msgid "Return" +msgstr "" + +#: views/deactivation-intent/form.php:21 +msgid "WP Rocket feedback" +msgstr "" + +#: views/deactivation-intent/form.php:23 +msgid "Close" +msgstr "" + +#: views/deactivation-intent/form.php:27 +msgid "May we have a little info about why you are deactivating?" +msgstr "" + +#: views/deactivation-intent/form.php:31 +msgid "" +"It is a temporary deactivation. I am just debugging an " +"issue." +msgstr "" + +#: views/deactivation-intent/form.php:35 +msgid "The plugin broke my layout or some functionality." +msgstr "" + +#: views/deactivation-intent/form.php:39 +msgid "My PageSpeed or GTMetrix score did not improve." +msgstr "" + +#: views/deactivation-intent/form.php:43 +msgid "I did not notice a difference in loading time." +msgstr "" + +#: views/deactivation-intent/form.php:47 +msgid "The plugin is too complicated to configure." +msgstr "" + +#: views/deactivation-intent/form.php:51 +msgid "My host already has its own caching system." +msgstr "" + +#: views/deactivation-intent/form.php:53 +msgid "What is the name of your web host?" +msgstr "" + +#: views/deactivation-intent/form.php:58 +msgid "Other" +msgstr "" + +#: views/deactivation-intent/form.php:60 +msgid "" +"Let us know why you are deactivating WP Rocket so we can improve the plugin" +msgstr "" + +#: views/deactivation-intent/form.php:68 +msgid "The plugin broke my layout or some functionality" +msgstr "" + +#: views/deactivation-intent/form.php:69 +msgid "" +"This type of issue can usually be fixed by deactivating some options in WP " +"Rocket." +msgstr "" + +#: views/deactivation-intent/form.php:70 +msgid "" +"Click \"Apply Safe Mode\" to quickly disable LazyLoad, File Optimization, " +"Embeds and CDN options. Then check your site to see if the issue has " +"resolved." +msgstr "" + +#: views/deactivation-intent/form.php:72 +msgid "Apply safe mode" +msgstr "" + +#: views/deactivation-intent/form.php:75 +msgid "Safe mode applied." +msgstr "" + +#: views/deactivation-intent/form.php:76 +msgid "Review your site in a private/logged out browser window." +msgstr "" + +#: views/deactivation-intent/form.php:78 +msgid "" +"Is the issue fixed? Now you can reactivate options one at a time to " +"determine which one caused the problem. More info" +msgstr "" + +#: views/deactivation-intent/form.php:81 +msgid "My PageSpeed or GT Metrix score did not improve" +msgstr "" + +#: views/deactivation-intent/form.php:82 +msgid "" +"WP Rocket makes your site faster. The PageSpeed grade or GTMetrix score are " +"not indicators of speed. Neither your real visitors, nor Google will ever " +"see your website’s “grade”. Speed is the only metric that matters for SEO " +"and conversions." +msgstr "" + +#: views/deactivation-intent/form.php:83 +msgid "Yoast, the expert on all things related to SEO for WordPress states:" +msgstr "" + +#: views/deactivation-intent/form.php:84 +msgid "" +"[Google] just looks at how fast your website loads for users, so you don’t " +"have to obsess over that specific score. You have to make sure your website " +"is as fast as you can get it." +msgstr "" + +#: views/deactivation-intent/form.php:87 +msgid "" +"How to measure the load time of your site:
      https" +"://wp-rocket.me/blog/correctly-measure-websites-page-load-time/" +msgstr "" + +#: views/deactivation-intent/form.php:88 +msgid "" +"Why you should not be chasing a PageSpeed score:
      https://wp-rocket.me/blog/the-truth-about-google-" +"pagespeed-insights/" +msgstr "" + +#: views/deactivation-intent/form.php:91 +msgid "I did not notice a difference in loading time" +msgstr "" + +#: views/deactivation-intent/form.php:92 +msgid "" +"Make sure you look at your site while logged out to see the fast, cached " +"pages!" +msgstr "" + +#: views/deactivation-intent/form.php:93 +msgid "" +"The best way to see the improvement WP Rocket provides is to perform speed " +"tests. Follow this guide to correctly measure the load time of your " +"website:
      https://wp-rocket.me/blog/correctly-measure-websites-page-" +"load-time/" +msgstr "" + +#: views/deactivation-intent/form.php:96 +msgid "The plugin is too complicated to configure" +msgstr "" + +#: views/deactivation-intent/form.php:97 +msgid "We are sorry to hear you are finding it difficult to use WP Rocket." +msgstr "" + +#: views/deactivation-intent/form.php:98 +#, php-format +msgid "" +"WP Rocket is the only caching plugin that provides 80% of best practices in " +"speed optimization, by default. That means you do not have to do anything " +"besides activate WP Rocket and your site will already be faster!" +msgstr "" + +#: views/deactivation-intent/form.php:99 +msgid "" +"The additional options are not required for a fast site, they are for fine-" +"tuning." +msgstr "" + +#: views/deactivation-intent/form.php:100 +msgid "" +"To see the benefit WP Rocket is already providing, measure the speed of your" +" site using a tool like Pingdom:
      https" +"://wp-rocket.me/blog/correctly-measure-websites-page-load-time/" +msgstr "" + +#: views/deactivation-intent/form.php:105 +msgid "Send & Deactivate" +msgstr "" + +#: views/deactivation-intent/form.php:106 +msgid "Cancel" +msgstr "Avbryt" + +#: views/deactivation-intent/form.php:108 +msgid "Skip & Deactivate" +msgstr "" + +#: views/settings/fields/cache-lifespan.php:26 +msgid "Clear cache after" +msgstr "" + +#: views/settings/fields/cnames.php:49 views/settings/fields/cnames.php:80 +#: views/settings/fields/cnames.php:110 +msgid "CSS & JavaScript" +msgstr "" + +#: views/settings/fields/cnames.php:50 views/settings/fields/cnames.php:81 +#: views/settings/fields/cnames.php:111 +msgid "JavaScript" +msgstr "" + +#: views/settings/fields/cnames.php:51 views/settings/fields/cnames.php:82 +#: views/settings/fields/cnames.php:112 +msgid "CSS" +msgstr "" + +#: views/settings/fields/import-form.php:29 +msgid "Import settings" +msgstr "" + +#: views/settings/fields/one-click-addon.php:39 +#: views/settings/fields/rocket-addon.php:31 +#: views/settings/fields/sliding-checkbox.php:24 views/settings/page.php:54 +msgctxt "Active state of checkbox" +msgid "On" +msgstr "På" + +#: views/settings/fields/one-click-addon.php:40 +#: views/settings/fields/rocket-addon.php:32 +#: views/settings/fields/sliding-checkbox.php:25 views/settings/page.php:55 +msgctxt "Inactive state of checkbox" +msgid "Off" +msgstr "Av" + +#: views/settings/fields/one-click-addon.php:41 +#: views/settings/fields/rocket-addon.php:33 +msgid "Add-on status" +msgstr "" + +#: views/settings/fields/rocket-addon.php:56 +msgid "Modify options" +msgstr "" + +#: views/settings/page-sections/cloudflare.php:26 +msgid "Cloudflare Cache" +msgstr "" + +#: views/settings/page-sections/cloudflare.php:33 +#: views/settings/page-sections/sucuri.php:34 +#, php-format +msgid "Purges cached resources for your website. %s" +msgstr "" + +#: views/settings/page-sections/cloudflare.php:34 +msgid "https://support.cloudflare.com/hc/en-us/articles/200169246" +msgstr "" + +#: views/settings/page-sections/cloudflare.php:34 +#: views/settings/page-sections/sucuri.php:35 +msgid "Learn more" +msgstr "" + +#: views/settings/page-sections/cloudflare.php:40 +msgid "Clear all Cloudflare cache files" +msgstr "" + +#: views/settings/page-sections/dashboard.php:37 +msgid "Congratulations!" +msgstr "" + +#: views/settings/page-sections/dashboard.php:39 +msgid "WP Rocket is now activated and already working for you." +msgstr "" + +#: views/settings/page-sections/dashboard.php:41 +msgid "Your website should be loading faster now!" +msgstr "" + +#: views/settings/page-sections/dashboard.php:43 +#, php-format +msgid "" +"To guarantee fast websites, WP Rocket applies 80% of web performance best " +"practices." +msgstr "" + +#: views/settings/page-sections/dashboard.php:43 +msgid "" +"We also enable options that provide immediate benefits to your website." +msgstr "" + +#: views/settings/page-sections/dashboard.php:44 +msgid "Continue to the options to further optimize your site!" +msgstr "" + +#: views/settings/page-sections/dashboard.php:54 +msgid "My Account" +msgstr "" + +#: views/settings/page-sections/dashboard.php:60 +msgid "Refresh info" +msgstr "" + +#: views/settings/page-sections/dashboard.php:74 +msgid "Expiration Date" +msgstr "" + +#: views/settings/page-sections/dashboard.php:83 +msgid "View my account" +msgstr "" + +#: views/settings/page-sections/dashboard.php:103 +msgid "Quick Actions" +msgstr "" + +#: views/settings/page-sections/dashboard.php:109 +msgid "Remove all cached files" +msgstr "" + +#: views/settings/page-sections/dashboard.php:129 +msgid "Start cache preloading" +msgstr "" + +#: views/settings/page-sections/dashboard.php:147 +msgid "Purge OPCache content" +msgstr "" + +#: views/settings/page-sections/dashboard.php:153 +msgid "Purge OPCache" +msgstr "" + +#: views/settings/page-sections/dashboard.php:164 +#: views/settings/page-sections/dashboard.php:170 +msgid "Regenerate Critical CSS" +msgstr "" + +#: views/settings/page-sections/dashboard.php:186 +msgid "Frequently Asked Questions" +msgstr "" + +#: views/settings/page-sections/dashboard.php:199 +msgid "Still cannot find a solution?" +msgstr "" + +#: views/settings/page-sections/dashboard.php:200 +msgid "" +"Submit a ticket and get help from our friendly and knowledgeable Rocketeers." +msgstr "" + +#: views/settings/page-sections/dashboard.php:208 +msgid "Ask support" +msgstr "" + +#: views/settings/page-sections/database.php:24 +msgid "Backup your database before you run a cleanup!" +msgstr "" + +#: views/settings/page-sections/database.php:25 +msgid "" +"Once a database optimization has been performed, there is no way to undo it." +msgstr "" + +#: views/settings/page-sections/imagify.php:20 +#, php-format +msgid "" +"%1$sWP ROCKET%2$s created %3$sIMAGIFY%4$s %1$sfor best-in-class image " +"optimization.%2$s" +msgstr "" + +#: views/settings/page-sections/imagify.php:23 +msgid "" +"Compress image to make your website faster, all while maintaining image " +"quality." +msgstr "" + +#: views/settings/page-sections/imagify.php:24 +msgid "More on Imagify:" +msgstr "" + +#: views/settings/page-sections/imagify.php:26 +msgid "Imagify Plugin Page" +msgstr "" + +#: views/settings/page-sections/imagify.php:27 +msgid "Imagify Website" +msgstr "" + +#: views/settings/page-sections/imagify.php:28 +msgid "Review of Image Compression Plugins" +msgstr "" + +#: views/settings/page-sections/imagify.php:37 +msgid "Install Imagify" +msgstr "" + +#: views/settings/page-sections/license.php:21 +msgid "WP Rocket was not able to automatically validate your license." +msgstr "" + +#: views/settings/page-sections/license.php:26 +#, php-format +msgid "" +"Follow this tutorial, or contact support to get the engine started." +msgstr "" + +#: views/settings/page-sections/license.php:26 +msgid "" +"https://docs.wp-rocket.me/article/100-resolving-problems-with-license-" +"validation/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" + +#: views/settings/page-sections/sucuri.php:41 +msgid "Clear all Sucuri cache files" +msgstr "" + +#: views/settings/page-sections/tools.php:20 +#, php-format +msgid "Files size: %1$s. Number of entries: %2$s." +msgstr "" + +#: views/settings/page-sections/tools.php:23 +#, php-format +msgid "%1$sDownload the file%2$s." +msgstr "" + +#: views/settings/page-sections/tools.php:26 +#, php-format +msgid "%1$sDelete the file%2$s." +msgstr "" + +#: views/settings/page-sections/tools.php:37 +msgid "Export settings" +msgstr "" + +#: views/settings/page-sections/tools.php:38 +msgid "Download a backup file of your settings" +msgstr "" + +#: views/settings/page-sections/tools.php:43 +msgid "Download settings" +msgstr "" + +#: views/settings/page-sections/tools.php:56 +msgid "Rollback" +msgstr "" + +#: views/settings/page-sections/tools.php:60 +#, php-format +msgid "Has version %s caused an issue on your website?" +msgstr "" + +#: views/settings/page-sections/tools.php:62 +msgid "" +"You can rollback to the previous major version here.
      Then send us a " +"support request." +msgstr "" + +#: views/settings/page-sections/tools.php:69 +#, php-format +msgid "Reinstall version %s" +msgstr "" + +#: views/settings/page-sections/tools.php:85 +msgid "Debug mode" +msgstr "" + +#: views/settings/page-sections/tools.php:90 +msgid "Create a debug log file." +msgstr "" + +#: views/settings/page.php:16 +msgid "WP Rocket Settings" +msgstr "" + +#: views/settings/page.php:30 +#, php-format +msgid "version %s" +msgstr "" + +#: views/settings/page.php:40 +msgid "Save Changes" +msgstr "" + +#: views/settings/page.php:56 +msgid "Show Sidebar" +msgstr "" + +#: views/settings/page.php:75 +msgid "Thanks for choosing to participate in the WP Rocket beta program!" +msgstr "" + +#: views/settings/page.php:76 +msgid "" +"A beta version is usually one that has new features and improvements, but we" +" want to test it a little more before full launch." +msgstr "" + +#: views/settings/page.php:77 +msgid "" +"We’d love it if you took our beta versions for a ride, but please keep in " +"mind that it might be less stable than our other releases. Don’t worry, you " +"can switch back to a full release version at any time." +msgstr "" + +#: views/settings/page.php:78 +msgid "" +"Your mission: please send all feedback about our beta versions, including " +"bug reports, to support@wp-rocket.me" +msgstr "" + +#: views/settings/page.php:80 +msgid "If you don’t want to join the beta program, simply close this window." +msgstr "" + +#: views/settings/page.php:82 +msgid "Activate Rocket Tester" +msgstr "" + +#: views/settings/page.php:93 +msgid "" +"Below is a detailed view of all data WP Rocket will collect if " +"granted permission." +msgstr "" + +#: views/settings/page.php:96 +msgid "" +"WP Rocket will never transmit any domain names or email addresses (except " +"for license validation), IP addresses, or third-party API keys." +msgstr "" + +#: views/settings/page.php:98 +msgid "Activate Rocket analytics" +msgstr "" + +#: views/settings/partials/documentation.php:14 +msgid "It is a great starting point to fix some of the most common issues." +msgstr "" + +#: views/settings/partials/documentation.php:18 +msgid "Read the documentation" +msgstr "" + +#: views/settings/partials/sidebar.php:11 +msgid "How to correctly measure your website’s loading time" +msgstr "" + +#: views/settings/partials/sidebar.php:13 +msgid "" +"Learn how to use best practices to correctly measure your site's " +"performance." +msgstr "" + +#: views/settings/partials/sidebar.php:14 +msgid "" +"https://wp-rocket.me/blog/correctly-measure-websites-page-load-" +"time/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" + +#: views/settings/partials/sidebar.php:14 +msgid "Read our guide" +msgstr "" + +#: views/settings/partials/sidebar.php:17 +msgid "Why Google PageSpeed grade should not matter" +msgstr "" + +#: views/settings/partials/sidebar.php:18 +msgid "" +"https://wp-rocket.me/blog/the-truth-about-google-pagespeed-" +"insights/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" + +#: views/settings/partials/sidebar.php:18 +msgid "Read more" +msgstr "" + +#: views/settings/partials/sidebar.php:23 +msgid "You have not activated logged-in user cache." +msgstr "" + +#: views/settings/partials/sidebar.php:24 +msgid "" +"Use a private browser to check your website's speed and visual appearance." +msgstr "" + +#: views/settings/sections/addons-container.php:23 +#: views/settings/sections/fields-container.php:27 +msgid "Need Help?" +msgstr "" diff --git a/wp-content/plugins/wp-rocket/languages/rocket-tr_TR.mo b/wp-content/plugins/wp-rocket/languages/rocket-tr_TR.mo new file mode 100644 index 0000000000000000000000000000000000000000..37663a3680b59e58e7763c5c9ec6f86a9f2a35bd GIT binary patch literal 108285 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, 2019 +# BouRock, 2020 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: WP Rocket 3.4\n" +"Report-Msgid-Bugs-To: http://wp-rocket.me/\n" +"POT-Creation-Date: 2020-11-04 12:19-0500\n" +"PO-Revision-Date: 2019-08-26 15:14+0000\n" +"Last-Translator: BouRock, 2020\n" +"Language-Team: Turkish (Turkey) (https://www.transifex.com/wp-media/teams/18133/tr_TR/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: tr_TR\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Poedit 1.8.11\n" +"X-Poedit-Basepath: ..\n" +"X-Poedit-KeywordsList: __;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c\n" +"X-Poedit-SearchPath-0: .\n" +"X-Poedit-SearchPathExcluded-0: assets\n" +"X-Poedit-SearchPathExcluded-1: src\n" +"X-Poedit-SearchPathExcluded-2: vendor\n" +"X-Poedit-SearchPathExcluded-3: node_modules\n" +"X-Poedit-SearchPathExcluded-4: tests\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Textdomain-Support: yes\n" + +#: inc/3rd-party/hosting/flywheel.php:18 inc/3rd-party/hosting/godaddy.php:18 +#: inc/3rd-party/hosting/pressidium.php:18 +#: inc/3rd-party/hosting/wp-serveur.php:27 +#: inc/ThirdParty/Hostings/Cloudways.php:90 +#: inc/ThirdParty/Hostings/Dreampress.php:44 +#: inc/ThirdParty/Hostings/O2Switch.php:49 +#: inc/ThirdParty/Hostings/Savvii.php:50 +#: inc/ThirdParty/Hostings/WPEngine.php:47 inc/deprecated/3.6.php:698 +#: inc/deprecated/3.6.php:1005 +#, php-format +msgid "" +"Your site is hosted on %s, we have enabled Varnish auto-purge for " +"compatibility." +msgstr "" +"Siteniz %s üzerinde barındırılıyor, uyumluluk için Varnish oto-temizle’yi " +"etkinleştirdik." + +#: inc/3rd-party/hosting/kinsta.php:161 +#, php-format +msgid "" +"Your installation seems to be missing core Kinsta files managing Cache " +"clearing and CDN, which will prevent your Kinsta installation and WP Rocket " +"from working correctly. Please get in touch with Kinsta support through your" +" %1$sMyKinsta%2$s account to resolve this issue." +msgstr "" +"Kurulumunuzda, Kinsta kurulumunuzu ve WP Rocket’ın doğru bir şekilde " +"çalışmasını önleyecek, Önbellek temizlemeyi ve CDN’yi yöneten çekirdek " +"Kinsta dosyalarının eksik olduğu görülüyor. Lütfen bu sorunu çözmek için " +"%1$sMyKinsta%2$s hesabınız aracılığıyla Kinsta desteği ile temasa geçin." + +#: inc/3rd-party/plugins/jetpack.php:86 +msgid "Jetpack XML Sitemaps" +msgstr "Jetpack XML Site Haritaları" + +#: inc/3rd-party/plugins/jetpack.php:88 +msgid "Preload the sitemap from the Jetpack plugin" +msgstr "Site haritasını Jetpack eklentisinden önyükleme yap" + +#: inc/3rd-party/plugins/jetpack.php:96 +#: inc/3rd-party/plugins/seo/all-in-one-seo-pack.php:89 +#: inc/3rd-party/plugins/seo/rank-math-seo.php:34 +#: inc/3rd-party/plugins/seo/seopress.php:86 +#: inc/3rd-party/plugins/seo/the-seo-framework.php:144 +#: inc/3rd-party/plugins/seo/yoast-seo.php:87 +#, php-format +msgid "" +"We automatically detected the sitemap generated by the %s plugin. You can " +"check the option to preload it." +msgstr "" +"%s eklentisi tarafından üretilen site haritasını otomatik olarak algıladık. " +"Önyüklemek için seçeneği işaretleyebilirsiniz." + +#: inc/3rd-party/plugins/seo/all-in-one-seo-pack.php:87 +msgid "All in One SEO XML sitemap" +msgstr "Tümü Bir SEO XML site haritasında" + +#: inc/3rd-party/plugins/seo/rank-math-seo.php:32 +msgid "Rank Math XML sitemap" +msgstr "Rank Math XML site haritası" + +#: inc/3rd-party/plugins/seo/seopress.php:84 +msgid "SEOPress XML sitemap" +msgstr "SEOPress XML site haritası" + +#: inc/3rd-party/plugins/seo/the-seo-framework.php:142 +msgid "The SEO Framework XML sitemap" +msgstr "SEO Framework XML site haritası" + +#: inc/3rd-party/plugins/seo/yoast-seo.php:85 +msgid "Yoast SEO XML sitemap" +msgstr "Yoast SEO XML site haritası" + +#: inc/Addon/Cloudflare/APIClient.php:309 +msgid "Cloudflare did not provide any reply. Please try again later." +msgstr "Cloudflare hiçbir yanıt vermedi. Lütfen daha sonra tekrar deneyin." + +#: inc/Addon/Cloudflare/APIClient.php:318 inc/deprecated/3.5.php:122 +#: inc/deprecated/3.5.php:179 +msgid "Incorrect Cloudflare email address or API key." +msgstr "Yanlış Cloudflare e-posta adresi veya API anahtarı." + +#: inc/Addon/Cloudflare/APIClient.php:322 +#: inc/Addon/Cloudflare/APIClient.php:335 +#: inc/Addon/Cloudflare/Cloudflare.php:112 +#: inc/Addon/Cloudflare/Cloudflare.php:144 +#: inc/classes/subscriber/Tools/class-detect-missing-tags-subscriber.php:157 +#: inc/deprecated/3.5.php:102 inc/deprecated/3.5.php:126 +#: inc/deprecated/3.5.php:139 inc/deprecated/3.5.php:167 +#: inc/deprecated/3.5.php:183 +#, php-format +msgid "Read the %1$sdocumentation%2$s for further guidance." +msgstr "İleriki rehberlik için %1$sbelgeleri%2$s okuyun." + +#: inc/Addon/Cloudflare/APIClient.php:324 +#: inc/Addon/Cloudflare/APIClient.php:337 +#: inc/Addon/Cloudflare/Cloudflare.php:101 +#: inc/Addon/Cloudflare/Cloudflare.php:114 +#: inc/Addon/Cloudflare/Cloudflare.php:146 inc/deprecated/3.5.php:91 +#: inc/deprecated/3.5.php:104 inc/deprecated/3.5.php:128 +#: inc/deprecated/3.5.php:141 inc/deprecated/3.5.php:169 +#: inc/deprecated/3.5.php:185 inc/deprecated/3.5.php:218 +msgid "" +"https://docs.wp-rocket.me/article/18-using-wp-rocket-with-" +"cloudflare/?utm_source=wp_plugin&utm_medium=wp_rocket#add-on" +msgstr "" +"https://docs.wp-rocket.me/article/18-using-wp-rocket-with-" +"cloudflare/?utm_source=wp_plugin&utm_medium=wp_rocket#add-on" + +#: inc/Addon/Cloudflare/APIClient.php:331 inc/deprecated/3.5.php:135 +msgid "Incorrect Cloudflare Zone ID." +msgstr "Yanlış Cloudflare Bölge Kimliği." + +#: inc/Addon/Cloudflare/Cloudflare.php:99 +#, php-format +msgid "" +"Cloudflare email and/or API key are not set. Read the %1$sdocumentation%2$s " +"for further guidance." +msgstr "" +"Cloudflare e-posta adresi ve/veya API anahtarı ayarlı değil. Daha fazla " +"rehberlik için %1$sbelgeleri%2$s okuyun." + +#: inc/Addon/Cloudflare/Cloudflare.php:108 inc/deprecated/3.5.php:98 +msgid "Missing Cloudflare Zone ID." +msgstr "Eksik Cloudflare Bölge Kimliği." + +#: inc/Addon/Cloudflare/Cloudflare.php:140 inc/deprecated/3.5.php:163 +msgid "It looks like your domain is not set up on Cloudflare." +msgstr "Etki alanınız Cloudflare’de ayarlanmamış gibi görünüyor." + +#: inc/Addon/Cloudflare/Subscriber.php:215 inc/deprecated/3.5.php:597 +#, php-format +msgid "WP Rocket: %s" +msgstr "WP Rocket: %s" + +#: inc/Addon/Cloudflare/Subscriber.php:220 inc/deprecated/3.5.php:602 +msgid "WP Rocket: Cloudflare cache successfully purged." +msgstr "" +"WP Rocket: Cloudflare önbelleği başarılı olarak temizlendi." + +#: inc/Addon/Cloudflare/Subscriber.php:364 +#: inc/Addon/Cloudflare/Subscriber.php:370 +#: inc/Addon/Cloudflare/Subscriber.php:390 +#: inc/Addon/Cloudflare/Subscriber.php:401 +#: inc/Addon/Cloudflare/Subscriber.php:420 +#: inc/Addon/Cloudflare/Subscriber.php:426 +#: inc/Addon/Cloudflare/Subscriber.php:445 +#: inc/Addon/Cloudflare/Subscriber.php:451 +#: inc/Addon/Cloudflare/Subscriber.php:470 +#: inc/Addon/Cloudflare/Subscriber.php:476 +#: inc/Addon/Cloudflare/Subscriber.php:558 inc/admin/options.php:166 +#: inc/classes/subscriber/Tools/class-detect-missing-tags-subscriber.php:148 +msgid "WP Rocket: " +msgstr "WP Rocket: " + +#: inc/Addon/Cloudflare/Subscriber.php:364 +#, php-format +msgid "Cloudflare development mode error: %s" +msgstr "Cloudflare geliştirme kipi hatası: %s" + +#: inc/Addon/Cloudflare/Subscriber.php:370 +#, php-format +msgid "Cloudflare development mode %s" +msgstr "Cloudflare geliştirme kipi %s" + +#: inc/Addon/Cloudflare/Subscriber.php:390 +#, php-format +msgid "Cloudflare cache level error: %s" +msgstr "Cloudflare önbellek seviyesi hatası: %s" + +#: inc/Addon/Cloudflare/Subscriber.php:395 +msgctxt "Cloudflare caching level" +msgid "Standard" +msgstr "Standart" + +#: inc/Addon/Cloudflare/Subscriber.php:401 +#, php-format +msgid "Cloudflare cache level set to %s" +msgstr "Cloudflare önbellek seviyesi %s olarak ayarlandı" + +#: inc/Addon/Cloudflare/Subscriber.php:420 +#, php-format +msgid "Cloudflare minification error: %s" +msgstr "Cloudflare küçültme hatası: %s" + +#: inc/Addon/Cloudflare/Subscriber.php:426 +#, php-format +msgid "Cloudflare minification %s" +msgstr "Cloudflare küçültme %s" + +#: inc/Addon/Cloudflare/Subscriber.php:445 +#, php-format +msgid "Cloudflare rocket loader error: %s" +msgstr "Cloudflare rocket yükleyici hatası: %s" + +#: inc/Addon/Cloudflare/Subscriber.php:451 +#, php-format +msgid "Cloudflare rocket loader %s" +msgstr "Cloudflare rocket yükleyici %s" + +#: inc/Addon/Cloudflare/Subscriber.php:470 +#, php-format +msgid "Cloudflare browser cache error: %s" +msgstr "Cloudflare tarayıcı önbelleği hatası: %s" + +#: inc/Addon/Cloudflare/Subscriber.php:476 +#, php-format +msgid "Cloudflare browser cache set to %s seconds" +msgstr "Cloudflare tarayıcı önbelleği %s saniyeye ayarlandı" + +#: inc/Addon/FacebookTracking/Subscriber.php:87 +#: inc/Addon/GoogleTracking/Subscriber.php:132 +#: inc/Engine/HealthCheck/CacheDirSizeCheck.php:88 +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:92 +msgid "weekly" +msgstr "haftalık" + +#: inc/Engine/Admin/Settings/Page.php:190 +msgid "Save Changes" +msgstr "Değişiklikleri Kaydet" + +#: inc/Engine/Admin/Settings/Page.php:190 +msgid "Validate License" +msgstr "Lisansı Doğrula" + +#: inc/Engine/Admin/Settings/Page.php:246 +#: inc/Engine/Admin/Settings/Page.php:247 +msgid "Unavailable" +msgstr "Mevcut değil" + +#: inc/Engine/Admin/Settings/Page.php:341 inc/deprecated/deprecated.php:1789 +#: views/settings/page-sections/dashboard.php:80 +msgid "License" +msgstr "Lisans" + +#: inc/Engine/Admin/Settings/Page.php:358 +msgid "API key" +msgstr "API anahtarı" + +#: inc/Engine/Admin/Settings/Page.php:373 +msgid "Email address" +msgstr "E-posta adresi" + +#: inc/Engine/Admin/Settings/Page.php:399 +msgid "Dashboard" +msgstr "Panel" + +#: inc/Engine/Admin/Settings/Page.php:400 +msgid "Get help, account info" +msgstr "Yardım alın, hesap bilgisi" + +#: inc/Engine/Admin/Settings/Page.php:409 +msgid "My Status" +msgstr "Durumum" + +#: inc/Engine/Admin/Settings/Page.php:419 views/settings/page.php:72 +msgid "Rocket Tester" +msgstr "Rocket Deneyicisi" + +#: inc/Engine/Admin/Settings/Page.php:420 +msgid "I am part of the WP Rocket Beta Testing Program." +msgstr "WP Rocket Beta Deneme Programının bir parçasıyım." + +#: inc/Engine/Admin/Settings/Page.php:428 views/settings/page.php:90 +msgid "Rocket Analytics" +msgstr "Rocket Çözümsel" + +#: inc/Engine/Admin/Settings/Page.php:430 +#, php-format +msgid "" +"I agree to share anonymous data with the development team to help improve WP" +" Rocket. %1$sWhat info will we collect?%2$s" +msgstr "" +"WP Rocket’i iyileştirmemize yardımcı olmak için geliştirme ekibi ile isimsiz" +" verileri paylaşmayı kabul ediyorum. %1$sNe tür bilgi toplayacağız?%2$s" + +#: inc/Engine/Admin/Settings/Page.php:454 inc/Engine/Cache/WPCache.php:347 +msgid "Cache" +msgstr "Önbellek" + +#: inc/Engine/Admin/Settings/Page.php:455 +msgid "Basic cache options" +msgstr "Temel önbellek seçenekleri" + +#: inc/Engine/Admin/Settings/Page.php:462 +msgid "Mobile Cache" +msgstr "Mobil Önbelleği" + +#: inc/Engine/Admin/Settings/Page.php:464 +msgid "Speed up your site for mobile visitors." +msgstr "Mobil ziyaretçiler için sitenizi hızlandırın." + +#: inc/Engine/Admin/Settings/Page.php:469 +msgid "" +"We detected you use a plugin that requires a separate cache for mobile, and " +"automatically enabled this option for compatibility." +msgstr "" +"Mobil için ayrı önbellek gerektiren bir eklenti kullandığınızı saptadık ve " +"uyumluluk için bu seçeneği otomatik olarak etkinleştirdik." + +#: inc/Engine/Admin/Settings/Page.php:473 +msgid "User Cache" +msgstr "Kullanıcı Önbelleği" + +#: inc/Engine/Admin/Settings/Page.php:476 +#, php-format +msgid "" +"%1$sUser cache%2$s is great when you have user-specific or restricted " +"content on your website." +msgstr "" +"Web sitenizde kullanıcıya özgü ya da kısıtlı içeriğe sahip olduğunuzda " +"%1$skullanıcı önbelleği%2$s mükemmeldir." + +#: inc/Engine/Admin/Settings/Page.php:484 +msgid "Cache Lifespan" +msgstr "Önbellek Geçerlilik Süresi" + +#: inc/Engine/Admin/Settings/Page.php:487 +#, php-format +msgid "" +"Cache files older than the specified lifespan will be deleted.
      Enable " +"%1$spreloading%2$s for the cache to be rebuilt automatically after lifespan " +"expiration." +msgstr "" +"Belirtilen geçerlilik süresinden eski önbellek dosyaları " +"silinecektir.
      Geçerlilik süresi sona erdikten sonra otomatik olarak " +"yeniden oluşturulması için önbellek %1$sönyüklemeyi%2$s etkinleştirin." + +#: inc/Engine/Admin/Settings/Page.php:501 +msgid "Enable caching for logged-in WordPress users" +msgstr "Oturum açmış WordPress kullanıcıları için önbelleklemeyi etkinleştir" + +#: inc/Engine/Admin/Settings/Page.php:509 +msgid "Enable caching for mobile devices" +msgstr "Mobil cihazlar için önbelleklemeyi etkinleştir" + +#: inc/Engine/Admin/Settings/Page.php:524 +msgid "Separate cache files for mobile devices" +msgstr "Mobil cihazlar için önbellek dosyalarını ayır" + +#: inc/Engine/Admin/Settings/Page.php:526 +#, php-format +msgid "" +"Most modern themes are responsive and should work without a separate cache. " +"Enable this only if you have a dedicated mobile theme or plugin. %1$sMore " +"info%2$s" +msgstr "" +"Çoğu modern temalar hassastır ve ayrı bir önbellek olmadan çalışmalıdır. " +"Bunu sadece tahsis edilmiş bir mobil temanız veya eklentiniz varsa " +"etkinleştirin. %1$sDaha fazla bilgi%2$s" + +#: inc/Engine/Admin/Settings/Page.php:542 +msgid "" +"Specify time after which the global cache is cleared
      (0 = unlimited )" +msgstr "" +"Genel önbelleğin ne kadar süre sonra temizleneceği zamanı belirtin
      (0 = " +"sınırsız)" + +#: inc/Engine/Admin/Settings/Page.php:544 +#, php-format +msgid "" +"Reduce lifespan to 10 hours or less if you notice issues that seem to appear" +" periodically. %1$sWhy?%2$s" +msgstr "" +"Eğer belirli aralıklarla görünen sorunları fark ederseniz geçerlilik " +"süresini 10 saat veya daha azına düşürün. %1$sNeden?%2$s" + +#: inc/Engine/Admin/Settings/Page.php:550 +#: inc/Engine/License/views/promo-banner.php:31 +#: inc/Engine/License/views/renewal-soon-banner.php:14 +msgid "Minutes" +msgstr "Dakika" + +#: inc/Engine/Admin/Settings/Page.php:551 +#: inc/Engine/License/views/promo-banner.php:30 +#: inc/Engine/License/views/renewal-soon-banner.php:13 +msgid "Hours" +msgstr "Saat" + +#: inc/Engine/Admin/Settings/Page.php:552 +#: inc/Engine/License/views/promo-banner.php:29 +#: inc/Engine/License/views/renewal-soon-banner.php:12 +msgid "Days" +msgstr "Gün" + +#: inc/Engine/Admin/Settings/Page.php:577 +#: views/settings/page-sections/tutorials.php:22 +msgid "File Optimization" +msgstr "Dosyaları İyileştirme" + +#: inc/Engine/Admin/Settings/Page.php:578 +msgid "Optimize CSS & JS" +msgstr "CSS ve JS kodlarını iyileştirin" + +#: inc/Engine/Admin/Settings/Page.php:585 +msgid "CSS Files" +msgstr "CSS Dosyaları" + +#: inc/Engine/Admin/Settings/Page.php:592 +#: inc/Engine/Admin/Settings/Page.php:602 +#, php-format +msgid "" +"%1$s Minification is currently activated in Autoptimize. If" +" you want to use %2$s’s minification, disable those options in Autoptimize." +msgstr "" +"%1$s Küçültme şu anda Autoptimize içinde aktif edildi. Eğer" +" %2$s’in küçültmesini kullanmak istiyorsanız, Autoptimize içindeki bu " +"seçenekleri etkisizleştirin." + +#: inc/Engine/Admin/Settings/Page.php:595 +msgid "JavaScript Files" +msgstr "JavaScript Dosyaları" + +#: inc/Engine/Admin/Settings/Page.php:611 +msgid "Minify CSS files" +msgstr "CSS dosyalarını küçült" + +#: inc/Engine/Admin/Settings/Page.php:612 +msgid "Minify CSS removes whitespace and comments to reduce the file size." +msgstr "" +"CSS’yi küçültme, dosya boyutunu düşürmek için boşlukları ve açıklamaları " +"kaldırır." + +#: inc/Engine/Admin/Settings/Page.php:625 +#: inc/Engine/Admin/Settings/Page.php:647 +#: inc/Engine/Admin/Settings/Page.php:729 +#: inc/Engine/Admin/Settings/Page.php:751 +msgid "This could break things!" +msgstr "Bu birşeyleri bozabilir!" + +#: inc/Engine/Admin/Settings/Page.php:626 +#: inc/Engine/Admin/Settings/Page.php:648 +#: inc/Engine/Admin/Settings/Page.php:730 +#: inc/Engine/Admin/Settings/Page.php:752 +msgid "" +"If you notice any errors on your website after having activated this " +"setting, just deactivate it again, and your site will be back to normal." +msgstr "" +"Bu ayarı aktif ettikten sonra web sitenizde herhangi bir hata fark " +"ederseniz, sadece tekrar devre dışı bırakın, ve siteniz normale dönecektir." + +#: inc/Engine/Admin/Settings/Page.php:627 +msgid "Activate minify CSS" +msgstr "CSS küçültmeyi aktif et" + +#: inc/Engine/Admin/Settings/Page.php:632 +msgid "Combine CSS files (Enable Minify CSS files to select)" +msgstr "" +"CSS dosyalarını birleştir (Seçmek için CSS dosyalarını küçült’ü " +"etkinleştirin)" + +#: inc/Engine/Admin/Settings/Page.php:634 +#, php-format +msgid "" +"Combine CSS merges all your files into 1, reducing HTTP requests. Not " +"recommended if your site uses HTTP/2. %1$sMore info%2$s" +msgstr "" +"CSS dosyalarını birleştirme, tüm dosyalarınızı 1 tane içine birleştirir, " +"HTTP isteklerini azaltır. Siteniz HTTP/2 kullanıyorsa önerilemez. %1$sDaha " +"fazla bilgi%2$s" + +#: inc/Engine/Admin/Settings/Page.php:649 +msgid "Activate combine CSS" +msgstr "CSS birleştirmeyi aktif et" + +#: inc/Engine/Admin/Settings/Page.php:654 inc/admin/options.php:125 +msgid "Excluded CSS Files" +msgstr "Hariç Tutulan CSS Dosyaları" + +#: inc/Engine/Admin/Settings/Page.php:655 +msgid "" +"Specify URLs of CSS files to be excluded from minification and concatenation" +" (one per line)." +msgstr "" +"Küçültmeden ve birleştirmeden hariç tutulacak CSS dosyalarının URL’lerini " +"belirtin (her satıra bir tane)." + +#: inc/Engine/Admin/Settings/Page.php:656 +msgid "" +"Internal: The domain part of the URL will be stripped " +"automatically. Use (.*).css wildcards to exclude all CSS files located at a " +"specific path." +msgstr "" +"Dahili: URL’nin etki alanı kısmı otomatik olarak " +"sadeleştirilecektir. Belirli bir yolda bulunan tüm CSS dosyalarını hariç " +"tutmak için (.*).css joker karakterlerini kullanın." + +#: inc/Engine/Admin/Settings/Page.php:658 +#, php-format +msgid "" +"3rd Party: Use either the full URL path or only the domain " +"name, to exclude external CSS. %1$sMore info%2$s" +msgstr "" +"3. Taraf: Harici CSS dosyalarını dahil etmemek için ya URL " +"tam yolunu ya da sadece etki alanı adını kullanın. %1$sDaha fazla bilgi%2$s" + +#: inc/Engine/Admin/Settings/Page.php:671 +msgid "Optimize CSS delivery" +msgstr "CSS teslimini iyileştir" + +#: inc/Engine/Admin/Settings/Page.php:678 +#, php-format +msgctxt "WP Critical CSS compatibility" +msgid "" +"Optimize CSS Delivery is currently handled by the %1$s plugin. If you want " +"to use WP Rocket’s Optimize CSS Delivery option, disable the %1$s plugin." +msgstr "" +"CSS Teslimini İyileştirme, şu anda %1$s eklentisi tarafından işlenmektedir. " +"WP Rocket’in CSS Teslimini İyileştir seçeneğini kullanmak istiyorsanız, %1$s" +" eklentisini etkisizleştirin." + +#: inc/Engine/Admin/Settings/Page.php:680 +#, php-format +msgid "" +"Optimize CSS delivery eliminates render-blocking CSS on your website for " +"faster perceived load time. %1$sMore info%2$s" +msgstr "" +"CSS teslimini iyileştirme, daha hızlı farkedilir yükleme süresi için web " +"sitenizdeki işleyişi engelleyen CSS’yi aradan kaldırır. %1$sDaha fazla " +"bilgi%2$s" + +#: inc/Engine/Admin/Settings/Page.php:691 +msgid "Fallback critical CSS" +msgstr "Son çare önemli CSS" + +#: inc/Engine/Admin/Settings/Page.php:696 +#, php-format +msgid "" +"Provides a fallback if auto-generated critical path CSS is incomplete. " +"%1$sMore info%2$s" +msgstr "" +"Otomatik oluşturulmuş önemli yol CSS tamamlanmazsa son bir çare sağlar. " +"%1$sDaha fazla bilgi%2$s" + +#: inc/Engine/Admin/Settings/Page.php:705 +msgid "Remove jQuery Migrate" +msgstr "jQuery Migrate’i kaldır" + +#: inc/Engine/Admin/Settings/Page.php:707 +#, php-format +msgid "" +"Remove jQuery Migrate eliminates a JS file and can improve load time. " +"%1$sMore info%2$s" +msgstr "" +"jQuery Migrate’i kaldırmak, JS dosyasını ortadan kaldırır ve yükleme " +"süresini iyileştirebilir. %1$sDaha fazla bilgi%2$s" + +#: inc/Engine/Admin/Settings/Page.php:715 +msgid "Minify JavaScript files" +msgstr "JavaScript dosyalarını küçült" + +#: inc/Engine/Admin/Settings/Page.php:716 +msgid "" +"Minify JavaScript removes whitespace and comments to reduce the file size." +msgstr "" +"JavaScript’i küçültme, dosya boyutunu düşürmek için boşlukları ve " +"açıklamaları kaldırır." + +#: inc/Engine/Admin/Settings/Page.php:731 +msgid "Activate minify JavaScript" +msgstr "JavaScript küçültmeyi aktif et" + +#: inc/Engine/Admin/Settings/Page.php:736 +msgid "" +"Combine JavaScript files (Enable Minify JavaScript files to select)" +msgstr "" +"JavaScript dosyalarını birleştir (Seçmek için JavaScript dosyalarını " +"küçült’ü etkinleştirin)" + +#: inc/Engine/Admin/Settings/Page.php:738 +#, php-format +msgid "" +"Combine JavaScript files combines your site’s internal, 3rd party and inline" +" JS reducing HTTP requests. Not recommended if your site uses HTTP/2. " +"%1$sMore info%2$s" +msgstr "" +"JavaScript dosyalarını birleştirme, sitenizin dahili, 3. taraf ve satır içi " +"JS dosyalarını birleştirir, HTTP isteklerini azaltır. Siteniz HTTP/2 " +"kullanıyorsa önerilmez. %1$sDaha fazla bilgi%2$s" + +#: inc/Engine/Admin/Settings/Page.php:753 +msgid "Activate combine JavaScript" +msgstr "JavaScript birleştirmeyi aktif et" + +#: inc/Engine/Admin/Settings/Page.php:758 inc/admin/options.php:126 +msgid "Excluded Inline JavaScript" +msgstr "Hariç Tutulan Satır İçi JavaScript" + +#: inc/Engine/Admin/Settings/Page.php:760 +#, php-format +msgid "" +"Specify patterns of inline JavaScript to be excluded from concatenation (one" +" per line). %1$sMore info%2$s" +msgstr "" +"Birleştirmeden hariç tutulacak satır içi JavaScript dosyalarının örneklerini" +" belirtin (her satıra bir tane). %1$sDaha fazla bilgi%2$s" + +#: inc/Engine/Admin/Settings/Page.php:776 inc/admin/options.php:127 +msgid "Excluded JavaScript Files" +msgstr "Hariç Tutulan JavaScript Dosyaları" + +#: inc/Engine/Admin/Settings/Page.php:777 +msgid "" +"Specify URLs of JavaScript files to be excluded from minification and " +"concatenation (one per line)." +msgstr "" +"Küçültmeden ve birleştirmeden hariç tutulacak JavaScript dosyalarının " +"URL’lerini belirtin (her satıra bir tane)." + +#: inc/Engine/Admin/Settings/Page.php:778 +msgid "" +"Internal: The domain part of the URL will be stripped " +"automatically. Use (.*).js wildcards to exclude all JS files located at a " +"specific path." +msgstr "" +"Dahili: URL’nin etki alanı kısmı otomatik olarak " +"sadeleştirilecektir. Belirli bir yolda bulunan tüm JS dosyalarını hariç " +"tutmak için (.*).js joker karakterlerini kullanın." + +#: inc/Engine/Admin/Settings/Page.php:780 +#, php-format +msgid "" +"3rd Party: Use either the full URL path or only the domain " +"name, to exclude external JS. %1$sMore info%2$s" +msgstr "" +"3. Taraf: Harici JS dosyalarını dahil etmemek için ya URL " +"tam yolunu ya da sadece etki alanı adını kullanın. %1$sDaha fazla bilgi%2$s" + +#: inc/Engine/Admin/Settings/Page.php:796 +msgid "Load JavaScript deferred" +msgstr "Ertelenmiş JavaScript yükle" + +#: inc/Engine/Admin/Settings/Page.php:798 +#, php-format +msgid "" +"Load JavaScript deferred eliminates render-blocking JS on your site and can " +"improve load time. %1$sMore info%2$s" +msgstr "" +"Ertelenmiş JavaScript yüklemek, yükleme süresini iyileştirebilir ve " +"sitenizdeki işleyişi engelleyen JS’yi aradan kaldırır. %1$sDaha fazla " +"bilgi%2$s" + +#: inc/Engine/Admin/Settings/Page.php:809 +msgid "Safe Mode for jQuery (recommended)" +msgstr "jQuery için Güvenli Kip (önerilir)" + +#: inc/Engine/Admin/Settings/Page.php:810 +msgid "" +"Safe mode for jQuery for deferred JS ensures support for inline jQuery " +"references from themes and plugins by loading jQuery at the top of the " +"document as a render-blocking script.
      Deactivating may result in " +"broken functionality, test thoroughly!" +msgstr "" +"Ertelenmiş JS’nin jQuery için güvenli kipi, bir işleyişi engelleme betiği " +"olarak belgenin en başında jQuery yükleyerek temalardan ve eklentilerden " +"gelen satır içi jQuery kaynakları için desteği sağlama alır.
      Devre " +"dışı bırakmak işlevselliğin bozulmasıyla sonuçlanabilir, iyice deneyin!" + +#: inc/Engine/Admin/Settings/Page.php:823 inc/admin/ui/meta-boxes.php:79 +msgid "Delay JavaScript execution" +msgstr "JavaScript yürütmeyi geciktir" + +#: inc/Engine/Admin/Settings/Page.php:825 +#, php-format +msgid "" +"Improves performance by delaying the loading of JavaScript files until user " +"interaction (e.g. scroll, click). %1$sMore info%2$s" +msgstr "" +"JavaScript dosyalarının yüklenmesini, kullanıcı etkileşimine (örn. kaydırma," +" tıklama) kadar geciktirerek performansı artırır. %1$sDaha fazla bilgi%2$s" + +#: inc/Engine/Admin/Settings/Page.php:833 +msgid "Scripts to delay" +msgstr "Geciktirilecek betikler" + +#: inc/Engine/Admin/Settings/Page.php:834 +msgid "" +"Specify keywords that can identify inline or JavaScript files to be delayed " +"(one per line)." +msgstr "" +"Geciktirilecek satır içi veya JavaScript dosyalarını tanımlayabilen anahtar " +"kelimeleri belirtin (her satıra bir tane)." + +#: inc/Engine/Admin/Settings/Page.php:835 +msgid "" +"A curated list of scripts that are safe to delay is provided. They may not " +"all apply to your website and it is safe to leave the list as-is unless you " +"face issues." +msgstr "" +"Gecikmeye karşı güvenli olan seçilmiş bir betikler listesi sağlanır. " +"Bunların tümü web sitenize uygulanamayabilir ve sorunlarla karşılaşmadığınız" +" sürece listeyi olduğu gibi bırakmak güvenlidir." + +#: inc/Engine/Admin/Settings/Page.php:870 +msgid "Media" +msgstr "Ortam" + +#: inc/Engine/Admin/Settings/Page.php:871 +msgid "LazyLoad, emojis, embeds, WebP" +msgstr "LazyLoad, emojiler, gömülüler, WebP" + +#: inc/Engine/Admin/Settings/Page.php:880 +msgid "Avada" +msgstr "Avada" + +#: inc/Engine/Admin/Settings/Page.php:884 +msgid "Autoptimize" +msgstr "Autoptimize" + +#: inc/Engine/Admin/Settings/Page.php:929 +msgid "LazyLoad" +msgstr "LazyLoad" + +#: inc/Engine/Admin/Settings/Page.php:932 +#, php-format +msgid "" +"It can improve actual and perceived loading time as images, iframes, and " +"videos will be loaded only as they enter (or about to enter) the viewport " +"and reduces the number of HTTP requests. %1$sMore Info%2$s" +msgstr "" +"Resimlerin, iframe’lerin, ve görüntülerin sadece görüş alanına girmesiyle " +"(ya da girmek üzereyken) yükleneceği gibi asıl ve farkedilir yükleme " +"süresini iyileştirebilir ve HTTP isteklerinin sayısını azaltır. %1$sDaha " +"Fazla Bilgi%2$s" + +#: inc/Engine/Admin/Settings/Page.php:939 +#, php-format +msgid "" +"LazyLoad is currently activated in %2$s. If you want to use WP Rocket’s " +"LazyLoad, disable this option in %2$s." +msgstr "" +"LazyLoad şu anda %2$s içinde aktif edildi. Eğer WP Rocket’in LazyLoad’ını " +"kullanmak istiyorsanız, %2$s içindeki bu seçeneği etkisizleştirin." + +#: inc/Engine/Admin/Settings/Page.php:942 +msgid "Emoji 👻" +msgstr "Emoji 👻" + +#: inc/Engine/Admin/Settings/Page.php:944 +msgid "" +"Use default emoji of visitor's browser instead of loading emoji from " +"WordPress.org" +msgstr "" +"WordPress.org adresinden emoji yüklemek yerine ziyaretçinin tarayıcısının " +"varsayılan emoji’sini kullansın" + +#: inc/Engine/Admin/Settings/Page.php:948 +msgid "Embeds" +msgstr "Gömülüler" + +#: inc/Engine/Admin/Settings/Page.php:950 +msgid "" +"Prevents others from embedding content from your site, prevents you from " +"embedding content from other (non-allowed) sites, and removes JavaScript " +"requests related to WordPress embeds" +msgstr "" +"Sitenizden gömülü içerikten diğerlerini korur, diğer (izin verilmeyen) " +"sitelerden gömülü içerikten sizi korur, ve WordPress gömülüleri ile ilgili " +"JavaScript isteklerini kaldırır." + +#: inc/Engine/Admin/Settings/Page.php:954 +msgid "WebP compatibility" +msgstr "WebP uyumluluğu" + +#: inc/Engine/Admin/Settings/Page.php:958 +#, php-format +msgid "" +"Enable this option if you would like WP Rocket to serve WebP images to " +"compatible browsers. Please note that WP Rocket cannot create WebP images " +"for you. To create WebP images we recommend %1$sImagify%2$s. %3$sMore " +"info%2$s" +msgstr "" +"WP Rocket’in WebP resimlerini uyumlu tarayıcılara sunmasını istiyorsanız bu " +"seçeneği etkinleştirin. WP Rocket’in sizin için WebP resimlerini " +"oluşturamayacağını lütfen unutmayın. WebP resimleri oluşturmak için " +"%1$sImagify%2$s öneriyoruz. %3$sDaha fazla bilgi%2$s" + +#: inc/Engine/Admin/Settings/Page.php:985 +msgid "Enable for images" +msgstr "Resimler için etkinleştir" + +#: inc/Engine/Admin/Settings/Page.php:997 +#, php-format +msgid "" +"LazyLoad for images is currently activated in %2$s. If you want to use " +"%1$s’s LazyLoad, disable this option in %2$s." +msgstr "" +"Resimler için LazyLoad şu anda %2$s içinde aktif edildi. Eğer %1$s’in " +"LazyLoad’ını kullanmak istiyorsanız, %2$s içindeki bu seçeneği " +"etkisizleştirin." + +#: inc/Engine/Admin/Settings/Page.php:1005 +msgid "Enable for iframes and videos" +msgstr "Iframe’ler ve görüntüler için etkinleştir" + +#: inc/Engine/Admin/Settings/Page.php:1020 +msgid "Replace YouTube iframe with preview image" +msgstr "Önizleme resmi ile YouTube iframe’ini değiştir" + +#: inc/Engine/Admin/Settings/Page.php:1021 +msgid "" +"This can significantly improve your loading time if you have a lot of " +"YouTube videos on a page." +msgstr "" +"Bir sayfada çok sayıda YouTube görüntüsüne sahipseniz bu önemli ölçüde " +"yükleme sürenizi iyileştirebilir." + +#: inc/Engine/Admin/Settings/Page.php:1031 +#, php-format +msgid "Replace YouTube iframe with preview image is not compatible with %2$s." +msgstr "" +"Önizleme resmi ile değiştirilen YouTube iframe’i %2$s ile uyumlu değil." + +#: inc/Engine/Admin/Settings/Page.php:1035 +msgid "Disable Emoji" +msgstr "Emoji’yi etkisizleştir" + +#: inc/Engine/Admin/Settings/Page.php:1036 +msgid "Disable Emoji will reduce the number of external HTTP requests." +msgstr "" +"Emoji’yi etkisizleştirmek, harici HTTP isteklerinin sayısını azaltacak." + +#: inc/Engine/Admin/Settings/Page.php:1044 +msgid "Disable WordPress embeds" +msgstr "WordPress gömülülerini etkisizleştir" + +#: inc/Engine/Admin/Settings/Page.php:1054 +#: inc/classes/subscriber/Media/class-webp-subscriber.php:362 +msgid "Enable WebP caching" +msgstr "WebP önbelleklemesini etkinleştir" + +#: inc/Engine/Admin/Settings/Page.php:1074 inc/deprecated/deprecated.php:1776 +#: views/settings/page-sections/tutorials.php:30 +msgid "Preload" +msgstr "Önyükleme" + +#: inc/Engine/Admin/Settings/Page.php:1075 +msgid "Generate cache files, preload fonts" +msgstr "Önbellek dosyalarını oluşturun, yazı tiplerini önyükleyin" + +#: inc/Engine/Admin/Settings/Page.php:1086 +msgid "Preload Cache" +msgstr "Önbelleği Önyükle" + +#: inc/Engine/Admin/Settings/Page.php:1089 +#, php-format +msgid "" +"When you enable preloading WP Rocket will generate the cache starting with " +"the links on your homepage followed by the sitemaps you specify. Preloading " +"is automatically triggered when you add or update content and can also be " +"manually triggered from the admin bar or from the %1$sWP Rocket " +"Dashboard%2$s." +msgstr "" +"Önyüklemeyi etkinleştirdiğinizde WP Rocket size belirttiğiniz site " +"haritaları tarafından izlenen ana sayfanızda bağlantılar ile başlayan " +"önbelleği oluşturacaktır. Önyükleme, içerik eklediğinizde veya " +"güncellediğinizde otomatik olarak tetiklenir ve ayrıca yönetici çubuğundan " +"veya %1$sWP Rocket Paneli%2$s’nden el ile tetiklenebilir." + +#: inc/Engine/Admin/Settings/Page.php:1097 +msgid "Preload Links" +msgstr "Bağlantıları Önyükle" + +#: inc/Engine/Admin/Settings/Page.php:1100 +#, php-format +msgid "" +"Link preloading improves the perceived load time by downloading a page when " +"a user hovers over the link. %1$sMore info%2$s" +msgstr "" +"Bağlantı önyükleme, kullanıcı bağlantının üzerine geldiğinde bir sayfa " +"indirerek algılanan yükleme süresini iyileştirir. %1$sDaha fazla bilgi%2$s" + +#: inc/Engine/Admin/Settings/Page.php:1108 +msgid "Prefetch DNS Requests" +msgstr "DNS İsteklerini Önceden Getirme" + +#: inc/Engine/Admin/Settings/Page.php:1110 +msgid "" +"DNS prefetching can make external files load faster, especially on mobile " +"networks" +msgstr "" +"Önceden DNS getirme, harici dosyaları daha hızlı yüklemeyi sağlayabilir, " +"özellikle de mobil ağlarda" + +#: inc/Engine/Admin/Settings/Page.php:1118 +msgid "Preload Fonts" +msgstr "Yazı Tiplerini Önyükle" + +#: inc/Engine/Admin/Settings/Page.php:1121 +#, php-format +msgid "" +"Improves performance by helping browsers discover fonts in CSS files. " +"%1$sMore info%2$s" +msgstr "" +"Tarayıcıların CSS dosyalarındaki yazı tiplerini keşfetmelerine yardımcı " +"olarak performansı artırır. %1$sDaha fazla bilgi%2$s" + +#: inc/Engine/Admin/Settings/Page.php:1135 +msgid "Activate Preloading" +msgstr "Önyüklemeyi aktif et" + +#: inc/Engine/Admin/Settings/Page.php:1154 +msgid "Activate sitemap-based cache preloading" +msgstr "Site haritası tabanlı önbellek önyüklemesini aktif et" + +#: inc/Engine/Admin/Settings/Page.php:1173 +msgid "Sitemaps for preloading" +msgstr "Önyükleme için site haritaları" + +#: inc/Engine/Admin/Settings/Page.php:1177 +msgid "Specify XML sitemap(s) to be used for preloading" +msgstr "Önyükleme için kullanılacak XML site harita(larını)sını belirtin" + +#: inc/Engine/Admin/Settings/Page.php:1187 +msgid "URLs to prefetch" +msgstr "Önceden gertirmek için URL’ler" + +#: inc/Engine/Admin/Settings/Page.php:1188 +msgid "" +"Specify external hosts to be prefetched (no http:, one per " +"line)" +msgstr "" +"Önceden getirilecek olan harici anamakineleri belirtin (http: " +"olmadan, her satıra bir tane)" + +#: inc/Engine/Admin/Settings/Page.php:1197 +msgid "Fonts to preload" +msgstr "Önyüklenecek yazı tipleri" + +#: inc/Engine/Admin/Settings/Page.php:1198 +msgid "" +"Specify urls of the font files to be preloaded (one per line). Fonts must be" +" hosted on your own domain, or the domain you have specified on the CDN tab." +msgstr "" +"Önyüklenecek yazı tipi dosyalarının URL’lerini belirtin (her satıra bir " +"tane). Yazı tipleri kendi etki alanınızda veya CDN sekmesinde belirttiğiniz " +"etki alanında barındırılmak zorundadır." + +#: inc/Engine/Admin/Settings/Page.php:1199 +msgid "" +"The domain part of the URL will be stripped automatically.
      Allowed font " +"extensions: otf, ttf, svg, woff, woff2." +msgstr "" +"URL’nin etki alanı kısmı otomatik olarak sadeleştirilecektir.
      İzin " +"verilen yazı tipi uzantıları: otf, ttf, svg, woff, woff2." + +#: inc/Engine/Admin/Settings/Page.php:1208 +msgid "Enable link preloading" +msgstr "Bağlantı önyüklemeyi etkinleştir" + +#: inc/Engine/Admin/Settings/Page.php:1227 +msgid "Advanced Rules" +msgstr "Gelişmiş Kurallar" + +#: inc/Engine/Admin/Settings/Page.php:1228 +msgid "Fine-tune cache rules" +msgstr "Önbellek kurallarına ince ayar yapın" + +#: inc/Engine/Admin/Settings/Page.php:1237 +msgid "" +"Sensitive pages like custom login/logout URLs should be excluded from cache." +msgstr "" +"Özel oturum açma/oturum kapatma URL’leri gibi hassas sayfalar önbellekten " +"hariç tutulmalıdır." + +#: inc/Engine/Admin/Settings/Page.php:1240 +msgctxt "plugin name" +msgid "WooCommerce" +msgstr "WooCommerce" + +#: inc/Engine/Admin/Settings/Page.php:1242 +msgctxt "plugin name" +msgid "Easy Digital Downloads" +msgstr "Easy Digital Downloads" + +#: inc/Engine/Admin/Settings/Page.php:1244 +msgctxt "plugin name" +msgid "iThemes Exchange" +msgstr "iThemes Exchange" + +#: inc/Engine/Admin/Settings/Page.php:1246 +msgctxt "plugin name" +msgid "Jigoshop" +msgstr "Jigoshop" + +#: inc/Engine/Admin/Settings/Page.php:1248 +msgctxt "plugin name" +msgid "WP-Shop" +msgstr "WP-Shop" + +#: inc/Engine/Admin/Settings/Page.php:1254 +#, php-format +msgid "" +"
      Cart, checkout and \"my account\" pages set in " +"%1$s%2$s%3$s will be detected and never cached by default." +msgstr "" +"
      %1$s%2$s%3$s içinde ayarlanan sepet, ödeme ve " +"\"hesabım\" sayfaları algılanacak ve varsayılan olarak asla " +"önbelleklenmeyecektir." + +#: inc/Engine/Admin/Settings/Page.php:1264 inc/admin/options.php:128 +msgid "Never Cache URL(s)" +msgstr "Asla Önbelleklenmeyen URL(ler)" + +#: inc/Engine/Admin/Settings/Page.php:1275 +msgid "Never Cache Cookies" +msgstr "Asla Önbelleklenmeyen Tanımlama Bilgileri" + +#: inc/Engine/Admin/Settings/Page.php:1280 inc/admin/options.php:129 +msgid "Never Cache User Agent(s)" +msgstr "Asla Önbelleklenmeyen Kullanıcı Tanıtıcı(ları)sı" + +#: inc/Engine/Admin/Settings/Page.php:1285 inc/admin/options.php:130 +msgid "Always Purge URL(s)" +msgstr "Her Zaman Temizlenen URL(ler)" + +#: inc/Engine/Admin/Settings/Page.php:1294 +msgid "Cache Query String(s)" +msgstr "Önbelleklenen Sorgu Dizgi(leri)si" + +#: inc/Engine/Admin/Settings/Page.php:1297 +#, php-format +msgid "" +"%1$sCache for query strings%2$s enables you to force caching for specific " +"GET parameters." +msgstr "" +"%1$sSorgu dizgilerini önbelleklemek%2$s belirli GET parametreleri için " +"önbelleklemeye zorlamanızı etkinleştirir." + +#: inc/Engine/Admin/Settings/Page.php:1311 +msgid "" +"Specify URLs of pages or posts that should never be cached (one per line)" +msgstr "" +"Asla önbelleklenmemesi gereken sayfa ve yazıların URL’lerini belirtin (her " +"satıra bir tane)" + +#: inc/Engine/Admin/Settings/Page.php:1312 +#: inc/Engine/Admin/Settings/Page.php:1340 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*) " +"wildcards to address multiple URLs under a given path." +msgstr "" +"URL’nin etki alanı kısmı otomatik olarak sadeleştirilecektir.
      Verilen yol" +" altında çoklu URL’leri adreslemek için (.*) joker karakterlerini kullanın." + +#: inc/Engine/Admin/Settings/Page.php:1321 +msgid "" +"Specify the IDs of cookies that, when set in the visitor's browser, should " +"prevent a page from getting cached (one per line)" +msgstr "" +"Ziyaretçinin tarayıcısında ayarlandığında, bir sayfanın önbelleklenmesine " +"engel olması gereken, tanımlama bilgilerinin Kimliklerini belirtin (her " +"satıra bir tane)" + +#: inc/Engine/Admin/Settings/Page.php:1329 +msgid "" +"Specify user agent strings that should never see cached pages (one per line)" +msgstr "" +"Önbelleklenmiş sayfaları asla görmemesi gereken kullanıcı tanıtıcı dizgisini" +" belirtin (her satıra bir tane)" + +#: inc/Engine/Admin/Settings/Page.php:1330 +msgid "Use (.*) wildcards to detect parts of UA strings." +msgstr "" +"UA dizgilerinin parçalarını algılamak için (.*) joker karakterlerini " +"kullanın." + +#: inc/Engine/Admin/Settings/Page.php:1339 +msgid "" +"Specify URLs you always want purged from cache whenever you update any post " +"or page (one per line)" +msgstr "" +"Herhangi bir yazıyı veya sayfayı her güncellediğinizde daima önbellekten " +"temizlenmesini istediğiniz URL’leri belirtin (her satıra bir tane)" + +#: inc/Engine/Admin/Settings/Page.php:1348 +msgid "Specify query strings for caching (one per line)" +msgstr "Önbellekleme için sorgu dizgilerini belirtin (her satıra bir tane)" + +#: inc/Engine/Admin/Settings/Page.php:1373 inc/deprecated/deprecated.php:1775 +msgid "Database" +msgstr "Veritabanı" + +#: inc/Engine/Admin/Settings/Page.php:1374 +msgid "Optimize, reduce bloat" +msgstr "İyileştirin, şişmeyi azaltın" + +#: inc/Engine/Admin/Settings/Page.php:1383 +msgid "Post Cleanup" +msgstr "Yazı Temizleme" + +#: inc/Engine/Admin/Settings/Page.php:1385 +msgid "" +"Post revisions and drafts will be permanently deleted. Do not use this " +"option if you need to retain revisions or drafts." +msgstr "" +"Yazı incelemeleri ve taslaklar kalıcı olarak silinecektir. İncelemeleri ya " +"da taslakları tutmanız gerekiyorsa bu seçeneği kullanmayın." + +#: inc/Engine/Admin/Settings/Page.php:1393 +msgid "Comments Cleanup" +msgstr "Yorumları Temizleme" + +#: inc/Engine/Admin/Settings/Page.php:1395 +msgid "Spam and trashed comments will be permanently deleted." +msgstr "İstenmeyen mesaj ve çöpe atılmış yorumlar kalıcı olarak silinecektir." + +#: inc/Engine/Admin/Settings/Page.php:1399 +msgid "Transients Cleanup" +msgstr "Geçicileri Temizleme" + +#: inc/Engine/Admin/Settings/Page.php:1401 +msgid "" +"Transients are temporary options; they are safe to remove. They will be " +"automatically regenerated as your plugins require them." +msgstr "" +"Geçiciler geçici seçeneklerdir; kaldırması güvenlidir. Eklentilerinizin " +"gerektirdiklerini otomatik olarak oluşturacaklardır." + +#: inc/Engine/Admin/Settings/Page.php:1405 +msgid "Database Cleanup" +msgstr "Veritabanı Temizleme" + +#: inc/Engine/Admin/Settings/Page.php:1407 +msgid "Reduces overhead of database tables" +msgstr "Veritabanı tablolarının ek yükünü azaltır" + +#: inc/Engine/Admin/Settings/Page.php:1411 +msgid "Automatic cleanup" +msgstr "Otomatik Temizleme" + +#: inc/Engine/Admin/Settings/Page.php:1422 +#: inc/classes/admin/Database/class-optimization.php:41 +msgid "Revisions" +msgstr "Düzeltmeler" + +#: inc/Engine/Admin/Settings/Page.php:1424 +#, php-format +msgid "%s revision in your database." +msgid_plural "%s revisions in your database." +msgstr[0] "Veritabanınızda %s düzeltme." +msgstr[1] "Veritabanınızda %s düzeltme." + +#: inc/Engine/Admin/Settings/Page.php:1432 +#: inc/classes/admin/Database/class-optimization.php:42 +msgid "Auto Drafts" +msgstr "Otomatik Taslaklar" + +#: inc/Engine/Admin/Settings/Page.php:1434 +#, php-format +msgid "%s draft in your database." +msgid_plural "%s drafts in your database." +msgstr[0] "Veritabanınızda %s taslak." +msgstr[1] "Veritabanınızda %s taslak." + +#: inc/Engine/Admin/Settings/Page.php:1442 +#: inc/classes/admin/Database/class-optimization.php:43 +msgid "Trashed Posts" +msgstr "Çöpe Atılmış Yazılar" + +#: inc/Engine/Admin/Settings/Page.php:1444 +#, php-format +msgid "%s trashed post in your database." +msgid_plural "%s trashed posts in your database." +msgstr[0] "Veritabanınızda %s çöpe atılmış yazı." +msgstr[1] "Veritabanınızda %s çöpe atılmış yazı." + +#: inc/Engine/Admin/Settings/Page.php:1452 +#: inc/classes/admin/Database/class-optimization.php:44 +msgid "Spam Comments" +msgstr "İstenmeyen Yorumlar" + +#: inc/Engine/Admin/Settings/Page.php:1454 +#, php-format +msgid "%s spam comment in your database." +msgid_plural "%s spam comments in your database." +msgstr[0] "Veritabanınızda %s istenmeyen yorum." +msgstr[1] "Veritabanınızda %s istenmeyen yorum." + +#: inc/Engine/Admin/Settings/Page.php:1462 +#: inc/classes/admin/Database/class-optimization.php:45 +msgid "Trashed Comments" +msgstr "Çöpe Atılmış Yorumlar" + +#: inc/Engine/Admin/Settings/Page.php:1464 +#, php-format +msgid "%s trashed comment in your database." +msgid_plural "%s trashed comments in your database." +msgstr[0] "Veritabanınızda %s çöpe atılmış yorum." +msgstr[1] "Veritabanınızda %s çöpe atılmış yorum." + +#: inc/Engine/Admin/Settings/Page.php:1472 +#: inc/classes/admin/Database/class-optimization.php:46 +msgid "Expired transients" +msgstr "Süresi dolan geçiciler" + +#: inc/Engine/Admin/Settings/Page.php:1474 +#, php-format +msgid "%s expired transient in your database." +msgid_plural "%s expired transients in your database." +msgstr[0] "Veritabanınızda süresi dolan %s geçici." +msgstr[1] "Veritabanınızda süresi dolan %s geçici." + +#: inc/Engine/Admin/Settings/Page.php:1482 +msgid "All transients" +msgstr "Tüm geçiciler" + +#: inc/Engine/Admin/Settings/Page.php:1484 +#, php-format +msgid "%s transient in your database." +msgid_plural "%s transients in your database." +msgstr[0] "Veritabanınızda %s geçici." +msgstr[1] "Veritabanınızda %s geçici." + +#: inc/Engine/Admin/Settings/Page.php:1492 +msgid "Optimize Tables" +msgstr "Tabloları iyileştir" + +#: inc/Engine/Admin/Settings/Page.php:1494 +#, php-format +msgid "%s table to optimize in your database." +msgid_plural "%s tables to optimize in your database." +msgstr[0] "Veritabanınızda iyileştirmek için %s tablo." +msgstr[1] "Veritabanınızda iyileştirmek için %s tablo." + +#: inc/Engine/Admin/Settings/Page.php:1505 +msgid "Schedule Automatic Cleanup" +msgstr "Otomatik Temizlemeyi Zamanla" + +#: inc/Engine/Admin/Settings/Page.php:1517 +msgid "Frequency" +msgstr "Sıklıkla" + +#: inc/Engine/Admin/Settings/Page.php:1525 +msgid "Daily" +msgstr "Günlük" + +#: inc/Engine/Admin/Settings/Page.php:1526 +msgid "Weekly" +msgstr "Haftalık" + +#: inc/Engine/Admin/Settings/Page.php:1527 +msgid "Monthly" +msgstr "Aylık" + +#: inc/Engine/Admin/Settings/Page.php:1543 +#: inc/Engine/Admin/Settings/Page.php:1554 inc/admin/ui/meta-boxes.php:76 +#: inc/deprecated/deprecated.php:1773 +msgid "CDN" +msgstr "CDN" + +#: inc/Engine/Admin/Settings/Page.php:1544 +msgid "Integrate your CDN" +msgstr "CDN’nizi bütünleştirin" + +#: inc/Engine/Admin/Settings/Page.php:1556 +msgid "" +"All URLs of static files (CSS, JS, images) will be rewritten to the CNAME(s)" +" you provide." +msgstr "" +"Sabit dosyaların (CSS, JS, resimler) tüm URL’leri, verdiğiniz CNAME(lere)e " +"yeniden yazılacaktır." + +#: inc/Engine/Admin/Settings/Page.php:1558 +#, php-format +msgid "" +"Not required for services like Cloudflare and Sucuri. Please see our " +"available %1$sAdd-ons%2$s." +msgstr "" +"Cloudflare ve Sucuri gibi hizmetler için gerekmez. Lütfen mevcut " +"%1$sEklentilerimize%2$s bakın." + +#: inc/Engine/Admin/Settings/Page.php:1573 inc/admin/options.php:131 +msgid "Exclude files from CDN" +msgstr "CDN’den hariç tutulan dosyalar" + +#: inc/Engine/Admin/Settings/Page.php:1599 +#, php-format +msgid "" +"%1$s%2$s Add-on%3$s is currently enabled. Configuration of the CDN settings " +"is not required for %2$s to work on your site." +msgid_plural "" +"%1$s%2$s Add-ons%3$s are currently enabled. Configuration of the CDN " +"settings is not required for %2$s to work on your site." +msgstr[0] "" +"%1$s%2$s Eklentisi%3$s şu anda etkinleştirildi. CDN ayarları yapılandırması," +" sitenizde çalışması için %2$s gerektirmez." +msgstr[1] "" +"%1$s%2$s Eklentileri%3$s şu anda etkinleştirildi. CDN ayarlarının " +"yapılandırması, sitenizde çalışması amacıyla %2$s için gerekmez." + +#: inc/Engine/Admin/Settings/Page.php:1624 +msgid "Enable Content Delivery Network" +msgstr "İçerik Dağıtım Ağını (CDN) etkinleştir" + +#: inc/Engine/Admin/Settings/Page.php:1633 +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:151 +msgid "CDN CNAME(s)" +msgstr "CDN CNAME(ler)" + +#: inc/Engine/Admin/Settings/Page.php:1634 +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:152 +msgid "Specify the CNAME(s) below" +msgstr "Aşağıda CNAME(leri) belirtin" + +#: inc/Engine/Admin/Settings/Page.php:1641 +msgid "" +"Specify URL(s) of files that should not get served via CDN (one per line)." +msgstr "" +"CDN aracılığıyla sunulmaması gereken dosyaların URL(lerini)sini belirtin " +"(her satıra bir tane)." + +#: inc/Engine/Admin/Settings/Page.php:1642 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*) " +"wildcards to exclude all files of a given file type located at a specific " +"path." +msgstr "" +"URL’nin etki alanı kısmı otomatik olarak sadeleştirilecektir.
      Belirli bir" +" yolda bulunan verilen bir dosya türünün tüm dosyalarını hariç tutmak için " +"(.*) joker karakterlerini kullanın." + +#: inc/Engine/Admin/Settings/Page.php:1664 +#: inc/Engine/Admin/Settings/Page.php:1672 +msgid "Heartbeat" +msgstr "Kalp Atışı" + +#: inc/Engine/Admin/Settings/Page.php:1665 +msgid "Control WordPress Heartbeat API" +msgstr "WordPress Kalp Atışı API’sini denetleyin" + +#: inc/Engine/Admin/Settings/Page.php:1673 +msgid "" +"Reducing or disabling the Heartbeat API’s activity can help save some of " +"your server’s resources." +msgstr "" +"Kalp Atışı API’si etkinliğini azaltmak veya etkisizleştirmek, sunucunuzun " +"kaynaklarının bazılarını kurtarmasına yardımcı olabilir." + +#: inc/Engine/Admin/Settings/Page.php:1682 +msgid "Reduce or disable Heartbeat activity" +msgstr "Kalp Atışı etkinliğini azaltma veya etkisizleştirme" + +#: inc/Engine/Admin/Settings/Page.php:1683 +msgid "" +"Reducing activity will change Heartbeat frequency from one hit each minute " +"to one hit every 2 minutes." +msgstr "" +"Etkinliği azaltmak Kalp Atışı sıklığını, her dakikada bir vuruştan her 2 " +"dakikada bir vuruşa değiştirecektir." + +#: inc/Engine/Admin/Settings/Page.php:1683 +msgid "" +"Disabling Heartbeat entirely may break plugins and themes using this API." +msgstr "" +"Kalp Atışı’nın tamamen etkisizleştirilmesi bu API’yi kullanan eklentileri ve" +" temaları bozabilir." + +#: inc/Engine/Admin/Settings/Page.php:1697 +msgid "Do not limit" +msgstr "Sınırlandırma" + +#: inc/Engine/Admin/Settings/Page.php:1698 +msgid "Reduce activity" +msgstr "Etkinliği azalt" + +#: inc/Engine/Admin/Settings/Page.php:1699 +msgid "Disable" +msgstr "Etkisizleştir" + +#: inc/Engine/Admin/Settings/Page.php:1707 +msgid "Control Heartbeat" +msgstr "Kalp Atışı’nı denetle" + +#: inc/Engine/Admin/Settings/Page.php:1716 +msgid "Behavior in backend" +msgstr "Arka uçtaki davranış" + +#: inc/Engine/Admin/Settings/Page.php:1723 +msgid "Behavior in post editor" +msgstr "Yazı düzenleyicideki davranış" + +#: inc/Engine/Admin/Settings/Page.php:1729 +msgid "Behavior in frontend" +msgstr "Ön uçtaki davranış" + +#: inc/Engine/Admin/Settings/Page.php:1745 +#: views/settings/page-sections/tutorials.php:36 +msgid "Add-ons" +msgstr "Eklentiler" + +#: inc/Engine/Admin/Settings/Page.php:1746 +msgid "Add more features" +msgstr "Daha fazla özellik ekleyin" + +#: inc/Engine/Admin/Settings/Page.php:1753 +msgid "One-click Rocket Add-ons" +msgstr "Tek Tık Rocket Eklentileri" + +#: inc/Engine/Admin/Settings/Page.php:1754 +msgid "" +"One-Click Add-ons are features extending available options without " +"configuration needed. Switch the option \"on\" to enable from this screen." +msgstr "" +"Tek Tık Eklentiler, yapılandırma gerekmeden mevcut seçenekleri genişleten " +"özelliklerdir. Etkinleştirmek için seçeneği bu ekrandan \"açık\" olarak " +"değiştirin." + +#: inc/Engine/Admin/Settings/Page.php:1764 +msgid "Rocket Add-ons" +msgstr "Rocket Eklentileri" + +#: inc/Engine/Admin/Settings/Page.php:1765 +msgid "Rocket Add-ons are complementary features extending available options." +msgstr "" +"Rocket Eklentileri mevcut seçenekleri genişleten tamamlayıcı özelliklerdir." + +#: inc/Engine/Admin/Settings/Page.php:1778 +msgid "Google Tracking" +msgstr "Google İzleme" + +#: inc/Engine/Admin/Settings/Page.php:1784 +msgid "Improve browser caching for Google Analytics" +msgstr "Google Analytics için tarayıcı önbelleklemesini iyileştirin" + +#: inc/Engine/Admin/Settings/Page.php:1786 +#, php-format +msgid "" +"WP Rocket will host these Google scripts locally on your server to help " +"satisfy the PageSpeed recommendation for Leverage browser " +"caching.
      %1$sLearn more%2$s" +msgstr "" +"WP Rocket, Dengeli tarayıcı önbelleklemesi için PageSpeed önerisini" +" karşılamaya yardım etmede bu Google betiklerini sunucunuzda yerel olarak " +"barındıracak.
      %1$sDaha fazla bilgi edinin%2$s" + +#: inc/Engine/Admin/Settings/Page.php:1801 +msgid "Facebook Pixel" +msgstr "Facebook Piksel" + +#: inc/Engine/Admin/Settings/Page.php:1807 +msgid "Improve browser caching for Facebook Pixel" +msgstr "Facebook Piksel için tarayıcı önbelleklemesini iyileştirin" + +#: inc/Engine/Admin/Settings/Page.php:1809 +#, php-format +msgid "" +"WP Rocket will host these Facebook Pixels locally on your server to help " +"satisfy the PageSpeed recommendation for Leverage browser " +"caching.
      %1$sLearn more%2$s" +msgstr "" +"WP Rocket, Dengeli tarayıcı önbelleklemesi için PageSpeed önerisini" +" karşılamaya yardım etmede bu Facebook Piksel’leri sunucunuzda yerel olarak " +"barındıracak.
      %1$sDaha fazla bilgi edinin%2$s" + +#: inc/Engine/Admin/Settings/Page.php:1822 +#: inc/Engine/Admin/Settings/Page.php:1923 +msgid "Cloudflare" +msgstr "Cloudflare" + +#: inc/Engine/Admin/Settings/Page.php:1828 +msgid "Integrate your Cloudflare account with this add-on." +msgstr "Bu eklenti ile Cloudflare hesabınızı bütünleştirin." + +#: inc/Engine/Admin/Settings/Page.php:1829 +msgid "" +"Provide your account email, global API key, and domain to use options such " +"as clearing the Cloudflare cache and enabling optimal settings with WP " +"Rocket." +msgstr "" +"Cloudflare önbelleğini temizlemek ve WP Rocket ile en uygun ayarları " +"etkinleştirmek gibi seçenekleri kullanmak için hesap e-postanızı, genel API " +"anahtarını ve etki alanını sağlar." + +#: inc/Engine/Admin/Settings/Page.php:1863 +msgid "Varnish" +msgstr "Varnish" + +#: inc/Engine/Admin/Settings/Page.php:1869 +msgid "If Varnish runs on your server, you must activate this add-on." +msgstr "" +"Varnish sunucunuzda çalışıyorsa, bu eklentiyi aktif etmek zorundasınız." + +#: inc/Engine/Admin/Settings/Page.php:1871 +#, php-format +msgid "" +"Varnish cache will be purged each time WP Rocket clears its cache to ensure " +"content is always up-to-date.
      %1$sLearn more%2$s" +msgstr "" +"Varnish önbelleği, WP Rocket önbelleğini her temizlediğinde içeriğin her " +"zaman güncel olduğunu garantilemek için temizlenecektir.
      %1$sDaha fazla " +"bilgi edinin%2$s" + +#: inc/Engine/Admin/Settings/Page.php:1885 +msgid "Clear the Sucuri cache when WP Rocket’s cache is cleared." +msgstr "WP Rocket’in önbelleği temizlendiğinde Sucuri önbelleğini temizler." + +#: inc/Engine/Admin/Settings/Page.php:1888 +msgid "" +"Provide your API key to clear the Sucuri cache when WP Rocket’s cache is " +"cleared." +msgstr "" +"WP Rocket’in önbelleği temizlendiğinde Sucuri önbelleğini temizlemek için " +"API anahtarınızı verin." + +#: inc/Engine/Admin/Settings/Page.php:1896 +#: inc/Engine/Admin/Settings/Page.php:2040 +msgid "Sucuri" +msgstr "Sucuri" + +#: inc/Engine/Admin/Settings/Page.php:1902 +msgid "Synchronize Sucuri cache with this add-on." +msgstr "Bu eklenti ile Sucuri önbelleğini eşitleyin." + +#: inc/Engine/Admin/Settings/Page.php:1940 +msgid "Cloudflare credentials" +msgstr "Cloudflare kimlik bilgileri" + +#: inc/Engine/Admin/Settings/Page.php:1949 +msgid "Cloudflare settings" +msgstr "Cloudflare ayarları" + +#: inc/Engine/Admin/Settings/Page.php:1963 +msgctxt "Cloudflare" +msgid "Global API key:" +msgstr "Genel API anahtarı" + +#: inc/Engine/Admin/Settings/Page.php:1964 +msgctxt "Cloudflare" +msgid "Find your API key" +msgstr "API anahtarınızı bulun" + +#: inc/Engine/Admin/Settings/Page.php:1976 +msgctxt "Cloudflare" +msgid "Account email" +msgstr "Hesap e-postası" + +#: inc/Engine/Admin/Settings/Page.php:1985 +msgctxt "Cloudflare" +msgid "Zone ID" +msgstr "Bölge Kimliği - Zone ID" + +#: inc/Engine/Admin/Settings/Page.php:1995 +msgid "Development mode" +msgstr "Geliştirme kipi" + +#: inc/Engine/Admin/Settings/Page.php:1997 +#, php-format +msgid "" +"Temporarily activate development mode on your website. This setting will " +"automatically turn off after 3 hours. %1$sLearn more%2$s" +msgstr "" +"Web sitenizde geçici olarak geliştirme kipini aktif edin. Bu ayar otomatik " +"olarak 3 saat sonra kapanacak. %1$sDaha fazla bilgi edinin%2$s" + +#: inc/Engine/Admin/Settings/Page.php:2005 +msgid "Optimal settings" +msgstr "En uygun ayarlar" + +#: inc/Engine/Admin/Settings/Page.php:2006 +msgid "" +"Automatically enhances your Cloudflare configuration for speed, performance " +"grade and compatibility." +msgstr "" +"Hız, performans puanı ve uyumluluk için Cloudflare yapılandırmanızı otomatik" +" olarak iyileştirir." + +#: inc/Engine/Admin/Settings/Page.php:2014 +msgid "Relative protocol" +msgstr "Göreli protokol" + +#: inc/Engine/Admin/Settings/Page.php:2015 +msgid "" +"Should only be used with Cloudflare's flexible SSL feature. URLs of static " +"files (CSS, JS, images) will be rewritten to use // instead of http:// or " +"https://." +msgstr "" +"Sadece Cloudflare’in esnek SSL özelliği ile kullanılmalıdır. Sabit " +"dosyaların (CSS, JS, resimler) URL’leri, http:// veya https:// yerine // " +"kullanmak için yeniden yazılacaktır." + +#: inc/Engine/Admin/Settings/Page.php:2053 +msgid "Sucuri credentials" +msgstr "Sucuri kimlik bilgileri" + +#: inc/Engine/Admin/Settings/Page.php:2066 +msgctxt "Sucuri" +msgid "" +"Firewall API key (for plugin), must be in format {32 characters}/{32 " +"characters}:" +msgstr "" +"Güvenlik Duvarı API anahtarı (eklenti için), {32 karakter}/{32 " +"karakter} biçiminde olmak zorundadır:" + +#: inc/Engine/Admin/Settings/Page.php:2067 +msgctxt "Sucuri" +msgid "Find your API key" +msgstr "API anahtarınızı bulun" + +#: inc/Engine/Admin/Settings/Render.php:461 inc/deprecated/deprecated.php:1294 +msgid "Upload file and import settings" +msgstr "Dosyayı gönder ve ayarları içe aktar" + +#: inc/Engine/Admin/Settings/Settings.php:400 +msgid "" +"Sucuri Add-on: The API key for the Sucuri firewall must be in format " +"{32 characters}/{32 characters}." +msgstr "" +"Sucuri Eklentisi: Sucuri güvenlik duvarı için API anahtarı, {32 " +"karakter}/{32 karakter} biçiminde olmak zorundadır." + +#: inc/Engine/Admin/Settings/Settings.php:491 +#: inc/deprecated/deprecated.php:1245 +msgid "Settings saved." +msgstr "Ayarlar kaydedildi." + +#: inc/Engine/Admin/Settings/Subscriber.php:148 +#: inc/deprecated/deprecated.php:1786 +#: views/settings/page-sections/tools.php:33 +msgid "Tools" +msgstr "Araçlar" + +#: inc/Engine/Admin/Settings/Subscriber.php:149 +msgid "Import, Export, Rollback" +msgstr "İçe aktarın, Dışa aktarın, Geri alın" + +#: inc/Engine/Admin/Settings/Subscriber.php:170 +#: views/settings/page-sections/imagify.php:14 +msgid "Image Optimization" +msgstr "Resim İyileştirme" + +#: inc/Engine/Admin/Settings/Subscriber.php:171 +msgid "Compress your images" +msgstr "Resimlerinizi sıkıştırın" + +#: inc/Engine/Admin/Settings/Subscriber.php:188 +#: views/settings/page-sections/tutorials.php:45 +msgid "Tutorials" +msgstr "Eğitimler" + +#: inc/Engine/Admin/Settings/Subscriber.php:189 +msgid "Getting started and how to videos" +msgstr "Başlarken ve nasıl yapılır videoları" + +#: inc/Engine/CDN/RocketCDN/APIClient.php:154 +msgid "RocketCDN is not available at the moment. Please retry later" +msgstr "" +"RocketCDN şu anda kullanılabilir değil. Lütfen daha sonra yeniden deneyin" + +#: inc/Engine/CDN/RocketCDN/APIClient.php:171 +msgid "RocketCDN cache purge failed: Missing identifier parameter." +msgstr "" +"RocketCDN önbellek temizleme başarısız oldu: Eksik tanımlayıcı parametresi." + +#: inc/Engine/CDN/RocketCDN/APIClient.php:180 +msgid "RocketCDN cache purge failed: Missing user token." +msgstr "" +"RocketCDN önbellek temizleme başarısız oldu: Eksik kullanıcı belirteci." + +#: inc/Engine/CDN/RocketCDN/APIClient.php:199 +msgid "" +"RocketCDN cache purge failed: The API returned an unexpected response code." +msgstr "" +"RocketCDN önbellek temizleme başarısız oldu: API beklenmeyen bir yanıt kodu " +"döndürdü." + +#: inc/Engine/CDN/RocketCDN/APIClient.php:208 +msgid "RocketCDN cache purge failed: The API returned an empty response." +msgstr "" +"RocketCDN önbellek temizleme başarısız oldu: API boş bir yanıt döndürdü." + +#: inc/Engine/CDN/RocketCDN/APIClient.php:217 +msgid "RocketCDN cache purge failed: The API returned an unexpected response." +msgstr "" +"RocketCDN önbellek temizleme başarısız oldu: API beklenmeyen bir yanıt " +"döndürdü." + +#: inc/Engine/CDN/RocketCDN/APIClient.php:226 +#, php-format +msgid "RocketCDN cache purge failed: %s." +msgstr "RocketCDN önbellek temizleme başarısız oldu: %s" + +#: inc/Engine/CDN/RocketCDN/APIClient.php:234 +msgid "RocketCDN cache purge successful." +msgstr "RocketCDN önbellek temizleme başarılı." + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:82 +msgid "Next Billing Date" +msgstr "Sonraki Fatura Tarihi" + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:91 +msgid "No Subscription" +msgstr "Abonelik Yok" + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:127 +msgid "Your RocketCDN subscription is currently active." +msgstr "RocketCDN aboneliğiniz şu anda etkin." + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:133 +#, php-format +msgid "To use RocketCDN, replace your CNAME with %1$s%2$s%3$s." +msgstr "RocketCDN’yi kullanmak için CNAME’nizi %1$s%2$s%3$s ile değiştirin." + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:144 +#, php-format +msgid "%1$sMore Info%2$s" +msgstr "%1$sDaha Fazla Bilgi%2$s" + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:190 +msgid "Manage Subscription" +msgstr "Aboneliği Yönet" + +#: inc/Engine/CDN/RocketCDN/RESTSubscriber.php:137 +msgid "RocketCDN enabled" +msgstr "RocketCDN etkinleştirildi" + +#: inc/Engine/CDN/RocketCDN/RESTSubscriber.php:160 +msgid "RocketCDN disabled" +msgstr "RocketCDN etkisizleştirildi" + +#: inc/Engine/CDN/RocketCDN/views/cta-big.php:27 +#, php-format +msgid "Valid until %s only!" +msgstr "Sadece %s tarihine kadar geçerli!" + +#: inc/Engine/CDN/RocketCDN/views/cta-big.php:36 +msgid "Speed up your website thanks to:" +msgstr "Şunlar sayesinde web sitenizi hızlandırın:" + +#: inc/Engine/CDN/RocketCDN/views/cta-big.php:42 +#, php-format +msgid "" +"High performance Content Delivery Network (CDN) with %1$sunlimited " +"bandwith%2$s" +msgstr "" +"%1$sSınırsız bant genişliği%2$s ile yüksek performanslı İçerik Dağıtım Ağı " +"(CDN)" + +#: inc/Engine/CDN/RocketCDN/views/cta-big.php:48 +#, php-format +msgid "" +"Easy configuration: the %1$sbest CDN settings%2$s are automatically applied" +msgstr "" +"Kolay yapılandırma: %1$sen iyi CDN ayarları%2$s otomatik olarak uygulanır" + +#: inc/Engine/CDN/RocketCDN/views/cta-big.php:54 +#, php-format +msgid "" +"WP Rocket integration: the CDN option is %1$sautomatically configured%2$s in" +" our plugin" +msgstr "" +"WP Rocket bütünleştirmesi: CDN seçeneği eklentimizde %1$sotomatik olarak " +"yapılandırılır%2$s" + +#: inc/Engine/CDN/RocketCDN/views/cta-big.php:69 +#, php-format +msgid "%s / month" +msgstr "%s / ay" + +#: inc/Engine/CDN/RocketCDN/views/cta-big.php:74 +msgid "Get Started" +msgstr "Başlayın" + +#: inc/Engine/CDN/RocketCDN/views/cta-big.php:80 +msgid "Learn more about RocketCDN" +msgstr "RocketCDN hakkında daha fazla bilgi edinin" + +#: inc/Engine/CDN/RocketCDN/views/cta-big.php:82 +msgid "Reduce this banner" +msgstr "Bu afişi küçült" + +#: inc/Engine/CDN/RocketCDN/views/cta-big.php:88 +#, php-format +msgid "" +"* $%1$s/month for 12 months then $%2$s/month. You can cancel your " +"subscription at any time." +msgstr "" +"* 12 ay için $%1$s/ay ardından $%2$s/ay. Aboneliğinizi istediğiniz zaman " +"iptal edebilirsiniz." + +#: inc/Engine/CDN/RocketCDN/views/cta-small.php:17 +msgid "" +"Speed up your website with RocketCDN, WP Rocket’s Content Delivery Network." +msgstr "" +"RocketCDN, WP Rocket’in İçerik Dağıtım Ağı ile web sitenizi hızlandırın." + +#: inc/Engine/CDN/RocketCDN/views/cta-small.php:20 +#: inc/Engine/CDN/RocketCDN/views/promote-notice.php:13 +msgid "Learn More" +msgstr "Daha Fazla Bilgi Edinin" + +#: inc/Engine/CDN/RocketCDN/views/dashboard-status.php:23 +msgid "RocketCDN is unavailable on local domains and staging sites." +msgstr "" +"RocketCDN yerel etki alanlarında ve hazırlık sitelerinde kullanılamaz." + +#: inc/Engine/CDN/RocketCDN/views/dashboard-status.php:32 +msgid "Get RocketCDN" +msgstr "RocketCDN’yi Al" + +#: inc/Engine/CDN/RocketCDN/views/promote-notice.php:11 +msgid "New!" +msgstr "Yeni!" + +#: inc/Engine/CDN/RocketCDN/views/promote-notice.php:12 +msgid "" +"Speed up your website with RocketCDN, WP Rocket’s Content Delivery Network!" +msgstr "" +"RocketCDN, WP Rocket’in İçerik Dağıtım Ağı ile web sitenizi hızlandırın!" + +#: inc/Engine/Cache/AdminSubscriber.php:118 inc/admin/admin.php:71 +#: inc/admin/admin.php:92 inc/deprecated/3.5.php:908 +msgid "Clear this cache" +msgstr "Bu önbelleği temizle" + +#: inc/Engine/Cache/WPCache.php:330 +msgid "WP_CACHE value" +msgstr "WP_CACHE değeri" + +#: inc/Engine/Cache/WPCache.php:351 +msgid "" +"The WP_CACHE constant needs to be set to true for WP Rocket cache to work " +"properly" +msgstr "" +"WP Rocket önbelleğinin düzgün çalışması için WP_CACHE sabitinin true olarak " +"ayarlanması gerekir" + +#: inc/Engine/Cache/WPCache.php:360 +msgid "WP_CACHE is set to true" +msgstr "WP_CACHE, true olarak ayarlı" + +#: inc/Engine/Cache/WPCache.php:368 +msgid "WP_CACHE is not set" +msgstr "WP_CACHE ayarlı değil" + +#: inc/Engine/Cache/WPCache.php:376 +msgid "WP_CACHE is set to false" +msgstr "WP_CACHE, false olarak ayarlı" + +#: inc/Engine/CriticalPath/APIClient.php:64 +#, php-format +msgid "Critical CSS for %1$s not generated. Error: %2$s" +msgstr "%1$s için Önemli CSS oluşturulmadı. Hata: %2$s" + +#: inc/Engine/CriticalPath/APIClient.php:170 +#: inc/Engine/CriticalPath/DataManager.php:66 +#, php-format +msgid "" +"Critical CSS for %1$s on mobile not generated. Error: The API returned an " +"empty response." +msgstr "" +"Mobil üzerinde %1$s için Önemli CSS oluşturulmadı. Hata: API boş bir yanıt " +"döndürdü." + +#: inc/Engine/CriticalPath/APIClient.php:173 +#: inc/Engine/CriticalPath/DataManager.php:69 +#, php-format +msgid "" +"Critical CSS for %1$s not generated. Error: The API returned an empty " +"response." +msgstr "%1$s için Önemli CSS oluşturulmadı. Hata: API boş bir yanıt döndürdü." + +#: inc/Engine/CriticalPath/APIClient.php:185 +#, php-format +msgid "Critical CSS for %1$s on mobile not generated." +msgstr "Mobil üzerinde %1$s için Önemli CSS oluşturulmadı." + +#: inc/Engine/CriticalPath/APIClient.php:187 +#: inc/Engine/CriticalPath/ProcessorService.php:193 +#, php-format +msgid "Critical CSS for %1$s not generated." +msgstr "%1$s için Önemli CSS oluşturulmadı." + +#: inc/Engine/CriticalPath/APIClient.php:195 +#, php-format +msgid "" +"Critical CSS for %1$s on mobile not generated. Error: The API returned an " +"invalid response code." +msgstr "" +"Mobil üzerinde %1$s için Önemli CSS oluşturulmadı. Hata: API geçersiz bir " +"yanıt kodu döndürdü." + +#: inc/Engine/CriticalPath/APIClient.php:197 +#, php-format +msgid "" +"Critical CSS for %1$s not generated. Error: The API returned an invalid " +"response code." +msgstr "" +"%1$s için Önemli CSS oluşturulmadı. Hata: API geçersiz bir yanıt kodu " +"döndürdü." + +#: inc/Engine/CriticalPath/APIClient.php:205 +#: inc/Engine/CriticalPath/ProcessorService.php:200 +#, php-format +msgid "Error: %1$s" +msgstr "Hata: %1$s" + +#: inc/Engine/CriticalPath/Admin/Admin.php:260 +msgid "Regenerate Critical Path CSS" +msgstr "Önemli Yol CSS’yi yeniden oluştur" + +#: inc/Engine/CriticalPath/Admin/Post.php:132 +#: views/cpcss/metabox/generate.php:47 +msgid "Generate Specific CPCSS" +msgstr "Belirli ÖYCSS’yi Oluştur" + +#: inc/Engine/CriticalPath/Admin/Post.php:133 +#: views/cpcss/metabox/generate.php:45 +msgid "Regenerate specific CPCSS" +msgstr "Belirli ÖYCSS’yi Yeniden Oluştur" + +#: inc/Engine/CriticalPath/Admin/Post.php:199 +msgid "%l to use this feature." +msgstr "Bu özelliği kullanmak için %l." + +#: inc/Engine/CriticalPath/Admin/Post.php:202 +#, php-format +msgid "Publish the %s" +msgstr "%s Yayınla" + +#: inc/Engine/CriticalPath/Admin/Post.php:203 +msgid "Enable Optimize CSS delivery in WP Rocket settings" +msgstr "WP Rocket ayarlarında CSS Teslimini İyileştir’i etkinleştir" + +#: inc/Engine/CriticalPath/Admin/Post.php:204 +msgid "Enable Optimize CSS delivery in the options above" +msgstr "Yukarıdaki seçeneklerde CSS Teslimini İyileştir’i etkinleştir" + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:147 +msgid "Critical CSS generation is currently running." +msgstr "Önemli CSS üretimi şu anda çalışıyor." + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:152 +#: inc/Engine/Preload/PreloadSubscriber.php:242 +#, php-format +msgid "Go to the %1$sWP Rocket settings%2$s page to track progress." +msgstr "İlerlemeyi izlemek için %1$sWP Rocket ayarları%2$s sayfasına gidin." + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:366 +#, php-format +msgid "" +"Critical CSS generation is currently running: %1$d of %2$d page types " +"completed. (Refresh this page to view progress)" +msgstr "" +"Önemli CSS oluşturma şu anda çalışıyor: %1$d / %2$d sayfa türü tamamlandı. " +"(İlerlemeyi görmek için bu sayfayı yenileyin)" + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:438 +#, php-format +msgid "Critical CSS generation finished for %1$d of %2$d page types." +msgstr "Önemli CSS oluşturma, %1$d / %2$d sayfa türü için bitti." + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:445 +msgid "Critical CSS generation encountered one or more errors." +msgstr "Önemli CSS oluşturma, bir ya da daha fazla hata ile karşılaştı." + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:445 +msgid "Learn more." +msgstr "Daha fazla bilgi edinin." + +#: inc/Engine/CriticalPath/DataManager.php:102 +msgid "Critical CSS file for mobile does not exist" +msgstr "Mobil için Önemli CSS dosyası yok" + +#: inc/Engine/CriticalPath/DataManager.php:104 +msgid "Critical CSS file does not exist" +msgstr "Önemli CSS dosyası yok" + +#: inc/Engine/CriticalPath/DataManager.php:116 +msgid "Critical CSS file for mobile cannot be deleted" +msgstr "Mobil için Önemli CSS dosyası silinemez" + +#: inc/Engine/CriticalPath/DataManager.php:118 +msgid "Critical CSS file cannot be deleted" +msgstr "Önemli CSS dosyası silinemez" + +#: inc/Engine/CriticalPath/ProcessorService.php:186 +#, php-format +msgid "Mobile Critical CSS for %1$s not generated." +msgstr "%1$s için Mobil Önemli CSS oluşturulmadı." + +#: inc/Engine/CriticalPath/ProcessorService.php:227 +#, php-format +msgid "Critical CSS for %s in progress." +msgstr "%s için Önemli CSS devam ediyor." + +#: inc/Engine/CriticalPath/ProcessorService.php:261 +#, php-format +msgid "Mobile Critical CSS for %s generated." +msgstr "%s için Mobil Önemli CSS oluşturuldu." + +#: inc/Engine/CriticalPath/ProcessorService.php:272 +#, php-format +msgid "Critical CSS for %s generated." +msgstr "%s için Önemli CSS oluşturuldu." + +#: inc/Engine/CriticalPath/ProcessorService.php:294 +msgid "Critical CSS file deleted successfully." +msgstr "Önemli CSS dosyası başarılı olarak silindi." + +#: inc/Engine/CriticalPath/ProcessorService.php:316 +#, php-format +msgid "Mobile Critical CSS for %1$s timeout. Please retry a little later." +msgstr "" +"%1$s için Mobil Önemli CSS zaman aşımına uğradı. Lütfen biraz sonra yeniden " +"deneyin." + +#: inc/Engine/CriticalPath/ProcessorService.php:329 +#, php-format +msgid "Critical CSS for %1$s timeout. Please retry a little later." +msgstr "" +"%1$s için Önemli CSS zaman aşımına uğradı. Lütfen biraz sonra yeniden " +"deneyin." + +#: inc/Engine/CriticalPath/RESTWP.php:141 +msgid "Mobile CPCSS generation not enabled." +msgstr "Mobil ÖYCSS oluşturma etkinleştirilmedi." + +#: inc/Engine/CriticalPath/RESTWPPost.php:36 +#: inc/Engine/CriticalPath/RESTWPPost.php:69 +msgid "Requested post does not exist." +msgstr "İstenen yazı yok." + +#: inc/Engine/CriticalPath/RESTWPPost.php:46 +msgid "Cannot generate CPCSS for unpublished post." +msgstr "Yayınlanmamış yazı için ÖYCSS oluşturulamıyor." + +#: inc/Engine/HealthCheck/HealthCheck.php:82 inc/deprecated/3.5.php:868 +msgid "" +"The following scheduled event failed to run. This may indicate the CRON " +"system is not running properly, which can prevent some WP Rocket features " +"from working as intended:" +msgid_plural "" +"The following scheduled events failed to run. This may indicate the CRON " +"system is not running properly, which can prevent some WP Rocket features " +"from working as intended:" +msgstr[0] "" +"Aşağıdaki zamanlanan olayın çalıştırılması başarısız oldu. Bu, CRON " +"sisteminin düzgün bir şekilde çalışmadığını gösterebilir ve bu da bazı WP " +"Rocket özelliklerinin beklendiği gibi çalışmasını engelleyebilir:" +msgstr[1] "" +"Aşağıdaki zamanlanan olayların çalıştırılması başarısız oldu. Bu, CRON " +"sisteminin düzgün bir şekilde çalışmadığını gösterebilir ve bu da bazı WP " +"Rocket özelliklerinin beklendiği gibi çalışmasını engelleyebilir:" + +#: inc/Engine/HealthCheck/HealthCheck.php:88 inc/deprecated/3.5.php:877 +msgid "Please contact your host to check if CRON is working." +msgstr "" +"CRON’un çalışıp çalışmadığını denetlemek için lütfen barındırıcınza " +"başvurun." + +#: inc/Engine/HealthCheck/HealthCheck.php:142 +msgid "Scheduled Cache Purge" +msgstr "Zamanlanmış Önbellek Temizleme" + +#: inc/Engine/HealthCheck/HealthCheck.php:143 +msgid "Scheduled Database Optimization" +msgstr "Zamanlanmış Veritabanı İyileştirme" + +#: inc/Engine/HealthCheck/HealthCheck.php:144 +msgid "Database Optimization Process" +msgstr "Veritabanı İyileştirme İşlemi" + +#: inc/Engine/HealthCheck/HealthCheck.php:145 +msgctxt "noun" +msgid "Preload" +msgstr "Önyükleme" + +#: inc/Engine/HealthCheck/HealthCheck.php:146 +msgid "Critical Path CSS Generation Process" +msgstr "Önemli Yol CSS’yi Oluşturma İşlemi" + +#: inc/Engine/License/Upgrade.php:252 +#, php-format +msgid "" +"Take advantage of %1$s to speed up more websites:%2$s get a %3$s%4$s off%5$s" +" for %3$supgrading your license to Plus or Infinite!%5$s" +msgid_plural "" +"Take advantage of %1$s to speed up more websites:%2$s get a %3$s%4$s off%5$s" +" for %3$supgrading your license to Infinite!%5$s" +msgstr[0] "" +"Daha fazla web sitesini hızlandırmak için %1$s avantajından yararlanın:%2$s " +"lisansınızı Infinite’e veya Plus’a yükseltmek için %3$s%4$s indirim%5$s " +"%3$salın!%5$s" +msgstr[1] "" +"Daha fazla web sitesini hızlandırmak için %1$s avantajından yararlanın:%2$s " +"lisansınızı Infinite’e yükseltmek için %3$s%4$s indirim%5$s %3$salın!%5$s" + +#: inc/Engine/License/Upgrade.php:369 inc/Engine/License/Upgrade.php:392 +msgid "Unlimited" +msgstr "Sınırsız" + +#: inc/Engine/License/views/promo-banner.php:16 +#, php-format +msgid "%s off" +msgstr "%s indirim" + +#: inc/Engine/License/views/promo-banner.php:21 +#, php-format +msgid "%s promotion is live!" +msgstr "%s promosyonu geçerli!" + +#: inc/Engine/License/views/promo-banner.php:27 +msgid "Hurry Up! Deal ends in:" +msgstr "Acele Et! Anlaşmanın bitiş zamanı:" + +#: inc/Engine/License/views/promo-banner.php:32 +#: inc/Engine/License/views/renewal-soon-banner.php:15 +msgid "Seconds" +msgstr "Saniye" + +#: inc/Engine/License/views/promo-banner.php:34 +#: inc/Engine/License/views/upgrade-section.php:11 +msgid "Upgrade now" +msgstr "Şimdi yükselt" + +#: inc/Engine/License/views/promo-banner.php:36 +#: inc/Engine/License/views/renewal-expired-banner.php:39 +#: inc/admin/ui/notices.php:812 views/settings/page-sections/dashboard.php:46 +msgid "Dismiss this notice." +msgstr "Bu bildirimi anımsatma." + +#: inc/Engine/License/views/renewal-expired-banner.php:12 +msgid "Your WP Rocket license is expired!" +msgstr "WP Rocket lisansınızın süresi doldu!" + +#: inc/Engine/License/views/renewal-expired-banner.php:17 +#, php-format +msgid "" +"Your website could be much faster if it could take advantage of our %1$snew" +" features and enhancements.%2$s" +msgstr "" +"%1$sYeni özelliklerimizden ve geliştirmelerimizden%2$s yararlanabilseydi web" +" siteniz çok daha hızlı olabilirdi." + +#: inc/Engine/License/views/renewal-expired-banner.php:27 +#, php-format +msgid "" +"Renew your license for 1 year and get an immediate %1$s%2$s off%3$s on your " +"renewal rate: you will only pay %1$s%4$s%3$s!" +msgstr "" +"Lisansınızı 1 yıllığına yenileyin ve yenileme fiyatınızda hemen %1$s%2$s " +"indirim%3$s alın: sadece %1$s%4$s ödeyeceksiniz%3$s!" + +#: inc/Engine/License/views/renewal-expired-banner.php:37 +#: inc/Engine/License/views/renewal-soon-banner.php:42 +msgid "Renew now" +msgstr "Şimdi yenile" + +#: inc/Engine/License/views/renewal-soon-banner.php:22 +#, php-format +msgid "Your %1$sWP Rocket license is about to expire.%2$s" +msgstr "%1$sWP Rocket lisansınızın süresi dolmak üzere.%2$s" + +#: inc/Engine/License/views/renewal-soon-banner.php:32 +#, php-format +msgid "" +"Renew with a %1$s%2$s discount%3$s before it is too late, you will only pay " +"%1$s%4$s%3$s!" +msgstr "" +"Çok geç olmadan %1$s%2$s indirim%3$s ile yenileyin, sadece %1$s%4$s " +"ödeyeceksiniz%3$s!" + +#: inc/Engine/License/views/upgrade-popin.php:12 +msgid "Speed Up More Websites" +msgstr "Daha Fazla Web Sitesini Hızlandırın" + +#: inc/Engine/License/views/upgrade-popin.php:19 +#, php-format +msgid "" +"You can use WP Rocket on more websites by upgrading your license. To " +"upgrade, simply pay the %1$sprice difference%2$s between your current and " +"new licenses, as shown below." +msgstr "" +"WP Rocket’ı lisansınızı yükselterek daha fazla web sitesinde " +"kullanabilirsiniz. Yükseltmek için sadece şu anki ve yeni lisanslarınız " +"arasındaki %1$sfiyat farkını%2$s, aşağıda gösterildiği gibi ödeyin." + +#: inc/Engine/License/views/upgrade-popin.php:25 +#, php-format +msgid "" +"%1$sN.B.%2$s: Upgrading your license does not change your expiration date" +msgstr "" +"%1$sLütfen Dikkat%2$s: Lisansınızı yükseltmek, geçerlilik sonu tarihinizi " +"değiştirmez" + +#: inc/Engine/License/views/upgrade-popin.php:35 +#, php-format +msgid "Save $%s" +msgstr "$%s dolar tasarruf edin" + +#: inc/Engine/License/views/upgrade-popin.php:48 +#, php-format +msgid "%s websites" +msgstr "%s web sitesi" + +#: inc/Engine/License/views/upgrade-popin.php:54 +#, php-format +msgid "Upgrade to %s" +msgstr "%s olarak yükselt" + +#: inc/Engine/License/views/upgrade-section.php:11 +msgid "" +"You can use WP Rocket on more websites by upgrading your license (you will " +"only pay the price difference between your current and new licenses)." +msgstr "" +"WP Rocket’ı lisansınızı yükselterek daha fazla web sitesinde " +"kullanabilirsiniz (sadece şu anki ve yeni lisanslarınız arasındaki fiyat " +"farkını ödeyeceksiniz)." + +#: inc/Engine/Optimization/DelayJS/Admin/Settings.php:105 +msgid "Restore Defaults" +msgstr "Varsayılanları Geri Yükle" + +#: inc/Engine/Preload/Homepage.php:153 +#, php-format +msgid "" +"Preload encountered an error. Could not gather links on %1$s because of the " +"following error: %2$s. %3$sLearn more%4$s." +msgstr "" +"Önyükleme bir hatayla karşılaştı. Şu hatadan dolayı, %1$s üzerindeki " +"bağlantılar toplanamadı: %2$s. %3$sDaha fazla bilgi edinin%4$s." + +#: inc/Engine/Preload/Homepage.php:166 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: %2$s. Security measures could be preventing access. " +"%3$sLearn more%4$s." +msgstr "" +"Önyükleme bir hatayla karşılaştı. %1$s, şu yanıt kodundan dolayı " +"erişilebilir değil: %2$s. Güvenlik önlemleri erişimi engelliyor olabilir. " +"%3$sDaha fazla bilgi edinin%4$s." + +#: inc/Engine/Preload/Homepage.php:172 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: 404. Please make sure your homepage is accessible in your " +"browser. %2$sLearn more%3$s." +msgstr "" +"Önyükleme bir hatayla karşılaştı. %1$s, şu yanıt kodundan dolayı " +"erişilebilir değil: 404. Lütfen ana sayfanızın tarayıcınızda erişilebilir " +"olduğundan emin olun. %2$sDaha fazla bilgi edinin%3$s." + +#: inc/Engine/Preload/Homepage.php:178 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: 500. Please check with your web host about server access. " +"%2$sLearn more%3$s." +msgstr "" +"Önyükleme bir hatayla karşılaştı. %1$s, şu yanıt kodundan dolayı " +"erişilebilir değil: 500. Lütfen sunucu erişimi ile ilgili olarak web " +"barındırıcınızı gözden geçirin. %2$sDaha fazla bilgi edinin%3$s." + +#: inc/Engine/Preload/Homepage.php:184 +#, php-format +msgid "" +"Preload encountered an error. Could not gather links on %1$s because it " +"returned the following response code: %2$s. %3$sLearn more%4$s." +msgstr "" +"Önyükleme bir hatayla karşılaştı. Şu yanıt kodunu döndürdüğünden, %1$s " +"üzerindeki bağlantılar toplanamadı: %2$s. %3$sDaha fazla bilgi edinin%4$s." + +#: inc/Engine/Preload/PreloadSubscriber.php:237 +msgid "Preload: WP Rocket has started preloading your website." +msgstr "Önyükleme: WP Rocket, web sitenizi önyüklemeye başladı." + +#: inc/Engine/Preload/PreloadSubscriber.php:283 +#, php-format +msgid "" +"Preload: %1$s uncached page has now been preloaded. (refresh to see " +"progress)" +msgid_plural "" +"Preload: %1$s uncached pages have now been preloaded. (refresh to see " +"progress)" +msgstr[0] "" +"Önyükleme: %1$s önbelleklenmeyen sayfanın şimdi önyüklemesi yapıldı. " +"(ilerlemeyi görmek için yenileyin)" +msgstr[1] "" +"Önyükleme: %1$s önbelleklenmeyen sayfanın şimdi önyüklemesi yapıldı. " +"(ilerlemeyi görmek için yenileyin)" + +#: inc/Engine/Preload/PreloadSubscriber.php:292 +msgid "The following error happened during gathering of the URLs to preload:" +msgid_plural "" +"The following errors happened during gathering of the URLs to preload:" +msgstr[0] "Önyükleme için URL’lerin toplanması sırasında aşağıdaki hata oldu:" +msgstr[1] "" +"Önyükleme için URL’lerin toplanması sırasında aşağıdaki hatalar oldu:" + +#: inc/Engine/Preload/PreloadSubscriber.php:344 +#, php-format +msgid "Preload complete: %d pages have been cached." +msgstr "Önyükleme tamamlandı: %d sayfa önbelleklendi." + +#: inc/Engine/Preload/Sitemap.php:150 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not gather links on %1$s because" +" of the following error: %2$s. %3$sLearn more%4$s." +msgstr "" +"Site haritası önyüklemesi bir hatayla karşılaştı. Şu hatadan dolayı, %1$s " +"üzerindeki bağlantılar toplanamadı: %2$s. %3$sDaha fazla bilgi edinin%4$s." + +#: inc/Engine/Preload/Sitemap.php:165 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: %2$s. Security measures could be preventing access." +" %3$sLearn more%4$s." +msgstr "" +"Site haritası önyüklemesi bir hatayla karşılaştı. %1$s, şu yanıt kodundan " +"dolayı erişilebilir değil: %2$s. Güvenlik önlemleri erişimi engelliyor " +"olabilir. %3$sDaha fazla bilgi edinin%4$s." + +#: inc/Engine/Preload/Sitemap.php:170 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: 404. Please make sure you entered the correct " +"sitemap URL and it is accessible in your browser. %2$sLearn more%3$s." +msgstr "" +"Site haritası önyüklemesi bir hatayla karşılaştı. %1$s, şu yanıt kodundan " +"dolayı erişilebilir değil: 404. Lütfen doğru site haritası URL’si " +"girdiğinizden ve tarayıcınızda erişilebilir olduğundan emin olun. %2$sDaha " +"fazla bilgi edinin%3$s." + +#: inc/Engine/Preload/Sitemap.php:175 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: 500. Please check with your web host about server " +"access. %2$sLearn more%3$s." +msgstr "" +"Site haritası önyüklemesi bir hatayla karşılaştı. %1$s, şu yanıt kodundan " +"dolayı erişilebilir değil: 500. Lütfen sunucu erişimi ile ilgili olarak web " +"barındırıcınızı gözden geçirin. %2$sDaha fazla bilgi edinin%3$s." + +#: inc/Engine/Preload/Sitemap.php:180 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not gather links on %1$s because" +" it returned the following response code: %2$s. %3$sLearn more%4$s." +msgstr "" +"Site haritası önyüklemesi bir hatayla karşılaştı. Şu yanıt kodunu " +"döndürdüğünden, %1$s üzerindeki bağlantılar toplanamadı: %2$s. %3$sDaha " +"fazla bilgi edinin%4$s." + +#: inc/Engine/Preload/Sitemap.php:196 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not collect links from %1$s " +"because the file is empty. %2$sLearn more%3$s." +msgstr "" +"Site haritası önyüklemesi bir hatayla karşılaştı. Dosya boş olduğundan, %1$s" +" adresinden gelen bağlantılar toplanamadı. %2$sDaha fazla bilgi edinin%3$s." + +#: inc/Engine/Preload/Sitemap.php:217 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not collect links from %1$s " +"because of an error during the XML sitemap parsing. %2$sLearn more%3$s." +msgstr "" +"Site haritası önyüklemesi bir hatayla karşılaştı. XML site haritası " +"ayrıştırması sırasında bir hata olduğundan, %1$s adresinden gelen " +"bağlantılar toplanamadı. %2$sDaha fazla bilgi edinin%3$s." + +#: inc/Engine/Preload/SitemapPreloadSubscriber.php:120 +#, php-format +msgid "" +"%1$sSimpleXML PHP extension%2$s is not enabled on your server. Please " +"contact your host to enable it before running sitemap-based cache " +"preloading." +msgstr "" +"%1$sSimpleXML PHP uzantısı%2$s sunucunuzda etkinleştirilmedi. Site haritası " +"tabanlı önbellek önyüklemesini çalıştırmadan önce etkinleştirmek için lütfen" +" barındırıcınıza başvurun." + +#: inc/ThirdParty/Hostings/Cloudways.php:82 +#, php-format +msgid "" +"Varnish auto-purge will be automatically enabled once Varnish is enabled on " +"your %s server." +msgstr "" +"%s sunucunuzda Varnish etkinleştirildikten sonra Varnish otomatik temizleme," +" otomatik olarak etkinleştirilecektir." + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:78 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"Please deactivate the following %s option which conflicts with WP Rocket " +"features:" +msgid_plural "" +"Please deactivate the following %s options which conflict with WP Rocket " +"features:" +msgstr[0] "" +"Lütfen WP Rocket özellikleri ile çakışan aşağıdaki %s seçeneği devre dışı " +"bırakın:" +msgstr[1] "" +"Lütfen WP Rocket özellikleri ile çakışan aşağıdaki %s seçeneği devre dışı " +"bırakın:" + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:151 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sdisable emoji%3$s conflicts with WP Rockets %2$sdisable emoji%3$s" +msgstr "" +"%1$s %2$semoji etkisizleştirmesi%3$s WP Rockets %2$semoji " +"etkisizleştirmesi%3$s ile çakışıyor" + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:187 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sGZIP compression%3$s conflicts with WP Rocket %2$sGZIP " +"compression%3$s" +msgstr "" +"%1$s %2$sGZIP sıkıştırması%3$s WP Rockets %2$sGZIP sıkıştırması%3$s ile " +"çakışıyor" + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:223 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sbrowser caching%3$s conflicts with WP Rocket %2$sbrowser " +"caching%3$s" +msgstr "" +"%1$s %2$starayıcı önbelleklemesi%3$s WP Rockets %2$starayıcı " +"önbelleklemesi%3$s ile çakışıyor" + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:255 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$spage caching%3$s conflicts with WP Rocket %2$spage caching%3$s" +msgstr "" +"%1$s %2$ssayfa önbelleklemesi%3$s WP Rockets %2$ssayfa önbelleklemesi%3$s " +"ile çakışıyor" + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:289 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sasset optimization%3$s conflicts with WP Rocket %2$sfile " +"optimization%3$s" +msgstr "" +"%1$s %2$svarlık iyileştirmesi%3$s WP Rockets %2$sdosya iyileştirmesi%3$s ile" +" çakışıyor" + +#: inc/ThirdParty/Plugins/Smush.php:110 inc/ThirdParty/Plugins/Smush.php:128 +msgid "Smush" +msgstr "Smush" + +#: inc/admin/admin.php:18 inc/common/admin-bar.php:367 +#: inc/deprecated/deprecated.php:1787 +msgid "Support" +msgstr "Destek" + +#: inc/admin/admin.php:20 +msgid "Docs" +msgstr "Belgeler" + +#: inc/admin/admin.php:22 inc/common/admin-bar.php:355 +msgid "FAQ" +msgstr "SSS" + +#: inc/admin/admin.php:24 inc/common/admin-bar.php:64 +msgid "Settings" +msgstr "Ayarlar" + +#: inc/admin/admin.php:225 inc/admin/admin.php:240 +#: inc/classes/class-wp-rocket-requirements-check.php:203 +#: inc/classes/class-wp-rocket-requirements-check.php:214 +#, php-format +msgid "%s Update Rollback" +msgstr "%s Güncellemesi Geri Alma" + +#: inc/admin/admin.php:266 +#, php-format +msgid "%1$sReturn to WP Rocket%2$s or %3$sgo to Plugins page%2$s" +msgstr "" +"%1$sWP Rocket’a geri dönün%2$s ya da %3$sEklentiler sayfasına gidin%2$s" + +#: inc/admin/admin.php:503 +msgid "Settings import failed: you do not have the permissions to do this." +msgstr "Ayarları içe aktarma başarısız oldu: bunu yapmak için izniniz yok." + +#: inc/admin/admin.php:507 +msgid "Settings import failed: no file uploaded." +msgstr "Ayarları içe aktarma başarısız oldu: gönderilen dosya yok." + +#: inc/admin/admin.php:511 +msgid "Settings import failed: incorrect filename." +msgstr "Ayarları içe aktarma başarısız oldu: yanlış dosya adı." + +#: inc/admin/admin.php:522 +msgid "Settings import failed: incorrect filetype." +msgstr "Ayarları içe aktarma başarısız oldu: yanlış dosya türü." + +#: inc/admin/admin.php:532 +msgid "Settings import failed: " +msgstr "Ayarları içe aktarma başarısız oldu:" + +#: inc/admin/admin.php:548 +msgid "Settings import failed: unexpected file content." +msgstr "Ayarları içe aktarma başarısız oldu: beklenmeyen dosya içeriği." + +#: inc/admin/admin.php:569 +msgid "Settings imported and saved." +msgstr "Ayarlar içe aktarıldı ve kaydedildi." + +#: inc/admin/options.php:149 +#, php-format +msgid "%1$s: %2$s." +msgstr "%1$s: %2$s." + +#: inc/admin/options.php:159 +msgid "The following pattern is invalid and has been removed:" +msgid_plural "The following patterns are invalid and have been removed:" +msgstr[0] "Aşağıdaki desen geçersizdir ve kaldırıldı:" +msgstr[1] "Aşağıdaki desenler geçersizdir ve kaldırıldı:" + +#: inc/admin/ui/meta-boxes.php:14 inc/admin/ui/notices.php:768 +#: inc/common/admin-bar.php:85 inc/common/admin-bar.php:137 +#: views/settings/page-sections/dashboard.php:143 +msgid "Clear cache" +msgstr "Önbelleği temizle" + +#: inc/admin/ui/meta-boxes.php:36 +msgid "WP Rocket Options" +msgstr "WP Rocket Seçenekleri" + +#: inc/admin/ui/meta-boxes.php:65 +msgid "Never cache this page" +msgstr "Bu sayfayı asla önbellekleme" + +#: inc/admin/ui/meta-boxes.php:69 +msgid "Activate these options on this post:" +msgstr "Şu seçenekleri bu yazıda aktif et:" + +#: inc/admin/ui/meta-boxes.php:72 +msgid "LazyLoad for images" +msgstr "Resimler için LazyLoad" + +#: inc/admin/ui/meta-boxes.php:73 +msgid "LazyLoad for iframes/videos" +msgstr "Iframe’ler ve görüntüler için LazyLoad" + +#: inc/admin/ui/meta-boxes.php:74 +msgid "Minify/combine CSS" +msgstr "CSS’yi küçült/birleştir" + +#: inc/admin/ui/meta-boxes.php:75 +msgid "Minify/combine JS" +msgstr "JS’yi küçült/birleştir" + +#: inc/admin/ui/meta-boxes.php:77 +msgid "Optimize CSS Delivery" +msgstr "CSS Teslimini İyileştir" + +#: inc/admin/ui/meta-boxes.php:78 +msgid "Defer JS" +msgstr "JS’i ertele" + +#: inc/admin/ui/meta-boxes.php:85 +#, php-format +msgid "Activate first the %s option." +msgstr "Önce %s seçeneğini aktif edin." + +#: inc/admin/ui/meta-boxes.php:101 +#, php-format +msgid "" +"%1$sNote:%2$s None of these options will be applied if this post has been " +"excluded from cache in the global cache settings." +msgstr "" +"%1$sNot:%2$s Bu yazı genel önbellek ayarlarındaki önbellekten hariç " +"tutulduysa, bu seçeneklerden hiçbiri uygulanmayacaktır." + +#: inc/admin/ui/notices.php:25 inc/admin/ui/notices.php:38 +#, php-format +msgid "" +"%1$s has not been deactivated due to missing writing permissions.
      \n" +"Make %2$s writeable and retry deactivation, or force deactivation now:" +msgstr "" +"%1$s, eksik yazma izinlerinden dolayı devre dışı bırakılmadı.
      \n" +"%2$s yazılabilir yapın ve devre dışı bırakmayı yeniden deneyin, ya da şimdi devre dışı bırakmaya zorlayın:" + +#: inc/admin/ui/notices.php:91 +#, php-format +msgid "" +"%s: One or more plugins have been enabled or disabled, " +"clear the cache if they affect the front end of your site." +msgstr "" +"%s: Bir ya da daha fazla eklenti etkinleştirildi veya " +"etkisizleştirildi, sitenizin ön ucunu etkilerse önbelleği temizleyin." + +#: inc/admin/ui/notices.php:184 +msgid "" +"WP Rocket Cloudflare Add-on provides similar functionalities. They can not " +"be active at the same time." +msgstr "" +"WP Rocket Cloudflare Eklentisi benzer işlevsellikler sağlar. Aynı anda aktif" +" edilemezler." + +#: inc/admin/ui/notices.php:208 +#, php-format +msgid "" +"%s: The following plugins are not compatible with this " +"plugin and may cause unexpected results:" +msgstr "" +"%s: Aşağıdaki eklentiler bu eklenti ile uyumlu değil ve " +"beklenmeyen sonuçlara neden olabilir:" + +#: inc/admin/ui/notices.php:214 +msgid "Deactivate" +msgstr "Devre Dışı Bırak" + +#: inc/admin/ui/notices.php:256 +msgid "" +"WP Rocket Footer JS is not an official add-on. It prevents some options in " +"WP Rocket from working correctly. Please deactivate it if you have problems." +msgstr "" +"WP Rocket Footer JS resmi bir eklenti değildir. WP Rocket içindeki bazı " +"seçeneklerin doğru olarak çalışmasını önler. Eğer sorunlar yaşarsanız lütfen" +" devre dşı bırakın." + +#: inc/admin/ui/notices.php:296 +#, php-format +msgid "" +"Endurance Cache is currently enabled, which will conflict with WP Rocket " +"Cache. Please set the Endurance Cache cache level to Off (Level 0) on the " +"%1$sSettings > General%2$s page to prevent any issues." +msgstr "" +"WP Rocket Önbelleği ile çakışacak olan Endurance Önbelleği şu anda " +"etkinleştirildi. Herhangi bir sorunu önlemek için lütfen %1$sAyarlar > " +"Genel%2$s sayfasında Endurance Önbelleğinin önbellek seviyesini Kapalı " +"(Seviye 0) olarak ayarlayın." + +#: inc/admin/ui/notices.php:317 +#, php-format +msgid "" +"%1$s: A custom permalink structure is required for the plugin to work " +"properly. %2$sGo to permalinks settings%3$s" +msgstr "" +"%1$s: Özel bir kalıcı bağlantı yapısı eklentinin düzgün bir şekilde " +"çalışması için gereklidir. %2$sKalıcı bağlantılar ayarlarına gidin%3$s" + +#: inc/admin/ui/notices.php:364 +#, php-format +msgid "" +"%s could not modify the .htaccess file due to missing writing permissions." +msgstr "" +"Eksik yazma izinlerinden dolayı %s .htaccess dosyasını yapılandıramadı." + +#: inc/admin/ui/notices.php:370 inc/admin/ui/notices.php:845 +#, php-format +msgid "Troubleshoot: %1$sHow to make system files writeable%2$s" +msgstr "" +"Sorun giderme: %1$sSistem dosyalarını nasıl yazılabilir yaparsınız%2$s" + +#: inc/admin/ui/notices.php:372 inc/admin/ui/notices.php:847 +msgid "" +"https://docs.wp-rocket.me/article/626-how-to-make-system-files-htaccess-wp-" +"config-writeable/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://docs.wp-rocket.me/article/626-how-to-make-system-files-htaccess-wp-" +"config-writeable/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: inc/admin/ui/notices.php:378 +msgid "" +"Don’t worry, WP Rocket’s page caching and settings will still function " +"correctly." +msgstr "" +"Endişelenmeyin, WP Rocket’in sayfa önbelleklemesi ve ayarları hala düzgün " +"çalışacaktır." + +#: inc/admin/ui/notices.php:378 +msgid "" +"For optimal performance, adding the following lines into your .htaccess is " +"recommended (not required):" +msgstr "" +"En iyi performans için .htaccess dosyanıza aşağıdaki satırları eklemeniz " +"önerilir (gerekli değil):" + +#: inc/admin/ui/notices.php:525 +#, php-format +msgid "" +"%1$s is good to go! %2$sTest your load time%4$s, or visit your " +"%3$ssettings%4$s." +msgstr "" +"%1$s gitmeye hazır! %2$sYükleme sürenizi deneyin%4$s, ya da " +"%3$sayarlarınızı%4$s ziyaret edin." + +#: inc/admin/ui/notices.php:598 +msgid "" +"Would you allow WP Rocket to collect non-sensitive diagnostic data from this" +" website?" +msgstr "" +"WP Rocket’in hassas olmayan tanılama verilerini bu web sitesinden " +"toplamasına izin verir misiniz?" + +#: inc/admin/ui/notices.php:599 +msgid "This would help us to improve WP Rocket for you in the future." +msgstr "" +"Bu bize gelecekte WP Rocket’i sizin için iyileştirmemize yardımcı olacak." + +#: inc/admin/ui/notices.php:605 +msgid "What info will we collect?" +msgstr "Ne tür bilgi toplayacağız?" + +#: inc/admin/ui/notices.php:610 +msgid "" +"Below is a detailed view of all data WP Rocket will collect if granted " +"permission. WP Rocket will never transmit any domain names or email " +"addresses (except for license validation), IP addresses, or third-party API " +"keys." +msgstr "" +"Aşağıdaki, WP Rocket’in izin verilirse toplayacağı tüm verilerin ayrıntılı " +"bir görünümüdür. WP Rocket asla herhangi bir etki alanı adı veya e-posta " +"adresini (lisans doğrulaması hariç), IP adreslerini, ya da üçüncü taraf API " +"anahtarlarını iletmeyecek." + +#: inc/admin/ui/notices.php:619 +msgid "Yes, allow" +msgstr "Evet, izin ver" + +#: inc/admin/ui/notices.php:622 +msgid "No, thanks" +msgstr "Hayır, teşekkürler" + +#: inc/admin/ui/notices.php:661 +msgid "Thank you!" +msgstr "Teşekkür ederiz!" + +#: inc/admin/ui/notices.php:666 +msgid "WP Rocket now collects these metrics from your website:" +msgstr "WP Rocket web sitenizden şimdi şu ölçümleri toplar:" + +#: inc/admin/ui/notices.php:704 +#, php-format +msgid "%s: Cache cleared." +msgstr "%s: Önbellek temizlendi." + +#: inc/admin/ui/notices.php:711 +#, php-format +msgid "%s: Post cache cleared." +msgstr "%s: Yazı önbelleği temizlendi." + +#: inc/admin/ui/notices.php:718 +#, php-format +msgid "%s: Term cache cleared." +msgstr "%s: Terim önbelleği temizlendi." + +#: inc/admin/ui/notices.php:725 +#, php-format +msgid "%s: User cache cleared." +msgstr "%s: Kullanıcı önbelleği temizlendi." + +#: inc/admin/ui/notices.php:771 +msgid "Stop Preload" +msgstr "Önyüklemeyi durdur" + +#: inc/admin/ui/notices.php:789 +msgid "Force deactivation " +msgstr "Devre dışı bırakmaya zorla" + +#: inc/admin/ui/notices.php:802 +msgid "The following code should have been written to this file:" +msgstr "Aşağıdaki kod bu dosyaya yazılmalıdır:" + +#: inc/admin/ui/notices.php:833 +#, php-format +msgid "%s cannot configure itself due to missing writing permissions." +msgstr "Eksik yazma izinlerinden dolayı %s kendini yapılandıramıyor." + +#: inc/admin/ui/notices.php:839 +#, php-format +msgid "Affected file/folder: %s" +msgstr "Etkilenen dosya/klasör: %s" + +#: inc/classes/admin/Database/class-optimization.php:47 +msgid "Transients" +msgstr "Geçiciler" + +#: inc/classes/admin/Database/class-optimization.php:48 +msgid "Tables" +msgstr "Tablolar" + +#: inc/classes/admin/class-logs.php:124 +msgid "The debug file could not be deleted." +msgstr "Hata ayıklama dosyası silinemedi." + +#: inc/classes/class-wp-rocket-requirements-check.php:147 +#, php-format +msgid "To function properly, %1$s %2$s requires at least:" +msgstr "Düzgün bir şekilde işlemesi için %1$s %2$s en az gerektirdiği:" + +#: inc/classes/class-wp-rocket-requirements-check.php:151 +#, php-format +msgid "" +"PHP %1$s. To use this WP Rocket version, please ask your web host how to " +"upgrade your server to PHP %1$s or higher." +msgstr "" +"PHP %1$s. Bu WP Rocket sürümünü kullanmak için lütfen web barındırıcınıza " +"sunucunuzu PHP %1$s veya daha yükseğine nasıl yükselteceğinizi sorun." + +#: inc/classes/class-wp-rocket-requirements-check.php:156 +#, php-format +msgid "" +"WordPress %1$s. To use this WP Rocket version, please upgrade WordPress to " +"version %1$s or higher." +msgstr "" +"WordPress %1$s. Bu WP Rocket sürümünü kullanmak için lütfen WordPress’i %1$s" +" sürümü veya daha yükseğine yükseltin." + +#: inc/classes/class-wp-rocket-requirements-check.php:159 +msgid "" +"If you are not able to upgrade, you can rollback to the previous version by " +"using the button below." +msgstr "" +"Eğer yükseltemiyorsanız, aşağıdaki düğmeyi kullanarak önceki sürüme geri " +"alabilirsiniz." + +#: inc/classes/class-wp-rocket-requirements-check.php:161 +#: inc/deprecated/deprecated.php:1947 +#, php-format +msgid "Re-install version %s" +msgstr "%s sürümünü yeniden yükle" + +#: inc/classes/dependencies/wp-media/background-processing/wp-background-process.php:439 +#, php-format +msgid "Every %d Minutes" +msgstr "Her %d Dakikada" + +#: inc/classes/logger/class-logger.php:254 +#: inc/classes/logger/class-logger.php:286 +msgid "The log file does not exist." +msgstr "Günlük dosyası mevcut değil." + +#: inc/classes/logger/class-logger.php:260 +#: inc/classes/logger/class-logger.php:292 +msgid "The log file could not be read." +msgstr "Günlük dosyası okunamadı." + +#: inc/classes/logger/class-logger.php:279 +msgid "The logs are not saved into a file." +msgstr "Günlükler bir dosya içine kaydedilmedi." + +#: inc/classes/subscriber/Cache/class-expired-cache-purge-subscriber.php:128 +msgid "WP Rocket Expired Cache Interval" +msgstr "WP Roket Süresi Dolmuş Önbellek Aralığı" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:269 +#, php-format +msgid "" +"You are using %1$s to serve WebP images so you do not need to enable this " +"option. If you prefer to have WP Rocket serve WebP for you instead, please " +"disable them from serving in %1$s. %2$sMore info%3$s" +msgid_plural "" +"You are using %1$s to serve WebP images so you do not need to enable this " +"option. If you prefer to have WP Rocket serve WebP for you instead, please " +"disable them from serving in %1$s. %2$sMore info%3$s" +msgstr[0] "" +"WebP resimlerini sunmak için %1$s kullanıyorsunuz bu yüzden bu seçeneği " +"etkinleştirmeniz gerekmiyor. Bu hizmeti WebP’nin yerine sizin için WP " +"Rocket’in sunmasını tercih ederseniz, lütfen %1$s içinde sunumlardan bunları" +" etkisizleştirin. %2$sDaha fazla bilgi%3$s" +msgstr[1] "" +"WebP resimlerini sunmak için %1$s kullanıyorsunuz bu yüzden bu seçeneği " +"etkinleştirmeniz gerekmiyor. Bu hizmeti WebP’nin yerine sizin için WP " +"Rocket’in sunmasını tercih ederseniz, lütfen %1$s içinde sunulanlardan " +"bunları etkisizleştirin. %2$sDaha fazla bilgi%3$s" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:280 +msgid "WebP cache is disabled by filter." +msgstr "WebP önbelleği, süzgeç tarafından etkisizleştirildi." + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:290 +#: inc/classes/subscriber/Media/class-webp-subscriber.php:316 +#, php-format +msgid "" +"You are using %1$s to convert images to WebP. If you want WP Rocket to serve" +" them for you, activate this option. %2$sMore info%3$s" +msgid_plural "" +"You are using %1$s to convert images to WebP. If you want WP Rocket to serve" +" them for you, activate this option. %2$sMore info%3$s" +msgstr[0] "" +"Resimleri WebP’ye dönüştürmek için %1$s kullanıyorsunuz. WP Rocket’in " +"bunları sizin için sunmasını istiyorsanız, bu seçeneği aktif edin. %2$sDaha " +"fazla bilgi%3$s" +msgstr[1] "" +"Resimleri WebP’ye dönüştürmek için %1$s kullanıyorsunuz. WP Rocket’in " +"bunları sizin için sunmasını istiyorsanız, bu seçeneği aktif edin. %2$sDaha " +"fazla bilgi%3$s" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:302 +#: inc/classes/subscriber/Media/class-webp-subscriber.php:328 +#, php-format +msgid "" +"You are using %1$s to convert images to WebP. WP Rocket will create separate" +" cache files to serve your WebP images. %2$sMore info%3$s" +msgid_plural "" +"You are using %1$s to convert images to WebP. WP Rocket will create separate" +" cache files to serve your WebP images. %2$sMore info%3$s" +msgstr[0] "" +"Resimleri WebP’ye dönüştürmek için %1$s kullanıyorsunuz. WP Rocket, WebP " +"resimlerinizi sunmak için ayrı önbellek dosyaları oluşturacak. %2$sDaha " +"fazla bilgi%3$s" +msgstr[1] "" +"Resimleri WebP’ye dönüştürmek için %1$s kullanıyorsunuz. WP Rocket, WebP " +"resimlerinizi sunmak için ayrı önbellek dosyaları oluşturacak. %2$sDaha " +"fazla bilgi%3$s" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:349 +#, php-format +msgid "" +"You don’t seem to be using a method to create and serve WebP that we are " +"auto-compatible with. If you are not using WebP do not enable this option. " +"%1$sMore info%2$s" +msgstr "" +"Otomatik uyumlu olduğumuz WebP oluşturmak ve sunmak için bir yöntem " +"kullanıyor gibi görünmüyorsunuz. Eğer WebP kullanmıyorsanız bu seçeneği " +"etkinleştirmeyin. %1$sDaha fazla bilgi%2$s" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:354 +msgid "We have not detected any compatible WebP plugin!" +msgstr "Herhangi bir uyumlu WebP eklentisi algılamadık!" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:357 +#, php-format +msgid "" +"If you activate this option WP Rocket will create separate cache files to " +"serve WebP images. Any WebP images you have on your site will be served from" +" these files to compatible browsers. If you don’t already have WebP images " +"on your site consider using %1$sImagify%3$s or another supported plugin. " +"%2$sMore info%3$s" +msgstr "" +"Bu seçeneği aktif ederseniz WP Rocket, WebP resimlerini sunmak için ayrı " +"önbellek dosyaları oluşturacak. Sitenizde sahip olduğunuz herhangi bir WebP " +"resmi, uyumlu tarayıcılara bu dosyalardan sunulacaktır. Eğer sitenizde WebP " +"resimleri yoksa %1$sImagify%3$s veya başka bir desteklenen eklenti " +"kullanmayı düşünün. %2$sDaha fazla bilgi%3$s" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:369 +msgid "WP Rocket will create separate cache files to serve your WebP images." +msgstr "" +"WP Rocket, WebP resimlerinizi sunmak için ayrı önbellek dosyaları " +"oluşturacak." + +#: inc/classes/subscriber/Tools/class-detect-missing-tags-subscriber.php:151 +#, php-format +msgid "" +"Failed to detect the following requirement in your theme: closing %1$s." +msgid_plural "" +"Failed to detect the following requirements in your theme: closing %1$s." +msgstr[0] "" +"Temanızdaki şurada belirtilen gereksinimi algılama başarısız: %1$s " +"kapatılıyor." +msgstr[1] "" +"Temanızdaki şurada belirtilen gereksinimleri algılama başarısız: %1$s " +"kapatılıyor." + +#: inc/classes/subscriber/Tools/class-detect-missing-tags-subscriber.php:159 +msgid "" +"https://docs.wp-rocket.me/article/99-pages-not-cached-or-minify-cssjs-not-" +"working/?utm_source=wp_plugin&utm_medium=wp_rocket#theme" +msgstr "" +"https://docs.wp-rocket.me/article/99-pages-not-cached-or-minify-cssjs-not-" +"working/?utm_source=wp_plugin&utm_medium=wp_rocket#theme" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:98 +msgid "monthly" +msgstr "aylık" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:211 +msgid "Database optimization process is running" +msgstr "Veritabanı iyileştirme işlemi çalışıyor" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:242 +msgid "" +"Database optimization process is complete. Everything was already optimized!" +msgstr "Veritabanı iyileştirme işlemi tamamlandı. Herşey zaten iyileştirildi!" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:245 +msgid "" +"Database optimization process is complete. List of optimized items below:" +msgstr "" +"Veritabanı iyileştirme işlemi tamamlandı. İyileştirilen öğelerin listesi " +"aşağıdadır:" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:253 +#, php-format +msgid "%1$d %2$s optimized." +msgstr "%1$d %2$s iyi hale getirildi." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:116 +#, php-format +msgid "Sucuri cache purge error: %s" +msgstr "Sucuri önbellek temizleme hatası: %s" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:121 +msgid "" +"The Sucuri cache is being cleared. Note that it may take up to two minutes " +"for it to be fully flushed." +msgstr "" +"Sucuri önbelleği temizlenmekte. Tamamen temizlenmesinin iki dakika kadar " +"sürebileceğini unutmayın." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:244 +msgid "Sucuri firewall API key was not found." +msgstr "Sucuri güvenlik duvarı API anahtarı bulunamadı." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:256 +msgid "Sucuri firewall API key is invalid." +msgstr "Sucuri güvenlik duvarı API anahtarı geçersiz." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:311 +msgid "Error when contacting Sucuri firewall API." +msgstr "Sucuri güvenlik duvarı API’si ile iletişime geçerken hata oldu." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:324 +#, php-format +msgid "Error when contacting Sucuri firewall API. Error message was: %s" +msgstr "" +"Sucuri güvenlik duvarı API’si ile iletişime geçerken hata oldu. Hata " +"iletisi: %s" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:338 +msgid "Could not get a response from the Sucuri firewall API." +msgstr "Sucuri güvenlik duvarı API’sinden bir yanıt alınamadı." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:352 +msgid "Got an invalid response from the Sucuri firewall API." +msgstr "Sucuri güvenlik duvarı API’sinden geçersiz bir yanıt alındı." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:365 +msgid "The Sucuri firewall API returned an unknown error." +msgstr "Sucuri güvenlik duvarı API’si bilinmeyen bir hata döndürdü." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:368 +#, php-format +msgid "The Sucuri firewall API returned the following error: %s" +msgid_plural "The Sucuri firewall API returned the following errors: %s" +msgstr[0] "" +"Sucuri güvenlik duvarı API’si şurada belirtilen hatayı döndürdü: %s" +msgstr[1] "" +"Sucuri güvenlik duvarı API’si şurada belirtilen hataları döndürdü: %s" + +#: inc/classes/traits/trait-updater-api-tools.php:53 +#: inc/deprecated/3.3.php:761 inc/deprecated/3.3.php:770 +#, php-format +msgid "" +"An unexpected error occurred. Something may be wrong with WP-Rocket.me or " +"this server’s configuration. If you continue to have problems, contact support." +msgstr "" +"Beklenmeyen bir hata meydana geldi. WP-Rocket.me veya bu sunucunun " +"yapılandırması ile ilgili birşey yanlış gitmiş olabilir. Eğer sorunlar " +"yaşamaya devam ederseniz, destekle iletişime geçin." + +#: inc/common/admin-bar.php:125 inc/common/admin-bar.php:293 +#: inc/functions/i18n.php:41 inc/functions/i18n.php:51 +msgid "All languages" +msgstr "Tüm diller" + +#: inc/common/admin-bar.php:152 +msgid "Clear this post" +msgstr "Bu yazıyı temizle" + +#: inc/common/admin-bar.php:166 +msgid "Purge this URL" +msgstr "Bu URL’yi temizle" + +#: inc/common/admin-bar.php:192 +msgid "Purge OPcache" +msgstr "OPcache temizle" + +#: inc/common/admin-bar.php:210 +msgid "Clear Cloudflare cache" +msgstr "Cloudflare önbelleğini temizle" + +#: inc/common/admin-bar.php:228 +msgid "Purge Sucuri cache" +msgstr "Sucuri önbelleğini temizle" + +#: inc/common/admin-bar.php:251 inc/common/admin-bar.php:305 +#: views/settings/page-sections/dashboard.php:163 +msgid "Preload cache" +msgstr "Önbelleği önyükle" + +#: inc/common/admin-bar.php:330 views/settings/fields/rocket-cdn.php:55 +msgid "Purge RocketCDN cache" +msgstr "RocketCDN önbelleğini temizle" + +#: inc/common/admin-bar.php:343 views/settings/partials/documentation.php:14 +msgid "Documentation" +msgstr "Belgeler" + +#: inc/common/purge.php:557 +msgid "OPcache purge failed." +msgstr "OPcache temizleme başarısız oldu." + +#: inc/common/purge.php:562 +msgid "OPcache successfully purged" +msgstr "OPcache başarılı olarak temizlendi" + +#: inc/deprecated/3.2.php:52 views/settings/page-sections/imagify.php:36 +msgid "Activate Imagify" +msgstr "Imagify’ı Etkinleştir" + +#: inc/deprecated/3.2.php:52 +msgid "Install Imagify for Free" +msgstr "Imagify’ı Ücretsiz Yükleyin" + +#: inc/deprecated/3.2.php:67 +msgid "" +"Speed up your website and boost your SEO by reducing image file sizes " +"without losing quality with Imagify." +msgstr "" +"Imagify ile resim dosyası boyutlarını kalite kaybetmeden küçülterek web " +"sitenizi hızlandırın ve SEO’nuzu yükseltin." + +#: inc/deprecated/3.2.php:72 +msgid "More details" +msgstr "Daha fazla ayrıntı" + +#: inc/deprecated/3.2.php:228 +#, php-format +msgid "Sitemap preload: %d pages have been cached." +msgstr "Site haritası önyükleme: %d sayfa önbelleklendi." + +#: inc/deprecated/3.2.php:261 +#, php-format +msgid "" +"Sitemap preload: %d uncached pages have now been preloaded. (refresh to see " +"progress)" +msgstr "" +"Site haritası önyükleme: %d önbelleklenmeyen sayfanın şimdi önyüklemesi " +"yapıldı. (ilerlemeyi görmek için yenileyin)" + +#: inc/deprecated/3.4.php:18 +msgid "Choose a domain from the list" +msgstr "Listeden bir etki alanı seçin" + +#: inc/deprecated/3.4.php:31 +msgid "No domain available in your Cloudflare account" +msgstr "Cloudflare hesabınızda hiç etki alanı mevcut değil" + +#: inc/deprecated/3.5.php:81 inc/deprecated/3.5.php:205 +msgid "" +"Curl is disabled on your server. Please ask your host to enable it. This is " +"required for the Cloudflare Add-on to work correctly." +msgstr "" +"Curl, sunucunuzda etkisizleştirilmiş. Lütfen barındırıcınızdan bunu " +"etkinleştirmesini isteyin. Bu, Cloudflare Eklentisinin doğru çalışması için " +"gereklidir." + +#: inc/deprecated/3.5.php:89 +#, php-format +msgid "" +"Cloudflare email, API key and Zone ID are not set. Read the " +"%1$sdocumentation%2$s for further guidance." +msgstr "" +"Cloudflare e-posta adresi, API anahtarı ve Bölge Kimliği ayarlı değil. Daha " +"fazla rehberlik için %1$sbelgeleri%2$s okuyun." + +#: inc/deprecated/3.5.php:216 +#, php-format +msgid "" +"Cloudflare email and API key are not set. Read the %1$sdocumentation%2$s for" +" further guidance." +msgstr "" +"Cloudflare e-posta adresi ve API anahtarı ayarlı değil. Daha fazla rehberlik" +" için %1$sbelgeleri%2$s okuyun." + +#: inc/deprecated/3.5.php:281 +msgid "Connection to Cloudflare failed" +msgstr "Cloudflare’a bağlantı başarısız oldu" + +#: inc/deprecated/DeprecatedClassTrait.php:54 +#, php-format +msgid "" +"The called class %1$s is deprecated since version %2$s! Use" +" %3$s instead." +msgstr "" +"Çağrılan %1$s sınıfı, %2$s sürümünden bu yana kullanım " +"dışıdır! Bunun yerine %3$s kullanın." + +#: inc/deprecated/DeprecatedClassTrait.php:65 +#, php-format +msgid "" +"The called class %1$s is deprecated since version %2$s!" +msgstr "" +"Çağrılan %1$s sınıfı, %2$s sürümünden bu yana kullanım " +"dışıdır!" + +#: inc/deprecated/deprecated.php:240 +msgid "JS files with Deferred Loading JavaScript" +msgstr "Yüklemesi Ertelenmiş JavaScript’i olan JS dosyaları" + +#: inc/deprecated/deprecated.php:293 +msgid "Add URL" +msgstr "URL ekle" + +#: inc/deprecated/deprecated.php:1277 views/settings/fields/import-form.php:22 +msgid "" +"Before you can upload your import file, you will need to fix the following " +"error:" +msgstr "" +"İçe aktarma dosyanızı göndermeden önce, şurada belirtilen hatayı düzeltmeniz" +" gerekecek:" + +#: inc/deprecated/deprecated.php:1288 views/settings/fields/import-form.php:35 +#, php-format +msgid "Choose a file from your computer (maximum size: %s)" +msgstr "Bilgisayarınızdan bir dosya seçin (en fazla boyut: %s)" + +#: inc/deprecated/deprecated.php:1385 +msgid "Your Cloudflare credentials are valid." +msgstr "Cloudflare kimlik bilgileriniz geçerli." + +#: inc/deprecated/deprecated.php:1389 +msgid "Your Cloudflare credentials are invalid!" +msgstr "Cloudflare kimlik bilgileriniz geçersiz!" + +#: inc/deprecated/deprecated.php:1453 +msgid "Save and optimize" +msgstr "Kaydet ve iyileştir" + +#: inc/deprecated/deprecated.php:1453 +msgid "Optimize" +msgstr "İyileştir" + +#: inc/deprecated/deprecated.php:1464 inc/deprecated/deprecated.php:1666 +msgctxt "screen-reader-text" +msgid "Note:" +msgstr "Not:" + +#: inc/deprecated/deprecated.php:1470 +msgctxt "screen-reader-text" +msgid "Performance tip:" +msgstr "Performans ipucu:" + +#: inc/deprecated/deprecated.php:1476 +msgctxt "screen-reader-text" +msgid "Third-party feature detected:" +msgstr "Üçüncü taraf özellik algılandı:" + +#: inc/deprecated/deprecated.php:1488 inc/deprecated/deprecated.php:1672 +msgctxt "screen-reader-text" +msgid "Warning:" +msgstr "Uyarı:" + +#: inc/deprecated/deprecated.php:1501 +msgctxt "button text" +msgid "Download settings" +msgstr "Ayarları indir" + +#: inc/deprecated/deprecated.php:1531 +msgid "Replace site's hostname with:" +msgstr "Sitenin anamakine adını şununla değiştir:" + +#: inc/deprecated/deprecated.php:1550 inc/deprecated/deprecated.php:1587 +#: inc/deprecated/deprecated.php:1615 views/settings/fields/cnames.php:32 +#: views/settings/fields/cnames.php:64 views/settings/fields/cnames.php:94 +msgid "reserved for" +msgstr "şunun için ayrıldı:" + +#: inc/deprecated/deprecated.php:1552 inc/deprecated/deprecated.php:1589 +#: inc/deprecated/deprecated.php:1617 views/settings/fields/cnames.php:35 +#: views/settings/fields/cnames.php:67 views/settings/fields/cnames.php:97 +msgid "All files" +msgstr "Tüm dosyalar" + +#: inc/deprecated/deprecated.php:1564 inc/deprecated/deprecated.php:1594 +#: inc/deprecated/deprecated.php:1622 views/settings/fields/cnames.php:47 +#: views/settings/fields/cnames.php:79 views/settings/fields/cnames.php:109 +msgid "Images" +msgstr "Resimler" + +#: inc/deprecated/deprecated.php:1635 views/settings/fields/cnames.php:120 +msgid "Add CNAME" +msgstr "CNAME ekle" + +#: inc/deprecated/deprecated.php:1706 views/settings/partials/sidebar.php:16 +msgid "Watch the video" +msgstr "Görüntüyü izleyin" + +#: inc/deprecated/deprecated.php:1771 +msgid "Basic" +msgstr "Temel" + +#: inc/deprecated/deprecated.php:1772 +msgid "Static Files" +msgstr "Sabit Dosyalar" + +#: inc/deprecated/deprecated.php:1774 +msgid "Advanced" +msgstr "Gelişmiş" + +#: inc/deprecated/deprecated.php:1944 +#, php-format +msgid "" +"%1$s %2$s requires at least PHP %3$s to function properly. To use this " +"version, please ask your web host how to upgrade your server to PHP %3$s or " +"higher. If you are not able to upgrade, you can rollback to the previous " +"version by using the button below." +msgstr "" +"%1$s %2$s, düzgün bir şekilde işlemesi için en az PHP %3$s gerektirir. Bu " +"sürümü kullanmak için lütfen web barındırıcınıza sunucunuzu PHP %3$s veya " +"daha yüksek sürümüne nasıl yükselteceğinizi sorun. Eğer yükseltemiyorsanız, " +"aşağıdaki düğmeyi kullanarak önceki sürüme geri döndürebilirsiniz." + +#: inc/functions/admin.php:23 +msgid "" +"There seems to be an issue validating your license. Please see the error " +"message below." +msgid_plural "" +"There seems to be an issue validating your license. You can see the error " +"messages below." +msgstr[0] "" +"Lisansınızı doğrularken bir sorun oldu gibi görünüyor. Lütfen aşağıdaki hata" +" iletisine bakın." +msgstr[1] "" +"Lisansınızı doğrularken bir sorun oldu gibi görünüyor. Aşağıda hata " +"iletilerini görebilirsiniz." + +#: inc/functions/admin.php:363 +msgid "Server type:" +msgstr "Sunucu türü:" + +#: inc/functions/admin.php:372 +msgid "PHP version number:" +msgstr "PHP sürüm numarası:" + +#: inc/functions/admin.php:381 +msgid "WordPress version number:" +msgstr "WordPress sürüm numarası:" + +#: inc/functions/admin.php:390 +msgid "WordPress multisite:" +msgstr "WordPress çoklu site:" + +#: inc/functions/admin.php:399 +msgid "Current theme:" +msgstr "Şu anki tema:" + +#: inc/functions/admin.php:408 +msgid "Current site language:" +msgstr "Şu anki site dili:" + +#: inc/functions/admin.php:417 +msgid "Active plugins:" +msgstr "Aktif eklentiler:" + +#: inc/functions/admin.php:420 +msgid "Plugin names of all active plugins" +msgstr "Tüm aktif eklentilerin eklenti adları" + +#: inc/functions/admin.php:426 +msgid "Anonymized WP Rocket settings:" +msgstr "İsimsizleştirilmiş WP Rocket ayarları:" + +#: inc/functions/admin.php:429 +msgid "Which WP Rocket settings are active" +msgstr "Hangi WP Rocket ayarları aktif" + +#: inc/functions/options.php:549 inc/functions/options.php:588 +msgid "" +"License validation failed. Our server could not resolve the request from " +"your website." +msgstr "" +"Lisans doğrulama başarısız oldu. Sunucumuz web sitenizden gelen isteği " +"çözemedi." + +#: inc/functions/options.php:549 inc/functions/options.php:588 +#, php-format +msgid "" +"Try clicking %1$sSave Changes%2$s below. If the error persists, follow " +"%3$sthis guide%4$s." +msgstr "" +"Aşağıda %1$sDeğişiklikleri Kaydet%2$s düğmesine tıklamaya çalışın. Eğer hata" +" devam ederse, %3$sbu kılavuzu%4$s takip edin." + +#: inc/functions/options.php:565 +msgid "" +"License validation failed. You may be using a nulled version of the plugin. " +"Please do the following:" +msgstr "" +"Lisans doğrulama başarısız oldu. Eklentinin nulled sürümünü kullanıyorsunuz." +" Lütfen aşağıdakini yapın:" + +#: inc/functions/options.php:565 inc/functions/options.php:607 +#, php-format +msgid "Login to your WP Rocket %1$saccount%2$s" +msgstr "WP Rocket %1$shesabınıza%2$s oturum açın" + +#: inc/functions/options.php:565 inc/functions/options.php:607 +msgid "Download the zip file" +msgstr "Zip dosyasını indir" + +#: inc/functions/options.php:565 inc/functions/options.php:607 +msgid "Reinstall" +msgstr "Yeniden Yükle" + +#: inc/functions/options.php:565 +#, php-format +msgid "" +"If you do not have a WP Rocket account, please %1$spurchase a license%2$s." +msgstr "" +"Eğer bir WP Rocket hesabınız yoksa, lütfen %1$sbir lisans satın alın%2$s." + +#: inc/functions/options.php:573 +msgid "" +"License validation failed. This user account does not exist in our database." +msgstr "" +"Lisans doğrulama başarısız oldu. Bu kullanıcı veritabanımızda mevcut değil." + +#: inc/functions/options.php:573 +msgid "To resolve, please contact support." +msgstr "Çözmek için lütfen destek ile iletişime geçin." + +#: inc/functions/options.php:581 +msgid "License validation failed. This user account is blocked." +msgstr "Lisans doğrulama başarısız oldu. Bu kullanıcı hesabı engellendi." + +#: inc/functions/options.php:581 +#, php-format +msgid "Please see %1$sthis guide%2$s for more info." +msgstr "Daha fazla bilgi için lütfen %1$sbu kılavuza%2$s bakın." + +#: inc/functions/options.php:601 +msgid "Your license is not valid." +msgstr "Lisansınız geçerli değil." + +#: inc/functions/options.php:601 +#, php-format +msgid "Make sure you have an active %1$sWP Rocket license%2$s." +msgstr "Aktif bir %1$sWP Rocket lisansına%2$s sahip olduğunuzdan emin olun." + +#: inc/functions/options.php:603 +msgid "You have added as many sites as your current license allows." +msgstr "Şu anki lisansınızın izin verdiği kadar çok site eklediniz." + +#: inc/functions/options.php:603 +#, php-format +msgid "" +"Upgrade your %1$saccount%2$s or %3$stransfer your license%2$s to this " +"domain." +msgstr "" +"%1$sHesabınızı%2$s yükseltin ya da %3$slisansınızı bu etki alanına " +"aktarın%2$s." + +#: inc/functions/options.php:605 +msgid "This website is not allowed." +msgstr "Bu web sitesine izin verilmedi." + +#: inc/functions/options.php:605 +#, php-format +msgid "Please %1$scontact support%2$s." +msgstr "Lütfen %1$sdestek ile iletişime geçin%2$s." + +#: inc/functions/options.php:607 +msgid "This license key is not recognized." +msgstr "Bu lisans anahtarı tanınmadı." + +#: inc/functions/options.php:607 +#, php-format +msgid "If the issue persists, please %1$scontact support%2$s." +msgstr "Eğer sorun devam ederse, lütfen %1$sdestek ile iletişime geçin%2$s." + +#: inc/functions/options.php:613 +#, php-format +msgid "License validation failed: %s" +msgstr "Lisans doğrulama başarısız oldu: %s" + +#: inc/vendors/classes/class-imagify-partner.php:531 +msgid "Plugin installed successfully." +msgstr "Eklenti başarılı olarak yüklendi." + +#: inc/vendors/classes/class-imagify-partner.php:532 +msgid "Sorry, you are not allowed to install plugins on this site." +msgstr "Üzgünüz, bu sitede eklentileri yüklemenize izin verilmiyor." + +#: inc/vendors/classes/class-imagify-partner.php:533 +msgid "Sorry, you are not allowed to do that." +msgstr "Üzgünüz, bunu yapmanıza izin verilmiyor." + +#: inc/vendors/classes/class-imagify-partner.php:534 +msgid "Plugin install failed." +msgstr "Eklenti yükleme başarısız oldu." + +#: inc/vendors/classes/class-imagify-partner.php:535 +msgid "Go back" +msgstr "Geri git" + +#: views/cpcss/activate-cpcss-mobile.php:13 +msgid "Optimize CSS delivery for mobile" +msgstr "Mobil için CSS teslimini iyileştirin" + +#: views/cpcss/activate-cpcss-mobile.php:14 +msgid "" +"Your website currently uses the same Critical Path CSS for both desktop and " +"mobile." +msgstr "" +"Web siteniz şu anda hem masaüstü hem de mobil cihazlar için aynı Önemli Yol " +"CSS’yi kullanıyor." + +#: views/cpcss/activate-cpcss-mobile.php:15 +msgid "Click the button to enable mobile-specific CPCSS for your site." +msgstr "" +"Siteniz için mobile özgü ÖYCSS’yi etkinleştirmek için düğmeye tıklayın." + +#: views/cpcss/activate-cpcss-mobile.php:20 +#: views/settings/enable-google-fonts.php:19 +#, php-format +msgid "" +"This is a one-time action and this button will be removed afterwards. " +"%1$sMore info%2$s" +msgstr "" +"Bu tek seferlik bir eylemdir ve daha sonra bu düğme kaldırılacaktır. " +"%1$sDaha fazla bilgi%2$s" + +#: views/cpcss/activate-cpcss-mobile.php:30 +#, php-format +msgid "" +"Your site is now using mobile-specific critical path CSS. %1$sMore info%2$s" +msgstr "" +"Bu site artık mobile özgü önemli yol CSS’yi kullanıyor. %1$sDaha fazla " +"bilgi%2$s" + +#: views/cpcss/activate-cpcss-mobile.php:39 +msgid "Generate Mobile Specific CPCSS" +msgstr "Mobile Özgü ÖYCSS’yi Oluştur" + +#: views/cpcss/metabox/container.php:19 +msgid "Critical Path CSS" +msgstr "Önemli Yol CSS" + +#: views/cpcss/metabox/generate.php:23 +#, php-format +msgid "Generate specific Critical Path CSS for this post. %1$sMore info%2$s" +msgstr "" +"Bu yazı için belirli bir Önemli Yol CSS’yi oluşturun. %1$sDaha fazla " +"bilgi%2$s" + +#: views/cpcss/metabox/generate.php:33 +#, php-format +msgid "This post uses specific Critical Path CSS. %1$sMore info%2$s" +msgstr "" +"Bu yazı belirli bir Önemli Yol CSS’yi kullanır. %1$sDaha fazla bilgi%2$s" + +#: views/cpcss/metabox/generate.php:56 +msgid "Revert back to the default CPCSS" +msgstr "Varsayılan ÖYCSS’ye geri dön" + +#: views/deactivation-intent/form.php:21 +msgid "Return" +msgstr "Geri dön" + +#: views/deactivation-intent/form.php:22 +msgid "WP Rocket feedback" +msgstr "WP Rocket geri bildirim" + +#: views/deactivation-intent/form.php:24 +msgid "Close" +msgstr "Kapat" + +#: views/deactivation-intent/form.php:28 +msgid "May we have a little info about why you are deactivating?" +msgstr "" +"Neden devre dışı bıraktığınız hakkında küçük bir bilgiye sahip olabilir " +"miyiz?" + +#: views/deactivation-intent/form.php:35 +#, php-format +msgid "%1$sIt is a temporary deactivation.%2$s I am just debugging an issue." +msgstr "" +"%1$sBu geçici bir devre dışı bırakmadır.%2$s Yalnızca bir sorunu " +"ayıklıyorum." + +#: views/deactivation-intent/form.php:44 +#, php-format +msgid "The plugin %1$sbroke my layout%2$s or some functionality." +msgstr "Eklenti %1$sdüzenimi%2$s veya bazı işlevsellikleri bozdu." + +#: views/deactivation-intent/form.php:53 +#, php-format +msgid "My PageSpeed or GTMetrix %1$sscore did not improve.%2$s" +msgstr "PageSpeed veya GTMetrix %1$spuanım iyileşmedi.%2$s" + +#: views/deactivation-intent/form.php:59 +msgid "I did not notice a difference in loading time." +msgstr "Yükleme süresinde bir fark görmedim." + +#: views/deactivation-intent/form.php:66 +#, php-format +msgid "The plugin is %1$stoo complicated to configure.%2$s" +msgstr "Eklenti %1$syapılandırma için çok karmaşık.%2$s" + +#: views/deactivation-intent/form.php:72 +msgid "My host already has its own caching system." +msgstr "Barındırıcım zaten kendi önbellekleme sistemine sahip." + +#: views/deactivation-intent/form.php:74 +msgid "What is the name of your web host?" +msgstr "Web barındırıcınızın adı nedir?" + +#: views/deactivation-intent/form.php:79 +msgid "Other" +msgstr "Diğer" + +#: views/deactivation-intent/form.php:81 +msgid "" +"Let us know why you are deactivating WP Rocket so we can improve the plugin" +msgstr "" +"WP Roket’i neden devre dışı bıraktığınızı bize söyleyin böylece eklentiyi " +"iyileştirebiliriz" + +#: views/deactivation-intent/form.php:89 +msgid "The plugin broke my layout or some functionality" +msgstr "Eklenti düzenimi veya bazı işlevsellikleri bozdu." + +#: views/deactivation-intent/form.php:90 +msgid "" +"This type of issue can usually be fixed by deactivating some options in WP " +"Rocket." +msgstr "" +"Bu tür sorun genellikle WP Rocket içindeki bazı seçenekleri devre dışı " +"bırakarak düzeltilebilir." + +#: views/deactivation-intent/form.php:91 +msgid "" +"Click \"Apply Safe Mode\" to quickly disable LazyLoad, File Optimization, " +"Embeds and CDN options. Then check your site to see if the issue has " +"resolved." +msgstr "" +"LazyLoad, Dosya İyileştirme, Gömülüler ve CDN seçeneklerini hızlıca " +"etkisizleştimek için \"Güvenli Kipi Uygula\" düğmesine tıklayın. Ondan sonra" +" sorunun çözüldüğünü görmek için sitenizi kontrol edin." + +#: views/deactivation-intent/form.php:93 +msgid "Apply safe mode" +msgstr "Güvenli kipi uygula" + +#: views/deactivation-intent/form.php:96 +msgid "Safe mode applied." +msgstr "Güvenli kip uygulandı." + +#: views/deactivation-intent/form.php:97 +msgid "Review your site in a private/logged out browser window." +msgstr "" +"Sitenizi özel/oturumdan çıkılmış bir tarayıcı penceresinde gözden geçirin." + +#: views/deactivation-intent/form.php:102 +#, php-format +msgid "" +"Is the issue fixed? Now you can reactivate options one at a time to " +"determine which one caused the problem. %1$sMore info%2$s" +msgstr "" +"Sorun düzeldi mi? Şimdi hangisinin soruna neden olduğunu belirlemek için her" +" defasında seçeneklerin bir tanesini yeniden aktif edebilirsiniz. %1$sDaha " +"fazla bilgi%2$s" + +#: views/deactivation-intent/form.php:107 +msgid "My PageSpeed or GT Metrix score did not improve" +msgstr "PageSpeed veya GTMetrix puanım iyileşmedi" + +#: views/deactivation-intent/form.php:108 +msgid "" +"WP Rocket makes your site faster. The PageSpeed grade or GTMetrix score are " +"not indicators of speed. Neither your real visitors, nor Google will ever " +"see your website’s “grade”. Speed is the only metric that matters for SEO " +"and conversions." +msgstr "" +"WP Rocket sitenizi daha hızlı yapar. PageSpeed ya da GTMetrix puanı hız " +"göstergeleri değildir. Ne gerçek ziyaretçiler ne de Google, web sitenizin " +"“puanını” asla görmeyecek. Hız sadece SEO ve dönüşüm meselesi olan ölçüdür." + +#: views/deactivation-intent/form.php:109 +msgid "Yoast, the expert on all things related to SEO for WordPress states:" +msgstr "Yoast, WordPress durumları için SEO ile ilgili tüm şeylerde uzman:" + +#: views/deactivation-intent/form.php:110 +msgid "" +"[Google] just looks at how fast your website loads for users, so you don’t " +"have to obsess over that specific score. You have to make sure your website " +"is as fast as you can get it." +msgstr "" +"[Google] yalnızca web sitenizin kullanıcılar için ne kadar hızlı " +"yüklendiğine bakın, o yüzden bu belirli puana takılmak zorunda değilsiniz. " +"Web sitenizin olabildiğince hızlı olduğundan emin olmak zorundasınız." + +#: views/deactivation-intent/form.php:116 +#, php-format +msgid "" +"How to measure the load time of your site: %1$shttps://wp-rocket.me/blog" +"/correctly-measure-websites-page-load-time/%2$s" +msgstr "" +"Sitenizin yükleme süresini nasıl ölçersiniz: %1$shttps://wp-rocket.me/blog" +"/correctly-measure-websites-page-load-time/%2$s" + +#: views/deactivation-intent/form.php:122 +#, php-format +msgid "" +"Why you should not be chasing a PageSpeed score: %1$shttps://wp-" +"rocket.me/blog/the-truth-about-google-pagespeed-insights/%2$s" +msgstr "" +"Neden bir PageSpeed puanını takip etmemelisiniz: %1$shttps://wp-" +"rocket.me/blog/the-truth-about-google-pagespeed-insights/%2$s" + +#: views/deactivation-intent/form.php:127 +msgid "I did not notice a difference in loading time" +msgstr "Yükleme süresinde bir fark görmedim" + +#: views/deactivation-intent/form.php:128 +msgid "" +"Make sure you look at your site while logged out to see the fast, cached " +"pages!" +msgstr "" +"Oturumu kapattığınızda, önbelleklenmiş sayfaların, hızını görmek için " +"sitenize baktığınıza emin olun!" + +#: views/deactivation-intent/form.php:132 +#, php-format +msgid "" +"The best way to see the improvement WP Rocket provides is to perform speed " +"tests. Follow this guide to correctly measure the load time of your website:" +" %1$shttps://wp-rocket.me/blog/correctly-measure-websites-page-load-" +"time/%2$s" +msgstr "" +"WP Rocket’in sağladığı iyileştirmeleri görmenin en iyi yolu hız denemeleri " +"yapmaktır. Web sitenizin yükleme süresini doğru olarak ölçmek için bu " +"rehberi takip edin: %1$shttps://wp-rocket.me/blog/correctly-measure-" +"websites-page-load-time/%2$s" + +#: views/deactivation-intent/form.php:137 +msgid "The plugin is too complicated to configure" +msgstr "Eklenti yapılandırma için çok karmaşık" + +#: views/deactivation-intent/form.php:138 +msgid "We are sorry to hear you are finding it difficult to use WP Rocket." +msgstr "Sizden WP Rocket’i kullanmayı zor bulduğunuzu duyduğumuza üzüldük." + +#: views/deactivation-intent/form.php:139 +#, php-format +msgid "" +"WP Rocket is the only caching plugin that provides 80% of best practices in " +"speed optimization, by default. That means you do not have to do anything " +"besides activate WP Rocket and your site will already be faster!" +msgstr "" +"WP Rocket, varsayılan olarak, hız iyileştirmedeki en iyi uygulamaların " +"%80’ini sağlayan sadece önbellekleme eklentisidir. Bu, hiçbir şey yapmak " +"zorunda olamamanız anlamına gelir, üstelik WP Rocket’i aktif edin ve siteniz" +" zaten daha hızlı olacaktır!" + +#: views/deactivation-intent/form.php:140 +msgid "" +"The additional options are not required for a fast site, they are for fine-" +"tuning." +msgstr "" +"Hızlı bir site için ilave seçenekler gerekli değildir, bunlar ince ayarlama " +"içindir." + +#: views/deactivation-intent/form.php:144 +#, php-format +msgid "" +"To see the benefit WP Rocket is already providing, measure the speed of your" +" site using a tool like Pingdom: %1$shttps://wp-rocket.me/blog/correctly-" +"measure-websites-page-load-time/%2$s" +msgstr "" +"WP Rocket’in zaten sağladığı faydaları görmek için Pingdom gibi bir aracı " +"kullanarak sitenizin hızını ölçün: %1$shttps://wp-rocket.me/blog/correctly-" +"measure-websites-page-load-time/%2$s" + +#: views/deactivation-intent/form.php:151 +msgid "Send & Deactivate" +msgstr "Gönder ve Devre Dışı Bırak" + +#: views/deactivation-intent/form.php:152 +msgid "Cancel" +msgstr "İptal" + +#: views/deactivation-intent/form.php:154 +msgid "Skip & Deactivate" +msgstr "Atla ve Devre Dışı Bırak" + +#: views/settings/enable-google-fonts.php:13 +msgid "Enable Google Font Optimization" +msgstr "Google Yazı Tipi İyileştirmeyi etkinleştir" + +#: views/settings/enable-google-fonts.php:14 +msgid "" +"Improves font performance and combines multiple font requests to reduce the " +"number of HTTP requests." +msgstr "" +"Yazı tipi performansını artırır ve HTTP isteklerinin sayısını azaltmak için " +"birden çok yazı tipi isteğini birleştirir." + +#: views/settings/enable-google-fonts.php:29 +#, php-format +msgid "" +"Google Fonts Optimization is now enabled for your site. %1$sMore info%2$s" +msgstr "" +"Google Yazı Tipleri İyileştirme artık siteniz için etkinleştirildi. %1$sDaha" +" fazla bilgi%2$s" + +#: views/settings/enable-google-fonts.php:38 +msgid "Optimize Google Fonts" +msgstr "Google Yazı Tiplerini iyileştir" + +#: views/settings/fields/cache-lifespan.php:26 +msgid "Clear cache after" +msgstr "Şu süreden sonra önbelleği temizle" + +#: views/settings/fields/cnames.php:49 views/settings/fields/cnames.php:81 +#: views/settings/fields/cnames.php:111 +msgid "CSS & JavaScript" +msgstr "CSS ve JavaScript" + +#: views/settings/fields/cnames.php:50 views/settings/fields/cnames.php:82 +#: views/settings/fields/cnames.php:112 +msgid "JavaScript" +msgstr "JavaScript" + +#: views/settings/fields/cnames.php:51 views/settings/fields/cnames.php:83 +#: views/settings/fields/cnames.php:113 +msgid "CSS" +msgstr "CSS" + +#: views/settings/fields/import-form.php:29 +msgid "Import settings" +msgstr "Ayarları içe aktarın" + +#: views/settings/fields/one-click-addon.php:40 +#: views/settings/fields/rocket-addon.php:31 +#: views/settings/fields/sliding-checkbox.php:25 views/settings/page.php:55 +msgctxt "Active state of checkbox" +msgid "On" +msgstr "Açık" + +#: views/settings/fields/one-click-addon.php:41 +#: views/settings/fields/rocket-addon.php:32 +#: views/settings/fields/sliding-checkbox.php:26 views/settings/page.php:56 +msgctxt "Inactive state of checkbox" +msgid "Off" +msgstr "Kapalı" + +#: views/settings/fields/one-click-addon.php:42 +#: views/settings/fields/rocket-addon.php:33 +msgid "Add-on status" +msgstr "Eklenti durumu" + +#: views/settings/fields/rocket-addon.php:56 +msgid "Modify options" +msgstr "Seçenekleri değiştir" + +#: views/settings/fields/rocket-cdn.php:29 +#: views/settings/fields/rocket-cdn.php:41 +msgid "CDN CNAME" +msgstr "CDN CNAME" + +#: views/settings/fields/rocket-cdn.php:62 +#, php-format +msgid "Purges RocketCDN cached resources for your website. %s" +msgstr "Web siteniz için RocketCDN önbelleklenmiş kaynaklarını temizler. %s" + +#: views/settings/fields/rocket-cdn.php:63 +#: views/settings/page-sections/cloudflare.php:36 +#: views/settings/page-sections/sucuri.php:37 +msgid "Learn more" +msgstr "Daha fazla bilgi edinin" + +#: views/settings/fields/rocket-cdn.php:72 +msgid "Clear all RocketCDN cache files" +msgstr "Tüm RocketCDN önbellek dosyalarını temizle" + +#: views/settings/page-sections/cloudflare.php:27 +msgid "Cloudflare Cache" +msgstr "Cloudflare Önbelleği" + +#: views/settings/page-sections/cloudflare.php:35 +#: views/settings/page-sections/sucuri.php:36 +#, php-format +msgid "Purges cached resources for your website. %s" +msgstr "Web sitenizin önbelleklenmiş kaynaklarını temizler. %s" + +#: views/settings/page-sections/cloudflare.php:36 +msgid "https://support.cloudflare.com/hc/en-us/articles/200169246" +msgstr "https://support.cloudflare.com/hc/en-us/articles/200169246" + +#: views/settings/page-sections/cloudflare.php:45 +msgid "Clear all Cloudflare cache files" +msgstr "Tüm Cloudflare önbellek dosyalarını temizle" + +#: views/settings/page-sections/dashboard.php:38 +msgid "Congratulations!" +msgstr "Tebrikler!" + +#: views/settings/page-sections/dashboard.php:40 +msgid "WP Rocket is now activated and already working for you." +msgstr "WP Rocket şu an aktif edildi ve halen sizin için çalışıyor." + +#: views/settings/page-sections/dashboard.php:42 +msgid "Your website should be loading faster now!" +msgstr "Web siteniz artık daha hızlı yüklenmelidir!" + +#: views/settings/page-sections/dashboard.php:44 +#, php-format +msgid "" +"To guarantee fast websites, WP Rocket applies 80% of web performance best " +"practices." +msgstr "" +"Hızlı web sitelerini garantilemek için en iyi WP Rocket web performans " +"uygulamalarının %80’ini uygular." + +#: views/settings/page-sections/dashboard.php:44 +msgid "" +"We also enable options that provide immediate benefits to your website." +msgstr "" +"Ayrıca web sitenize anında fayda sağlayan seçenekleri etkinleştiriyoruz." + +#: views/settings/page-sections/dashboard.php:45 +msgid "Continue to the options to further optimize your site!" +msgstr "Sitenizi ileride iyileştirmek için seçeneklere devam edin!" + +#: views/settings/page-sections/dashboard.php:62 +msgid "My Account" +msgstr "Hesabım" + +#: views/settings/page-sections/dashboard.php:68 +msgid "Refresh info" +msgstr "Bilgiyi yenile" + +#: views/settings/page-sections/dashboard.php:93 +msgid "Expiration Date" +msgstr "Bitiş Tarihi" + +#: views/settings/page-sections/dashboard.php:103 +msgid "View my account" +msgstr "Hesabımı göster" + +#: views/settings/page-sections/dashboard.php:130 +msgid "Quick Actions" +msgstr "Hızlı Eylemler" + +#: views/settings/page-sections/dashboard.php:137 +msgid "Remove all cached files" +msgstr "Tüm önbelleklenen dosyaları kaldırın" + +#: views/settings/page-sections/dashboard.php:157 +msgid "Start cache preloading" +msgstr "Önbellek önyüklemesini başlatın" + +#: views/settings/page-sections/dashboard.php:183 +msgid "Purge OPCache content" +msgstr "OPCache içeriğini temizle" + +#: views/settings/page-sections/dashboard.php:189 +msgid "Purge OPCache" +msgstr "OPCache temizle" + +#: views/settings/page-sections/dashboard.php:200 +#: views/settings/page-sections/dashboard.php:206 +msgid "Regenerate Critical CSS" +msgstr "Önemli CSS’yi yeniden oluştur" + +#: views/settings/page-sections/dashboard.php:223 +msgid "Frequently Asked Questions" +msgstr "Sıkça Sorulan Sorular" + +#: views/settings/page-sections/dashboard.php:236 +msgid "Still cannot find a solution?" +msgstr "Hala bir çözüm bulamadınız mı?" + +#: views/settings/page-sections/dashboard.php:237 +msgid "" +"Submit a ticket and get help from our friendly and knowledgeable Rocketeers." +msgstr "" +"Bir çağrı gönderin ve arkadaş yanlısı ve bilgili Roketçilerimizden yardım " +"alın." + +#: views/settings/page-sections/dashboard.php:245 +msgid "Ask support" +msgstr "Destek iste" + +#: views/settings/page-sections/database.php:25 +msgid "Backup your database before you run a cleanup!" +msgstr "Temizlemeyi çalıştırmadan önce veritabanınızı yedekleyin!" + +#: views/settings/page-sections/database.php:26 +msgid "" +"Once a database optimization has been performed, there is no way to undo it." +msgstr "" +"Bir kere bir veritabanı iyileştirme yapıldı mı, bunu geri almanın hiç yolu " +"yoktur." + +#: views/settings/page-sections/database.php:28 +msgid "Save Changes and Optimize" +msgstr "Değişiklikleri Kaydet ve İyileştir" + +#: views/settings/page-sections/imagify.php:21 +#, php-format +msgid "" +"%1$sWP ROCKET%2$s created %3$sIMAGIFY%4$s %1$sfor best-in-class image " +"optimization.%2$s" +msgstr "" +"%1$sWP ROCKET%2$s, resim iyileştirme için sınıfının en iyisi %3$sIMAGIFY%4$s" +" %1$seklentisini yarattı.%2$s" + +#: views/settings/page-sections/imagify.php:24 +msgid "" +"Compress image to make your website faster, all while maintaining image " +"quality." +msgstr "" +"Tüm resim kalitesini korurken, web sitenizin daha hızlı hale getirmek için " +"resmi sıkıştırın." + +#: views/settings/page-sections/imagify.php:25 +msgid "More on Imagify:" +msgstr "Imagify’da daha fazlası:" + +#: views/settings/page-sections/imagify.php:27 +msgid "Imagify Plugin Page" +msgstr "Imagify Eklenti Sayfası" + +#: views/settings/page-sections/imagify.php:28 +msgid "Imagify Website" +msgstr "Imagify Web Sitesi" + +#: views/settings/page-sections/imagify.php:29 +msgid "Review of Image Compression Plugins" +msgstr "Resim Sıkıştırma Eklentileri İncelemesi" + +#: views/settings/page-sections/imagify.php:38 +msgid "Install Imagify" +msgstr "Imagify’ı Yükle" + +#: views/settings/page-sections/license.php:22 +msgid "WP Rocket was not able to automatically validate your license." +msgstr "WP Rocket, lisansınızı otomatik olarak doğrulayamadı." + +#: views/settings/page-sections/license.php:29 +#, php-format +msgid "Follow this %1$s, or contact %2$s to get the engine started." +msgstr "" +"Motoru çalıştırmak için bu %1$s takip edin ya da %2$s ile iletişime geçin." + +#: views/settings/page-sections/license.php:32 +#, php-format +msgid "%1$s%2$s%3$stutorial%4$s" +msgstr "%1$s%2$s%3$seğitimi%4$s" + +#: views/settings/page-sections/license.php:34 +msgid "" +"https://docs.wp-rocket.me/article/100-resolving-problems-with-license-" +"validation/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://docs.wp-rocket.me/article/100-resolving-problems-with-license-" +"validation/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: views/settings/page-sections/license.php:40 +#, php-format +msgid "%1$s%2$s%3$ssupport%4$s" +msgstr "%1$s%2$s%3$sdestek%4$s" + +#: views/settings/page-sections/sucuri.php:46 +msgid "Clear all Sucuri cache files" +msgstr "Tüm Sucuri önbellek dosyalarını temizle" + +#: views/settings/page-sections/tools.php:20 +#, php-format +msgid "Files size: %1$s. Number of entries: %2$s." +msgstr "Dosyaların boyutu: %1$s. Giriş sayısı: %2$s." + +#: views/settings/page-sections/tools.php:23 +#, php-format +msgid "%1$sDownload the file%2$s." +msgstr "%1$sDosyayı indir%2$s." + +#: views/settings/page-sections/tools.php:26 +#, php-format +msgid "%1$sDelete the file%2$s." +msgstr "%1$sDosyayı sil%2$s." + +#: views/settings/page-sections/tools.php:37 +msgid "Export settings" +msgstr "Ayarları dışa aktarın" + +#: views/settings/page-sections/tools.php:38 +msgid "Download a backup file of your settings" +msgstr "Ayarlarınızın bir yedekleme dosyasını indirin" + +#: views/settings/page-sections/tools.php:46 +msgid "Download settings" +msgstr "Ayarları indir" + +#: views/settings/page-sections/tools.php:60 +msgid "Rollback" +msgstr "Geri alın" + +#: views/settings/page-sections/tools.php:64 +#, php-format +msgid "Has version %s caused an issue on your website?" +msgstr "%s sürümü web sitenizde bir soruna mı neden oldu?" + +#: views/settings/page-sections/tools.php:69 +#, php-format +msgid "" +"You can rollback to the previous major version here.%sThen send us a support" +" request." +msgstr "" +"Burada önceki büyük sürüme geri alabilirsiniz.%sArdından bize bir destek " +"isteği gönderin." + +#: views/settings/page-sections/tools.php:80 +#, php-format +msgid "Reinstall version %s" +msgstr "%s sürümünü yeniden yükle" + +#: views/settings/page-sections/tools.php:106 +msgid "Debug mode" +msgstr "Hata ayıklama kipi" + +#: views/settings/page-sections/tools.php:111 +msgid "Create a debug log file." +msgstr "Hata ayıklama günlük dosyası oluşturun." + +#: views/settings/page-sections/tutorials.php:13 +#: views/settings/partials/getting-started.php:18 +msgid "Getting Started" +msgstr "Başlarken" + +#: views/settings/page-sections/tutorials.php:15 +msgid "Getting Started with WP Rocket" +msgstr "WP Rocket ile Başlarken" + +#: views/settings/page-sections/tutorials.php:16 +#: views/settings/partials/getting-started.php:12 +msgid "Finding the Best Settings for Your Site" +msgstr "Siteniz için En İyi Ayarları Bulma" + +#: views/settings/page-sections/tutorials.php:17 +#: views/settings/partials/getting-started.php:13 +msgid "How to Check if WP Rocket is Caching Your Site" +msgstr "WP Rocket’in Sitenizi Önbelleklediği Nasıl Denetlenir" + +#: views/settings/page-sections/tutorials.php:18 +#: views/settings/partials/getting-started.php:14 +msgid "How to Measure the Speed of Your Site" +msgstr "Sitenizin Hızı Nasıl Ölçülür" + +#: views/settings/page-sections/tutorials.php:24 +msgid "Troubleshooting Display Issues with File Optimization" +msgstr "Dosya İyileştirme ile Görüntü Sorunlarının Sorununu Giderme" + +#: views/settings/page-sections/tutorials.php:25 +msgid "How to Find the Right JavaScript to Exclude" +msgstr "Hariç Tutmak için Doğru JavaScript Nasıl Bulunur" + +#: views/settings/page-sections/tutorials.php:26 +msgid "How External Content Slows Your Site" +msgstr "Dış İçerik Sitenizi Nasıl Yavaşlatır" + +#: views/settings/page-sections/tutorials.php:32 +msgid "How Preloading Works" +msgstr "Önyükleme Nasıl Çalışır" + +#: views/settings/page-sections/tutorials.php:38 +msgid "Set Up the Cloudflare Add-on" +msgstr "Cloudflare Eklentisini Ayarlama" + +#: views/settings/page.php:16 +msgid "WP Rocket Settings" +msgstr "WP Rocket Ayarları" + +#: views/settings/page.php:30 +#, php-format +msgid "version %s" +msgstr "sürüm %s" + +#: views/settings/page.php:57 +msgid "Show Sidebar" +msgstr "Kenar Çubuğunu Göster" + +#: views/settings/page.php:76 +msgid "Thanks for choosing to participate in the WP Rocket beta program!" +msgstr "WP Rocket beta programına katılmayı seçtiğiniz için teşekkür ederiz!" + +#: views/settings/page.php:77 +msgid "" +"A beta version is usually one that has new features and improvements, but we" +" want to test it a little more before full launch." +msgstr "" +"Beta sürümü genellikle yeni özellikleri ve iyileştirmeleri olandır, ancak " +"biz tam çıkarmadan önce biraz daha denemek istiyoruz." + +#: views/settings/page.php:78 +msgid "" +"We’d love it if you took our beta versions for a ride, but please keep in " +"mind that it might be less stable than our other releases. Don’t worry, you " +"can switch back to a full release version at any time." +msgstr "" +"Eğer beta sürümlerimizi alıp bakmak isterseniz çok seviniriz, ancak diğer " +"yayımlarımızdan daha az istikrarlı olabileceği lütfen aklınızda olsun. " +"Endişelenmeyin, istediğiniz zaman tam yayım sürümüne geri dönebilirsiniz." + +#: views/settings/page.php:79 +msgid "" +"Your mission: please send all feedback about our beta versions, including " +"bug reports, to support@wp-rocket.me" +msgstr "" +"Göreviniz: lütfen support@wp-rocket.me adresine hata raporları dahil olmak " +"üzere beta sürümlerimiz hakkında tüm geri bildirimi gönderin" + +#: views/settings/page.php:81 +msgid "If you don’t want to join the beta program, simply close this window." +msgstr "" +"Eğer beta programına katılmak istemiyorsanız, basitçe bu pencereyi kapatın." + +#: views/settings/page.php:83 +msgid "Activate Rocket Tester" +msgstr "Rocket Deneyicisini aktif et" + +#: views/settings/page.php:94 +msgid "" +"Below is a detailed view of all data WP Rocket will collect if " +"granted permission." +msgstr "" +"Aşağıdakiler, izin verildiği takdirde WP Rocket’in " +"toplayacağı tüm verilerin ayrıntılı bir görünümüdür." + +#: views/settings/page.php:97 +msgid "" +"WP Rocket will never transmit any domain names or email addresses (except " +"for license validation), IP addresses, or third-party API keys." +msgstr "" +"WP Rocket asla herhangi bir etki alanı adı veya e-posta adresini (lisans " +"doğrulaması hariç), IP adreslerini, ya da üçüncü taraf API anahtarlarını " +"iletmeyecek." + +#: views/settings/page.php:99 +msgid "Activate Rocket analytics" +msgstr "Rocket çözümseli aktif et" + +#: views/settings/partials/documentation.php:15 +msgid "It is a great starting point to fix some of the most common issues." +msgstr "" +"En yaygın sorunların bazılarını düzeltmek için harika bir başlangıç " +"noktasıdır." + +#: views/settings/partials/documentation.php:22 +msgid "Read the documentation" +msgstr "Belgeleri okuyun" + +#: views/settings/partials/getting-started.php:11 +msgid "What WP Rocket Does For You By Default" +msgstr "WP Roket Varsayılan Olarak Sizin İçin Ne Yapar" + +#: views/settings/partials/sidebar.php:12 +msgid "How to correctly measure your website’s loading time" +msgstr "Web sitenizin yükleme süresini nasıl doğru olarak ölçersiniz" + +#: views/settings/partials/sidebar.php:14 +msgid "Check our tutorial and learn how to measure the speed of your site." +msgstr "" +"Eğitimimizi gözden geçirin ve sitenizin hızının nasıl ölçüldüğünü öğrenin." + +#: views/settings/partials/sidebar.php:19 +msgid "" +"Learn how to use best practices to correctly measure your site's " +"performance." +msgstr "" +"Sitenizin performansını doğru olarak ölçmek için en iyi uygulamaların nasıl " +"kullanılacağını öğrenin." + +#: views/settings/partials/sidebar.php:20 +msgid "" +"https://wp-rocket.me/blog/correctly-measure-websites-page-load-" +"time/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://wp-rocket.me/blog/correctly-measure-websites-page-load-" +"time/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: views/settings/partials/sidebar.php:20 +msgid "Read our guide" +msgstr "Rehberimizi okuyun" + +#: views/settings/partials/sidebar.php:23 +msgid "Why Google PageSpeed grade should not matter" +msgstr "Google PageSpeed puanı neden önemli olmamalı." + +#: views/settings/partials/sidebar.php:24 +msgid "" +"https://wp-rocket.me/blog/the-truth-about-google-pagespeed-" +"insights/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://wp-rocket.me/blog/the-truth-about-google-pagespeed-" +"insights/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: views/settings/partials/sidebar.php:24 +msgid "Read more" +msgstr "Daha fazla bilgi edinin" + +#: views/settings/partials/sidebar.php:29 +msgid "You have not activated logged-in user cache." +msgstr "Oturum açmış kullanıcı önbelleğini aktif etmediniz." + +#: views/settings/partials/sidebar.php:30 +msgid "" +"Use a private browser to check your website's speed and visual appearance." +msgstr "" +"Web sitenizin hızını ve görsel görünümünü kontrol etmek için özel bir " +"tarayıcı kullanın." + +#: views/settings/sections/addons-container.php:24 +#: views/settings/sections/fields-container.php:28 +msgid "Need Help?" +msgstr "Yardım Mı Gerekli?" diff --git a/wp-content/plugins/wp-rocket/languages/rocket-uk.mo b/wp-content/plugins/wp-rocket/languages/rocket-uk.mo new file mode 100644 index 0000000000000000000000000000000000000000..4726230c94239d315996b4c9ac38bb323234b905 GIT binary patch literal 119044 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 X4*`(R-%Iz7Q&uN?vLh4L_Llz-74=i) literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-rocket/languages/rocket-uk.po b/wp-content/plugins/wp-rocket/languages/rocket-uk.po new file mode 100644 index 0000000..b428b65 --- /dev/null +++ b/wp-content/plugins/wp-rocket/languages/rocket-uk.po @@ -0,0 +1,3689 @@ +# Copyright (C) 2016 WP Rocket +# This file is distributed under the same license as the WP Rocket package. +# Translators: +# wpmedia , 2019 +# Bogdan Gerasymenko, 2019 +# Paul Gorinetsky , 2019 +# Sabrina Zeidan , 2020 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: WP Rocket 3.4\n" +"Report-Msgid-Bugs-To: http://wp-rocket.me/\n" +"POT-Creation-Date: 2020-01-15 16:02+0200\n" +"PO-Revision-Date: 2019-08-26 15:14+0000\n" +"Last-Translator: Sabrina Zeidan , 2020\n" +"Language-Team: Ukrainian (Ukraine) (https://www.transifex.com/wp-media/teams/18133/uk_UA/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: uk_UA\n" +"Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);\n" +"X-Generator: Poedit 2.2.4\n" +"X-Poedit-Basepath: ..\n" +"X-Poedit-KeywordsList: __;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c\n" +"X-Poedit-SearchPath-0: .\n" +"X-Poedit-SearchPathExcluded-0: assets\n" +"X-Poedit-SearchPathExcluded-1: src\n" +"X-Poedit-SearchPathExcluded-2: vendor\n" +"X-Poedit-SearchPathExcluded-3: node_modules\n" +"X-Poedit-SearchPathExcluded-4: tests\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Textdomain-Support: yes\n" + +#: inc/3rd-party/hosting/flywheel.php:16 inc/3rd-party/hosting/godaddy.php:16 +#: inc/3rd-party/hosting/o2switch.php:16 +#: inc/3rd-party/hosting/pressidium.php:16 inc/3rd-party/hosting/savvii.php:16 +#: inc/3rd-party/hosting/wp-serveur.php:25 +#: inc/3rd-party/hosting/wpengine.php:16 +#, php-format +msgid "" +"Your site is hosted on %s, we have enabled Varnish auto-purge for " +"compatibility." +msgstr "" +"Ваш сайт розміщено на %s, ми включили Varnish автоочищення для сумісності." + +#: inc/3rd-party/hosting/kinsta.php:151 +#, php-format +msgid "" +"Your installation seems to be missing core Kinsta files managing Cache " +"clearing and CDN, which will prevent your Kinsta installation and WP Rocket " +"from working correctly. Please get in touch with Kinsta support through your" +" %1$sMyKinsta%2$s account to resolve this issue." +msgstr "" +"У вашій установці, здається, відсутні основні файли Kinsta, які керують " +"очищенням кешу та CDN, що запобігає правильній роботі Kinsta установки та WP" +" Rocket. Зверніться до служби підтримки Kinsta за допомогою облікового " +"запису%1$sMyKinsta%2$s, щоб вирішити цю проблему." + +#: inc/3rd-party/plugins/jetpack.php:86 +msgid "Jetpack XML Sitemaps" +msgstr "Jetpack XML Sitemaps" + +#: inc/3rd-party/plugins/jetpack.php:88 +msgid "Preload the sitemap from the Jetpack plugin" +msgstr "Презавантаження карти сайту з плагіна Jetpack" + +#: inc/3rd-party/plugins/jetpack.php:96 +#: inc/3rd-party/plugins/seo/all-in-one-seo-pack.php:89 +#: inc/3rd-party/plugins/seo/rank-math-seo.php:34 +#: inc/3rd-party/plugins/seo/seopress.php:86 +#: inc/3rd-party/plugins/seo/the-seo-framework.php:144 +#: inc/3rd-party/plugins/seo/yoast-seo.php:87 +#, php-format +msgid "" +"We automatically detected the sitemap generated by the %s plugin. You can " +"check the option to preload it." +msgstr "" +"Ми автоматично визначили карту сайту, створену плагіном %s. Ви можете " +"перевірити можливість попередньої завантаження." + +#: inc/3rd-party/plugins/seo/all-in-one-seo-pack.php:87 +msgid "All in One SEO XML sitemap" +msgstr "All in One SEO XML sitemap" + +#: inc/3rd-party/plugins/seo/rank-math-seo.php:32 +msgid "Rank Math XML sitemap" +msgstr "Ранг Math XML карти сайту" + +#: inc/3rd-party/plugins/seo/seopress.php:84 +msgid "SEOPress XML sitemap" +msgstr "Мапа сайту SEOPress XML" + +#: inc/3rd-party/plugins/seo/the-seo-framework.php:142 +msgid "The SEO Framework XML sitemap" +msgstr "SEO Framework XML карта сайту" + +#: inc/3rd-party/plugins/seo/yoast-seo.php:85 +msgid "Yoast SEO XML sitemap" +msgstr "Yoast SEO XML sitemap" + +#: inc/admin/admin.php:18 inc/common/admin-bar.php:364 +#: inc/deprecated/deprecated.php:1789 +msgid "Support" +msgstr "Підтримка" + +#: inc/admin/admin.php:20 +msgid "Docs" +msgstr "Документи" + +#: inc/admin/admin.php:22 inc/common/admin-bar.php:352 +msgid "FAQ" +msgstr "Часті питання" + +#: inc/admin/admin.php:24 inc/common/admin-bar.php:64 +msgid "Settings" +msgstr "Налаштування" + +#: inc/admin/admin.php:71 inc/admin/admin.php:95 inc/admin/admin.php:115 +msgid "Clear this cache" +msgstr "Очистити цей кеш" + +#: inc/admin/admin.php:258 inc/admin/admin.php:273 +#: inc/classes/class-wp-rocket-requirements-check.php:203 +#: inc/classes/class-wp-rocket-requirements-check.php:214 +#, php-format +msgid "%s Update Rollback" +msgstr "%s Відкат оновлення" + +#: inc/admin/admin.php:299 +#, php-format +msgid "%1$sReturn to WP Rocket%2$s or %3$sgo to Plugins page%2$s" +msgstr "" +"%1$sПовернутися до WP Rocket%2$s або %3$sперейти на сторінку плагінів%2$s" + +#: inc/admin/admin.php:538 +msgid "Settings import failed: you do not have the permissions to do this." +msgstr "Помилка імпорту параметрів: у вас немає прав для цього." + +#: inc/admin/admin.php:542 +msgid "Settings import failed: no file uploaded." +msgstr "Помилка імпорту параметрів: файл не завантажено." + +#: inc/admin/admin.php:546 +msgid "Settings import failed: incorrect filename." +msgstr "Помилка імпорту параметрів: неправильне ім'я файлу." + +#: inc/admin/admin.php:557 +msgid "Settings import failed: incorrect filetype." +msgstr "Помилка імпорту параметрів: неправильний тип файлу." + +#: inc/admin/admin.php:567 +msgid "Settings import failed: " +msgstr "Помилка імпорту налаштувань: " + +#: inc/admin/admin.php:584 +msgid "Settings import failed: unexpected file content." +msgstr "Помилка імпорту параметрів: несподіваний вміст файлу." + +#: inc/admin/admin.php:605 +msgid "Settings imported and saved." +msgstr "Параметри імпортовані та збережені." + +#: inc/admin/options.php:102 inc/admin/options.php:293 +#: inc/classes/subscriber/Tools/class-detect-missing-tags-subscriber.php:143 +msgid "WP Rocket: " +msgstr "WP Rocket:" + +#: inc/admin/options.php:117 +#, php-format +msgid "Cloudflare development mode error: %s" +msgstr "Помилка режиму розробки Cloudflare: %s" + +#: inc/admin/options.php:123 +#, php-format +msgid "Cloudflare development mode %s" +msgstr "Режим розробки Cloudflare %s" + +#: inc/admin/options.php:140 +#, php-format +msgid "Cloudflare cache level error: %s" +msgstr "Помилка рівня кешу Cloudflare: %s" + +#: inc/admin/options.php:144 +msgctxt "Cloudflare caching level" +msgid "Standard" +msgstr "Стандарт" + +#: inc/admin/options.php:150 +#, php-format +msgid "Cloudflare cache level set to %s" +msgstr "Рівень кешу Cloudflare встановлено на %s" + +#: inc/admin/options.php:162 +#, php-format +msgid "Cloudflare minification error: %s" +msgstr "Помилка мініфікації Cloudflare: %s" + +#: inc/admin/options.php:168 +#, php-format +msgid "Cloudflare minification %s" +msgstr "Мініфікація Cloudflare %s" + +#: inc/admin/options.php:180 +#, php-format +msgid "Cloudflare rocket loader error: %s" +msgstr "Помилка ракетного завантажувача Cloudflare: %s" + +#: inc/admin/options.php:186 +#, php-format +msgid "Cloudflare rocket loader %s" +msgstr "Cloudflare ракетний завантажувач %s" + +#: inc/admin/options.php:198 +#, php-format +msgid "Cloudflare browser cache error: %s" +msgstr "Помилка кешу браузера Cloudflare: %s" + +#: inc/admin/options.php:204 +#, php-format +msgid "Cloudflare browser cache set to %s seconds" +msgstr "Кеш браузера Cloudflare встановлено на %s секунд" + +#: inc/admin/options.php:252 inc/classes/admin/settings/class-page.php:693 +msgid "Excluded CSS Files" +msgstr "Виключені CSS файли" + +#: inc/admin/options.php:253 inc/classes/admin/settings/class-page.php:785 +msgid "Excluded Inline JavaScript" +msgstr "Виключені Inline JavaScript" + +#: inc/admin/options.php:254 inc/classes/admin/settings/class-page.php:803 +msgid "Excluded JavaScript Files" +msgstr "Виключені JavaScript файли" + +#: inc/admin/options.php:255 inc/classes/admin/settings/class-page.php:1189 +msgid "Never Cache URL(s)" +msgstr "Ніколи не кешувати URL(и)" + +#: inc/admin/options.php:256 inc/classes/admin/settings/class-page.php:1205 +msgid "Never Cache User Agent(s)" +msgstr "Некешуємі User-Agent(и)" + +#: inc/admin/options.php:257 inc/classes/admin/settings/class-page.php:1210 +msgid "Always Purge URL(s)" +msgstr "Always Purge URL(и)" + +#: inc/admin/options.php:258 inc/classes/admin/settings/class-page.php:1504 +msgid "Exclude files from CDN" +msgstr "Виключити файли з CDN" + +#: inc/admin/options.php:276 +#, php-format +msgid "%1$s: %2$s." +msgstr "%1$s: %2$s." + +#: inc/admin/options.php:286 +msgid "The following pattern is invalid and has been removed:" +msgid_plural "The following patterns are invalid and have been removed:" +msgstr[0] "Цей шаблон не працює, його було видалено:" +msgstr[1] "Ці шаблони не працюють, їх було видалено:" +msgstr[2] "Ці шаблони не працюють, їх було видалено:" +msgstr[3] "Ці шаблони не працюють, їх було видалено:" + +#: inc/admin/ui/meta-boxes.php:14 inc/admin/ui/notices.php:990 +#: inc/common/admin-bar.php:85 inc/common/admin-bar.php:137 +#: views/settings/page-sections/dashboard.php:117 +msgid "Clear cache" +msgstr "Очистити кеш" + +#: inc/admin/ui/meta-boxes.php:36 +msgid "WP Rocket Options" +msgstr "WP Rocket опції" + +#: inc/admin/ui/meta-boxes.php:65 +msgid "Never cache this page" +msgstr "Ніколи не кешуйте цю сторінку" + +#: inc/admin/ui/meta-boxes.php:69 +msgid "Activate these options on this post:" +msgstr "Активувати ці параметри в цьому записі:" + +#: inc/admin/ui/meta-boxes.php:72 +msgid "LazyLoad for images" +msgstr "LazyLoad для зображень" + +#: inc/admin/ui/meta-boxes.php:73 +msgid "LazyLoad for iframes/videos" +msgstr "LazyLoad для iframes/відео" + +#: inc/admin/ui/meta-boxes.php:74 +#: inc/classes/admin/settings/class-page.php:616 +msgid "Minify HTML" +msgstr "Зменшити HTML" + +#: inc/admin/ui/meta-boxes.php:75 +msgid "Minify/combine CSS" +msgstr "Зменшити/об'єднати CSS" + +#: inc/admin/ui/meta-boxes.php:76 +msgid "Minify/combine JS" +msgstr "Зменшити/об'єднати JS" + +#: inc/admin/ui/meta-boxes.php:77 +#: inc/classes/admin/settings/class-page.php:1474 +#: inc/classes/admin/settings/class-page.php:1485 +#: inc/deprecated/deprecated.php:1775 +msgid "CDN" +msgstr "CDN" + +#: inc/admin/ui/meta-boxes.php:78 +msgid "Optimize CSS Delivery" +msgstr "Оптимізуйте доставку CSS" + +#: inc/admin/ui/meta-boxes.php:79 +msgid "Defer JS" +msgstr "Defer JS" + +#: inc/admin/ui/meta-boxes.php:85 +#, php-format +msgid "Activate first the %s option." +msgstr "Активуйте спочатку %s параметр." + +#: inc/admin/ui/meta-boxes.php:101 +#, php-format +msgid "" +"%1$sNote:%2$s None of these options will be applied if this post has been " +"excluded from cache in the global cache settings." +msgstr "" +"%1$sNote:%2$s Жоден з цих параметрів не буде застосовано, якщо цю публікацію" +" виключено з кешу в налаштуваннях глобального кешу." + +#: inc/admin/ui/notices.php:25 inc/admin/ui/notices.php:35 +#, php-format +msgid "" +"%1$s has not been deactivated due to missing writing permissions.
      \n" +"Make %2$s writeable and retry deactivation, or force deactivation now:" +msgstr "" +"%1$s не може бути відключено через помилку прав запису.
      \n" +"Дозвольте запис в %2$s і повторіть спробу, або відключіть насильно:" + +#: inc/admin/ui/notices.php:83 +#, php-format +msgid "" +"%s: One or more plugins have been enabled or disabled, " +"clear the cache if they affect the front end of your site." +msgstr "" +"%s: Один або кілька плагінів були відключені або видалені. " +"Очистіть кеш, щоб стерти їх залишки." + +#: inc/admin/ui/notices.php:178 +msgid "" +"WP Rocket Cloudflare Add-on provides similar functionalities. They can not " +"be active at the same time." +msgstr "" +"Додаток Cloudflare у WP Rocket забезпечує той самий функціонал. Їх не може " +"бути активовано одночасно." + +#: inc/admin/ui/notices.php:202 +#, php-format +msgid "" +"%s: The following plugins are not compatible with this " +"plugin and may cause unexpected results:" +msgstr "" +"%s: Наступні плагіни несумісні з цим плагіном і можуть " +"призвести до несподіваних результатів:" + +#: inc/admin/ui/notices.php:208 +msgid "Deactivate" +msgstr "Вимкнути" + +#: inc/admin/ui/notices.php:248 +msgid "" +"WP Rocket Footer JS is not an official add-on. It prevents some options in " +"WP Rocket from working correctly. Please deactivate it if you have problems." +msgstr "" +"WP Rocket Footer JS не є офіційним доповненням. Це запобігає правильній " +"роботі деяких опцій WP Rocket. Вимкніть його, якщо у вас виникли проблеми." + +#: inc/admin/ui/notices.php:288 +#, php-format +msgid "" +"Endurance Cache is currently enabled, which will conflict with WP Rocket " +"Cache. Please set the Endurance Cache cache level to Off (Level 0) on the " +"%1$sSettings > General%2$s page to prevent any issues." +msgstr "" +"Зараз активовано Endurance Cache, це викличе конфлікти з WP Rocket Cache. " +"Щоб цьому запобігти, будь ласка, переключіть Endurance Cache на Off (Level " +"0) на сторінці %1$sSettings > General%2$s. " + +#: inc/admin/ui/notices.php:309 +#, php-format +msgid "" +"%1$s: A custom permalink structure is required for the plugin to work " +"properly. %2$sGo to permalinks settings%3$s" +msgstr "" +"%1$s: Для нормальної роботи плагіна потрібна власна структура постійних " +"посилань. %2$sПерейдіть до налаштувань permalinks%3$s" + +#: inc/admin/ui/notices.php:443 +#, php-format +msgid "" +"%s could not modify the .htaccess file due to missing writing permissions." +msgstr "" +"%s не вдалося внести зміни до файлу .htaccess через відсутність прав запису." + +#: inc/admin/ui/notices.php:449 inc/admin/ui/notices.php:1067 +#, php-format +msgid "Troubleshoot: %1$sHow to make system files writeable%2$s" +msgstr "Виправлення неполадок:%1$sЯк зробити системні файли для запису%2$s" + +#: inc/admin/ui/notices.php:451 inc/admin/ui/notices.php:1069 +msgid "" +"https://docs.wp-rocket.me/article/626-how-to-make-system-files-htaccess-wp-" +"config-writeable/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://docs.wp-rocket.me/article/626-how-to-make-system-files-htaccess-wp-" +"config-writeable/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: inc/admin/ui/notices.php:457 +msgid "" +"Don’t worry, WP Rocket’s page caching and settings will still function " +"correctly." +msgstr "" +"Не хвилюйтеся, кешування сторінок та налаштування WP Rocket будуть і надалі " +"працювати коректно." + +#: inc/admin/ui/notices.php:457 +msgid "" +"For optimal performance, adding the following lines into your .htaccess is " +"recommended (not required):" +msgstr "" +"Для покращення роботи, ми рекомендуємо (це не вимагається) додати наступні " +"рядки до .htaccess:" + +#: inc/admin/ui/notices.php:598 +#, php-format +msgid "" +"%1$s is good to go! %2$sTest your load time%4$s, or visit your " +"%3$ssettings%4$s." +msgstr "" +"%1$s працює відмінно! %2$sПеревірте швидкість завантаження%4$s, або " +"перейдіть в %3$sнастройки%4$s." + +#: inc/admin/ui/notices.php:746 +msgid "" +"Would you allow WP Rocket to collect non-sensitive diagnostic data from this" +" website?" +msgstr "" +"Чи дозволили б WP Rocket збирати нечутливі діагностичні дані з цього сайту?" + +#: inc/admin/ui/notices.php:747 +msgid "This would help us to improve WP Rocket for you in the future." +msgstr "Це допоможе нам у майбутньому поліпшити роботу WP Rocket." + +#: inc/admin/ui/notices.php:753 +msgid "What info will we collect?" +msgstr "Яку інформацію ми збираємо?" + +#: inc/admin/ui/notices.php:758 +msgid "" +"Below is a detailed view of all data WP Rocket will collect if granted " +"permission. WP Rocket will never transmit any domain names or email " +"addresses (except for license validation), IP addresses, or third-party API " +"keys." +msgstr "" +"Нижче наведено детальний перегляд всіх даних, які WP Rocket збиратиме, якщо " +"надано дозвіл. WP Rocket ніколи не передаватиме будь-які доменні імена або " +"адреси електронної пошти (крім перевірки ліцензії), IP-адреси або сторонні " +"ключі API." + +#: inc/admin/ui/notices.php:767 +msgid "Yes, allow" +msgstr "Так, дозволити" + +#: inc/admin/ui/notices.php:770 +msgid "No, thanks" +msgstr "Ні, дякую" + +#: inc/admin/ui/notices.php:807 +msgid "Thank you!" +msgstr "Дякую!" + +#: inc/admin/ui/notices.php:812 +msgid "WP Rocket now collects these metrics from your website:" +msgstr "Зараз WP Rocket збирає такі дані з вашого веб-сайту:" + +#: inc/admin/ui/notices.php:848 +#, php-format +msgid "%s: Cache cleared." +msgstr "%s: кеш очищено." + +#: inc/admin/ui/notices.php:855 +#, php-format +msgid "%s: Post cache cleared." +msgstr "%s: кеш записів очищено." + +#: inc/admin/ui/notices.php:862 +#, php-format +msgid "%s: Term cache cleared." +msgstr "%s: Term кеш очищено." + +#: inc/admin/ui/notices.php:869 +#, php-format +msgid "%s: User cache cleared." +msgstr "%s: кеш користувачів очищено." + +#: inc/admin/ui/notices.php:945 +msgid "" +"The following scheduled event failed to run. This may indicate the CRON " +"system is not running properly, which can prevent some WP Rocket features " +"from working as intended:" +msgid_plural "" +"The following scheduled events failed to run. This may indicate the CRON " +"system is not running properly, which can prevent some WP Rocket features " +"from working as intended:" +msgstr[0] "" +"Нижчезазначене заплановане завдання не було виконано. Причиною можуть бути " +"проблеми в системі СRON, які блокують роботу деяких функцій WP Rocket:" +msgstr[1] "" +"Нижчезазначені заплановані завдання не було виконано. Причиною можуть бути " +"проблеми в системі СRON, які блокують роботу деяких функцій WP Rocket:" +msgstr[2] "" +"Нижчезазначені заплановані завдання не було виконано. Причиною можуть бути " +"проблеми в системі СRON, які блокують роботу деяких функцій WP Rocket:" +msgstr[3] "" +"Нижчезазначені заплановані завдання не було виконано. Причиною можуть бути " +"проблеми в системі СRON, які блокують роботу деяких функцій WP Rocket:" + +#: inc/admin/ui/notices.php:954 +msgid "Please contact your host to check if CRON is working." +msgstr "" +"Будь ласка, зв'яжіться з вашим хостером, щоб перевірити, чи працює CRON." + +#: inc/admin/ui/notices.php:993 +msgid "Stop Preload" +msgstr "Зупинити попереднє завантаження" + +#: inc/admin/ui/notices.php:1011 +msgid "Force deactivation " +msgstr "Примусова деактивація " + +#: inc/admin/ui/notices.php:1024 +msgid "The following code should have been written to this file:" +msgstr "Наступний код повинен був бути написаний у цьому файлі:" + +#: inc/admin/ui/notices.php:1034 views/settings/page-sections/dashboard.php:46 +msgid "Dismiss this notice." +msgstr "Пропустити це сповіщення." + +#: inc/admin/ui/notices.php:1055 +#, php-format +msgid "%s cannot configure itself due to missing writing permissions." +msgstr "" +"%sне можна налаштувати автоматично через відсутність дозволів на запис." + +#: inc/admin/ui/notices.php:1061 +#, php-format +msgid "Affected file/folder: %s" +msgstr "Проблемний файл/папка: %s" + +#: inc/classes/admin/Database/class-optimization.php:41 +#: inc/classes/admin/settings/class-page.php:1350 +msgid "Revisions" +msgstr "Редакції" + +#: inc/classes/admin/Database/class-optimization.php:42 +#: inc/classes/admin/settings/class-page.php:1360 +msgid "Auto Drafts" +msgstr "Авто чернетки" + +#: inc/classes/admin/Database/class-optimization.php:43 +#: inc/classes/admin/settings/class-page.php:1370 +msgid "Trashed Posts" +msgstr "Видалені записи" + +#: inc/classes/admin/Database/class-optimization.php:44 +#: inc/classes/admin/settings/class-page.php:1380 +msgid "Spam Comments" +msgstr "Спам коментарі" + +#: inc/classes/admin/Database/class-optimization.php:45 +#: inc/classes/admin/settings/class-page.php:1390 +msgid "Trashed Comments" +msgstr "Видалені коментарі" + +#: inc/classes/admin/Database/class-optimization.php:46 +#: inc/classes/admin/settings/class-page.php:1400 +msgid "Expired transients" +msgstr "Прострочені тимчасові дані" + +#: inc/classes/admin/Database/class-optimization.php:47 +msgid "Transients" +msgstr "Транзакції" + +#: inc/classes/admin/Database/class-optimization.php:48 +msgid "Tables" +msgstr "Таблиці" + +#: inc/classes/admin/class-logs.php:124 +msgid "The debug file could not be deleted." +msgstr "Файл налагодження неможливо видалити." + +#: inc/classes/admin/settings/class-page.php:189 +msgid "Save Changes" +msgstr "Зберегти Зміни" + +#: inc/classes/admin/settings/class-page.php:189 +msgid "Validate License" +msgstr "Перевірити Ліцензію" + +#: inc/classes/admin/settings/class-page.php:213 +#: inc/classes/admin/settings/class-page.php:214 +msgid "Unavailable" +msgstr "Невідомо" + +#: inc/classes/admin/settings/class-page.php:328 +#: inc/deprecated/deprecated.php:1791 +#: views/settings/page-sections/dashboard.php:73 +msgid "License" +msgstr "Ліцензія" + +#: inc/classes/admin/settings/class-page.php:345 +msgid "API key" +msgstr "Ключ API" + +#: inc/classes/admin/settings/class-page.php:360 +msgid "Email address" +msgstr "Електронна пошта" + +#: inc/classes/admin/settings/class-page.php:389 +msgid "Dashboard" +msgstr "Майстерня" + +#: inc/classes/admin/settings/class-page.php:390 +msgid "Get help, account info" +msgstr "Довідка, інфо про аккаунт" + +#: inc/classes/admin/settings/class-page.php:399 +msgid "My Status" +msgstr "Мій статус" + +#: inc/classes/admin/settings/class-page.php:409 views/settings/page.php:72 +msgid "Rocket Tester" +msgstr "Rocket тестер" + +#: inc/classes/admin/settings/class-page.php:410 +msgid "I am part of the WP Rocket Beta Testing Program." +msgstr "Я є частиною програми тестування WP Rocket Beta." + +#: inc/classes/admin/settings/class-page.php:418 views/settings/page.php:90 +msgid "Rocket Analytics" +msgstr "Rocket аналітика" + +#: inc/classes/admin/settings/class-page.php:420 +#, php-format +msgid "" +"I agree to share anonymous data with the development team to help improve WP" +" Rocket. %1$sWhat info will we collect?%2$s" +msgstr "" +"Я згоден поділитися анонімними даними з командою розробників, для поліпшення" +" WP Rocket. %1$sЯку інформацію ми збираємо?%2$s" + +#: inc/classes/admin/settings/class-page.php:447 +msgid "Cache" +msgstr "Кеш" + +#: inc/classes/admin/settings/class-page.php:448 +msgid "Basic cache options" +msgstr "Основні опції кешу" + +#: inc/classes/admin/settings/class-page.php:455 +msgid "Mobile Cache" +msgstr "Мобільний кеш" + +#: inc/classes/admin/settings/class-page.php:457 +msgid "Speed up your site for mobile visitors." +msgstr "Прискорити свій сайт для мобільних відвідувачів." + +#: inc/classes/admin/settings/class-page.php:462 +msgid "" +"We detected you use a plugin that requires a separate cache for mobile, and " +"automatically enabled this option for compatibility." +msgstr "" +"Ми виявили, що ви використовуєте плагін, для якого потрібен окремий кеш для " +"мобільних пристроїв, і автоматично включений цей параметр для сумісності." + +#: inc/classes/admin/settings/class-page.php:466 +msgid "User Cache" +msgstr "Кеш користувача" + +#: inc/classes/admin/settings/class-page.php:469 +#, php-format +msgid "" +"%1$sUser cache%2$s is great when you have user-specific or restricted " +"content on your website." +msgstr "" +"%1$sКеш користувачів%2$s корисний, коли зміст сайту для користувачів " +"відрізняється від гостьового." + +#: inc/classes/admin/settings/class-page.php:477 +msgid "Cache Lifespan" +msgstr "Термін дії кешу" + +#: inc/classes/admin/settings/class-page.php:480 +#, php-format +msgid "" +"Cache files older than the specified lifespan will be deleted.
      Enable " +"%1$spreloading%2$s for the cache to be rebuilt automatically after lifespan " +"expiration." +msgstr "" +"Закешовані файли, які старіші за Термін дії кешу, буде видалено.
      Включіть" +" %1$sПрелоадінг%2$s, щоб кеш створювався заново автоматично після того, як " +"закінчиться термін його дії." + +#: inc/classes/admin/settings/class-page.php:494 +msgid "Enable caching for logged-in WordPress users" +msgstr "Увімкніть кешування для зареєстрованих користувачів WordPress" + +#: inc/classes/admin/settings/class-page.php:502 +msgid "Enable caching for mobile devices" +msgstr "Увімкнути кешування для мобільних пристроїв" + +#: inc/classes/admin/settings/class-page.php:517 +msgid "Separate cache files for mobile devices" +msgstr "Окремі файли кешу для мобільних пристроїв" + +#: inc/classes/admin/settings/class-page.php:519 +#, php-format +msgid "" +"Most modern themes are responsive and should work without a separate cache. " +"Enable this only if you have a dedicated mobile theme or plugin. %1$sMore " +"info%2$s" +msgstr "" +"Більшість сучасних тем є адаптивними і повинні працювати без окремого кешу. " +"Активуйте це тільки, якщо ви використовуєте окрему тему або плагін для " +"мобільних пристроїв. %1$sДетальніше%2$s" + +#: inc/classes/admin/settings/class-page.php:535 +msgid "" +"Specify time after which the global cache is cleared
      (0 = unlimited )" +msgstr "" +"Вкажіть час, після якого глобальний кеш буде очищено
      (0 = необмежений)" + +#: inc/classes/admin/settings/class-page.php:537 +#, php-format +msgid "" +"Reduce lifespan to 10 hours or less if you notice issues that seem to appear" +" periodically. %1$sWhy?%2$s" +msgstr "" +"Скоротіть термін служби до 10 годин або менше, якщо ви помітите, що на сайті" +" періодично виникають проблеми. %1$sЧому?%2$s" + +#: inc/classes/admin/settings/class-page.php:543 +msgid "Minutes" +msgstr "Хвилини" + +#: inc/classes/admin/settings/class-page.php:544 +msgid "Hours" +msgstr "Години" + +#: inc/classes/admin/settings/class-page.php:545 +msgid "Days" +msgstr "Дні" + +#: inc/classes/admin/settings/class-page.php:572 +#: views/settings/page-sections/tutorials.php:22 +msgid "File Optimization" +msgstr "Оптимізація файлів" + +#: inc/classes/admin/settings/class-page.php:573 +msgid "Optimize CSS & JS" +msgstr "Оптимізуйте CSS & JS" + +#: inc/classes/admin/settings/class-page.php:580 +msgid "Basic Settings" +msgstr "Основні опції" + +#: inc/classes/admin/settings/class-page.php:587 +#: inc/classes/admin/settings/class-page.php:597 +#: inc/classes/admin/settings/class-page.php:607 +#, php-format +msgid "" +"%1$s Minification is currently activated in Autoptimize. If" +" you want to use %2$s’s minification, disable those options in Autoptimize." +msgstr "" +"%1$s Minification зараз активовано в режимі Autoptimize. " +"Якщо ви хочете використовувати %2$s minification, вимкніть ці параметри у " +"параметрі Autoptimize." + +#: inc/classes/admin/settings/class-page.php:590 +msgid "CSS Files" +msgstr "CSS Файли" + +#: inc/classes/admin/settings/class-page.php:600 +msgid "JavaScript Files" +msgstr "Файли JavaScript" + +#: inc/classes/admin/settings/class-page.php:620 +msgid "Minifying HTML removes whitespace and comments to reduce the size." +msgstr "Зменшення HTML вилучає пробіли та коментарі, щоб зменшити розмір." + +#: inc/classes/admin/settings/class-page.php:631 +msgid "Combine Google Fonts files" +msgstr "Об'єднати файли шрифтів Google" + +#: inc/classes/admin/settings/class-page.php:632 +msgid "Combining Google Fonts will reduce the number of HTTP requests." +msgstr "Об'єднання шрифтів Google зменшить кількість запитів HTTP." + +#: inc/classes/admin/settings/class-page.php:640 +msgid "Remove query strings from static resources" +msgstr "Видалити рядки запиту зі статичних ресурсів" + +#: inc/classes/admin/settings/class-page.php:642 +#, php-format +msgid "" +"Removes the version query string from static files (e.g. style.css?ver=1.0) " +"and encodes it into the filename instead (e.g. style-1.0.css). Can improve " +"your GTMetrix score. %1$sMore info%2$s" +msgstr "" +"Видаляє рядок запиту версії зі статичних файлів (style.css?ver=1.0) і кодує " +"його у назву файлу (наприклад, style-1.0.css). Покращує показник GTMetrix. " +"%1$sДетальніше%2$s" + +#: inc/classes/admin/settings/class-page.php:650 +msgid "Minify CSS files" +msgstr "Зменшення CSS файли" + +#: inc/classes/admin/settings/class-page.php:651 +msgid "Minify CSS removes whitespace and comments to reduce the file size." +msgstr "" +"Зменшення CSS видаляє пробіли та коментарі, щоб зменшити розмір файлу." + +#: inc/classes/admin/settings/class-page.php:664 +#: inc/classes/admin/settings/class-page.php:686 +#: inc/classes/admin/settings/class-page.php:756 +#: inc/classes/admin/settings/class-page.php:778 +msgid "This could break things!" +msgstr "Це може зламати речі!" + +#: inc/classes/admin/settings/class-page.php:665 +#: inc/classes/admin/settings/class-page.php:687 +#: inc/classes/admin/settings/class-page.php:757 +#: inc/classes/admin/settings/class-page.php:779 +msgid "" +"If you notice any errors on your website after having activated this " +"setting, just deactivate it again, and your site will be back to normal." +msgstr "" +"Якщо ви помітили помилки на своєму веб-сайті після активації цього " +"налаштування, просто деактивуйте його знову, і ваш сайт повернеться до " +"нормального стану." + +#: inc/classes/admin/settings/class-page.php:666 +msgid "Activate minify CSS" +msgstr "Активувати мінімізацію CSS" + +#: inc/classes/admin/settings/class-page.php:671 +msgid "Combine CSS files (Enable Minify CSS files to select)" +msgstr "" +"Об'єднати файли CSS (увімкнути мінімізацію файлів CSS для вибору)" + +#: inc/classes/admin/settings/class-page.php:673 +#, php-format +msgid "" +"Combine CSS merges all your files into 1, reducing HTTP requests. Not " +"recommended if your site uses HTTP/2. %1$sMore info%2$s" +msgstr "" +"Об'єднати CSS об'єднує всі ваші файли в 1, зменшуючи HTTP-запити. Не " +"рекомендується, якщо ваш сайт використовує HTTP/2. %1$sБольше інформації%2$s" + +#: inc/classes/admin/settings/class-page.php:688 +msgid "Activate combine CSS" +msgstr "Активувати об`єднати CSS" + +#: inc/classes/admin/settings/class-page.php:694 +msgid "" +"Specify URLs of CSS files to be excluded from minification and concatenation" +" (one per line)." +msgstr "" +"Вкажіть URL-адреси CSS-файлів, які потрібно виключити з мінімізації та " +"об'єднання (по одному на рядок)." + +#: inc/classes/admin/settings/class-page.php:695 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*).css " +"wildcards to exclude all CSS files located at a specific path." +msgstr "" +"Частина URL домену буде видалена автоматично.
      Використовуйте символи (. " +"*). css, щоб виключити всі файли CSS, розташовані на певному шляху." + +#: inc/classes/admin/settings/class-page.php:708 +msgid "Optimize CSS delivery" +msgstr "Оптимізуйте доставку CSS" + +#: inc/classes/admin/settings/class-page.php:715 +#, php-format +msgctxt "WP Critical CSS compatibility" +msgid "" +"Optimize CSS Delivery is currently handled by the %1$s plugin. If you want " +"to use WP Rocket’s Optimize CSS Delivery option, disable the %1$s plugin." +msgstr "" +"Оптимізація завантаження CSS зараз виконується плагіном %1$s. Якщо ви " +"хочете використовувати цю функцію WP Rocket, деактивуйте плагін%1$s." + +#: inc/classes/admin/settings/class-page.php:717 +#, php-format +msgid "" +"Optimize CSS delivery eliminates render-blocking CSS on your website for " +"faster perceived load time. %1$sMore info%2$s" +msgstr "" +"Оптимізація доставки CSS усуває CSS-блокування на вашому веб-сайті для " +"швидшого сприйняття часу завантаження. %1$sДетальніше%2$s" + +#: inc/classes/admin/settings/class-page.php:728 +msgid "Fallback critical CSS" +msgstr "Резервний критичний CSS" + +#: inc/classes/admin/settings/class-page.php:733 +#, php-format +msgid "" +"Provides a fallback if auto-generated critical path CSS is incomplete. " +"%1$sMore info%2$s" +msgstr "" +"Забезпечує запасний варіант, якщо автоматично створений критичний шлях CSS є" +" неповним. %1$sДетальніше%2$s" + +#: inc/classes/admin/settings/class-page.php:742 +msgid "Minify JavaScript files" +msgstr "Зменшити файли JavaScript" + +#: inc/classes/admin/settings/class-page.php:743 +msgid "" +"Minify JavaScript removes whitespace and comments to reduce the file size." +msgstr "" +"Зменшити JavaScript видаляє пробіли та коментарі, щоб зменшити розмір файлу." + +#: inc/classes/admin/settings/class-page.php:758 +msgid "Activate minify JavaScript" +msgstr "Активувати стиснення JavaScript" + +#: inc/classes/admin/settings/class-page.php:763 +msgid "" +"Combine JavaScript files (Enable Minify JavaScript files to select)" +msgstr "" +"Об'єднати файли JavaScript (Увімкнути Мінімізацію файлів JavaScript для " +"вибору)" + +#: inc/classes/admin/settings/class-page.php:765 +#, php-format +msgid "" +"Combine JavaScript files combines your site’s internal, 3rd party and inline" +" JS reducing HTTP requests. Not recommended if your site uses HTTP/2. " +"%1$sMore info%2$s" +msgstr "" +"Об'єднати файли JavaScript поєднує внутрішні, треті сторони та вбудовані JS," +" що знижують HTTP-запити. Не рекомендується, якщо ваш сайт використовує HTTP" +" / 2. %1$sБольше інформації%2$s" + +#: inc/classes/admin/settings/class-page.php:780 +msgid "Activate combine JavaScript" +msgstr "Активувати об`єднати JavaScript" + +#: inc/classes/admin/settings/class-page.php:787 +#, php-format +msgid "" +"Specify patterns of inline JavaScript to be excluded from concatenation (one" +" per line). %1$sMore info%2$s" +msgstr "" +"Вкажіть шаблони вбудованого JavaScript, які будуть виключені з об'єднання " +"(по одному на рядок). %1$sДетальніше%2$s" + +#: inc/classes/admin/settings/class-page.php:804 +msgid "" +"Specify URLs of JavaScript files to be excluded from minification and " +"concatenation (one per line)." +msgstr "" +"Вкажіть URL-адреси файлів JavaScript, які потрібно виключити зі зменшення та" +" об'єднання (по одному на рядок)." + +#: inc/classes/admin/settings/class-page.php:805 +msgid "" +"Internal: The domain part of the URL will be stripped " +"automatically. Use (.*).js wildcards to exclude all JS files located at a " +"specific path." +msgstr "" +"Примітка: Доменне ім'я буде видалено автоматично. " +"Використовуйте маску (.*).js для виключення всіх JS файлів в заданому шляху." + +#: inc/classes/admin/settings/class-page.php:807 +#, php-format +msgid "" +"3rd Party: Use either the full URL path or only the domain " +"name, to exclude external JS. %1$sMore info%2$s" +msgstr "" +"Сторонні модулі: Використовуйте повний шлях або доменне " +"ім'я щоб виключити зовнішні JS. %1$sДетальніше%2$s" + +#: inc/classes/admin/settings/class-page.php:823 +msgid "Load JavaScript deferred" +msgstr "Відкладене завантаження JavaScript" + +#: inc/classes/admin/settings/class-page.php:825 +#, php-format +msgid "" +"Load JavaScript deferred eliminates render-blocking JS on your site and can " +"improve load time. %1$sMore info%2$s" +msgstr "" +"Відкладене завантаження JavaScript усуває можливість блокування JS на вашому" +" сайті та покращує час завантаження. %1$sДетальніше%2$s" + +#: inc/classes/admin/settings/class-page.php:836 +msgid "Safe Mode for jQuery (recommended)" +msgstr "Безпечний режим для jQuery (рекомендовано)" + +#: inc/classes/admin/settings/class-page.php:837 +msgid "" +"Safe mode for jQuery for deferred JS ensures support for inline jQuery " +"references from themes and plugins by loading jQuery at the top of the " +"document as a render-blocking script.
      Deactivating may result in " +"broken functionality, test thoroughly!" +msgstr "" +"Безпечний режим для jQuery для відкладеного JS забезпечує підтримку " +"вбудованих посилань jQuery з тем і плагінів, завантажуючи jQuery у верхній " +"частині документа як скрипт, що блокує візуалізацію.
      Вимкнення може " +"призвести до порушення функціональності, ретельної перевірки!" + +#: inc/classes/admin/settings/class-page.php:869 +msgid "Media" +msgstr "Медіафайли" + +#: inc/classes/admin/settings/class-page.php:870 +msgid "LazyLoad, emojis, embeds, WebP" +msgstr "LazyLoad, emojis, embeds, WebP" + +#: inc/classes/admin/settings/class-page.php:876 +msgid "Autoptimize" +msgstr "Autoptimize" + +#: inc/classes/admin/settings/class-page.php:893 +msgid "LazyLoad" +msgstr "LazyLoad" + +#: inc/classes/admin/settings/class-page.php:896 +#, php-format +msgid "" +"It can improve actual and perceived loading time as images, iframes, and " +"videos will be loaded only as they enter (or about to enter) the viewport " +"and reduces the number of HTTP requests. %1$sMore Info%2$s" +msgstr "" +"Вона може покращити фактичний і сприйнятий час завантаження - зображення, " +"фрейми, та відео буде завантажено лише після того, як вони ввійдуть до вікна" +" перегляду та скоротять кількість запитів HTTP. %1$sБільше інформації %2$s" + +#: inc/classes/admin/settings/class-page.php:903 +#, php-format +msgid "" +"Lazyload is currently activated in %2$s. If you want to use" +" %1$s’s lazyload, disable this option in %2$s." +msgstr "" +"Lazyload зараз активовано в %2$s. Якщо ви хочете " +"використовувати Lazyload в %1$s, деактивуйте цю функцію в%2$s." + +#: inc/classes/admin/settings/class-page.php:906 +msgid "Emoji 👻" +msgstr "Emoji 👻" + +#: inc/classes/admin/settings/class-page.php:908 +msgid "" +"Use default emoji of visitor's browser instead of loading emoji from " +"WordPress.org" +msgstr "" +"Використовуйте типову емодзiгу браузера відвідувача, а не завантажувати " +"емодзiти з WordPress.org" + +#: inc/classes/admin/settings/class-page.php:912 +msgid "Embeds" +msgstr "Вставки" + +#: inc/classes/admin/settings/class-page.php:914 +msgid "" +"Prevents others from embedding content from your site, prevents you from " +"embedding content from other (non-whitelisted) sites, and removes JavaScript" +" requests related to WordPress embeds" +msgstr "" +"Відключає вбудовування матеріалів з вашого сайту, а також чужих матеріалів " +"на вашому сайті (крім білого списку), прибирає пов'язані JavaScript запити " +"до сайту WordPress" + +#: inc/classes/admin/settings/class-page.php:918 +msgid "WebP compatibility" +msgstr "WebP сумісність" + +#: inc/classes/admin/settings/class-page.php:922 +#, php-format +msgid "" +"Enable this option if you would like WP Rocket to serve WebP images to " +"compatible browsers. Please note that WP Rocket cannot create WebP images " +"for you. To create WebP images we recommend %1$sImagify%2$s. %3$sMore " +"info%2$s" +msgstr "" +"Активуйте цю опцію, якщо ви хочете, щоб WP Rocket виводив зображення WebP у " +"браузерах, які підтримують цей формат. Зверніть увагу, що WP Rocket не може " +"створити WebP зображення для вас. Для їх безпосереднього створення ми " +"рекомендуємо %1$sImagify%2$s. %3$sБільше інформації%2$s" + +#: inc/classes/admin/settings/class-page.php:950 +msgid "Enable for images" +msgstr "Увімкнути для зображень" + +#: inc/classes/admin/settings/class-page.php:961 +msgctxt "Avada" +msgid "" +"Lazyload for images is currently activated in Avada. If you want to use WP " +"Rocket’s LazyLoad, disable this option in Avada." +msgstr "" +"Lazyload зображень зараз активовано в Avada. Якщо ви хочете використовувати " +"LazyLoad від WP Rocket, деактивуйте цю функцію в Avada." + +#: inc/classes/admin/settings/class-page.php:969 +msgid "Enable for iframes and videos" +msgstr "Увімкнути iframes і відео" + +#: inc/classes/admin/settings/class-page.php:984 +msgid "Replace YouTube iframe with preview image" +msgstr "Замініть YouTube iframe попереднім зображенням" + +#: inc/classes/admin/settings/class-page.php:985 +msgid "" +"This can significantly improve your loading time if you have a lot of " +"YouTube videos on a page." +msgstr "" +"Це може значно поліпшити час завантаження, якщо на сторінці є багато відео " +"YouTube." + +#: inc/classes/admin/settings/class-page.php:997 +msgid "Disable Emoji" +msgstr "Вимкнути Emoji" + +#: inc/classes/admin/settings/class-page.php:998 +msgid "Disable Emoji will reduce the number of external HTTP requests." +msgstr "Вимкнути Emoji зменшить кількість зовнішніх HTTP-запитів." + +#: inc/classes/admin/settings/class-page.php:1006 +msgid "Disable WordPress embeds" +msgstr "Вимкнути вставлення WordPress" + +#: inc/classes/admin/settings/class-page.php:1016 +#: inc/classes/subscriber/Media/class-webp-subscriber.php:360 +msgid "Enable WebP caching" +msgstr "Увімкнути кешування WebP" + +#: inc/classes/admin/settings/class-page.php:1039 +#: inc/classes/admin/settings/class-page.php:1049 +#: inc/deprecated/deprecated.php:1778 +#: views/settings/page-sections/tutorials.php:30 +msgid "Preload" +msgstr "Презавантаження" + +#: inc/classes/admin/settings/class-page.php:1040 +msgid "Generate cache files" +msgstr "Створення файлів кешу" + +#: inc/classes/admin/settings/class-page.php:1052 +#, php-format +msgid "" +"When you enable preloading WP Rocket will generate the cache starting with " +"the links on your homepage followed by the sitemaps you specify. Preloading " +"is automatically triggered when you add or update content and can also be " +"manually triggered from the admin bar or from the %1$sWP Rocket " +"Dashboard%2$s." +msgstr "" +"При включенні попереднього завантаження WP Rocket генеруватиме кеш, " +"починаючи з посилань на вашій домашній сторінці, за якими слідують вказані " +"вами мапи сайту. Попереднє завантаження автоматично спрацьовує під час " +"додавання або оновлення вмісту, а також може бути запущено вручну з панелі " +"адміністрування або з панелі%1$sWP Rocket Dashboard%2$s." + +#: inc/classes/admin/settings/class-page.php:1060 +msgid "Prefetch DNS Requests" +msgstr "Оптимізація DNS запитів" + +#: inc/classes/admin/settings/class-page.php:1062 +msgid "" +"DNS prefetching can make external files load faster, especially on mobile " +"networks" +msgstr "" +"Попередня вибірка DNS може прискорювати завантаження зовнішніх файлів, " +"особливо в мобільних мережах" + +#: inc/classes/admin/settings/class-page.php:1076 +msgid "Activate Preloading" +msgstr "Активувати Презавантаження" + +#: inc/classes/admin/settings/class-page.php:1095 +msgid "Activate sitemap-based cache preloading" +msgstr "Активуйте попереднє завантаження кешу на базі карти сайту" + +#: inc/classes/admin/settings/class-page.php:1114 +msgid "Sitemaps for preloading" +msgstr "Карти сайту для предзагрузки" + +#: inc/classes/admin/settings/class-page.php:1118 +msgid "Specify XML sitemap(s) to be used for preloading" +msgstr "" +"Вкажіть файл Sitemap XML, який буде використовуватися для попереднього " +"завантаження" + +#: inc/classes/admin/settings/class-page.php:1128 +msgid "URLs to prefetch" +msgstr "URL для кешування" + +#: inc/classes/admin/settings/class-page.php:1129 +msgid "" +"Specify external hosts to be prefetched (no http:, one per " +"line)" +msgstr "" +"Вкажіть зовнішні вузли, які потрібно попередньо завантажувати (не " +"http: один на рядок)" + +#: inc/classes/admin/settings/class-page.php:1152 +msgid "Advanced Rules" +msgstr "Розширені правила" + +#: inc/classes/admin/settings/class-page.php:1153 +msgid "Fine-tune cache rules" +msgstr "Розширені кеш правила" + +#: inc/classes/admin/settings/class-page.php:1162 +msgid "" +"Sensitive pages like custom login/logout URLs should be excluded from cache." +msgstr "" +"Чутливі сторінки, такі як користувацькі URL-адреси для входу/виходу, повинні" +" бути виключені з кешу." + +#: inc/classes/admin/settings/class-page.php:1165 +msgctxt "plugin name" +msgid "WooCommerce" +msgstr "WooCommerce" + +#: inc/classes/admin/settings/class-page.php:1167 +msgctxt "plugin name" +msgid "Easy Digital Downloads" +msgstr "Easy Digital Downloads" + +#: inc/classes/admin/settings/class-page.php:1169 +msgctxt "plugin name" +msgid "iThemes Exchange" +msgstr "iThemes Exchange" + +#: inc/classes/admin/settings/class-page.php:1171 +msgctxt "plugin name" +msgid "Jigoshop" +msgstr "Jigoshop" + +#: inc/classes/admin/settings/class-page.php:1173 +msgctxt "plugin name" +msgid "WP-Shop" +msgstr "WP-Магазин" + +#: inc/classes/admin/settings/class-page.php:1179 +#, php-format +msgid "" +"
      Cart, checkout and \"my account\" pages set in " +"%1$s%2$s%3$s will be detected and never cached by default." +msgstr "" +"
      Кошик, оформлення замовлення і кабінет покупця встановлюються в " +"%1$s%2$s%3$s визначаються автоматично, їх вказувати не " +"потрібно." + +#: inc/classes/admin/settings/class-page.php:1200 +msgid "Never Cache Cookies" +msgstr "Ніколи не кешувати файли cookie" + +#: inc/classes/admin/settings/class-page.php:1219 +msgid "Cache Query String(s)" +msgstr "Строки запиту кешу" + +#: inc/classes/admin/settings/class-page.php:1222 +#, php-format +msgid "" +"%1$sCache for query strings%2$s enables you to force caching for specific " +"GET parameters." +msgstr "" +"%1$sCache для запитів%2$s дозволяє примусово кешувати певні параметри GET." + +#: inc/classes/admin/settings/class-page.php:1236 +msgid "" +"Specify URLs of pages or posts that should never be cached (one per line)" +msgstr "" +"Вкажіть URL-адреси сторінок або публікацій, які ніколи не повинні кешуватися" +" (по одному на рядок)" + +#: inc/classes/admin/settings/class-page.php:1237 +#: inc/classes/admin/settings/class-page.php:1265 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*) " +"wildcards to address multiple URLs under a given path." +msgstr "" +"Частина URL домену буде видалена автоматично.
      Використовуйте символи (. " +"*) Для адреси декількох URL-адрес у заданому шляху." + +#: inc/classes/admin/settings/class-page.php:1246 +msgid "" +"Specify the IDs of cookies that, when set in the visitor's browser, should " +"prevent a page from getting cached (one per line)" +msgstr "" +"Вкажіть ідентифікатори файлів cookie, які, коли встановлюються у веб-" +"переглядачі відвідувача, повинні запобігати кешуванню сторінки (по одному на" +" рядок)" + +#: inc/classes/admin/settings/class-page.php:1254 +msgid "" +"Specify user agent strings that should never see cached pages (one per line)" +msgstr "" +"Вкажіть рядки агента користувача, які ніколи не повинні бачити кешовані " +"сторінки (по одному на рядок)" + +#: inc/classes/admin/settings/class-page.php:1255 +msgid "Use (.*) wildcards to detect parts of UA strings." +msgstr "Використовуйте символи (. *) Для виявлення частин рядків UA." + +#: inc/classes/admin/settings/class-page.php:1264 +msgid "" +"Specify URLs you always want purged from cache whenever you update any post " +"or page (one per line)" +msgstr "" +"Вкажіть URL-адреси, які завжди потрібно очищати від кешу, коли ви оновлюєте " +"будь-яку публікацію або сторінку (по одному на рядок)" + +#: inc/classes/admin/settings/class-page.php:1273 +msgid "Specify query strings for caching (one per line)" +msgstr "Вкажіть рядки запитів для кешування (по одному на рядок)" + +#: inc/classes/admin/settings/class-page.php:1301 +#: inc/deprecated/deprecated.php:1777 +msgid "Database" +msgstr "База даних" + +#: inc/classes/admin/settings/class-page.php:1302 +msgid "Optimize, reduce bloat" +msgstr "Оптимізуйте, зменшіть розмір" + +#: inc/classes/admin/settings/class-page.php:1311 +msgid "Post Cleanup" +msgstr "Очистка записів" + +#: inc/classes/admin/settings/class-page.php:1313 +msgid "" +"Post revisions and drafts will be permanently deleted. Do not use this " +"option if you need to retain revisions or drafts." +msgstr "" +"Перевірки публікації та чернетки видаляються назавжди. Не використовуйте цей" +" параметр, якщо потрібно зберегти зміни або чернетки." + +#: inc/classes/admin/settings/class-page.php:1321 +msgid "Comments Cleanup" +msgstr "Очищення коментарів" + +#: inc/classes/admin/settings/class-page.php:1323 +msgid "Spam and trashed comments will be permanently deleted." +msgstr "Спам та видалені коментарі буде видалено назавжди." + +#: inc/classes/admin/settings/class-page.php:1327 +msgid "Transients Cleanup" +msgstr "Очищення транзакцій" + +#: inc/classes/admin/settings/class-page.php:1329 +msgid "" +"Transients are temporary options; they are safe to remove. They will be " +"automatically regenerated as your plugins require them." +msgstr "" +"Транзакції це тимчасові налаштування, їх можна смело удалять. Вони будуть " +"створені автоматично, якщо потребуються плагину." + +#: inc/classes/admin/settings/class-page.php:1333 +msgid "Database Cleanup" +msgstr "Очищення бази даних" + +#: inc/classes/admin/settings/class-page.php:1335 +msgid "Reduces overhead of database tables" +msgstr "Зменшує накладні витрати на таблиці бази даних" + +#: inc/classes/admin/settings/class-page.php:1339 +msgid "Automatic cleanup" +msgstr "Авто очистка" + +#: inc/classes/admin/settings/class-page.php:1352 +#, php-format +msgid "%s revision in your database." +msgid_plural "%s revisions in your database." +msgstr[0] "%s ревізія у вашій базі даних." +msgstr[1] "%s ревізій у вашій базі даних." +msgstr[2] "%s ревізій у вашій базі даних." +msgstr[3] "%s ревізій у вашій базі даних." + +#: inc/classes/admin/settings/class-page.php:1362 +#, php-format +msgid "%s draft in your database." +msgid_plural "%s drafts in your database." +msgstr[0] "%s чернетка у вашій базі даних." +msgstr[1] "%s чернеток у вашій базі даних." +msgstr[2] "%s чернеток у вашій базі даних." +msgstr[3] "%s чернеток у вашій базі даних." + +#: inc/classes/admin/settings/class-page.php:1372 +#, php-format +msgid "%s trashed post in your database." +msgid_plural "%s trashed posts in your database." +msgstr[0] "%s видалений запис у вашій базі даних." +msgstr[1] "%s видалених записів у вашій базі даних." +msgstr[2] "%s видалених записів у вашій базі даних." +msgstr[3] "%s видалених записів у вашій базі даних." + +#: inc/classes/admin/settings/class-page.php:1382 +#, php-format +msgid "%s spam comment in your database." +msgid_plural "%s spam comments in your database." +msgstr[0] "%s спамний коментар у вашій базі даних." +msgstr[1] "%s спамних коментарів у вашій базі даних." +msgstr[2] "%s спамних коментарів у вашій базі даних." +msgstr[3] "%s спамних коментарів у вашій базі даних." + +#: inc/classes/admin/settings/class-page.php:1392 +#, php-format +msgid "%s trashed comment in your database." +msgid_plural "%s trashed comments in your database." +msgstr[0] "%s видалений коментар у вашій базі даних." +msgstr[1] "%s видалених коментарів у вашій базі даних." +msgstr[2] "%s видалених коментарів у вашій базі даних." +msgstr[3] "%s видалених коментарів у вашій базі даних." + +#: inc/classes/admin/settings/class-page.php:1402 +#, php-format +msgid "%s expired transient in your database." +msgid_plural "%s expired transients in your database." +msgstr[0] "У вашій базі даних %s тимчасові дані, строк дії яких закінчився." +msgstr[1] "У вашій базі даних %s тимчасових даних, строк дії яких закінчився." +msgstr[2] "У вашій базі даних %s тимчасових даних, строк дії яких закінчився." +msgstr[3] "У вашій базі даних %s тимчасових даних, строк дії яких закінчився." + +#: inc/classes/admin/settings/class-page.php:1410 +msgid "All transients" +msgstr "Всі перехідні" + +#: inc/classes/admin/settings/class-page.php:1412 +#, php-format +msgid "%s transient in your database." +msgid_plural "%s transients in your database." +msgstr[0] "У вашій базі даних %s тимчасові дані." +msgstr[1] "У вашій базі даних %s тимчасових даних." +msgstr[2] "У вашій базі даних %s тимчасових даних." +msgstr[3] "У вашій базі даних %s тимчасових даних." + +#: inc/classes/admin/settings/class-page.php:1420 +msgid "Optimize Tables" +msgstr "Оптимізувати таблиці" + +#: inc/classes/admin/settings/class-page.php:1422 +#, php-format +msgid "%s table to optimize in your database." +msgid_plural "%s tables to optimize in your database." +msgstr[0] "%s таблиця, яку можна оптимізувати, у вашій базі даних." +msgstr[1] "%s таблиць, які можна оптимізувати, у вашій базі даних." +msgstr[2] "%s таблиць, які можна оптимізувати, у вашій базі даних." +msgstr[3] "%s таблиць, які можна оптимізувати, у вашій базі даних." + +#: inc/classes/admin/settings/class-page.php:1433 +msgid "Schedule Automatic Cleanup" +msgstr "Розклад автоматичного очищення" + +#: inc/classes/admin/settings/class-page.php:1445 +msgid "Frequency" +msgstr "Частота" + +#: inc/classes/admin/settings/class-page.php:1453 +msgid "Daily" +msgstr "Щоденно" + +#: inc/classes/admin/settings/class-page.php:1454 +msgid "Weekly" +msgstr "Щотижня" + +#: inc/classes/admin/settings/class-page.php:1455 +msgid "Monthly" +msgstr "Щомісяця" + +#: inc/classes/admin/settings/class-page.php:1475 +msgid "Integrate your CDN" +msgstr "Інтегруйте свій CDN" + +#: inc/classes/admin/settings/class-page.php:1487 +msgid "" +"All URLs of static files (CSS, JS, images) will be rewritten to the CNAME(s)" +" you provide." +msgstr "" +"Всі URL(и) статичних файлів (CSS, JS, images) будуть переписані на надані " +"вами CNAME-адреси." + +#: inc/classes/admin/settings/class-page.php:1489 +#, php-format +msgid "" +"Not required for services like Cloudflare and Sucuri. Please see our " +"available %1$sAdd-ons%2$s." +msgstr "" +"Не потрібен для таких послуг, як Cloudflare і Sucuri. Перегляньте наші " +"доступні %1$sДодатки%2$s." + +#: inc/classes/admin/settings/class-page.php:1530 +#, php-format +msgid "" +"%1$s%2$s Add-on%3$s is currently enabled. Configuration of the CDN settings " +"is not required for %2$s to work on your site." +msgid_plural "" +"%1$s%2$s Add-ons%3$s are currently enabled. Configuration of the CDN " +"settings is not required for %2$s to work on your site." +msgstr[0] "" +"%1$s%2$s Додаток %3$s зараз активовано. Налаштування CDN для%2$s " +"необов'язково, щоб функціонувати на вашому сайті." +msgstr[1] "" +"%1$s%2$s Додатків %3$s зараз активовано. Налаштування CDN для%2$s " +"необов'язково, щоб функціонувати на вашому сайті." +msgstr[2] "" +"%1$s%2$s Додатків %3$s зараз активовано. Налаштування CDN для%2$s " +"необов'язково, щоб функціонувати на вашому сайті." +msgstr[3] "" +"%1$s%2$s Додатків %3$s зараз активовано. Налаштування CDN для%2$s " +"необов'язково, щоб функціонувати на вашому сайті." + +#: inc/classes/admin/settings/class-page.php:1557 +msgid "Enable Content Delivery Network" +msgstr "Увімкнути мережу доставки вмісту" + +#: inc/classes/admin/settings/class-page.php:1567 +msgid "CDN CNAME(s)" +msgstr "CDN CNAME(и)" + +#: inc/classes/admin/settings/class-page.php:1568 +msgid "Specify the CNAME(s) below" +msgstr "Укажіть нижче CNAME(и)" + +#: inc/classes/admin/settings/class-page.php:1575 +msgid "" +"Specify URL(s) of files that should not get served via CDN (one per line)." +msgstr "" +"Вкажіть URL-адреси файлів, які не можна подавати за допомогою CDN (по одному" +" на рядок)." + +#: inc/classes/admin/settings/class-page.php:1576 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*) " +"wildcards to exclude all files of a given file type located at a specific " +"path." +msgstr "" +"Частина URL домену буде видалена автоматично.
      Використовуйте символи (. " +"*) Для виключення всіх файлів певного типу файлів, розташованих на певному " +"шляху." + +#: inc/classes/admin/settings/class-page.php:1599 +#: inc/classes/admin/settings/class-page.php:1607 +msgid "Heartbeat" +msgstr "Серцебиття" + +#: inc/classes/admin/settings/class-page.php:1600 +msgid "Control WordPress Heartbeat API" +msgstr "Керуйте WordPress Heartbeat API" + +#: inc/classes/admin/settings/class-page.php:1608 +msgid "" +"Reducing or disabling the Heartbeat API’s activity can help save some of " +"your server’s resources." +msgstr "" +"Зменшення або вимкнення активності API Heartbeat може допомогти зберегти " +"деякі ресурси вашого сервера." + +#: inc/classes/admin/settings/class-page.php:1617 +msgid "Reduce or disable Heartbeat activity" +msgstr "Зменшити або відключити Серцебиття активність" + +#: inc/classes/admin/settings/class-page.php:1618 +msgid "" +"Reducing activity will change Heartbeat frequency from one hit each minute " +"to one hit every 2 minutes." +msgstr "" +"Зменшення активності змінить частоту серцевих скорочень з одного удару кожну" +" хвилину на один удар кожні 2 хвилини." + +#: inc/classes/admin/settings/class-page.php:1618 +msgid "" +"Disabling Heartbeat entirely may break plugins and themes using this API." +msgstr "" +"Вимкнення функції Heartbeat цілком може призвести до порушення плагінів і " +"тем за допомогою цього API." + +#: inc/classes/admin/settings/class-page.php:1632 +msgid "Do not limit" +msgstr "Не обмежується" + +#: inc/classes/admin/settings/class-page.php:1633 +msgid "Reduce activity" +msgstr "Знизити активність" + +#: inc/classes/admin/settings/class-page.php:1634 +msgid "Disable" +msgstr "Відключити" + +#: inc/classes/admin/settings/class-page.php:1642 +msgid "Control Heartbeat" +msgstr "Контроль серцебиття" + +#: inc/classes/admin/settings/class-page.php:1651 +msgid "Behavior in backend" +msgstr "Поведінка в бекенд" + +#: inc/classes/admin/settings/class-page.php:1658 +msgid "Behavior in post editor" +msgstr "Поведінка в редакторі записів" + +#: inc/classes/admin/settings/class-page.php:1664 +msgid "Behavior in frontend" +msgstr "Поведінка в фронтенд" + +#: inc/classes/admin/settings/class-page.php:1683 +#: views/settings/page-sections/tutorials.php:36 +msgid "Add-ons" +msgstr "Додатки" + +#: inc/classes/admin/settings/class-page.php:1684 +msgid "Add more features" +msgstr "Додайте інші функції" + +#: inc/classes/admin/settings/class-page.php:1691 +msgid "One-click Rocket Add-ons" +msgstr "Швидкі Rocket Додатки" + +#: inc/classes/admin/settings/class-page.php:1692 +msgid "" +"One-Click Add-ons are features extending available options without " +"configuration needed. Switch the option \"on\" to enable from this screen." +msgstr "" +"Додатки з одним натисканням - це функції, що розширюють доступні опції без " +"необхідної конфігурації. Щоб увімкнути цей екран, увімкніть \"on\" параметр." + +#: inc/classes/admin/settings/class-page.php:1702 +msgid "Rocket Add-ons" +msgstr "Rocket Надбудови" + +#: inc/classes/admin/settings/class-page.php:1703 +msgid "Rocket Add-ons are complementary features extending available options." +msgstr "Ракетні Додатки доповнюють додаткові можливості." + +#: inc/classes/admin/settings/class-page.php:1716 +msgid "Google Tracking" +msgstr "Google Tracking" + +#: inc/classes/admin/settings/class-page.php:1722 +msgid "Improve browser caching for Google Analytics" +msgstr "Покращення кешування веб-переглядача для Google Analytics" + +#: inc/classes/admin/settings/class-page.php:1724 +#, php-format +msgid "" +"WP Rocket will host these Google scripts locally on your server to help " +"satisfy the PageSpeed recommendation for Leverage browser " +"caching.
      %1$sLearn more%2$s" +msgstr "" +"WP Rocket буде розміщувати ці сценарії Google локально на вашому сервері, " +"щоб допомогти задовольнити рекомендацію PageSpeed для кешування " +"браузера.
      %1$sДокладніше%2$s" + +#: inc/classes/admin/settings/class-page.php:1739 +msgid "Facebook Pixel" +msgstr "Facebook Pixel" + +#: inc/classes/admin/settings/class-page.php:1745 +msgid "Improve browser caching for Facebook Pixel" +msgstr "Покращити кешування браузера для Facebook Pixel" + +#: inc/classes/admin/settings/class-page.php:1747 +#, php-format +msgid "" +"WP Rocket will host these Facebook Pixels locally on your server to help " +"satisfy the PageSpeed recommendation for Leverage browser " +"caching.
      %1$sLearn more%2$s" +msgstr "" +"WP Rocket буде розміщувати ці пікселі Facebook локально на вашому сервері, " +"щоб допомогти задовольнити рекомендацію PageSpeed для Кешування " +"браузера.
      %1$sДокладніше%2$s" + +#: inc/classes/admin/settings/class-page.php:1780 +msgid "Varnish" +msgstr "Varnish" + +#: inc/classes/admin/settings/class-page.php:1786 +msgid "If Varnish runs on your server, you must activate this add-on." +msgstr "" +"Якщо на вашому сервері запускається Varnish, необхідно активувати цей " +"додаток." + +#: inc/classes/admin/settings/class-page.php:1788 +#, php-format +msgid "" +"Varnish cache will be purged each time WP Rocket clears its cache to ensure " +"content is always up-to-date.
      %1$sLearn more%2$s" +msgstr "" +"Varnish кеш очищується разом з іншим кешем, щоб підтримувати актуальність " +"контенту.
      %1$sДетальніше%2$s" + +#: inc/classes/admin/settings/class-page.php:1803 +#: inc/classes/admin/settings/class-page.php:1863 +msgid "Cloudflare" +msgstr "Cloudflare" + +#: inc/classes/admin/settings/class-page.php:1809 +msgid "Integrate your Cloudflare account with this add-on." +msgstr "Інтегруйте свій обліковий запис Cloudflare з цим додатком." + +#: inc/classes/admin/settings/class-page.php:1810 +msgid "" +"Provide your account email, global API key, and domain to use options such " +"as clearing the Cloudflare cache and enabling optimal settings with WP " +"Rocket." +msgstr "" +"Надайте електронну пошту облікового запису, глобальний ключ API та домен для" +" використання таких параметрів, як очищення кешу Cloudflare та забезпечення " +"оптимальних параметрів за допомогою WP Rocket." + +#: inc/classes/admin/settings/class-page.php:1822 +msgid "Clear the Sucuri cache when WP Rocket’s cache is cleared." +msgstr "Очистіть кеш Sucuri, коли WP Rocket кеш буде очищено." + +#: inc/classes/admin/settings/class-page.php:1825 +msgid "" +"Provide your API key to clear the Sucuri cache when WP Rocket’s cache is " +"cleared." +msgstr "" +"Надайте ключ API, щоб очистити кеш Sucuri, коли кеш WP Rocket очищено." + +#: inc/classes/admin/settings/class-page.php:1833 +#: inc/classes/admin/settings/class-page.php:1982 +msgid "Sucuri" +msgstr "Sucuri" + +#: inc/classes/admin/settings/class-page.php:1839 +msgid "Synchronize Sucuri cache with this add-on." +msgstr "Синхронізуйте кеш Sucuri з цим додатком." + +#: inc/classes/admin/settings/class-page.php:1880 +msgid "Cloudflare credentials" +msgstr "Cloudflare облікові дані" + +#: inc/classes/admin/settings/class-page.php:1889 +msgid "Cloudflare settings" +msgstr "Cloudflare опції" + +#: inc/classes/admin/settings/class-page.php:1903 +msgctxt "Cloudflare" +msgid "Global API key:" +msgstr "Глобальний API ключ:" + +#: inc/classes/admin/settings/class-page.php:1904 +msgctxt "Cloudflare" +msgid "Find your API key" +msgstr "Знайдіть ваш API ключ" + +#: inc/classes/admin/settings/class-page.php:1916 +msgctxt "Cloudflare" +msgid "Account email" +msgstr "Email облікового запису" + +#: inc/classes/admin/settings/class-page.php:1925 +msgctxt "Cloudflare" +msgid "Zone ID" +msgstr "ID Зони" + +#: inc/classes/admin/settings/class-page.php:1935 +msgid "Development mode" +msgstr "Режим розробки" + +#: inc/classes/admin/settings/class-page.php:1937 +#, php-format +msgid "" +"Temporarily activate development mode on your website. This setting will " +"automatically turn off after 3 hours. %1$sLearn more%2$s" +msgstr "" +"Тимчасово активуйте режим розробки на своєму веб-сайті. Ця настройка " +"автоматично вимкнеться через 3 години. %1$sДокладніше%2$s" + +#: inc/classes/admin/settings/class-page.php:1945 +msgid "Optimal settings" +msgstr "Оптимальні опції" + +#: inc/classes/admin/settings/class-page.php:1946 +msgid "" +"Automatically enhances your Cloudflare configuration for speed, performance " +"grade and compatibility." +msgstr "" +"Автоматично покращує вашу конфігурацію Cloudflare для швидкості, якості " +"продуктивності та сумісності." + +#: inc/classes/admin/settings/class-page.php:1954 +msgid "Relative protocol" +msgstr "Відносний протокол" + +#: inc/classes/admin/settings/class-page.php:1955 +msgid "" +"Should only be used with Cloudflare's flexible SSL feature. URLs of static " +"files (CSS, JS, images) will be rewritten to use // instead of http:// or " +"https://." +msgstr "" +"Потрібно використовувати тільки Cloudflare's flexible SSL. URL адреси " +"статичних файлів (CSS, JS, зображення) будуть переписані для використання //" +" замість http:// або https://." + +#: inc/classes/admin/settings/class-page.php:1995 +msgid "Sucuri credentials" +msgstr "Sucuri облікові дані" + +#: inc/classes/admin/settings/class-page.php:2008 +msgctxt "Sucuri" +msgid "" +"Firewall API key (for plugin), must be in format {32 characters}/{32 " +"characters}:" +msgstr "" +"Ключ API брандмауера (для плагіна) повинен мати формат {32 " +"characters}/{32 characters}:" + +#: inc/classes/admin/settings/class-page.php:2009 +msgctxt "Sucuri" +msgid "Find your API key" +msgstr "Знайдіть ваш API ключ" + +#: inc/classes/admin/settings/class-render.php:496 +#: inc/deprecated/deprecated.php:1296 +msgid "Upload file and import settings" +msgstr "Завантажити налаштування файлу та імпортувати" + +#: inc/classes/admin/settings/class-settings.php:387 +msgid "" +"Sucuri Add-on: The API key for the Sucuri firewall must be in format " +"{32 characters}/{32 characters}." +msgstr "" +"Додаток Sucuri: Ключ API для брандмауера Sucuri повинен мати формат " +"{32 characters}/{32 characters} ." + +#: inc/classes/admin/settings/class-settings.php:478 +#: inc/deprecated/deprecated.php:1247 +msgid "Settings saved." +msgstr "Налаштування збережено." + +#: inc/classes/class-wp-rocket-requirements-check.php:147 +#, php-format +msgid "To function properly, %1$s %2$s requires at least:" +msgstr "Щоб правильно функціонувати,%1$s %2$s вимагає принаймні:" + +#: inc/classes/class-wp-rocket-requirements-check.php:151 +#, php-format +msgid "" +"PHP %1$s. To use this WP Rocket version, please ask your web host how to " +"upgrade your server to PHP %1$s or higher." +msgstr "" +"PHP %1$s Щоб скористатися цією версією WP Rocket, зверніться до веб-хосту, " +"як оновити ваш сервер до PHP %1$s або вище." + +#: inc/classes/class-wp-rocket-requirements-check.php:156 +#, php-format +msgid "" +"WordPress %1$s. To use this WP Rocket version, please upgrade WordPress to " +"version %1$s or higher." +msgstr "" +"WordPress %1$s. Щоб використовувати цю версію WP Rocket, оновіть WordPress " +"версії%1$s або вище." + +#: inc/classes/class-wp-rocket-requirements-check.php:159 +msgid "" +"If you are not able to upgrade, you can rollback to the previous version by " +"using the button below." +msgstr "" +"Якщо ви не можете оновити, можна повернутись до попередньої версії за " +"допомогою кнопки нижче." + +#: inc/classes/class-wp-rocket-requirements-check.php:161 +#: inc/deprecated/deprecated.php:1949 +#, php-format +msgid "Re-install version %s" +msgstr "Перевстановіть версію %s" + +#: inc/classes/logger/class-logger.php:253 +#: inc/classes/logger/class-logger.php:285 +msgid "The log file does not exist." +msgstr "Файл журналу не існує." + +#: inc/classes/logger/class-logger.php:259 +#: inc/classes/logger/class-logger.php:291 +msgid "The log file could not be read." +msgstr "Файл журналу неможливо прочитати." + +#: inc/classes/logger/class-logger.php:278 +msgid "The logs are not saved into a file." +msgstr "Журнали не зберігаються у файл." + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:88 +#: inc/classes/optimization/CSS/class-critical-css-generation.php:99 +#: inc/classes/optimization/CSS/class-critical-css-generation.php:110 +#: inc/classes/optimization/CSS/class-critical-css-generation.php:120 +#: inc/classes/optimization/CSS/class-critical-css-generation.php:142 +#, php-format +msgid "Critical CSS for %1$s not generated. Error: %2$s" +msgstr "Критичний CSS для %1$s не створено. Помилка:%2$s" + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:99 +msgid "The API returned an invalid response code." +msgstr "API повернув неправильний код відповіді." + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:110 +msgid "The API returned an empty response." +msgstr "API повернув порожню відповідь." + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:145 +#, php-format +msgid "The critical CSS content could not be saved as a file in %s." +msgstr "Критичний вміст CSS не може бути збережено як файл у %s." + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:154 +#, php-format +msgid "Critical CSS for %s generated." +msgstr "Створено критичний CSS для %s." + +#: inc/classes/preload/class-homepage.php:83 +#, php-format +msgid "" +"Preload encountered an error. Could not gather links on %1$s because of the " +"following error: %2$s. %3$sLearn more%4$s." +msgstr "" +"Попередня завантаження виникла помилка. Не вдалося зібрати посилання на %1$s" +" через таку помилку: %2$s. %3$sДокладніше%4$s." + +#: inc/classes/preload/class-homepage.php:96 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: %2$s. Security measures could be preventing access. " +"%3$sLearn more%4$s." +msgstr "" +"Попередня завантаження виникла помилка. %1$s недоступний через наступний код" +" відповіді: %2$s. Заходи безпеки можуть запобігати доступу. " +"%3$sДокладніше%4$s." + +#: inc/classes/preload/class-homepage.php:102 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: 404. Please make sure your homepage is accessible in your " +"browser. %2$sLearn more%3$s." +msgstr "" +"Попередня завантаження виникла помилка. %1$s недоступний через наступний код" +" відповіді: 404. Переконайтеся, що ваша домашня сторінка доступна у вашому " +"веб-переглядачі. %2$sДокладніше%3$s." + +#: inc/classes/preload/class-homepage.php:108 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: 500. Please check with your web host about server access. " +"%2$sLearn more%3$s." +msgstr "" +"Попередня завантаження виникла помилка. %1$s недоступний через наступний код" +" відповіді: 500. Будь ласка, зверніться до вашого веб-хосту про доступ до " +"сервера. %2$sДокладніше%3$s." + +#: inc/classes/preload/class-homepage.php:114 +#, php-format +msgid "" +"Preload encountered an error. Could not gather links on %1$s because it " +"returned the following response code: %2$s. %3$sLearn more%4$s." +msgstr "" +"Попередня завантаження виникла помилка. Не вдалося зібрати посилання на " +"%1$s, оскільки він повернув наступний код відповіді: %2$s. " +"%3$sДокладніше%4$s." + +#: inc/classes/preload/class-sitemap.php:138 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not gather links on %1$s because" +" of the following error: %2$s. %3$sLearn more%4$s." +msgstr "" +"У попередньому завантаженні мапи сайту сталася помилка. Не вдалося зібрати " +"посилання на%1$s через таку помилку:%2$s. %3$sДокладніше%4$s." + +#: inc/classes/preload/class-sitemap.php:153 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: %2$s. Security measures could be preventing access." +" %3$sLearn more%4$s." +msgstr "" +"У попередньому завантаженні мапи сайту сталася помилка. %1$s недоступний " +"через наступний код відповіді:%2$s. Заходи безпеки можуть запобігати " +"доступу. %3$sДокладніше%4$s." + +#: inc/classes/preload/class-sitemap.php:158 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: 404. Please make sure you entered the correct " +"sitemap URL and it is accessible in your browser. %2$sLearn more%3$s." +msgstr "" +"У попередньому завантаженні мапи сайту сталася помилка. %1$s недоступний " +"через наступний код відповіді: 404. Переконайтеся, що ви ввели правильний " +"URL-адресу мапи сайту, і він доступний у вашому браузері. " +"%2$sДокладніше%3$s." + +#: inc/classes/preload/class-sitemap.php:163 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: 500. Please check with your web host about server " +"access. %2$sLearn more%3$s." +msgstr "" +"У попередньому завантаженні мапи сайту сталася помилка. %1$s недоступний " +"через наступний код відповіді: 500. Будь ласка, зверніться до вашого веб-" +"хосту про доступ до сервера. %2$sДокладніше%3$s." + +#: inc/classes/preload/class-sitemap.php:168 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not gather links on %1$s because" +" it returned the following response code: %2$s. %3$sLearn more%4$s." +msgstr "" +"У попередньому завантаженні мапи сайту сталася помилка. Не вдалося зібрати " +"посилання на %1$s, оскільки він повернув наступний код відповіді:%2$s. " +"%3$sДокладніше%4$s." + +#: inc/classes/preload/class-sitemap.php:184 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not collect links from %1$s " +"because the file is empty. %2$sLearn more%3$s." +msgstr "" +"У попередньому завантаженні мапи сайту сталася помилка. Неможливо зібрати " +"посилання з %1$s, оскільки файл порожній. %2$sДокладніше%3$s." + +#: inc/classes/preload/class-sitemap.php:205 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not collect links from %1$s " +"because of an error during the XML sitemap parsing. %2$sLearn more%3$s." +msgstr "" +"У попередньому завантаженні мапи сайту сталася помилка. Не вдалося зібрати " +"посилання з %1$s через помилку під час синтаксичного аналізу XML. " +"%2$sДокладніше%3$s." + +#: inc/classes/subscriber/Cache/class-expired-cache-purge-subscriber.php:128 +msgid "WP Rocket Expired Cache Interval" +msgstr "Строк збереження кешу WP Rocket" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:267 +#, php-format +msgid "" +"You are using %1$s to serve WebP images so you do not need to enable this " +"option. If you prefer to have WP Rocket serve WebP for you instead, please " +"disable them from serving in %1$s. %2$sMore info%3$s" +msgid_plural "" +"You are using %1$s to serve WebP images so you do not need to enable this " +"option. If you prefer to have WP Rocket serve WebP for you instead, please " +"disable them from serving in %1$s. %2$sMore info%3$s" +msgstr[0] "" +"Ви використовуєте %1$s для надання зображень в WebP форматі, тож вам не " +"потрібно активувати цю опцію. Якщо ви хочете, щоб WP Rocket надав їх, будь " +"ласка, деактивуйте цей функціонал у %1$s. %2$sДетальніше%3$s" +msgstr[1] "" +"Ви використовуєте %1$s для надання зображень в WebP форматі, тож вам не " +"потрібно активувати цю опцію. Якщо ви хочете, щоб WP Rocket надав їх, будь " +"ласка, деактивуйте цей функціонал у %1$s. %2$sДетальніше%3$s" +msgstr[2] "" +"Ви використовуєте %1$s для надання зображень в WebP форматі, тож вам не " +"потрібно активувати цю опцію. Якщо ви хочете, щоб WP Rocket надав їх, будь " +"ласка, деактивуйте цей функціонал у %1$s. %2$sДетальніше%3$s" +msgstr[3] "" +"Ви використовуєте %1$s для надання зображень в WebP форматі, тож вам не " +"потрібно активувати цю опцію. Якщо ви хочете, щоб WP Rocket надав їх, будь " +"ласка, деактивуйте цей функціонал у %1$s. %2$sДетальніше%3$s" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:278 +msgid "WebP cache is disabled by filter." +msgstr "WebP кеш деактивовано фільтром." + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:288 +#: inc/classes/subscriber/Media/class-webp-subscriber.php:314 +#, php-format +msgid "" +"You are using %1$s to convert images to WebP. If you want WP Rocket to serve" +" them for you, activate this option. %2$sMore info%3$s" +msgid_plural "" +"You are using %1$s to convert images to WebP. If you want WP Rocket to serve" +" them for you, activate this option. %2$sMore info%3$s" +msgstr[0] "" +"Ви використовуєте %1$s для конвертації зображень в WebP формат. Якщо ви " +"хочете, щоб WP Rocket забезпечував їх, активуйте цю опцію. " +"%2$sДетальніше%3$s" +msgstr[1] "" +"Ви використовуєте %1$s для конвертації зображень в WebP формат. Якщо ви " +"хочете, щоб WP Rocket забезпечував їх, активуйте цю опцію. " +"%2$sДетальніше%3$s" +msgstr[2] "" +"Ви використовуєте %1$s для конвертації зображень в WebP формат. Якщо ви " +"хочете, щоб WP Rocket забезпечував їх, активуйте цю опцію. " +"%2$sДетальніше%3$s" +msgstr[3] "" +"Ви використовуєте %1$s для конвертації зображень в WebP формат. Якщо ви " +"хочете, щоб WP Rocket забезпечував їх, активуйте цю опцію. " +"%2$sДетальніше%3$s" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:300 +#: inc/classes/subscriber/Media/class-webp-subscriber.php:326 +#, php-format +msgid "" +"You are using %1$s to convert images to WebP. WP Rocket will create separate" +" cache files to serve your WebP images. %2$sMore info%3$s" +msgid_plural "" +"You are using %1$s to convert images to WebP. WP Rocket will create separate" +" cache files to serve your WebP images. %2$sMore info%3$s" +msgstr[0] "" +"Ви використовуєте %1$s для конвертації зображень в WebP формат. WP Rocket " +"створить окремий кеш, щоб забезпечити використання WebP зображень. " +"%2$sДетальніше%3$s" +msgstr[1] "" +"Ви використовуєте %1$s для конвертації зображень в WebP формат. WP Rocket " +"створить окремий кеш, щоб забезпечити використання WebP зображень. " +"%2$sДетальніше%3$s" +msgstr[2] "" +"Ви використовуєте %1$s для конвертації зображень в WebP формат. WP Rocket " +"створить окремий кеш, щоб забезпечити використання WebP зображень. " +"%2$sДетальніше%3$s" +msgstr[3] "" +"Ви використовуєте %1$s для конвертації зображень в WebP формат. WP Rocket " +"створить окремий кеш, щоб забезпечити використання WebP зображень. " +"%2$sДетальніше%3$s" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:347 +#, php-format +msgid "" +"You don’t seem to be using a method to create and serve WebP that we are " +"auto-compatible with. If you are not using WebP do not enable this option. " +"%1$sMore info%2$s" +msgstr "" +"Здається, ви не використовуєте метод створення та використання WebP " +"зображень, який міг би автоматично співпрацювати з WP Rocket. Якщо ви не " +"використовуєте WebP, не активуйте цю опцію. %1$sДетальніше%2$s" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:352 +msgid "We have not detected any compatible WebP plugin!" +msgstr "Ми не знайши жодого сумісного WebP плагіну!" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:355 +#, php-format +msgid "" +"If you activate this option WP Rocket will create separate cache files to " +"serve WebP images. Any WebP images you have on your site will be served from" +" these files to compatible browsers. If you don’t already have WebP images " +"on your site consider using %1$sImagify%3$s or another supported plugin. " +"%2$sMore info%3$s" +msgstr "" +"Якщо ви активуєте цю опцію, WP Rocket створить окремі файли кешу, щоб " +"забезпечити відображення картинок у WebP форматі. Усі зображення WebP, які є" +" на вашому сайті, будуть відображатися у браузерах, які підтримують цей " +"формат. Якщо у вас ще немає зображень у форматі WebP, ви можете їх " +"згенерувати за подомогою%1$sImagify%3$s або іншого сумісного плагіну. " +"%2$sДетальніше%3$s" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:367 +msgid "WP Rocket will create separate cache files to serve your WebP images." +msgstr "" +"WP Rocket створить окремий кеш, щоб забезпечити використання WebP зображень." + +#: inc/classes/subscriber/Optimization/class-critical-css-subscriber.php:77 +msgid "Critical CSS generation is currently running." +msgstr "Зараз іде генерація Критичного CSS." + +#: inc/classes/subscriber/Optimization/class-critical-css-subscriber.php:82 +#: inc/classes/subscriber/preload/class-preload-subscriber.php:210 +#, php-format +msgid "Go to the %1$sWP Rocket settings%2$s page to track progress." +msgstr "" +"Перейдіть на сторнінку %1$sНалаштування WP Rocket %2$s, щоб слідкувати за " +"прогресом. " + +#: inc/classes/subscriber/Optimization/class-critical-css-subscriber.php:185 +#, php-format +msgid "" +"Critical CSS generation is currently running: %1$d of %2$d page types " +"completed. (Refresh this page to view progress)" +msgstr "" +"Виконується створення критичних CSS: %1$d з %2$d типів сторінок уже " +"створено. (Оновити сторінку, щоб побачити процес)" + +#: inc/classes/subscriber/Optimization/class-critical-css-subscriber.php:236 +#, php-format +msgid "Critical CSS generation finished for %1$d of %2$d page types." +msgstr "Створення критичних CSS завершено для %1$d з %2$d типів сторінок." + +#: inc/classes/subscriber/Optimization/class-critical-css-subscriber.php:250 +msgid "Critical CSS generation encountered one or more errors." +msgstr "" +"Критичне CSS генерування зіткнулося з однією або декількома помилками." + +#: inc/classes/subscriber/Optimization/class-critical-css-subscriber.php:250 +msgid "Learn more." +msgstr "Вивчити більше." + +#: inc/classes/subscriber/Tools/class-cache-dir-size-check-subscriber.php:51 +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:87 +#: inc/classes/subscriber/class-facebook-tracking-cache-busting-subscriber.php:97 +#: inc/classes/subscriber/class-google-tracking-cache-busting-subscriber.php:154 +msgid "weekly" +msgstr "щотижня" + +#: inc/classes/subscriber/Tools/class-detect-missing-tags-subscriber.php:146 +#, php-format +msgid "" +"Failed to detect the following requirement in your theme: closing %1$s." +msgid_plural "" +"Failed to detect the following requirements in your theme: closing %1$s." +msgstr[0] "Не вдалося виявити наступну вимогу вашої теми: закриваємо %1$s." +msgstr[1] "Не вдалося виявити наступні вимоги вашої теми: закриваємо %1$s." +msgstr[2] "Не вдалося виявити наступні вимоги вашої теми: закриваємо %1$s." +msgstr[3] "Не вдалося виявити наступні вимоги вашої теми: закриваємо %1$s." + +#: inc/classes/subscriber/Tools/class-detect-missing-tags-subscriber.php:152 +#: inc/functions/cloudflare.php:40 inc/functions/cloudflare.php:64 +#: inc/functions/cloudflare.php:77 inc/functions/cloudflare.php:105 +#: inc/functions/cloudflare.php:122 inc/functions/cloudflare.php:479 +#: inc/functions/cloudflare.php:494 inc/functions/cloudflare.php:624 +#, php-format +msgid "Read the %1$sdocumentation%2$s for further guidance." +msgstr "Прочитайте %1$sдокументацію%2$s для подальших вказівок." + +#: inc/classes/subscriber/Tools/class-detect-missing-tags-subscriber.php:154 +msgid "" +"https://docs.wp-rocket.me/article/99-pages-not-cached-or-minify-cssjs-not-" +"working/?utm_source=wp_plugin&utm_medium=wp_rocket#theme" +msgstr "" +"https://docs.wp-rocket.me/article/99-pages-not-cached-or-minify-cssjs-not-" +"working/?utm_source=wp_plugin&utm_medium=wp_rocket#theme" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:93 +msgid "monthly" +msgstr "щомісячно" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:206 +msgid "Database optimization process is running" +msgstr "Процес оптимізації баз даних працює" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:237 +msgid "" +"Database optimization process is complete. Everything was already optimized!" +msgstr "Процес оптимізації баз даних завершено. Все вже було оптимізовано!" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:240 +msgid "" +"Database optimization process is complete. List of optimized items below:" +msgstr "" +"Процес оптимізації баз даних завершено. Список оптимізованих елементів " +"нижче:" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:248 +#, php-format +msgid "%1$d %2$s optimized." +msgstr "%1$d %2$s оптимізовано." + +#: inc/classes/subscriber/admin/Settings/class-page-subscriber.php:123 +#: inc/deprecated/deprecated.php:1788 +#: views/settings/page-sections/tools.php:33 +msgid "Tools" +msgstr "Інструменти" + +#: inc/classes/subscriber/admin/Settings/class-page-subscriber.php:124 +msgid "Import, Export, Rollback" +msgstr "Імпорт, Експорт, Відкат" + +#: inc/classes/subscriber/admin/Settings/class-page-subscriber.php:146 +#: views/settings/page-sections/imagify.php:14 +msgid "Image Optimization" +msgstr "Оптимізація зображень" + +#: inc/classes/subscriber/admin/Settings/class-page-subscriber.php:147 +msgid "Compress your images" +msgstr "Стиснути зображення" + +#: inc/classes/subscriber/admin/Settings/class-page-subscriber.php:165 +#: views/settings/page-sections/tutorials.php:45 +msgid "Tutorials" +msgstr "Підручники" + +#: inc/classes/subscriber/admin/Settings/class-page-subscriber.php:166 +msgid "Getting started and how to videos" +msgstr "Початок роботи та допоміжні відео" + +#: inc/classes/subscriber/preload/class-preload-subscriber.php:205 +msgid "Preload: WP Rocket has started preloading your website." +msgstr "Предзавантаження: WP Rocket почав збереження вашого сайту в кеш." + +#: inc/classes/subscriber/preload/class-preload-subscriber.php:249 +#, php-format +msgid "" +"Preload: %1$s uncached page has now been preloaded. (refresh to see " +"progress)" +msgid_plural "" +"Preload: %1$s uncached pages have now been preloaded. (refresh to see " +"progress)" +msgstr[0] "" +"Предзавантаження: %1$s незакешовану сторінку зараз було збережено (оновіть, " +"щоб бачити прогрес)" +msgstr[1] "" +"Предзавантаження: %1$s незакешованих сторінок зараз було збережено (оновіть," +" щоб бачити прогрес)" +msgstr[2] "" +"Предзавантаження: %1$s незакешованих сторінок зараз було збережено (оновіть," +" щоб бачити прогрес)" +msgstr[3] "" +"Предзавантаження: %1$s незакешованих сторінок зараз було збережено (оновіть," +" щоб бачити прогрес)" + +#: inc/classes/subscriber/preload/class-preload-subscriber.php:258 +msgid "The following error happened during gathering of the URLs to preload:" +msgid_plural "" +"The following errors happened during gathering of the URLs to preload:" +msgstr[0] "" +"В процесі збору урлів для Предзавантаження виникла наступна помилка:" +msgstr[1] "" +"В процесі збору урлів для Предзавантаження виникли наступні помилки:" +msgstr[2] "" +"В процесі збору урлів для Предзавантаження виникли наступні помилки:" +msgstr[3] "" +"В процесі збору урлів для Предзавантаження виникли наступні помилки:" + +#: inc/classes/subscriber/preload/class-preload-subscriber.php:310 +#, php-format +msgid "Preload complete: %d pages have been cached." +msgstr "Предзавантаження завершено: %d сторінок було закешовано." + +#: inc/classes/subscriber/preload/class-sitemap-preload-subscriber.php:115 +#, php-format +msgid "" +"%1$sSimpleXML PHP extension%2$s is not enabled on your server. Please " +"contact your host to enable it before running sitemap-based cache " +"preloading." +msgstr "" +"%1$sSimpleXML Розширення PHP%2$s не включено на вашому сервері. Зверніться " +"до свого хоста, щоб увімкнути його, перш ніж запускати попереднє " +"завантаження кешу на основі мапи сайту." + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:72 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"Please deactivate the following %s option which conflicts with WP Rocket " +"features:" +msgid_plural "" +"Please deactivate the following %s options which conflict with WP Rocket " +"features:" +msgstr[0] "" +"Будь ласка, деактивуйте таку %s опцію, яка конфліктує з функціоналом WP " +"Rocket:" +msgstr[1] "" +"Будь ласка, деактивуйте такі %s опції, які конфліктують з функціоналом WP " +"Rocket:" +msgstr[2] "" +"Будь ласка, деактивуйте такі %s опції, які конфліктують з функціоналом WP " +"Rocket:" +msgstr[3] "" +"Будь ласка, деактивуйте такі %s опції, які конфліктують з функціоналом WP " +"Rocket:" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:145 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sdisable emoji%3$s conflicts with WP Rockets %2$sdisable emoji%3$s" +msgstr "" +"%1$s %2$sвідключення emoji%3$s конфліктує з функцією WP Rocket " +"%2$sвідключення emoji%3$s" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:167 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sremove query strings%3$s conflicts with WP Rocket %2$sremove query " +"strings%3$s" +msgstr "" +"%1$s %2$sвидалення параметрів запиту %3$sконфліктує з функцією WP Rocket " +"%2$s видалення параметрів запиту %3$s" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:203 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sGZIP compression%3$s conflicts with WP Rocket %2$sGZIP " +"compression%3$s" +msgstr "" +"%1$s %2$sGZIP-компресія%3$s конфліктує з WP Rocket %2$sGZIP-компресією%3$s" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:239 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sbrowser caching%3$s conflicts with WP Rocket %2$sbrowser " +"caching%3$s" +msgstr "" +"%1$s %2$s браузерне кешування %3$s конфліктує з WP Rocket %2$s браузерним " +"кешуванням %3$s" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:271 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$spage caching%3$s conflicts with WP Rocket %2$spage caching%3$s" +msgstr "" +"%1$s %2$s кешування сторінок %3$s конфліктує з WP Rocket %2$s кешуванням " +"сторінок %3$s" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:305 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sasset optimization%3$s conflicts with WP Rocket %2$sfile " +"optimization%3$s" +msgstr "" +"%1$s %2$s оптимізація ресурсів %3$s конфліктує з Оптимізацією файлів %2$s WP" +" Rocket %3$s" + +#: inc/classes/subscriber/third-party/plugins/class-smush-subscriber.php:66 +msgid "Smush" +msgstr "Smush" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:122 +#, php-format +msgid "Sucuri cache purge error: %s" +msgstr "Помилка видалення кешу Sucuri: %s" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:127 +msgid "" +"The Sucuri cache is being cleared. Note that it may take up to two minutes " +"for it to be fully flushed." +msgstr "" +"Кеш Sucuri очищається. Зверніть увагу, що для заповнення може знадобитися до" +" двох хвилин." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:240 +msgid "Sucuri firewall API key was not found." +msgstr "Ключ API брандмауера Sucuri не знайдено." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:249 +msgid "Sucuri firewall API key is invalid." +msgstr "Ключ API брандмауера Sucuri недійсний." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:301 +msgid "Error when contacting Sucuri firewall API." +msgstr "Помилка під час звернення до API брандмауера Sucuri." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:311 +#, php-format +msgid "Error when contacting Sucuri firewall API. Error message was: %s" +msgstr "" +"Помилка під час звернення до API брандмауера Sucuri. Повідомлення про " +"помилку було: %s" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:322 +msgid "Could not get a response from the Sucuri firewall API." +msgstr "Не вдалося отримати відповідь від API брандмауера Sucuri." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:333 +msgid "Got an invalid response from the Sucuri firewall API." +msgstr "Отримано недійсний відповідь від API брандмауера Sucuri." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:343 +msgid "The Sucuri firewall API returned an unknown error." +msgstr "API брандмауера Sucuri повернув невідома помилка." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:346 +#, php-format +msgid "The Sucuri firewall API returned the following error: %s" +msgid_plural "The Sucuri firewall API returned the following errors: %s" +msgstr[0] "API файєрволлу Sucuri видав таку помилку: %s" +msgstr[1] "API файєрволлу Sucuri видав такі помилки: %s" +msgstr[2] "API файєрволлу Sucuri видав такі помилки: %s" +msgstr[3] "API файєрволлу Sucuri видав такі помилки: %s" + +#: inc/classes/traits/trait-updater-api-tools.php:53 +#: inc/deprecated/3.3.php:761 inc/deprecated/3.3.php:770 +#, php-format +msgid "" +"An unexpected error occurred. Something may be wrong with WP-Rocket.me or " +"this server’s configuration. If you continue to have problems, contact support." +msgstr "" +"Виникла несподівана помилка. Щось може бути неправильним з WP-Rocket.me або " +"конфігурацією цього сервера. Якщо у вас виникнуть проблеми, зверніться до служби підтримки ." + +#: inc/common/admin-bar.php:125 inc/common/admin-bar.php:312 +#: inc/functions/i18n.php:40 inc/functions/i18n.php:49 +msgid "All languages" +msgstr "Всі мови" + +#: inc/common/admin-bar.php:152 +msgid "Clear this post" +msgstr "Очистити цей запис" + +#: inc/common/admin-bar.php:166 +msgid "Purge this URL" +msgstr "Очистіть цю URL-адресу" + +#: inc/common/admin-bar.php:192 +msgid "Purge OPcache" +msgstr "Очистити OPcache" + +#: inc/common/admin-bar.php:211 +msgid "Regenerate Critical Path CSS" +msgstr "Перестворити критичні CSS" + +#: inc/common/admin-bar.php:229 +msgid "Clear Cloudflare cache" +msgstr "Очистити Cloudflare кеш" + +#: inc/common/admin-bar.php:247 +msgid "Purge Sucuri cache" +msgstr "Purge Sucuri кеш" + +#: inc/common/admin-bar.php:270 inc/common/admin-bar.php:324 +#: views/settings/page-sections/dashboard.php:137 +msgid "Preload cache" +msgstr "Презавантаження кеш" + +#: inc/common/admin-bar.php:340 views/settings/partials/documentation.php:14 +msgid "Documentation" +msgstr "Документація" + +#: inc/common/purge.php:558 +msgid "OPcache purge failed." +msgstr "Не вдалося оновити OPcache кеш." + +#: inc/common/purge.php:563 +msgid "OPcache successfully purged" +msgstr "OPcache успішно оновлено" + +#: inc/common/purge.php:595 +#, php-format +msgid "WP Rocket: %s" +msgstr "WP Rocket: %s" + +#: inc/common/purge.php:600 +msgid "WP Rocket: Cloudflare cache successfully purged." +msgstr "WP Rocket: кеш Cloudflare успішно очищено." + +#: inc/deprecated/3.2.php:52 views/settings/page-sections/imagify.php:36 +msgid "Activate Imagify" +msgstr "Активувати Imagify" + +#: inc/deprecated/3.2.php:52 +msgid "Install Imagify for Free" +msgstr "Установіть Imagify безкоштовно" + +#: inc/deprecated/3.2.php:67 +msgid "" +"Speed up your website and boost your SEO by reducing image file sizes " +"without losing quality with Imagify." +msgstr "" +"Прискорити ваш сайт і збільшити ваш SEO за рахунок зменшення розмірів файлів" +" зображень без втрати якості за допомогою Imagify." + +#: inc/deprecated/3.2.php:72 +msgid "More details" +msgstr "Детальніше" + +#: inc/deprecated/3.2.php:228 +#, php-format +msgid "Sitemap preload: %d pages have been cached." +msgstr "Попереднє завантаження мапи сайту: %d сторінок було закешовано." + +#: inc/deprecated/3.2.php:261 +#, php-format +msgid "" +"Sitemap preload: %d uncached pages have now been preloaded. (refresh to see " +"progress)" +msgstr "" +"Попереднє завантаження Sitemap: попередньо закешовано %d сторінок. (оновити," +" щоб побачити прогрес)" + +#: inc/deprecated/3.4.php:18 +msgid "Choose a domain from the list" +msgstr "Виберіть домен зі списку" + +#: inc/deprecated/3.4.php:31 +msgid "No domain available in your Cloudflare account" +msgstr "Домен недоступний у вашому Cloudflare записі" + +#: inc/deprecated/deprecated.php:242 +msgid "JS files with Deferred Loading JavaScript" +msgstr "JS файли з Відкладеного завантаження JavaScript" + +#: inc/deprecated/deprecated.php:295 +msgid "Add URL" +msgstr "Додати URL" + +#: inc/deprecated/deprecated.php:1279 views/settings/fields/import-form.php:22 +msgid "" +"Before you can upload your import file, you will need to fix the following " +"error:" +msgstr "" +"Перш ніж ви зможете завантажити файл імпорту, необхідно буде виправити " +"наступну помилку:" + +#: inc/deprecated/deprecated.php:1290 views/settings/fields/import-form.php:35 +#, php-format +msgid "Choose a file from your computer (maximum size: %s)" +msgstr "Виберіть файл з вашого пк (максимальний розмір: %s)" + +#: inc/deprecated/deprecated.php:1387 +msgid "Your Cloudflare credentials are valid." +msgstr "Ваші облікові дані Cloudflare дійсні." + +#: inc/deprecated/deprecated.php:1391 +msgid "Your Cloudflare credentials are invalid!" +msgstr "Ваші облікові дані Cloudflare недійсні!" + +#: inc/deprecated/deprecated.php:1455 +msgid "Save and optimize" +msgstr "Зберегти та оптимізувати" + +#: inc/deprecated/deprecated.php:1455 +#: views/settings/page-sections/database.php:28 +msgid "Optimize" +msgstr "Оптимізувати" + +#: inc/deprecated/deprecated.php:1466 inc/deprecated/deprecated.php:1668 +msgctxt "screen-reader-text" +msgid "Note:" +msgstr "Примітка:" + +#: inc/deprecated/deprecated.php:1472 +msgctxt "screen-reader-text" +msgid "Performance tip:" +msgstr "Продуктивність поради:" + +#: inc/deprecated/deprecated.php:1478 +msgctxt "screen-reader-text" +msgid "Third-party feature detected:" +msgstr "Виявлено сторонній плагін:" + +#: inc/deprecated/deprecated.php:1490 inc/deprecated/deprecated.php:1674 +msgctxt "screen-reader-text" +msgid "Warning:" +msgstr "Увага:" + +#: inc/deprecated/deprecated.php:1503 +msgctxt "button text" +msgid "Download settings" +msgstr "Завантажити налаштування" + +#: inc/deprecated/deprecated.php:1533 +msgid "Replace site's hostname with:" +msgstr "Замінити ім'я хосту сайту на:" + +#: inc/deprecated/deprecated.php:1552 inc/deprecated/deprecated.php:1589 +#: inc/deprecated/deprecated.php:1617 views/settings/fields/cnames.php:32 +#: views/settings/fields/cnames.php:63 views/settings/fields/cnames.php:93 +msgid "reserved for" +msgstr "зарезервовано для" + +#: inc/deprecated/deprecated.php:1554 inc/deprecated/deprecated.php:1591 +#: inc/deprecated/deprecated.php:1619 views/settings/fields/cnames.php:35 +#: views/settings/fields/cnames.php:66 views/settings/fields/cnames.php:96 +msgid "All files" +msgstr "Усі файли" + +#: inc/deprecated/deprecated.php:1566 inc/deprecated/deprecated.php:1596 +#: inc/deprecated/deprecated.php:1624 views/settings/fields/cnames.php:47 +#: views/settings/fields/cnames.php:78 views/settings/fields/cnames.php:108 +msgid "Images" +msgstr "Зображення" + +#: inc/deprecated/deprecated.php:1637 views/settings/fields/cnames.php:119 +msgid "Add CNAME" +msgstr "Додати CNAME" + +#: inc/deprecated/deprecated.php:1708 views/settings/partials/sidebar.php:15 +msgid "Watch the video" +msgstr "Переглянути відео" + +#: inc/deprecated/deprecated.php:1773 +msgid "Basic" +msgstr "Основний" + +#: inc/deprecated/deprecated.php:1774 +msgid "Static Files" +msgstr "Статичні файли" + +#: inc/deprecated/deprecated.php:1776 +msgid "Advanced" +msgstr "Розширений" + +#: inc/deprecated/deprecated.php:1946 +#, php-format +msgid "" +"%1$s %2$s requires at least PHP %3$s to function properly. To use this " +"version, please ask your web host how to upgrade your server to PHP %3$s or " +"higher. If you are not able to upgrade, you can rollback to the previous " +"version by using the button below." +msgstr "" +"%1$s %2$s треба наявності версії PHP не нижче %3$s Щоб скористатися цією " +"функцією, зверніться до хостера з проханням підвищити версію PHP до %3$s і " +"вище. В іншому випадку, використовуйте стару версію плагіна." + +#: inc/functions/admin.php:23 +msgid "" +"There seems to be an issue validating your license. Please see the error " +"message below." +msgid_plural "" +"There seems to be an issue validating your license. You can see the error " +"messages below." +msgstr[0] "" +"Здається, виникла проблема з валідацією вашої ліцензії. Помилку зазначено " +"нижче." +msgstr[1] "" +"Здається, виникла проблема з валідацією вашої ліцензії. Помилки зазначені " +"нижче." +msgstr[2] "" +"Здається, виникла проблема з валідацією вашої ліцензії. Помилки зазначені " +"нижче." +msgstr[3] "" +"Здається, виникла проблема з валідацією вашої ліцензії. Помилки зазначені " +"нижче." + +#: inc/functions/admin.php:360 +msgid "Server type:" +msgstr "Тип сервера:" + +#: inc/functions/admin.php:369 +msgid "PHP version number:" +msgstr "Номер версії PHP:" + +#: inc/functions/admin.php:378 +msgid "WordPress version number:" +msgstr "Номер версії WordPress:" + +#: inc/functions/admin.php:387 +msgid "WordPress multisite:" +msgstr "WordPress мультисайт:" + +#: inc/functions/admin.php:396 +msgid "Current theme:" +msgstr "Поточна тема:" + +#: inc/functions/admin.php:405 +msgid "Current site language:" +msgstr "Мова поточного сайту:" + +#: inc/functions/admin.php:414 +msgid "Active plugins:" +msgstr "Активні плагіни:" + +#: inc/functions/admin.php:417 +msgid "Plugin names of all active plugins" +msgstr "Імена плагінів всіх активних плагінів" + +#: inc/functions/admin.php:423 +msgid "Anonymized WP Rocket settings:" +msgstr "Анонімні WP Rocket опції:" + +#: inc/functions/admin.php:426 +msgid "Which WP Rocket settings are active" +msgstr "Які настройки WP Rocket є активні" + +#: inc/functions/cloudflare.php:19 inc/functions/cloudflare.php:142 +msgid "" +"Curl is disabled on your server. Please ask your host to enable it. This is " +"required for the Cloudflare Add-on to work correctly." +msgstr "" +"Curl деактивовано на вашому сервері. Будь ласка, попросіть вашого хостера " +"ввімкнути його. Це потрібно, щоб Додаток Cloudflare працював коректно." + +#: inc/functions/cloudflare.php:27 +#, php-format +msgid "" +"Cloudflare email, API key and Zone ID are not set. Read the " +"%1$sdocumentation%2$s for further guidance." +msgstr "" +"Імейл, зареєстрований в Cloudflare, API key та Zone ID не вказані. Читайте " +"%1$sдокументацію%2$s для подальших інструкцій." + +#: inc/functions/cloudflare.php:29 inc/functions/cloudflare.php:42 +#: inc/functions/cloudflare.php:66 inc/functions/cloudflare.php:79 +#: inc/functions/cloudflare.php:107 inc/functions/cloudflare.php:124 +#: inc/functions/cloudflare.php:155 inc/functions/cloudflare.php:481 +#: inc/functions/cloudflare.php:496 inc/functions/cloudflare.php:626 +msgid "" +"https://docs.wp-rocket.me/article/18-using-wp-rocket-with-" +"cloudflare/?utm_source=wp_plugin&utm_medium=wp_rocket#add-on" +msgstr "" +"https://docs.wp-rocket.me/article/18-using-wp-rocket-with-" +"cloudflare/?utm_source=wp_plugin&utm_medium=wp_rocket#add-on" + +#: inc/functions/cloudflare.php:36 +msgid "Missing Cloudflare Zone ID." +msgstr "Не вказано Cloudflare Zone ID." + +#: inc/functions/cloudflare.php:60 inc/functions/cloudflare.php:118 +#: inc/functions/cloudflare.php:490 inc/functions/cloudflare.php:620 +msgid "Incorrect Cloudflare email address or API key." +msgstr "Невірний імейл або API ключ Cloudflare." + +#: inc/functions/cloudflare.php:73 inc/functions/cloudflare.php:475 +msgid "Incorrect Cloudflare Zone ID." +msgstr "Невірне значення Cloudflare Zone ID." + +#: inc/functions/cloudflare.php:101 +msgid "It looks like your domain is not set up on Cloudflare." +msgstr "Здається, що ваш домен не налаштовано у Cloudflare." + +#: inc/functions/cloudflare.php:153 +#, php-format +msgid "" +"Cloudflare email and API key are not set. Read the %1$sdocumentation%2$s for" +" further guidance." +msgstr "" +"Імейл, зареєстрований в Cloudflare, API key та Zone ID не вказані. Читайте " +"%1$sдокументацію%2$s для подальших інструкцій." + +#: inc/functions/cloudflare.php:218 +msgid "Connection to Cloudflare failed" +msgstr "Не вдалося підключитися до Cloudflare" + +#: inc/functions/options.php:535 inc/functions/options.php:574 +msgid "" +"License validation failed. Our server could not resolve the request from " +"your website." +msgstr "" +"Помилка перевірки ліцензії. Наш сервер не може вирішити запит з вашого веб-" +"сайту." + +#: inc/functions/options.php:535 inc/functions/options.php:574 +#, php-format +msgid "" +"Try clicking %1$sSave Changes%2$s below. If the error persists, follow " +"%3$sthis guide%4$s." +msgstr "" +"Спробуйте натиснути%1$sSave Changes %2$s нижче. Якщо помилка не зникає, " +"перейдіть %3$sв цю інструкцію%4$s." + +#: inc/functions/options.php:551 +msgid "" +"License validation failed. You may be using a nulled version of the plugin. " +"Please do the following:" +msgstr "" +"Помилка перевірки ліцензії. Можливо, ви використовуєте нульову версію " +"плагіна. Будь ласка, виконайте такі дії:" + +#: inc/functions/options.php:551 inc/functions/options.php:593 +#, php-format +msgid "Login to your WP Rocket %1$saccount%2$s" +msgstr "Увійдіть у свій WP Rocket%1$sаккаунт%2$s" + +#: inc/functions/options.php:551 inc/functions/options.php:593 +msgid "Download the zip file" +msgstr "Завантажте zip файл" + +#: inc/functions/options.php:551 inc/functions/options.php:593 +msgid "Reinstall" +msgstr "Перевстановити" + +#: inc/functions/options.php:551 +#, php-format +msgid "" +"If you do not have a WP Rocket account, please %1$spurchase a license%2$s." +msgstr "" +"Якщо у вас немає облікового запису WP Rocket, будь ласка,%1$sкупіть " +"ліцензію%2$s." + +#: inc/functions/options.php:559 +msgid "" +"License validation failed. This user account does not exist in our database." +msgstr "" +"Помилка перевірки ліцензії. Цей обліковий запис користувача не існує в нашій" +" базі даних." + +#: inc/functions/options.php:559 +msgid "To resolve, please contact support." +msgstr "Щоб вирішити, зверніться до служби підтримки." + +#: inc/functions/options.php:567 +msgid "License validation failed. This user account is blacklisted." +msgstr "" +"Помилка перевірки ліцензії. Цей обліковий запис користувача належить до " +"чорного списку." + +#: inc/functions/options.php:567 +#, php-format +msgid "Please see %1$sthis guide%2$s for more info." +msgstr "Дивіться %1$sце керівництво%2$s для отримання додаткової інформації." + +#: inc/functions/options.php:587 +msgid "Your license is not valid." +msgstr "Ваша ліцензія недійсна." + +#: inc/functions/options.php:587 +#, php-format +msgid "Make sure you have an active %1$sWP Rocket license%2$s." +msgstr "Переконайтеся, що у вас є активна %1$sWP Rocket ліцензія%2$s." + +#: inc/functions/options.php:589 +msgid "You have added as many sites as your current license allows." +msgstr "Ви додали стільки сайтів, скільки дозволяє поточна ліцензія." + +#: inc/functions/options.php:589 +#, php-format +msgid "" +"Upgrade your %1$saccount%2$s or %3$stransfer your license%2$s to this " +"domain." +msgstr "" +"Оновлення %1$sаккаунту%2$s або %3$sтрансфер ліцензії%2$s до цього домену." + +#: inc/functions/options.php:591 +msgid "This website is not allowed." +msgstr "Цей веб-сайт заборонений." + +#: inc/functions/options.php:591 +#, php-format +msgid "Please %1$scontact support%2$s." +msgstr "Будь ласка,%1$sзверніться в службу підтримки%2$s." + +#: inc/functions/options.php:593 +msgid "This license key is not recognized." +msgstr "Цей ліцензійний ключ не розпізнається." + +#: inc/functions/options.php:593 +#, php-format +msgid "If the issue persists, please %1$scontact support%2$s." +msgstr "Якщо проблема не зникне,%1$sзверніться до служби підтримки%2$s." + +#: inc/functions/options.php:599 +#, php-format +msgid "License validation failed: %s" +msgstr "Помилка перевірки ліцензії: %s" + +#: inc/vendors/classes/class-imagify-partner.php:531 +msgid "Plugin installed successfully." +msgstr "Плагін встановлений успішно." + +#: inc/vendors/classes/class-imagify-partner.php:532 +msgid "Sorry, you are not allowed to install plugins on this site." +msgstr "На жаль, вам не дозволяється встановлювати плагіни на цьому сайті." + +#: inc/vendors/classes/class-imagify-partner.php:533 +msgid "Sorry, you are not allowed to do that." +msgstr "На жаль, вам не дозволено це робити." + +#: inc/vendors/classes/class-imagify-partner.php:534 +msgid "Plugin install failed." +msgstr "Не вдалося встановити плагін." + +#: inc/vendors/classes/class-imagify-partner.php:535 +msgid "Go back" +msgstr "Повернутися назад" + +#: views/deactivation-intent/form.php:21 +msgid "Return" +msgstr "Повернутися" + +#: views/deactivation-intent/form.php:22 +msgid "WP Rocket feedback" +msgstr "WP Rocket зворотній зв'язок" + +#: views/deactivation-intent/form.php:24 +msgid "Close" +msgstr "Закрити" + +#: views/deactivation-intent/form.php:28 +msgid "May we have a little info about why you are deactivating?" +msgstr "Чи можемо ми мати трохи інформації про те, чому ви деактивуєтеся?" + +#: views/deactivation-intent/form.php:32 +msgid "" +"It is a temporary deactivation. I am just debugging an " +"issue." +msgstr "" +"Це тимчасове відключення Я проводжу дебаггінг проблеми." + +#: views/deactivation-intent/form.php:36 +msgid "The plugin broke my layout or some functionality." +msgstr "Плагін зламав мій макет або деяку функціональність." + +#: views/deactivation-intent/form.php:40 +msgid "My PageSpeed or GTMetrix score did not improve." +msgstr "Мій рейтинг PageSpeed або GTMetrix не покращився." + +#: views/deactivation-intent/form.php:44 +msgid "I did not notice a difference in loading time." +msgstr "Я не помітив різниці в часу завантаження." + +#: views/deactivation-intent/form.php:48 +msgid "The plugin is too complicated to configure." +msgstr "Додаток занадто складний для налаштування." + +#: views/deactivation-intent/form.php:52 +msgid "My host already has its own caching system." +msgstr "У мого хоста вже є своя система кешування." + +#: views/deactivation-intent/form.php:54 +msgid "What is the name of your web host?" +msgstr "Яка назва вашого веб-хостингу?" + +#: views/deactivation-intent/form.php:59 +msgid "Other" +msgstr "Інші" + +#: views/deactivation-intent/form.php:61 +msgid "" +"Let us know why you are deactivating WP Rocket so we can improve the plugin" +msgstr "" +"Дайте нам знати, чому ви дезактивуєте WP Rocket, щоб ми могли вдосконалити " +"плагін" + +#: views/deactivation-intent/form.php:69 +msgid "The plugin broke my layout or some functionality" +msgstr "Плагін зламав мою розкладку або деяку функціональність" + +#: views/deactivation-intent/form.php:70 +msgid "" +"This type of issue can usually be fixed by deactivating some options in WP " +"Rocket." +msgstr "" +"Цей тип випуску зазвичай може бути виправлений, вимкнувши деякі опції у WP " +"Rocket." + +#: views/deactivation-intent/form.php:71 +msgid "" +"Click \"Apply Safe Mode\" to quickly disable LazyLoad, File Optimization, " +"Embeds and CDN options. Then check your site to see if the issue has " +"resolved." +msgstr "" +"Натисніть кнопку \"Застосувати Безпечний Режим\", щоб швидко вимкнути опції " +"\"LazyLoad\", \"Оптимізацію файлів\", Embeds та CDN. Потім перевірте свій " +"сайт, щоб перевірити, чи вирішено проблему." + +#: views/deactivation-intent/form.php:73 +msgid "Apply safe mode" +msgstr "Ввімкнути безпечний режим" + +#: views/deactivation-intent/form.php:76 +msgid "Safe mode applied." +msgstr "Застосовано Безпечний режим." + +#: views/deactivation-intent/form.php:77 +msgid "Review your site in a private/logged out browser window." +msgstr "Перегляньте свій сайт у вікні приватного/вихідного веб-переглядача." + +#: views/deactivation-intent/form.php:79 +msgid "" +"Is the issue fixed? Now you can reactivate options one at a time to " +"determine which one caused the problem. More info" +msgstr "" +"Чи виправлена проблема? Тепер ви можете повторно активувати параметри по " +"черзі, щоб визначити, який з них викликав проблему. Детальніше" + +#: views/deactivation-intent/form.php:82 +msgid "My PageSpeed or GT Metrix score did not improve" +msgstr "Мій рейтинг PageSpeed або GT Metrix не покращився" + +#: views/deactivation-intent/form.php:83 +msgid "" +"WP Rocket makes your site faster. The PageSpeed grade or GTMetrix score are " +"not indicators of speed. Neither your real visitors, nor Google will ever " +"see your website’s “grade”. Speed is the only metric that matters for SEO " +"and conversions." +msgstr "" +"WP Rocket робить ваш сайт швидшим. Рейтинг PageSpeed або оцінка GTMetrix не " +"є показниками швидкості. Ні ваші реальні відвідувачі, ні Google ніколи не " +"побачать “оцінку“ вашого веб-сайту. Швидкість є єдиним показником, який має " +"значення для SEO та переходів." + +#: views/deactivation-intent/form.php:84 +msgid "Yoast, the expert on all things related to SEO for WordPress states:" +msgstr "" +"Yoast, експерт з усіх речей, пов'язаних із SEO для WordPress, говорить:" + +#: views/deactivation-intent/form.php:85 +msgid "" +"[Google] just looks at how fast your website loads for users, so you don’t " +"have to obsess over that specific score. You have to make sure your website " +"is as fast as you can get it." +msgstr "" +"[Google] просто розглядає, наскільки швидко ваш веб-сайт завантажується для " +"користувачів, так що вам не потрібно перейматися цим конкретним балом. Ви " +"повинні переконатися, що ваш веб-сайт так само швидкий, як і його можна " +"відкрити." + +#: views/deactivation-intent/form.php:88 +msgid "" +"How to measure the load time of your site:
      https" +"://wp-rocket.me/blog/correctly-measure-websites-page-load-time/" +msgstr "" +"Як виміряти час завантаження вашого сайту:
      https" +"://wp-rocket.me/blog/correctly-measure-websites-page-load-time/" + +#: views/deactivation-intent/form.php:89 +msgid "" +"Why you should not be chasing a PageSpeed score:
      https://wp-rocket.me/blog/the-truth-about-google-" +"pagespeed-insights/" +msgstr "" +"Чому ви не повинні переслідувати показник PageSpeed:
      https://wp-rocket.me/blog/the-truth-about-google-" +"pagespeed-insights/" + +#: views/deactivation-intent/form.php:92 +msgid "I did not notice a difference in loading time" +msgstr "Я не помітив різниці в часу завантаження" + +#: views/deactivation-intent/form.php:93 +msgid "" +"Make sure you look at your site while logged out to see the fast, cached " +"pages!" +msgstr "" +"Переконайтеся, що ви переглянули свій сайт під час виходу, щоб побачити " +"швидкі, кешовані сторінки!" + +#: views/deactivation-intent/form.php:94 +msgid "" +"The best way to see the improvement WP Rocket provides is to perform speed " +"tests. Follow this guide to correctly measure the load time of your " +"website:
      https://wp-rocket.me/blog/correctly-measure-websites-page-" +"load-time/" +msgstr "" +"Кращий спосіб побачити поліпшення WP Rocket забезпечує виконання тестів " +"швидкості. Щоб правильно виміряти час завантаження веб-сайту, дотримуйтеся " +"наведеного нижче посібника.
      https" +"://wp-rocket.me/blog/correctly-measure-websites-page-load-time/" + +#: views/deactivation-intent/form.php:97 +msgid "The plugin is too complicated to configure" +msgstr "Додаток занадто складний для налаштування" + +#: views/deactivation-intent/form.php:98 +msgid "We are sorry to hear you are finding it difficult to use WP Rocket." +msgstr "Нам дуже шкода, що вам важко використовувати WP Rocket." + +#: views/deactivation-intent/form.php:99 +#, php-format +msgid "" +"WP Rocket is the only caching plugin that provides 80% of best practices in " +"speed optimization, by default. That means you do not have to do anything " +"besides activate WP Rocket and your site will already be faster!" +msgstr "" +"WP Rocket - єдиний плагін кешування, який за замовчуванням забезпечує 80% " +"кращих практик оптимізації швидкості. Це означає, що вам не потрібно нічого " +"робити, окрім активації WP Rocket і ваш сайт буде вже швидше!" + +#: views/deactivation-intent/form.php:100 +msgid "" +"The additional options are not required for a fast site, they are for fine-" +"tuning." +msgstr "" +"Додаткові опції не потрібні для швидкого сайту, вони призначені для тонкої " +"настройки." + +#: views/deactivation-intent/form.php:101 +msgid "" +"To see the benefit WP Rocket is already providing, measure the speed of your" +" site using a tool like Pingdom:
      https" +"://wp-rocket.me/blog/correctly-measure-websites-page-load-time/" +msgstr "" +"Щоб побачити переваги, які WP Rocket вже надає, виміряйте швидкість вашого " +"сайту за допомогою інструмента, як-от Pingdom:
      https" +"://wp-rocket.me/blog/correctly-measure-websites-page-load-time/" + +#: views/deactivation-intent/form.php:106 +msgid "Send & Deactivate" +msgstr "Надіслати & Деактивувати" + +#: views/deactivation-intent/form.php:107 +msgid "Cancel" +msgstr "Скасувати" + +#: views/deactivation-intent/form.php:109 +msgid "Skip & Deactivate" +msgstr "Пропустити та деактивувати" + +#: views/settings/fields/cache-lifespan.php:26 +msgid "Clear cache after" +msgstr "Очистити кеш після" + +#: views/settings/fields/cnames.php:49 views/settings/fields/cnames.php:80 +#: views/settings/fields/cnames.php:110 +msgid "CSS & JavaScript" +msgstr "CSS & JavaScript" + +#: views/settings/fields/cnames.php:50 views/settings/fields/cnames.php:81 +#: views/settings/fields/cnames.php:111 +msgid "JavaScript" +msgstr "JavaScript" + +#: views/settings/fields/cnames.php:51 views/settings/fields/cnames.php:82 +#: views/settings/fields/cnames.php:112 +msgid "CSS" +msgstr "CSS" + +#: views/settings/fields/import-form.php:29 +msgid "Import settings" +msgstr "Імпорт опції" + +#: views/settings/fields/one-click-addon.php:40 +#: views/settings/fields/rocket-addon.php:31 +#: views/settings/fields/sliding-checkbox.php:25 views/settings/page.php:55 +msgctxt "Active state of checkbox" +msgid "On" +msgstr "Так" + +#: views/settings/fields/one-click-addon.php:41 +#: views/settings/fields/rocket-addon.php:32 +#: views/settings/fields/sliding-checkbox.php:26 views/settings/page.php:56 +msgctxt "Inactive state of checkbox" +msgid "Off" +msgstr "Ні" + +#: views/settings/fields/one-click-addon.php:42 +#: views/settings/fields/rocket-addon.php:33 +msgid "Add-on status" +msgstr "Стан Додатку" + +#: views/settings/fields/rocket-addon.php:56 +msgid "Modify options" +msgstr "Змінити параметри" + +#: views/settings/page-sections/cloudflare.php:27 +msgid "Cloudflare Cache" +msgstr "Cloudflare Кеш" + +#: views/settings/page-sections/cloudflare.php:35 +#: views/settings/page-sections/sucuri.php:36 +#, php-format +msgid "Purges cached resources for your website. %s" +msgstr "Очищає кешовані ресурси для вашого веб-сайту. %s" + +#: views/settings/page-sections/cloudflare.php:36 +msgid "https://support.cloudflare.com/hc/en-us/articles/200169246" +msgstr "https://support.cloudflare.com/hc/en-us/articles/200169246" + +#: views/settings/page-sections/cloudflare.php:36 +#: views/settings/page-sections/sucuri.php:37 +msgid "Learn more" +msgstr "Дізнатись більше" + +#: views/settings/page-sections/cloudflare.php:45 +msgid "Clear all Cloudflare cache files" +msgstr "Видалити всі файли Cloudflare кешу" + +#: views/settings/page-sections/dashboard.php:38 +msgid "Congratulations!" +msgstr "Вітаю!" + +#: views/settings/page-sections/dashboard.php:40 +msgid "WP Rocket is now activated and already working for you." +msgstr "WP Rocket тепер активована і вже працює для вас." + +#: views/settings/page-sections/dashboard.php:42 +msgid "Your website should be loading faster now!" +msgstr "Ваш веб-сайт зараз завантажується швидше!" + +#: views/settings/page-sections/dashboard.php:44 +#, php-format +msgid "" +"To guarantee fast websites, WP Rocket applies 80% of web performance best " +"practices." +msgstr "" +"Щоб гарантувати швидкий веб-сайт, WP Rocket застосовує 80% oнайкращих " +"практик роботи в Інтернеті." + +#: views/settings/page-sections/dashboard.php:44 +msgid "" +"We also enable options that provide immediate benefits to your website." +msgstr "" +"Ми також активуємо варіанти, які надають негайні вигоди для вашого веб-" +"сайту." + +#: views/settings/page-sections/dashboard.php:45 +msgid "Continue to the options to further optimize your site!" +msgstr "Перейдіть до опцій для подальшої оптимізації свого сайту!" + +#: views/settings/page-sections/dashboard.php:55 +msgid "My Account" +msgstr "Мій аккаунт" + +#: views/settings/page-sections/dashboard.php:61 +msgid "Refresh info" +msgstr "Оновити інфо" + +#: views/settings/page-sections/dashboard.php:75 +msgid "Expiration Date" +msgstr "Дата закінчення" + +#: views/settings/page-sections/dashboard.php:84 +msgid "View my account" +msgstr "Переглянути Мій аккаунт" + +#: views/settings/page-sections/dashboard.php:104 +msgid "Quick Actions" +msgstr "Швидкі дії" + +#: views/settings/page-sections/dashboard.php:111 +msgid "Remove all cached files" +msgstr "Видалити всі кешовані файли" + +#: views/settings/page-sections/dashboard.php:131 +msgid "Start cache preloading" +msgstr "Почати завантаження кешу" + +#: views/settings/page-sections/dashboard.php:156 +msgid "Purge OPCache content" +msgstr "Очистити вміст OPCache" + +#: views/settings/page-sections/dashboard.php:162 +msgid "Purge OPCache" +msgstr "Очистити OPCache" + +#: views/settings/page-sections/dashboard.php:173 +#: views/settings/page-sections/dashboard.php:179 +msgid "Regenerate Critical CSS" +msgstr "Перестворити критичні CSS" + +#: views/settings/page-sections/dashboard.php:196 +msgid "Frequently Asked Questions" +msgstr "Часті Питання" + +#: views/settings/page-sections/dashboard.php:209 +msgid "Still cannot find a solution?" +msgstr "Ще не можете знайти рішення?" + +#: views/settings/page-sections/dashboard.php:210 +msgid "" +"Submit a ticket and get help from our friendly and knowledgeable Rocketeers." +msgstr "" +"Надішліть тікет і отримайте допомогу від наших дружніх і обізнаних " +"Rocketeers." + +#: views/settings/page-sections/dashboard.php:218 +msgid "Ask support" +msgstr "Запитайте підтримку" + +#: views/settings/page-sections/database.php:25 +msgid "Backup your database before you run a cleanup!" +msgstr "Резервує вашу базу даних перед тим, як запустити очищення!" + +#: views/settings/page-sections/database.php:26 +msgid "" +"Once a database optimization has been performed, there is no way to undo it." +msgstr "" +"Після того, як оптимізація бази даних була виконана, її неможливо скасувати." + +#: views/settings/page-sections/imagify.php:21 +#, php-format +msgid "" +"%1$sWP ROCKET%2$s created %3$sIMAGIFY%4$s %1$sfor best-in-class image " +"optimization.%2$s" +msgstr "" +"%1$sWP ROCKET%2$s створено%3$sIMAGIFY%4$s %1$sдля найкращої оптимізації " +"зображень.%2$s" + +#: views/settings/page-sections/imagify.php:24 +msgid "" +"Compress image to make your website faster, all while maintaining image " +"quality." +msgstr "" +"Стисніть зображення, щоб зробити ваш веб-сайт швидшим, зберігаючи якість " +"зображення." + +#: views/settings/page-sections/imagify.php:25 +msgid "More on Imagify:" +msgstr "Більше про Imagify:" + +#: views/settings/page-sections/imagify.php:27 +msgid "Imagify Plugin Page" +msgstr "Imagify сторінка плагіна" + +#: views/settings/page-sections/imagify.php:28 +msgid "Imagify Website" +msgstr "Imagify вебсайт" + +#: views/settings/page-sections/imagify.php:29 +msgid "Review of Image Compression Plugins" +msgstr "Огляд плагінів Стиснення зображень" + +#: views/settings/page-sections/imagify.php:38 +msgid "Install Imagify" +msgstr "Встановити Imagify" + +#: views/settings/page-sections/license.php:22 +msgid "WP Rocket was not able to automatically validate your license." +msgstr "WP Rocket не зміг автоматично перевірити вашу ліцензію." + +#: views/settings/page-sections/license.php:27 +#, php-format +msgid "" +"Follow this tutorial, or contact support to get the engine started." +msgstr "" +"Дотримуйтесь цього посібника або " +"зверніться до служби підтримки, щоб " +"запустити движок." + +#: views/settings/page-sections/license.php:27 +msgid "" +"https://docs.wp-rocket.me/article/100-resolving-problems-with-license-" +"validation/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://docs.wp-rocket.me/article/100-resolving-problems-with-license-" +"validation/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: views/settings/page-sections/sucuri.php:46 +msgid "Clear all Sucuri cache files" +msgstr "Видалити всі файли Sucuri кешу" + +#: views/settings/page-sections/tools.php:20 +#, php-format +msgid "Files size: %1$s. Number of entries: %2$s." +msgstr "Розмір файлів: %1$s. Кількість записів: %2$s." + +#: views/settings/page-sections/tools.php:23 +#, php-format +msgid "%1$sDownload the file%2$s." +msgstr "%1$sЗавантажити файл%2$s." + +#: views/settings/page-sections/tools.php:26 +#, php-format +msgid "%1$sDelete the file%2$s." +msgstr "%1$sВидалити файл%2$s." + +#: views/settings/page-sections/tools.php:37 +msgid "Export settings" +msgstr "Експортувати налаштування" + +#: views/settings/page-sections/tools.php:38 +msgid "Download a backup file of your settings" +msgstr "Завантажте резервну копію Ваших налаштувань" + +#: views/settings/page-sections/tools.php:43 +msgid "Download settings" +msgstr "Завантажити налаштування" + +#: views/settings/page-sections/tools.php:56 +msgid "Rollback" +msgstr "Відкат" + +#: views/settings/page-sections/tools.php:60 +#, php-format +msgid "Has version %s caused an issue on your website?" +msgstr "Чи є проблема з версією %s на вашому веб-сайті?" + +#: views/settings/page-sections/tools.php:62 +msgid "" +"You can rollback to the previous major version here.
      Then send us a " +"support request." +msgstr "" +"Ви можете повернутися до попередньої основної версії тут.
      Потім " +"надішліть нам запит на підтримку." + +#: views/settings/page-sections/tools.php:69 +#, php-format +msgid "Reinstall version %s" +msgstr "Перевстановити версію %s" + +#: views/settings/page-sections/tools.php:85 +msgid "Debug mode" +msgstr "Режим налагодження" + +#: views/settings/page-sections/tools.php:90 +msgid "Create a debug log file." +msgstr "Створіть файл журналу налагодження." + +#: views/settings/page-sections/tutorials.php:13 +#: views/settings/partials/getting-started.php:18 +msgid "Getting Started" +msgstr "Розпочнемо" + +#: views/settings/page-sections/tutorials.php:15 +msgid "Getting Started with WP Rocket" +msgstr "Розпочнемо з WP Rocket" + +#: views/settings/page-sections/tutorials.php:16 +#: views/settings/partials/getting-started.php:12 +msgid "Finding the Best Settings for Your Site" +msgstr "Пошук найкращих налаштувань для Вашого сайту" + +#: views/settings/page-sections/tutorials.php:17 +#: views/settings/partials/getting-started.php:13 +msgid "How to Check if WP Rocket is Caching Your Site" +msgstr "Як перевірити, чи WP Rocket кешує ваш сайт" + +#: views/settings/page-sections/tutorials.php:18 +#: views/settings/partials/getting-started.php:14 +msgid "How to Measure the Speed of Your Site" +msgstr "Як виміряти швидкість вашого сайту" + +#: views/settings/page-sections/tutorials.php:24 +msgid "Troubleshooting Display Issues with File Optimization" +msgstr "Вирішення проблем з відображенням через Оптимізацію файлів" + +#: views/settings/page-sections/tutorials.php:25 +msgid "How to Find the Right JavaScript to Exclude" +msgstr "Як знайти правильний JavaScript для виключення" + +#: views/settings/page-sections/tutorials.php:26 +msgid "How External Content Slows Your Site" +msgstr "Як зовнішній контент уповільнює Ваш сайт" + +#: views/settings/page-sections/tutorials.php:32 +msgid "How Preloading Works" +msgstr "Як працює Предзавантаження" + +#: views/settings/page-sections/tutorials.php:38 +msgid "Set Up the Cloudflare Add-on" +msgstr "Налаштувати Додаток Cloudflare" + +#: views/settings/page.php:16 +msgid "WP Rocket Settings" +msgstr "WP Rocket Налаштування" + +#: views/settings/page.php:30 +#, php-format +msgid "version %s" +msgstr "версія %s" + +#: views/settings/page.php:57 +msgid "Show Sidebar" +msgstr "Показати сайдбар" + +#: views/settings/page.php:76 +msgid "Thanks for choosing to participate in the WP Rocket beta program!" +msgstr "Дякуємо за участь у бета-програмі WP Rocket!" + +#: views/settings/page.php:77 +msgid "" +"A beta version is usually one that has new features and improvements, but we" +" want to test it a little more before full launch." +msgstr "" +"Зазвичай бета-версія - це нові функції та вдосконалення, але ми хочемо " +"протестувати їх ще трохи перед повним запуском." + +#: views/settings/page.php:78 +msgid "" +"We’d love it if you took our beta versions for a ride, but please keep in " +"mind that it might be less stable than our other releases. Don’t worry, you " +"can switch back to a full release version at any time." +msgstr "" +"Ми будемо любити це, якщо б ви взяли наші бета-версії для їзди, але, будь " +"ласка, майте на увазі, що це може бути менш стабільним, ніж наші інші " +"випуски. Не хвилюйтеся, ви можете будь-коли повернутися до повної версії." + +#: views/settings/page.php:79 +msgid "" +"Your mission: please send all feedback about our beta versions, including " +"bug reports, to support@wp-rocket.me" +msgstr "" +"Ваша місія: будь-ласка, відправте всі відгуки про наші бета-версії, " +"включаючи повідомлення про помилки, на адресу support@wp-rocket.me" + +#: views/settings/page.php:81 +msgid "If you don’t want to join the beta program, simply close this window." +msgstr "" +"Якщо ви не хочете приєднуватися до бета-програми, просто закрийте це вікно." + +#: views/settings/page.php:83 +msgid "Activate Rocket Tester" +msgstr "Активізувати Rocket тестер" + +#: views/settings/page.php:94 +msgid "" +"Below is a detailed view of all data WP Rocket will collect if " +"granted permission." +msgstr "" +"Нижче наведено детальний перегляд всіх даних, які WP Rocket збиратиме, " +"якщо надано дозвіл." + +#: views/settings/page.php:97 +msgid "" +"WP Rocket will never transmit any domain names or email addresses (except " +"for license validation), IP addresses, or third-party API keys." +msgstr "" +"WP Rocket ніколи не буде передавати будь-які доменні імена або адреси " +"електронної пошти (крім перевірки ліцензії), IP-адреси або ключі API " +"сторонніх виробників." + +#: views/settings/page.php:99 +msgid "Activate Rocket analytics" +msgstr "Активувати Rocket analytics" + +#: views/settings/partials/documentation.php:15 +msgid "It is a great starting point to fix some of the most common issues." +msgstr "" +"Це чудова відправна точка для виправлення деяких найбільш поширених проблем." + +#: views/settings/partials/documentation.php:19 +msgid "Read the documentation" +msgstr "Прочитайте документацію" + +#: views/settings/partials/getting-started.php:11 +msgid "What WP Rocket Does For You By Default" +msgstr "Що WP Rocket для вас робить одразу після активації:" + +#: views/settings/partials/sidebar.php:12 +msgid "How to correctly measure your website’s loading time" +msgstr "Як правильно виміряти час завантаження веб-сайту" + +#: views/settings/partials/sidebar.php:14 +msgid "Check our tutorial and learn how to measure the speed of your site." +msgstr "" +"Перегляньте наш підручник і дізнайтеся, як виміряти швидкість вашого сайту." + +#: views/settings/partials/sidebar.php:18 +msgid "" +"Learn how to use best practices to correctly measure your site's " +"performance." +msgstr "Дізнайтеся, як правильно оцінювати ефективність вашого сайту." + +#: views/settings/partials/sidebar.php:19 +msgid "" +"https://wp-rocket.me/blog/correctly-measure-websites-page-load-" +"time/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://wp-rocket.me/blog/correctly-measure-websites-page-load-" +"time/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: views/settings/partials/sidebar.php:19 +msgid "Read our guide" +msgstr "Прочитайте наш гід" + +#: views/settings/partials/sidebar.php:22 +msgid "Why Google PageSpeed grade should not matter" +msgstr "Чому Google PageSpeed клас не має значення" + +#: views/settings/partials/sidebar.php:23 +msgid "" +"https://wp-rocket.me/blog/the-truth-about-google-pagespeed-" +"insights/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://wp-rocket.me/blog/the-truth-about-google-pagespeed-" +"insights/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: views/settings/partials/sidebar.php:23 +msgid "Read more" +msgstr "Читати далі" + +#: views/settings/partials/sidebar.php:28 +msgid "You have not activated logged-in user cache." +msgstr "Ви не активували кеш для зареєстрованих користувачів." + +#: views/settings/partials/sidebar.php:29 +msgid "" +"Use a private browser to check your website's speed and visual appearance." +msgstr "" +"Використовуйте приватний веб-переглядач, щоб перевірити швидкість і " +"візуальність вашої веб-сторінки." + +#: views/settings/sections/addons-container.php:24 +#: views/settings/sections/fields-container.php:28 +msgid "Need Help?" +msgstr "Потрібна допомога?" diff --git a/wp-content/plugins/wp-rocket/languages/rocket-uk_UA.mo b/wp-content/plugins/wp-rocket/languages/rocket-uk_UA.mo new file mode 100644 index 0000000000000000000000000000000000000000..4726230c94239d315996b4c9ac38bb323234b905 GIT binary patch literal 119044 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 X4*`(R-%Iz7Q&uN?vLh4L_Llz-74=i) literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-rocket/languages/rocket-uk_UA.po b/wp-content/plugins/wp-rocket/languages/rocket-uk_UA.po new file mode 100644 index 0000000..b428b65 --- /dev/null +++ b/wp-content/plugins/wp-rocket/languages/rocket-uk_UA.po @@ -0,0 +1,3689 @@ +# Copyright (C) 2016 WP Rocket +# This file is distributed under the same license as the WP Rocket package. +# Translators: +# wpmedia , 2019 +# Bogdan Gerasymenko, 2019 +# Paul Gorinetsky , 2019 +# Sabrina Zeidan , 2020 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: WP Rocket 3.4\n" +"Report-Msgid-Bugs-To: http://wp-rocket.me/\n" +"POT-Creation-Date: 2020-01-15 16:02+0200\n" +"PO-Revision-Date: 2019-08-26 15:14+0000\n" +"Last-Translator: Sabrina Zeidan , 2020\n" +"Language-Team: Ukrainian (Ukraine) (https://www.transifex.com/wp-media/teams/18133/uk_UA/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: uk_UA\n" +"Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);\n" +"X-Generator: Poedit 2.2.4\n" +"X-Poedit-Basepath: ..\n" +"X-Poedit-KeywordsList: __;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c\n" +"X-Poedit-SearchPath-0: .\n" +"X-Poedit-SearchPathExcluded-0: assets\n" +"X-Poedit-SearchPathExcluded-1: src\n" +"X-Poedit-SearchPathExcluded-2: vendor\n" +"X-Poedit-SearchPathExcluded-3: node_modules\n" +"X-Poedit-SearchPathExcluded-4: tests\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Textdomain-Support: yes\n" + +#: inc/3rd-party/hosting/flywheel.php:16 inc/3rd-party/hosting/godaddy.php:16 +#: inc/3rd-party/hosting/o2switch.php:16 +#: inc/3rd-party/hosting/pressidium.php:16 inc/3rd-party/hosting/savvii.php:16 +#: inc/3rd-party/hosting/wp-serveur.php:25 +#: inc/3rd-party/hosting/wpengine.php:16 +#, php-format +msgid "" +"Your site is hosted on %s, we have enabled Varnish auto-purge for " +"compatibility." +msgstr "" +"Ваш сайт розміщено на %s, ми включили Varnish автоочищення для сумісності." + +#: inc/3rd-party/hosting/kinsta.php:151 +#, php-format +msgid "" +"Your installation seems to be missing core Kinsta files managing Cache " +"clearing and CDN, which will prevent your Kinsta installation and WP Rocket " +"from working correctly. Please get in touch with Kinsta support through your" +" %1$sMyKinsta%2$s account to resolve this issue." +msgstr "" +"У вашій установці, здається, відсутні основні файли Kinsta, які керують " +"очищенням кешу та CDN, що запобігає правильній роботі Kinsta установки та WP" +" Rocket. Зверніться до служби підтримки Kinsta за допомогою облікового " +"запису%1$sMyKinsta%2$s, щоб вирішити цю проблему." + +#: inc/3rd-party/plugins/jetpack.php:86 +msgid "Jetpack XML Sitemaps" +msgstr "Jetpack XML Sitemaps" + +#: inc/3rd-party/plugins/jetpack.php:88 +msgid "Preload the sitemap from the Jetpack plugin" +msgstr "Презавантаження карти сайту з плагіна Jetpack" + +#: inc/3rd-party/plugins/jetpack.php:96 +#: inc/3rd-party/plugins/seo/all-in-one-seo-pack.php:89 +#: inc/3rd-party/plugins/seo/rank-math-seo.php:34 +#: inc/3rd-party/plugins/seo/seopress.php:86 +#: inc/3rd-party/plugins/seo/the-seo-framework.php:144 +#: inc/3rd-party/plugins/seo/yoast-seo.php:87 +#, php-format +msgid "" +"We automatically detected the sitemap generated by the %s plugin. You can " +"check the option to preload it." +msgstr "" +"Ми автоматично визначили карту сайту, створену плагіном %s. Ви можете " +"перевірити можливість попередньої завантаження." + +#: inc/3rd-party/plugins/seo/all-in-one-seo-pack.php:87 +msgid "All in One SEO XML sitemap" +msgstr "All in One SEO XML sitemap" + +#: inc/3rd-party/plugins/seo/rank-math-seo.php:32 +msgid "Rank Math XML sitemap" +msgstr "Ранг Math XML карти сайту" + +#: inc/3rd-party/plugins/seo/seopress.php:84 +msgid "SEOPress XML sitemap" +msgstr "Мапа сайту SEOPress XML" + +#: inc/3rd-party/plugins/seo/the-seo-framework.php:142 +msgid "The SEO Framework XML sitemap" +msgstr "SEO Framework XML карта сайту" + +#: inc/3rd-party/plugins/seo/yoast-seo.php:85 +msgid "Yoast SEO XML sitemap" +msgstr "Yoast SEO XML sitemap" + +#: inc/admin/admin.php:18 inc/common/admin-bar.php:364 +#: inc/deprecated/deprecated.php:1789 +msgid "Support" +msgstr "Підтримка" + +#: inc/admin/admin.php:20 +msgid "Docs" +msgstr "Документи" + +#: inc/admin/admin.php:22 inc/common/admin-bar.php:352 +msgid "FAQ" +msgstr "Часті питання" + +#: inc/admin/admin.php:24 inc/common/admin-bar.php:64 +msgid "Settings" +msgstr "Налаштування" + +#: inc/admin/admin.php:71 inc/admin/admin.php:95 inc/admin/admin.php:115 +msgid "Clear this cache" +msgstr "Очистити цей кеш" + +#: inc/admin/admin.php:258 inc/admin/admin.php:273 +#: inc/classes/class-wp-rocket-requirements-check.php:203 +#: inc/classes/class-wp-rocket-requirements-check.php:214 +#, php-format +msgid "%s Update Rollback" +msgstr "%s Відкат оновлення" + +#: inc/admin/admin.php:299 +#, php-format +msgid "%1$sReturn to WP Rocket%2$s or %3$sgo to Plugins page%2$s" +msgstr "" +"%1$sПовернутися до WP Rocket%2$s або %3$sперейти на сторінку плагінів%2$s" + +#: inc/admin/admin.php:538 +msgid "Settings import failed: you do not have the permissions to do this." +msgstr "Помилка імпорту параметрів: у вас немає прав для цього." + +#: inc/admin/admin.php:542 +msgid "Settings import failed: no file uploaded." +msgstr "Помилка імпорту параметрів: файл не завантажено." + +#: inc/admin/admin.php:546 +msgid "Settings import failed: incorrect filename." +msgstr "Помилка імпорту параметрів: неправильне ім'я файлу." + +#: inc/admin/admin.php:557 +msgid "Settings import failed: incorrect filetype." +msgstr "Помилка імпорту параметрів: неправильний тип файлу." + +#: inc/admin/admin.php:567 +msgid "Settings import failed: " +msgstr "Помилка імпорту налаштувань: " + +#: inc/admin/admin.php:584 +msgid "Settings import failed: unexpected file content." +msgstr "Помилка імпорту параметрів: несподіваний вміст файлу." + +#: inc/admin/admin.php:605 +msgid "Settings imported and saved." +msgstr "Параметри імпортовані та збережені." + +#: inc/admin/options.php:102 inc/admin/options.php:293 +#: inc/classes/subscriber/Tools/class-detect-missing-tags-subscriber.php:143 +msgid "WP Rocket: " +msgstr "WP Rocket:" + +#: inc/admin/options.php:117 +#, php-format +msgid "Cloudflare development mode error: %s" +msgstr "Помилка режиму розробки Cloudflare: %s" + +#: inc/admin/options.php:123 +#, php-format +msgid "Cloudflare development mode %s" +msgstr "Режим розробки Cloudflare %s" + +#: inc/admin/options.php:140 +#, php-format +msgid "Cloudflare cache level error: %s" +msgstr "Помилка рівня кешу Cloudflare: %s" + +#: inc/admin/options.php:144 +msgctxt "Cloudflare caching level" +msgid "Standard" +msgstr "Стандарт" + +#: inc/admin/options.php:150 +#, php-format +msgid "Cloudflare cache level set to %s" +msgstr "Рівень кешу Cloudflare встановлено на %s" + +#: inc/admin/options.php:162 +#, php-format +msgid "Cloudflare minification error: %s" +msgstr "Помилка мініфікації Cloudflare: %s" + +#: inc/admin/options.php:168 +#, php-format +msgid "Cloudflare minification %s" +msgstr "Мініфікація Cloudflare %s" + +#: inc/admin/options.php:180 +#, php-format +msgid "Cloudflare rocket loader error: %s" +msgstr "Помилка ракетного завантажувача Cloudflare: %s" + +#: inc/admin/options.php:186 +#, php-format +msgid "Cloudflare rocket loader %s" +msgstr "Cloudflare ракетний завантажувач %s" + +#: inc/admin/options.php:198 +#, php-format +msgid "Cloudflare browser cache error: %s" +msgstr "Помилка кешу браузера Cloudflare: %s" + +#: inc/admin/options.php:204 +#, php-format +msgid "Cloudflare browser cache set to %s seconds" +msgstr "Кеш браузера Cloudflare встановлено на %s секунд" + +#: inc/admin/options.php:252 inc/classes/admin/settings/class-page.php:693 +msgid "Excluded CSS Files" +msgstr "Виключені CSS файли" + +#: inc/admin/options.php:253 inc/classes/admin/settings/class-page.php:785 +msgid "Excluded Inline JavaScript" +msgstr "Виключені Inline JavaScript" + +#: inc/admin/options.php:254 inc/classes/admin/settings/class-page.php:803 +msgid "Excluded JavaScript Files" +msgstr "Виключені JavaScript файли" + +#: inc/admin/options.php:255 inc/classes/admin/settings/class-page.php:1189 +msgid "Never Cache URL(s)" +msgstr "Ніколи не кешувати URL(и)" + +#: inc/admin/options.php:256 inc/classes/admin/settings/class-page.php:1205 +msgid "Never Cache User Agent(s)" +msgstr "Некешуємі User-Agent(и)" + +#: inc/admin/options.php:257 inc/classes/admin/settings/class-page.php:1210 +msgid "Always Purge URL(s)" +msgstr "Always Purge URL(и)" + +#: inc/admin/options.php:258 inc/classes/admin/settings/class-page.php:1504 +msgid "Exclude files from CDN" +msgstr "Виключити файли з CDN" + +#: inc/admin/options.php:276 +#, php-format +msgid "%1$s: %2$s." +msgstr "%1$s: %2$s." + +#: inc/admin/options.php:286 +msgid "The following pattern is invalid and has been removed:" +msgid_plural "The following patterns are invalid and have been removed:" +msgstr[0] "Цей шаблон не працює, його було видалено:" +msgstr[1] "Ці шаблони не працюють, їх було видалено:" +msgstr[2] "Ці шаблони не працюють, їх було видалено:" +msgstr[3] "Ці шаблони не працюють, їх було видалено:" + +#: inc/admin/ui/meta-boxes.php:14 inc/admin/ui/notices.php:990 +#: inc/common/admin-bar.php:85 inc/common/admin-bar.php:137 +#: views/settings/page-sections/dashboard.php:117 +msgid "Clear cache" +msgstr "Очистити кеш" + +#: inc/admin/ui/meta-boxes.php:36 +msgid "WP Rocket Options" +msgstr "WP Rocket опції" + +#: inc/admin/ui/meta-boxes.php:65 +msgid "Never cache this page" +msgstr "Ніколи не кешуйте цю сторінку" + +#: inc/admin/ui/meta-boxes.php:69 +msgid "Activate these options on this post:" +msgstr "Активувати ці параметри в цьому записі:" + +#: inc/admin/ui/meta-boxes.php:72 +msgid "LazyLoad for images" +msgstr "LazyLoad для зображень" + +#: inc/admin/ui/meta-boxes.php:73 +msgid "LazyLoad for iframes/videos" +msgstr "LazyLoad для iframes/відео" + +#: inc/admin/ui/meta-boxes.php:74 +#: inc/classes/admin/settings/class-page.php:616 +msgid "Minify HTML" +msgstr "Зменшити HTML" + +#: inc/admin/ui/meta-boxes.php:75 +msgid "Minify/combine CSS" +msgstr "Зменшити/об'єднати CSS" + +#: inc/admin/ui/meta-boxes.php:76 +msgid "Minify/combine JS" +msgstr "Зменшити/об'єднати JS" + +#: inc/admin/ui/meta-boxes.php:77 +#: inc/classes/admin/settings/class-page.php:1474 +#: inc/classes/admin/settings/class-page.php:1485 +#: inc/deprecated/deprecated.php:1775 +msgid "CDN" +msgstr "CDN" + +#: inc/admin/ui/meta-boxes.php:78 +msgid "Optimize CSS Delivery" +msgstr "Оптимізуйте доставку CSS" + +#: inc/admin/ui/meta-boxes.php:79 +msgid "Defer JS" +msgstr "Defer JS" + +#: inc/admin/ui/meta-boxes.php:85 +#, php-format +msgid "Activate first the %s option." +msgstr "Активуйте спочатку %s параметр." + +#: inc/admin/ui/meta-boxes.php:101 +#, php-format +msgid "" +"%1$sNote:%2$s None of these options will be applied if this post has been " +"excluded from cache in the global cache settings." +msgstr "" +"%1$sNote:%2$s Жоден з цих параметрів не буде застосовано, якщо цю публікацію" +" виключено з кешу в налаштуваннях глобального кешу." + +#: inc/admin/ui/notices.php:25 inc/admin/ui/notices.php:35 +#, php-format +msgid "" +"%1$s has not been deactivated due to missing writing permissions.
      \n" +"Make %2$s writeable and retry deactivation, or force deactivation now:" +msgstr "" +"%1$s не може бути відключено через помилку прав запису.
      \n" +"Дозвольте запис в %2$s і повторіть спробу, або відключіть насильно:" + +#: inc/admin/ui/notices.php:83 +#, php-format +msgid "" +"%s: One or more plugins have been enabled or disabled, " +"clear the cache if they affect the front end of your site." +msgstr "" +"%s: Один або кілька плагінів були відключені або видалені. " +"Очистіть кеш, щоб стерти їх залишки." + +#: inc/admin/ui/notices.php:178 +msgid "" +"WP Rocket Cloudflare Add-on provides similar functionalities. They can not " +"be active at the same time." +msgstr "" +"Додаток Cloudflare у WP Rocket забезпечує той самий функціонал. Їх не може " +"бути активовано одночасно." + +#: inc/admin/ui/notices.php:202 +#, php-format +msgid "" +"%s: The following plugins are not compatible with this " +"plugin and may cause unexpected results:" +msgstr "" +"%s: Наступні плагіни несумісні з цим плагіном і можуть " +"призвести до несподіваних результатів:" + +#: inc/admin/ui/notices.php:208 +msgid "Deactivate" +msgstr "Вимкнути" + +#: inc/admin/ui/notices.php:248 +msgid "" +"WP Rocket Footer JS is not an official add-on. It prevents some options in " +"WP Rocket from working correctly. Please deactivate it if you have problems." +msgstr "" +"WP Rocket Footer JS не є офіційним доповненням. Це запобігає правильній " +"роботі деяких опцій WP Rocket. Вимкніть його, якщо у вас виникли проблеми." + +#: inc/admin/ui/notices.php:288 +#, php-format +msgid "" +"Endurance Cache is currently enabled, which will conflict with WP Rocket " +"Cache. Please set the Endurance Cache cache level to Off (Level 0) on the " +"%1$sSettings > General%2$s page to prevent any issues." +msgstr "" +"Зараз активовано Endurance Cache, це викличе конфлікти з WP Rocket Cache. " +"Щоб цьому запобігти, будь ласка, переключіть Endurance Cache на Off (Level " +"0) на сторінці %1$sSettings > General%2$s. " + +#: inc/admin/ui/notices.php:309 +#, php-format +msgid "" +"%1$s: A custom permalink structure is required for the plugin to work " +"properly. %2$sGo to permalinks settings%3$s" +msgstr "" +"%1$s: Для нормальної роботи плагіна потрібна власна структура постійних " +"посилань. %2$sПерейдіть до налаштувань permalinks%3$s" + +#: inc/admin/ui/notices.php:443 +#, php-format +msgid "" +"%s could not modify the .htaccess file due to missing writing permissions." +msgstr "" +"%s не вдалося внести зміни до файлу .htaccess через відсутність прав запису." + +#: inc/admin/ui/notices.php:449 inc/admin/ui/notices.php:1067 +#, php-format +msgid "Troubleshoot: %1$sHow to make system files writeable%2$s" +msgstr "Виправлення неполадок:%1$sЯк зробити системні файли для запису%2$s" + +#: inc/admin/ui/notices.php:451 inc/admin/ui/notices.php:1069 +msgid "" +"https://docs.wp-rocket.me/article/626-how-to-make-system-files-htaccess-wp-" +"config-writeable/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://docs.wp-rocket.me/article/626-how-to-make-system-files-htaccess-wp-" +"config-writeable/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: inc/admin/ui/notices.php:457 +msgid "" +"Don’t worry, WP Rocket’s page caching and settings will still function " +"correctly." +msgstr "" +"Не хвилюйтеся, кешування сторінок та налаштування WP Rocket будуть і надалі " +"працювати коректно." + +#: inc/admin/ui/notices.php:457 +msgid "" +"For optimal performance, adding the following lines into your .htaccess is " +"recommended (not required):" +msgstr "" +"Для покращення роботи, ми рекомендуємо (це не вимагається) додати наступні " +"рядки до .htaccess:" + +#: inc/admin/ui/notices.php:598 +#, php-format +msgid "" +"%1$s is good to go! %2$sTest your load time%4$s, or visit your " +"%3$ssettings%4$s." +msgstr "" +"%1$s працює відмінно! %2$sПеревірте швидкість завантаження%4$s, або " +"перейдіть в %3$sнастройки%4$s." + +#: inc/admin/ui/notices.php:746 +msgid "" +"Would you allow WP Rocket to collect non-sensitive diagnostic data from this" +" website?" +msgstr "" +"Чи дозволили б WP Rocket збирати нечутливі діагностичні дані з цього сайту?" + +#: inc/admin/ui/notices.php:747 +msgid "This would help us to improve WP Rocket for you in the future." +msgstr "Це допоможе нам у майбутньому поліпшити роботу WP Rocket." + +#: inc/admin/ui/notices.php:753 +msgid "What info will we collect?" +msgstr "Яку інформацію ми збираємо?" + +#: inc/admin/ui/notices.php:758 +msgid "" +"Below is a detailed view of all data WP Rocket will collect if granted " +"permission. WP Rocket will never transmit any domain names or email " +"addresses (except for license validation), IP addresses, or third-party API " +"keys." +msgstr "" +"Нижче наведено детальний перегляд всіх даних, які WP Rocket збиратиме, якщо " +"надано дозвіл. WP Rocket ніколи не передаватиме будь-які доменні імена або " +"адреси електронної пошти (крім перевірки ліцензії), IP-адреси або сторонні " +"ключі API." + +#: inc/admin/ui/notices.php:767 +msgid "Yes, allow" +msgstr "Так, дозволити" + +#: inc/admin/ui/notices.php:770 +msgid "No, thanks" +msgstr "Ні, дякую" + +#: inc/admin/ui/notices.php:807 +msgid "Thank you!" +msgstr "Дякую!" + +#: inc/admin/ui/notices.php:812 +msgid "WP Rocket now collects these metrics from your website:" +msgstr "Зараз WP Rocket збирає такі дані з вашого веб-сайту:" + +#: inc/admin/ui/notices.php:848 +#, php-format +msgid "%s: Cache cleared." +msgstr "%s: кеш очищено." + +#: inc/admin/ui/notices.php:855 +#, php-format +msgid "%s: Post cache cleared." +msgstr "%s: кеш записів очищено." + +#: inc/admin/ui/notices.php:862 +#, php-format +msgid "%s: Term cache cleared." +msgstr "%s: Term кеш очищено." + +#: inc/admin/ui/notices.php:869 +#, php-format +msgid "%s: User cache cleared." +msgstr "%s: кеш користувачів очищено." + +#: inc/admin/ui/notices.php:945 +msgid "" +"The following scheduled event failed to run. This may indicate the CRON " +"system is not running properly, which can prevent some WP Rocket features " +"from working as intended:" +msgid_plural "" +"The following scheduled events failed to run. This may indicate the CRON " +"system is not running properly, which can prevent some WP Rocket features " +"from working as intended:" +msgstr[0] "" +"Нижчезазначене заплановане завдання не було виконано. Причиною можуть бути " +"проблеми в системі СRON, які блокують роботу деяких функцій WP Rocket:" +msgstr[1] "" +"Нижчезазначені заплановані завдання не було виконано. Причиною можуть бути " +"проблеми в системі СRON, які блокують роботу деяких функцій WP Rocket:" +msgstr[2] "" +"Нижчезазначені заплановані завдання не було виконано. Причиною можуть бути " +"проблеми в системі СRON, які блокують роботу деяких функцій WP Rocket:" +msgstr[3] "" +"Нижчезазначені заплановані завдання не було виконано. Причиною можуть бути " +"проблеми в системі СRON, які блокують роботу деяких функцій WP Rocket:" + +#: inc/admin/ui/notices.php:954 +msgid "Please contact your host to check if CRON is working." +msgstr "" +"Будь ласка, зв'яжіться з вашим хостером, щоб перевірити, чи працює CRON." + +#: inc/admin/ui/notices.php:993 +msgid "Stop Preload" +msgstr "Зупинити попереднє завантаження" + +#: inc/admin/ui/notices.php:1011 +msgid "Force deactivation " +msgstr "Примусова деактивація " + +#: inc/admin/ui/notices.php:1024 +msgid "The following code should have been written to this file:" +msgstr "Наступний код повинен був бути написаний у цьому файлі:" + +#: inc/admin/ui/notices.php:1034 views/settings/page-sections/dashboard.php:46 +msgid "Dismiss this notice." +msgstr "Пропустити це сповіщення." + +#: inc/admin/ui/notices.php:1055 +#, php-format +msgid "%s cannot configure itself due to missing writing permissions." +msgstr "" +"%sне можна налаштувати автоматично через відсутність дозволів на запис." + +#: inc/admin/ui/notices.php:1061 +#, php-format +msgid "Affected file/folder: %s" +msgstr "Проблемний файл/папка: %s" + +#: inc/classes/admin/Database/class-optimization.php:41 +#: inc/classes/admin/settings/class-page.php:1350 +msgid "Revisions" +msgstr "Редакції" + +#: inc/classes/admin/Database/class-optimization.php:42 +#: inc/classes/admin/settings/class-page.php:1360 +msgid "Auto Drafts" +msgstr "Авто чернетки" + +#: inc/classes/admin/Database/class-optimization.php:43 +#: inc/classes/admin/settings/class-page.php:1370 +msgid "Trashed Posts" +msgstr "Видалені записи" + +#: inc/classes/admin/Database/class-optimization.php:44 +#: inc/classes/admin/settings/class-page.php:1380 +msgid "Spam Comments" +msgstr "Спам коментарі" + +#: inc/classes/admin/Database/class-optimization.php:45 +#: inc/classes/admin/settings/class-page.php:1390 +msgid "Trashed Comments" +msgstr "Видалені коментарі" + +#: inc/classes/admin/Database/class-optimization.php:46 +#: inc/classes/admin/settings/class-page.php:1400 +msgid "Expired transients" +msgstr "Прострочені тимчасові дані" + +#: inc/classes/admin/Database/class-optimization.php:47 +msgid "Transients" +msgstr "Транзакції" + +#: inc/classes/admin/Database/class-optimization.php:48 +msgid "Tables" +msgstr "Таблиці" + +#: inc/classes/admin/class-logs.php:124 +msgid "The debug file could not be deleted." +msgstr "Файл налагодження неможливо видалити." + +#: inc/classes/admin/settings/class-page.php:189 +msgid "Save Changes" +msgstr "Зберегти Зміни" + +#: inc/classes/admin/settings/class-page.php:189 +msgid "Validate License" +msgstr "Перевірити Ліцензію" + +#: inc/classes/admin/settings/class-page.php:213 +#: inc/classes/admin/settings/class-page.php:214 +msgid "Unavailable" +msgstr "Невідомо" + +#: inc/classes/admin/settings/class-page.php:328 +#: inc/deprecated/deprecated.php:1791 +#: views/settings/page-sections/dashboard.php:73 +msgid "License" +msgstr "Ліцензія" + +#: inc/classes/admin/settings/class-page.php:345 +msgid "API key" +msgstr "Ключ API" + +#: inc/classes/admin/settings/class-page.php:360 +msgid "Email address" +msgstr "Електронна пошта" + +#: inc/classes/admin/settings/class-page.php:389 +msgid "Dashboard" +msgstr "Майстерня" + +#: inc/classes/admin/settings/class-page.php:390 +msgid "Get help, account info" +msgstr "Довідка, інфо про аккаунт" + +#: inc/classes/admin/settings/class-page.php:399 +msgid "My Status" +msgstr "Мій статус" + +#: inc/classes/admin/settings/class-page.php:409 views/settings/page.php:72 +msgid "Rocket Tester" +msgstr "Rocket тестер" + +#: inc/classes/admin/settings/class-page.php:410 +msgid "I am part of the WP Rocket Beta Testing Program." +msgstr "Я є частиною програми тестування WP Rocket Beta." + +#: inc/classes/admin/settings/class-page.php:418 views/settings/page.php:90 +msgid "Rocket Analytics" +msgstr "Rocket аналітика" + +#: inc/classes/admin/settings/class-page.php:420 +#, php-format +msgid "" +"I agree to share anonymous data with the development team to help improve WP" +" Rocket. %1$sWhat info will we collect?%2$s" +msgstr "" +"Я згоден поділитися анонімними даними з командою розробників, для поліпшення" +" WP Rocket. %1$sЯку інформацію ми збираємо?%2$s" + +#: inc/classes/admin/settings/class-page.php:447 +msgid "Cache" +msgstr "Кеш" + +#: inc/classes/admin/settings/class-page.php:448 +msgid "Basic cache options" +msgstr "Основні опції кешу" + +#: inc/classes/admin/settings/class-page.php:455 +msgid "Mobile Cache" +msgstr "Мобільний кеш" + +#: inc/classes/admin/settings/class-page.php:457 +msgid "Speed up your site for mobile visitors." +msgstr "Прискорити свій сайт для мобільних відвідувачів." + +#: inc/classes/admin/settings/class-page.php:462 +msgid "" +"We detected you use a plugin that requires a separate cache for mobile, and " +"automatically enabled this option for compatibility." +msgstr "" +"Ми виявили, що ви використовуєте плагін, для якого потрібен окремий кеш для " +"мобільних пристроїв, і автоматично включений цей параметр для сумісності." + +#: inc/classes/admin/settings/class-page.php:466 +msgid "User Cache" +msgstr "Кеш користувача" + +#: inc/classes/admin/settings/class-page.php:469 +#, php-format +msgid "" +"%1$sUser cache%2$s is great when you have user-specific or restricted " +"content on your website." +msgstr "" +"%1$sКеш користувачів%2$s корисний, коли зміст сайту для користувачів " +"відрізняється від гостьового." + +#: inc/classes/admin/settings/class-page.php:477 +msgid "Cache Lifespan" +msgstr "Термін дії кешу" + +#: inc/classes/admin/settings/class-page.php:480 +#, php-format +msgid "" +"Cache files older than the specified lifespan will be deleted.
      Enable " +"%1$spreloading%2$s for the cache to be rebuilt automatically after lifespan " +"expiration." +msgstr "" +"Закешовані файли, які старіші за Термін дії кешу, буде видалено.
      Включіть" +" %1$sПрелоадінг%2$s, щоб кеш створювався заново автоматично після того, як " +"закінчиться термін його дії." + +#: inc/classes/admin/settings/class-page.php:494 +msgid "Enable caching for logged-in WordPress users" +msgstr "Увімкніть кешування для зареєстрованих користувачів WordPress" + +#: inc/classes/admin/settings/class-page.php:502 +msgid "Enable caching for mobile devices" +msgstr "Увімкнути кешування для мобільних пристроїв" + +#: inc/classes/admin/settings/class-page.php:517 +msgid "Separate cache files for mobile devices" +msgstr "Окремі файли кешу для мобільних пристроїв" + +#: inc/classes/admin/settings/class-page.php:519 +#, php-format +msgid "" +"Most modern themes are responsive and should work without a separate cache. " +"Enable this only if you have a dedicated mobile theme or plugin. %1$sMore " +"info%2$s" +msgstr "" +"Більшість сучасних тем є адаптивними і повинні працювати без окремого кешу. " +"Активуйте це тільки, якщо ви використовуєте окрему тему або плагін для " +"мобільних пристроїв. %1$sДетальніше%2$s" + +#: inc/classes/admin/settings/class-page.php:535 +msgid "" +"Specify time after which the global cache is cleared
      (0 = unlimited )" +msgstr "" +"Вкажіть час, після якого глобальний кеш буде очищено
      (0 = необмежений)" + +#: inc/classes/admin/settings/class-page.php:537 +#, php-format +msgid "" +"Reduce lifespan to 10 hours or less if you notice issues that seem to appear" +" periodically. %1$sWhy?%2$s" +msgstr "" +"Скоротіть термін служби до 10 годин або менше, якщо ви помітите, що на сайті" +" періодично виникають проблеми. %1$sЧому?%2$s" + +#: inc/classes/admin/settings/class-page.php:543 +msgid "Minutes" +msgstr "Хвилини" + +#: inc/classes/admin/settings/class-page.php:544 +msgid "Hours" +msgstr "Години" + +#: inc/classes/admin/settings/class-page.php:545 +msgid "Days" +msgstr "Дні" + +#: inc/classes/admin/settings/class-page.php:572 +#: views/settings/page-sections/tutorials.php:22 +msgid "File Optimization" +msgstr "Оптимізація файлів" + +#: inc/classes/admin/settings/class-page.php:573 +msgid "Optimize CSS & JS" +msgstr "Оптимізуйте CSS & JS" + +#: inc/classes/admin/settings/class-page.php:580 +msgid "Basic Settings" +msgstr "Основні опції" + +#: inc/classes/admin/settings/class-page.php:587 +#: inc/classes/admin/settings/class-page.php:597 +#: inc/classes/admin/settings/class-page.php:607 +#, php-format +msgid "" +"%1$s Minification is currently activated in Autoptimize. If" +" you want to use %2$s’s minification, disable those options in Autoptimize." +msgstr "" +"%1$s Minification зараз активовано в режимі Autoptimize. " +"Якщо ви хочете використовувати %2$s minification, вимкніть ці параметри у " +"параметрі Autoptimize." + +#: inc/classes/admin/settings/class-page.php:590 +msgid "CSS Files" +msgstr "CSS Файли" + +#: inc/classes/admin/settings/class-page.php:600 +msgid "JavaScript Files" +msgstr "Файли JavaScript" + +#: inc/classes/admin/settings/class-page.php:620 +msgid "Minifying HTML removes whitespace and comments to reduce the size." +msgstr "Зменшення HTML вилучає пробіли та коментарі, щоб зменшити розмір." + +#: inc/classes/admin/settings/class-page.php:631 +msgid "Combine Google Fonts files" +msgstr "Об'єднати файли шрифтів Google" + +#: inc/classes/admin/settings/class-page.php:632 +msgid "Combining Google Fonts will reduce the number of HTTP requests." +msgstr "Об'єднання шрифтів Google зменшить кількість запитів HTTP." + +#: inc/classes/admin/settings/class-page.php:640 +msgid "Remove query strings from static resources" +msgstr "Видалити рядки запиту зі статичних ресурсів" + +#: inc/classes/admin/settings/class-page.php:642 +#, php-format +msgid "" +"Removes the version query string from static files (e.g. style.css?ver=1.0) " +"and encodes it into the filename instead (e.g. style-1.0.css). Can improve " +"your GTMetrix score. %1$sMore info%2$s" +msgstr "" +"Видаляє рядок запиту версії зі статичних файлів (style.css?ver=1.0) і кодує " +"його у назву файлу (наприклад, style-1.0.css). Покращує показник GTMetrix. " +"%1$sДетальніше%2$s" + +#: inc/classes/admin/settings/class-page.php:650 +msgid "Minify CSS files" +msgstr "Зменшення CSS файли" + +#: inc/classes/admin/settings/class-page.php:651 +msgid "Minify CSS removes whitespace and comments to reduce the file size." +msgstr "" +"Зменшення CSS видаляє пробіли та коментарі, щоб зменшити розмір файлу." + +#: inc/classes/admin/settings/class-page.php:664 +#: inc/classes/admin/settings/class-page.php:686 +#: inc/classes/admin/settings/class-page.php:756 +#: inc/classes/admin/settings/class-page.php:778 +msgid "This could break things!" +msgstr "Це може зламати речі!" + +#: inc/classes/admin/settings/class-page.php:665 +#: inc/classes/admin/settings/class-page.php:687 +#: inc/classes/admin/settings/class-page.php:757 +#: inc/classes/admin/settings/class-page.php:779 +msgid "" +"If you notice any errors on your website after having activated this " +"setting, just deactivate it again, and your site will be back to normal." +msgstr "" +"Якщо ви помітили помилки на своєму веб-сайті після активації цього " +"налаштування, просто деактивуйте його знову, і ваш сайт повернеться до " +"нормального стану." + +#: inc/classes/admin/settings/class-page.php:666 +msgid "Activate minify CSS" +msgstr "Активувати мінімізацію CSS" + +#: inc/classes/admin/settings/class-page.php:671 +msgid "Combine CSS files (Enable Minify CSS files to select)" +msgstr "" +"Об'єднати файли CSS (увімкнути мінімізацію файлів CSS для вибору)" + +#: inc/classes/admin/settings/class-page.php:673 +#, php-format +msgid "" +"Combine CSS merges all your files into 1, reducing HTTP requests. Not " +"recommended if your site uses HTTP/2. %1$sMore info%2$s" +msgstr "" +"Об'єднати CSS об'єднує всі ваші файли в 1, зменшуючи HTTP-запити. Не " +"рекомендується, якщо ваш сайт використовує HTTP/2. %1$sБольше інформації%2$s" + +#: inc/classes/admin/settings/class-page.php:688 +msgid "Activate combine CSS" +msgstr "Активувати об`єднати CSS" + +#: inc/classes/admin/settings/class-page.php:694 +msgid "" +"Specify URLs of CSS files to be excluded from minification and concatenation" +" (one per line)." +msgstr "" +"Вкажіть URL-адреси CSS-файлів, які потрібно виключити з мінімізації та " +"об'єднання (по одному на рядок)." + +#: inc/classes/admin/settings/class-page.php:695 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*).css " +"wildcards to exclude all CSS files located at a specific path." +msgstr "" +"Частина URL домену буде видалена автоматично.
      Використовуйте символи (. " +"*). css, щоб виключити всі файли CSS, розташовані на певному шляху." + +#: inc/classes/admin/settings/class-page.php:708 +msgid "Optimize CSS delivery" +msgstr "Оптимізуйте доставку CSS" + +#: inc/classes/admin/settings/class-page.php:715 +#, php-format +msgctxt "WP Critical CSS compatibility" +msgid "" +"Optimize CSS Delivery is currently handled by the %1$s plugin. If you want " +"to use WP Rocket’s Optimize CSS Delivery option, disable the %1$s plugin." +msgstr "" +"Оптимізація завантаження CSS зараз виконується плагіном %1$s. Якщо ви " +"хочете використовувати цю функцію WP Rocket, деактивуйте плагін%1$s." + +#: inc/classes/admin/settings/class-page.php:717 +#, php-format +msgid "" +"Optimize CSS delivery eliminates render-blocking CSS on your website for " +"faster perceived load time. %1$sMore info%2$s" +msgstr "" +"Оптимізація доставки CSS усуває CSS-блокування на вашому веб-сайті для " +"швидшого сприйняття часу завантаження. %1$sДетальніше%2$s" + +#: inc/classes/admin/settings/class-page.php:728 +msgid "Fallback critical CSS" +msgstr "Резервний критичний CSS" + +#: inc/classes/admin/settings/class-page.php:733 +#, php-format +msgid "" +"Provides a fallback if auto-generated critical path CSS is incomplete. " +"%1$sMore info%2$s" +msgstr "" +"Забезпечує запасний варіант, якщо автоматично створений критичний шлях CSS є" +" неповним. %1$sДетальніше%2$s" + +#: inc/classes/admin/settings/class-page.php:742 +msgid "Minify JavaScript files" +msgstr "Зменшити файли JavaScript" + +#: inc/classes/admin/settings/class-page.php:743 +msgid "" +"Minify JavaScript removes whitespace and comments to reduce the file size." +msgstr "" +"Зменшити JavaScript видаляє пробіли та коментарі, щоб зменшити розмір файлу." + +#: inc/classes/admin/settings/class-page.php:758 +msgid "Activate minify JavaScript" +msgstr "Активувати стиснення JavaScript" + +#: inc/classes/admin/settings/class-page.php:763 +msgid "" +"Combine JavaScript files (Enable Minify JavaScript files to select)" +msgstr "" +"Об'єднати файли JavaScript (Увімкнути Мінімізацію файлів JavaScript для " +"вибору)" + +#: inc/classes/admin/settings/class-page.php:765 +#, php-format +msgid "" +"Combine JavaScript files combines your site’s internal, 3rd party and inline" +" JS reducing HTTP requests. Not recommended if your site uses HTTP/2. " +"%1$sMore info%2$s" +msgstr "" +"Об'єднати файли JavaScript поєднує внутрішні, треті сторони та вбудовані JS," +" що знижують HTTP-запити. Не рекомендується, якщо ваш сайт використовує HTTP" +" / 2. %1$sБольше інформації%2$s" + +#: inc/classes/admin/settings/class-page.php:780 +msgid "Activate combine JavaScript" +msgstr "Активувати об`єднати JavaScript" + +#: inc/classes/admin/settings/class-page.php:787 +#, php-format +msgid "" +"Specify patterns of inline JavaScript to be excluded from concatenation (one" +" per line). %1$sMore info%2$s" +msgstr "" +"Вкажіть шаблони вбудованого JavaScript, які будуть виключені з об'єднання " +"(по одному на рядок). %1$sДетальніше%2$s" + +#: inc/classes/admin/settings/class-page.php:804 +msgid "" +"Specify URLs of JavaScript files to be excluded from minification and " +"concatenation (one per line)." +msgstr "" +"Вкажіть URL-адреси файлів JavaScript, які потрібно виключити зі зменшення та" +" об'єднання (по одному на рядок)." + +#: inc/classes/admin/settings/class-page.php:805 +msgid "" +"Internal: The domain part of the URL will be stripped " +"automatically. Use (.*).js wildcards to exclude all JS files located at a " +"specific path." +msgstr "" +"Примітка: Доменне ім'я буде видалено автоматично. " +"Використовуйте маску (.*).js для виключення всіх JS файлів в заданому шляху." + +#: inc/classes/admin/settings/class-page.php:807 +#, php-format +msgid "" +"3rd Party: Use either the full URL path or only the domain " +"name, to exclude external JS. %1$sMore info%2$s" +msgstr "" +"Сторонні модулі: Використовуйте повний шлях або доменне " +"ім'я щоб виключити зовнішні JS. %1$sДетальніше%2$s" + +#: inc/classes/admin/settings/class-page.php:823 +msgid "Load JavaScript deferred" +msgstr "Відкладене завантаження JavaScript" + +#: inc/classes/admin/settings/class-page.php:825 +#, php-format +msgid "" +"Load JavaScript deferred eliminates render-blocking JS on your site and can " +"improve load time. %1$sMore info%2$s" +msgstr "" +"Відкладене завантаження JavaScript усуває можливість блокування JS на вашому" +" сайті та покращує час завантаження. %1$sДетальніше%2$s" + +#: inc/classes/admin/settings/class-page.php:836 +msgid "Safe Mode for jQuery (recommended)" +msgstr "Безпечний режим для jQuery (рекомендовано)" + +#: inc/classes/admin/settings/class-page.php:837 +msgid "" +"Safe mode for jQuery for deferred JS ensures support for inline jQuery " +"references from themes and plugins by loading jQuery at the top of the " +"document as a render-blocking script.
      Deactivating may result in " +"broken functionality, test thoroughly!" +msgstr "" +"Безпечний режим для jQuery для відкладеного JS забезпечує підтримку " +"вбудованих посилань jQuery з тем і плагінів, завантажуючи jQuery у верхній " +"частині документа як скрипт, що блокує візуалізацію.
      Вимкнення може " +"призвести до порушення функціональності, ретельної перевірки!" + +#: inc/classes/admin/settings/class-page.php:869 +msgid "Media" +msgstr "Медіафайли" + +#: inc/classes/admin/settings/class-page.php:870 +msgid "LazyLoad, emojis, embeds, WebP" +msgstr "LazyLoad, emojis, embeds, WebP" + +#: inc/classes/admin/settings/class-page.php:876 +msgid "Autoptimize" +msgstr "Autoptimize" + +#: inc/classes/admin/settings/class-page.php:893 +msgid "LazyLoad" +msgstr "LazyLoad" + +#: inc/classes/admin/settings/class-page.php:896 +#, php-format +msgid "" +"It can improve actual and perceived loading time as images, iframes, and " +"videos will be loaded only as they enter (or about to enter) the viewport " +"and reduces the number of HTTP requests. %1$sMore Info%2$s" +msgstr "" +"Вона може покращити фактичний і сприйнятий час завантаження - зображення, " +"фрейми, та відео буде завантажено лише після того, як вони ввійдуть до вікна" +" перегляду та скоротять кількість запитів HTTP. %1$sБільше інформації %2$s" + +#: inc/classes/admin/settings/class-page.php:903 +#, php-format +msgid "" +"Lazyload is currently activated in %2$s. If you want to use" +" %1$s’s lazyload, disable this option in %2$s." +msgstr "" +"Lazyload зараз активовано в %2$s. Якщо ви хочете " +"використовувати Lazyload в %1$s, деактивуйте цю функцію в%2$s." + +#: inc/classes/admin/settings/class-page.php:906 +msgid "Emoji 👻" +msgstr "Emoji 👻" + +#: inc/classes/admin/settings/class-page.php:908 +msgid "" +"Use default emoji of visitor's browser instead of loading emoji from " +"WordPress.org" +msgstr "" +"Використовуйте типову емодзiгу браузера відвідувача, а не завантажувати " +"емодзiти з WordPress.org" + +#: inc/classes/admin/settings/class-page.php:912 +msgid "Embeds" +msgstr "Вставки" + +#: inc/classes/admin/settings/class-page.php:914 +msgid "" +"Prevents others from embedding content from your site, prevents you from " +"embedding content from other (non-whitelisted) sites, and removes JavaScript" +" requests related to WordPress embeds" +msgstr "" +"Відключає вбудовування матеріалів з вашого сайту, а також чужих матеріалів " +"на вашому сайті (крім білого списку), прибирає пов'язані JavaScript запити " +"до сайту WordPress" + +#: inc/classes/admin/settings/class-page.php:918 +msgid "WebP compatibility" +msgstr "WebP сумісність" + +#: inc/classes/admin/settings/class-page.php:922 +#, php-format +msgid "" +"Enable this option if you would like WP Rocket to serve WebP images to " +"compatible browsers. Please note that WP Rocket cannot create WebP images " +"for you. To create WebP images we recommend %1$sImagify%2$s. %3$sMore " +"info%2$s" +msgstr "" +"Активуйте цю опцію, якщо ви хочете, щоб WP Rocket виводив зображення WebP у " +"браузерах, які підтримують цей формат. Зверніть увагу, що WP Rocket не може " +"створити WebP зображення для вас. Для їх безпосереднього створення ми " +"рекомендуємо %1$sImagify%2$s. %3$sБільше інформації%2$s" + +#: inc/classes/admin/settings/class-page.php:950 +msgid "Enable for images" +msgstr "Увімкнути для зображень" + +#: inc/classes/admin/settings/class-page.php:961 +msgctxt "Avada" +msgid "" +"Lazyload for images is currently activated in Avada. If you want to use WP " +"Rocket’s LazyLoad, disable this option in Avada." +msgstr "" +"Lazyload зображень зараз активовано в Avada. Якщо ви хочете використовувати " +"LazyLoad від WP Rocket, деактивуйте цю функцію в Avada." + +#: inc/classes/admin/settings/class-page.php:969 +msgid "Enable for iframes and videos" +msgstr "Увімкнути iframes і відео" + +#: inc/classes/admin/settings/class-page.php:984 +msgid "Replace YouTube iframe with preview image" +msgstr "Замініть YouTube iframe попереднім зображенням" + +#: inc/classes/admin/settings/class-page.php:985 +msgid "" +"This can significantly improve your loading time if you have a lot of " +"YouTube videos on a page." +msgstr "" +"Це може значно поліпшити час завантаження, якщо на сторінці є багато відео " +"YouTube." + +#: inc/classes/admin/settings/class-page.php:997 +msgid "Disable Emoji" +msgstr "Вимкнути Emoji" + +#: inc/classes/admin/settings/class-page.php:998 +msgid "Disable Emoji will reduce the number of external HTTP requests." +msgstr "Вимкнути Emoji зменшить кількість зовнішніх HTTP-запитів." + +#: inc/classes/admin/settings/class-page.php:1006 +msgid "Disable WordPress embeds" +msgstr "Вимкнути вставлення WordPress" + +#: inc/classes/admin/settings/class-page.php:1016 +#: inc/classes/subscriber/Media/class-webp-subscriber.php:360 +msgid "Enable WebP caching" +msgstr "Увімкнути кешування WebP" + +#: inc/classes/admin/settings/class-page.php:1039 +#: inc/classes/admin/settings/class-page.php:1049 +#: inc/deprecated/deprecated.php:1778 +#: views/settings/page-sections/tutorials.php:30 +msgid "Preload" +msgstr "Презавантаження" + +#: inc/classes/admin/settings/class-page.php:1040 +msgid "Generate cache files" +msgstr "Створення файлів кешу" + +#: inc/classes/admin/settings/class-page.php:1052 +#, php-format +msgid "" +"When you enable preloading WP Rocket will generate the cache starting with " +"the links on your homepage followed by the sitemaps you specify. Preloading " +"is automatically triggered when you add or update content and can also be " +"manually triggered from the admin bar or from the %1$sWP Rocket " +"Dashboard%2$s." +msgstr "" +"При включенні попереднього завантаження WP Rocket генеруватиме кеш, " +"починаючи з посилань на вашій домашній сторінці, за якими слідують вказані " +"вами мапи сайту. Попереднє завантаження автоматично спрацьовує під час " +"додавання або оновлення вмісту, а також може бути запущено вручну з панелі " +"адміністрування або з панелі%1$sWP Rocket Dashboard%2$s." + +#: inc/classes/admin/settings/class-page.php:1060 +msgid "Prefetch DNS Requests" +msgstr "Оптимізація DNS запитів" + +#: inc/classes/admin/settings/class-page.php:1062 +msgid "" +"DNS prefetching can make external files load faster, especially on mobile " +"networks" +msgstr "" +"Попередня вибірка DNS може прискорювати завантаження зовнішніх файлів, " +"особливо в мобільних мережах" + +#: inc/classes/admin/settings/class-page.php:1076 +msgid "Activate Preloading" +msgstr "Активувати Презавантаження" + +#: inc/classes/admin/settings/class-page.php:1095 +msgid "Activate sitemap-based cache preloading" +msgstr "Активуйте попереднє завантаження кешу на базі карти сайту" + +#: inc/classes/admin/settings/class-page.php:1114 +msgid "Sitemaps for preloading" +msgstr "Карти сайту для предзагрузки" + +#: inc/classes/admin/settings/class-page.php:1118 +msgid "Specify XML sitemap(s) to be used for preloading" +msgstr "" +"Вкажіть файл Sitemap XML, який буде використовуватися для попереднього " +"завантаження" + +#: inc/classes/admin/settings/class-page.php:1128 +msgid "URLs to prefetch" +msgstr "URL для кешування" + +#: inc/classes/admin/settings/class-page.php:1129 +msgid "" +"Specify external hosts to be prefetched (no http:, one per " +"line)" +msgstr "" +"Вкажіть зовнішні вузли, які потрібно попередньо завантажувати (не " +"http: один на рядок)" + +#: inc/classes/admin/settings/class-page.php:1152 +msgid "Advanced Rules" +msgstr "Розширені правила" + +#: inc/classes/admin/settings/class-page.php:1153 +msgid "Fine-tune cache rules" +msgstr "Розширені кеш правила" + +#: inc/classes/admin/settings/class-page.php:1162 +msgid "" +"Sensitive pages like custom login/logout URLs should be excluded from cache." +msgstr "" +"Чутливі сторінки, такі як користувацькі URL-адреси для входу/виходу, повинні" +" бути виключені з кешу." + +#: inc/classes/admin/settings/class-page.php:1165 +msgctxt "plugin name" +msgid "WooCommerce" +msgstr "WooCommerce" + +#: inc/classes/admin/settings/class-page.php:1167 +msgctxt "plugin name" +msgid "Easy Digital Downloads" +msgstr "Easy Digital Downloads" + +#: inc/classes/admin/settings/class-page.php:1169 +msgctxt "plugin name" +msgid "iThemes Exchange" +msgstr "iThemes Exchange" + +#: inc/classes/admin/settings/class-page.php:1171 +msgctxt "plugin name" +msgid "Jigoshop" +msgstr "Jigoshop" + +#: inc/classes/admin/settings/class-page.php:1173 +msgctxt "plugin name" +msgid "WP-Shop" +msgstr "WP-Магазин" + +#: inc/classes/admin/settings/class-page.php:1179 +#, php-format +msgid "" +"
      Cart, checkout and \"my account\" pages set in " +"%1$s%2$s%3$s will be detected and never cached by default." +msgstr "" +"
      Кошик, оформлення замовлення і кабінет покупця встановлюються в " +"%1$s%2$s%3$s визначаються автоматично, їх вказувати не " +"потрібно." + +#: inc/classes/admin/settings/class-page.php:1200 +msgid "Never Cache Cookies" +msgstr "Ніколи не кешувати файли cookie" + +#: inc/classes/admin/settings/class-page.php:1219 +msgid "Cache Query String(s)" +msgstr "Строки запиту кешу" + +#: inc/classes/admin/settings/class-page.php:1222 +#, php-format +msgid "" +"%1$sCache for query strings%2$s enables you to force caching for specific " +"GET parameters." +msgstr "" +"%1$sCache для запитів%2$s дозволяє примусово кешувати певні параметри GET." + +#: inc/classes/admin/settings/class-page.php:1236 +msgid "" +"Specify URLs of pages or posts that should never be cached (one per line)" +msgstr "" +"Вкажіть URL-адреси сторінок або публікацій, які ніколи не повинні кешуватися" +" (по одному на рядок)" + +#: inc/classes/admin/settings/class-page.php:1237 +#: inc/classes/admin/settings/class-page.php:1265 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*) " +"wildcards to address multiple URLs under a given path." +msgstr "" +"Частина URL домену буде видалена автоматично.
      Використовуйте символи (. " +"*) Для адреси декількох URL-адрес у заданому шляху." + +#: inc/classes/admin/settings/class-page.php:1246 +msgid "" +"Specify the IDs of cookies that, when set in the visitor's browser, should " +"prevent a page from getting cached (one per line)" +msgstr "" +"Вкажіть ідентифікатори файлів cookie, які, коли встановлюються у веб-" +"переглядачі відвідувача, повинні запобігати кешуванню сторінки (по одному на" +" рядок)" + +#: inc/classes/admin/settings/class-page.php:1254 +msgid "" +"Specify user agent strings that should never see cached pages (one per line)" +msgstr "" +"Вкажіть рядки агента користувача, які ніколи не повинні бачити кешовані " +"сторінки (по одному на рядок)" + +#: inc/classes/admin/settings/class-page.php:1255 +msgid "Use (.*) wildcards to detect parts of UA strings." +msgstr "Використовуйте символи (. *) Для виявлення частин рядків UA." + +#: inc/classes/admin/settings/class-page.php:1264 +msgid "" +"Specify URLs you always want purged from cache whenever you update any post " +"or page (one per line)" +msgstr "" +"Вкажіть URL-адреси, які завжди потрібно очищати від кешу, коли ви оновлюєте " +"будь-яку публікацію або сторінку (по одному на рядок)" + +#: inc/classes/admin/settings/class-page.php:1273 +msgid "Specify query strings for caching (one per line)" +msgstr "Вкажіть рядки запитів для кешування (по одному на рядок)" + +#: inc/classes/admin/settings/class-page.php:1301 +#: inc/deprecated/deprecated.php:1777 +msgid "Database" +msgstr "База даних" + +#: inc/classes/admin/settings/class-page.php:1302 +msgid "Optimize, reduce bloat" +msgstr "Оптимізуйте, зменшіть розмір" + +#: inc/classes/admin/settings/class-page.php:1311 +msgid "Post Cleanup" +msgstr "Очистка записів" + +#: inc/classes/admin/settings/class-page.php:1313 +msgid "" +"Post revisions and drafts will be permanently deleted. Do not use this " +"option if you need to retain revisions or drafts." +msgstr "" +"Перевірки публікації та чернетки видаляються назавжди. Не використовуйте цей" +" параметр, якщо потрібно зберегти зміни або чернетки." + +#: inc/classes/admin/settings/class-page.php:1321 +msgid "Comments Cleanup" +msgstr "Очищення коментарів" + +#: inc/classes/admin/settings/class-page.php:1323 +msgid "Spam and trashed comments will be permanently deleted." +msgstr "Спам та видалені коментарі буде видалено назавжди." + +#: inc/classes/admin/settings/class-page.php:1327 +msgid "Transients Cleanup" +msgstr "Очищення транзакцій" + +#: inc/classes/admin/settings/class-page.php:1329 +msgid "" +"Transients are temporary options; they are safe to remove. They will be " +"automatically regenerated as your plugins require them." +msgstr "" +"Транзакції це тимчасові налаштування, їх можна смело удалять. Вони будуть " +"створені автоматично, якщо потребуються плагину." + +#: inc/classes/admin/settings/class-page.php:1333 +msgid "Database Cleanup" +msgstr "Очищення бази даних" + +#: inc/classes/admin/settings/class-page.php:1335 +msgid "Reduces overhead of database tables" +msgstr "Зменшує накладні витрати на таблиці бази даних" + +#: inc/classes/admin/settings/class-page.php:1339 +msgid "Automatic cleanup" +msgstr "Авто очистка" + +#: inc/classes/admin/settings/class-page.php:1352 +#, php-format +msgid "%s revision in your database." +msgid_plural "%s revisions in your database." +msgstr[0] "%s ревізія у вашій базі даних." +msgstr[1] "%s ревізій у вашій базі даних." +msgstr[2] "%s ревізій у вашій базі даних." +msgstr[3] "%s ревізій у вашій базі даних." + +#: inc/classes/admin/settings/class-page.php:1362 +#, php-format +msgid "%s draft in your database." +msgid_plural "%s drafts in your database." +msgstr[0] "%s чернетка у вашій базі даних." +msgstr[1] "%s чернеток у вашій базі даних." +msgstr[2] "%s чернеток у вашій базі даних." +msgstr[3] "%s чернеток у вашій базі даних." + +#: inc/classes/admin/settings/class-page.php:1372 +#, php-format +msgid "%s trashed post in your database." +msgid_plural "%s trashed posts in your database." +msgstr[0] "%s видалений запис у вашій базі даних." +msgstr[1] "%s видалених записів у вашій базі даних." +msgstr[2] "%s видалених записів у вашій базі даних." +msgstr[3] "%s видалених записів у вашій базі даних." + +#: inc/classes/admin/settings/class-page.php:1382 +#, php-format +msgid "%s spam comment in your database." +msgid_plural "%s spam comments in your database." +msgstr[0] "%s спамний коментар у вашій базі даних." +msgstr[1] "%s спамних коментарів у вашій базі даних." +msgstr[2] "%s спамних коментарів у вашій базі даних." +msgstr[3] "%s спамних коментарів у вашій базі даних." + +#: inc/classes/admin/settings/class-page.php:1392 +#, php-format +msgid "%s trashed comment in your database." +msgid_plural "%s trashed comments in your database." +msgstr[0] "%s видалений коментар у вашій базі даних." +msgstr[1] "%s видалених коментарів у вашій базі даних." +msgstr[2] "%s видалених коментарів у вашій базі даних." +msgstr[3] "%s видалених коментарів у вашій базі даних." + +#: inc/classes/admin/settings/class-page.php:1402 +#, php-format +msgid "%s expired transient in your database." +msgid_plural "%s expired transients in your database." +msgstr[0] "У вашій базі даних %s тимчасові дані, строк дії яких закінчився." +msgstr[1] "У вашій базі даних %s тимчасових даних, строк дії яких закінчився." +msgstr[2] "У вашій базі даних %s тимчасових даних, строк дії яких закінчився." +msgstr[3] "У вашій базі даних %s тимчасових даних, строк дії яких закінчився." + +#: inc/classes/admin/settings/class-page.php:1410 +msgid "All transients" +msgstr "Всі перехідні" + +#: inc/classes/admin/settings/class-page.php:1412 +#, php-format +msgid "%s transient in your database." +msgid_plural "%s transients in your database." +msgstr[0] "У вашій базі даних %s тимчасові дані." +msgstr[1] "У вашій базі даних %s тимчасових даних." +msgstr[2] "У вашій базі даних %s тимчасових даних." +msgstr[3] "У вашій базі даних %s тимчасових даних." + +#: inc/classes/admin/settings/class-page.php:1420 +msgid "Optimize Tables" +msgstr "Оптимізувати таблиці" + +#: inc/classes/admin/settings/class-page.php:1422 +#, php-format +msgid "%s table to optimize in your database." +msgid_plural "%s tables to optimize in your database." +msgstr[0] "%s таблиця, яку можна оптимізувати, у вашій базі даних." +msgstr[1] "%s таблиць, які можна оптимізувати, у вашій базі даних." +msgstr[2] "%s таблиць, які можна оптимізувати, у вашій базі даних." +msgstr[3] "%s таблиць, які можна оптимізувати, у вашій базі даних." + +#: inc/classes/admin/settings/class-page.php:1433 +msgid "Schedule Automatic Cleanup" +msgstr "Розклад автоматичного очищення" + +#: inc/classes/admin/settings/class-page.php:1445 +msgid "Frequency" +msgstr "Частота" + +#: inc/classes/admin/settings/class-page.php:1453 +msgid "Daily" +msgstr "Щоденно" + +#: inc/classes/admin/settings/class-page.php:1454 +msgid "Weekly" +msgstr "Щотижня" + +#: inc/classes/admin/settings/class-page.php:1455 +msgid "Monthly" +msgstr "Щомісяця" + +#: inc/classes/admin/settings/class-page.php:1475 +msgid "Integrate your CDN" +msgstr "Інтегруйте свій CDN" + +#: inc/classes/admin/settings/class-page.php:1487 +msgid "" +"All URLs of static files (CSS, JS, images) will be rewritten to the CNAME(s)" +" you provide." +msgstr "" +"Всі URL(и) статичних файлів (CSS, JS, images) будуть переписані на надані " +"вами CNAME-адреси." + +#: inc/classes/admin/settings/class-page.php:1489 +#, php-format +msgid "" +"Not required for services like Cloudflare and Sucuri. Please see our " +"available %1$sAdd-ons%2$s." +msgstr "" +"Не потрібен для таких послуг, як Cloudflare і Sucuri. Перегляньте наші " +"доступні %1$sДодатки%2$s." + +#: inc/classes/admin/settings/class-page.php:1530 +#, php-format +msgid "" +"%1$s%2$s Add-on%3$s is currently enabled. Configuration of the CDN settings " +"is not required for %2$s to work on your site." +msgid_plural "" +"%1$s%2$s Add-ons%3$s are currently enabled. Configuration of the CDN " +"settings is not required for %2$s to work on your site." +msgstr[0] "" +"%1$s%2$s Додаток %3$s зараз активовано. Налаштування CDN для%2$s " +"необов'язково, щоб функціонувати на вашому сайті." +msgstr[1] "" +"%1$s%2$s Додатків %3$s зараз активовано. Налаштування CDN для%2$s " +"необов'язково, щоб функціонувати на вашому сайті." +msgstr[2] "" +"%1$s%2$s Додатків %3$s зараз активовано. Налаштування CDN для%2$s " +"необов'язково, щоб функціонувати на вашому сайті." +msgstr[3] "" +"%1$s%2$s Додатків %3$s зараз активовано. Налаштування CDN для%2$s " +"необов'язково, щоб функціонувати на вашому сайті." + +#: inc/classes/admin/settings/class-page.php:1557 +msgid "Enable Content Delivery Network" +msgstr "Увімкнути мережу доставки вмісту" + +#: inc/classes/admin/settings/class-page.php:1567 +msgid "CDN CNAME(s)" +msgstr "CDN CNAME(и)" + +#: inc/classes/admin/settings/class-page.php:1568 +msgid "Specify the CNAME(s) below" +msgstr "Укажіть нижче CNAME(и)" + +#: inc/classes/admin/settings/class-page.php:1575 +msgid "" +"Specify URL(s) of files that should not get served via CDN (one per line)." +msgstr "" +"Вкажіть URL-адреси файлів, які не можна подавати за допомогою CDN (по одному" +" на рядок)." + +#: inc/classes/admin/settings/class-page.php:1576 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*) " +"wildcards to exclude all files of a given file type located at a specific " +"path." +msgstr "" +"Частина URL домену буде видалена автоматично.
      Використовуйте символи (. " +"*) Для виключення всіх файлів певного типу файлів, розташованих на певному " +"шляху." + +#: inc/classes/admin/settings/class-page.php:1599 +#: inc/classes/admin/settings/class-page.php:1607 +msgid "Heartbeat" +msgstr "Серцебиття" + +#: inc/classes/admin/settings/class-page.php:1600 +msgid "Control WordPress Heartbeat API" +msgstr "Керуйте WordPress Heartbeat API" + +#: inc/classes/admin/settings/class-page.php:1608 +msgid "" +"Reducing or disabling the Heartbeat API’s activity can help save some of " +"your server’s resources." +msgstr "" +"Зменшення або вимкнення активності API Heartbeat може допомогти зберегти " +"деякі ресурси вашого сервера." + +#: inc/classes/admin/settings/class-page.php:1617 +msgid "Reduce or disable Heartbeat activity" +msgstr "Зменшити або відключити Серцебиття активність" + +#: inc/classes/admin/settings/class-page.php:1618 +msgid "" +"Reducing activity will change Heartbeat frequency from one hit each minute " +"to one hit every 2 minutes." +msgstr "" +"Зменшення активності змінить частоту серцевих скорочень з одного удару кожну" +" хвилину на один удар кожні 2 хвилини." + +#: inc/classes/admin/settings/class-page.php:1618 +msgid "" +"Disabling Heartbeat entirely may break plugins and themes using this API." +msgstr "" +"Вимкнення функції Heartbeat цілком може призвести до порушення плагінів і " +"тем за допомогою цього API." + +#: inc/classes/admin/settings/class-page.php:1632 +msgid "Do not limit" +msgstr "Не обмежується" + +#: inc/classes/admin/settings/class-page.php:1633 +msgid "Reduce activity" +msgstr "Знизити активність" + +#: inc/classes/admin/settings/class-page.php:1634 +msgid "Disable" +msgstr "Відключити" + +#: inc/classes/admin/settings/class-page.php:1642 +msgid "Control Heartbeat" +msgstr "Контроль серцебиття" + +#: inc/classes/admin/settings/class-page.php:1651 +msgid "Behavior in backend" +msgstr "Поведінка в бекенд" + +#: inc/classes/admin/settings/class-page.php:1658 +msgid "Behavior in post editor" +msgstr "Поведінка в редакторі записів" + +#: inc/classes/admin/settings/class-page.php:1664 +msgid "Behavior in frontend" +msgstr "Поведінка в фронтенд" + +#: inc/classes/admin/settings/class-page.php:1683 +#: views/settings/page-sections/tutorials.php:36 +msgid "Add-ons" +msgstr "Додатки" + +#: inc/classes/admin/settings/class-page.php:1684 +msgid "Add more features" +msgstr "Додайте інші функції" + +#: inc/classes/admin/settings/class-page.php:1691 +msgid "One-click Rocket Add-ons" +msgstr "Швидкі Rocket Додатки" + +#: inc/classes/admin/settings/class-page.php:1692 +msgid "" +"One-Click Add-ons are features extending available options without " +"configuration needed. Switch the option \"on\" to enable from this screen." +msgstr "" +"Додатки з одним натисканням - це функції, що розширюють доступні опції без " +"необхідної конфігурації. Щоб увімкнути цей екран, увімкніть \"on\" параметр." + +#: inc/classes/admin/settings/class-page.php:1702 +msgid "Rocket Add-ons" +msgstr "Rocket Надбудови" + +#: inc/classes/admin/settings/class-page.php:1703 +msgid "Rocket Add-ons are complementary features extending available options." +msgstr "Ракетні Додатки доповнюють додаткові можливості." + +#: inc/classes/admin/settings/class-page.php:1716 +msgid "Google Tracking" +msgstr "Google Tracking" + +#: inc/classes/admin/settings/class-page.php:1722 +msgid "Improve browser caching for Google Analytics" +msgstr "Покращення кешування веб-переглядача для Google Analytics" + +#: inc/classes/admin/settings/class-page.php:1724 +#, php-format +msgid "" +"WP Rocket will host these Google scripts locally on your server to help " +"satisfy the PageSpeed recommendation for Leverage browser " +"caching.
      %1$sLearn more%2$s" +msgstr "" +"WP Rocket буде розміщувати ці сценарії Google локально на вашому сервері, " +"щоб допомогти задовольнити рекомендацію PageSpeed для кешування " +"браузера.
      %1$sДокладніше%2$s" + +#: inc/classes/admin/settings/class-page.php:1739 +msgid "Facebook Pixel" +msgstr "Facebook Pixel" + +#: inc/classes/admin/settings/class-page.php:1745 +msgid "Improve browser caching for Facebook Pixel" +msgstr "Покращити кешування браузера для Facebook Pixel" + +#: inc/classes/admin/settings/class-page.php:1747 +#, php-format +msgid "" +"WP Rocket will host these Facebook Pixels locally on your server to help " +"satisfy the PageSpeed recommendation for Leverage browser " +"caching.
      %1$sLearn more%2$s" +msgstr "" +"WP Rocket буде розміщувати ці пікселі Facebook локально на вашому сервері, " +"щоб допомогти задовольнити рекомендацію PageSpeed для Кешування " +"браузера.
      %1$sДокладніше%2$s" + +#: inc/classes/admin/settings/class-page.php:1780 +msgid "Varnish" +msgstr "Varnish" + +#: inc/classes/admin/settings/class-page.php:1786 +msgid "If Varnish runs on your server, you must activate this add-on." +msgstr "" +"Якщо на вашому сервері запускається Varnish, необхідно активувати цей " +"додаток." + +#: inc/classes/admin/settings/class-page.php:1788 +#, php-format +msgid "" +"Varnish cache will be purged each time WP Rocket clears its cache to ensure " +"content is always up-to-date.
      %1$sLearn more%2$s" +msgstr "" +"Varnish кеш очищується разом з іншим кешем, щоб підтримувати актуальність " +"контенту.
      %1$sДетальніше%2$s" + +#: inc/classes/admin/settings/class-page.php:1803 +#: inc/classes/admin/settings/class-page.php:1863 +msgid "Cloudflare" +msgstr "Cloudflare" + +#: inc/classes/admin/settings/class-page.php:1809 +msgid "Integrate your Cloudflare account with this add-on." +msgstr "Інтегруйте свій обліковий запис Cloudflare з цим додатком." + +#: inc/classes/admin/settings/class-page.php:1810 +msgid "" +"Provide your account email, global API key, and domain to use options such " +"as clearing the Cloudflare cache and enabling optimal settings with WP " +"Rocket." +msgstr "" +"Надайте електронну пошту облікового запису, глобальний ключ API та домен для" +" використання таких параметрів, як очищення кешу Cloudflare та забезпечення " +"оптимальних параметрів за допомогою WP Rocket." + +#: inc/classes/admin/settings/class-page.php:1822 +msgid "Clear the Sucuri cache when WP Rocket’s cache is cleared." +msgstr "Очистіть кеш Sucuri, коли WP Rocket кеш буде очищено." + +#: inc/classes/admin/settings/class-page.php:1825 +msgid "" +"Provide your API key to clear the Sucuri cache when WP Rocket’s cache is " +"cleared." +msgstr "" +"Надайте ключ API, щоб очистити кеш Sucuri, коли кеш WP Rocket очищено." + +#: inc/classes/admin/settings/class-page.php:1833 +#: inc/classes/admin/settings/class-page.php:1982 +msgid "Sucuri" +msgstr "Sucuri" + +#: inc/classes/admin/settings/class-page.php:1839 +msgid "Synchronize Sucuri cache with this add-on." +msgstr "Синхронізуйте кеш Sucuri з цим додатком." + +#: inc/classes/admin/settings/class-page.php:1880 +msgid "Cloudflare credentials" +msgstr "Cloudflare облікові дані" + +#: inc/classes/admin/settings/class-page.php:1889 +msgid "Cloudflare settings" +msgstr "Cloudflare опції" + +#: inc/classes/admin/settings/class-page.php:1903 +msgctxt "Cloudflare" +msgid "Global API key:" +msgstr "Глобальний API ключ:" + +#: inc/classes/admin/settings/class-page.php:1904 +msgctxt "Cloudflare" +msgid "Find your API key" +msgstr "Знайдіть ваш API ключ" + +#: inc/classes/admin/settings/class-page.php:1916 +msgctxt "Cloudflare" +msgid "Account email" +msgstr "Email облікового запису" + +#: inc/classes/admin/settings/class-page.php:1925 +msgctxt "Cloudflare" +msgid "Zone ID" +msgstr "ID Зони" + +#: inc/classes/admin/settings/class-page.php:1935 +msgid "Development mode" +msgstr "Режим розробки" + +#: inc/classes/admin/settings/class-page.php:1937 +#, php-format +msgid "" +"Temporarily activate development mode on your website. This setting will " +"automatically turn off after 3 hours. %1$sLearn more%2$s" +msgstr "" +"Тимчасово активуйте режим розробки на своєму веб-сайті. Ця настройка " +"автоматично вимкнеться через 3 години. %1$sДокладніше%2$s" + +#: inc/classes/admin/settings/class-page.php:1945 +msgid "Optimal settings" +msgstr "Оптимальні опції" + +#: inc/classes/admin/settings/class-page.php:1946 +msgid "" +"Automatically enhances your Cloudflare configuration for speed, performance " +"grade and compatibility." +msgstr "" +"Автоматично покращує вашу конфігурацію Cloudflare для швидкості, якості " +"продуктивності та сумісності." + +#: inc/classes/admin/settings/class-page.php:1954 +msgid "Relative protocol" +msgstr "Відносний протокол" + +#: inc/classes/admin/settings/class-page.php:1955 +msgid "" +"Should only be used with Cloudflare's flexible SSL feature. URLs of static " +"files (CSS, JS, images) will be rewritten to use // instead of http:// or " +"https://." +msgstr "" +"Потрібно використовувати тільки Cloudflare's flexible SSL. URL адреси " +"статичних файлів (CSS, JS, зображення) будуть переписані для використання //" +" замість http:// або https://." + +#: inc/classes/admin/settings/class-page.php:1995 +msgid "Sucuri credentials" +msgstr "Sucuri облікові дані" + +#: inc/classes/admin/settings/class-page.php:2008 +msgctxt "Sucuri" +msgid "" +"Firewall API key (for plugin), must be in format {32 characters}/{32 " +"characters}:" +msgstr "" +"Ключ API брандмауера (для плагіна) повинен мати формат {32 " +"characters}/{32 characters}:" + +#: inc/classes/admin/settings/class-page.php:2009 +msgctxt "Sucuri" +msgid "Find your API key" +msgstr "Знайдіть ваш API ключ" + +#: inc/classes/admin/settings/class-render.php:496 +#: inc/deprecated/deprecated.php:1296 +msgid "Upload file and import settings" +msgstr "Завантажити налаштування файлу та імпортувати" + +#: inc/classes/admin/settings/class-settings.php:387 +msgid "" +"Sucuri Add-on: The API key for the Sucuri firewall must be in format " +"{32 characters}/{32 characters}." +msgstr "" +"Додаток Sucuri: Ключ API для брандмауера Sucuri повинен мати формат " +"{32 characters}/{32 characters} ." + +#: inc/classes/admin/settings/class-settings.php:478 +#: inc/deprecated/deprecated.php:1247 +msgid "Settings saved." +msgstr "Налаштування збережено." + +#: inc/classes/class-wp-rocket-requirements-check.php:147 +#, php-format +msgid "To function properly, %1$s %2$s requires at least:" +msgstr "Щоб правильно функціонувати,%1$s %2$s вимагає принаймні:" + +#: inc/classes/class-wp-rocket-requirements-check.php:151 +#, php-format +msgid "" +"PHP %1$s. To use this WP Rocket version, please ask your web host how to " +"upgrade your server to PHP %1$s or higher." +msgstr "" +"PHP %1$s Щоб скористатися цією версією WP Rocket, зверніться до веб-хосту, " +"як оновити ваш сервер до PHP %1$s або вище." + +#: inc/classes/class-wp-rocket-requirements-check.php:156 +#, php-format +msgid "" +"WordPress %1$s. To use this WP Rocket version, please upgrade WordPress to " +"version %1$s or higher." +msgstr "" +"WordPress %1$s. Щоб використовувати цю версію WP Rocket, оновіть WordPress " +"версії%1$s або вище." + +#: inc/classes/class-wp-rocket-requirements-check.php:159 +msgid "" +"If you are not able to upgrade, you can rollback to the previous version by " +"using the button below." +msgstr "" +"Якщо ви не можете оновити, можна повернутись до попередньої версії за " +"допомогою кнопки нижче." + +#: inc/classes/class-wp-rocket-requirements-check.php:161 +#: inc/deprecated/deprecated.php:1949 +#, php-format +msgid "Re-install version %s" +msgstr "Перевстановіть версію %s" + +#: inc/classes/logger/class-logger.php:253 +#: inc/classes/logger/class-logger.php:285 +msgid "The log file does not exist." +msgstr "Файл журналу не існує." + +#: inc/classes/logger/class-logger.php:259 +#: inc/classes/logger/class-logger.php:291 +msgid "The log file could not be read." +msgstr "Файл журналу неможливо прочитати." + +#: inc/classes/logger/class-logger.php:278 +msgid "The logs are not saved into a file." +msgstr "Журнали не зберігаються у файл." + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:88 +#: inc/classes/optimization/CSS/class-critical-css-generation.php:99 +#: inc/classes/optimization/CSS/class-critical-css-generation.php:110 +#: inc/classes/optimization/CSS/class-critical-css-generation.php:120 +#: inc/classes/optimization/CSS/class-critical-css-generation.php:142 +#, php-format +msgid "Critical CSS for %1$s not generated. Error: %2$s" +msgstr "Критичний CSS для %1$s не створено. Помилка:%2$s" + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:99 +msgid "The API returned an invalid response code." +msgstr "API повернув неправильний код відповіді." + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:110 +msgid "The API returned an empty response." +msgstr "API повернув порожню відповідь." + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:145 +#, php-format +msgid "The critical CSS content could not be saved as a file in %s." +msgstr "Критичний вміст CSS не може бути збережено як файл у %s." + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:154 +#, php-format +msgid "Critical CSS for %s generated." +msgstr "Створено критичний CSS для %s." + +#: inc/classes/preload/class-homepage.php:83 +#, php-format +msgid "" +"Preload encountered an error. Could not gather links on %1$s because of the " +"following error: %2$s. %3$sLearn more%4$s." +msgstr "" +"Попередня завантаження виникла помилка. Не вдалося зібрати посилання на %1$s" +" через таку помилку: %2$s. %3$sДокладніше%4$s." + +#: inc/classes/preload/class-homepage.php:96 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: %2$s. Security measures could be preventing access. " +"%3$sLearn more%4$s." +msgstr "" +"Попередня завантаження виникла помилка. %1$s недоступний через наступний код" +" відповіді: %2$s. Заходи безпеки можуть запобігати доступу. " +"%3$sДокладніше%4$s." + +#: inc/classes/preload/class-homepage.php:102 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: 404. Please make sure your homepage is accessible in your " +"browser. %2$sLearn more%3$s." +msgstr "" +"Попередня завантаження виникла помилка. %1$s недоступний через наступний код" +" відповіді: 404. Переконайтеся, що ваша домашня сторінка доступна у вашому " +"веб-переглядачі. %2$sДокладніше%3$s." + +#: inc/classes/preload/class-homepage.php:108 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: 500. Please check with your web host about server access. " +"%2$sLearn more%3$s." +msgstr "" +"Попередня завантаження виникла помилка. %1$s недоступний через наступний код" +" відповіді: 500. Будь ласка, зверніться до вашого веб-хосту про доступ до " +"сервера. %2$sДокладніше%3$s." + +#: inc/classes/preload/class-homepage.php:114 +#, php-format +msgid "" +"Preload encountered an error. Could not gather links on %1$s because it " +"returned the following response code: %2$s. %3$sLearn more%4$s." +msgstr "" +"Попередня завантаження виникла помилка. Не вдалося зібрати посилання на " +"%1$s, оскільки він повернув наступний код відповіді: %2$s. " +"%3$sДокладніше%4$s." + +#: inc/classes/preload/class-sitemap.php:138 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not gather links on %1$s because" +" of the following error: %2$s. %3$sLearn more%4$s." +msgstr "" +"У попередньому завантаженні мапи сайту сталася помилка. Не вдалося зібрати " +"посилання на%1$s через таку помилку:%2$s. %3$sДокладніше%4$s." + +#: inc/classes/preload/class-sitemap.php:153 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: %2$s. Security measures could be preventing access." +" %3$sLearn more%4$s." +msgstr "" +"У попередньому завантаженні мапи сайту сталася помилка. %1$s недоступний " +"через наступний код відповіді:%2$s. Заходи безпеки можуть запобігати " +"доступу. %3$sДокладніше%4$s." + +#: inc/classes/preload/class-sitemap.php:158 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: 404. Please make sure you entered the correct " +"sitemap URL and it is accessible in your browser. %2$sLearn more%3$s." +msgstr "" +"У попередньому завантаженні мапи сайту сталася помилка. %1$s недоступний " +"через наступний код відповіді: 404. Переконайтеся, що ви ввели правильний " +"URL-адресу мапи сайту, і він доступний у вашому браузері. " +"%2$sДокладніше%3$s." + +#: inc/classes/preload/class-sitemap.php:163 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: 500. Please check with your web host about server " +"access. %2$sLearn more%3$s." +msgstr "" +"У попередньому завантаженні мапи сайту сталася помилка. %1$s недоступний " +"через наступний код відповіді: 500. Будь ласка, зверніться до вашого веб-" +"хосту про доступ до сервера. %2$sДокладніше%3$s." + +#: inc/classes/preload/class-sitemap.php:168 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not gather links on %1$s because" +" it returned the following response code: %2$s. %3$sLearn more%4$s." +msgstr "" +"У попередньому завантаженні мапи сайту сталася помилка. Не вдалося зібрати " +"посилання на %1$s, оскільки він повернув наступний код відповіді:%2$s. " +"%3$sДокладніше%4$s." + +#: inc/classes/preload/class-sitemap.php:184 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not collect links from %1$s " +"because the file is empty. %2$sLearn more%3$s." +msgstr "" +"У попередньому завантаженні мапи сайту сталася помилка. Неможливо зібрати " +"посилання з %1$s, оскільки файл порожній. %2$sДокладніше%3$s." + +#: inc/classes/preload/class-sitemap.php:205 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not collect links from %1$s " +"because of an error during the XML sitemap parsing. %2$sLearn more%3$s." +msgstr "" +"У попередньому завантаженні мапи сайту сталася помилка. Не вдалося зібрати " +"посилання з %1$s через помилку під час синтаксичного аналізу XML. " +"%2$sДокладніше%3$s." + +#: inc/classes/subscriber/Cache/class-expired-cache-purge-subscriber.php:128 +msgid "WP Rocket Expired Cache Interval" +msgstr "Строк збереження кешу WP Rocket" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:267 +#, php-format +msgid "" +"You are using %1$s to serve WebP images so you do not need to enable this " +"option. If you prefer to have WP Rocket serve WebP for you instead, please " +"disable them from serving in %1$s. %2$sMore info%3$s" +msgid_plural "" +"You are using %1$s to serve WebP images so you do not need to enable this " +"option. If you prefer to have WP Rocket serve WebP for you instead, please " +"disable them from serving in %1$s. %2$sMore info%3$s" +msgstr[0] "" +"Ви використовуєте %1$s для надання зображень в WebP форматі, тож вам не " +"потрібно активувати цю опцію. Якщо ви хочете, щоб WP Rocket надав їх, будь " +"ласка, деактивуйте цей функціонал у %1$s. %2$sДетальніше%3$s" +msgstr[1] "" +"Ви використовуєте %1$s для надання зображень в WebP форматі, тож вам не " +"потрібно активувати цю опцію. Якщо ви хочете, щоб WP Rocket надав їх, будь " +"ласка, деактивуйте цей функціонал у %1$s. %2$sДетальніше%3$s" +msgstr[2] "" +"Ви використовуєте %1$s для надання зображень в WebP форматі, тож вам не " +"потрібно активувати цю опцію. Якщо ви хочете, щоб WP Rocket надав їх, будь " +"ласка, деактивуйте цей функціонал у %1$s. %2$sДетальніше%3$s" +msgstr[3] "" +"Ви використовуєте %1$s для надання зображень в WebP форматі, тож вам не " +"потрібно активувати цю опцію. Якщо ви хочете, щоб WP Rocket надав їх, будь " +"ласка, деактивуйте цей функціонал у %1$s. %2$sДетальніше%3$s" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:278 +msgid "WebP cache is disabled by filter." +msgstr "WebP кеш деактивовано фільтром." + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:288 +#: inc/classes/subscriber/Media/class-webp-subscriber.php:314 +#, php-format +msgid "" +"You are using %1$s to convert images to WebP. If you want WP Rocket to serve" +" them for you, activate this option. %2$sMore info%3$s" +msgid_plural "" +"You are using %1$s to convert images to WebP. If you want WP Rocket to serve" +" them for you, activate this option. %2$sMore info%3$s" +msgstr[0] "" +"Ви використовуєте %1$s для конвертації зображень в WebP формат. Якщо ви " +"хочете, щоб WP Rocket забезпечував їх, активуйте цю опцію. " +"%2$sДетальніше%3$s" +msgstr[1] "" +"Ви використовуєте %1$s для конвертації зображень в WebP формат. Якщо ви " +"хочете, щоб WP Rocket забезпечував їх, активуйте цю опцію. " +"%2$sДетальніше%3$s" +msgstr[2] "" +"Ви використовуєте %1$s для конвертації зображень в WebP формат. Якщо ви " +"хочете, щоб WP Rocket забезпечував їх, активуйте цю опцію. " +"%2$sДетальніше%3$s" +msgstr[3] "" +"Ви використовуєте %1$s для конвертації зображень в WebP формат. Якщо ви " +"хочете, щоб WP Rocket забезпечував їх, активуйте цю опцію. " +"%2$sДетальніше%3$s" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:300 +#: inc/classes/subscriber/Media/class-webp-subscriber.php:326 +#, php-format +msgid "" +"You are using %1$s to convert images to WebP. WP Rocket will create separate" +" cache files to serve your WebP images. %2$sMore info%3$s" +msgid_plural "" +"You are using %1$s to convert images to WebP. WP Rocket will create separate" +" cache files to serve your WebP images. %2$sMore info%3$s" +msgstr[0] "" +"Ви використовуєте %1$s для конвертації зображень в WebP формат. WP Rocket " +"створить окремий кеш, щоб забезпечити використання WebP зображень. " +"%2$sДетальніше%3$s" +msgstr[1] "" +"Ви використовуєте %1$s для конвертації зображень в WebP формат. WP Rocket " +"створить окремий кеш, щоб забезпечити використання WebP зображень. " +"%2$sДетальніше%3$s" +msgstr[2] "" +"Ви використовуєте %1$s для конвертації зображень в WebP формат. WP Rocket " +"створить окремий кеш, щоб забезпечити використання WebP зображень. " +"%2$sДетальніше%3$s" +msgstr[3] "" +"Ви використовуєте %1$s для конвертації зображень в WebP формат. WP Rocket " +"створить окремий кеш, щоб забезпечити використання WebP зображень. " +"%2$sДетальніше%3$s" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:347 +#, php-format +msgid "" +"You don’t seem to be using a method to create and serve WebP that we are " +"auto-compatible with. If you are not using WebP do not enable this option. " +"%1$sMore info%2$s" +msgstr "" +"Здається, ви не використовуєте метод створення та використання WebP " +"зображень, який міг би автоматично співпрацювати з WP Rocket. Якщо ви не " +"використовуєте WebP, не активуйте цю опцію. %1$sДетальніше%2$s" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:352 +msgid "We have not detected any compatible WebP plugin!" +msgstr "Ми не знайши жодого сумісного WebP плагіну!" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:355 +#, php-format +msgid "" +"If you activate this option WP Rocket will create separate cache files to " +"serve WebP images. Any WebP images you have on your site will be served from" +" these files to compatible browsers. If you don’t already have WebP images " +"on your site consider using %1$sImagify%3$s or another supported plugin. " +"%2$sMore info%3$s" +msgstr "" +"Якщо ви активуєте цю опцію, WP Rocket створить окремі файли кешу, щоб " +"забезпечити відображення картинок у WebP форматі. Усі зображення WebP, які є" +" на вашому сайті, будуть відображатися у браузерах, які підтримують цей " +"формат. Якщо у вас ще немає зображень у форматі WebP, ви можете їх " +"згенерувати за подомогою%1$sImagify%3$s або іншого сумісного плагіну. " +"%2$sДетальніше%3$s" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:367 +msgid "WP Rocket will create separate cache files to serve your WebP images." +msgstr "" +"WP Rocket створить окремий кеш, щоб забезпечити використання WebP зображень." + +#: inc/classes/subscriber/Optimization/class-critical-css-subscriber.php:77 +msgid "Critical CSS generation is currently running." +msgstr "Зараз іде генерація Критичного CSS." + +#: inc/classes/subscriber/Optimization/class-critical-css-subscriber.php:82 +#: inc/classes/subscriber/preload/class-preload-subscriber.php:210 +#, php-format +msgid "Go to the %1$sWP Rocket settings%2$s page to track progress." +msgstr "" +"Перейдіть на сторнінку %1$sНалаштування WP Rocket %2$s, щоб слідкувати за " +"прогресом. " + +#: inc/classes/subscriber/Optimization/class-critical-css-subscriber.php:185 +#, php-format +msgid "" +"Critical CSS generation is currently running: %1$d of %2$d page types " +"completed. (Refresh this page to view progress)" +msgstr "" +"Виконується створення критичних CSS: %1$d з %2$d типів сторінок уже " +"створено. (Оновити сторінку, щоб побачити процес)" + +#: inc/classes/subscriber/Optimization/class-critical-css-subscriber.php:236 +#, php-format +msgid "Critical CSS generation finished for %1$d of %2$d page types." +msgstr "Створення критичних CSS завершено для %1$d з %2$d типів сторінок." + +#: inc/classes/subscriber/Optimization/class-critical-css-subscriber.php:250 +msgid "Critical CSS generation encountered one or more errors." +msgstr "" +"Критичне CSS генерування зіткнулося з однією або декількома помилками." + +#: inc/classes/subscriber/Optimization/class-critical-css-subscriber.php:250 +msgid "Learn more." +msgstr "Вивчити більше." + +#: inc/classes/subscriber/Tools/class-cache-dir-size-check-subscriber.php:51 +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:87 +#: inc/classes/subscriber/class-facebook-tracking-cache-busting-subscriber.php:97 +#: inc/classes/subscriber/class-google-tracking-cache-busting-subscriber.php:154 +msgid "weekly" +msgstr "щотижня" + +#: inc/classes/subscriber/Tools/class-detect-missing-tags-subscriber.php:146 +#, php-format +msgid "" +"Failed to detect the following requirement in your theme: closing %1$s." +msgid_plural "" +"Failed to detect the following requirements in your theme: closing %1$s." +msgstr[0] "Не вдалося виявити наступну вимогу вашої теми: закриваємо %1$s." +msgstr[1] "Не вдалося виявити наступні вимоги вашої теми: закриваємо %1$s." +msgstr[2] "Не вдалося виявити наступні вимоги вашої теми: закриваємо %1$s." +msgstr[3] "Не вдалося виявити наступні вимоги вашої теми: закриваємо %1$s." + +#: inc/classes/subscriber/Tools/class-detect-missing-tags-subscriber.php:152 +#: inc/functions/cloudflare.php:40 inc/functions/cloudflare.php:64 +#: inc/functions/cloudflare.php:77 inc/functions/cloudflare.php:105 +#: inc/functions/cloudflare.php:122 inc/functions/cloudflare.php:479 +#: inc/functions/cloudflare.php:494 inc/functions/cloudflare.php:624 +#, php-format +msgid "Read the %1$sdocumentation%2$s for further guidance." +msgstr "Прочитайте %1$sдокументацію%2$s для подальших вказівок." + +#: inc/classes/subscriber/Tools/class-detect-missing-tags-subscriber.php:154 +msgid "" +"https://docs.wp-rocket.me/article/99-pages-not-cached-or-minify-cssjs-not-" +"working/?utm_source=wp_plugin&utm_medium=wp_rocket#theme" +msgstr "" +"https://docs.wp-rocket.me/article/99-pages-not-cached-or-minify-cssjs-not-" +"working/?utm_source=wp_plugin&utm_medium=wp_rocket#theme" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:93 +msgid "monthly" +msgstr "щомісячно" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:206 +msgid "Database optimization process is running" +msgstr "Процес оптимізації баз даних працює" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:237 +msgid "" +"Database optimization process is complete. Everything was already optimized!" +msgstr "Процес оптимізації баз даних завершено. Все вже було оптимізовано!" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:240 +msgid "" +"Database optimization process is complete. List of optimized items below:" +msgstr "" +"Процес оптимізації баз даних завершено. Список оптимізованих елементів " +"нижче:" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:248 +#, php-format +msgid "%1$d %2$s optimized." +msgstr "%1$d %2$s оптимізовано." + +#: inc/classes/subscriber/admin/Settings/class-page-subscriber.php:123 +#: inc/deprecated/deprecated.php:1788 +#: views/settings/page-sections/tools.php:33 +msgid "Tools" +msgstr "Інструменти" + +#: inc/classes/subscriber/admin/Settings/class-page-subscriber.php:124 +msgid "Import, Export, Rollback" +msgstr "Імпорт, Експорт, Відкат" + +#: inc/classes/subscriber/admin/Settings/class-page-subscriber.php:146 +#: views/settings/page-sections/imagify.php:14 +msgid "Image Optimization" +msgstr "Оптимізація зображень" + +#: inc/classes/subscriber/admin/Settings/class-page-subscriber.php:147 +msgid "Compress your images" +msgstr "Стиснути зображення" + +#: inc/classes/subscriber/admin/Settings/class-page-subscriber.php:165 +#: views/settings/page-sections/tutorials.php:45 +msgid "Tutorials" +msgstr "Підручники" + +#: inc/classes/subscriber/admin/Settings/class-page-subscriber.php:166 +msgid "Getting started and how to videos" +msgstr "Початок роботи та допоміжні відео" + +#: inc/classes/subscriber/preload/class-preload-subscriber.php:205 +msgid "Preload: WP Rocket has started preloading your website." +msgstr "Предзавантаження: WP Rocket почав збереження вашого сайту в кеш." + +#: inc/classes/subscriber/preload/class-preload-subscriber.php:249 +#, php-format +msgid "" +"Preload: %1$s uncached page has now been preloaded. (refresh to see " +"progress)" +msgid_plural "" +"Preload: %1$s uncached pages have now been preloaded. (refresh to see " +"progress)" +msgstr[0] "" +"Предзавантаження: %1$s незакешовану сторінку зараз було збережено (оновіть, " +"щоб бачити прогрес)" +msgstr[1] "" +"Предзавантаження: %1$s незакешованих сторінок зараз було збережено (оновіть," +" щоб бачити прогрес)" +msgstr[2] "" +"Предзавантаження: %1$s незакешованих сторінок зараз було збережено (оновіть," +" щоб бачити прогрес)" +msgstr[3] "" +"Предзавантаження: %1$s незакешованих сторінок зараз було збережено (оновіть," +" щоб бачити прогрес)" + +#: inc/classes/subscriber/preload/class-preload-subscriber.php:258 +msgid "The following error happened during gathering of the URLs to preload:" +msgid_plural "" +"The following errors happened during gathering of the URLs to preload:" +msgstr[0] "" +"В процесі збору урлів для Предзавантаження виникла наступна помилка:" +msgstr[1] "" +"В процесі збору урлів для Предзавантаження виникли наступні помилки:" +msgstr[2] "" +"В процесі збору урлів для Предзавантаження виникли наступні помилки:" +msgstr[3] "" +"В процесі збору урлів для Предзавантаження виникли наступні помилки:" + +#: inc/classes/subscriber/preload/class-preload-subscriber.php:310 +#, php-format +msgid "Preload complete: %d pages have been cached." +msgstr "Предзавантаження завершено: %d сторінок було закешовано." + +#: inc/classes/subscriber/preload/class-sitemap-preload-subscriber.php:115 +#, php-format +msgid "" +"%1$sSimpleXML PHP extension%2$s is not enabled on your server. Please " +"contact your host to enable it before running sitemap-based cache " +"preloading." +msgstr "" +"%1$sSimpleXML Розширення PHP%2$s не включено на вашому сервері. Зверніться " +"до свого хоста, щоб увімкнути його, перш ніж запускати попереднє " +"завантаження кешу на основі мапи сайту." + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:72 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"Please deactivate the following %s option which conflicts with WP Rocket " +"features:" +msgid_plural "" +"Please deactivate the following %s options which conflict with WP Rocket " +"features:" +msgstr[0] "" +"Будь ласка, деактивуйте таку %s опцію, яка конфліктує з функціоналом WP " +"Rocket:" +msgstr[1] "" +"Будь ласка, деактивуйте такі %s опції, які конфліктують з функціоналом WP " +"Rocket:" +msgstr[2] "" +"Будь ласка, деактивуйте такі %s опції, які конфліктують з функціоналом WP " +"Rocket:" +msgstr[3] "" +"Будь ласка, деактивуйте такі %s опції, які конфліктують з функціоналом WP " +"Rocket:" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:145 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sdisable emoji%3$s conflicts with WP Rockets %2$sdisable emoji%3$s" +msgstr "" +"%1$s %2$sвідключення emoji%3$s конфліктує з функцією WP Rocket " +"%2$sвідключення emoji%3$s" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:167 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sremove query strings%3$s conflicts with WP Rocket %2$sremove query " +"strings%3$s" +msgstr "" +"%1$s %2$sвидалення параметрів запиту %3$sконфліктує з функцією WP Rocket " +"%2$s видалення параметрів запиту %3$s" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:203 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sGZIP compression%3$s conflicts with WP Rocket %2$sGZIP " +"compression%3$s" +msgstr "" +"%1$s %2$sGZIP-компресія%3$s конфліктує з WP Rocket %2$sGZIP-компресією%3$s" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:239 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sbrowser caching%3$s conflicts with WP Rocket %2$sbrowser " +"caching%3$s" +msgstr "" +"%1$s %2$s браузерне кешування %3$s конфліктує з WP Rocket %2$s браузерним " +"кешуванням %3$s" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:271 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$spage caching%3$s conflicts with WP Rocket %2$spage caching%3$s" +msgstr "" +"%1$s %2$s кешування сторінок %3$s конфліктує з WP Rocket %2$s кешуванням " +"сторінок %3$s" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:305 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sasset optimization%3$s conflicts with WP Rocket %2$sfile " +"optimization%3$s" +msgstr "" +"%1$s %2$s оптимізація ресурсів %3$s конфліктує з Оптимізацією файлів %2$s WP" +" Rocket %3$s" + +#: inc/classes/subscriber/third-party/plugins/class-smush-subscriber.php:66 +msgid "Smush" +msgstr "Smush" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:122 +#, php-format +msgid "Sucuri cache purge error: %s" +msgstr "Помилка видалення кешу Sucuri: %s" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:127 +msgid "" +"The Sucuri cache is being cleared. Note that it may take up to two minutes " +"for it to be fully flushed." +msgstr "" +"Кеш Sucuri очищається. Зверніть увагу, що для заповнення може знадобитися до" +" двох хвилин." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:240 +msgid "Sucuri firewall API key was not found." +msgstr "Ключ API брандмауера Sucuri не знайдено." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:249 +msgid "Sucuri firewall API key is invalid." +msgstr "Ключ API брандмауера Sucuri недійсний." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:301 +msgid "Error when contacting Sucuri firewall API." +msgstr "Помилка під час звернення до API брандмауера Sucuri." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:311 +#, php-format +msgid "Error when contacting Sucuri firewall API. Error message was: %s" +msgstr "" +"Помилка під час звернення до API брандмауера Sucuri. Повідомлення про " +"помилку було: %s" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:322 +msgid "Could not get a response from the Sucuri firewall API." +msgstr "Не вдалося отримати відповідь від API брандмауера Sucuri." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:333 +msgid "Got an invalid response from the Sucuri firewall API." +msgstr "Отримано недійсний відповідь від API брандмауера Sucuri." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:343 +msgid "The Sucuri firewall API returned an unknown error." +msgstr "API брандмауера Sucuri повернув невідома помилка." + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:346 +#, php-format +msgid "The Sucuri firewall API returned the following error: %s" +msgid_plural "The Sucuri firewall API returned the following errors: %s" +msgstr[0] "API файєрволлу Sucuri видав таку помилку: %s" +msgstr[1] "API файєрволлу Sucuri видав такі помилки: %s" +msgstr[2] "API файєрволлу Sucuri видав такі помилки: %s" +msgstr[3] "API файєрволлу Sucuri видав такі помилки: %s" + +#: inc/classes/traits/trait-updater-api-tools.php:53 +#: inc/deprecated/3.3.php:761 inc/deprecated/3.3.php:770 +#, php-format +msgid "" +"An unexpected error occurred. Something may be wrong with WP-Rocket.me or " +"this server’s configuration. If you continue to have problems, contact support." +msgstr "" +"Виникла несподівана помилка. Щось може бути неправильним з WP-Rocket.me або " +"конфігурацією цього сервера. Якщо у вас виникнуть проблеми, зверніться до служби підтримки ." + +#: inc/common/admin-bar.php:125 inc/common/admin-bar.php:312 +#: inc/functions/i18n.php:40 inc/functions/i18n.php:49 +msgid "All languages" +msgstr "Всі мови" + +#: inc/common/admin-bar.php:152 +msgid "Clear this post" +msgstr "Очистити цей запис" + +#: inc/common/admin-bar.php:166 +msgid "Purge this URL" +msgstr "Очистіть цю URL-адресу" + +#: inc/common/admin-bar.php:192 +msgid "Purge OPcache" +msgstr "Очистити OPcache" + +#: inc/common/admin-bar.php:211 +msgid "Regenerate Critical Path CSS" +msgstr "Перестворити критичні CSS" + +#: inc/common/admin-bar.php:229 +msgid "Clear Cloudflare cache" +msgstr "Очистити Cloudflare кеш" + +#: inc/common/admin-bar.php:247 +msgid "Purge Sucuri cache" +msgstr "Purge Sucuri кеш" + +#: inc/common/admin-bar.php:270 inc/common/admin-bar.php:324 +#: views/settings/page-sections/dashboard.php:137 +msgid "Preload cache" +msgstr "Презавантаження кеш" + +#: inc/common/admin-bar.php:340 views/settings/partials/documentation.php:14 +msgid "Documentation" +msgstr "Документація" + +#: inc/common/purge.php:558 +msgid "OPcache purge failed." +msgstr "Не вдалося оновити OPcache кеш." + +#: inc/common/purge.php:563 +msgid "OPcache successfully purged" +msgstr "OPcache успішно оновлено" + +#: inc/common/purge.php:595 +#, php-format +msgid "WP Rocket: %s" +msgstr "WP Rocket: %s" + +#: inc/common/purge.php:600 +msgid "WP Rocket: Cloudflare cache successfully purged." +msgstr "WP Rocket: кеш Cloudflare успішно очищено." + +#: inc/deprecated/3.2.php:52 views/settings/page-sections/imagify.php:36 +msgid "Activate Imagify" +msgstr "Активувати Imagify" + +#: inc/deprecated/3.2.php:52 +msgid "Install Imagify for Free" +msgstr "Установіть Imagify безкоштовно" + +#: inc/deprecated/3.2.php:67 +msgid "" +"Speed up your website and boost your SEO by reducing image file sizes " +"without losing quality with Imagify." +msgstr "" +"Прискорити ваш сайт і збільшити ваш SEO за рахунок зменшення розмірів файлів" +" зображень без втрати якості за допомогою Imagify." + +#: inc/deprecated/3.2.php:72 +msgid "More details" +msgstr "Детальніше" + +#: inc/deprecated/3.2.php:228 +#, php-format +msgid "Sitemap preload: %d pages have been cached." +msgstr "Попереднє завантаження мапи сайту: %d сторінок було закешовано." + +#: inc/deprecated/3.2.php:261 +#, php-format +msgid "" +"Sitemap preload: %d uncached pages have now been preloaded. (refresh to see " +"progress)" +msgstr "" +"Попереднє завантаження Sitemap: попередньо закешовано %d сторінок. (оновити," +" щоб побачити прогрес)" + +#: inc/deprecated/3.4.php:18 +msgid "Choose a domain from the list" +msgstr "Виберіть домен зі списку" + +#: inc/deprecated/3.4.php:31 +msgid "No domain available in your Cloudflare account" +msgstr "Домен недоступний у вашому Cloudflare записі" + +#: inc/deprecated/deprecated.php:242 +msgid "JS files with Deferred Loading JavaScript" +msgstr "JS файли з Відкладеного завантаження JavaScript" + +#: inc/deprecated/deprecated.php:295 +msgid "Add URL" +msgstr "Додати URL" + +#: inc/deprecated/deprecated.php:1279 views/settings/fields/import-form.php:22 +msgid "" +"Before you can upload your import file, you will need to fix the following " +"error:" +msgstr "" +"Перш ніж ви зможете завантажити файл імпорту, необхідно буде виправити " +"наступну помилку:" + +#: inc/deprecated/deprecated.php:1290 views/settings/fields/import-form.php:35 +#, php-format +msgid "Choose a file from your computer (maximum size: %s)" +msgstr "Виберіть файл з вашого пк (максимальний розмір: %s)" + +#: inc/deprecated/deprecated.php:1387 +msgid "Your Cloudflare credentials are valid." +msgstr "Ваші облікові дані Cloudflare дійсні." + +#: inc/deprecated/deprecated.php:1391 +msgid "Your Cloudflare credentials are invalid!" +msgstr "Ваші облікові дані Cloudflare недійсні!" + +#: inc/deprecated/deprecated.php:1455 +msgid "Save and optimize" +msgstr "Зберегти та оптимізувати" + +#: inc/deprecated/deprecated.php:1455 +#: views/settings/page-sections/database.php:28 +msgid "Optimize" +msgstr "Оптимізувати" + +#: inc/deprecated/deprecated.php:1466 inc/deprecated/deprecated.php:1668 +msgctxt "screen-reader-text" +msgid "Note:" +msgstr "Примітка:" + +#: inc/deprecated/deprecated.php:1472 +msgctxt "screen-reader-text" +msgid "Performance tip:" +msgstr "Продуктивність поради:" + +#: inc/deprecated/deprecated.php:1478 +msgctxt "screen-reader-text" +msgid "Third-party feature detected:" +msgstr "Виявлено сторонній плагін:" + +#: inc/deprecated/deprecated.php:1490 inc/deprecated/deprecated.php:1674 +msgctxt "screen-reader-text" +msgid "Warning:" +msgstr "Увага:" + +#: inc/deprecated/deprecated.php:1503 +msgctxt "button text" +msgid "Download settings" +msgstr "Завантажити налаштування" + +#: inc/deprecated/deprecated.php:1533 +msgid "Replace site's hostname with:" +msgstr "Замінити ім'я хосту сайту на:" + +#: inc/deprecated/deprecated.php:1552 inc/deprecated/deprecated.php:1589 +#: inc/deprecated/deprecated.php:1617 views/settings/fields/cnames.php:32 +#: views/settings/fields/cnames.php:63 views/settings/fields/cnames.php:93 +msgid "reserved for" +msgstr "зарезервовано для" + +#: inc/deprecated/deprecated.php:1554 inc/deprecated/deprecated.php:1591 +#: inc/deprecated/deprecated.php:1619 views/settings/fields/cnames.php:35 +#: views/settings/fields/cnames.php:66 views/settings/fields/cnames.php:96 +msgid "All files" +msgstr "Усі файли" + +#: inc/deprecated/deprecated.php:1566 inc/deprecated/deprecated.php:1596 +#: inc/deprecated/deprecated.php:1624 views/settings/fields/cnames.php:47 +#: views/settings/fields/cnames.php:78 views/settings/fields/cnames.php:108 +msgid "Images" +msgstr "Зображення" + +#: inc/deprecated/deprecated.php:1637 views/settings/fields/cnames.php:119 +msgid "Add CNAME" +msgstr "Додати CNAME" + +#: inc/deprecated/deprecated.php:1708 views/settings/partials/sidebar.php:15 +msgid "Watch the video" +msgstr "Переглянути відео" + +#: inc/deprecated/deprecated.php:1773 +msgid "Basic" +msgstr "Основний" + +#: inc/deprecated/deprecated.php:1774 +msgid "Static Files" +msgstr "Статичні файли" + +#: inc/deprecated/deprecated.php:1776 +msgid "Advanced" +msgstr "Розширений" + +#: inc/deprecated/deprecated.php:1946 +#, php-format +msgid "" +"%1$s %2$s requires at least PHP %3$s to function properly. To use this " +"version, please ask your web host how to upgrade your server to PHP %3$s or " +"higher. If you are not able to upgrade, you can rollback to the previous " +"version by using the button below." +msgstr "" +"%1$s %2$s треба наявності версії PHP не нижче %3$s Щоб скористатися цією " +"функцією, зверніться до хостера з проханням підвищити версію PHP до %3$s і " +"вище. В іншому випадку, використовуйте стару версію плагіна." + +#: inc/functions/admin.php:23 +msgid "" +"There seems to be an issue validating your license. Please see the error " +"message below." +msgid_plural "" +"There seems to be an issue validating your license. You can see the error " +"messages below." +msgstr[0] "" +"Здається, виникла проблема з валідацією вашої ліцензії. Помилку зазначено " +"нижче." +msgstr[1] "" +"Здається, виникла проблема з валідацією вашої ліцензії. Помилки зазначені " +"нижче." +msgstr[2] "" +"Здається, виникла проблема з валідацією вашої ліцензії. Помилки зазначені " +"нижче." +msgstr[3] "" +"Здається, виникла проблема з валідацією вашої ліцензії. Помилки зазначені " +"нижче." + +#: inc/functions/admin.php:360 +msgid "Server type:" +msgstr "Тип сервера:" + +#: inc/functions/admin.php:369 +msgid "PHP version number:" +msgstr "Номер версії PHP:" + +#: inc/functions/admin.php:378 +msgid "WordPress version number:" +msgstr "Номер версії WordPress:" + +#: inc/functions/admin.php:387 +msgid "WordPress multisite:" +msgstr "WordPress мультисайт:" + +#: inc/functions/admin.php:396 +msgid "Current theme:" +msgstr "Поточна тема:" + +#: inc/functions/admin.php:405 +msgid "Current site language:" +msgstr "Мова поточного сайту:" + +#: inc/functions/admin.php:414 +msgid "Active plugins:" +msgstr "Активні плагіни:" + +#: inc/functions/admin.php:417 +msgid "Plugin names of all active plugins" +msgstr "Імена плагінів всіх активних плагінів" + +#: inc/functions/admin.php:423 +msgid "Anonymized WP Rocket settings:" +msgstr "Анонімні WP Rocket опції:" + +#: inc/functions/admin.php:426 +msgid "Which WP Rocket settings are active" +msgstr "Які настройки WP Rocket є активні" + +#: inc/functions/cloudflare.php:19 inc/functions/cloudflare.php:142 +msgid "" +"Curl is disabled on your server. Please ask your host to enable it. This is " +"required for the Cloudflare Add-on to work correctly." +msgstr "" +"Curl деактивовано на вашому сервері. Будь ласка, попросіть вашого хостера " +"ввімкнути його. Це потрібно, щоб Додаток Cloudflare працював коректно." + +#: inc/functions/cloudflare.php:27 +#, php-format +msgid "" +"Cloudflare email, API key and Zone ID are not set. Read the " +"%1$sdocumentation%2$s for further guidance." +msgstr "" +"Імейл, зареєстрований в Cloudflare, API key та Zone ID не вказані. Читайте " +"%1$sдокументацію%2$s для подальших інструкцій." + +#: inc/functions/cloudflare.php:29 inc/functions/cloudflare.php:42 +#: inc/functions/cloudflare.php:66 inc/functions/cloudflare.php:79 +#: inc/functions/cloudflare.php:107 inc/functions/cloudflare.php:124 +#: inc/functions/cloudflare.php:155 inc/functions/cloudflare.php:481 +#: inc/functions/cloudflare.php:496 inc/functions/cloudflare.php:626 +msgid "" +"https://docs.wp-rocket.me/article/18-using-wp-rocket-with-" +"cloudflare/?utm_source=wp_plugin&utm_medium=wp_rocket#add-on" +msgstr "" +"https://docs.wp-rocket.me/article/18-using-wp-rocket-with-" +"cloudflare/?utm_source=wp_plugin&utm_medium=wp_rocket#add-on" + +#: inc/functions/cloudflare.php:36 +msgid "Missing Cloudflare Zone ID." +msgstr "Не вказано Cloudflare Zone ID." + +#: inc/functions/cloudflare.php:60 inc/functions/cloudflare.php:118 +#: inc/functions/cloudflare.php:490 inc/functions/cloudflare.php:620 +msgid "Incorrect Cloudflare email address or API key." +msgstr "Невірний імейл або API ключ Cloudflare." + +#: inc/functions/cloudflare.php:73 inc/functions/cloudflare.php:475 +msgid "Incorrect Cloudflare Zone ID." +msgstr "Невірне значення Cloudflare Zone ID." + +#: inc/functions/cloudflare.php:101 +msgid "It looks like your domain is not set up on Cloudflare." +msgstr "Здається, що ваш домен не налаштовано у Cloudflare." + +#: inc/functions/cloudflare.php:153 +#, php-format +msgid "" +"Cloudflare email and API key are not set. Read the %1$sdocumentation%2$s for" +" further guidance." +msgstr "" +"Імейл, зареєстрований в Cloudflare, API key та Zone ID не вказані. Читайте " +"%1$sдокументацію%2$s для подальших інструкцій." + +#: inc/functions/cloudflare.php:218 +msgid "Connection to Cloudflare failed" +msgstr "Не вдалося підключитися до Cloudflare" + +#: inc/functions/options.php:535 inc/functions/options.php:574 +msgid "" +"License validation failed. Our server could not resolve the request from " +"your website." +msgstr "" +"Помилка перевірки ліцензії. Наш сервер не може вирішити запит з вашого веб-" +"сайту." + +#: inc/functions/options.php:535 inc/functions/options.php:574 +#, php-format +msgid "" +"Try clicking %1$sSave Changes%2$s below. If the error persists, follow " +"%3$sthis guide%4$s." +msgstr "" +"Спробуйте натиснути%1$sSave Changes %2$s нижче. Якщо помилка не зникає, " +"перейдіть %3$sв цю інструкцію%4$s." + +#: inc/functions/options.php:551 +msgid "" +"License validation failed. You may be using a nulled version of the plugin. " +"Please do the following:" +msgstr "" +"Помилка перевірки ліцензії. Можливо, ви використовуєте нульову версію " +"плагіна. Будь ласка, виконайте такі дії:" + +#: inc/functions/options.php:551 inc/functions/options.php:593 +#, php-format +msgid "Login to your WP Rocket %1$saccount%2$s" +msgstr "Увійдіть у свій WP Rocket%1$sаккаунт%2$s" + +#: inc/functions/options.php:551 inc/functions/options.php:593 +msgid "Download the zip file" +msgstr "Завантажте zip файл" + +#: inc/functions/options.php:551 inc/functions/options.php:593 +msgid "Reinstall" +msgstr "Перевстановити" + +#: inc/functions/options.php:551 +#, php-format +msgid "" +"If you do not have a WP Rocket account, please %1$spurchase a license%2$s." +msgstr "" +"Якщо у вас немає облікового запису WP Rocket, будь ласка,%1$sкупіть " +"ліцензію%2$s." + +#: inc/functions/options.php:559 +msgid "" +"License validation failed. This user account does not exist in our database." +msgstr "" +"Помилка перевірки ліцензії. Цей обліковий запис користувача не існує в нашій" +" базі даних." + +#: inc/functions/options.php:559 +msgid "To resolve, please contact support." +msgstr "Щоб вирішити, зверніться до служби підтримки." + +#: inc/functions/options.php:567 +msgid "License validation failed. This user account is blacklisted." +msgstr "" +"Помилка перевірки ліцензії. Цей обліковий запис користувача належить до " +"чорного списку." + +#: inc/functions/options.php:567 +#, php-format +msgid "Please see %1$sthis guide%2$s for more info." +msgstr "Дивіться %1$sце керівництво%2$s для отримання додаткової інформації." + +#: inc/functions/options.php:587 +msgid "Your license is not valid." +msgstr "Ваша ліцензія недійсна." + +#: inc/functions/options.php:587 +#, php-format +msgid "Make sure you have an active %1$sWP Rocket license%2$s." +msgstr "Переконайтеся, що у вас є активна %1$sWP Rocket ліцензія%2$s." + +#: inc/functions/options.php:589 +msgid "You have added as many sites as your current license allows." +msgstr "Ви додали стільки сайтів, скільки дозволяє поточна ліцензія." + +#: inc/functions/options.php:589 +#, php-format +msgid "" +"Upgrade your %1$saccount%2$s or %3$stransfer your license%2$s to this " +"domain." +msgstr "" +"Оновлення %1$sаккаунту%2$s або %3$sтрансфер ліцензії%2$s до цього домену." + +#: inc/functions/options.php:591 +msgid "This website is not allowed." +msgstr "Цей веб-сайт заборонений." + +#: inc/functions/options.php:591 +#, php-format +msgid "Please %1$scontact support%2$s." +msgstr "Будь ласка,%1$sзверніться в службу підтримки%2$s." + +#: inc/functions/options.php:593 +msgid "This license key is not recognized." +msgstr "Цей ліцензійний ключ не розпізнається." + +#: inc/functions/options.php:593 +#, php-format +msgid "If the issue persists, please %1$scontact support%2$s." +msgstr "Якщо проблема не зникне,%1$sзверніться до служби підтримки%2$s." + +#: inc/functions/options.php:599 +#, php-format +msgid "License validation failed: %s" +msgstr "Помилка перевірки ліцензії: %s" + +#: inc/vendors/classes/class-imagify-partner.php:531 +msgid "Plugin installed successfully." +msgstr "Плагін встановлений успішно." + +#: inc/vendors/classes/class-imagify-partner.php:532 +msgid "Sorry, you are not allowed to install plugins on this site." +msgstr "На жаль, вам не дозволяється встановлювати плагіни на цьому сайті." + +#: inc/vendors/classes/class-imagify-partner.php:533 +msgid "Sorry, you are not allowed to do that." +msgstr "На жаль, вам не дозволено це робити." + +#: inc/vendors/classes/class-imagify-partner.php:534 +msgid "Plugin install failed." +msgstr "Не вдалося встановити плагін." + +#: inc/vendors/classes/class-imagify-partner.php:535 +msgid "Go back" +msgstr "Повернутися назад" + +#: views/deactivation-intent/form.php:21 +msgid "Return" +msgstr "Повернутися" + +#: views/deactivation-intent/form.php:22 +msgid "WP Rocket feedback" +msgstr "WP Rocket зворотній зв'язок" + +#: views/deactivation-intent/form.php:24 +msgid "Close" +msgstr "Закрити" + +#: views/deactivation-intent/form.php:28 +msgid "May we have a little info about why you are deactivating?" +msgstr "Чи можемо ми мати трохи інформації про те, чому ви деактивуєтеся?" + +#: views/deactivation-intent/form.php:32 +msgid "" +"It is a temporary deactivation. I am just debugging an " +"issue." +msgstr "" +"Це тимчасове відключення Я проводжу дебаггінг проблеми." + +#: views/deactivation-intent/form.php:36 +msgid "The plugin broke my layout or some functionality." +msgstr "Плагін зламав мій макет або деяку функціональність." + +#: views/deactivation-intent/form.php:40 +msgid "My PageSpeed or GTMetrix score did not improve." +msgstr "Мій рейтинг PageSpeed або GTMetrix не покращився." + +#: views/deactivation-intent/form.php:44 +msgid "I did not notice a difference in loading time." +msgstr "Я не помітив різниці в часу завантаження." + +#: views/deactivation-intent/form.php:48 +msgid "The plugin is too complicated to configure." +msgstr "Додаток занадто складний для налаштування." + +#: views/deactivation-intent/form.php:52 +msgid "My host already has its own caching system." +msgstr "У мого хоста вже є своя система кешування." + +#: views/deactivation-intent/form.php:54 +msgid "What is the name of your web host?" +msgstr "Яка назва вашого веб-хостингу?" + +#: views/deactivation-intent/form.php:59 +msgid "Other" +msgstr "Інші" + +#: views/deactivation-intent/form.php:61 +msgid "" +"Let us know why you are deactivating WP Rocket so we can improve the plugin" +msgstr "" +"Дайте нам знати, чому ви дезактивуєте WP Rocket, щоб ми могли вдосконалити " +"плагін" + +#: views/deactivation-intent/form.php:69 +msgid "The plugin broke my layout or some functionality" +msgstr "Плагін зламав мою розкладку або деяку функціональність" + +#: views/deactivation-intent/form.php:70 +msgid "" +"This type of issue can usually be fixed by deactivating some options in WP " +"Rocket." +msgstr "" +"Цей тип випуску зазвичай може бути виправлений, вимкнувши деякі опції у WP " +"Rocket." + +#: views/deactivation-intent/form.php:71 +msgid "" +"Click \"Apply Safe Mode\" to quickly disable LazyLoad, File Optimization, " +"Embeds and CDN options. Then check your site to see if the issue has " +"resolved." +msgstr "" +"Натисніть кнопку \"Застосувати Безпечний Режим\", щоб швидко вимкнути опції " +"\"LazyLoad\", \"Оптимізацію файлів\", Embeds та CDN. Потім перевірте свій " +"сайт, щоб перевірити, чи вирішено проблему." + +#: views/deactivation-intent/form.php:73 +msgid "Apply safe mode" +msgstr "Ввімкнути безпечний режим" + +#: views/deactivation-intent/form.php:76 +msgid "Safe mode applied." +msgstr "Застосовано Безпечний режим." + +#: views/deactivation-intent/form.php:77 +msgid "Review your site in a private/logged out browser window." +msgstr "Перегляньте свій сайт у вікні приватного/вихідного веб-переглядача." + +#: views/deactivation-intent/form.php:79 +msgid "" +"Is the issue fixed? Now you can reactivate options one at a time to " +"determine which one caused the problem. More info" +msgstr "" +"Чи виправлена проблема? Тепер ви можете повторно активувати параметри по " +"черзі, щоб визначити, який з них викликав проблему. Детальніше" + +#: views/deactivation-intent/form.php:82 +msgid "My PageSpeed or GT Metrix score did not improve" +msgstr "Мій рейтинг PageSpeed або GT Metrix не покращився" + +#: views/deactivation-intent/form.php:83 +msgid "" +"WP Rocket makes your site faster. The PageSpeed grade or GTMetrix score are " +"not indicators of speed. Neither your real visitors, nor Google will ever " +"see your website’s “grade”. Speed is the only metric that matters for SEO " +"and conversions." +msgstr "" +"WP Rocket робить ваш сайт швидшим. Рейтинг PageSpeed або оцінка GTMetrix не " +"є показниками швидкості. Ні ваші реальні відвідувачі, ні Google ніколи не " +"побачать “оцінку“ вашого веб-сайту. Швидкість є єдиним показником, який має " +"значення для SEO та переходів." + +#: views/deactivation-intent/form.php:84 +msgid "Yoast, the expert on all things related to SEO for WordPress states:" +msgstr "" +"Yoast, експерт з усіх речей, пов'язаних із SEO для WordPress, говорить:" + +#: views/deactivation-intent/form.php:85 +msgid "" +"[Google] just looks at how fast your website loads for users, so you don’t " +"have to obsess over that specific score. You have to make sure your website " +"is as fast as you can get it." +msgstr "" +"[Google] просто розглядає, наскільки швидко ваш веб-сайт завантажується для " +"користувачів, так що вам не потрібно перейматися цим конкретним балом. Ви " +"повинні переконатися, що ваш веб-сайт так само швидкий, як і його можна " +"відкрити." + +#: views/deactivation-intent/form.php:88 +msgid "" +"How to measure the load time of your site:
      https" +"://wp-rocket.me/blog/correctly-measure-websites-page-load-time/" +msgstr "" +"Як виміряти час завантаження вашого сайту:
      https" +"://wp-rocket.me/blog/correctly-measure-websites-page-load-time/" + +#: views/deactivation-intent/form.php:89 +msgid "" +"Why you should not be chasing a PageSpeed score:
      https://wp-rocket.me/blog/the-truth-about-google-" +"pagespeed-insights/" +msgstr "" +"Чому ви не повинні переслідувати показник PageSpeed:
      https://wp-rocket.me/blog/the-truth-about-google-" +"pagespeed-insights/" + +#: views/deactivation-intent/form.php:92 +msgid "I did not notice a difference in loading time" +msgstr "Я не помітив різниці в часу завантаження" + +#: views/deactivation-intent/form.php:93 +msgid "" +"Make sure you look at your site while logged out to see the fast, cached " +"pages!" +msgstr "" +"Переконайтеся, що ви переглянули свій сайт під час виходу, щоб побачити " +"швидкі, кешовані сторінки!" + +#: views/deactivation-intent/form.php:94 +msgid "" +"The best way to see the improvement WP Rocket provides is to perform speed " +"tests. Follow this guide to correctly measure the load time of your " +"website:
      https://wp-rocket.me/blog/correctly-measure-websites-page-" +"load-time/" +msgstr "" +"Кращий спосіб побачити поліпшення WP Rocket забезпечує виконання тестів " +"швидкості. Щоб правильно виміряти час завантаження веб-сайту, дотримуйтеся " +"наведеного нижче посібника.
      https" +"://wp-rocket.me/blog/correctly-measure-websites-page-load-time/" + +#: views/deactivation-intent/form.php:97 +msgid "The plugin is too complicated to configure" +msgstr "Додаток занадто складний для налаштування" + +#: views/deactivation-intent/form.php:98 +msgid "We are sorry to hear you are finding it difficult to use WP Rocket." +msgstr "Нам дуже шкода, що вам важко використовувати WP Rocket." + +#: views/deactivation-intent/form.php:99 +#, php-format +msgid "" +"WP Rocket is the only caching plugin that provides 80% of best practices in " +"speed optimization, by default. That means you do not have to do anything " +"besides activate WP Rocket and your site will already be faster!" +msgstr "" +"WP Rocket - єдиний плагін кешування, який за замовчуванням забезпечує 80% " +"кращих практик оптимізації швидкості. Це означає, що вам не потрібно нічого " +"робити, окрім активації WP Rocket і ваш сайт буде вже швидше!" + +#: views/deactivation-intent/form.php:100 +msgid "" +"The additional options are not required for a fast site, they are for fine-" +"tuning." +msgstr "" +"Додаткові опції не потрібні для швидкого сайту, вони призначені для тонкої " +"настройки." + +#: views/deactivation-intent/form.php:101 +msgid "" +"To see the benefit WP Rocket is already providing, measure the speed of your" +" site using a tool like Pingdom:
      https" +"://wp-rocket.me/blog/correctly-measure-websites-page-load-time/" +msgstr "" +"Щоб побачити переваги, які WP Rocket вже надає, виміряйте швидкість вашого " +"сайту за допомогою інструмента, як-от Pingdom:
      https" +"://wp-rocket.me/blog/correctly-measure-websites-page-load-time/" + +#: views/deactivation-intent/form.php:106 +msgid "Send & Deactivate" +msgstr "Надіслати & Деактивувати" + +#: views/deactivation-intent/form.php:107 +msgid "Cancel" +msgstr "Скасувати" + +#: views/deactivation-intent/form.php:109 +msgid "Skip & Deactivate" +msgstr "Пропустити та деактивувати" + +#: views/settings/fields/cache-lifespan.php:26 +msgid "Clear cache after" +msgstr "Очистити кеш після" + +#: views/settings/fields/cnames.php:49 views/settings/fields/cnames.php:80 +#: views/settings/fields/cnames.php:110 +msgid "CSS & JavaScript" +msgstr "CSS & JavaScript" + +#: views/settings/fields/cnames.php:50 views/settings/fields/cnames.php:81 +#: views/settings/fields/cnames.php:111 +msgid "JavaScript" +msgstr "JavaScript" + +#: views/settings/fields/cnames.php:51 views/settings/fields/cnames.php:82 +#: views/settings/fields/cnames.php:112 +msgid "CSS" +msgstr "CSS" + +#: views/settings/fields/import-form.php:29 +msgid "Import settings" +msgstr "Імпорт опції" + +#: views/settings/fields/one-click-addon.php:40 +#: views/settings/fields/rocket-addon.php:31 +#: views/settings/fields/sliding-checkbox.php:25 views/settings/page.php:55 +msgctxt "Active state of checkbox" +msgid "On" +msgstr "Так" + +#: views/settings/fields/one-click-addon.php:41 +#: views/settings/fields/rocket-addon.php:32 +#: views/settings/fields/sliding-checkbox.php:26 views/settings/page.php:56 +msgctxt "Inactive state of checkbox" +msgid "Off" +msgstr "Ні" + +#: views/settings/fields/one-click-addon.php:42 +#: views/settings/fields/rocket-addon.php:33 +msgid "Add-on status" +msgstr "Стан Додатку" + +#: views/settings/fields/rocket-addon.php:56 +msgid "Modify options" +msgstr "Змінити параметри" + +#: views/settings/page-sections/cloudflare.php:27 +msgid "Cloudflare Cache" +msgstr "Cloudflare Кеш" + +#: views/settings/page-sections/cloudflare.php:35 +#: views/settings/page-sections/sucuri.php:36 +#, php-format +msgid "Purges cached resources for your website. %s" +msgstr "Очищає кешовані ресурси для вашого веб-сайту. %s" + +#: views/settings/page-sections/cloudflare.php:36 +msgid "https://support.cloudflare.com/hc/en-us/articles/200169246" +msgstr "https://support.cloudflare.com/hc/en-us/articles/200169246" + +#: views/settings/page-sections/cloudflare.php:36 +#: views/settings/page-sections/sucuri.php:37 +msgid "Learn more" +msgstr "Дізнатись більше" + +#: views/settings/page-sections/cloudflare.php:45 +msgid "Clear all Cloudflare cache files" +msgstr "Видалити всі файли Cloudflare кешу" + +#: views/settings/page-sections/dashboard.php:38 +msgid "Congratulations!" +msgstr "Вітаю!" + +#: views/settings/page-sections/dashboard.php:40 +msgid "WP Rocket is now activated and already working for you." +msgstr "WP Rocket тепер активована і вже працює для вас." + +#: views/settings/page-sections/dashboard.php:42 +msgid "Your website should be loading faster now!" +msgstr "Ваш веб-сайт зараз завантажується швидше!" + +#: views/settings/page-sections/dashboard.php:44 +#, php-format +msgid "" +"To guarantee fast websites, WP Rocket applies 80% of web performance best " +"practices." +msgstr "" +"Щоб гарантувати швидкий веб-сайт, WP Rocket застосовує 80% oнайкращих " +"практик роботи в Інтернеті." + +#: views/settings/page-sections/dashboard.php:44 +msgid "" +"We also enable options that provide immediate benefits to your website." +msgstr "" +"Ми також активуємо варіанти, які надають негайні вигоди для вашого веб-" +"сайту." + +#: views/settings/page-sections/dashboard.php:45 +msgid "Continue to the options to further optimize your site!" +msgstr "Перейдіть до опцій для подальшої оптимізації свого сайту!" + +#: views/settings/page-sections/dashboard.php:55 +msgid "My Account" +msgstr "Мій аккаунт" + +#: views/settings/page-sections/dashboard.php:61 +msgid "Refresh info" +msgstr "Оновити інфо" + +#: views/settings/page-sections/dashboard.php:75 +msgid "Expiration Date" +msgstr "Дата закінчення" + +#: views/settings/page-sections/dashboard.php:84 +msgid "View my account" +msgstr "Переглянути Мій аккаунт" + +#: views/settings/page-sections/dashboard.php:104 +msgid "Quick Actions" +msgstr "Швидкі дії" + +#: views/settings/page-sections/dashboard.php:111 +msgid "Remove all cached files" +msgstr "Видалити всі кешовані файли" + +#: views/settings/page-sections/dashboard.php:131 +msgid "Start cache preloading" +msgstr "Почати завантаження кешу" + +#: views/settings/page-sections/dashboard.php:156 +msgid "Purge OPCache content" +msgstr "Очистити вміст OPCache" + +#: views/settings/page-sections/dashboard.php:162 +msgid "Purge OPCache" +msgstr "Очистити OPCache" + +#: views/settings/page-sections/dashboard.php:173 +#: views/settings/page-sections/dashboard.php:179 +msgid "Regenerate Critical CSS" +msgstr "Перестворити критичні CSS" + +#: views/settings/page-sections/dashboard.php:196 +msgid "Frequently Asked Questions" +msgstr "Часті Питання" + +#: views/settings/page-sections/dashboard.php:209 +msgid "Still cannot find a solution?" +msgstr "Ще не можете знайти рішення?" + +#: views/settings/page-sections/dashboard.php:210 +msgid "" +"Submit a ticket and get help from our friendly and knowledgeable Rocketeers." +msgstr "" +"Надішліть тікет і отримайте допомогу від наших дружніх і обізнаних " +"Rocketeers." + +#: views/settings/page-sections/dashboard.php:218 +msgid "Ask support" +msgstr "Запитайте підтримку" + +#: views/settings/page-sections/database.php:25 +msgid "Backup your database before you run a cleanup!" +msgstr "Резервує вашу базу даних перед тим, як запустити очищення!" + +#: views/settings/page-sections/database.php:26 +msgid "" +"Once a database optimization has been performed, there is no way to undo it." +msgstr "" +"Після того, як оптимізація бази даних була виконана, її неможливо скасувати." + +#: views/settings/page-sections/imagify.php:21 +#, php-format +msgid "" +"%1$sWP ROCKET%2$s created %3$sIMAGIFY%4$s %1$sfor best-in-class image " +"optimization.%2$s" +msgstr "" +"%1$sWP ROCKET%2$s створено%3$sIMAGIFY%4$s %1$sдля найкращої оптимізації " +"зображень.%2$s" + +#: views/settings/page-sections/imagify.php:24 +msgid "" +"Compress image to make your website faster, all while maintaining image " +"quality." +msgstr "" +"Стисніть зображення, щоб зробити ваш веб-сайт швидшим, зберігаючи якість " +"зображення." + +#: views/settings/page-sections/imagify.php:25 +msgid "More on Imagify:" +msgstr "Більше про Imagify:" + +#: views/settings/page-sections/imagify.php:27 +msgid "Imagify Plugin Page" +msgstr "Imagify сторінка плагіна" + +#: views/settings/page-sections/imagify.php:28 +msgid "Imagify Website" +msgstr "Imagify вебсайт" + +#: views/settings/page-sections/imagify.php:29 +msgid "Review of Image Compression Plugins" +msgstr "Огляд плагінів Стиснення зображень" + +#: views/settings/page-sections/imagify.php:38 +msgid "Install Imagify" +msgstr "Встановити Imagify" + +#: views/settings/page-sections/license.php:22 +msgid "WP Rocket was not able to automatically validate your license." +msgstr "WP Rocket не зміг автоматично перевірити вашу ліцензію." + +#: views/settings/page-sections/license.php:27 +#, php-format +msgid "" +"Follow this tutorial, or contact support to get the engine started." +msgstr "" +"Дотримуйтесь цього посібника або " +"зверніться до служби підтримки, щоб " +"запустити движок." + +#: views/settings/page-sections/license.php:27 +msgid "" +"https://docs.wp-rocket.me/article/100-resolving-problems-with-license-" +"validation/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://docs.wp-rocket.me/article/100-resolving-problems-with-license-" +"validation/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: views/settings/page-sections/sucuri.php:46 +msgid "Clear all Sucuri cache files" +msgstr "Видалити всі файли Sucuri кешу" + +#: views/settings/page-sections/tools.php:20 +#, php-format +msgid "Files size: %1$s. Number of entries: %2$s." +msgstr "Розмір файлів: %1$s. Кількість записів: %2$s." + +#: views/settings/page-sections/tools.php:23 +#, php-format +msgid "%1$sDownload the file%2$s." +msgstr "%1$sЗавантажити файл%2$s." + +#: views/settings/page-sections/tools.php:26 +#, php-format +msgid "%1$sDelete the file%2$s." +msgstr "%1$sВидалити файл%2$s." + +#: views/settings/page-sections/tools.php:37 +msgid "Export settings" +msgstr "Експортувати налаштування" + +#: views/settings/page-sections/tools.php:38 +msgid "Download a backup file of your settings" +msgstr "Завантажте резервну копію Ваших налаштувань" + +#: views/settings/page-sections/tools.php:43 +msgid "Download settings" +msgstr "Завантажити налаштування" + +#: views/settings/page-sections/tools.php:56 +msgid "Rollback" +msgstr "Відкат" + +#: views/settings/page-sections/tools.php:60 +#, php-format +msgid "Has version %s caused an issue on your website?" +msgstr "Чи є проблема з версією %s на вашому веб-сайті?" + +#: views/settings/page-sections/tools.php:62 +msgid "" +"You can rollback to the previous major version here.
      Then send us a " +"support request." +msgstr "" +"Ви можете повернутися до попередньої основної версії тут.
      Потім " +"надішліть нам запит на підтримку." + +#: views/settings/page-sections/tools.php:69 +#, php-format +msgid "Reinstall version %s" +msgstr "Перевстановити версію %s" + +#: views/settings/page-sections/tools.php:85 +msgid "Debug mode" +msgstr "Режим налагодження" + +#: views/settings/page-sections/tools.php:90 +msgid "Create a debug log file." +msgstr "Створіть файл журналу налагодження." + +#: views/settings/page-sections/tutorials.php:13 +#: views/settings/partials/getting-started.php:18 +msgid "Getting Started" +msgstr "Розпочнемо" + +#: views/settings/page-sections/tutorials.php:15 +msgid "Getting Started with WP Rocket" +msgstr "Розпочнемо з WP Rocket" + +#: views/settings/page-sections/tutorials.php:16 +#: views/settings/partials/getting-started.php:12 +msgid "Finding the Best Settings for Your Site" +msgstr "Пошук найкращих налаштувань для Вашого сайту" + +#: views/settings/page-sections/tutorials.php:17 +#: views/settings/partials/getting-started.php:13 +msgid "How to Check if WP Rocket is Caching Your Site" +msgstr "Як перевірити, чи WP Rocket кешує ваш сайт" + +#: views/settings/page-sections/tutorials.php:18 +#: views/settings/partials/getting-started.php:14 +msgid "How to Measure the Speed of Your Site" +msgstr "Як виміряти швидкість вашого сайту" + +#: views/settings/page-sections/tutorials.php:24 +msgid "Troubleshooting Display Issues with File Optimization" +msgstr "Вирішення проблем з відображенням через Оптимізацію файлів" + +#: views/settings/page-sections/tutorials.php:25 +msgid "How to Find the Right JavaScript to Exclude" +msgstr "Як знайти правильний JavaScript для виключення" + +#: views/settings/page-sections/tutorials.php:26 +msgid "How External Content Slows Your Site" +msgstr "Як зовнішній контент уповільнює Ваш сайт" + +#: views/settings/page-sections/tutorials.php:32 +msgid "How Preloading Works" +msgstr "Як працює Предзавантаження" + +#: views/settings/page-sections/tutorials.php:38 +msgid "Set Up the Cloudflare Add-on" +msgstr "Налаштувати Додаток Cloudflare" + +#: views/settings/page.php:16 +msgid "WP Rocket Settings" +msgstr "WP Rocket Налаштування" + +#: views/settings/page.php:30 +#, php-format +msgid "version %s" +msgstr "версія %s" + +#: views/settings/page.php:57 +msgid "Show Sidebar" +msgstr "Показати сайдбар" + +#: views/settings/page.php:76 +msgid "Thanks for choosing to participate in the WP Rocket beta program!" +msgstr "Дякуємо за участь у бета-програмі WP Rocket!" + +#: views/settings/page.php:77 +msgid "" +"A beta version is usually one that has new features and improvements, but we" +" want to test it a little more before full launch." +msgstr "" +"Зазвичай бета-версія - це нові функції та вдосконалення, але ми хочемо " +"протестувати їх ще трохи перед повним запуском." + +#: views/settings/page.php:78 +msgid "" +"We’d love it if you took our beta versions for a ride, but please keep in " +"mind that it might be less stable than our other releases. Don’t worry, you " +"can switch back to a full release version at any time." +msgstr "" +"Ми будемо любити це, якщо б ви взяли наші бета-версії для їзди, але, будь " +"ласка, майте на увазі, що це може бути менш стабільним, ніж наші інші " +"випуски. Не хвилюйтеся, ви можете будь-коли повернутися до повної версії." + +#: views/settings/page.php:79 +msgid "" +"Your mission: please send all feedback about our beta versions, including " +"bug reports, to support@wp-rocket.me" +msgstr "" +"Ваша місія: будь-ласка, відправте всі відгуки про наші бета-версії, " +"включаючи повідомлення про помилки, на адресу support@wp-rocket.me" + +#: views/settings/page.php:81 +msgid "If you don’t want to join the beta program, simply close this window." +msgstr "" +"Якщо ви не хочете приєднуватися до бета-програми, просто закрийте це вікно." + +#: views/settings/page.php:83 +msgid "Activate Rocket Tester" +msgstr "Активізувати Rocket тестер" + +#: views/settings/page.php:94 +msgid "" +"Below is a detailed view of all data WP Rocket will collect if " +"granted permission." +msgstr "" +"Нижче наведено детальний перегляд всіх даних, які WP Rocket збиратиме, " +"якщо надано дозвіл." + +#: views/settings/page.php:97 +msgid "" +"WP Rocket will never transmit any domain names or email addresses (except " +"for license validation), IP addresses, or third-party API keys." +msgstr "" +"WP Rocket ніколи не буде передавати будь-які доменні імена або адреси " +"електронної пошти (крім перевірки ліцензії), IP-адреси або ключі API " +"сторонніх виробників." + +#: views/settings/page.php:99 +msgid "Activate Rocket analytics" +msgstr "Активувати Rocket analytics" + +#: views/settings/partials/documentation.php:15 +msgid "It is a great starting point to fix some of the most common issues." +msgstr "" +"Це чудова відправна точка для виправлення деяких найбільш поширених проблем." + +#: views/settings/partials/documentation.php:19 +msgid "Read the documentation" +msgstr "Прочитайте документацію" + +#: views/settings/partials/getting-started.php:11 +msgid "What WP Rocket Does For You By Default" +msgstr "Що WP Rocket для вас робить одразу після активації:" + +#: views/settings/partials/sidebar.php:12 +msgid "How to correctly measure your website’s loading time" +msgstr "Як правильно виміряти час завантаження веб-сайту" + +#: views/settings/partials/sidebar.php:14 +msgid "Check our tutorial and learn how to measure the speed of your site." +msgstr "" +"Перегляньте наш підручник і дізнайтеся, як виміряти швидкість вашого сайту." + +#: views/settings/partials/sidebar.php:18 +msgid "" +"Learn how to use best practices to correctly measure your site's " +"performance." +msgstr "Дізнайтеся, як правильно оцінювати ефективність вашого сайту." + +#: views/settings/partials/sidebar.php:19 +msgid "" +"https://wp-rocket.me/blog/correctly-measure-websites-page-load-" +"time/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://wp-rocket.me/blog/correctly-measure-websites-page-load-" +"time/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: views/settings/partials/sidebar.php:19 +msgid "Read our guide" +msgstr "Прочитайте наш гід" + +#: views/settings/partials/sidebar.php:22 +msgid "Why Google PageSpeed grade should not matter" +msgstr "Чому Google PageSpeed клас не має значення" + +#: views/settings/partials/sidebar.php:23 +msgid "" +"https://wp-rocket.me/blog/the-truth-about-google-pagespeed-" +"insights/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://wp-rocket.me/blog/the-truth-about-google-pagespeed-" +"insights/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: views/settings/partials/sidebar.php:23 +msgid "Read more" +msgstr "Читати далі" + +#: views/settings/partials/sidebar.php:28 +msgid "You have not activated logged-in user cache." +msgstr "Ви не активували кеш для зареєстрованих користувачів." + +#: views/settings/partials/sidebar.php:29 +msgid "" +"Use a private browser to check your website's speed and visual appearance." +msgstr "" +"Використовуйте приватний веб-переглядач, щоб перевірити швидкість і " +"візуальність вашої веб-сторінки." + +#: views/settings/sections/addons-container.php:24 +#: views/settings/sections/fields-container.php:28 +msgid "Need Help?" +msgstr "Потрібна допомога?" diff --git a/wp-content/plugins/wp-rocket/languages/rocket-zh_CN.mo b/wp-content/plugins/wp-rocket/languages/rocket-zh_CN.mo new file mode 100644 index 0000000000000000000000000000000000000000..1da7cb981281d37c947516b18ee5b20f37d99990 GIT binary patch literal 89375 zcmdR%2b^71wg1lu2n6X>q#R0UW+sI`2_>YFkTRwaih?&YcM6%AJIQ!#fk5f${Ih|lu>{?^*(+;fvj3_gAT|9?I?`JG+P zu4}Kg_S)tC=N{WGj`;ib2cqZz@Tz^H=;dvq=obUz8$~+|i=w^29l<|?2Z48j2c8l| zb>MU0yWkF|M$x`tbXpYc2kZyxyTRb6z|r8j;K~rb$LUeDKkko$qrlPN?%?&{r@?!{ zlfnImN6{_dRPX|@7n}}`Im7c?3iiYO9JmMg5=c>^?}OvOy+%aQ3E+j`MDR9{Dnuo4 zBzP$Q$-fEIch7?Q?zbTSqSGmy(wz^ges=_XGT_(2^YQ-)cnLUcbQCQIp9il1o5w^^ z2lyta@QM$uC6U9c9soy-pcUjwOX^lR`l;IU^#(dWRY!0o}a$4Aj_ z;055GU;(7-qAS4y|7XCDfZqTQ1WTaeZ!^K$e_!xO+(W>_!Sldf!OK8>cN4fH z_!y{szX+81Jw?*CwX~p19!sxaKNWPmE#4l0sNQXe|%jOZHId}SObm;?pdJHzXbdkxG1>a z0M$;v1J%Df5m*l%2L11FxkuB41NfACn*2Rz}>(rL-?(r^1m0{1$+?P8+;nP z5BvuBLGYp}&_4Jna0GY{sQ&pWcr5rAQ2lxA)F_IeXcegP{Q>L;MrV6J?F1^_!$I}WaBvUsz_-9daPP+8+y@*2s{h7<{lRAN0`NvK2mTUl0wH4 z@!%)HhryxX_7{3PjR0fZGr$wUE5TF1)nGOF9@q^Y`AIMLJ)rVk0bUM%4^+FKopZWt z10l8O5>Wm9DyZ@IeNf}{$DrD!7d#Mr4^(^ZJA*z08^EK$<>0p9>!9f6KLV}?mCkQK z(aV2>N^hTf=MzVQ8s7uK)4)@}{lH5>rGFc^7x)uUK(*_I;E%ys;5WdtAzqDxxEUD%o&{<=UJt4r?f~`O=Ru95FM(>O?}8r&e+BLe z?$F}l`+;(Q6x;?J3W|T61}*|8f~xnAL6z&bpz`1TB5$7|pu*1shk+fS%JBq9k)szt z)wlmlr-PG0m1hKa5O@K&FL)_<7`PZ52|f?1eg6#Z1b(R1>$M-K@(u*`{b``u?*edp za2}{~EC9!XUj-F^*S07+9y}Nv2u=fc1m}a3z?;DBz#oH$gC$UO(y!ge(ZS$HaZd#M zgBOD*fcJs3!Ph}ZF`86}BDyqs3j8FvUq=)%6r;HyEFyXxTnP^Olz;aoI0$!rr;oQ= z!5Z8zfv1AM29?jCBD7ou9f6Q+^iY@U3p;khn{ZDBZvdBodw|Exa=JVPRQrzvcLmQ0 z*bHi1%mI%9Zw3c|Yd}al+5lb#PNZ_v!B;@F_YrfPPDg<%XFaHNKMU>$J^(8J)!?z< zE8wNz2j-&df%Cu-;KYl)UY`Z~;r<4=8~8m??Opz3Kkj=$(b4nZS>RVe(aY`>?riYG;CQeDJPBM2svUj@9tfWQ z8TuTY3+@NL11kTWX`~~;&wwX_4}+7y{{+?UHS=7bJOdPcT>`3}SAc4VTflw6*THe% zTcFyn_VU07K$Y`C@FQRoDEhn-{1CVd6kUE1JOlhGDEd773LnSgKz)BMsQ5Wh`L~1j zf|r46|AVgdad9-LdYlVteB2Bw{kuWMdl^){UISIm9#DMcJ#cSu&#RoD9u10L)PSOo z(?QWo9jJ6J11|)x1@+y}LDess@BMH9cpc6bQ0@I&a5%Wj)n5KOQ1p=lmCr?>(zzty zXF<`)GB5@YzQ)5(2UVW4!F|9+a69l)un1lWs($Z+2ZK8;aK7bo1kgTRNt zL&2|rYTxzX9Pk}bGw$mG-Wl+bfL{ca{y%}A1K$Rp0&l$*UJj0-F(^{> zYf$x?d%gF|+u%L84`A@C-&TRog1-T$fShYgDTHoK$UanMeaTf zlzT9!{v8AE0-gt+0JeZC=Y62Q|2C-jKMeS5a7WzR-|XM*4jzX)2GwrUK(&7>*aThz z9uBSpmEVq^bvbYV*ogadFb_TgehA$879TJBg9qRq0*d}7fy%c96#poKyMqfrjjy{v zmGdcZI{0<)XfVE&IUqO=)HuHxRKKnOcLQGmKM4L9jKLo8FmU_D&L=(!D&GcB?bHq` zy-PuT{}oW}^nLIU@MqvqaJ$=F9~cgbu8ZJV;1@xCUv<03KNH*o_eG%Ub166syeZ(f zz#VY!c!$?}4^Z@YB&hGkfmKz=AW-dh;ho-It)SAo8WexL1Kb;Y8Wi1s1627pfQt7A za6I^-yPV&h3o5@(c{d3hfqNdP@4o_yE`AD% zFZ~)+`iqv3CU_6{Iye?${{najks#gZyWlLaeyO|v9sCULi|+IMH-OV{?|r}1!Awx~ zxf0a4Ukn}r-VF`~Ujo%%e+EwgKlFg}Y6e+54X_W!*1&j2uwdlc9SJ_a5D9`vZw%~0?#+!Mhgz)o;` z@J{d;@P1I~eG9xC{4UrJoJMC22R{j_91nnv;FrK5;E|7ee&>Ocaeq5t`~*AzcM&`j zJZHJ1_QOYXn_m%TkFgQM`j8HD7b*Fi`(y5glMS_lsKC$I0b;GVc&0`~)d0PYLE z1&U8^{}nIyKHwPKM}Q;1cCZC}3Y-TX@KvXed%#0*zXGaX-Udbg+k6ch5ZDhq0{kJk zKlp){oev)f4y;0sfrsJW@pYGLT?xE<-<0PY0d@=YFa>9_p5V_!jL5^o_m3>^Hb=i3e*h5K$$<^2jM`hOGLmG2Lr zGAjRo@6ZrhtCT>^doQ2dQkD65BM*j z%CjE)B>3OpY2e5I)62Ic;4`4c>9;`DW4j+?lLGe#j{~m+yTO&wF|6kyI@Wh{af35}9eeEx7*g`Z+dt;sC+IDcw@l3!HN1VxZef0!@cbF`3wU! z-X{h3^#PZH8V65-7l5yT&w$mxr0n1u;ErGq_#yD^;QuFZH{4af^6|3=sCGCIRKFY! zs{M}xF9j!r@Na@g;C>A}4SWw2J)iuR_roMm-^~UO1s8#e|1_v}{dZ91_#>!#?fACS z%K_l7xX%lC5%^i$7lY!9JOA3tHyP}Q`&>}zG=QR;Pl3CGSA(LnJ3ys(AJ`v!5-V7ObpLm~T(zL+V>+n%7r{JuFQ{^E`+K(!90}Gb9ykqL1|9|e89WC(@;#@o zd0-9hAA|aSmp^#D2ZQ_J9uE!$^Ps}-2bJDez`eo!|J%zq2%L$#4wU~IQ2q59D8BRt zsD3%(kKPW|0Z#-KZ#by$J_eouHi3h{d%=%@uY#igH$kQI7N~an9jNcO`IGaVJwdrY z3M$@Ea8K|IP~-Y+@IbH|91h+Bs(-!@YFzb#`tCOY-vdYE*5anV9|J1iMsRnq2r8ZV zpuT%K;47f$`um{L{Ry}~_;XPGw%uQRd<_DX|2g0Qa3-j9?f_Mfr2$ufiuWS;UGO#V zIq>1A%J}64RaGXxt_F8fJaA|5o1ohD-$0e)El~XTJ#Zgz&ks~teU1SY@5JDq5b!*3 z7yO&R1Hf6}f#5A6{0pGU{Q@ZZeG^nUciX1Q)+-MKmF@-LxnLKla=ikop8o-=Uw;Pf z3$6$E0{;Rky}h=ricSYl1~vXJ2G#!8fuf5$g8P{e{$=nW{9gl={;$Ck!QX?&f`d@T zlz#(wGS~^Ke2;@l_a#vM^D3zC{}9|&AM|(wK-KpQ@G!6dD!*Gm8^2&H?$^Onz>(Wm z8Na&%9E1C1a1^-f4poupW*S%v-VU~auYpQu*p5{;{&L{axGx4z0v`kigFga)0`A(c z%J}x%pz1jYB~#<48B{(?LDj1Ssy@E~)z0sM>et;r@m>vzPmBiD4h2xeF521C`x$sJ?w^CzV830wolXMPj}t-BT|Fp1(+184mw=Chd!fvV&wUwGy?zF2 z-0Zzum5r|$RJn$LO6M$4bT|zZoppkr0q294g4^!ysmo$2|m8`&m&_A7vo;=U%hhwN2la%CJS`Lq;NKYSIO z2>uaNdCuC~>v;~S{H_JXM{Wj{&*wnV`FB9k>l>i>*FO7reUAY(UQPkk4#Po>#|uF5 zi%Y(RQc(4O0#v@w z1$-G)Jzfvt>p=0BUxDr59tTy~y2j<8#?K$Y3&5^}y|jeN77f zvp~tYD?!PZdxQTM1HJ@`eqIgkcLG)&UKO?BzYC~wa0#e(dK46$Jp)bxUj{{w`}X&8 zd>qs`XaUvkSA)v`fe^kHR5|`RxPJ;NyD`=dvDx)TG=0L8Cofl6m7DEj>#sQUd7)OT-#D#xD3R7Ed>13;DY z7oh0yy?{G@)Z={^R67j;Rqs*3|9nvKyTH-lRU!PFpyK}&R6g&3D#y+P{QJE?jpJj$ zW5CJ5eJQAM{1B-2e-%`F{~ASKNU&I9Fs5d0YUE;tPwdz`1U6jb`(1&4q?0gngwJif~8rei_L zub+TwzXMOGiarUB0_A=fJPmv$;4UY6eI|lR_X1G-Zf5YG4}Ki?Vo-A9H=yWbx09-( z)4~4WC&5P0=pPi__JHc2cR=x(eNOiN9R_Orj{qf?E&?0Cc2MK@yP)LJk3iAkj z?*9f)SG?g)XXk+W{&7&_`KzG#OVt@p2giac??P}5xExe}&K%+G`xvNxdVfRQLq}XM)OqPQWjN({cBkSQQn(8KCIkH82MM1d9J3G|Ah!8dN!s z1Ff8(+IQPJA3rhp4(>BRjjt0w=HugRQ0;dGI0Jka+#5V^vSSA*`n(!cdA|-y&V3&| z1$-M6U#yu@6vcssX=@eNye-Nl~cO!T{_%1jVoN|uylV#xLxW5LfoM)cv`o=VH7VhtWSIhsrDzh`c3fAJD ze7@^BHw646D7u~bai`Z#P;_+(xC3|-DEhkt+zGr7R6jfpioRC|{3@vaeic+d^alTJ zKjHCq0hP~wU=^7CyYT~z2cB~?o*%^h1dsk+<@pNFxwtjv^fxMmy%Z9gje8HCdwH%U zydU@po}ci(fJcA7HI&ID6`{4I+Pv#j&nEsaFcL2}$;FcdG8U2{2Lyqt_nec7!(_aVpP2A&nAkSzR z&tV=E-Nid9g#FFQqWZqX1 zX8_O3A?}Cx7IL@0r@@1GjwOBr&k?*=f!`o>L?(@k@xL5D@nZdnN6p2r8mtZRM3?$o zg!?@3-+A^Xj{fH2w=<7uQh$r^Z^HdD_&IPMeye!@aEPxs*}oqJ$DQDR@;t|LNboBK z6gB?%(k~H2A+j*g)LZ@aPXUBHEv@{{|&j^!EVICvpEL&vKrZ z3IAvO@;r-qFX49$@1F*1c=Y!ocp}dgyzfVx@u1|-le}mD{*2=b#5)83YkB5`?MZAA4ykE`xzwmq>cXjalFyF$C zqWkdIUo-A+AvXZA^zjRe>Vai!tXmgFYt`TeKoi{C>{pOivEk|hdkfH{og#_ z=6Q(c-|@SVM}KQbZ=dk~JSe`hOUR>%_iEnn#y`h%BJO>0&*1$8-cRMx-(Eb@m!=Um zpRk*F{|_GhU5VeBJU8)Ni2GvjQQ~|W?Bdyp_g~4MN3v=h&tdp2;CYGnCqVt(L);s} z`x0c)x?^J-)e;=lLW6Jcs9dJR>vlyNIK| zw*wA$r~Tg#zmM=dh3lI=9$Tp{GCELYMcE%7H~eUp*%}7`K~1F zkN8R6e-{5X+y{ZX@zn8LhJPNs4wO#)G2Vw0XMdj0@UD5=7@m6Etvp}m(ceVE9s_ec z`{Fke+y=ko?*QHp!T-~Ee1@lm=j*tS1Ha2Nk!K~($;8{62bIbG7V3kggdhpX{ z+v7eHoXvBIJovlK!R80&5&j0xf5{L0XTJRmsK0H&U3vQRehSZM-hUdx1`}@*ek(#= zG4Ed@>~lO!1?=xW@E74-9xoF28@Nvh-@NY8?EfkFO(Se6u3Nzia6iqnn)l`q?|IzM z;nv^5Ja2~glX#y+nEo2^TgS7FJEKE`|AV-{!1Fnt&xWwGLYSPV@&4`Lej9gVcz+3e z1ov*F*#&-wX9>@1A@7|+JiP4h;ec1+|1i&&&e|Lgk;JKXen{nR)&f<9pzkdY}1mD8{QJxR+J{!MI@ZZ4Wz+Zx= zg8Ewpo(2AlXFBgk5vISd1l0SDJU`V7e;?=Bhj_mwd{ib*Re1k3cqHNf#PdzwcjtLl zh+BVCc|L`E51t))lD}_-@DJcu!}}Q_>=E!3p1VWDr@^(jd%@Gdi+J>R2;VH^*_HS0 zLs~y4>}Z|~arX!72>Vrte>3=Jo`VVdH~fFX`|rWWdGz-K+zmXJg|yrk*^S?yc=V^B zWxPMg%T%5pn6K9I{AEbM{lKsC+=}(zy=5CwW%z{6)wIE#N|)R^p8W zCxDmp+`;>$A;F!&lX*TK(z<{!{oRWDlHm7y{N8hK`~OwkgL!^~YX;AoJdY6f9$qrNZ5byY~UF}zzqC80(Rq`$@`ZTzyILF z8{+;$4ll-qj;@xrmW%TZHS#RFXJ`IX-7TH@Vw~%WTl2YMS6p{yUEKdz!n+D_V|ROf zS4*Ki?&vIZF#Li%r)dau$b@ULwToJ6*}YQmZs)>XH7h|QL*A&XFhH(bj7(Dtz?#_Fu(%q zbM0|wp|y2Ju70KhyPETqFh8rM(47`4o-vn#wzM}{=#1{JE~+sj-&&X*sz0Hny`{0G zK4C;)a%@*M)Y;TVE8~i^?FAa3~ptX(|*Nlwecg5KC}sp2oDMZ7t*o zX=%&%Kko42fS8t>)lzH;f$FznzN?FB7ZvUaTJH~UXs9lFLi$uz``WNv9w(AkB~nK3PFWu!d$O|mXp-s;zKOaJ3D zw-)K{=qPk{sX>hLRc85j(WRX&xz;qGHXfF5J5|BM2J+%nsEvnH;$l~!EoKO`5W!q~4-8u8dT*A`zyBM~;EyNSv-#f;IG zVzE0A!h`~CHMYI6p!inHiG{9wt$jVQ(9Vc3g3Anz*)6TD4A?l=(b3wXv8V`?q{H}1 zu1HwEJ2>ksLjBBqmz6{W zO)oTA7u8uWl3}jNTFOd2rKJsKcg}?I#=P=#y7KK}f%bJ6AAzXLqrv!HO?kF(yer`ZqD-ct)OH%*UPG?d@ts4W+hRNA(Q&YeT3DtWJGJu-9f99Myx8Vl;K; z;pelPX&^Dv=G?5jxOQiCN*&Y`t`A|=i_fV{@V>Oj@bB^%RufGcan`7*mU_LC<`cEk z*a^eOj2(Th#!oDfBKn&_s?{y+)%C5pBK)n5#!DoRaTX((sDEq1F0D@+Nt3}ub&B!8 zxQ)^@>vdX319{Ow&g$g_>lY8Az{afT?5<+IwJ~n!HZjo#$*I|9ceaQL+AxzByw(!0 zFLbvy7#C|RG_*9%HA1OrrbFuU6jzkLwMjK}<{B9qf#p%qochReu^?ma#ttjO@^dt`0a71$6T+9uVA5!Bvws4+zo zUFz*bM^cHDt$0JKB*h6MZ$R`Iw^3s4dFg=G2n|xz8uE>~?$$0c54x4oDyPv5zt^}o zo}bDe`gtqHy{gl1LT+ZhTu#bZPFuVpZ$zwub>_P^5^<(vxu8vRR-3gKX4jUBTTZYx zo+NqJNq4}=JAxE39_%8^H7>;nN?`*nEdnua6l9o*LmIrXkw&usBplo#PZ^Pw89gg) zv1}2hng-E|x@&AO6e7{88S@=*V-4KdEnUqdFTv_siyEOVH4Zilex9!#)MYmJV{EyR}s1q;?pLNhhE5r8W-A8uoco!Xv;x5?dT^1BnyHd z2T@nrk=rAtOsO%cVyZ(+qB5EUSBJ z;PUAC2bJ)mEfjFv`zhbJDP@w8&{et+$jE$So>^E!Jl^%2cwBB)Zi;cKbfl#kTc-8< z7q=KZqP5W7(Aa8o57Q8f-6rovopa-k?#?E$=HYOcu3R#ymD1Z?>{b^+w9=VrZ(~FG z*>TWUP>UHXXoQ`GS$PRjCS=Ssnf}JfjIc`+H`KaZ+}hIB#dtHO5R^O{9j!Sg*>s&| z8BD&Yd}|BeKtRr(#n08%@RDM#(X^a~d@BP~LzawN(0-YgH|OWtuoagSy-00lq!pY~ z1clDaYYKgm7JLWgP$SZ^%@wOv@pihzCmD@7CK#s3qd^U?8ynBe&y9wM8FD-p{SGy% z>`|BMre!}@uw%_(^PQV`=NL$H84Sg82<&M_3vCX~Z|a#LiL@AvEuA!(DuIe9{ep=} z`AeIK&#g=?`1O_8mR0U@vSgQ;t{@Q7=}E0eN|}G^E_O+urE5*F&M3^;c2ax9%sd`3 zarlH$_6El=G&)J>Og_xsnF*pN(@^FT&XPcHNMGW~-E>?u+=K>{q@gvivC!I(@2sV1 zqT$YsX(OnMw3sIP=sSw09uSY?F^#==bjr0l^OBFu4n#|8VJqrU#L&zl5Fm|B%9fP9 z!Pq4Or;M5uYpN7l)Ph=b?M>ZG3cN67b&kN%wj*hxbMpE#7cMAqVw+Hy1(YH9cB zgb8ixh@fm^Y!A!D&7JwiQx5H4JoHq>(>$)|)`ejMa~KSUw-?&ynvpF|`BXZ=hYV~` z+R$VEk&lLBFbm&DvIE5w0(l$j^|1(X6wMluQ zkcSYx*i!HRyKa{lx}r16-$)Vd?l5bEX)*9mtTRSEZr(G2*`9}fX_3a3IYxF+aZqNA z3~EV{-f4j#AT}8SQH(15OkLX8({%ZKLkor$V@eBQrY%D%A@bJH!hJY(l(CTBxlg#GpZFMy)(vu(1Ji{ zXh4H2LNrIASL8cral%?#>ak$t<5}3Xs4$H4=mGKAx^isOei=QT4b@U?=Egw=APq1M z>Iuv%ebc}d=a$BDL{@^!W3+^QWRoKQKOW!Gm}i>V9-JRDlh+h8d09$s3^N_U7#Y+6 z0f`d@V+L*C8q!F)77~)#MnjEs|52uIn<`nhoR}>`4WNWv<%ZbcA)OeoT3TtyWC+@T zV^rqVSYA|=R3`D(TC{@AsRR-iAe8_Qg<9zJ)9^TK|aVf(*&ft}D`J|59X$adHTu;>m6svu`!vyH%B= z+H!MR+Pd4|%@^k-8|X8ef@GPAnm%}IKx`Zo7`}g}2+nau2;QPD5X#|Gx?$ZdeFR$c zkduFE4IX?{tBOy}u$A&xGq(Fz3}*2nn`wKt#`m+yn}@oA#9QcvL!Bp2k!m#oo_wg7 z4r?OyGf|%sqy6~Y#dD>S4lw$SCpnWe0vHgFYMYTqUl%`B)m{B4no7ou+qydKHzi)o zqfq(u!1OB9DjAxE)>%?Ry;!PqShV1iU>>mw<`flZBgqCuw#_moc zbjD5HaBSqcb$K$sNs}K4=lRFwFrb_^H3?Mk_pM2G`D~+>t_bS0l{?L*&s3RJM{N2P z-B=mc=jX|4K{TQ~6LD^5D?~>HkupImd^WKNfi}9OARKKANEM&AS!!H$u-S4u3ut+!8vm#&+dMoL_m|#G z8zA)4l?ZCpCQG2TVKOOhWZ664Il#JRcC!SgOjBrtwgTfz7@xutU^;S|pe5n6C30y; z4eaV}wUJspL>}#sfy{(tnc;Mere`WVon&aV2ceXLBm7+muUGx2XFqO6!gT~;@S|mdot(GNLH0-30 z-d_RwO0T8e^!hYKCVUN>bYfC3Xf-r#R*~IoGi)w;(ja}6XY1VFmD0$gAr9K%+qv@L@ z+QN5@@FSZ( ziBq&4sWIQ>ilz)6CUw%a4VV390!f4qe3^|KFkqRR(}9@pQW1*LNW{im{x3GqC`efy z8J3&VmsH>-Ar+I9voIPTxLtMsImH%Yegh9P`F?q zYB;2v_g_zJd@yOJUt<%;q{f6B8w@QLs*|L?NwEUK5^*k#k?cRo^D6OVwlrHiK(D}0 z*71y_a8vi(CA|XjHDq>SNZBS)0y?W@tG@v+N`dn-yto zWFvcxZyJh5WldkWG*buYMltT9T2Gsn;P) zSRgs+p{*_G-sLud!y4<3t!l1IO9d7af(2-KIv5X_35D%b(7J{pD`Mqzf(q(elPVHZ zg;3Pt`=shRZ8k3!>e9)TX@FyWJxf%@jEZdxm5a}#+8bD-lMQ`@tQ-;~WufXu8f-+& zA?llb)QF5RGcn|}yjd=>eV*0{Vm1ojIC*s#20gQN&@7W08{?zKn`_X~k`f{n>8(@3 z5Q|R@VzbqTg{uYZHDnu*s9Uz-WF^nER^K5;8MTlh{?g}MVC$p0>K8*jMG1byhOIg! z8Zsq~M%nP{-w-o*#t?~zZ{Q0vQ?p_+z7uauYN^pU#B5+2p-&;pYr|Y%$6g36N|Ncc|{^96J{7< z_}R?R_;xMk$bxZhbyLmzNTS4D^?mZeuaM)thA zNYu{9?b=dkRXam$Hl->JqH|@fo`TR;ynJ;R`$B>px6_s!N89oYA2TFWS6em+l$CB0 z))Z7Un{Q`_DE9jl7U*6AW ziXPk~7*CGU#3s@Fj;>WU4CRVVJ<({hy|mZQP2RL4oOL?7pQQ<;AbdFr%Bd{IvdG3$ zl1;Z}ku3*r&ff>N#3T(BD$QB}tx*0ptZvlDn`q0ns$eZ`%L&%rm3(Rp4L#XRU>Zwu zVdhj@+k11qwS%S%wqWh7k+(B|a4?SqM@37TBh>S5Trm!d%fpkm4sLBj5 z8EqAeid8Hu^2t1*hL2ORTdbgKFf1c3~6&@GXtGW-fFSvOopTWpB;}%_e()O;__3_sEe8Lsz`O|t_B(ln4vnb8z%Ni%`Ws}unb5~bKv3B6V*&Wqx^<_7}z!@k?1JjJF zLt53L*NQB2Hs!08YPC`w=+6f?%q?WWR%*tuam1F3ZF2P2GZA;$omtH+4sxb*sw0aqPa54k~9VAbkE;7Ci8Ppyj&CmuP#Nbb7Lnr#9N^ zBuT^6$Ry2;Sa7-ptv2HD1r{gDhBn=7Qz6@gqO(v9+QMMGL?b1;K*f&NHhm#kknCV9 za{*_e)1_rgJdgx)Ka}OL{oynl6L#n$yVHD??J;Y&p{y@7?%rQ)5^s#pX89ZonKq@+F@YJoZOAv4wCRM3R9&6!a$N<5 zf{j)7xthosIVwjHgN0->%Lo|DHP#blChXTy6WC`ktc}tPG*NC2-#X&ck7AxCQ}!7h zz`9PSM6z?2ns_++dUm#=oNPx@S~nP-_YKx}t7td}LsewrmwutN`nmeP1yoMT?cy6r!uoto4|_OEXIj z5`@!&-e)qN{ZG#NrPZ`7tajO5JwXeq=xH{D*0a-7n=8Whn2OF$S}fV(c~Jq<74g{i zQPW;>Z39rcv7}+h&~m)f8e6d&bo?+BDH#OxvYUQWnhm0e&EMLpp>0kKiiB=u5<*A^ z1!_QY>?#Si&8AJPU7_J&#G!rZi!7Z;EfZ0+YdcsgrO}MOLc4M=y2mHO%)IS5TOILI zKPW`0;eDY>Jp8{{iK*J4Dnj*wOi<50^U2kDDdolg*VOZ)Yr}BFYc`@6Dx^K=|&e@&J??Ikw%%#-?Jh5=w6SRcvEwVO~F%KUy0VLYcY`+u54=!uMSP_EOue70P?F{X+Wp%=b2}YoLnwbS;8c+b>l4{^!1*jYZPF~V8&?#hhH0}CPRzRz z9*MzYmG%mBl_P%**sT1-t;9!i;4+lEz)#^t*@#LcwFShfic zN*1GJuU7hEloi@^V3?jJkvvQsu>4`hPxH*OfiGdPb}rmRLULL?5d{ozYdxE|Bza`d zev@9%4v-lxRg!3bOJ1pp@wa3+faPZNaI_p>onS!#3v)Eyb|H#Sgx6-DE2?g0e(x~u zrQOF6S~`!aoWMyo9Lf2F@~-2WkXlDEgLI5dj;u>E_h}v()HX{mbx2XvNG$@`qm>hND!8B+Y5uV&j8 z&zv_~vm_b=M{-R)s#S-+cf7BIkjm<0x+@);zrO6tWLGd{L@F#+i&YAH*sWHTgXb=$CS(#`Du&{QX^ z6_q2YJJK&QHhmLDq6C}1gj6)tlhpf+s|oa9-{7*@Br5i~uqj&o=wb_!#mv~uUIYmU z=|}KRdE#KW1l_I{4`$k0me(x{+7*FbMiiK-cAugBSbrCrZB>xv=$U4v5T$aYv0{eI zMg(8Iv{{eoJuNv z2(T0yWE)isCX2ww`iLK*E0;b$@f#1w2OGRjZ}DauQ_3@LR6ph-Fu`=B-$GnyoG6Sk*5H=XE+ zrybJ{x{D4^K~Ycwg0>wE1GWfz>SiiWuaP~gVZLQQl*$M_G5FaQ5nop;S0N0gl;maN zE8o1MgHH_bcnVV*mXXD>gUWblq1{d=IP-8V#BBjAZRas!sVp{$42wT;C{i@31FL>{ z(v;A&X5?6N7>n9;h_xbZcb$RH$%?=(Cngsp9aiJgiN1NjlRbnNTdC!|&y-4^WJ^V* zZ?Z?CZ{ID+WzA<3!JODhv_R?msHAabW>=dP&`IelH*6>!XCmctW!Ip}zEd>-im5y7 z-$p@3E$E6SiC`kT-3n^8%?Hw+t*^=wJ?LGj=_%c|Mzyy3_AE&TN*!*`vOGh&sCU|@ zl$xA1aQd`i21PFkvmu@AoHKKP_Hc}tJZYjvfOs`bq9!q9ORG@IRyUnUu&Z)xoSS+t zg+Y(FzgRo}CWpQI@|BX9 zU^o~Pd~Gig<@Y$TwC1wQ7+M-8>#d54dL0xtSIUe_Sya@4B%$o)QdCJZEV{1j{7d$4 z?e(+GHSn=;e}=eBs^TYNTK4`1Wh+xR+X0vfvjskx=xL2hdwSHYzQIJo!&4_m?7QWu zoZm(Ek1XSHgN{p?m+iGov}(o%h6!8kfqXNSPo!6{ol#_}nJF?A_{TQu@q-4XMfP!K zMl2hDDGP92JIqSc#(m!<%^U+@%Pm@g=1>f(b{o9(q2Knw0n&6k`c{y{`|sqfEJv7% zmMPNcIHANXWvfza3e=WkH=(WslSg7Fa;}k#6_OM86Img3YBcNV62I&XsjiaqWT)CYL^$Cst(2;uG*Vr z$0Ccp6P&SK=rh}W;-8V)7QgXj9k$T4S7XL4%+5C)Z7q%c$SsRLrOQmsQY$+}HU%Ai zQ{I{ww#3#29mFaVjKyYHYQ+v^y%)A(xR$q7M?WjlWYFl!BANodbwF|}T*%4G9yD92 zb%<%_|Fn2F>K83=uPdbt7zES>b|h z8zrQ1tRBIY+Tq+l5PY*e5WGy@>#hn*yI9_BlvoyIH)9d=LFMMWs%PhUc z$RE>jTxM*(`D!xLigcUP&MV&p0l*n z^ijnJq{Z1iv}i3XBOnuZdRiR18axOw#FicDYABBMrq5x+8lck)w)imvi2s1rlsJF>5Q$x&Rd;i3W4(O^$P8E-G{LNliJM zv=YfcD`&w_HS>1TzEBva5dLJL|N0vM>Mi zd`c#;yf05D{P`@9UHL7ws2Tyn`eg4wV00DOKS4AxN;_;AsNa?d6aS0+0)z=IwglF< zZ+3o^lcmxuWM)CzS_|c5rh78Gom=Rh+Kme5>m$yuq|WIc3|JWkf~}63D41eXVfVHv zG;Xp?l9AM5Wk3@QDfX6QEt%MXSEc~k(#ZINZi)2S<9v{(`#VIe5|{c z>=MA#e31lk=0RFpY${UvL4)kFwmuk#D%R%X zV&*l8>bF!G#cw9n4F9n&f^NO}q>(a=R+DYEexac+tCZG}bm9wTiC}4Ko1}qowDAqK zX$&SMk`g4hcbhGc(04HA2AAgL21o2RwsNvw=c=Ym8J|cYZlF}ZqXfb_-uIPonlTL= z$oN4fxhknm*X+4Avt-zRZN;0-9u2Ms&viyqU`?8!hq)}Q!lr0;BKrR|qt*XLSvPCE zqGgcu^rXlnp>;8KwI01@1cAE!H(0j*H|q8GwQy}+iOUwIi@O!__u*LGcf5YEK*`xSw z-bmh8+zRvG-(;{0sk)(~Y@Umz%;ZFKr66VldUG_zPhU$CH;Jy*kxo{4jRJ@Xk@sY=@*ZWY;gNg$&mRvEC z166I>b-v&k+Yub7N)$#UhBJiCVPE#X_#`&mH!2$|273$kRg|J-uU~>OUPmL3oES4B zDiehnBN&(zDe12YUS;D*3)Z2bd=PKijby<-WGk20sdajo-Gq*ja&BiDlX%Ha1aT|Q zjWcDm&vgMZQ&==Ozue6%YA)oppUuySY33D9iHBRpTydAh3jVvftbBV7qnhbepJg%Q zTWSW`__~h~VLfPMa$7~X^5T%cYibl;CyEmbRl0U1Z%s8uOQPV=`7$_!#0l3NG10-S z+iG{VoJJ^f{W||NVvC|(bIZ;S{c4XXz!E@a54O=Da%$vYdwYYn$di_~53|p;$$#U) z8zj#P8D+EkNCRwZr(3Pt!s1XlpnNr&&N9SD8UM6B4cwNSkTk@KKXdxPBR_rY5ROw| zQR7E1I*XSM+{hicC%xylqWWyOmK%!PP^OHOkA_)@lHSqwKg%+yc+xAjR+Ox;(i`EH zR;X5nL0y8masHu!d|Aq_7)#Sk%b3K`gJ$m%3N-}=e}<397=LDvxkwb z=`y)+HZN?pnTk@ZAE4qUBwyZ;EXR4Z>LHA~9D z!yiWLx)s|3nUU8Xn!PR;<~)O?hNgr?+trZTQv|&+1C%MNOE(+Bkr01e8x1}AB2wMb`4cB4ksC4m6xhRSD z-mwyBb)Zxv$aT!d%4Kw9%gyM_r5d(usXA_Y;zI2vE2;0NML-c`so2jGv>i+nKR_#CYB!g z_0F7r8%ACCH`jPGxd$EFRx^FF1^Fe}%EPWDv{eeJd+@4FezHczDzgjCC=y-Q45YSk zrs5|kAU363YZWSgX#xyYk!5q;rWq_cZfy|Xq+l8-);tWOps4nlip&82vt(#-%}+7{ z(o~UjbFrUJXxKRS@R{?W}E@qngB{r+(M(XRNt1d0xxRx80 zmF_e{|Nl#cWkIA5=D`X6AT!hOjaRBg%>7q+bjM>N9evm)SBBYq+3NYe(>)ghiKw*Cgrz*O zXH6;74i>GY$*oMb892!3P}H!$&SuPEqfR(%(#jBlk&u_|nh1w;(K-FtT9UqRjD=h{ zX)jxW$vZOUUryE%yIIDRSbfU)HhnkT_n(NLFw$Kwovq&lbEUM>PGJ=ajcbz=^00x- z8ZI@opL@1AW-(%l%nF~+r2Dv8YO@(=z07Pa`bAf3zvQ>Ekg0aK+Kxz`c2AG*DlB1oB z+EzbkUB_og{lB*w=vyT-)&-p((S{-`i`l>2iXon(9Y9jiRO15ENv`2ST|ytuzNYKo zsAQMx;Py*OP=^l{i8%t2@l!d?>rA(Op@xLZ>J#I6pb4eRnJe-) zD|u=^Pdw^m6(zX9UQ4bxE)=@FRm1IAzU|x&ZW*J;y2CzBvpT2&Dn8Tz8QD^#$>zpm zHKyDYWcHBC_5G<>AMH$!K2c+4cN-|(z}a*Zo$~vRe^F+*!NwIN+mCNd#?NTjZ-Y-| z3xa6TbV*CxhTSWddwo$OBW*rowZPi|kWDRefebm7!qbT(2P z)1qAk(w}N@hr=Q6DTQo&IG`SGF(SZkGqSzGwlJ_6$_{&sNRQ!{dxU+?p1T?Mf7R=)vyn=tD;P5>%qgrzVF~drNO%z|4jH$y?ZTBx@Bi;`_r=nv&vqw@{Md(b*$4R$u4 z$;w)1c4|cQeKm=&O)4$>4s?^P2j7XhY>$nGfmm|Tl+6y8_Il6}Ds=*BDnVq^9{fn4 zRg7N@)mb$E^NDvV%fhj?;Z}KnTagh7yJw)KV(nesPSy( z?Uq@YSJfD>s9=1mAWNOg37bT$V`2WD5?|}^Otu)cnf6L7+R1%om5PR$!^P0;^JLnS z{oEEiXba+0o^=mu10vHHwWly$*M8f=QAOdc#r&A2UG`RahnD|JaQHC+D~PjxiN&yW zzN@9k;=bs)jx{rH)O6#gk*2BG+BB&F*SG_x6&4it_r_k^5z&3Klhf690FtuFZ)B4a^{jF z~Si>B}=408h0gEIZP1v=w#Yqg2M-(@di!;En z5EQ!Zv87(x6?E9mcuOnnX;d(C*ZE|kfJVj2wCOE5yHOVPWkG)~8A_u1VM^oFCU}%t zF!xai%PCD;g;YUMApMN8)xA7P++>8pvwSVskB(K2{Y2$5jW-A?$&m_u#tLAvQX)Dn zi4Nf>@vxiPu=g^-tCOq$5x1G&KS6S!N5jpPq<$PAt2W`4=Qj)iSg0-=W0P`ORx?5L zU!ctX=CyN8_D~~P{Fkgbc$}kkX6EzU63Wk#Xl>S7h?Lsw5?~~X9cW@rM*B($bfN3V z1zELK0_Zy%{q}^~-OMm7_hDX4PHoT z)2}R&#_udWJ(28_v$EbAsN97=B2@dY(7DoOb2A`S3=#w%zxtppqPB-bB}UPcm=2qT z67}5VAbn%wole7Q;XiI(PQiqphE1-4j;2r8m!Y-vaEeyyR=Mu!Z_!B8g8s}(Tn>f_ z*?i78fa|uznVZP_vdD3@BD0;$1-M04Z89O0TK96QVRIRwWtXn}HTwqDs)i$WHCNk- z>gp!DTHNk>HdUpXIi2Xa==VLRb2w8nQH7jc*|;uOGAI?PfhSyCnmObO=Si2nG$)}w zldBraS=iEzx*jDXnLDPRCATL@};q2$*z?#d$8;G zeY0gVDfWr~|B6tqxpA5B<0bD?Uo?~F|D+-QcT3?NY@#d>1-gkyKFouXyEp<*&Pdsm zYT(l{LqRPjVaw&uq#b5?w=SX=V5nztH=Op82E`_Z8XI`YjmcUlQrE!96GJrH?WrJ(zq+XgOEYWe$H6&frj!&kcp0LqSpqjp@MZH-b7qZTZNBJU8gDzObM2v)F z<0ovAdWGq6FgRgZ_g_sn&WZF(KQ^OFU`f)sl3!#(#Y78~-Nqtg5iH-vM8%VhR#wfh z?t6$*-C{(WX@>MtOFTU=!)I1lO{6cBjbtu{!v|plxli=eF{ai_G0;&YXda_aK0eE$ zg?T9r;ztWdm;oxi7eQTyWhPlFHh#r8w6$VJZ)cK9MV9)gJUUIum>rgmH#IkDhaY3G ztDq|xOsNV5OUSK@tz?|fbM?wPcdo}UJ5X{31f&<%WF)?{9EasSv`5mVc&ih$Z5s|} z)iOmeZ5Rm)fgl4DlU2CHR8_4|r@6|vy}q^EWbUY2+5UWzT*a77F%lDQ#ys4|Ov6YhNl^9ifNrO?H9MoUBq=4}vl)#%nlBY3{tI|E(&>f53`&n$22<12g;{p8HfmaBO-!Yo zEf9I5dxes`=qmVwmBIOhO>B&0;eW}GxU)xS+f9D~FWHyH8P;M=mJ|lsM#9$oz`=tC zRXfo#D613eYPAMIb)ebmU~*!>4?L~AtL;L+OyiW<9T)lp@(6iq7T?__&rUly9&JV5 zCsiB0RHr5LeCt!@^*-`D%ni_6k?jdXPN=3^wTPf5ul5}()mkztRyVVRstc@CCNxMc z&Z|zB+1^KKwxSp(pX}3vYWP95@os)9qO;mgr_8OcFBUHW4*~)p<`^b)K z!|jgIcD4*}8)m;zu+M0|zU?UeMC8bprWS6L#{l5JD_N|FGOnem07L1h@SI*(J!KQW zLSckXN^w_BMcfuN8y!a&s6(M4|a*>gVQM|LdOQU-ti!Zf(1=MA> z3GgEXea4yE%ufqJZ=GDQ7B*C+rlCGRn6Bl)_NLk>(Z~81quFlpsp~9U#1Gb1k8P+v z+xJ}7W<>3=HOKYiG7bb$^@L(mOGEV;-A%>nsfF6u4)tvGV@dt$CQYp#A!9Y%rJ5t? z+y^&g(2zmZgHEa*a(q1a#M)zzuO4*Vpg}~ePAZCIPmCx z6UI&$Rc@cbHG}$%@RiK!sXDXH!T&j316iPNX&-9a__1i5GHvSU>XXXx!lHNesCKq3 zsx#t~X0&vr1+I-PuYPr{{AgrrH8!d?Hi))E$T*9q3?3T$>nVeV_B*F~jQ`-VTBNQ3 zukMNm*PK){crZcku08`x8q1>1wQ)^N+4rn)%t}A8TN__^;m`~7Lob|DJ9xm5dR~*4 zc6kiFu-)7Pjw7i3!uCR;Bk@ih1CFg9nlIL0$TCVNiRrbutF1M>ns2`B>#yb;a!NmN zce$KXxXq}(S!zM`AZpN807DIJiQh0Kg8k%Gaf`7A*T%)p`YlEoQpSC<~Vru5L-(&C5TT64Lk1wCK9u6M;^Z=TY% z_w}w_+jIM~8*YC_msP5=3vTOO{^Ew)mwOEDa_L?E!uqw#6`mw(=`8$w=?jY$p4Nz9 zCPW^+wBq@7t8TQ2)@`Nd9$L3{NzXkG^{#kk-O3w!?pRTJaXwv6!Lz9F!mf<#%nk<%OObA5!gZ z`s}*Z&t}QV%S92CRPT#-m*zi|{U+3%QdtH)ODX>Yr6+D*|M zlBlHTE=clO@ApvBo&`5+I4oJ#bK_?zRL|o18}3>{CnpI))TIaSTKD4pJ(sUgMqc`- zm-SqA6OAMv2#$e6mg^t8Pd&I~S!w>V(ii4=`Mur{R__Ck@xE^5Dl($zBEc8$T(|0O zr?b+NSJRp6*4(xJ)}=j*7bLm&zIbct?t3%RR~bTCHs*TQK3-bzr1!*z`@d+Vb7BkQ z^v-2HOCI&^i&gz8Y?f-x%RI}-ed)d)Cp=QDi5c#+jE{I9>l)>2=JB=ohp~rb5pBZ* zS9#rHA5AsZCJd#X1<$R2Y(=>*H_W>NU#QnhwSMi*>mR$bXURfpUAlUHY5DW(R?qkT z^^XHNEq!SHlIz4zmMq+G=OQSJ4|ySLt-{Io`1P zj^5=DGNN6ytiSta_3iV|_B^?gG4AC`gqyNb+TzPu;pS|Ep6-3-iS-LV-@6uubUDqq z;TH0Ivh>;O*~$XzvIq||?%3f13)pba16B(5Q=$)_s>IVoq3cKKP-lL9QlSdpk7B21 zu~e|~_s+eqC4*Fe_b(@+KK15E7#Bry4mB_- z+4Yj(CSFQwzfih`p(eIbT6hB$_d1Gq!mo@byg4gsU6CCEp|s$3PjB7I8&i`ZJyDv! z1|CFWBK0fRmR79kz2=$HHLEtmPr7-O7b1D|n`@;mo51J6QY-oe=BXSMPHx zN-tam8srF4j1OF_GRP4iXi`wPhaiqU-sOzXx$5Ulfk-`^NIUgE-hLByGndA*L;KkSV^koO8k};|B$04V)Ki>63GTk!Sv29qfD7m2G`y~|G31` zti`4*S=CRxMtY+KIHNKzQ@)~}=T<`+0pK!`_oMf*ONq!8Ij0(L)(Wpkv$9o>1n7O_ zs?vfx(JO8b?DejzoZtsKlpYkLgS>svZn)=8y2*pY5#Cy}!1&kYm@ z12O^Oz(g+0?wE%e)rmvenGPdIV+NjLG@NA+R%Rw~15C1YAn^MoPm*{jMDL0xdY8=$ zj&&=`x=++IZ#BBTivpYIUPl>ykXa*MvkL7A$+v##L$LMU6)PwKRy-#njGmgedJi$x zUB7y%t9H^njdF=CX>{)r$aekeClC%K7dkH?ZRlrME^cPw_>@EY7Y{wvmFUv)2hhTY z4a}XYI;T9udyGabUH>AYftIskuDTTtT3Wu4nM2RA`x)4g1l$*{D6L#xy7u#tGh9~+ zgM%usUvzbFxR#dXGv$1iq8i`0VcycxDkiSiqvay%)<3Zjf>8gN2*i_usGQl!a5Q{Y zt|1qBMv$<^36uX9=Q9yrw|cEBpQTl|FddFcOINMGe_kL*cX%iGV2WT^*dW%exi7S@ z&Cf`a60KW%Upm!9Z7n@`gZHC%m$lBK8<|$X*qA)I_7L&u#$FH<6R`DbZtH#FX4L+Q z=$>Nliig*)z8daEH^K)qvnq<0$bsG)pDVp^d++j?z984O6s|Bfu!8D6hr;sih*sm0&l%v{g&N&^l;|b81bfC{i zG>J9sM677F&23yqk9-2B`8RW76PxNuCz}7$+qpMab*1Tjf0UD%a>|~vfcA8EO;a=7 z>G50~mVA@fI)N_9~n+e`y;S-5*TsicrWAP_=a4F+s376@ZYfWcfOK;I>$bJ1VP zN67DapS9Os=je!A&rDTU8=bxOy1whZJnv;=b5EU!53N;T0AYPf*s4KbCCHEV!j09( zS6~L5K@#28OAF*j+q$}Z-0~C3?@WK~C-~Bw7t+de9DTP z?4zKh+GL$*e-D2{%@g7WuY=gljYK$M*0m4KaMt|K%wAC1i5rOG?(%GJ{;T$(d+pPK z1GQ()G8ut90auEK0u;q8(L6(NgCKxY!D_qn2<)4%Lf9mG6I7*j3sO9{P&J2F_3q1Z z^F0>bb&foUrSd`r*lq8f|$CA%MDOkWAgcTG@Ck^WN>{u(m!s+`0OdIEV~B_&mmYf$r&$iVbq7 zEeK~b9JD@?R@rs=w&XQB#`($qk%o3!%#`lyFFy8lJ#5y3MqfB>!`$nR+dprxf8B|1 zx{C|GM$P`m)|QWkzwM1iGnSSu+qUIvC{!8V1~M(}dioi64;272noIFVo(_%O_K)Cw zE{rX~Sm=lD73OTCC0+34>+Qp{?K>x1@!@G}O2&qfm!0D`dow3cr?`vUq%< zVpef!IhUaZcv?my_g;QAzgoYT*c0&zi;6>&jBjff639Xs^`Sj`l;6=Dm3-$_N;Udt zT&Te~Gih=3?$t%CGwbuc`#0AP&uXqGjtS%n6Q@@7kM$P6PVBD~fLx@NZ$#~G?G}Eg z>P#%OKf5G7vAJKpl`rumwCC>j?q9FE%kya0y*md$Q%q0tZ>(J8)G^e}(EG+bfx?Q` zxpJWQ@LuOQoasU3{}j=~erko0wde-dg~-;~2*_w{v5GAS&k?>d)H3-G+FgO+)IXEtsxDlV5mE7b)VoXdAt(f0%+hRReo zk!(A&X#7i;8hb0A(@VoN;Jf|pV}qi@+!{Av`{EV27w2N%M+PjUg+P&UQk|pnx4hgO zX*HzRIAEbI=dPf==8iERx>qLpj>2nWuE8$`)?c2Pp6AA${)W$=#QLT6%|IRZ9pbC> zJ$!*fj<)w;(uy1Ww0m;~+XwXs`qwUtk0#Y1&UN6t;~)k}#aI-GM`%807TG}`vk_Lk zlm6}}9^MO6^#XI;i8}^)y|X(%W8@cHzy0NOOex;Vown@6vrn5r)x4W9vHI(XKVE?RZkgFHz)9M24SB| ze_P{QM-dJr12l$n)pWHN?DW31Y|M+!6Q?bJ6gjzsaW{^d(m=Qd7|>sU9p01Ueq&sP}~ zX#SN%Onzc+p0;J+S04y_V}gU_C*E(BAlzMI{2RUI*0}9$g2`HYG_A!CyigKL)t>vh zYEN83W2h3xHv)qsHY(~3sS2IIzjuzzgE9n8StziT4>wgD<71m<4J!$JY(BuY)bL8C!Tq&$I{a*cIFJ=0o zd{U$obT2Lf46>QtB_tAyH60^l6u5x@rCcVnvNsbc&4;sIg&s=}GfL zeMuuGf$4w_G2tNr3KgDJ%{8JXDn*{nPk1k?{;C6Y7(*BZy6~~7T7)*ER60Ua6~Ka- zxBQhCn@6eDhPVd{0XfLd-qEj|vHAsek*6wRRb*s@RU-ykaFeS2Y!TsL zC?t7ML^`vd_Vyo8_s|+Bf#tb6)}4x5ldoC($=S~7`d}powoA_SE-Os7^~|xBl~3%|UH#B=}d_ z-rciO&?15_1WZ22RwH1{B1A+(#7E{s8?7|G(|dTi_vn@`W~yV|#}8UuRW172xoinp zrEhFjg$y~mvvynk-zS%oaa{XLCLdzA#X5Lf693VS_Tp1*ILC{B(DWAa@Qwmo(25kR z03RSkLiXbR^(BqfonKD!ktUxSGa|}u7u{WivkQ)0Y zayiU|m|5w7*a&;KZ>#QN;VXvR2%xVUMdW4zWeWWMMM>Z}v5c_r?fN?1NXp?Ek4%pd zWer7XMkj%bytTvs_P^qa2@FL-tQ1D9aD4;IrmB9s_x-`n(g|~g4c;$#pPDFuH3VGl zWB?Q1sGol1Sgi*7vGy5yRO+KVTFxsdDlDAbX#H$T1#*L_3^qyg;7WQ5>|!x;a(&m! zW?RiF-x#kEe@uX>lY+Aj&bCjS6l=x>bdj(vVl)n|E`4KntR;kCxA40<{Gu7BzQ|Ts zPFw;i!5f5eT8rMxT7Csz$M4Yai@zKtc|OG}EM9F-of5+^^S9UpENIUvj=O#KX!ZAd z_UzfTX;Z8B-7%tNHfk1KpwT%X`}3Qb+0+%>r2Nz-Wb&_uJW4NG{-U(Y6B0<#+lm1d z(Utydtw(P(iwSiq{2w7F1?f7tN1CgOh**70R`<-=?zG%!7M!M2W+qkn*-DCJsEIE5 zq9bORF|Duqk`f?pK&2c)!m*Af56)I=jF7F|`c}HE$1(-mLv*Y)^+_Gti!oS#ea&EX z&$gaquIz?f<|hfoK|=VqC0TVCw_-&?X>j6N(lW+K++_h)=zBu08ve zV(exW!JyZy<8sCpN8mMyp``$}V_jlbk0&pg-|S3W!@X|C8@&|4vQ@%r(sA=d& z);27){2P}%7JuocnM}T7rL~WmJL*qknrPp~`EpAz zd6;C*u;B6vD1vg9FW~YMq#s^OlrAEf-EE2$K_BBZfk=ayC(7j##9G)=X5zJoK8I;V zi6Pb7#!L!Vi>%EE6HdEAyy5JLEYwq%s1G&# z`w#ee!!uYsAY=HEGCB|q?az`1Zzc{YtUjBD8nz}D2+5#5eSgfhx-Lc7>SCbFlgv^| zCXwUBA91aTesIbJsLuSM_OT@b2k1A`5i~^)1uaL!{#~U+Y#K^1$$?!MTkt^TuN+@) z&mGh@TEH|LymnX#I%?&p)l0Wb1m-V#qp|&pf3|!R(e6=L@9);_R!a; z#pa}Q_rq)EKjj^)%0GDAJ}@gW2kDD`r5O7_nObl9x(?;Qy`0Mw5<&jHzD|nlA9*E< zuB=v+7)Sr`FF$Z2EB~O;%fN=vrHmnp%SK!S|B$@pHZ=FTDx*{qA{bU|=kyFoL%I>` z^yAETs!}MXZW}X9TREhGe+qKK96oszSW!e28epS1#W^I`jxd?dm4^xSaXwlE*IC;kN+Ea7id4j=x6mvq*TO`ha&~hDZqoLR#nT{Qi3PcKAoXgfB{UjVG z@~w>E$qK^=ekv{V5cYeZ}8C)DZbnVQ3o_cQ9{N$|YE?$K&og-5H z=tn=2a!(ip3NZJjcl$`X3DN?WR+slx+nc!4~OoQPbHpFc%!AY6Z=P8hyBZ?!Y5Se$YxOhSNR>Nx-Q zD}I_PBYv`4(FKK?yQ|4$w`l-NwiV=tk9}>PCgm`<=G;m@Xi!GKFSL1A4+q+}?BZks zB8&kSXC9;+!J9}j7^iB7x3jt|62tvPvY2_GHLLVT`;KmZtp;tate0>aPNT3(W(}ts zA!p&yCghjdN-=!=0DfczlejaPPXV|wYvnOQ#keP)UXc=?*-J#65jbE3kAB?0h|+1A zRwM#R^d7^|Y%|ksY~vuZ4pGvN?~+Vs{wPZ3NdwGfd=+tzXD$vR-C)evwQFC9(LDD} zjZ7ShIw;>hxnHwF#HWGlkoM?{rICotfyfo~=!Q4PvD>^=rHu>oJzbzO?FuFBU4J_?<@23ypUF8I0b|M! zQ)DCC*eG1yT|x1vS^+}CD`D=|zvxKe(Y-s@_+P1ob4_c{0dd@xf|+F41BlzWv>6LS zy4yJCobsv7`kVKnEJ@2DnU-IDzef^_pX&EyyIGeYH0Rt6``aymJE!JgfNICtJHXd8 zW>uR9TpL-01a*#4M(2x`thmieK==)2;O%X)$&ru%oaoxEaYGg;Q_c59IniPl~DitBJAt=B^vbldQ{K+ODhj zKiuGGgXwQE4f~Z3;kzWWWAef3@@G}#|8v2#?{$K|V*m<)X`RHIX57a_>RZ-?B-}Zq zlwl4`Y5$S)PtP(0;eBP!zeaVRz#h6N97f#oC?(*W2;FQQERU2^YK5_`Fu?X%_O{~V zQg5PXA#-~Ho4wT%yF772ysr*(96m2Npe9{K0Q@5gR zAX^gn4)Lu)Boa4pC&NIR~96Vpx_Ii}b*G*fwvp?|bxi`DudXKRY-1_i+~jn^92 zyNhEeh&ck5eSkmsrit0E|2@sW$Fbnf6bd61I@Wj=nCELzwQQL=h zadF!cQKD8nyz6G>q-i?=9Itk3dHAUbGjhQ6= zclT5CB&B9%p^mC04?hV2k|x**=mZL8etNp(+%>3Prd_-(QI4^ZyQ)>kI%_aA5bGT| zXudzmK(0|MATlLFA@|%Zk<5amq=sc{-JsRzG|9h*Vv_aCirgiDuF_l2ZpX?lI-Vyv z3yhFP61DA|P&7=XjtoN-cwBZZ)R{rG)rma>K%|K!4JZAX{_=?rZ&Cstv3Yf~ zzYw}o9n8?`KkPPlYC_z(MjZD0(vhQ1eR3R_RSJw{knQB9aKw)S4EkdfyMW$SlPa39X@fSuvVA#BBD0--_SVQF0O7ZU40+7I-mP z#>FG4$>4q@@${)jku|wa>xP zj>8uQW)v3|@n&$icl6Wlr3ssQ8KuhSjCriA@D#M*qa1z%s*N6^F7`cZqAcEP9$A}7 z?GpCh(26cKpwP@L(IquG+mUCoH#=+n!{2@~$~PHo?s(yv%v@9T%zd9w&(jb((JF&2`Ws**q@oV6OOw)_Lym(@X5)z& z83kd6gcf~g8_f_dV4Y|lO!`r zwl?YU>96FJCW(HKd6`35L1w4k2#x&(je55a5hLt6O%2xbf|m?tQqlG|d@$jq-;#Vx z`2pkve;s+AFBqtKMH&aJF6s}UGwELcQ@)EfViUr9*x$Xh>j1}#A*H^Afl>S>It(zt z4Ap3rXx9Px&3r8$ts$s(16r5eH*i^pxg5XUzIH&fNKRSu?5T-KosP0jf4b*TXj0fC z1{!t8ahXC($_IJM>KCqBvjjOAxG@E~n@UOmqdLuZ?!NfqQI$($Y4*Qi1#v$KQkG~4 z`%J!_$cJJ=b>FDa==Kh}W>{qiE5|H}gfK1eKU2cR;>mYlU>|#TZgwWKi+#d5XUcm* zYs6iC=5ggeq~L^acHQ6BSUB3ibQR4(oB?_9Y!78JE|-$M{weHr1XAh|YrOPHvBDI> zi1I=}F+sg48r|!Fw|5qgS~=Eg0>!iHzy@MWYDQ$9K0ZQE#-2Busi2$acrvnC!im6A zQOb`j(MYKfH#CbYl{vGP^q|k@pE<+uU(;bz`zG>hf=VJtz_?C++wDAs7d5?f%OwQ- z&hRd`CU2xwJUF2%KBN^WJVA=6a?V(=2F!K4MA3fC(FZ{^5R^BD7Ji_iapC3?D8-J6 zT;Jb4`j5NxEt_rI{$r|;#v5fF4WW?Rw!MvzYZbe9}UK`*P>tLmrQ_oDQL`gq*k_JQ`M20OJxkgnzZ=UJ7tN$@ORVz zXZaxb*ZT5)QL|IRD%6@5kvQMOL}p8lj} z4c!i_b(sQbUfljPEM3yTX?!$r+;%p1=vwFS=tk?$sWCnJ(~vHIzB&Fa(iu9eHBW_7 zSfdY3O!BA!uhL0qz<_PQm)EZ%NbiN``hr6liu1Ul3`@5n#5Ay%%7U`%CzG}-)w^*A z11HTlOU8b~*L7R}{;xKC-)NbKwIOeeL+U6mZE5`lsW}m0KSgvPKE_zT4=F+O>{)~; znwXjUP!eGC+|1Ftog?Q7Bv3d4Hfvy%+WS!TQI>U-I1ctJu1s-tM1?FogYe{B^aO$< zxP5ahgX@pa%up(Q@4gmeyEN~Roj@Q6&8iX9tYD&H;NoGGgp33WQProJ&J5*#P`T=w z0u)1|D46mxkI7AL#XVvctO|Ks9CRQIGP+A3Y?QeSDam5Q6Bc`ckeYaq7!^+d-L=`qFL)LFvgs^3AwTL<5 zaLjrB^c^_8sVecGO;sAxX2#YUwO-e)0!`P>u8%5UlTw>^1;IO`bEzuXc(B% zb*X*1Gf^tEKEjnujK++31Fv8m^Bsk+{?xE40pPYx9XC$HhI0lM=177_pFVh*Kezyn zI4|fvK0hP}Za@cW%U3K~s?7JxkNI$hK2@?Fjh1fv)$d!#U%ZTjLT zH|V1|Bdywy)I?RYv=CD>;dwbPM5Xy-)=m3B!?-f?ARE_G;MrHEsokNYJ{NG8HLm|Ja5A~U7WfdvV8MTtxT)Ag>^*EKtpWn*uM8!`M&u7 z@!x*HzkfIOzJAhw-g&iwe#$-YdZK_X0Vo#)JQT%qoz(zdPdX3_NZm(B?Mo~~{Y!kk zx#>^d8q#@6-WjOO%gv#JLP|7UI^!DWa{NSlj3)c(^9 z%*+%C1dZggQFm^{0mA0l_0^?m#&LX+5gQiHA)9S*O%xyExUahCN6KvB9E=0DBVNCZ zI547?<30@$s;JvFqKPlpY=ET|HGiZ&qodqj*2WJ$sB7%h55TAbJJMbS5u$+Uz4qxR zOv{o{7bVqfp#Dq*wI%I_O1^jZhm}oIKt%C0PSmo8=e#X5CA@Qf6Crek?$j!+f9p^&msGO+r>-Cj1kc`d>snJ}!* zd&RUVIN)utzsQJoA*Hwu_Q6}O$S`wxLVu=0CVZ%|B?_R~>bl^Gl|SffNe}*wV=1y1 ztuwo-E!&RFDaO;gSy~Q=NNrglLFqFy1cOnDEiUk*rQS28(kK1;>=bo#IfZ=P6abPq zZRF5MhVXfbr9*$V zzQFb63ypMg89@zWerxBAdL-fuiiz6H{n@RKiPfehZs@SU2sV?AOmP9kK*muJXKZP5 z!c`7@^igP3NB3(y7;g0W^jpl}CXYbZBFZo|CU@z*zzDOq!JJr!^Bf^qg%F%7?nzIs;tc8?|kTg@UAiKHGdh>*n*Po6u`Pq8!>nlEF;Sxq7$^Fz4lFo}F z*Ho$5H1_caxH+VNYEmpi$tm?`U@FxUb%L8@;-$;7Dau@&Dt(Bw%GS>tePF|3my$#);3J%!KpyngAw#s z9?GT$48ww>=~3s=yj%on*^T}c4qCyRPlq8QSl&#fYi7S6^`0>97x=IbH@ly*X0M836PF(I(9v2n|JOqQIf|jcl}+nauuPNC81nkWsLnE5aG6uM){Pb3&{%_ z9!LiXlu5k8YhmUB^vKSQipplBT~zMHFB51;2!2WcCoKjx18ES`C7!|9HPYy05v@Li zv9>Ti5fcanj7?v}I;P6v-dWf>NNE4II}-;EmgZo^DJr{5E-YR2OHyd^t|l$eXCHOe z{j%A8fB%xAb$#fvT7e5+B^NyUT-+B6#r_TyPX&XExhQx3FTtc+@9p}>(cPrH+PDC0 zslE3O`FOhpo9ZlI?LD|xWa$_)P>e((r8)@OgGca#_9`L@Hr3n=s*#zQMq)8Bg`ni={R>U(pP^EI3Fze=Fjf5e-Jiev?|#vewp}xs^pg}^14i%jh0akZ zXx)QAlA7Q5KdBJKPZspVJg7?zX}Vfg^ZS0w#$jXwOij?T|f&(NV3mI~0=}DUoj8Xa$j; z#{J}`v{0jnir1?o4k+59yqBwmrzmO`&tc%34XZcHsYq(Rj)GZ(~e^YXb1 z2Kw^XEn++{_WCPpW{7^w?0rvbsWeeV9TSfSL?HpUJg0i<5xAwkTPvH)w+o0Hd@K(1nF)FSFR_tUAls(SE2@V-v z#CWF{`>=SLT-A|UkcclBDQk3zG~plNgiRO5^{WI>B+I5ZPeqoKc|sz7j*6Qmad+Ig zx`fh5tw*(MW}0i9hSGmzS~dO+)Yd5tef!J>gFL-@tttRv42qQDTXWArNeUS#$nVC) z&ziPKAK7Rt4~ZCVxV!GC%h)l^jWOPr|Gu_)eVw}yR_3M_Gcg%kUu`w}VcKH*AZJ@g zjY-gYUWQnc9x->p#~EC;9@zb+>@gj^Q@#$aP`RlX-c*^954N~>@NVbqZ0|ND<`QGVp;(?c@7GS6CNOACJ`X&Rt$v`}8YxU(#t;A6=m9Vr95OYCgfr z@5383d(E?8Ua@(iZ96p4O1PE8gow34-ap2_yhTbuSYE>7lYyby#}COlxu z4vs9EeZjbS9NoQIQ!zt}NVF7+KCE)nOHLw|&$gAF#wT@cTWFUrlE6G?!Zr$2F7$aj zqm(#*_f$(YM=qtzbEe1*myHPy7@zh;kjWy~F)w$%pUAxOjq&txkZ`Rw963^o=|0s> z(UF7pItwP)_JBA^`zVjKzQSww4)2Hgl3onKlg@j3W&KWQjq9z;LK%n9B?TW$g1cKA zbv0kjlNq+}5R;m|086`6W7ZaW%{LP(Z>&T2Bc1mwU%;fYW{fxZobGJKr=fIBGJe%^ zwFBDN5KOXbN-J?UROtfpKz&TDFE5`v!ae?(>!ePY`8~_^;tVJF3 zvo~7*s`_s>DgQg>(Io#%N@>u)5v#PNXwc!I;6>3{R7YXDNMk6qyL6?yeA)(CEp<7t zTat|{ppp~r1ly}UcUeP6m9_*(pkfI-cIn$%Oz#}qF}|rh;LY1V-nVPV?$OOZ*s^7W z*!;2GzumR>gOQIu9wUx;&-lpicJbBw-Me;-?j0W;`R(@IyLN8hw`*+g=AV7CZ_lsC z*V{Fgn4|i-H-OB;gq%gkuoh@5_@Z+Dn^TQwK zSM$NVh712SNM-$SFRx9$!f*m*siKlqath|`@0>p^(T3+e?oairT_22%e>nCL7WK%s z`0v=*yJLIyjDEahwAw|C${wQjR+r{@uWDaE$E`)YS58%@Y9)nyh=m)$oi9`vyw(qDQ}6!+HTM-g literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-rocket/languages/rocket-zh_CN.po b/wp-content/plugins/wp-rocket/languages/rocket-zh_CN.po new file mode 100644 index 0000000..8ef3dfd --- /dev/null +++ b/wp-content/plugins/wp-rocket/languages/rocket-zh_CN.po @@ -0,0 +1,3730 @@ +# Copyright (C) 2016 WP Rocket +# This file is distributed under the same license as the WP Rocket package. +# Translators: +# wpmedia , 2019 +# Kurumi Tokisaki, 2020 +# 码农志 , 2020 +# Tony Tong , 2020 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: WP Rocket 3.4\n" +"Report-Msgid-Bugs-To: http://wp-rocket.me/\n" +"POT-Creation-Date: 2020-08-25 17:35-0400\n" +"PO-Revision-Date: 2019-08-26 15:14+0000\n" +"Last-Translator: Tony Tong , 2020\n" +"Language-Team: Chinese (China) (https://www.transifex.com/wp-media/teams/18133/zh_CN/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: zh_CN\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Poedit 1.8.11\n" +"X-Poedit-Basepath: ..\n" +"X-Poedit-KeywordsList: __;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c\n" +"X-Poedit-SearchPath-0: .\n" +"X-Poedit-SearchPathExcluded-0: assets\n" +"X-Poedit-SearchPathExcluded-1: src\n" +"X-Poedit-SearchPathExcluded-2: vendor\n" +"X-Poedit-SearchPathExcluded-3: node_modules\n" +"X-Poedit-SearchPathExcluded-4: tests\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Textdomain-Support: yes\n" + +#: inc/3rd-party/hosting/flywheel.php:18 inc/3rd-party/hosting/godaddy.php:18 +#: inc/3rd-party/hosting/pressidium.php:18 +#: inc/3rd-party/hosting/wp-serveur.php:27 +#: inc/ThirdParty/Hostings/Cloudways.php:90 +#: inc/ThirdParty/Hostings/O2Switch.php:49 +#: inc/ThirdParty/Hostings/Savvii.php:50 +#: inc/ThirdParty/Hostings/WPEngine.php:47 inc/deprecated/3.6.php:698 +#: inc/deprecated/3.6.php:1005 +#, php-format +msgid "" +"Your site is hosted on %s, we have enabled Varnish auto-purge for " +"compatibility." +msgstr "您的网站托管在%s。为确保兼容性, 我们已为您启用了Varnish自动缓存刷新功能。" + +#: inc/3rd-party/hosting/kinsta.php:161 +#, php-format +msgid "" +"Your installation seems to be missing core Kinsta files managing Cache " +"clearing and CDN, which will prevent your Kinsta installation and WP Rocket " +"from working correctly. Please get in touch with Kinsta support through your" +" %1$sMyKinsta%2$s account to resolve this issue." +msgstr "" +"由于缺失用于管理缓存刷新和CDN的Kinsta核心文件,您安装的Kinsta和WP " +"Rocket可能无法正常工作。请访问%1$sMyKinsta%2$s账户寻求Kinsta客服帮助。" + +#: inc/3rd-party/plugins/jetpack.php:86 +msgid "Jetpack XML Sitemaps" +msgstr "Jetpack XML 网站地图" + +#: inc/3rd-party/plugins/jetpack.php:88 +msgid "Preload the sitemap from the Jetpack plugin" +msgstr "从Jetpack插件预缓存网站地图" + +#: inc/3rd-party/plugins/jetpack.php:96 +#: inc/3rd-party/plugins/seo/all-in-one-seo-pack.php:89 +#: inc/3rd-party/plugins/seo/rank-math-seo.php:34 +#: inc/3rd-party/plugins/seo/seopress.php:86 +#: inc/3rd-party/plugins/seo/the-seo-framework.php:144 +#: inc/3rd-party/plugins/seo/yoast-seo.php:87 +#, php-format +msgid "" +"We automatically detected the sitemap generated by the %s plugin. You can " +"check the option to preload it." +msgstr "已自动监测到 %s 插件生成的sitemap。 您可查看相关选项来预缓存。" + +#: inc/3rd-party/plugins/seo/all-in-one-seo-pack.php:87 +msgid "All in One SEO XML sitemap" +msgstr "All in One SEO XML 网站地图" + +#: inc/3rd-party/plugins/seo/rank-math-seo.php:32 +msgid "Rank Math XML sitemap" +msgstr "Rank Math XML 网站地图" + +#: inc/3rd-party/plugins/seo/seopress.php:84 +msgid "SEOPress XML sitemap" +msgstr "SEOPress XML sitemap" + +#: inc/3rd-party/plugins/seo/the-seo-framework.php:142 +msgid "The SEO Framework XML sitemap" +msgstr "The SEO Framework XML 网站地图" + +#: inc/3rd-party/plugins/seo/yoast-seo.php:85 +msgid "Yoast SEO XML sitemap" +msgstr "Yoast SEO XML 网站地图" + +#: inc/Addon/Cloudflare/APIClient.php:309 +msgid "Ops Cloudflare did not provide any reply. Please try again later." +msgstr "Cloudflare 未响应,请稍后重试。" + +#: inc/Addon/Cloudflare/APIClient.php:318 inc/deprecated/3.5.php:122 +#: inc/deprecated/3.5.php:179 +msgid "Incorrect Cloudflare email address or API key." +msgstr "Cloudflare 邮箱 或 API key 不正确哦。" + +#: inc/Addon/Cloudflare/APIClient.php:322 +#: inc/Addon/Cloudflare/APIClient.php:335 +#: inc/Addon/Cloudflare/Cloudflare.php:112 +#: inc/Addon/Cloudflare/Cloudflare.php:144 +#: inc/classes/subscriber/Tools/class-detect-missing-tags-subscriber.php:157 +#: inc/deprecated/3.5.php:102 inc/deprecated/3.5.php:126 +#: inc/deprecated/3.5.php:139 inc/deprecated/3.5.php:167 +#: inc/deprecated/3.5.php:183 +#, php-format +msgid "Read the %1$sdocumentation%2$s for further guidance." +msgstr "查阅 %1$s文档%2$s获取帮助。" + +#: inc/Addon/Cloudflare/APIClient.php:324 +#: inc/Addon/Cloudflare/APIClient.php:337 +#: inc/Addon/Cloudflare/Cloudflare.php:101 +#: inc/Addon/Cloudflare/Cloudflare.php:114 +#: inc/Addon/Cloudflare/Cloudflare.php:146 inc/deprecated/3.5.php:91 +#: inc/deprecated/3.5.php:104 inc/deprecated/3.5.php:128 +#: inc/deprecated/3.5.php:141 inc/deprecated/3.5.php:169 +#: inc/deprecated/3.5.php:185 inc/deprecated/3.5.php:218 +msgid "" +"https://docs.wp-rocket.me/article/18-using-wp-rocket-with-" +"cloudflare/?utm_source=wp_plugin&utm_medium=wp_rocket#add-on" +msgstr "" +"https://docs.wp-rocket.me/article/18-using-wp-rocket-with-" +"cloudflare/?utm_source=wp_plugin&utm_medium=wp_rocket#add-on" + +#: inc/Addon/Cloudflare/APIClient.php:331 inc/deprecated/3.5.php:135 +msgid "Incorrect Cloudflare Zone ID." +msgstr "Cloudflare Zone ID 不正确。" + +#: inc/Addon/Cloudflare/Cloudflare.php:99 +#, php-format +msgid "" +"Cloudflare email and/or API key are not set. Read the %1$sdocumentation%2$s " +"for further guidance." +msgstr "Cloudflare 邮箱 和/或 API Key 未设置。更多信息请查阅%1$s文档%2$s。" + +#: inc/Addon/Cloudflare/Cloudflare.php:108 inc/deprecated/3.5.php:98 +msgid "Missing Cloudflare Zone ID." +msgstr "Cloudflare Zone ID 缺失。" + +#: inc/Addon/Cloudflare/Cloudflare.php:140 inc/deprecated/3.5.php:163 +msgid "It looks like your domain is not set up on Cloudflare." +msgstr "貌似Cloudflare里您的域名未正确设置。" + +#: inc/Addon/Cloudflare/Subscriber.php:215 inc/deprecated/3.5.php:597 +#, php-format +msgid "WP Rocket: %s" +msgstr "WP Rocket: %s" + +#: inc/Addon/Cloudflare/Subscriber.php:220 inc/deprecated/3.5.php:602 +msgid "WP Rocket: Cloudflare cache successfully purged." +msgstr "WP Rocket: 成功刷新 Cloudflare 缓存。" + +#: inc/Addon/Cloudflare/Subscriber.php:364 +#: inc/Addon/Cloudflare/Subscriber.php:370 +#: inc/Addon/Cloudflare/Subscriber.php:390 +#: inc/Addon/Cloudflare/Subscriber.php:401 +#: inc/Addon/Cloudflare/Subscriber.php:420 +#: inc/Addon/Cloudflare/Subscriber.php:426 +#: inc/Addon/Cloudflare/Subscriber.php:445 +#: inc/Addon/Cloudflare/Subscriber.php:451 +#: inc/Addon/Cloudflare/Subscriber.php:470 +#: inc/Addon/Cloudflare/Subscriber.php:476 +#: inc/Addon/Cloudflare/Subscriber.php:558 inc/admin/options.php:166 +#: inc/classes/subscriber/Tools/class-detect-missing-tags-subscriber.php:148 +msgid "WP Rocket: " +msgstr "WP Rocket:" + +#: inc/Addon/Cloudflare/Subscriber.php:364 +#, php-format +msgid "Cloudflare development mode error: %s" +msgstr "Cloudfare 开发者模式错误:%s" + +#: inc/Addon/Cloudflare/Subscriber.php:370 +#, php-format +msgid "Cloudflare development mode %s" +msgstr "Cloudfare 开发者模式 %s" + +#: inc/Addon/Cloudflare/Subscriber.php:390 +#, php-format +msgid "Cloudflare cache level error: %s" +msgstr "Cloudfare 缓存级别错误:%s" + +#: inc/Addon/Cloudflare/Subscriber.php:395 +msgctxt "Cloudflare caching level" +msgid "Standard" +msgstr "标准" + +#: inc/Addon/Cloudflare/Subscriber.php:401 +#, php-format +msgid "Cloudflare cache level set to %s" +msgstr "Cloudfare 缓存级别设置为:%s" + +#: inc/Addon/Cloudflare/Subscriber.php:420 +#, php-format +msgid "Cloudflare minification error: %s" +msgstr "Cloudflare 压缩错误:%s" + +#: inc/Addon/Cloudflare/Subscriber.php:426 +#, php-format +msgid "Cloudflare minification %s" +msgstr "Cloudflare 压缩:%s" + +#: inc/Addon/Cloudflare/Subscriber.php:445 +#, php-format +msgid "Cloudflare rocket loader error: %s" +msgstr "Cloudflare 火箭加载错误:%s" + +#: inc/Addon/Cloudflare/Subscriber.php:451 +#, php-format +msgid "Cloudflare rocket loader %s" +msgstr "Cloudflare 火箭加载 %s" + +#: inc/Addon/Cloudflare/Subscriber.php:470 +#, php-format +msgid "Cloudflare browser cache error: %s" +msgstr "Cloudflare 浏览器缓存错误:%s" + +#: inc/Addon/Cloudflare/Subscriber.php:476 +#, php-format +msgid "Cloudflare browser cache set to %s seconds" +msgstr "Cloudflare 浏览器缓存设置为 %s 秒" + +#: inc/Addon/FacebookTracking/Subscriber.php:87 +#: inc/Addon/GoogleTracking/Subscriber.php:132 +#: inc/Engine/HealthCheck/CacheDirSizeCheck.php:88 +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:92 +msgid "weekly" +msgstr "每周" + +#: inc/Engine/Admin/Settings/Page.php:171 +msgid "Save Changes" +msgstr "保存更改" + +#: inc/Engine/Admin/Settings/Page.php:171 +msgid "Validate License" +msgstr "验证授权" + +#: inc/Engine/Admin/Settings/Page.php:236 +#: inc/Engine/Admin/Settings/Page.php:237 +msgid "Unavailable" +msgstr "不可用" + +#: inc/Engine/Admin/Settings/Page.php:341 inc/deprecated/deprecated.php:1789 +#: views/settings/page-sections/dashboard.php:73 +msgid "License" +msgstr "授权" + +#: inc/Engine/Admin/Settings/Page.php:358 +msgid "API key" +msgstr "API key" + +#: inc/Engine/Admin/Settings/Page.php:373 +msgid "Email address" +msgstr "邮箱" + +#: inc/Engine/Admin/Settings/Page.php:399 +msgid "Dashboard" +msgstr "仪表盘" + +#: inc/Engine/Admin/Settings/Page.php:400 +msgid "Get help, account info" +msgstr "获取帮助、账户信息" + +#: inc/Engine/Admin/Settings/Page.php:409 +msgid "My Status" +msgstr "我的状态" + +#: inc/Engine/Admin/Settings/Page.php:419 views/settings/page.php:72 +msgid "Rocket Tester" +msgstr "Rocket 测试者" + +#: inc/Engine/Admin/Settings/Page.php:420 +msgid "I am part of the WP Rocket Beta Testing Program." +msgstr "加入WP Rocket Beta 测试计划。" + +#: inc/Engine/Admin/Settings/Page.php:428 views/settings/page.php:90 +msgid "Rocket Analytics" +msgstr "Rocket 分析" + +#: inc/Engine/Admin/Settings/Page.php:430 +#, php-format +msgid "" +"I agree to share anonymous data with the development team to help improve WP" +" Rocket. %1$sWhat info will we collect?%2$s" +msgstr "我同意向开发团队分享匿名数据以帮助改进 WP Rocket。%1$s我们搜集何种信息?%2$s" + +#: inc/Engine/Admin/Settings/Page.php:454 inc/Engine/Cache/WPCache.php:347 +msgid "Cache" +msgstr "缓存" + +#: inc/Engine/Admin/Settings/Page.php:455 +msgid "Basic cache options" +msgstr "基础缓存选项" + +#: inc/Engine/Admin/Settings/Page.php:462 +msgid "Mobile Cache" +msgstr "移动端缓存" + +#: inc/Engine/Admin/Settings/Page.php:464 +msgid "Speed up your site for mobile visitors." +msgstr "为您网站的移动端访客加速。" + +#: inc/Engine/Admin/Settings/Page.php:469 +msgid "" +"We detected you use a plugin that requires a separate cache for mobile, and " +"automatically enabled this option for compatibility." +msgstr "我们监测到您正在使用其他的移动端缓存插件,并已自动启用该选项以确保兼容性。" + +#: inc/Engine/Admin/Settings/Page.php:473 +msgid "User Cache" +msgstr "用户端缓存" + +#: inc/Engine/Admin/Settings/Page.php:476 +#, php-format +msgid "" +"%1$sUser cache%2$s is great when you have user-specific or restricted " +"content on your website." +msgstr "%1$s用户端缓存%2$s适用于您的网站有些内容仅指定用户才能查看或有限制内容时。" + +#: inc/Engine/Admin/Settings/Page.php:484 +msgid "Cache Lifespan" +msgstr "缓存有效期" + +#: inc/Engine/Admin/Settings/Page.php:487 +#, php-format +msgid "" +"Cache files older than the specified lifespan will be deleted.
      Enable " +"%1$spreloading%2$s for the cache to be rebuilt automatically after lifespan " +"expiration." +msgstr "指定生命周期外的缓存文件将被删除。
      启用 %1$s预缓存%2$s 功能,缓存将在过期时自动重建。" + +#: inc/Engine/Admin/Settings/Page.php:501 +msgid "Enable caching for logged-in WordPress users" +msgstr "为已登录的 WordPress 用户启用缓存" + +#: inc/Engine/Admin/Settings/Page.php:509 +msgid "Enable caching for mobile devices" +msgstr "启用" + +#: inc/Engine/Admin/Settings/Page.php:524 +msgid "Separate cache files for mobile devices" +msgstr "移动端单独缓存" + +#: inc/Engine/Admin/Settings/Page.php:526 +#, php-format +msgid "" +"Most modern themes are responsive and should work without a separate cache. " +"Enable this only if you have a dedicated mobile theme or plugin. %1$sMore " +"info%2$s" +msgstr "现在大部分主题都是响应式的,并不需要单独缓存。只有当你正在使用移动端专用的主题或插件时才建议开启该功能。%1$s更多信息%2$s" + +#: inc/Engine/Admin/Settings/Page.php:542 +msgid "" +"Specify time after which the global cache is cleared
      (0 = unlimited )" +msgstr "指定全局缓存刷新间隔
      (0 = 无限制)" + +#: inc/Engine/Admin/Settings/Page.php:544 +#, php-format +msgid "" +"Reduce lifespan to 10 hours or less if you notice issues that seem to appear" +" periodically. %1$sWhy?%2$s" +msgstr "如您注意到某些问题周期性出现,请将时间间隔改为10小时或更短。%1$s为什么?%2$s" + +#: inc/Engine/Admin/Settings/Page.php:550 +msgid "Minutes" +msgstr "分" + +#: inc/Engine/Admin/Settings/Page.php:551 +msgid "Hours" +msgstr "小时" + +#: inc/Engine/Admin/Settings/Page.php:552 +msgid "Days" +msgstr "天" + +#: inc/Engine/Admin/Settings/Page.php:577 +#: views/settings/page-sections/tutorials.php:22 +msgid "File Optimization" +msgstr "文件优化" + +#: inc/Engine/Admin/Settings/Page.php:578 +msgid "Optimize CSS & JS" +msgstr "优化 CSS 和 JS" + +#: inc/Engine/Admin/Settings/Page.php:585 +msgid "CSS Files" +msgstr "CSS 文件" + +#: inc/Engine/Admin/Settings/Page.php:592 +#: inc/Engine/Admin/Settings/Page.php:602 +#, php-format +msgid "" +"%1$s Minification is currently activated in Autoptimize. If" +" you want to use %2$s’s minification, disable those options in Autoptimize." +msgstr "自动优化中已启用%1$s压缩。 如您想使用 %2$s 的压缩功能,请禁用自动优化中的相关选项。" + +#: inc/Engine/Admin/Settings/Page.php:595 +msgid "JavaScript Files" +msgstr "JavaScript 文件" + +#: inc/Engine/Admin/Settings/Page.php:611 +msgid "Minify CSS files" +msgstr "压缩 CSS 文件" + +#: inc/Engine/Admin/Settings/Page.php:612 +msgid "Minify CSS removes whitespace and comments to reduce the file size." +msgstr "删除空格和注释以减小文件大小。" + +#: inc/Engine/Admin/Settings/Page.php:625 +#: inc/Engine/Admin/Settings/Page.php:647 +#: inc/Engine/Admin/Settings/Page.php:729 +#: inc/Engine/Admin/Settings/Page.php:751 +msgid "This could break things!" +msgstr "可能导致页面出错!" + +#: inc/Engine/Admin/Settings/Page.php:626 +#: inc/Engine/Admin/Settings/Page.php:648 +#: inc/Engine/Admin/Settings/Page.php:730 +#: inc/Engine/Admin/Settings/Page.php:752 +msgid "" +"If you notice any errors on your website after having activated this " +"setting, just deactivate it again, and your site will be back to normal." +msgstr "如启用该设置后网站出错,直接禁用即可恢复正常。" + +#: inc/Engine/Admin/Settings/Page.php:627 +msgid "Activate minify CSS" +msgstr "启用 CSS 压缩" + +#: inc/Engine/Admin/Settings/Page.php:632 +msgid "Combine CSS files (Enable Minify CSS files to select)" +msgstr "合并 CSS 文件(需先勾选上方的\"压缩CSS文件\")" + +#: inc/Engine/Admin/Settings/Page.php:634 +#, php-format +msgid "" +"Combine CSS merges all your files into 1, reducing HTTP requests. Not " +"recommended if your site uses HTTP/2. %1$sMore info%2$s" +msgstr "将所有文件合并成一个文件以减少 HTTP 请求数。不推荐用于已使用 HTTP/2 的站点。%1$s更多信息%2$s" + +#: inc/Engine/Admin/Settings/Page.php:649 +msgid "Activate combine CSS" +msgstr "启用 CSS 合并" + +#: inc/Engine/Admin/Settings/Page.php:654 inc/admin/options.php:125 +msgid "Excluded CSS Files" +msgstr "排除CSS" + +#: inc/Engine/Admin/Settings/Page.php:655 +msgid "" +"Specify URLs of CSS files to be excluded from minification and concatenation" +" (one per line)." +msgstr "指定不启用压缩 & 合并的 CSS 文件 URL(每行一个)" + +#: inc/Engine/Admin/Settings/Page.php:656 +msgid "" +"Internal: The domain part of the URL will be stripped " +"automatically. Use (.*).css wildcards to exclude all CSS files located at a " +"specific path." +msgstr "内部: URL 的域名部分将被自动删除。可用 (.*).css 通配符来匹配所有相似文件。" + +#: inc/Engine/Admin/Settings/Page.php:658 +#, php-format +msgid "" +"3rd Party: Use either the full URL path or only the domain " +"name, to exclude external CSS. %1$sMore info%2$s" +msgstr "第三方:使用完整的 URL 路径或仅使用域名来排除外部 CSS。%1$s更多信息%2$s" + +#: inc/Engine/Admin/Settings/Page.php:671 +msgid "Optimize CSS delivery" +msgstr "CSS 递送优化" + +#: inc/Engine/Admin/Settings/Page.php:678 +#, php-format +msgctxt "WP Critical CSS compatibility" +msgid "" +"Optimize CSS Delivery is currently handled by the %1$s plugin. If you want " +"to use WP Rocket’s Optimize CSS Delivery option, disable the %1$s plugin." +msgstr "CSS 递送优化当前由%1$s扩展接管。如您想使用 WP Rocket 的 CSS递送优化选项,请禁用%1$s扩展。" + +#: inc/Engine/Admin/Settings/Page.php:680 +#, php-format +msgid "" +"Optimize CSS delivery eliminates render-blocking CSS on your website for " +"faster perceived load time. %1$sMore info%2$s" +msgstr "消除您网站阻塞渲染的 CSS 以改善加载时间。%1$s更多信息%2$s" + +#: inc/Engine/Admin/Settings/Page.php:691 +msgid "Fallback critical CSS" +msgstr "关键路径 CSS 备用代码" + +#: inc/Engine/Admin/Settings/Page.php:696 +#, php-format +msgid "" +"Provides a fallback if auto-generated critical path CSS is incomplete. " +"%1$sMore info%2$s" +msgstr "输入备用代码,以供自动生成关键路径 CSS 操作无法完成时使用。%1$s更多信息%2$s" + +#: inc/Engine/Admin/Settings/Page.php:705 +msgid "Remove jQuery Migrate" +msgstr "移除 jQuery 合并" + +#: inc/Engine/Admin/Settings/Page.php:707 +#, php-format +msgid "" +"Remove jQuery Migrate eliminates a JS file and can improve load time. " +"%1$sMore info%2$s" +msgstr "移除 jQuery 合并会去除合并的 JS 文件并改善加载时间。%1$s更多信息%2$s" + +#: inc/Engine/Admin/Settings/Page.php:715 +msgid "Minify JavaScript files" +msgstr "压缩 JS 文件" + +#: inc/Engine/Admin/Settings/Page.php:716 +msgid "" +"Minify JavaScript removes whitespace and comments to reduce the file size." +msgstr "移除空白字符和注释以减小文件体积。" + +#: inc/Engine/Admin/Settings/Page.php:731 +msgid "Activate minify JavaScript" +msgstr "启用 JavaScript 压缩" + +#: inc/Engine/Admin/Settings/Page.php:736 +msgid "" +"Combine JavaScript files (Enable Minify JavaScript files to select)" +msgstr "合并 JavaScript 文件(需先勾选上方的\"压缩JS文件\")" + +#: inc/Engine/Admin/Settings/Page.php:738 +#, php-format +msgid "" +"Combine JavaScript files combines your site’s internal, 3rd party and inline" +" JS reducing HTTP requests. Not recommended if your site uses HTTP/2. " +"%1$sMore info%2$s" +msgstr "合并您网站内的内部、第三方以及内联 JS 文件,以减少 HTTP 请求数。不推荐用于已使用 HTTP/2 的站点。%1$s更多信息%2$s" + +#: inc/Engine/Admin/Settings/Page.php:753 +msgid "Activate combine JavaScript" +msgstr "启用 JavaScript 合并" + +#: inc/Engine/Admin/Settings/Page.php:758 inc/admin/options.php:126 +msgid "Excluded Inline JavaScript" +msgstr "排除内联的JavaScript" + +#: inc/Engine/Admin/Settings/Page.php:760 +#, php-format +msgid "" +"Specify patterns of inline JavaScript to be excluded from concatenation (one" +" per line). %1$sMore info%2$s" +msgstr "指定不启用压缩 & 合并的 JS 文件 URL(每行一个)%1$s更多信息%2$s" + +#: inc/Engine/Admin/Settings/Page.php:776 inc/admin/options.php:127 +msgid "Excluded JavaScript Files" +msgstr "排除JavaScript文件" + +#: inc/Engine/Admin/Settings/Page.php:777 +msgid "" +"Specify URLs of JavaScript files to be excluded from minification and " +"concatenation (one per line)." +msgstr "指定不启用压缩 & 合并的 JS 文件 URL(每行一个)" + +#: inc/Engine/Admin/Settings/Page.php:778 +msgid "" +"Internal: The domain part of the URL will be stripped " +"automatically. Use (.*).js wildcards to exclude all JS files located at a " +"specific path." +msgstr "内部: URL 的域名部分将被自动删除。可用 (.*).js 通配符来匹配所有相似文件。" + +#: inc/Engine/Admin/Settings/Page.php:780 +#, php-format +msgid "" +"3rd Party: Use either the full URL path or only the domain " +"name, to exclude external JS. %1$sMore info%2$s" +msgstr "第三方:使用完整的 URL 路径或仅使用域名来排除外部 JS。%1$s更多信息%2$s" + +#: inc/Engine/Admin/Settings/Page.php:796 +msgid "Load JavaScript deferred" +msgstr "JavaScript 异步加载" + +#: inc/Engine/Admin/Settings/Page.php:798 +#, php-format +msgid "" +"Load JavaScript deferred eliminates render-blocking JS on your site and can " +"improve load time. %1$sMore info%2$s" +msgstr "可以消除您网站阻塞渲染的 JS 以改善加载时间。%1$s更多信息%2$s" + +#: inc/Engine/Admin/Settings/Page.php:809 +msgid "Safe Mode for jQuery (recommended)" +msgstr "jQuery 的安全模式(推荐)" + +#: inc/Engine/Admin/Settings/Page.php:810 +msgid "" +"Safe mode for jQuery for deferred JS ensures support for inline jQuery " +"references from themes and plugins by loading jQuery at the top of the " +"document as a render-blocking script.
      Deactivating may result in " +"broken functionality, test thoroughly!" +msgstr "" +"将 jQuery 作为阻塞渲染脚本在文件头部加载,来确保主题或插件中内联的 jQuery " +"正确执行。
      禁用可能导致某些功能不可用,请谨慎测试!" + +#: inc/Engine/Admin/Settings/Page.php:823 inc/admin/ui/meta-boxes.php:79 +msgid "Delay JavaScript execution" +msgstr "JavaScript 延迟执行" + +#: inc/Engine/Admin/Settings/Page.php:825 +#, php-format +msgid "" +"Improves performance by delaying the loading of JavaScript files until user " +"interaction (e.g. scroll, click). %1$sMore info%2$s" +msgstr "" +"在页面加载时延迟加载JaveScript文件, 只在用户需要时(如滚动、点击)才加载这些非关键资源,可以优化网页性能。%1$s更多信息%2$s" + +#: inc/Engine/Admin/Settings/Page.php:833 +msgid "Scripts to delay" +msgstr "要延迟加载的代码" + +#: inc/Engine/Admin/Settings/Page.php:834 +msgid "" +"Specify keywords that can identify inline or JavaScript files to be delayed " +"(one per line)." +msgstr "指定可用来识别内联或 JavaScript 文件的关键字(每行一个)。" + +#: inc/Engine/Admin/Settings/Page.php:835 +msgid "" +"A curated list of scripts that are safe to delay is provided. They may not " +"all apply to your website and it is safe to leave the list as-is unless you " +"face issues." +msgstr "我们提供了一个已验证的可延迟脚本列表,可能会有某些脚本不适用于您的网站,除非您遇到问题,最好保持默认状态。" + +#: inc/Engine/Admin/Settings/Page.php:870 +msgid "Media" +msgstr "媒体" + +#: inc/Engine/Admin/Settings/Page.php:871 +msgid "LazyLoad, emojis, embeds, WebP" +msgstr "懒加载、Emoji表情、嵌入、WebP" + +#: inc/Engine/Admin/Settings/Page.php:880 +msgid "Avada" +msgstr "Avada" + +#: inc/Engine/Admin/Settings/Page.php:884 +msgid "Autoptimize" +msgstr "自动优化" + +#: inc/Engine/Admin/Settings/Page.php:929 +msgid "LazyLoad" +msgstr "懒加载" + +#: inc/Engine/Admin/Settings/Page.php:932 +#, php-format +msgid "" +"It can improve actual and perceived loading time as images, iframes, and " +"videos will be loaded only as they enter (or about to enter) the viewport " +"and reduces the number of HTTP requests. %1$sMore Info%2$s" +msgstr "" +"它可帮您改善加载时间(例如: 图片, 内嵌框架和视频将仅在进入或即将进入可视区域时才加载)和减少 HTTP 请求数.%1$s更多信息%2$s" + +#: inc/Engine/Admin/Settings/Page.php:939 +#, php-format +msgid "" +"LazyLoad is currently activated in %2$s. If you want to use WP Rocket’s " +"LazyLoad, disable this option in %2$s." +msgstr "延迟加载已在 %2$s 中启用。若您想要使用 WP Rocket 的延迟加载功能,请先在 %2$s 中禁用此选项。" + +#: inc/Engine/Admin/Settings/Page.php:942 +msgid "Emoji 👻" +msgstr "Emoji 👻" + +#: inc/Engine/Admin/Settings/Page.php:944 +msgid "" +"Use default emoji of visitor's browser instead of loading emoji from " +"WordPress.org" +msgstr "使用访客浏览器的默认 Emoji,而不是从 WordPress.org 加载。" + +#: inc/Engine/Admin/Settings/Page.php:948 +msgid "Embeds" +msgstr "嵌入" + +#: inc/Engine/Admin/Settings/Page.php:950 +msgid "" +"Prevents others from embedding content from your site, prevents you from " +"embedding content from other (non-allowed) sites, and removes JavaScript " +"requests related to WordPress embeds" +msgstr "阻止他人嵌入您网站的内容,阻止自己嵌入其他网站内容(白名单除外),并移除与WordPress嵌入功能相关的JavaScript请求。" + +#: inc/Engine/Admin/Settings/Page.php:954 +msgid "WebP compatibility" +msgstr "WebP 兼容性" + +#: inc/Engine/Admin/Settings/Page.php:958 +#, php-format +msgid "" +"Enable this option if you would like WP Rocket to serve WebP images to " +"compatible browsers. Please note that WP Rocket cannot create WebP images " +"for you. To create WebP images we recommend %1$sImagify%2$s. %3$sMore " +"info%2$s" +msgstr "" +"如您想使用 WP Rocket 来增加 WebP 图片支持,可开启此选项。请注意 WP Rocket 无法为您 创建 WebP 图片。要创建 WebP " +"图片 我们推荐使用 %1$sImagify%2$s 。%3$s更多信息%2$s" + +#: inc/Engine/Admin/Settings/Page.php:985 +msgid "Enable for images" +msgstr "为图片开启" + +#: inc/Engine/Admin/Settings/Page.php:997 +#, php-format +msgid "" +"LazyLoad for images is currently activated in %2$s. If you want to use " +"%1$s’s LazyLoad, disable this option in %2$s." +msgstr "延迟加载图像已在 %2$s 中启用。若您想要使用 %1$s 的延迟加载功能,请先在 %2$s 中禁用此选项。" + +#: inc/Engine/Admin/Settings/Page.php:1005 +msgid "Enable for iframes and videos" +msgstr "框架 & 视频" + +#: inc/Engine/Admin/Settings/Page.php:1020 +msgid "Replace YouTube iframe with preview image" +msgstr "用预览图替换 Youtube 框架" + +#: inc/Engine/Admin/Settings/Page.php:1021 +msgid "" +"This can significantly improve your loading time if you have a lot of " +"YouTube videos on a page." +msgstr "如页面含有多个 Youtube 视频,可以极大改善页面加载时间。" + +#: inc/Engine/Admin/Settings/Page.php:1031 +#, php-format +msgid "Replace YouTube iframe with preview image is not compatible with %2$s." +msgstr "用预览图替换Youtube 框架 不兼容于%2$s" + +#: inc/Engine/Admin/Settings/Page.php:1035 +msgid "Disable Emoji" +msgstr "禁用 Emoji 表情" + +#: inc/Engine/Admin/Settings/Page.php:1036 +msgid "Disable Emoji will reduce the number of external HTTP requests." +msgstr "减少外部 HTTP 请求数。" + +#: inc/Engine/Admin/Settings/Page.php:1044 +msgid "Disable WordPress embeds" +msgstr "禁用 WordPress 嵌入功能" + +#: inc/Engine/Admin/Settings/Page.php:1054 +#: inc/classes/subscriber/Media/class-webp-subscriber.php:362 +msgid "Enable WebP caching" +msgstr "开启 WebP 缓存" + +#: inc/Engine/Admin/Settings/Page.php:1074 inc/deprecated/deprecated.php:1776 +#: views/settings/page-sections/tutorials.php:30 +msgid "Preload" +msgstr "预缓存" + +#: inc/Engine/Admin/Settings/Page.php:1075 +msgid "Generate cache files, preload fonts" +msgstr "生成缓存文件、预加载字体" + +#: inc/Engine/Admin/Settings/Page.php:1086 +msgid "Preload Cache" +msgstr "预加载缓存" + +#: inc/Engine/Admin/Settings/Page.php:1089 +#, php-format +msgid "" +"When you enable preloading WP Rocket will generate the cache starting with " +"the links on your homepage followed by the sitemaps you specify. Preloading " +"is automatically triggered when you add or update content and can also be " +"manually triggered from the admin bar or from the %1$sWP Rocket " +"Dashboard%2$s." +msgstr "" +"当您启用预缓存时,WP Rocket " +"将从首页上的链接开始,按您指定的站点地图生成缓存。添加或更新网站内容时会自动触发预缓存,您也可从管理栏或%1$sWP Rocket " +"仪表盘%2$s手动进行预缓存。" + +#: inc/Engine/Admin/Settings/Page.php:1097 +msgid "Prefetch DNS Requests" +msgstr "DNS 预读取" + +#: inc/Engine/Admin/Settings/Page.php:1099 +msgid "" +"DNS prefetching can make external files load faster, especially on mobile " +"networks" +msgstr "DNS 预读取能更快地加载外部文件,特别是移动网络" + +#: inc/Engine/Admin/Settings/Page.php:1107 +msgid "Preload Fonts" +msgstr "预加载字体" + +#: inc/Engine/Admin/Settings/Page.php:1110 +#, php-format +msgid "" +"Improves performance by helping browsers discover fonts in CSS files. " +"%1$sMore info%2$s" +msgstr "帮助浏览器在 CSS 文件中发现字体来提高性能。%1$s了解详情%2$s" + +#: inc/Engine/Admin/Settings/Page.php:1118 +msgid "Preload Links" +msgstr "链接预取" + +#: inc/Engine/Admin/Settings/Page.php:1121 +#, php-format +msgid "" +"Link preloading improves the perceived load time by downloading a page when " +"a user hovers over the link. %1$sMore info%2$s" +msgstr "链接预取是指当用户的鼠标经过某个链接时,预先下载对应网页,所以当用户点击链接时会觉得加载速度非常快。%1$s更多信息%2$s" + +#: inc/Engine/Admin/Settings/Page.php:1135 +msgid "Activate Preloading" +msgstr "开启预缓存" + +#: inc/Engine/Admin/Settings/Page.php:1154 +msgid "Activate sitemap-based cache preloading" +msgstr "启用Sitemap预缓存" + +#: inc/Engine/Admin/Settings/Page.php:1173 +msgid "Sitemaps for preloading" +msgstr "预缓存Sitemap URL" + +#: inc/Engine/Admin/Settings/Page.php:1177 +msgid "Specify XML sitemap(s) to be used for preloading" +msgstr "指定用于预缓存的XML sitemap" + +#: inc/Engine/Admin/Settings/Page.php:1187 +msgid "URLs to prefetch" +msgstr "预读取的URL" + +#: inc/Engine/Admin/Settings/Page.php:1188 +msgid "" +"Specify external hosts to be prefetched (no http:, one per " +"line)" +msgstr "指定要预读取的外部主机名(不带 http:,每行一个)" + +#: inc/Engine/Admin/Settings/Page.php:1197 +msgid "Fonts to preload" +msgstr "要预加载的字体" + +#: inc/Engine/Admin/Settings/Page.php:1198 +msgid "" +"Specify urls of the font files to be preloaded (one per line). Fonts must be" +" hosted on your own domain, or the domain you have specified on the CDN tab." +msgstr "指定要预加载的字体文件的URL(每行一个)。字体必须托管在您自己的域名中,或者在CDN标签页中指定这个域名。" + +#: inc/Engine/Admin/Settings/Page.php:1199 +msgid "" +"The domain part of the URL will be stripped automatically.
      Allowed font " +"extensions: otf, ttf, svg, woff, woff2." +msgstr "URL的域名部分将被自动删除。
      允许的字体扩展为:otf,ttf,svg,woff,woff2。" + +#: inc/Engine/Admin/Settings/Page.php:1208 +msgid "Enable link preloading" +msgstr "启用链接预取" + +#: inc/Engine/Admin/Settings/Page.php:1227 +msgid "Advanced Rules" +msgstr "高级规则" + +#: inc/Engine/Admin/Settings/Page.php:1228 +msgid "Fine-tune cache rules" +msgstr "微调缓存规则" + +#: inc/Engine/Admin/Settings/Page.php:1237 +msgid "" +"Sensitive pages like custom login/logout URLs should be excluded from cache." +msgstr "某些特殊页面不建议缓存,如自定义的登录/注销URL。" + +#: inc/Engine/Admin/Settings/Page.php:1240 +msgctxt "plugin name" +msgid "WooCommerce" +msgstr "WooCommerce" + +#: inc/Engine/Admin/Settings/Page.php:1242 +msgctxt "plugin name" +msgid "Easy Digital Downloads" +msgstr "简易数字下载" + +#: inc/Engine/Admin/Settings/Page.php:1244 +msgctxt "plugin name" +msgid "iThemes Exchange" +msgstr "iThemes 交易" + +#: inc/Engine/Admin/Settings/Page.php:1246 +msgctxt "plugin name" +msgid "Jigoshop" +msgstr "Jigoshop" + +#: inc/Engine/Admin/Settings/Page.php:1248 +msgctxt "plugin name" +msgid "WP-Shop" +msgstr "WP-Shop" + +#: inc/Engine/Admin/Settings/Page.php:1254 +#, php-format +msgid "" +"
      Cart, checkout and \"my account\" pages set in " +"%1$s%2$s%3$s will be detected and never cached by default." +msgstr "
      默认将自动监测并永不缓存%1$s%2$s%3$s中设置的购物车、收银台和”我的账户“页面。" + +#: inc/Engine/Admin/Settings/Page.php:1264 inc/admin/options.php:128 +msgid "Never Cache URL(s)" +msgstr "永不缓存(URL):" + +#: inc/Engine/Admin/Settings/Page.php:1275 +msgid "Never Cache Cookies" +msgstr "永不缓存(Cookies)" + +#: inc/Engine/Admin/Settings/Page.php:1280 inc/admin/options.php:129 +msgid "Never Cache User Agent(s)" +msgstr "永不缓存(User Agents):" + +#: inc/Engine/Admin/Settings/Page.php:1285 inc/admin/options.php:130 +msgid "Always Purge URL(s)" +msgstr "总是清除以下URL缓存:" + +#: inc/Engine/Admin/Settings/Page.php:1294 +msgid "Cache Query String(s)" +msgstr "缓存查询字符串:" + +#: inc/Engine/Admin/Settings/Page.php:1297 +#, php-format +msgid "" +"%1$sCache for query strings%2$s enables you to force caching for specific " +"GET parameters." +msgstr "%1$s查询字符串缓存%2$s 可强制缓存指定GET参数。" + +#: inc/Engine/Admin/Settings/Page.php:1311 +msgid "" +"Specify URLs of pages or posts that should never be cached (one per line)" +msgstr "指定永不缓存的页面或文章URL (每行一个)" + +#: inc/Engine/Admin/Settings/Page.php:1312 +#: inc/Engine/Admin/Settings/Page.php:1340 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*) " +"wildcards to address multiple URLs under a given path." +msgstr "URL的域名部分将被自动删除。
      可使用 (.*) 通配符来匹配多个相似URL。" + +#: inc/Engine/Admin/Settings/Page.php:1321 +msgid "" +"Specify the IDs of cookies that, when set in the visitor's browser, should " +"prevent a page from getting cached (one per line)" +msgstr "指定永不缓存的 cookies ID(每行一个)" + +#: inc/Engine/Admin/Settings/Page.php:1329 +msgid "" +"Specify user agent strings that should never see cached pages (one per line)" +msgstr "指定永不缓存的 user agent 字符串(每行一个)" + +#: inc/Engine/Admin/Settings/Page.php:1330 +msgid "Use (.*) wildcards to detect parts of UA strings." +msgstr "可用 (.*) 通配符来匹配部分 UA 字符串。" + +#: inc/Engine/Admin/Settings/Page.php:1339 +msgid "" +"Specify URLs you always want purged from cache whenever you update any post " +"or page (one per line)" +msgstr "指定当更新任何文章或页面时,要清除缓存的 URL(每行一个)" + +#: inc/Engine/Admin/Settings/Page.php:1348 +msgid "Specify query strings for caching (one per line)" +msgstr "指定要缓存的查询字符串(每行一个)" + +#: inc/Engine/Admin/Settings/Page.php:1373 inc/deprecated/deprecated.php:1775 +msgid "Database" +msgstr "数据库" + +#: inc/Engine/Admin/Settings/Page.php:1374 +msgid "Optimize, reduce bloat" +msgstr "优化,减少冗余" + +#: inc/Engine/Admin/Settings/Page.php:1383 +msgid "Post Cleanup" +msgstr "文章清理" + +#: inc/Engine/Admin/Settings/Page.php:1385 +msgid "" +"Post revisions and drafts will be permanently deleted. Do not use this " +"option if you need to retain revisions or drafts." +msgstr "永久删除文章的修订版本和草稿。如您需要保留修订版本或草稿, 请勿使用该选项。" + +#: inc/Engine/Admin/Settings/Page.php:1393 +msgid "Comments Cleanup" +msgstr "评论清理" + +#: inc/Engine/Admin/Settings/Page.php:1395 +msgid "Spam and trashed comments will be permanently deleted." +msgstr "永久删除垃圾评论和回收站评论。" + +#: inc/Engine/Admin/Settings/Page.php:1399 +msgid "Transients Cleanup" +msgstr "临时数据清理" + +#: inc/Engine/Admin/Settings/Page.php:1401 +msgid "" +"Transients are temporary options; they are safe to remove. They will be " +"automatically regenerated as your plugins require them." +msgstr "可安全清除。插件需要时将会自动重新生成。" + +#: inc/Engine/Admin/Settings/Page.php:1405 +msgid "Database Cleanup" +msgstr "数据库清理" + +#: inc/Engine/Admin/Settings/Page.php:1407 +msgid "Reduces overhead of database tables" +msgstr "优化数据库表" + +#: inc/Engine/Admin/Settings/Page.php:1411 +msgid "Automatic cleanup" +msgstr "自动清理" + +#: inc/Engine/Admin/Settings/Page.php:1422 +#: inc/classes/admin/Database/class-optimization.php:41 +msgid "Revisions" +msgstr "修订版本" + +#: inc/Engine/Admin/Settings/Page.php:1424 +#, php-format +msgid "%s revision in your database." +msgid_plural "%s revisions in your database." +msgstr[0] "检测到 %s 个修订版本。" + +#: inc/Engine/Admin/Settings/Page.php:1432 +#: inc/classes/admin/Database/class-optimization.php:42 +msgid "Auto Drafts" +msgstr "自动草稿" + +#: inc/Engine/Admin/Settings/Page.php:1434 +#, php-format +msgid "%s draft in your database." +msgid_plural "%s drafts in your database." +msgstr[0] "检测到 %s 篇草稿。" + +#: inc/Engine/Admin/Settings/Page.php:1442 +#: inc/classes/admin/Database/class-optimization.php:43 +msgid "Trashed Posts" +msgstr "回收站文章" + +#: inc/Engine/Admin/Settings/Page.php:1444 +#, php-format +msgid "%s trashed post in your database." +msgid_plural "%s trashed posts in your database." +msgstr[0] "检测到 %s 篇回收站文章。" + +#: inc/Engine/Admin/Settings/Page.php:1452 +#: inc/classes/admin/Database/class-optimization.php:44 +msgid "Spam Comments" +msgstr "垃圾评论" + +#: inc/Engine/Admin/Settings/Page.php:1454 +#, php-format +msgid "%s spam comment in your database." +msgid_plural "%s spam comments in your database." +msgstr[0] "检测到 %s 条垃圾评论。" + +#: inc/Engine/Admin/Settings/Page.php:1462 +#: inc/classes/admin/Database/class-optimization.php:45 +msgid "Trashed Comments" +msgstr "回收站评论" + +#: inc/Engine/Admin/Settings/Page.php:1464 +#, php-format +msgid "%s trashed comment in your database." +msgid_plural "%s trashed comments in your database." +msgstr[0] "检测到 %s 条回收站评论。" + +#: inc/Engine/Admin/Settings/Page.php:1472 +#: inc/classes/admin/Database/class-optimization.php:46 +msgid "Expired transients" +msgstr "过期的临时数据" + +#: inc/Engine/Admin/Settings/Page.php:1474 +#, php-format +msgid "%s expired transient in your database." +msgid_plural "%s expired transients in your database." +msgstr[0] "发现 %s 条过期的临时数据。" + +#: inc/Engine/Admin/Settings/Page.php:1482 +msgid "All transients" +msgstr "所有临时数据" + +#: inc/Engine/Admin/Settings/Page.php:1484 +#, php-format +msgid "%s transient in your database." +msgid_plural "%s transients in your database." +msgstr[0] "检测到 %s 条过期的临时数据。" + +#: inc/Engine/Admin/Settings/Page.php:1492 +msgid "Optimize Tables" +msgstr "优化数据表" + +#: inc/Engine/Admin/Settings/Page.php:1494 +#, php-format +msgid "%s table to optimize in your database." +msgid_plural "%s tables to optimize in your database." +msgstr[0] "检测到 %s 张表可被优化。" + +#: inc/Engine/Admin/Settings/Page.php:1505 +msgid "Schedule Automatic Cleanup" +msgstr "自动清理计划任务" + +#: inc/Engine/Admin/Settings/Page.php:1517 +msgid "Frequency" +msgstr "频率" + +#: inc/Engine/Admin/Settings/Page.php:1525 +msgid "Daily" +msgstr "每日" + +#: inc/Engine/Admin/Settings/Page.php:1526 +msgid "Weekly" +msgstr "每周" + +#: inc/Engine/Admin/Settings/Page.php:1527 +msgid "Monthly" +msgstr "每月" + +#: inc/Engine/Admin/Settings/Page.php:1543 +#: inc/Engine/Admin/Settings/Page.php:1554 inc/admin/ui/meta-boxes.php:76 +#: inc/deprecated/deprecated.php:1773 +msgid "CDN" +msgstr "CDN" + +#: inc/Engine/Admin/Settings/Page.php:1544 +msgid "Integrate your CDN" +msgstr "CDN整合" + +#: inc/Engine/Admin/Settings/Page.php:1556 +msgid "" +"All URLs of static files (CSS, JS, images) will be rewritten to the CNAME(s)" +" you provide." +msgstr "所有静态文件 URL(CSS、JS和图片)将被重写至下方您提供的 CNAME。" + +#: inc/Engine/Admin/Settings/Page.php:1558 +#, php-format +msgid "" +"Not required for services like Cloudflare and Sucuri. Please see our " +"available %1$sAdd-ons%2$s." +msgstr "Cloudflare 和 Sucuri 等服务不需要。请参考我们的可用%1$s扩展%2$s。" + +#: inc/Engine/Admin/Settings/Page.php:1573 inc/admin/options.php:131 +msgid "Exclude files from CDN" +msgstr "从CDN中排除文件" + +#: inc/Engine/Admin/Settings/Page.php:1599 +#, php-format +msgid "" +"%1$s%2$s Add-on%3$s is currently enabled. Configuration of the CDN settings " +"is not required for %2$s to work on your site." +msgid_plural "" +"%1$s%2$s Add-ons%3$s are currently enabled. Configuration of the CDN " +"settings is not required for %2$s to work on your site." +msgstr[0] "%1$s%2$s扩展%3$s已启用。CDN设置对于%2$s正常工作来说不是必需的。" + +#: inc/Engine/Admin/Settings/Page.php:1624 +msgid "Enable Content Delivery Network" +msgstr "启用CDN" + +#: inc/Engine/Admin/Settings/Page.php:1633 +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:151 +msgid "CDN CNAME(s)" +msgstr "CDN CNAME:" + +#: inc/Engine/Admin/Settings/Page.php:1634 +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:152 +msgid "Specify the CNAME(s) below" +msgstr "指定 CNAME" + +#: inc/Engine/Admin/Settings/Page.php:1641 +msgid "" +"Specify URL(s) of files that should not get served via CDN (one per line)." +msgstr "指定不启用 CDN 的文件 URL(每行一个)" + +#: inc/Engine/Admin/Settings/Page.php:1642 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*) " +"wildcards to exclude all files of a given file type located at a specific " +"path." +msgstr "URL 的域名部分将被自动删除。
      可用 (.*) 通配符来匹配所有相似文件。" + +#: inc/Engine/Admin/Settings/Page.php:1664 +#: inc/Engine/Admin/Settings/Page.php:1672 +msgid "Heartbeat" +msgstr "心跳监测" + +#: inc/Engine/Admin/Settings/Page.php:1665 +msgid "Control WordPress Heartbeat API" +msgstr "控制 WordPress 心跳监测的 API" + +#: inc/Engine/Admin/Settings/Page.php:1673 +msgid "" +"Reducing or disabling the Heartbeat API’s activity can help save some of " +"your server’s resources." +msgstr "降低其频率或禁用 API 可帮您节省部分服务器资源。" + +#: inc/Engine/Admin/Settings/Page.php:1682 +msgid "Reduce or disable Heartbeat activity" +msgstr "减少心跳监测频率或禁用心跳监测" + +#: inc/Engine/Admin/Settings/Page.php:1683 +msgid "" +"Reducing activity will change Heartbeat frequency from one hit each minute " +"to one hit every 2 minutes." +msgstr "减少活动:将心跳监测频率从每分钟一次改为每2分钟一次。" + +#: inc/Engine/Admin/Settings/Page.php:1683 +msgid "" +"Disabling Heartbeat entirely may break plugins and themes using this API." +msgstr "完全禁用:可能会破坏使用此 API 的插件和主题。" + +#: inc/Engine/Admin/Settings/Page.php:1697 +msgid "Do not limit" +msgstr "不限制" + +#: inc/Engine/Admin/Settings/Page.php:1698 +msgid "Reduce activity" +msgstr "减少活动" + +#: inc/Engine/Admin/Settings/Page.php:1699 +msgid "Disable" +msgstr "禁用" + +#: inc/Engine/Admin/Settings/Page.php:1707 +msgid "Control Heartbeat" +msgstr "心跳控制" + +#: inc/Engine/Admin/Settings/Page.php:1716 +msgid "Behavior in backend" +msgstr "后端行为监测" + +#: inc/Engine/Admin/Settings/Page.php:1723 +msgid "Behavior in post editor" +msgstr "文章编辑器行为监测" + +#: inc/Engine/Admin/Settings/Page.php:1729 +msgid "Behavior in frontend" +msgstr "前端行为监测" + +#: inc/Engine/Admin/Settings/Page.php:1745 +#: views/settings/page-sections/tutorials.php:36 +msgid "Add-ons" +msgstr "扩展功能" + +#: inc/Engine/Admin/Settings/Page.php:1746 +msgid "Add more features" +msgstr "提供更多设置" + +#: inc/Engine/Admin/Settings/Page.php:1753 +msgid "One-click Rocket Add-ons" +msgstr "Rocket 一键扩展功能" + +#: inc/Engine/Admin/Settings/Page.php:1754 +msgid "" +"One-Click Add-ons are features extending available options without " +"configuration needed. Switch the option \"on\" to enable from this screen." +msgstr "额外的功能选项。设为 “on” 即可启用,无需另外配置。" + +#: inc/Engine/Admin/Settings/Page.php:1764 +msgid "Rocket Add-ons" +msgstr "Rocket 扩展功能" + +#: inc/Engine/Admin/Settings/Page.php:1765 +msgid "Rocket Add-ons are complementary features extending available options." +msgstr "现有功能的补充。" + +#: inc/Engine/Admin/Settings/Page.php:1778 +msgid "Google Tracking" +msgstr "Google 跟踪" + +#: inc/Engine/Admin/Settings/Page.php:1784 +msgid "Improve browser caching for Google Analytics" +msgstr "为 Google Analytics 优化浏览器缓存" + +#: inc/Engine/Admin/Settings/Page.php:1786 +#, php-format +msgid "" +"WP Rocket will host these Google scripts locally on your server to help " +"satisfy the PageSpeed recommendation for Leverage browser " +"caching.
      %1$sLearn more%2$s" +msgstr "" +"WP Rocket 会将这些 Google 代码保存在本地服务器, 以满足 PageSpeed " +"关于优化浏览器缓存的建议.
      %1$s了解更多%2$s" + +#: inc/Engine/Admin/Settings/Page.php:1801 +msgid "Facebook Pixel" +msgstr "Facebook Pixel" + +#: inc/Engine/Admin/Settings/Page.php:1807 +msgid "Improve browser caching for Facebook Pixel" +msgstr "为 Facebook Pixel 优化浏览器缓存" + +#: inc/Engine/Admin/Settings/Page.php:1809 +#, php-format +msgid "" +"WP Rocket will host these Facebook Pixels locally on your server to help " +"satisfy the PageSpeed recommendation for Leverage browser " +"caching.
      %1$sLearn more%2$s" +msgstr "" +"WP Rocket 会将这些FaceBook Pixels 保存在服务器本地, 以满足 PageSpeed " +"关于优化浏览器缓存的建议.
      %1$s了解更多%2$s" + +#: inc/Engine/Admin/Settings/Page.php:1822 +#: inc/Engine/Admin/Settings/Page.php:1923 +msgid "Cloudflare" +msgstr "Cloudflare" + +#: inc/Engine/Admin/Settings/Page.php:1828 +msgid "Integrate your Cloudflare account with this add-on." +msgstr "使用该扩展整合您的Cloudflare账户。" + +#: inc/Engine/Admin/Settings/Page.php:1829 +msgid "" +"Provide your account email, global API key, and domain to use options such " +"as clearing the Cloudflare cache and enabling optimal settings with WP " +"Rocket." +msgstr "提供您的账户邮箱、全局 API key 和域名以开启相关优化选项并使用清除 Cloudflare 缓存等功能。" + +#: inc/Engine/Admin/Settings/Page.php:1863 +msgid "Varnish" +msgstr "Varnish" + +#: inc/Engine/Admin/Settings/Page.php:1869 +msgid "If Varnish runs on your server, you must activate this add-on." +msgstr "如服务器已启用 Varnish,该功能必须开启。" + +#: inc/Engine/Admin/Settings/Page.php:1871 +#, php-format +msgid "" +"Varnish cache will be purged each time WP Rocket clears its cache to ensure " +"content is always up-to-date.
      %1$sLearn more%2$s" +msgstr "当 WP Rocket 每次清除缓存时,自动清除 Varnish 缓存以使内容保持最新。
      %1$s更多信息%2$s" + +#: inc/Engine/Admin/Settings/Page.php:1885 +msgid "Clear the Sucuri cache when WP Rocket’s cache is cleared." +msgstr "在 WP Rocket 的缓存被清理时,清理 Sucuri 缓存。" + +#: inc/Engine/Admin/Settings/Page.php:1888 +msgid "" +"Provide your API key to clear the Sucuri cache when WP Rocket’s cache is " +"cleared." +msgstr "提供 Sucuri 的 API Key 以便用于当 WP Rocket 的缓存被清理时, 清理 Sucuri 缓存。" + +#: inc/Engine/Admin/Settings/Page.php:1896 +#: inc/Engine/Admin/Settings/Page.php:2040 +msgid "Sucuri" +msgstr "Sucuri ( 一家CDN服务商 )" + +#: inc/Engine/Admin/Settings/Page.php:1902 +msgid "Synchronize Sucuri cache with this add-on." +msgstr "使用此扩展同步 Sucuri 缓存。" + +#: inc/Engine/Admin/Settings/Page.php:1940 +msgid "Cloudflare credentials" +msgstr "Cloudflare授权" + +#: inc/Engine/Admin/Settings/Page.php:1949 +msgid "Cloudflare settings" +msgstr "Cloudflare设置" + +#: inc/Engine/Admin/Settings/Page.php:1963 +msgctxt "Cloudflare" +msgid "Global API key:" +msgstr "全局 API key:" + +#: inc/Engine/Admin/Settings/Page.php:1964 +msgctxt "Cloudflare" +msgid "Find your API key" +msgstr "查找我的 API Key" + +#: inc/Engine/Admin/Settings/Page.php:1976 +msgctxt "Cloudflare" +msgid "Account email" +msgstr "账户邮箱" + +#: inc/Engine/Admin/Settings/Page.php:1985 +msgctxt "Cloudflare" +msgid "Zone ID" +msgstr "Zone ID" + +#: inc/Engine/Admin/Settings/Page.php:1995 +msgid "Development mode" +msgstr "开发者模式" + +#: inc/Engine/Admin/Settings/Page.php:1997 +#, php-format +msgid "" +"Temporarily activate development mode on your website. This setting will " +"automatically turn off after 3 hours. %1$sLearn more%2$s" +msgstr "暂时在您的网站上激活开发模式。 该设置将在3小时后自动关闭。%1$s更多%2$s" + +#: inc/Engine/Admin/Settings/Page.php:2005 +msgid "Optimal settings" +msgstr "优化设置" + +#: inc/Engine/Admin/Settings/Page.php:2006 +msgid "" +"Automatically enhances your Cloudflare configuration for speed, performance " +"grade and compatibility." +msgstr "自动优化 Cloudflare 设置(基于速度,性能等级和兼容性)。" + +#: inc/Engine/Admin/Settings/Page.php:2014 +msgid "Relative protocol" +msgstr "相对协议" + +#: inc/Engine/Admin/Settings/Page.php:2015 +msgid "" +"Should only be used with Cloudflare's flexible SSL feature. URLs of static " +"files (CSS, JS, images) will be rewritten to use // instead of http:// or " +"https://." +msgstr "" +"仅适用于 Cloudflare的 flexible SSL 功能。静态文件(CSS, JS和图片)URL的 http:// 或 https:// " +"将被重写为 // 。" + +#: inc/Engine/Admin/Settings/Page.php:2053 +msgid "Sucuri credentials" +msgstr "Sucuri 凭证" + +#: inc/Engine/Admin/Settings/Page.php:2066 +msgctxt "Sucuri" +msgid "" +"Firewall API key (for plugin), must be in format {32 characters}/{32 " +"characters}:" +msgstr "防火墙的 API Key (插件用) 应为32个字符." + +#: inc/Engine/Admin/Settings/Page.php:2067 +msgctxt "Sucuri" +msgid "Find your API key" +msgstr "查找我的 API Key" + +#: inc/Engine/Admin/Settings/Render.php:461 inc/deprecated/deprecated.php:1294 +msgid "Upload file and import settings" +msgstr "上传文件并导入配置" + +#: inc/Engine/Admin/Settings/Settings.php:400 +msgid "" +"Sucuri Add-on: The API key for the Sucuri firewall must be in format " +"{32 characters}/{32 characters}." +msgstr "Sucuri 扩展: Sucuri 防火墙的 API key 长度应为{32个字符}/{32个字符}." + +#: inc/Engine/Admin/Settings/Settings.php:491 +#: inc/deprecated/deprecated.php:1245 +msgid "Settings saved." +msgstr "设置已保存。" + +#: inc/Engine/Admin/Settings/Subscriber.php:141 +#: inc/deprecated/deprecated.php:1786 +#: views/settings/page-sections/tools.php:33 +msgid "Tools" +msgstr "工具" + +#: inc/Engine/Admin/Settings/Subscriber.php:142 +msgid "Import, Export, Rollback" +msgstr "导入、导出和还原" + +#: inc/Engine/Admin/Settings/Subscriber.php:163 +#: views/settings/page-sections/imagify.php:14 +msgid "Image Optimization" +msgstr "图片优化" + +#: inc/Engine/Admin/Settings/Subscriber.php:164 +msgid "Compress your images" +msgstr "压缩您的图片" + +#: inc/Engine/Admin/Settings/Subscriber.php:181 +#: views/settings/page-sections/tutorials.php:45 +msgid "Tutorials" +msgstr "指南" + +#: inc/Engine/Admin/Settings/Subscriber.php:182 +msgid "Getting started and how to videos" +msgstr "新手指南 和 How To 视频" + +#: inc/Engine/CDN/RocketCDN/APIClient.php:154 +msgid "RocketCDN is not available at the moment. Please retry later" +msgstr "RocketCDN 不可用,请稍后重试。" + +#: inc/Engine/CDN/RocketCDN/APIClient.php:171 +msgid "RocketCDN cache purge failed: Missing identifier parameter." +msgstr "RocketCDN 缓存清除失败:识别参数缺失。" + +#: inc/Engine/CDN/RocketCDN/APIClient.php:180 +msgid "RocketCDN cache purge failed: Missing user token." +msgstr "RocketCDN 缓存清除失败:用户 token 缺失。" + +#: inc/Engine/CDN/RocketCDN/APIClient.php:199 +msgid "" +"RocketCDN cache purge failed: The API returned an unexpected response code." +msgstr "RocketCDN 缓存清除失败:API 返回未知状态码。" + +#: inc/Engine/CDN/RocketCDN/APIClient.php:208 +msgid "RocketCDN cache purge failed: The API returned an empty response." +msgstr "RocketCDN 缓存清除失败:API 返回为空。" + +#: inc/Engine/CDN/RocketCDN/APIClient.php:217 +msgid "RocketCDN cache purge failed: The API returned an unexpected response." +msgstr "RocketCDN 缓存清除失败:API 返回未知状态码。" + +#: inc/Engine/CDN/RocketCDN/APIClient.php:226 +#, php-format +msgid "RocketCDN cache purge failed: %s." +msgstr "RocketCDN 缓存清除失败:%s。" + +#: inc/Engine/CDN/RocketCDN/APIClient.php:234 +msgid "RocketCDN cache purge successful." +msgstr "RocketCDN 缓存已成功清除。" + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:82 +msgid "Next Billing Date" +msgstr "下个付款日" + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:91 +msgid "No Subscription" +msgstr "未订阅" + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:127 +msgid "Your RocketCDN subscription is currently active." +msgstr "您的 RocketCDN 订阅已激活。" + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:133 +#, php-format +msgid "To use RocketCDN, replace your CNAME with %1$s%2$s%3$s." +msgstr "要使用 RocketCDN,请替换您的 CNAME 为 %1$s%2$s%3$s。" + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:144 +#, php-format +msgid "%1$sMore Info%2$s" +msgstr "%1$s更多信息%2$s" + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:190 +msgid "Manage Subscription" +msgstr "管理订阅" + +#: inc/Engine/CDN/RocketCDN/RESTSubscriber.php:137 +msgid "RocketCDN enabled" +msgstr "RocketCDN 已启用" + +#: inc/Engine/CDN/RocketCDN/RESTSubscriber.php:160 +msgid "RocketCDN disabled" +msgstr "RocketCDN 已禁用" + +#: inc/Engine/Cache/AdminSubscriber.php:118 inc/admin/admin.php:71 +#: inc/admin/admin.php:92 inc/deprecated/3.5.php:908 +msgid "Clear this cache" +msgstr "清除该缓存" + +#: inc/Engine/Cache/WPCache.php:330 +msgid "WP_CACHE value" +msgstr "WP_CACHE 值" + +#: inc/Engine/Cache/WPCache.php:351 +msgid "" +"The WP_CACHE constant needs to be set to true for WP Rocket cache to work " +"properly" +msgstr "为确保 WP Rocket 正常工作,WP_CACHE 常量需设为 true" + +#: inc/Engine/Cache/WPCache.php:360 +msgid "WP_CACHE is set to true" +msgstr "WP_CACHE 已设为 true" + +#: inc/Engine/Cache/WPCache.php:368 +msgid "WP_CACHE is not set" +msgstr "WP_CACHE 未设置" + +#: inc/Engine/Cache/WPCache.php:376 +msgid "WP_CACHE is set to false" +msgstr "WP_CACHE 已设为 false" + +#: inc/Engine/CriticalPath/APIClient.php:64 +#, php-format +msgid "Critical CSS for %1$s not generated. Error: %2$s" +msgstr "%1$s的关键路径CSS未生成。错误:%2$s" + +#: inc/Engine/CriticalPath/APIClient.php:170 +#: inc/Engine/CriticalPath/DataManager.php:66 +#, php-format +msgid "" +"Critical CSS for %1$s on mobile not generated. Error: The API returned an " +"empty response." +msgstr "移动端的%1$s关键CSS没有被生成。原因:API返回一个了空的响应报文" + +#: inc/Engine/CriticalPath/APIClient.php:173 +#: inc/Engine/CriticalPath/DataManager.php:69 +#, php-format +msgid "" +"Critical CSS for %1$s not generated. Error: The API returned an empty " +"response." +msgstr "%1$s的关键CSS 没有生成。原因:API返回了一个空的响应报文。" + +#: inc/Engine/CriticalPath/APIClient.php:185 +#, php-format +msgid "Critical CSS for %1$s on mobile not generated." +msgstr "移动端的关键CSS%1$s没有被生成" + +#: inc/Engine/CriticalPath/APIClient.php:187 +#: inc/Engine/CriticalPath/ProcessorService.php:193 +#, php-format +msgid "Critical CSS for %1$s not generated." +msgstr "%1$s的Critical CSS没有被生成" + +#: inc/Engine/CriticalPath/APIClient.php:195 +#, php-format +msgid "" +"Critical CSS for %1$s on mobile not generated. Error: The API returned an " +"invalid response code." +msgstr "移动端的%1$sCritical CSS没有被生成。原因:API返回一个了无效的响应编码" + +#: inc/Engine/CriticalPath/APIClient.php:197 +#, php-format +msgid "" +"Critical CSS for %1$s not generated. Error: The API returned an invalid " +"response code." +msgstr "%1$s的Critical CSS没有被生成。原因:API返回一个了无效的响应编码" + +#: inc/Engine/CriticalPath/APIClient.php:205 +#: inc/Engine/CriticalPath/ProcessorService.php:200 +#, php-format +msgid "Error: %1$s" +msgstr "错误:%1$s" + +#: inc/Engine/CriticalPath/Admin/Admin.php:260 +msgid "Regenerate Critical Path CSS" +msgstr "重新生成关键路径CSS" + +#: inc/Engine/CriticalPath/Admin/Post.php:132 +#: views/cpcss/metabox/generate.php:47 +msgid "Generate Specific CPCSS" +msgstr "生成特定的CPCSS" + +#: inc/Engine/CriticalPath/Admin/Post.php:133 +#: views/cpcss/metabox/generate.php:45 +msgid "Regenerate specific CPCSS" +msgstr "重新生成特定的CPCSS" + +#: inc/Engine/CriticalPath/Admin/Post.php:199 +msgid "%l to use this feature." +msgstr "%l 使用这个特性" + +#: inc/Engine/CriticalPath/Admin/Post.php:202 +#, php-format +msgid "Publish the %s" +msgstr "发布%s" + +#: inc/Engine/CriticalPath/Admin/Post.php:203 +msgid "Enable Optimize CSS delivery in WP Rocket settings" +msgstr "在WP Rocket设置中开启CSS递送优化" + +#: inc/Engine/CriticalPath/Admin/Post.php:204 +msgid "Enable Optimize CSS delivery in the options above" +msgstr "在以上选项中启用CSS递送优化" + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:147 +msgid "Critical CSS generation is currently running." +msgstr "关键CSS生成 正在运行中。" + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:152 +#: inc/Engine/Preload/PreloadSubscriber.php:242 +#, php-format +msgid "Go to the %1$sWP Rocket settings%2$s page to track progress." +msgstr "查看进展请访问 %1$sWP Rocket 设置%2$s页面。" + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:366 +#, php-format +msgid "" +"Critical CSS generation is currently running: %1$d of %2$d page types " +"completed. (Refresh this page to view progress)" +msgstr "正在生成关键路径CSS:已完成 %1$d / %2$d 页。(刷新以查看进度)" + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:438 +#, php-format +msgid "Critical CSS generation finished for %1$d of %2$d page types." +msgstr "生成关键路径CSS进度:%1$d / %2$d种页面类型。" + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:445 +msgid "Critical CSS generation encountered one or more errors." +msgstr "关键CSS生成出错。" + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:445 +msgid "Learn more." +msgstr "了解更多。" + +#: inc/Engine/CriticalPath/DataManager.php:102 +msgid "Critical CSS file for mobile does not exist" +msgstr "移动设备的Critical CSS文件不存在。Critical CSS指的是渲染首屏的最小 CSS 集合。" + +#: inc/Engine/CriticalPath/DataManager.php:104 +msgid "Critical CSS file does not exist" +msgstr "Critical CSS文件不存在" + +#: inc/Engine/CriticalPath/DataManager.php:116 +msgid "Critical CSS file for mobile cannot be deleted" +msgstr "移动端的Critical CSS文件无法删除" + +#: inc/Engine/CriticalPath/DataManager.php:118 +msgid "Critical CSS file cannot be deleted" +msgstr "Critical CSS 文件无法删除" + +#: inc/Engine/CriticalPath/ProcessorService.php:186 +#, php-format +msgid "Mobile Critical CSS for %1$s not generated." +msgstr "移动端的Critical CSS%1$s没有被生成" + +#: inc/Engine/CriticalPath/ProcessorService.php:227 +#, php-format +msgid "Critical CSS for %s in progress." +msgstr "%s的Critical CSS进行中" + +#: inc/Engine/CriticalPath/ProcessorService.php:261 +#, php-format +msgid "Mobile Critical CSS for %s generated." +msgstr "移动端Critical CSS文件%s已生成" + +#: inc/Engine/CriticalPath/ProcessorService.php:272 +#, php-format +msgid "Critical CSS for %s generated." +msgstr "已为 %s 生成关键路径CSS。" + +#: inc/Engine/CriticalPath/ProcessorService.php:294 +msgid "Critical CSS file deleted successfully." +msgstr "Critical CSS 文件已删除" + +#: inc/Engine/CriticalPath/ProcessorService.php:316 +#, php-format +msgid "Mobile Critical CSS for %1$s timeout. Please retry a little later." +msgstr "移动端%1$s的Critical CSS 超时。请稍后再试。" + +#: inc/Engine/CriticalPath/ProcessorService.php:329 +#, php-format +msgid "Critical CSS for %1$s timeout. Please retry a little later." +msgstr "%1$s的Critical CSS超时,请稍后再试。" + +#: inc/Engine/CriticalPath/RESTWP.php:141 +msgid "Mobile CPCSS generation not enabled." +msgstr "移动端CPCSS生成未开启" + +#: inc/Engine/CriticalPath/RESTWPPost.php:36 +#: inc/Engine/CriticalPath/RESTWPPost.php:69 +msgid "Requested post does not exist." +msgstr "您访问的文章不存在" + +#: inc/Engine/CriticalPath/RESTWPPost.php:46 +msgid "Cannot generate CPCSS for unpublished post." +msgstr "无法为未发布的文章生成CPCSS" + +#: inc/Engine/HealthCheck/HealthCheck.php:82 inc/deprecated/3.5.php:868 +msgid "" +"The following scheduled event failed to run. This may indicate the CRON " +"system is not running properly, which can prevent some WP Rocket features " +"from working as intended:" +msgid_plural "" +"The following scheduled events failed to run. This may indicate the CRON " +"system is not running properly, which can prevent some WP Rocket features " +"from working as intended:" +msgstr[0] "以下调度的事件运行失败。这可能是CRON系统运行不正常,导致它可能会阻止某些WP Rocket功能按预期工作:" + +#: inc/Engine/HealthCheck/HealthCheck.php:88 inc/deprecated/3.5.php:877 +msgid "Please contact your host to check if CRON is working." +msgstr "请检查您的主机以确认 CRON (定时计划) 是否正常工作。" + +#: inc/Engine/HealthCheck/HealthCheck.php:142 +msgid "Scheduled Cache Purge" +msgstr "定期清除缓存" + +#: inc/Engine/HealthCheck/HealthCheck.php:143 +msgid "Scheduled Database Optimization" +msgstr "定期数据库优化" + +#: inc/Engine/HealthCheck/HealthCheck.php:144 +msgid "Database Optimization Process" +msgstr "数据库优化过程" + +#: inc/Engine/HealthCheck/HealthCheck.php:145 +msgctxt "noun" +msgid "Preload" +msgstr "预缓存" + +#: inc/Engine/HealthCheck/HealthCheck.php:146 +msgid "Critical Path CSS Generation Process" +msgstr "Critical CSS 路径生成过程" + +#: inc/Engine/Optimization/DelayJS/Admin/Settings.php:104 +msgid "Restore Defaults" +msgstr "重置为默认设置" + +#: inc/Engine/Preload/Homepage.php:153 +#, php-format +msgid "" +"Preload encountered an error. Could not gather links on %1$s because of the " +"following error: %2$s. %3$sLearn more%4$s." +msgstr "预加载出错. 无法从%1$s获取链接, 原因: %2$s. %3$s更多信息%4$s." + +#: inc/Engine/Preload/Homepage.php:166 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: %2$s. Security measures could be preventing access. " +"%3$sLearn more%4$s." +msgstr "预加载出错. %1$s无法访问, 错误代码: %2$s. 安全措施可能会阻止访问.%3$s更多信息%4$s." + +#: inc/Engine/Preload/Homepage.php:172 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: 404. Please make sure your homepage is accessible in your " +"browser. %2$sLearn more%3$s." +msgstr "预加载出错. %1$s无法访问, 错误代码: 404. 请确保首页能通过浏览器正常访问. %2$s更多信息%3$s." + +#: inc/Engine/Preload/Homepage.php:178 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: 500. Please check with your web host about server access. " +"%2$sLearn more%3$s." +msgstr "预加载出错. %1$s无法访问, 错误代码: 500. 请检查网站主机是否能正常访问. %2$s更多信息%3$s." + +#: inc/Engine/Preload/Homepage.php:184 +#, php-format +msgid "" +"Preload encountered an error. Could not gather links on %1$s because it " +"returned the following response code: %2$s. %3$sLearn more%4$s." +msgstr "预加载出错. 无法从%1$s获取链接, 原因: 返回错误码%2$s. %3$s更多信息%4$s." + +#: inc/Engine/Preload/PreloadSubscriber.php:237 +msgid "Preload: WP Rocket has started preloading your website." +msgstr "预缓存: WP Rocket 已开始缓存您的网站。" + +#: inc/Engine/Preload/PreloadSubscriber.php:283 +#, php-format +msgid "" +"Preload: %1$s uncached page has now been preloaded. (refresh to see " +"progress)" +msgid_plural "" +"Preload: %1$s uncached pages have now been preloaded. (refresh to see " +"progress)" +msgstr[0] "预缓存: 已预缓存 %1$s 个未缓存页面。(刷新以查看进度)" + +#: inc/Engine/Preload/PreloadSubscriber.php:292 +msgid "The following error happened during gathering of the URLs to preload:" +msgid_plural "" +"The following errors happened during gathering of the URLs to preload:" +msgstr[0] "收集预缓存URL时出现以下错误: " + +#: inc/Engine/Preload/PreloadSubscriber.php:344 +#, php-format +msgid "Preload complete: %d pages have been cached." +msgstr "预缓存:已缓存%d个页面。" + +#: inc/Engine/Preload/Sitemap.php:150 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not gather links on %1$s because" +" of the following error: %2$s. %3$sLearn more%4$s." +msgstr "Sitemap 预加载出错。无法从%1$s获取链接,原因: %2$s. %3$s更多信息%4$s。" + +#: inc/Engine/Preload/Sitemap.php:165 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: %2$s. Security measures could be preventing access." +" %3$sLearn more%4$s." +msgstr "预加载出错。 %1$s无法访问,错误代码: %2$s。安全措施可能会阻止访问。 %3$s更多信息%4$s。" + +#: inc/Engine/Preload/Sitemap.php:170 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: 404. Please make sure you entered the correct " +"sitemap URL and it is accessible in your browser. %2$sLearn more%3$s." +msgstr "" +"Sitemap 预加载出错。%1$s无法访问,错误代码: 404。请检查 sitemap URL " +"是否正确并能通过浏览器正常访问。%2$s更多信息%3$s。" + +#: inc/Engine/Preload/Sitemap.php:175 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: 500. Please check with your web host about server " +"access. %2$sLearn more%3$s." +msgstr "Sitemap 预加载出错。%1$s无法访问,错误代码: 500。请检查网站主机是否能正常访问。%2$s更多信息%3$s。" + +#: inc/Engine/Preload/Sitemap.php:180 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not gather links on %1$s because" +" it returned the following response code: %2$s. %3$sLearn more%4$s." +msgstr "Sitemap 预加载出错。无法从%1$s获取链接,原因:返回错误码%2$s. %3$s更多信息%4$s。" + +#: inc/Engine/Preload/Sitemap.php:196 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not collect links from %1$s " +"because the file is empty. %2$sLearn more%3$s." +msgstr "Sitemap 预加载出错。无法从%1$s获取链接,原因:文件为空. %2$s更多信息%3$s。" + +#: inc/Engine/Preload/Sitemap.php:217 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not collect links from %1$s " +"because of an error during the XML sitemap parsing. %2$sLearn more%3$s." +msgstr "Sitemap 预加载出错。无法从%1$s获取链接,原因:解析XML sitemap出错。 %2$s更多信息%3$s。" + +#: inc/Engine/Preload/SitemapPreloadSubscriber.php:120 +#, php-format +msgid "" +"%1$sSimpleXML PHP extension%2$s is not enabled on your server. Please " +"contact your host to enable it before running sitemap-based cache " +"preloading." +msgstr "您的服务器未启用 %1$sSimpleXML PHP 扩展%2$s. 请时联系主机商开启以使用 sitemap预缓存 功能." + +#: inc/ThirdParty/Hostings/Cloudways.php:82 +#, php-format +msgid "" +"Varnish auto-purge will be automatically enabled once Varnish is enabled on " +"your %s server." +msgstr "在您的%s服务器上启用Varnish后,将自动启用Varnish自动清除功能。" + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:78 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"Please deactivate the following %s option which conflicts with WP Rocket " +"features:" +msgid_plural "" +"Please deactivate the following %s options which conflict with WP Rocket " +"features:" +msgstr[0] "请禁用与 WP Rocket 功能相冲突的下列%s选项:" + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:151 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sdisable emoji%3$s conflicts with WP Rockets %2$sdisable emoji%3$s" +msgstr "%1$s%2$s禁用Emoji%3$s与 WP Rocket 的 %2$s禁用Emoji%3$s相冲突" + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:187 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sGZIP compression%3$s conflicts with WP Rocket %2$sGZIP " +"compression%3$s" +msgstr "%1$s%2$sGZIP压缩%3$s与WP Rocket的%2$sGZIP压缩%3$s冲突" + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:223 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sbrowser caching%3$s conflicts with WP Rocket %2$sbrowser " +"caching%3$s" +msgstr "%1$s%2$s浏览器缓存%3$s与WP Rocket的%2$s浏览器缓存%3$s冲突" + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:255 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$spage caching%3$s conflicts with WP Rocket %2$spage caching%3$s" +msgstr "%1$s%2$s页面缓存%3$s与WP Rocket的%2$s页面缓存%3$s冲突" + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:289 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sasset optimization%3$s conflicts with WP Rocket %2$sfile " +"optimization%3$s" +msgstr "%1$s%2$s资源优化%3$s与WP Rocket的%2$s文件优化%3$s相冲突" + +#: inc/ThirdParty/Plugins/Smush.php:110 inc/ThirdParty/Plugins/Smush.php:128 +msgid "Smush" +msgstr "Smush" + +#: inc/admin/admin.php:18 inc/common/admin-bar.php:367 +#: inc/deprecated/deprecated.php:1787 +msgid "Support" +msgstr "支持" + +#: inc/admin/admin.php:20 +msgid "Docs" +msgstr "文档" + +#: inc/admin/admin.php:22 inc/common/admin-bar.php:355 +msgid "FAQ" +msgstr "常见问题" + +#: inc/admin/admin.php:24 inc/common/admin-bar.php:64 +msgid "Settings" +msgstr "设置" + +#: inc/admin/admin.php:225 inc/admin/admin.php:240 +#: inc/classes/class-wp-rocket-requirements-check.php:203 +#: inc/classes/class-wp-rocket-requirements-check.php:214 +#, php-format +msgid "%s Update Rollback" +msgstr "%s回滚更新" + +#: inc/admin/admin.php:266 +#, php-format +msgid "%1$sReturn to WP Rocket%2$s or %3$sgo to Plugins page%2$s" +msgstr "%1$s返回 WP Rocket %2$s或 %3$s转到插件页%2$s" + +#: inc/admin/admin.php:503 +msgid "Settings import failed: you do not have the permissions to do this." +msgstr "设置导入失败:无权限。" + +#: inc/admin/admin.php:507 +msgid "Settings import failed: no file uploaded." +msgstr "导入配置失败:未上传文件。" + +#: inc/admin/admin.php:511 +msgid "Settings import failed: incorrect filename." +msgstr "导入配置失败:文件名无效。" + +#: inc/admin/admin.php:522 +msgid "Settings import failed: incorrect filetype." +msgstr "导入配置失败:文件类型无效。" + +#: inc/admin/admin.php:532 +msgid "Settings import failed: " +msgstr "导入配置失败:" + +#: inc/admin/admin.php:548 +msgid "Settings import failed: unexpected file content." +msgstr "导入配置失败: 文件内容有误。" + +#: inc/admin/admin.php:569 +msgid "Settings imported and saved." +msgstr "已导入并保存配置。" + +#: inc/admin/options.php:149 +#, php-format +msgid "%1$s: %2$s." +msgstr "%1$s:%2$s." + +#: inc/admin/options.php:159 +msgid "The following pattern is invalid and has been removed:" +msgid_plural "The following patterns are invalid and have been removed:" +msgstr[0] "以下模式无效且已被删除:" + +#: inc/admin/ui/meta-boxes.php:14 inc/admin/ui/notices.php:768 +#: inc/common/admin-bar.php:85 inc/common/admin-bar.php:137 +#: views/settings/page-sections/dashboard.php:124 +msgid "Clear cache" +msgstr "清除缓存" + +#: inc/admin/ui/meta-boxes.php:36 +msgid "WP Rocket Options" +msgstr "WP Rocket 设置" + +#: inc/admin/ui/meta-boxes.php:65 +msgid "Never cache this page" +msgstr "永不缓存此页面" + +#: inc/admin/ui/meta-boxes.php:69 +msgid "Activate these options on this post:" +msgstr "在当前文章中启用这些选项:" + +#: inc/admin/ui/meta-boxes.php:72 +msgid "LazyLoad for images" +msgstr "图片延迟加载" + +#: inc/admin/ui/meta-boxes.php:73 +msgid "LazyLoad for iframes/videos" +msgstr "框架 / 视频 延迟加载" + +#: inc/admin/ui/meta-boxes.php:74 +msgid "Minify/combine CSS" +msgstr "压缩 / 合并 CSS" + +#: inc/admin/ui/meta-boxes.php:75 +msgid "Minify/combine JS" +msgstr "压缩 / 合并 JS" + +#: inc/admin/ui/meta-boxes.php:77 +msgid "Optimize CSS Delivery" +msgstr "CSS 递送优化" + +#: inc/admin/ui/meta-boxes.php:78 +msgid "Defer JS" +msgstr "JS 延迟加载" + +#: inc/admin/ui/meta-boxes.php:85 +#, php-format +msgid "Activate first the %s option." +msgstr "请先启用 %s 选项。" + +#: inc/admin/ui/meta-boxes.php:101 +#, php-format +msgid "" +"%1$sNote:%2$s None of these options will be applied if this post has been " +"excluded from cache in the global cache settings." +msgstr "%1$s注意:%2$s如该文章已在全局缓存设置中被设为排除,这些选项将不会生效。" + +#: inc/admin/ui/notices.php:25 inc/admin/ui/notices.php:38 +#, php-format +msgid "" +"%1$s has not been deactivated due to missing writing permissions.
      \n" +"Make %2$s writeable and retry deactivation, or force deactivation now:" +msgstr "" +"%1$s 未被禁用:无写入权限。
      \n" +"将 %2$s 设为可写并重试,或立即强制禁用:" + +#: inc/admin/ui/notices.php:91 +#, php-format +msgid "" +"%s: One or more plugins have been enabled or disabled, " +"clear the cache if they affect the front end of your site." +msgstr "%s:监测到插件被启用/禁用,如插件影响网站前台页面,请清除缓存。" + +#: inc/admin/ui/notices.php:184 +msgid "" +"WP Rocket Cloudflare Add-on provides similar functionalities. They can not " +"be active at the same time." +msgstr "WP Rocket Cloudflare 扩展也是提供类似的功能。两个无法同时开启哦 ~" + +#: inc/admin/ui/notices.php:208 +#, php-format +msgid "" +"%s: The following plugins are not compatible with this " +"plugin and may cause unexpected results:" +msgstr "%s:下列插件与WP Rocket不兼容,可能导致出错:" + +#: inc/admin/ui/notices.php:214 +msgid "Deactivate" +msgstr "停用" + +#: inc/admin/ui/notices.php:256 +msgid "" +"WP Rocket Footer JS is not an official add-on. It prevents some options in " +"WP Rocket from working correctly. Please deactivate it if you have problems." +msgstr "WP Rocket Footer JS 为非官方插件,会阻碍 WP Rocket 中某些选项的正常工作。如有问题请禁用哦。" + +#: inc/admin/ui/notices.php:296 +#, php-format +msgid "" +"Endurance Cache is currently enabled, which will conflict with WP Rocket " +"Cache. Please set the Endurance Cache cache level to Off (Level 0) on the " +"%1$sSettings > General%2$s page to prevent any issues." +msgstr "" +"Endurance Cache目前已启用,这将与WP Rocket Cache冲突。请在%1$s设置>一般%2$s页面设置Endurance " +"Cache的缓存级别为关闭(Level 0)以防止出现任何问题。" + +#: inc/admin/ui/notices.php:317 +#, php-format +msgid "" +"%1$s: A custom permalink structure is required for the plugin to work " +"properly. %2$sGo to permalinks settings%3$s" +msgstr "%1$s:必须先启用固定链接,插件才能正常工作。%2$s进入固定链接设置%3$s" + +#: inc/admin/ui/notices.php:364 +#, php-format +msgid "" +"%s could not modify the .htaccess file due to missing writing permissions." +msgstr "%s 无法修改 .htaccess 文件:无写入权限。" + +#: inc/admin/ui/notices.php:370 inc/admin/ui/notices.php:845 +#, php-format +msgid "Troubleshoot: %1$sHow to make system files writeable%2$s" +msgstr "故障解决:%1$s如何将系统文件设为可写%2$s" + +#: inc/admin/ui/notices.php:372 inc/admin/ui/notices.php:847 +msgid "" +"https://docs.wp-rocket.me/article/626-how-to-make-system-files-htaccess-wp-" +"config-writeable/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://docs.wp-rocket.me/article/626-how-to-make-system-files-htaccess-wp-" +"config-writeable/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: inc/admin/ui/notices.php:378 +msgid "" +"Don’t worry, WP Rocket’s page caching and settings will still function " +"correctly." +msgstr "不用担心,WP Rocket 的页面缓存和设置仍将正常工作。" + +#: inc/admin/ui/notices.php:378 +msgid "" +"For optimal performance, adding the following lines into your .htaccess is " +"recommended (not required):" +msgstr "为了优化性能,建议添加下列代码到您的 .htaccess 文件(非必须):" + +#: inc/admin/ui/notices.php:525 +#, php-format +msgid "" +"%1$s is good to go! %2$sTest your load time%4$s, or visit your " +"%3$ssettings%4$s." +msgstr "%1$s准备好啦!%2$s测试您的加载时间%4$s,或访问您的%3$s设置%4$s。" + +#: inc/admin/ui/notices.php:598 +msgid "" +"Would you allow WP Rocket to collect non-sensitive diagnostic data from this" +" website?" +msgstr "您是否愿意 WP Rocket 收集此网站的脱敏诊断数据?" + +#: inc/admin/ui/notices.php:599 +msgid "This would help us to improve WP Rocket for you in the future." +msgstr "这将有助于将来我们为您持续改进 WP Rocket 。" + +#: inc/admin/ui/notices.php:605 +msgid "What info will we collect?" +msgstr "我们收集何种信息?" + +#: inc/admin/ui/notices.php:610 +msgid "" +"Below is a detailed view of all data WP Rocket will collect if granted " +"permission. WP Rocket will never transmit any domain names or email " +"addresses (except for license validation), IP addresses, or third-party API " +"keys." +msgstr "" +"以下详细列出了 WP Rocket 在获得许可后将收集的所有数据。WP Rocket 绝不会传输任何域名、邮箱(授权验证除外),IP地址或第三方API " +"key。" + +#: inc/admin/ui/notices.php:619 +msgid "Yes, allow" +msgstr "是,允许" + +#: inc/admin/ui/notices.php:622 +msgid "No, thanks" +msgstr "不,谢谢" + +#: inc/admin/ui/notices.php:661 +msgid "Thank you!" +msgstr "谢谢!" + +#: inc/admin/ui/notices.php:666 +msgid "WP Rocket now collects these metrics from your website:" +msgstr "WP Rocket 现在从您的网站收集这些指标:" + +#: inc/admin/ui/notices.php:704 +#, php-format +msgid "%s: Cache cleared." +msgstr "%s:缓存已清除。" + +#: inc/admin/ui/notices.php:711 +#, php-format +msgid "%s: Post cache cleared." +msgstr "%s:文章缓存已清除。" + +#: inc/admin/ui/notices.php:718 +#, php-format +msgid "%s: Term cache cleared." +msgstr "%s:分类缓存已清除。" + +#: inc/admin/ui/notices.php:725 +#, php-format +msgid "%s: User cache cleared." +msgstr "%s:用户缓存已清除。" + +#: inc/admin/ui/notices.php:771 +msgid "Stop Preload" +msgstr "停止预缓存" + +#: inc/admin/ui/notices.php:789 +msgid "Force deactivation " +msgstr "强制停用 " + +#: inc/admin/ui/notices.php:802 +msgid "The following code should have been written to this file:" +msgstr "下列代码应写入到此文件:" + +#: inc/admin/ui/notices.php:812 views/settings/page-sections/dashboard.php:46 +msgid "Dismiss this notice." +msgstr "关闭此通知。" + +#: inc/admin/ui/notices.php:833 +#, php-format +msgid "%s cannot configure itself due to missing writing permissions." +msgstr "%s 无法完成配置:无写入权限。" + +#: inc/admin/ui/notices.php:839 +#, php-format +msgid "Affected file/folder: %s" +msgstr "受影响的文件/文件夹:%s" + +#: inc/classes/admin/Database/class-optimization.php:47 +msgid "Transients" +msgstr "临时数据" + +#: inc/classes/admin/Database/class-optimization.php:48 +msgid "Tables" +msgstr "表" + +#: inc/classes/admin/class-logs.php:124 +msgid "The debug file could not be deleted." +msgstr "这个调试文件无法被删除。" + +#: inc/classes/class-wp-rocket-requirements-check.php:147 +#, php-format +msgid "To function properly, %1$s %2$s requires at least:" +msgstr "为确保正常工作,%1$s %2$s 需要至少:" + +#: inc/classes/class-wp-rocket-requirements-check.php:151 +#, php-format +msgid "" +"PHP %1$s. To use this WP Rocket version, please ask your web host how to " +"upgrade your server to PHP %1$s or higher." +msgstr "PHP %1$s。要使用当前 WP Rocket 版本,请联系您的主机服务商将 PHP 升级至 %1$s 或更高版本。" + +#: inc/classes/class-wp-rocket-requirements-check.php:156 +#, php-format +msgid "" +"WordPress %1$s. To use this WP Rocket version, please upgrade WordPress to " +"version %1$s or higher." +msgstr "WordPress %1$s. 要使用当前 WP Rocket 版本,请升级 WordPress 至 %1$s 或更高版本。" + +#: inc/classes/class-wp-rocket-requirements-check.php:159 +msgid "" +"If you are not able to upgrade, you can rollback to the previous version by " +"using the button below." +msgstr "如无法升级,您可使用下方按钮还原至旧版本。" + +#: inc/classes/class-wp-rocket-requirements-check.php:161 +#: inc/deprecated/deprecated.php:1947 +#, php-format +msgid "Re-install version %s" +msgstr "重新安装 %s 版本" + +#: inc/classes/dependencies/wp-media/background-processing/wp-background-process.php:439 +#, php-format +msgid "Every %d Minutes" +msgstr "每 %d 分钟" + +#: inc/classes/logger/class-logger.php:254 +#: inc/classes/logger/class-logger.php:286 +msgid "The log file does not exist." +msgstr "日志文件不存在。" + +#: inc/classes/logger/class-logger.php:260 +#: inc/classes/logger/class-logger.php:292 +msgid "The log file could not be read." +msgstr "日志文件不可读。" + +#: inc/classes/logger/class-logger.php:279 +msgid "The logs are not saved into a file." +msgstr "日志未保存到文件中。" + +#: inc/classes/subscriber/Cache/class-expired-cache-purge-subscriber.php:128 +msgid "WP Rocket Expired Cache Interval" +msgstr "WP Rocket 过期缓存间隔" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:269 +#, php-format +msgid "" +"You are using %1$s to serve WebP images so you do not need to enable this " +"option. If you prefer to have WP Rocket serve WebP for you instead, please " +"disable them from serving in %1$s. %2$sMore info%3$s" +msgid_plural "" +"You are using %1$s to serve WebP images so you do not need to enable this " +"option. If you prefer to have WP Rocket serve WebP for you instead, please " +"disable them from serving in %1$s. %2$sMore info%3$s" +msgstr[0] "" +"您正在使用 %1$s的WebP 图片相关功能,因此无需开启该选项。如您想换用 WP Rocket, 请转到%1$s禁用相关选项。%2$s更多信息%3$s" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:280 +msgid "WebP cache is disabled by filter." +msgstr "WebP 缓存被过滤器禁用。" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:290 +#: inc/classes/subscriber/Media/class-webp-subscriber.php:316 +#, php-format +msgid "" +"You are using %1$s to convert images to WebP. If you want WP Rocket to serve" +" them for you, activate this option. %2$sMore info%3$s" +msgid_plural "" +"You are using %1$s to convert images to WebP. If you want WP Rocket to serve" +" them for you, activate this option. %2$sMore info%3$s" +msgstr[0] "您正在使用 %1$s 将图片转换成WebP格式。如您想换用 WP Rocket,请启用该选项。%2$s更多信息%3$s" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:302 +#: inc/classes/subscriber/Media/class-webp-subscriber.php:328 +#, php-format +msgid "" +"You are using %1$s to convert images to WebP. WP Rocket will create separate" +" cache files to serve your WebP images. %2$sMore info%3$s" +msgid_plural "" +"You are using %1$s to convert images to WebP. WP Rocket will create separate" +" cache files to serve your WebP images. %2$sMore info%3$s" +msgstr[0] "您正在使用%1$s将图片转换成WebP格式。WP Rocket将为您的WebP 图片生成单独的缓存文件。%2$s更多信息%3$s" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:349 +#, php-format +msgid "" +"You don’t seem to be using a method to create and serve WebP that we are " +"auto-compatible with. If you are not using WebP do not enable this option. " +"%1$sMore info%2$s" +msgstr "貌似您未使用我们兼容的 WebP 生成和支持方式。如未使用 WebP,请勿开启该选项。%1$s更多信息%2$s" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:354 +msgid "We have not detected any compatible WebP plugin!" +msgstr "未检测到任何兼容的 WebP 插件!" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:357 +#, php-format +msgid "" +"If you activate this option WP Rocket will create separate cache files to " +"serve WebP images. Any WebP images you have on your site will be served from" +" these files to compatible browsers. If you don’t already have WebP images " +"on your site consider using %1$sImagify%3$s or another supported plugin. " +"%2$sMore info%3$s" +msgstr "" +"WP Rocket 将为您网站上所有的 WebP 图片生成单独的缓存文件,以便提供浏览器兼容支持。如您网站还没有 WebP 图片,可使用 " +"%1$sImagify%3$s 或任何支持的插件。%2$s更多信息%3$s" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:369 +msgid "WP Rocket will create separate cache files to serve your WebP images." +msgstr "WP Rocket 将为您的 WebP 图片创建单独的缓存文件。" + +#: inc/classes/subscriber/Tools/class-detect-missing-tags-subscriber.php:151 +#, php-format +msgid "" +"Failed to detect the following requirement in your theme: closing %1$s." +msgid_plural "" +"Failed to detect the following requirements in your theme: closing %1$s." +msgstr[0] "检测失败:关闭%1$s。" + +#: inc/classes/subscriber/Tools/class-detect-missing-tags-subscriber.php:159 +msgid "" +"https://docs.wp-rocket.me/article/99-pages-not-cached-or-minify-cssjs-not-" +"working/?utm_source=wp_plugin&utm_medium=wp_rocket#theme" +msgstr "" +"https://docs.wp-rocket.me/article/99-pages-not-cached-or-minify-cssjs-not-" +"working/?utm_source=wp_plugin&utm_medium=wp_rocket#theme" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:98 +msgid "monthly" +msgstr "每月" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:211 +msgid "Database optimization process is running" +msgstr "数据库优化正在运行" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:242 +msgid "" +"Database optimization process is complete. Everything was already optimized!" +msgstr "数据库优化完成。已为您优化所有数据!" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:245 +msgid "" +"Database optimization process is complete. List of optimized items below:" +msgstr "数据库优化完成。优化项列表如下:" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:253 +#, php-format +msgid "%1$d %2$s optimized." +msgstr "%1$d %2$s 已优化。" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:116 +#, php-format +msgid "Sucuri cache purge error: %s" +msgstr "Sucuri 缓存清理错误:%s" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:121 +msgid "" +"The Sucuri cache is being cleared. Note that it may take up to two minutes " +"for it to be fully flushed." +msgstr "正在清除 Sucuri 缓存。 请注意,完全刷新可能需要两分钟。" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:244 +msgid "Sucuri firewall API key was not found." +msgstr "未找到 Sucuri 防火墙 API key。" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:256 +msgid "Sucuri firewall API key is invalid." +msgstr "Sucuri 防火墙 API key无效。" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:311 +msgid "Error when contacting Sucuri firewall API." +msgstr "连接 Sucuri 防火墙 API时出错。" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:324 +#, php-format +msgid "Error when contacting Sucuri firewall API. Error message was: %s" +msgstr "连接 Sucuri 防火墙API 时出错。错误信息:%s" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:338 +msgid "Could not get a response from the Sucuri firewall API." +msgstr "Sucuri 防火墙 API未响应。" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:352 +msgid "Got an invalid response from the Sucuri firewall API." +msgstr "从Sucuri 防火墙 API 中获得了一个无效响应。" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:365 +msgid "The Sucuri firewall API returned an unknown error." +msgstr "Sucuri 防火墙 API 返回未知错误。" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:368 +#, php-format +msgid "The Sucuri firewall API returned the following error: %s" +msgid_plural "The Sucuri firewall API returned the following errors: %s" +msgstr[0] "Sucuri 防火墙 API 返回以下错误:%s" + +#: inc/classes/traits/trait-updater-api-tools.php:53 +#: inc/deprecated/3.3.php:761 inc/deprecated/3.3.php:770 +#, php-format +msgid "" +"An unexpected error occurred. Something may be wrong with WP-Rocket.me or " +"this server’s configuration. If you continue to have problems, contact support." +msgstr "出现未知错误。WP-Rocket.me 或当前系统配置有问题。如果持续出现这些问题,请联系客服。" + +#: inc/common/admin-bar.php:125 inc/common/admin-bar.php:293 +#: inc/functions/i18n.php:41 inc/functions/i18n.php:51 +msgid "All languages" +msgstr "所有语言" + +#: inc/common/admin-bar.php:152 +msgid "Clear this post" +msgstr "清除此文章" + +#: inc/common/admin-bar.php:166 +msgid "Purge this URL" +msgstr "清除此URL" + +#: inc/common/admin-bar.php:192 +msgid "Purge OPcache" +msgstr "清除 OPcache" + +#: inc/common/admin-bar.php:210 +msgid "Clear Cloudflare cache" +msgstr "清除 Cloudflare 缓存" + +#: inc/common/admin-bar.php:228 +msgid "Purge Sucuri cache" +msgstr "清除 Sucuri 缓存" + +#: inc/common/admin-bar.php:251 inc/common/admin-bar.php:305 +#: views/settings/page-sections/dashboard.php:144 +msgid "Preload cache" +msgstr "预缓存" + +#: inc/common/admin-bar.php:330 views/settings/fields/rocket-cdn.php:55 +msgid "Purge RocketCDN cache" +msgstr "清除 RocketCDN 缓存" + +#: inc/common/admin-bar.php:343 views/settings/partials/documentation.php:14 +msgid "Documentation" +msgstr "文档" + +#: inc/common/purge.php:557 +msgid "OPcache purge failed." +msgstr "OPcache 清除失败。" + +#: inc/common/purge.php:562 +msgid "OPcache successfully purged" +msgstr "OPcache 成功清除。" + +#: inc/deprecated/3.2.php:52 views/settings/page-sections/imagify.php:36 +msgid "Activate Imagify" +msgstr "启用 Imagify" + +#: inc/deprecated/3.2.php:52 +msgid "Install Imagify for Free" +msgstr "免费安装 Imagify" + +#: inc/deprecated/3.2.php:67 +msgid "" +"Speed up your website and boost your SEO by reducing image file sizes " +"without losing quality with Imagify." +msgstr "在不损失质量的前提下,尽可能减小图片文件体积以加速网站和改善SEO。" + +#: inc/deprecated/3.2.php:72 +msgid "More details" +msgstr "更多详情" + +#: inc/deprecated/3.2.php:228 +#, php-format +msgid "Sitemap preload: %d pages have been cached." +msgstr "Sitemap预缓存:已预缓存 %d 个页面。" + +#: inc/deprecated/3.2.php:261 +#, php-format +msgid "" +"Sitemap preload: %d uncached pages have now been preloaded. (refresh to see " +"progress)" +msgstr "Sitemap预缓存:已预缓存 %d 个未缓存页面。(刷新以查看进度)" + +#: inc/deprecated/3.4.php:18 +msgid "Choose a domain from the list" +msgstr "从列表选择域名" + +#: inc/deprecated/3.4.php:31 +msgid "No domain available in your Cloudflare account" +msgstr "您的Cloudflare账户中未找到可用域名" + +#: inc/deprecated/3.5.php:81 inc/deprecated/3.5.php:205 +msgid "" +"Curl is disabled on your server. Please ask your host to enable it. This is " +"required for the Cloudflare Add-on to work correctly." +msgstr "Curl已被禁用。请联系主机服务商开启该功能,否则Cloudflare扩展无法正常工作哦。" + +#: inc/deprecated/3.5.php:89 +#, php-format +msgid "" +"Cloudflare email, API key and Zone ID are not set. Read the " +"%1$sdocumentation%2$s for further guidance." +msgstr "Cloudflare 邮箱、API key 和 Zone ID 未设置。阅读%1$s文档%2$s 可获取更多信息。" + +#: inc/deprecated/3.5.php:216 +#, php-format +msgid "" +"Cloudflare email and API key are not set. Read the %1$sdocumentation%2$s for" +" further guidance." +msgstr "Cloudflare 邮箱、API key 未设置。阅读%1$s文档%2$s可获取更多信息。" + +#: inc/deprecated/3.5.php:281 +msgid "Connection to Cloudflare failed" +msgstr "Cloudflare连接失败" + +#: inc/deprecated/DeprecatedClassTrait.php:54 +#, php-format +msgid "" +"The called class %1$s is deprecated since version %2$s! Use" +" %3$s instead." +msgstr "从版本%2$s开始,被调用的类%1$s已弃用!请使用%3$s替代。" + +#: inc/deprecated/DeprecatedClassTrait.php:65 +#, php-format +msgid "" +"The called class %1$s is deprecated since version %2$s!" +msgstr "从版本%2$s开始,调用类%1$s已弃用。" + +#: inc/deprecated/deprecated.php:240 +msgid "JS files with Deferred Loading JavaScript" +msgstr "异步加载JS文件" + +#: inc/deprecated/deprecated.php:293 +msgid "Add URL" +msgstr "添加URL" + +#: inc/deprecated/deprecated.php:1277 views/settings/fields/import-form.php:22 +msgid "" +"Before you can upload your import file, you will need to fix the following " +"error:" +msgstr "在上传配置文件前,你必须先修复以下错误:" + +#: inc/deprecated/deprecated.php:1288 views/settings/fields/import-form.php:35 +#, php-format +msgid "Choose a file from your computer (maximum size: %s)" +msgstr "从您的电脑选择文件(≤ %s)" + +#: inc/deprecated/deprecated.php:1385 +msgid "Your Cloudflare credentials are valid." +msgstr "您的Cloudflare授权已验证。" + +#: inc/deprecated/deprecated.php:1389 +msgid "Your Cloudflare credentials are invalid!" +msgstr "您的Cloudflare授权无效!" + +#: inc/deprecated/deprecated.php:1453 +msgid "Save and optimize" +msgstr "保存并优化" + +#: inc/deprecated/deprecated.php:1453 +msgid "Optimize" +msgstr "优化" + +#: inc/deprecated/deprecated.php:1464 inc/deprecated/deprecated.php:1666 +msgctxt "screen-reader-text" +msgid "Note:" +msgstr "注意:" + +#: inc/deprecated/deprecated.php:1470 +msgctxt "screen-reader-text" +msgid "Performance tip:" +msgstr "性能优化小窍门:" + +#: inc/deprecated/deprecated.php:1476 +msgctxt "screen-reader-text" +msgid "Third-party feature detected:" +msgstr "检测到第三方功能:" + +#: inc/deprecated/deprecated.php:1488 inc/deprecated/deprecated.php:1672 +msgctxt "screen-reader-text" +msgid "Warning:" +msgstr "警告:" + +#: inc/deprecated/deprecated.php:1501 +msgctxt "button text" +msgid "Download settings" +msgstr "下载配置" + +#: inc/deprecated/deprecated.php:1531 +msgid "Replace site's hostname with:" +msgstr "将站点主机名重设为:" + +#: inc/deprecated/deprecated.php:1550 inc/deprecated/deprecated.php:1587 +#: inc/deprecated/deprecated.php:1615 views/settings/fields/cnames.php:32 +#: views/settings/fields/cnames.php:64 views/settings/fields/cnames.php:94 +msgid "reserved for" +msgstr "套用到" + +#: inc/deprecated/deprecated.php:1552 inc/deprecated/deprecated.php:1589 +#: inc/deprecated/deprecated.php:1617 views/settings/fields/cnames.php:35 +#: views/settings/fields/cnames.php:67 views/settings/fields/cnames.php:97 +msgid "All files" +msgstr "所有文件" + +#: inc/deprecated/deprecated.php:1564 inc/deprecated/deprecated.php:1594 +#: inc/deprecated/deprecated.php:1622 views/settings/fields/cnames.php:47 +#: views/settings/fields/cnames.php:79 views/settings/fields/cnames.php:109 +msgid "Images" +msgstr "图片" + +#: inc/deprecated/deprecated.php:1635 views/settings/fields/cnames.php:120 +msgid "Add CNAME" +msgstr "添加" + +#: inc/deprecated/deprecated.php:1706 views/settings/partials/sidebar.php:16 +msgid "Watch the video" +msgstr "观看视频" + +#: inc/deprecated/deprecated.php:1771 +msgid "Basic" +msgstr "基础设置" + +#: inc/deprecated/deprecated.php:1772 +msgid "Static Files" +msgstr "静态文件" + +#: inc/deprecated/deprecated.php:1774 +msgid "Advanced" +msgstr "高级" + +#: inc/deprecated/deprecated.php:1944 +#, php-format +msgid "" +"%1$s %2$s requires at least PHP %3$s to function properly. To use this " +"version, please ask your web host how to upgrade your server to PHP %3$s or " +"higher. If you are not able to upgrade, you can rollback to the previous " +"version by using the button below." +msgstr "" +"%1$s %2$s 需要PHP %3$s 以上版本才能正常运行。要使用该版本,请联系您的主机服务商升级PHP至 %3$s " +"或更高版本。如无法升级,您可使用下方按钮还原至旧版本。" + +#: inc/functions/admin.php:23 +msgid "" +"There seems to be an issue validating your license. Please see the error " +"message below." +msgid_plural "" +"There seems to be an issue validating your license. You can see the error " +"messages below." +msgstr[0] "验证您的许可证时似乎有问题。" + +#: inc/functions/admin.php:363 +msgid "Server type:" +msgstr "服务器类型:" + +#: inc/functions/admin.php:372 +msgid "PHP version number:" +msgstr "PHP版本号:" + +#: inc/functions/admin.php:381 +msgid "WordPress version number:" +msgstr "WordPress版本号:" + +#: inc/functions/admin.php:390 +msgid "WordPress multisite:" +msgstr "WordPress多站点:" + +#: inc/functions/admin.php:399 +msgid "Current theme:" +msgstr "当前主题:" + +#: inc/functions/admin.php:408 +msgid "Current site language:" +msgstr "当前站点语言:" + +#: inc/functions/admin.php:417 +msgid "Active plugins:" +msgstr "已启用插件:" + +#: inc/functions/admin.php:420 +msgid "Plugin names of all active plugins" +msgstr "所有已启用的插件名" + +#: inc/functions/admin.php:426 +msgid "Anonymized WP Rocket settings:" +msgstr "WP Rocket设置(匿名):" + +#: inc/functions/admin.php:429 +msgid "Which WP Rocket settings are active" +msgstr "WP Rocket中已启用的选项" + +#: inc/functions/options.php:527 inc/functions/options.php:566 +msgid "" +"License validation failed. Our server could not resolve the request from " +"your website." +msgstr "验证授权失败. 我们的服务器无法处理来自您网站的请求" + +#: inc/functions/options.php:527 inc/functions/options.php:566 +#, php-format +msgid "" +"Try clicking %1$sSave Changes%2$s below. If the error persists, follow " +"%3$sthis guide%4$s." +msgstr "尝试点击下方的%1$s保存更改%2$s. 如问题仍然存在, 参考%3$s这个文档%4$s." + +#: inc/functions/options.php:543 +msgid "" +"License validation failed. You may be using a nulled version of the plugin. " +"Please do the following:" +msgstr "授权验证失败. 您可能在使用破解版本. 请按以下操作:" + +#: inc/functions/options.php:543 inc/functions/options.php:585 +#, php-format +msgid "Login to your WP Rocket %1$saccount%2$s" +msgstr "登录您的 WP Rocket %1$s账户%2$s" + +#: inc/functions/options.php:543 inc/functions/options.php:585 +msgid "Download the zip file" +msgstr "下载 zip 文件" + +#: inc/functions/options.php:543 inc/functions/options.php:585 +msgid "Reinstall" +msgstr "重新安装" + +#: inc/functions/options.php:543 +#, php-format +msgid "" +"If you do not have a WP Rocket account, please %1$spurchase a license%2$s." +msgstr "如您没有 WP Rocket 账号, 请%1$s购买授权%2$s." + +#: inc/functions/options.php:551 +msgid "" +"License validation failed. This user account does not exist in our database." +msgstr "验证授权失败。用户不存在。" + +#: inc/functions/options.php:551 +msgid "To resolve, please contact support." +msgstr "如需解决问题请联系客服。" + +#: inc/functions/options.php:559 +msgid "License validation failed. This user account is blocked." +msgstr "验证授权失败。该用户已被锁定。" + +#: inc/functions/options.php:559 +#, php-format +msgid "Please see %1$sthis guide%2$s for more info." +msgstr "更多信息请参考%1$s这个文档%2$s。" + +#: inc/functions/options.php:579 +msgid "Your license is not valid." +msgstr "您的授权无效。" + +#: inc/functions/options.php:579 +#, php-format +msgid "Make sure you have an active %1$sWP Rocket license%2$s." +msgstr "请确保您有已激活的%1$sWP Rocket 授权%2$s。" + +#: inc/functions/options.php:581 +msgid "You have added as many sites as your current license allows." +msgstr "您的网站数已超出授权限制。" + +#: inc/functions/options.php:581 +#, php-format +msgid "" +"Upgrade your %1$saccount%2$s or %3$stransfer your license%2$s to this " +"domain." +msgstr "升级您的%1$s账号%2$s或%3$s转移授权%2$s至当前域名。" + +#: inc/functions/options.php:583 +msgid "This website is not allowed." +msgstr "此网站未被允许。" + +#: inc/functions/options.php:583 +#, php-format +msgid "Please %1$scontact support%2$s." +msgstr "请%1$s联系客服%2$s。" + +#: inc/functions/options.php:585 +msgid "This license key is not recognized." +msgstr "该授权码无法识别。" + +#: inc/functions/options.php:585 +#, php-format +msgid "If the issue persists, please %1$scontact support%2$s." +msgstr "如问题仍然存在, 请%1$s联系客服%2$s。" + +#: inc/functions/options.php:591 +#, php-format +msgid "License validation failed: %s" +msgstr "授权验证失败:%s" + +#: inc/vendors/classes/class-imagify-partner.php:531 +msgid "Plugin installed successfully." +msgstr "插件安装成功。" + +#: inc/vendors/classes/class-imagify-partner.php:532 +msgid "Sorry, you are not allowed to install plugins on this site." +msgstr "抱歉,您未被允许在此站点安装插件。" + +#: inc/vendors/classes/class-imagify-partner.php:533 +msgid "Sorry, you are not allowed to do that." +msgstr "抱歉,您未被允许做这个操作。" + +#: inc/vendors/classes/class-imagify-partner.php:534 +msgid "Plugin install failed." +msgstr "插件安装失败。" + +#: inc/vendors/classes/class-imagify-partner.php:535 +msgid "Go back" +msgstr "返回" + +#: views/cpcss/activate-cpcss-mobile.php:13 +msgid "Optimize CSS delivery for mobile" +msgstr "移动端CSS 递送优化" + +#: views/cpcss/activate-cpcss-mobile.php:14 +msgid "" +"Your website currently uses the same Critical Path CSS for both desktop and " +"mobile." +msgstr "您的网站当前针对台式机和移动设备使用相同的Critical CSS路径。" + +#: views/cpcss/activate-cpcss-mobile.php:15 +msgid "Click the button to enable mobile-specific CPCSS for your site." +msgstr "单击该按钮为您的站点启用特定于移动设备的CPCSS。" + +#: views/cpcss/activate-cpcss-mobile.php:20 +#: views/settings/enable-google-fonts.php:19 +#, php-format +msgid "" +"This is a one-time action and this button will be removed afterwards. " +"%1$sMore info%2$s" +msgstr "这是一次性操作,点击按钮此后将被删除。%1$s更多信息%2$s" + +#: views/cpcss/activate-cpcss-mobile.php:30 +#, php-format +msgid "" +"Your site is now using mobile-specific critical path CSS. %1$sMore info%2$s" +msgstr "您的站点现在已经使用了移动端特定的Critical Path CSS。%1$s更多信息%2$s" + +#: views/cpcss/activate-cpcss-mobile.php:39 +msgid "Generate Mobile Specific CPCSS" +msgstr "生成移动专用CPCSS" + +#: views/cpcss/metabox/container.php:19 +msgid "Critical Path CSS" +msgstr "关键的CSS路径:" + +#: views/cpcss/metabox/generate.php:23 +#, php-format +msgid "Generate specific Critical Path CSS for this post. %1$sMore info%2$s" +msgstr "为文章生成特定的Critical Path CSS。%1$s更多信息%2$s" + +#: views/cpcss/metabox/generate.php:33 +#, php-format +msgid "This post uses specific Critical Path CSS. %1$sMore info%2$s" +msgstr "文章使用了特定的Critical Path CSS。%1$s更多信息%2$s" + +#: views/cpcss/metabox/generate.php:56 +msgid "Revert back to the default CPCSS" +msgstr "恢复为默认的CPCSS" + +#: views/deactivation-intent/form.php:21 +msgid "Return" +msgstr "返回" + +#: views/deactivation-intent/form.php:22 +msgid "WP Rocket feedback" +msgstr "WP Rocket 反馈" + +#: views/deactivation-intent/form.php:24 +msgid "Close" +msgstr "关闭" + +#: views/deactivation-intent/form.php:28 +msgid "May we have a little info about why you are deactivating?" +msgstr "555... 方便告诉我们您为什么禁用吗?" + +#: views/deactivation-intent/form.php:35 +#, php-format +msgid "%1$sIt is a temporary deactivation.%2$s I am just debugging an issue." +msgstr "只是%1$s暂时禁用。%2$s我正在排查故障啦。" + +#: views/deactivation-intent/form.php:44 +#, php-format +msgid "The plugin %1$sbroke my layout%2$s or some functionality." +msgstr "哼,插件%1$s破坏了我的网站布局%2$s或其他功能。" + +#: views/deactivation-intent/form.php:53 +#, php-format +msgid "My PageSpeed or GTMetrix %1$sscore did not improve.%2$s" +msgstr "额,我的 PageSpeed 或 GTMetrix %1$s评分没有改善呀。%2$s" + +#: views/deactivation-intent/form.php:59 +msgid "I did not notice a difference in loading time." +msgstr "Ummm... 貌似加载时间没变化啊。" + +#: views/deactivation-intent/form.php:66 +#, php-format +msgid "The plugin is %1$stoo complicated to configure.%2$s" +msgstr "你们这个插件%1$s配置起来太复杂了。%2$s" + +#: views/deactivation-intent/form.php:72 +msgid "My host already has its own caching system." +msgstr "我的主机已自带缓存系统。" + +#: views/deactivation-intent/form.php:74 +msgid "What is the name of your web host?" +msgstr "您的网站主机提供商是?" + +#: views/deactivation-intent/form.php:79 +msgid "Other" +msgstr "其他" + +#: views/deactivation-intent/form.php:81 +msgid "" +"Let us know why you are deactivating WP Rocket so we can improve the plugin" +msgstr "请告知您禁用 WP Rocket 的原因,这样我们才能持续改进哦 ~" + +#: views/deactivation-intent/form.php:89 +msgid "The plugin broke my layout or some functionality" +msgstr "哼,插件破坏了我的网站布局或某些功能" + +#: views/deactivation-intent/form.php:90 +msgid "" +"This type of issue can usually be fixed by deactivating some options in WP " +"Rocket." +msgstr "额,这类问题一般可以通过禁用 WP Rocket 的相关选项来解决啦。" + +#: views/deactivation-intent/form.php:91 +msgid "" +"Click \"Apply Safe Mode\" to quickly disable LazyLoad, File Optimization, " +"Embeds and CDN options. Then check your site to see if the issue has " +"resolved." +msgstr "您可点击 “应用安全模式” 来禁用懒加载、文件优化、嵌入功能和CDN选项,然后再看看问题是否已经解决哦。" + +#: views/deactivation-intent/form.php:93 +msgid "Apply safe mode" +msgstr "应用安全模式" + +#: views/deactivation-intent/form.php:96 +msgid "Safe mode applied." +msgstr "安全模式已启用。" + +#: views/deactivation-intent/form.php:97 +msgid "Review your site in a private/logged out browser window." +msgstr "通过浏览器的无痕模式 或 注销已登录账户来查看您的网站。" + +#: views/deactivation-intent/form.php:102 +#, php-format +msgid "" +"Is the issue fixed? Now you can reactivate options one at a time to " +"determine which one caused the problem. %1$sMore info%2$s" +msgstr "亲,问题解决了吗?现在您可以每次只重新启用一个选项来确认故障原因。%1$s更多信息%2$s" + +#: views/deactivation-intent/form.php:107 +msgid "My PageSpeed or GT Metrix score did not improve" +msgstr "我的 PageSpeed 或 GTMetrix 分数没有改善啊" + +#: views/deactivation-intent/form.php:108 +msgid "" +"WP Rocket makes your site faster. The PageSpeed grade or GTMetrix score are " +"not indicators of speed. Neither your real visitors, nor Google will ever " +"see your website’s “grade”. Speed is the only metric that matters for SEO " +"and conversions." +msgstr "" +"WP Rocket 可以加速您的网站。PageSpeed 等级或 GTMetrix 分数并不是速度的体现哦。您的真实访客和 Google " +"都不会看到您网站的评分。速度是影响 SEO 和转化的唯一指标。" + +#: views/deactivation-intent/form.php:109 +msgid "Yoast, the expert on all things related to SEO for WordPress states:" +msgstr "Yoast,就是那个专业的 WordPress SEO插件,说过:" + +#: views/deactivation-intent/form.php:110 +msgid "" +"[Google] just looks at how fast your website loads for users, so you don’t " +"have to obsess over that specific score. You have to make sure your website " +"is as fast as you can get it." +msgstr "[Google] 仅仅查看用户加载网站时有多快,所以您不用纠结这些分数,只要保证网站足够快即可哦。" + +#: views/deactivation-intent/form.php:116 +#, php-format +msgid "" +"How to measure the load time of your site: %1$shttps://wp-rocket.me/blog" +"/correctly-measure-websites-page-load-time/%2$s" +msgstr "" +"如何测试网站加载时间: %1$shttps://wp-rocket.me/blog/correctly-measure-websites-page-" +"load-time/%2$s" + +#: views/deactivation-intent/form.php:122 +#, php-format +msgid "" +"Why you should not be chasing a PageSpeed score: %1$shttps://wp-" +"rocket.me/blog/the-truth-about-google-pagespeed-insights/%2$s" +msgstr "" +"为什么无需迷信 PageSpeed分数:%1$shttps://wp-rocket.me/blog/the-truth-about-google-" +"pagespeed-insights/%2$s" + +#: views/deactivation-intent/form.php:127 +msgid "I did not notice a difference in loading time" +msgstr "加载时间没变化啊" + +#: views/deactivation-intent/form.php:128 +msgid "" +"Make sure you look at your site while logged out to see the fast, cached " +"pages!" +msgstr "请确认您在查看网站时已开启隐私窗口或注销已登录账号!" + +#: views/deactivation-intent/form.php:132 +#, php-format +msgid "" +"The best way to see the improvement WP Rocket provides is to perform speed " +"tests. Follow this guide to correctly measure the load time of your website:" +" %1$shttps://wp-rocket.me/blog/correctly-measure-websites-page-load-" +"time/%2$s" +msgstr "" +"最好的检测方式是进行速度测试。关于如何正确测试网站加载时间请参考:%1$shttps://wp-rocket.me/blog/correctly-" +"measure-websites-page-load-time/%2$s" + +#: views/deactivation-intent/form.php:137 +msgid "The plugin is too complicated to configure" +msgstr "插件设置太复杂了" + +#: views/deactivation-intent/form.php:138 +msgid "We are sorry to hear you are finding it difficult to use WP Rocket." +msgstr "对您在使用WP Rocket过程中的不便,我们表示十分抱歉。" + +#: views/deactivation-intent/form.php:139 +#, php-format +msgid "" +"WP Rocket is the only caching plugin that provides 80% of best practices in " +"speed optimization, by default. That means you do not have to do anything " +"besides activate WP Rocket and your site will already be faster!" +msgstr "WP Rocket 是唯一能默认提供80%速度优化最佳操作的插件。除了启用 WP Rocket 之外,您无需做任何操作,网站就已经加速啦!" + +#: views/deactivation-intent/form.php:140 +msgid "" +"The additional options are not required for a fast site, they are for fine-" +"tuning." +msgstr "扩展选项也不是加速网站的必要选项,仅供您微调使用哦。" + +#: views/deactivation-intent/form.php:144 +#, php-format +msgid "" +"To see the benefit WP Rocket is already providing, measure the speed of your" +" site using a tool like Pingdom: %1$shttps://wp-rocket.me/blog/correctly-" +"measure-websites-page-load-time/%2$s" +msgstr "" +"要查看 WP Rocket 为您带来的加速效果,您可用 Pindom 等工具来测试网站的加载速度:%1$shttps://wp-" +"rocket.me/blog/correctly-measure-websites-page-load-time/%2$s。" + +#: views/deactivation-intent/form.php:151 +msgid "Send & Deactivate" +msgstr "发送 & 停用" + +#: views/deactivation-intent/form.php:152 +msgid "Cancel" +msgstr "取消" + +#: views/deactivation-intent/form.php:154 +msgid "Skip & Deactivate" +msgstr "跳过 & 停用" + +#: views/settings/enable-google-fonts.php:13 +msgid "Enable Google Font Optimization" +msgstr "启用 Google 字体优化" + +#: views/settings/enable-google-fonts.php:14 +msgid "" +"Improves font performance and combines multiple font requests to reduce the " +"number of HTTP requests." +msgstr "优化字体性能并合并多个字体请求以减少 HTTP请求数。" + +#: views/settings/enable-google-fonts.php:29 +#, php-format +msgid "" +"Google Fonts Optimization is now enabled for your site. %1$sMore info%2$s" +msgstr "Google 字体优化已启用。%1$s更多信息%2$s" + +#: views/settings/enable-google-fonts.php:38 +msgid "Optimize Google Fonts" +msgstr "优化 Google 字体" + +#: views/settings/fields/cache-lifespan.php:26 +msgid "Clear cache after" +msgstr "清空缓存间隔" + +#: views/settings/fields/cnames.php:49 views/settings/fields/cnames.php:81 +#: views/settings/fields/cnames.php:111 +msgid "CSS & JavaScript" +msgstr "CSS & JavaScript" + +#: views/settings/fields/cnames.php:50 views/settings/fields/cnames.php:82 +#: views/settings/fields/cnames.php:112 +msgid "JavaScript" +msgstr "JavaScript" + +#: views/settings/fields/cnames.php:51 views/settings/fields/cnames.php:83 +#: views/settings/fields/cnames.php:113 +msgid "CSS" +msgstr "CSS" + +#: views/settings/fields/import-form.php:29 +msgid "Import settings" +msgstr "导入配置" + +#: views/settings/fields/one-click-addon.php:40 +#: views/settings/fields/rocket-addon.php:31 +#: views/settings/fields/sliding-checkbox.php:25 views/settings/page.php:55 +msgctxt "Active state of checkbox" +msgid "On" +msgstr "开启" + +#: views/settings/fields/one-click-addon.php:41 +#: views/settings/fields/rocket-addon.php:32 +#: views/settings/fields/sliding-checkbox.php:26 views/settings/page.php:56 +msgctxt "Inactive state of checkbox" +msgid "Off" +msgstr "关闭" + +#: views/settings/fields/one-click-addon.php:42 +#: views/settings/fields/rocket-addon.php:33 +msgid "Add-on status" +msgstr "扩展功能状态" + +#: views/settings/fields/rocket-addon.php:56 +msgid "Modify options" +msgstr "修改设置" + +#: views/settings/fields/rocket-cdn.php:29 +#: views/settings/fields/rocket-cdn.php:41 +msgid "CDN CNAME" +msgstr "CDN CNAME" + +#: views/settings/fields/rocket-cdn.php:62 +#, php-format +msgid "Purges RocketCDN cached resources for your website. %s" +msgstr "清除 RocketCDN 缓存资源。%s" + +#: views/settings/fields/rocket-cdn.php:63 +#: views/settings/page-sections/cloudflare.php:36 +#: views/settings/page-sections/sucuri.php:37 +msgid "Learn more" +msgstr "更多信息" + +#: views/settings/fields/rocket-cdn.php:72 +msgid "Clear all RocketCDN cache files" +msgstr "清除所有的 RocketCDN 缓存文件" + +#: views/settings/page-sections/cloudflare.php:27 +msgid "Cloudflare Cache" +msgstr "Cloudfare缓存" + +#: views/settings/page-sections/cloudflare.php:35 +#: views/settings/page-sections/sucuri.php:36 +#, php-format +msgid "Purges cached resources for your website. %s" +msgstr "从您的网站清除缓存资源。%s" + +#: views/settings/page-sections/cloudflare.php:36 +msgid "https://support.cloudflare.com/hc/en-us/articles/200169246" +msgstr "https://support.cloudflare.com/hc/en-us/articles/200169246" + +#: views/settings/page-sections/cloudflare.php:45 +msgid "Clear all Cloudflare cache files" +msgstr "清除所有Cloudflare缓存文件" + +#: views/settings/page-sections/dashboard.php:38 +msgid "Congratulations!" +msgstr "恭喜!" + +#: views/settings/page-sections/dashboard.php:40 +msgid "WP Rocket is now activated and already working for you." +msgstr "WP Rocket 已激活并开始工作。" + +#: views/settings/page-sections/dashboard.php:42 +msgid "Your website should be loading faster now!" +msgstr "您的网站应该变快啦 !" + +#: views/settings/page-sections/dashboard.php:44 +#, php-format +msgid "" +"To guarantee fast websites, WP Rocket applies 80% of web performance best " +"practices." +msgstr "为达到加速效果,WP Rocket 已自动帮您开启了80%的加速最佳操作。" + +#: views/settings/page-sections/dashboard.php:44 +msgid "" +"We also enable options that provide immediate benefits to your website." +msgstr "我们同时也帮您的网站启用了能带来实时效果的选项。" + +#: views/settings/page-sections/dashboard.php:45 +msgid "Continue to the options to further optimize your site!" +msgstr "继续调整设置来进一步优化您的网站吧!" + +#: views/settings/page-sections/dashboard.php:55 +msgid "My Account" +msgstr "我的账户" + +#: views/settings/page-sections/dashboard.php:61 +msgid "Refresh info" +msgstr "刷新信息" + +#: views/settings/page-sections/dashboard.php:75 +msgid "Expiration Date" +msgstr "过期时间" + +#: views/settings/page-sections/dashboard.php:84 +msgid "View my account" +msgstr "查看我的账户" + +#: views/settings/page-sections/dashboard.php:111 +msgid "Quick Actions" +msgstr "快捷操作" + +#: views/settings/page-sections/dashboard.php:118 +msgid "Remove all cached files" +msgstr "清除所有缓存" + +#: views/settings/page-sections/dashboard.php:138 +msgid "Start cache preloading" +msgstr "开始预缓存" + +#: views/settings/page-sections/dashboard.php:164 +msgid "Purge OPCache content" +msgstr "清除OPcache内容" + +#: views/settings/page-sections/dashboard.php:170 +msgid "Purge OPCache" +msgstr "清除 OPcache" + +#: views/settings/page-sections/dashboard.php:181 +#: views/settings/page-sections/dashboard.php:187 +msgid "Regenerate Critical CSS" +msgstr "重新生成关键路径 CSS" + +#: views/settings/page-sections/dashboard.php:204 +msgid "Frequently Asked Questions" +msgstr "FAQ" + +#: views/settings/page-sections/dashboard.php:217 +msgid "Still cannot find a solution?" +msgstr "仍未找到解决方案?" + +#: views/settings/page-sections/dashboard.php:218 +msgid "" +"Submit a ticket and get help from our friendly and knowledgeable Rocketeers." +msgstr "请发送工单以寻求帮助。我们的火箭工程师非常友好并且知识渊博哦 ~" + +#: views/settings/page-sections/dashboard.php:226 +msgid "Ask support" +msgstr "请求帮助" + +#: views/settings/page-sections/database.php:25 +msgid "Backup your database before you run a cleanup!" +msgstr "清理前请务必备份数据库!" + +#: views/settings/page-sections/database.php:26 +msgid "" +"Once a database optimization has been performed, there is no way to undo it." +msgstr "优化操作一旦运行无法撤销。" + +#: views/settings/page-sections/database.php:28 +msgid "Save Changes and Optimize" +msgstr "保存并优化" + +#: views/settings/page-sections/imagify.php:21 +#, php-format +msgid "" +"%1$sWP ROCKET%2$s created %3$sIMAGIFY%4$s %1$sfor best-in-class image " +"optimization.%2$s" +msgstr "%1$sWP ROCKET%2$s创建了%1$s图片优化神器%2$s %3$sIMAGIFY %4$s" + +#: views/settings/page-sections/imagify.php:24 +msgid "" +"Compress image to make your website faster, all while maintaining image " +"quality." +msgstr "在确保图片质量的同时压缩图片,让您的网站加载更快。" + +#: views/settings/page-sections/imagify.php:25 +msgid "More on Imagify:" +msgstr "更多尽在 Imagify:" + +#: views/settings/page-sections/imagify.php:27 +msgid "Imagify Plugin Page" +msgstr "Imagify 插件介绍页" + +#: views/settings/page-sections/imagify.php:28 +msgid "Imagify Website" +msgstr "Imagify 网站" + +#: views/settings/page-sections/imagify.php:29 +msgid "Review of Image Compression Plugins" +msgstr "Imagify 评价" + +#: views/settings/page-sections/imagify.php:38 +msgid "Install Imagify" +msgstr "安装 Imagify 插件" + +#: views/settings/page-sections/license.php:22 +msgid "WP Rocket was not able to automatically validate your license." +msgstr "WP Rocket无法自动验证您的授权。" + +#: views/settings/page-sections/license.php:29 +#, php-format +msgid "Follow this %1$s, or contact %2$s to get the engine started." +msgstr "请参考%1$s,或联系%2$s来开启WP Rocket引擎吧 ~" + +#: views/settings/page-sections/license.php:32 +#, php-format +msgid "%1$s%2$s%3$stutorial%4$s" +msgstr "%1$s%2$s%3$s教程%4$s" + +#: views/settings/page-sections/license.php:34 +msgid "" +"https://docs.wp-rocket.me/article/100-resolving-problems-with-license-" +"validation/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://docs.wp-rocket.me/article/100-resolving-problems-with-license-" +"validation/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: views/settings/page-sections/license.php:40 +#, php-format +msgid "%1$s%2$s%3$ssupport%4$s" +msgstr "%1$s%2$s%3$s支持%4$s" + +#: views/settings/page-sections/sucuri.php:46 +msgid "Clear all Sucuri cache files" +msgstr "清除所有的Sucuri缓存文件" + +#: views/settings/page-sections/tools.php:20 +#, php-format +msgid "Files size: %1$s. Number of entries: %2$s." +msgstr "文件大小:%1$s。数据行数:%2$s。" + +#: views/settings/page-sections/tools.php:23 +#, php-format +msgid "%1$sDownload the file%2$s." +msgstr "%1$s下载文件%2$s。" + +#: views/settings/page-sections/tools.php:26 +#, php-format +msgid "%1$sDelete the file%2$s." +msgstr "%1$s删除文件%2$s。" + +#: views/settings/page-sections/tools.php:37 +msgid "Export settings" +msgstr "导出配置" + +#: views/settings/page-sections/tools.php:38 +msgid "Download a backup file of your settings" +msgstr "下载您的设置备份文件" + +#: views/settings/page-sections/tools.php:46 +msgid "Download settings" +msgstr "下载配置" + +#: views/settings/page-sections/tools.php:60 +msgid "Rollback" +msgstr "还原" + +#: views/settings/page-sections/tools.php:64 +#, php-format +msgid "Has version %s caused an issue on your website?" +msgstr "%s 版本有问题?" + +#: views/settings/page-sections/tools.php:69 +#, php-format +msgid "" +"You can rollback to the previous major version here.%sThen send us a support" +" request." +msgstr "您可在此回滚到上个主流版本。%s然后寻求我们的帮助。" + +#: views/settings/page-sections/tools.php:80 +#, php-format +msgid "Reinstall version %s" +msgstr "重新安装 %s 版本" + +#: views/settings/page-sections/tools.php:106 +msgid "Debug mode" +msgstr "调试模式" + +#: views/settings/page-sections/tools.php:111 +msgid "Create a debug log file." +msgstr "创建一个调试日志文件。" + +#: views/settings/page-sections/tutorials.php:13 +#: views/settings/partials/getting-started.php:18 +msgid "Getting Started" +msgstr "新手指南" + +#: views/settings/page-sections/tutorials.php:15 +msgid "Getting Started with WP Rocket" +msgstr "玩转 WP Rocket" + +#: views/settings/page-sections/tutorials.php:16 +#: views/settings/partials/getting-started.php:12 +msgid "Finding the Best Settings for Your Site" +msgstr "找到适用您网站的最佳设置" + +#: views/settings/page-sections/tutorials.php:17 +#: views/settings/partials/getting-started.php:13 +msgid "How to Check if WP Rocket is Caching Your Site" +msgstr "如何确认 WP Rocket 缓存已正常工作" + +#: views/settings/page-sections/tutorials.php:18 +#: views/settings/partials/getting-started.php:14 +msgid "How to Measure the Speed of Your Site" +msgstr "如何测试网站加载速度" + +#: views/settings/page-sections/tutorials.php:24 +msgid "Troubleshooting Display Issues with File Optimization" +msgstr "排查文件优化引起的显示问题" + +#: views/settings/page-sections/tutorials.php:25 +msgid "How to Find the Right JavaScript to Exclude" +msgstr "如何找到要排除的 JavaScript" + +#: views/settings/page-sections/tutorials.php:26 +msgid "How External Content Slows Your Site" +msgstr "外部内容是怎么拖慢您的网站的" + +#: views/settings/page-sections/tutorials.php:32 +msgid "How Preloading Works" +msgstr "预缓存工作原理" + +#: views/settings/page-sections/tutorials.php:38 +msgid "Set Up the Cloudflare Add-on" +msgstr "设置 Cloudflare 扩展" + +#: views/settings/page.php:16 +msgid "WP Rocket Settings" +msgstr "WP Rocket设置" + +#: views/settings/page.php:30 +#, php-format +msgid "version %s" +msgstr "%s 版本" + +#: views/settings/page.php:57 +msgid "Show Sidebar" +msgstr "显示侧边栏" + +#: views/settings/page.php:76 +msgid "Thanks for choosing to participate in the WP Rocket beta program!" +msgstr "感谢您参与 WP Rocket beta 版测试!" + +#: views/settings/page.php:77 +msgid "" +"A beta version is usually one that has new features and improvements, but we" +" want to test it a little more before full launch." +msgstr "测试版通常加入了新功能和改进,但我们希望在正式发布前对其进行更多测试。" + +#: views/settings/page.php:78 +msgid "" +"We’d love it if you took our beta versions for a ride, but please keep in " +"mind that it might be less stable than our other releases. Don’t worry, you " +"can switch back to a full release version at any time." +msgstr "我们希望您使用测试版本,但请记住,它可能不如我们的其他已发布版本稳定。 别担心,您可随时切换回稳定版本。" + +#: views/settings/page.php:79 +msgid "" +"Your mission: please send all feedback about our beta versions, including " +"bug reports, to support@wp-rocket.me" +msgstr "您的任务:请将有关我们测试版的所有反馈,包括错误报告,发送至 support@wp-rocket.me" + +#: views/settings/page.php:81 +msgid "If you don’t want to join the beta program, simply close this window." +msgstr "如您不想参与测试,关闭这个窗口即可。" + +#: views/settings/page.php:83 +msgid "Activate Rocket Tester" +msgstr "启用 Rocket 测试者" + +#: views/settings/page.php:94 +msgid "" +"Below is a detailed view of all data WP Rocket will collect if " +"granted permission." +msgstr "以下详细列出了 WP Rocket 在获得许可后将收集的所有数据。" + +#: views/settings/page.php:97 +msgid "" +"WP Rocket will never transmit any domain names or email addresses (except " +"for license validation), IP addresses, or third-party API keys." +msgstr "WP Rocket 绝不会传输任何域名、邮箱(授权验证除外),IP地址或第三方 API key。" + +#: views/settings/page.php:99 +msgid "Activate Rocket analytics" +msgstr "启用 Rocket 分析" + +#: views/settings/partials/documentation.php:15 +msgid "It is a great starting point to fix some of the most common issues." +msgstr "解决常见问题的好去处。" + +#: views/settings/partials/documentation.php:22 +msgid "Read the documentation" +msgstr "查看文档" + +#: views/settings/partials/getting-started.php:11 +msgid "What WP Rocket Does For You By Default" +msgstr "WP Rocket 默认情况下都为您做了些什么?" + +#: views/settings/partials/sidebar.php:12 +msgid "How to correctly measure your website’s loading time" +msgstr "如何正确测试网站加载时间" + +#: views/settings/partials/sidebar.php:14 +msgid "Check our tutorial and learn how to measure the speed of your site." +msgstr "查看我们的教程并学习如何测试网站加载时间。" + +#: views/settings/partials/sidebar.php:19 +msgid "" +"Learn how to use best practices to correctly measure your site's " +"performance." +msgstr "学习如何使用最佳操作以正确测试网站性能。" + +#: views/settings/partials/sidebar.php:20 +msgid "" +"https://wp-rocket.me/blog/correctly-measure-websites-page-load-" +"time/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://wp-rocket.me/blog/correctly-measure-websites-page-load-" +"time/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: views/settings/partials/sidebar.php:20 +msgid "Read our guide" +msgstr "阅读指南" + +#: views/settings/partials/sidebar.php:23 +msgid "Why Google PageSpeed grade should not matter" +msgstr "为什么 Google PageSpeed 等级不重要?" + +#: views/settings/partials/sidebar.php:24 +msgid "" +"https://wp-rocket.me/blog/the-truth-about-google-pagespeed-" +"insights/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://wp-rocket.me/blog/the-truth-about-google-pagespeed-" +"insights/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: views/settings/partials/sidebar.php:24 +msgid "Read more" +msgstr "阅读更多" + +#: views/settings/partials/sidebar.php:29 +msgid "You have not activated logged-in user cache." +msgstr "您尚未启用已登录用户缓存。" + +#: views/settings/partials/sidebar.php:30 +msgid "" +"Use a private browser to check your website's speed and visual appearance." +msgstr "请使用浏览器的隐私模式来检查网站速度和外观变化。" + +#: views/settings/rocketcdn/cta-big.php:27 +#, php-format +msgid "Valid until %s only!" +msgstr " %s 即将到期!" + +#: views/settings/rocketcdn/cta-big.php:36 +msgid "Speed up your website thanks to:" +msgstr "致谢为您加速网站的贡献者:" + +#: views/settings/rocketcdn/cta-big.php:42 +#, php-format +msgid "" +"High performance Content Delivery Network (CDN) with %1$sunlimited " +"bandwith%2$s" +msgstr "具有 %1$s无限带宽%2$s的高性能CDN" + +#: views/settings/rocketcdn/cta-big.php:48 +#, php-format +msgid "" +"Easy configuration: the %1$sbest CDN settings%2$s are automatically applied" +msgstr "轻松设置:已自动为您启用了 %1$sCDN 最佳设置%2$s " + +#: views/settings/rocketcdn/cta-big.php:54 +#, php-format +msgid "" +"WP Rocket integration: the CDN option is %1$sautomatically configured%2$s in" +" our plugin" +msgstr "WP Rocket 整合: 我们的插件已为您%1$s自动配置%2$sCDN 选项" + +#: views/settings/rocketcdn/cta-big.php:69 +#, php-format +msgid "%s / month" +msgstr "%s / 月" + +#: views/settings/rocketcdn/cta-big.php:74 +msgid "Get Started" +msgstr "新手指南" + +#: views/settings/rocketcdn/cta-big.php:80 +msgid "Learn more about RocketCDN" +msgstr "了解 RocketCDN 的更多信息" + +#: views/settings/rocketcdn/cta-big.php:82 +msgid "Reduce this banner" +msgstr "不想看" + +#: views/settings/rocketcdn/cta-big.php:88 +#, php-format +msgid "" +"* $%1$s/month for 12 months then $%2$s/month. You can cancel your " +"subscription at any time." +msgstr "* 首年 $%1$s/月,然后 $%2$s/月。您可随时取消订阅。" + +#: views/settings/rocketcdn/cta-small.php:17 +msgid "" +"Speed up your website with RocketCDN, WP Rocket’s Content Delivery Network." +msgstr "用 RocketCDN 加速您的网站,是 WP Rocket 开发的哦 ~" + +#: views/settings/rocketcdn/cta-small.php:20 +#: views/settings/rocketcdn/promote-notice.php:13 +msgid "Learn More" +msgstr "了解详情" + +#: views/settings/rocketcdn/dashboard-status.php:23 +msgid "RocketCDN is unavailable on local domains and staging sites." +msgstr "RocketCDN 无法用于本地域名或测试环境。" + +#: views/settings/rocketcdn/dashboard-status.php:32 +msgid "Get RocketCDN" +msgstr "获取 RocketCDN" + +#: views/settings/rocketcdn/promote-notice.php:11 +msgid "New!" +msgstr "New!" + +#: views/settings/rocketcdn/promote-notice.php:12 +msgid "" +"Speed up your website with RocketCDN, WP Rocket’s Content Delivery Network!" +msgstr "用 RocketCDN 加速您的网站,是 WP Rocket 开发的哦 ~" + +#: views/settings/sections/addons-container.php:24 +#: views/settings/sections/fields-container.php:28 +msgid "Need Help?" +msgstr "需要帮助吗?" diff --git a/wp-content/plugins/wp-rocket/languages/rocket-zh_TW.mo b/wp-content/plugins/wp-rocket/languages/rocket-zh_TW.mo new file mode 100644 index 0000000000000000000000000000000000000000..d886a9d5d81deb77942f9e98a370067d18aece10 GIT binary patch literal 48660 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, 2019 +# Pseric Lin (Pseric) , 2019 +# m615926 , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: WP Rocket 3.3.7\n" +"Report-Msgid-Bugs-To: http://wp-rocket.me/\n" +"POT-Creation-Date: 2019-08-26 11:14-0400\n" +"PO-Revision-Date: 2019-08-26 15:14+0000\n" +"Last-Translator: m615926 , 2019\n" +"Language-Team: Chinese (Taiwan) (https://www.transifex.com/wp-media/teams/18133/zh_TW/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: zh_TW\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Poedit 1.8.11\n" +"X-Poedit-Basepath: ..\n" +"X-Poedit-KeywordsList: __;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c\n" +"X-Poedit-SearchPath-0: .\n" +"X-Poedit-SearchPathExcluded-0: assets\n" +"X-Poedit-SearchPathExcluded-1: src\n" +"X-Poedit-SearchPathExcluded-2: vendor\n" +"X-Poedit-SearchPathExcluded-3: node_modules\n" +"X-Poedit-SearchPathExcluded-4: tests\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Textdomain-Support: yes\n" + +#: inc/3rd-party/hosting/flywheel.php:15 inc/3rd-party/hosting/godaddy.php:15 +#: inc/3rd-party/hosting/o2switch.php:15 +#: inc/3rd-party/hosting/pressidium.php:15 inc/3rd-party/hosting/savvii.php:15 +#: inc/3rd-party/hosting/wp-serveur.php:24 +#: inc/3rd-party/hosting/wpengine.php:15 +#, php-format +msgid "" +"Your site is hosted on %s, we have enabled Varnish auto-purge for " +"compatibility." +msgstr "你的網站托管於 %s,為了最佳相容性我們已經開啟 Varnish 自動清理功能。" + +#: inc/3rd-party/hosting/kinsta.php:150 +#, php-format +msgid "" +"Your installation seems to be missing core Kinsta files managing Cache " +"clearing and CDN, which will prevent your Kinsta installation and WP Rocket " +"from working correctly. Please get in touch with Kinsta support through your" +" %1$sMyKinsta%2$s account to resolve this issue." +msgstr "" +"你的系統似乎少了 Kinsta 管理快取清除已經 CDN 的核心程式,需要安裝才能正常使用 WP Rocket。請透過 " +"\"%1$sMyKinsta%2$s\" 聯絡 Kinsta 客服來解決這個問題。" + +#: inc/3rd-party/plugins/jetpack.php:86 +msgid "Jetpack XML Sitemaps" +msgstr "Jetpack XML 網站地圖" + +#: inc/3rd-party/plugins/jetpack.php:88 +msgid "Preload the sitemap from the Jetpack plugin" +msgstr "從 Jetpack 預先載入網站地圖" + +#: inc/3rd-party/plugins/jetpack.php:96 +#: inc/3rd-party/plugins/seo/all-in-one-seo-pack.php:88 +#: inc/3rd-party/plugins/seo/rank-math-seo.php:34 +#: inc/3rd-party/plugins/seo/seopress.php:85 +#: inc/3rd-party/plugins/seo/the-seo-framework.php:123 +#: inc/3rd-party/plugins/seo/yoast-seo.php:86 +#, php-format +msgid "" +"We automatically detected the sitemap generated by the %s plugin. You can " +"check the option to preload it." +msgstr "我們已自動偵測到網站地圖是由 %s 外掛產生。你可以選取此欄位來預先載入它。" + +#: inc/3rd-party/plugins/seo/all-in-one-seo-pack.php:86 +msgid "All in One SEO XML sitemap" +msgstr "All in One SEO XML 網站地圖" + +#: inc/3rd-party/plugins/seo/rank-math-seo.php:32 +msgid "Rank Math XML sitemap" +msgstr "" + +#: inc/3rd-party/plugins/seo/seopress.php:83 +msgid "SEOPress XML sitemap" +msgstr "" + +#: inc/3rd-party/plugins/seo/the-seo-framework.php:121 +msgid "The SEO Framework XML sitemap" +msgstr "" + +#: inc/3rd-party/plugins/seo/yoast-seo.php:84 +msgid "Yoast SEO XML sitemap" +msgstr "Yoast SEO XML 網站地圖" + +#: inc/admin/admin.php:13 inc/common/admin-bar.php:311 +#: inc/deprecated/deprecated.php:1789 +msgid "Support" +msgstr "支援" + +#: inc/admin/admin.php:15 +msgid "Docs" +msgstr "說明文件" + +#: inc/admin/admin.php:17 inc/common/admin-bar.php:299 +msgid "FAQ" +msgstr "常見問題" + +#: inc/admin/admin.php:19 inc/common/admin-bar.php:46 +msgid "Settings" +msgstr "設定" + +#: inc/admin/admin.php:64 inc/admin/admin.php:86 inc/admin/admin.php:105 +msgid "Clear this cache" +msgstr "清除快取" + +#: inc/admin/admin.php:249 inc/admin/admin.php:264 +#: inc/classes/class-wp-rocket-requirements-check.php:204 +#: inc/classes/class-wp-rocket-requirements-check.php:214 +#, php-format +msgid "%s Update Rollback" +msgstr "%s 更新還原" + +#: inc/admin/admin.php:290 +#, php-format +msgid "%1$sReturn to WP Rocket%2$s or %3$sgo to Plugins page%2$s" +msgstr "" + +#: inc/admin/admin.php:529 +msgid "Settings import failed: you do not have the permissions to do this." +msgstr "設定匯入錯誤:你沒有權限這麼做。" + +#: inc/admin/admin.php:533 +msgid "Settings import failed: no file uploaded." +msgstr "匯入設定錯誤:無上傳檔案" + +#: inc/admin/admin.php:537 +msgid "Settings import failed: incorrect filename." +msgstr "匯入設定錯誤:不正確的檔案名稱" + +#: inc/admin/admin.php:546 +msgid "Settings import failed: incorrect filetype." +msgstr "匯入設定錯誤:不正確的檔案類型" + +#: inc/admin/admin.php:554 +msgid "Settings import failed: " +msgstr "" + +#: inc/admin/admin.php:571 +msgid "Settings import failed: unexpected file content." +msgstr "" + +#: inc/admin/admin.php:592 +msgid "Settings imported and saved." +msgstr "已匯入設定並儲存。" + +#: inc/admin/options.php:101 +#, php-format +msgid "Cloudflare development mode error: %s" +msgstr "CloudFlare 開發者模式錯誤: %s" + +#: inc/admin/options.php:107 +#, php-format +msgid "Cloudflare development mode %s" +msgstr "CloudFlare 開發者模式: %s" + +#: inc/admin/options.php:124 +#, php-format +msgid "Cloudflare cache level error: %s" +msgstr "CloudFlare 快取層級錯誤: %s" + +#: inc/admin/options.php:128 +msgctxt "Cloudflare caching level" +msgid "Standard" +msgstr "標準" + +#: inc/admin/options.php:134 +#, php-format +msgid "Cloudflare cache level set to %s" +msgstr "CloudFlare 快取層級設定為: %s" + +#: inc/admin/options.php:146 +#, php-format +msgid "Cloudflare minification error: %s" +msgstr "CloudFlare 壓縮錯誤: %s" + +#: inc/admin/options.php:152 +#, php-format +msgid "Cloudflare minification %s" +msgstr "CloudFlare 壓縮: %s" + +#: inc/admin/options.php:164 +#, php-format +msgid "Cloudflare rocket loader error: %s" +msgstr "CloudFlare rocket loader 錯誤: %s" + +#: inc/admin/options.php:170 +#, php-format +msgid "Cloudflare rocket loader %s" +msgstr "CloudFlare rocket loader %s" + +#: inc/admin/options.php:182 +#, php-format +msgid "Cloudflare browser cache error: %s" +msgstr "CloudFlare 瀏覽器快取錯誤: %s" + +#: inc/admin/options.php:188 +#, php-format +msgid "Cloudflare browser cache set to %s seconds" +msgstr "CloudFlare 瀏覽器快取設定為 %s 秒" + +#: inc/admin/options.php:241 inc/classes/admin/settings/class-page.php:692 +msgid "Excluded CSS Files" +msgstr "排除 CSS 檔" + +#: inc/admin/options.php:242 inc/classes/admin/settings/class-page.php:784 +msgid "Excluded Inline JavaScript" +msgstr "" + +#: inc/admin/options.php:243 inc/classes/admin/settings/class-page.php:802 +msgid "Excluded JavaScript Files" +msgstr "排除 JavaScript 檔" + +#: inc/admin/options.php:244 inc/classes/admin/settings/class-page.php:1128 +msgid "Never Cache URL(s)" +msgstr "不快取的網址" + +#: inc/admin/options.php:245 inc/classes/admin/settings/class-page.php:1144 +msgid "Never Cache User Agent(s)" +msgstr "不快取的裝置" + +#: inc/admin/options.php:246 inc/classes/admin/settings/class-page.php:1149 +msgid "Always Purge URL(s)" +msgstr "總是清除快的取網址" + +#: inc/admin/options.php:247 inc/classes/admin/settings/class-page.php:1443 +msgid "Exclude files from CDN" +msgstr "排除來自 CDN 的檔案" + +#: inc/admin/options.php:265 +#, php-format +msgid "%1$s: %2$s." +msgstr "" + +#: inc/admin/options.php:275 +msgid "The following pattern is invalid and has been removed:" +msgid_plural "The following patterns are invalid and have been removed:" +msgstr[0] "" + +#: inc/admin/ui/meta-boxes.php:14 inc/admin/ui/notices.php:955 +#: inc/common/admin-bar.php:65 inc/common/admin-bar.php:118 +#: views/settings/page-sections/dashboard.php:115 +msgid "Clear cache" +msgstr "清除快取" + +#: inc/admin/ui/meta-boxes.php:36 +msgid "WP Rocket Options" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:66 +msgid "Never cache this page" +msgstr "永不快取此頁面" + +#: inc/admin/ui/meta-boxes.php:70 +msgid "Activate these options on this post:" +msgstr "在這篇文章啟用這些選項:" + +#: inc/admin/ui/meta-boxes.php:73 +msgid "LazyLoad for images" +msgstr "針對圖片啟用延遲載入" + +#: inc/admin/ui/meta-boxes.php:74 +msgid "LazyLoad for iframes/videos" +msgstr "針對 iFrame 與影片使用延遲載入" + +#: inc/admin/ui/meta-boxes.php:75 +#: inc/classes/admin/settings/class-page.php:615 +msgid "Minify HTML" +msgstr "壓縮 HTML" + +#: inc/admin/ui/meta-boxes.php:76 +msgid "Minify/combine CSS" +msgstr "壓縮/合併 CSS" + +#: inc/admin/ui/meta-boxes.php:77 +msgid "Minify/combine JS" +msgstr "壓縮/合併 JS" + +#: inc/admin/ui/meta-boxes.php:78 +#: inc/classes/admin/settings/class-page.php:1413 +#: inc/classes/admin/settings/class-page.php:1424 +#: inc/deprecated/deprecated.php:1775 +msgid "CDN" +msgstr "CDN" + +#: inc/admin/ui/meta-boxes.php:79 +msgid "Optimize CSS Delivery" +msgstr "最佳化 CSS 分派" + +#: inc/admin/ui/meta-boxes.php:80 +msgid "Defer JS" +msgstr "延遲載入 JS" + +#: inc/admin/ui/meta-boxes.php:86 +#, php-format +msgid "Activate first the %s option." +msgstr "先啟用 %s 選項。" + +#: inc/admin/ui/meta-boxes.php:102 +#, php-format +msgid "" +"%1$sNote:%2$s None of these options will be applied if this post has been " +"excluded from cache in the global cache settings." +msgstr "" + +#: inc/admin/ui/notices.php:24 inc/admin/ui/notices.php:34 +#, php-format +msgid "" +"%1$s has not been deactivated due to missing writing permissions.
      \n" +"Make %2$s writeable and retry deactivation, or force deactivation now:" +msgstr "" +"%1$s 因為缺少寫入權限所以被停用了。
      \n" +"%2$s 請開啟寫入權限後再停用,或是立刻強制停用:" + +#: inc/admin/ui/notices.php:83 +#, php-format +msgid "" +"%s: One or more plugins have been enabled or disabled, " +"clear the cache if they affect the front end of your site." +msgstr "%s: 一個或多個外掛已啟用或停用,必要時別忘了清除快取。" + +#: inc/admin/ui/notices.php:196 +#, php-format +msgid "" +"%s: The following plugins are not compatible with this " +"plugin and may cause unexpected results:" +msgstr "%s:以下外掛與此外掛不相容,且可能造成意外的結果:" + +#: inc/admin/ui/notices.php:202 +msgid "Deactivate" +msgstr "停用" + +#: inc/admin/ui/notices.php:243 +msgid "" +"WP Rocket Footer JS is not an official add-on. It prevents some options in " +"WP Rocket from working correctly. Please deactivate it if you have problems." +msgstr "" + +#: inc/admin/ui/notices.php:283 +#, php-format +msgid "" +"Endurance Cache is currently enabled, which will conflict with WP Rocket " +"Cache. Please set the Endurance Cache cache level to Off (Level 0) on the " +"%1$sSettings > General%2$s page to prevent any issues." +msgstr "" + +#: inc/admin/ui/notices.php:305 +#, php-format +msgid "" +"%1$s: A custom permalink structure is required for the plugin to work " +"properly. %2$sGo to permalinks settings%3$s" +msgstr "%1$s: 為了使外掛能正常運作,自訂固定網址結構是必須的。請前往%2$s固定網址%3$s設定" + +#: inc/admin/ui/notices.php:442 +#, php-format +msgid "" +"%s could not modify the .htaccess file due to missing writing permissions." +msgstr "" + +#: inc/admin/ui/notices.php:448 inc/admin/ui/notices.php:1032 +#, php-format +msgid "Troubleshoot: %1$sHow to make system files writeable%2$s" +msgstr "解決辦法: %1$s如何讓系統檔案可寫入?%2$s" + +#: inc/admin/ui/notices.php:450 inc/admin/ui/notices.php:1034 +msgid "" +"https://docs.wp-rocket.me/article/626-how-to-make-system-files-htaccess-wp-" +"config-writeable/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://docs.wp-rocket.me/article/626-how-to-make-system-files-htaccess-wp-" +"config-writeable/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: inc/admin/ui/notices.php:456 +msgid "" +"Don’t worry, WP Rocket’s page caching and settings will still function " +"correctly." +msgstr "" + +#: inc/admin/ui/notices.php:456 +msgid "" +"For optimal performance, adding the following lines into your .htaccess is " +"recommended (not required):" +msgstr "" + +#: inc/admin/ui/notices.php:600 +#, php-format +msgid "" +"%1$s is good to go! %2$sTest your load time%4$s, or visit your " +"%3$ssettings%4$s." +msgstr "%1$s 已設定為成! %2$s測試一下載入時間%4$s,或是前往 %3$s設定%4$s." + +#: inc/admin/ui/notices.php:721 +msgid "" +"Would you allow WP Rocket to collect non-sensitive diagnostic data from this" +" website?" +msgstr "您介意 WP Rocket 從您的網站蒐集非敏感性資料嗎?" + +#: inc/admin/ui/notices.php:722 +msgid "This would help us to improve WP Rocket for you in the future." +msgstr "這些資料將有助於未來我們改善 WP Rocket。" + +#: inc/admin/ui/notices.php:728 +msgid "What info will we collect?" +msgstr "我們會蒐集什麼資料?" + +#: inc/admin/ui/notices.php:733 +msgid "" +"Below is a detailed view of all data WP Rocket will collect if granted " +"permission. WP Rocket will never transmit any domain names or email " +"addresses (except for license validation), IP addresses, or third-party API " +"keys." +msgstr "" +"如果您允允許我們,下方是 WP Rocket 會蒐集的資料清單。我們絕對不會傳送任何網域名稱或是電子郵件(除非是為了驗證註冊)、IP 位址或是第三方的 " +"API 金鑰。" + +#: inc/admin/ui/notices.php:742 +msgid "Yes, allow" +msgstr "OK,我允許" + +#: inc/admin/ui/notices.php:745 +msgid "No, thanks" +msgstr "不用了,謝謝" + +#: inc/admin/ui/notices.php:783 +msgid "Thank you!" +msgstr "謝謝您!" + +#: inc/admin/ui/notices.php:788 +msgid "WP Rocket now collects these metrics from your website:" +msgstr "WP Rocket 現在開始從您的網站蒐集使用資料:" + +#: inc/admin/ui/notices.php:825 +#, php-format +msgid "%s: Cache cleared." +msgstr "%s: 快取已清除。" + +#: inc/admin/ui/notices.php:830 +#, php-format +msgid "%s: Post cache cleared." +msgstr "%s: 文章快取已清除。" + +#: inc/admin/ui/notices.php:835 +#, php-format +msgid "%s: Term cache cleared." +msgstr "%s: 分類快取已清除。" + +#: inc/admin/ui/notices.php:840 +#, php-format +msgid "%s: User cache cleared." +msgstr "%s: 帳號快取已清除。" + +#: inc/admin/ui/notices.php:910 +msgid "" +"The following scheduled event failed to run. This may indicate the CRON " +"system is not running properly, which can prevent some WP Rocket features " +"from working as intended:" +msgid_plural "" +"The following scheduled events failed to run. This may indicate the CRON " +"system is not running properly, which can prevent some WP Rocket features " +"from working as intended:" +msgstr[0] "" + +#: inc/admin/ui/notices.php:919 +msgid "Please contact your host to check if CRON is working." +msgstr "" + +#: inc/admin/ui/notices.php:958 +msgid "Stop Preload" +msgstr "" + +#: inc/admin/ui/notices.php:976 +msgid "Force deactivation " +msgstr "強制停用" + +#: inc/admin/ui/notices.php:989 +msgid "The following code should have been written to this file:" +msgstr "下方這些程式碼應該被寫入到此檔案中:" + +#: inc/admin/ui/notices.php:999 views/settings/page-sections/dashboard.php:45 +msgid "Dismiss this notice." +msgstr "關閉提示。" + +#: inc/admin/ui/notices.php:1020 +#, php-format +msgid "%s cannot configure itself due to missing writing permissions." +msgstr "%s 因為缺少寫入權限所以無法自動設定。" + +#: inc/admin/ui/notices.php:1026 +#, php-format +msgid "Affected file/folder: %s" +msgstr "影響的檔案 / 資料夾: %s" + +#: inc/classes/admin/Database/class-optimization.php:41 +#: inc/classes/admin/settings/class-page.php:1289 +msgid "Revisions" +msgstr "文章版本" + +#: inc/classes/admin/Database/class-optimization.php:42 +#: inc/classes/admin/settings/class-page.php:1299 +msgid "Auto Drafts" +msgstr "自動草稿" + +#: inc/classes/admin/Database/class-optimization.php:43 +#: inc/classes/admin/settings/class-page.php:1309 +msgid "Trashed Posts" +msgstr "回收桶文章" + +#: inc/classes/admin/Database/class-optimization.php:44 +#: inc/classes/admin/settings/class-page.php:1319 +msgid "Spam Comments" +msgstr "垃圾迴響" + +#: inc/classes/admin/Database/class-optimization.php:45 +#: inc/classes/admin/settings/class-page.php:1329 +msgid "Trashed Comments" +msgstr "回收桶迴響" + +#: inc/classes/admin/Database/class-optimization.php:46 +#: inc/classes/admin/settings/class-page.php:1339 +msgid "Expired transients" +msgstr "已過期的臨時選項" + +#: inc/classes/admin/Database/class-optimization.php:47 +msgid "Transients" +msgstr "臨時選項" + +#: inc/classes/admin/Database/class-optimization.php:48 +msgid "Tables" +msgstr "資料表" + +#: inc/classes/admin/class-logs.php:124 +msgid "The debug file could not be deleted." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:212 +#: inc/classes/admin/settings/class-page.php:213 +msgid "Unavailable" +msgstr "無法使用" + +#: inc/classes/admin/settings/class-page.php:327 +#: inc/deprecated/deprecated.php:1791 +#: views/settings/page-sections/dashboard.php:72 +msgid "License" +msgstr "註冊碼" + +#: inc/classes/admin/settings/class-page.php:344 +msgid "API key" +msgstr "API 金鑰" + +#: inc/classes/admin/settings/class-page.php:359 +msgid "Email address" +msgstr "電子郵件地址" + +#: inc/classes/admin/settings/class-page.php:388 +msgid "Dashboard" +msgstr "控制台" + +#: inc/classes/admin/settings/class-page.php:389 +msgid "Get help, account info" +msgstr "獲得幫助、帳號資訊" + +#: inc/classes/admin/settings/class-page.php:398 +msgid "My Status" +msgstr "我的狀態" + +#: inc/classes/admin/settings/class-page.php:408 views/settings/page.php:71 +msgid "Rocket Tester" +msgstr "Rocket 測試人員" + +#: inc/classes/admin/settings/class-page.php:409 +msgid "I am part of the WP Rocket Beta Testing Program." +msgstr "我是 WP Rocket Beta 測試計劃的一部分。" + +#: inc/classes/admin/settings/class-page.php:417 views/settings/page.php:89 +msgid "Rocket Analytics" +msgstr "Rocket 分析" + +#: inc/classes/admin/settings/class-page.php:419 +#, php-format +msgid "" +"I agree to share anonymous data with the development team to help improve WP" +" Rocket. %1$sWhat info will we collect?%2$s" +msgstr "我同意將匿名資訊分享給開發團隊以協助改進 WP Rocket。%1$s我們會收集那些資訊?%2$s" + +#: inc/classes/admin/settings/class-page.php:447 +msgid "Cache" +msgstr "快取" + +#: inc/classes/admin/settings/class-page.php:448 +msgid "Basic cache options" +msgstr "基本快取選項" + +#: inc/classes/admin/settings/class-page.php:455 +msgid "Mobile Cache" +msgstr "行動裝置快取" + +#: inc/classes/admin/settings/class-page.php:457 +msgid "Speed up your site for mobile visitors." +msgstr "為行動裝置訪客加速你的網站。" + +#: inc/classes/admin/settings/class-page.php:462 +msgid "" +"We detected you use a plugin that requires a separate cache for mobile, and " +"automatically enabled this option for compatibility." +msgstr "我們偵測到你使用了需要為行動裝置分隔快取的外掛,為了相容性已經自動開啟此選項。" + +#: inc/classes/admin/settings/class-page.php:466 +msgid "User Cache" +msgstr "使用者快取" + +#: inc/classes/admin/settings/class-page.php:469 +#, php-format +msgid "" +"%1$sUser cache%2$s is great when you have user-specific or restricted " +"content on your website." +msgstr "%1$s使用者快取%2$s非常適合當你的網站有提供特定內容給當下訪客的情況下使用。" + +#: inc/classes/admin/settings/class-page.php:477 +msgid "Cache Lifespan" +msgstr "快取生命週期" + +#: inc/classes/admin/settings/class-page.php:480 +#, php-format +msgid "" +"Cache lifespan is the period of time after which all cache files are " +"removed.
      Enable %1$spreloading%2$s for the cache to be rebuilt " +"automatically after lifespan expiration." +msgstr "快取生命週期是指快取產生到移除的存活期間。
      使用%1$s預載入%2$s可以讓快取到期時自動重新產生。" + +#: inc/classes/admin/settings/class-page.php:494 +msgid "Enable caching for logged-in WordPress users" +msgstr "為已登入使用者建立快取" + +#: inc/classes/admin/settings/class-page.php:502 +msgid "Enable caching for mobile devices" +msgstr "啟用行動裝置快取" + +#: inc/classes/admin/settings/class-page.php:517 +msgid "Separate cache files for mobile devices" +msgstr "針對行動裝置建立獨立的快取檔案" + +#: inc/classes/admin/settings/class-page.php:519 +#, php-format +msgid "" +"%1$sMobile cache%2$s works safest with both options enabled. When in doubt, " +"keep both." +msgstr "%1$s行動裝置快取%2$s兩個設定項都勾選會讓網站載入更快。如果不確定如何設定的話請都勾選。" + +#: inc/classes/admin/settings/class-page.php:535 +msgid "" +"Specify time after which the global cache is cleared
      (0 = unlimited )" +msgstr "指定全站快取的存活時間 (0 = 永久)" + +#: inc/classes/admin/settings/class-page.php:537 +#, php-format +msgid "" +"Reduce lifespan to 10 hours or less if you notice issues that seem to appear" +" periodically. %1$sWhy?%2$s" +msgstr "如果你有注意到某些問題持續性的出現,把快取週期降低至十小時或更少。%1$s原因是?%2$s" + +#: inc/classes/admin/settings/class-page.php:543 +msgid "Minutes" +msgstr "分" + +#: inc/classes/admin/settings/class-page.php:544 +msgid "Hours" +msgstr "小時" + +#: inc/classes/admin/settings/class-page.php:545 +msgid "Days" +msgstr "天" + +#: inc/classes/admin/settings/class-page.php:571 +msgid "File Optimization" +msgstr "檔案最佳化" + +#: inc/classes/admin/settings/class-page.php:572 +msgid "Optimize CSS & JS" +msgstr "最佳化 CSS 與 JS" + +#: inc/classes/admin/settings/class-page.php:579 +msgid "Basic Settings" +msgstr "基本設定" + +#: inc/classes/admin/settings/class-page.php:586 +#: inc/classes/admin/settings/class-page.php:596 +#: inc/classes/admin/settings/class-page.php:606 +#, php-format +msgid "" +"%1$s Minification is currently activated in Autoptimize. If" +" you want to use %2$s’s minification, disable those options in Autoptimize." +msgstr "%1$s已將資源自動最佳化,如果你想使用%2$s壓縮工具,請先停用其它的壓縮工具." + +#: inc/classes/admin/settings/class-page.php:589 +msgid "CSS Files" +msgstr "CSS 檔案" + +#: inc/classes/admin/settings/class-page.php:599 +msgid "JavaScript Files" +msgstr "JavaScript 檔案" + +#: inc/classes/admin/settings/class-page.php:619 +msgid "Minifying HTML removes whitespace and comments to reduce the size." +msgstr "壓縮 HTML 會移除檔案裡所有空白和註解來減少檔案尺寸。" + +#: inc/classes/admin/settings/class-page.php:630 +msgid "Combine Google Fonts files" +msgstr "合併 Google Fonts" + +#: inc/classes/admin/settings/class-page.php:631 +msgid "Combining Google Fonts will reduce the number of HTTP requests." +msgstr "合併 Google Fonts 字型檔案可以減少 HTTP 的請求數量。" + +#: inc/classes/admin/settings/class-page.php:639 +msgid "Remove query strings from static resources" +msgstr "從靜態資源中移除 query 字串" + +#: inc/classes/admin/settings/class-page.php:641 +#, php-format +msgid "" +"Removes the version query string from static files (e.g. style.css?ver=1.0) " +"and encodes it into the filename instead (e.g. style-1.0.css). Can improve " +"your GTMetrix score. %1$sMore info%2$s" +msgstr "" +"這功能會移除檔案後方的版本號 ver 字串,像是 style.css?ver=1.0 會變成 style-1.0.css. %1$s更多資訊%2$s" + +#: inc/classes/admin/settings/class-page.php:649 +msgid "Minify CSS files" +msgstr "壓縮 CSS" + +#: inc/classes/admin/settings/class-page.php:650 +msgid "Minify CSS removes whitespace and comments to reduce the file size." +msgstr "壓縮 CSS 會移除檔案裡所有空白和註解來減少檔案尺寸。" + +#: inc/classes/admin/settings/class-page.php:663 +#: inc/classes/admin/settings/class-page.php:685 +#: inc/classes/admin/settings/class-page.php:755 +#: inc/classes/admin/settings/class-page.php:777 +msgid "This could break things!" +msgstr "這可能會造成錯誤!" + +#: inc/classes/admin/settings/class-page.php:664 +#: inc/classes/admin/settings/class-page.php:686 +#: inc/classes/admin/settings/class-page.php:756 +#: inc/classes/admin/settings/class-page.php:778 +msgid "" +"If you notice any errors on your website after having activated this " +"setting, just deactivate it again, and your site will be back to normal." +msgstr "如果在啟用此設定後有發現網站異常,只要停用它就能恢復正常。" + +#: inc/classes/admin/settings/class-page.php:665 +msgid "Activate minify CSS" +msgstr "啟用 CSS 壓縮" + +#: inc/classes/admin/settings/class-page.php:670 +msgid "Combine CSS files (Enable Minify CSS files to select)" +msgstr "合併 CSS 檔案(啟後壓縮以選取該功能)" + +#: inc/classes/admin/settings/class-page.php:672 +#, php-format +msgid "" +"Combine CSS merges all your files into 1, reducing HTTP requests. Not " +"recommended if your site uses HTTP/2. %1$sMore info%2$s" +msgstr "將 CSS 檔案合併為一個可以減少 HTTP 請求。如果你的網站是 HTTP/2 不建議使用該功能。%1$s更多資訊%2$s" + +#: inc/classes/admin/settings/class-page.php:687 +msgid "Activate combine CSS" +msgstr "啟用 CSS 合併" + +#: inc/classes/admin/settings/class-page.php:693 +msgid "" +"Specify URLs of CSS files to be excluded from minification and concatenation" +" (one per line)." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:694 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*).css " +"wildcards to exclude all CSS files located at a specific path." +msgstr "將自動截取網址中主網域的部份。
      使用 (.*).css 來排除在指定路徑下所有的 CSS 檔案。" + +#: inc/classes/admin/settings/class-page.php:707 +msgid "Optimize CSS delivery" +msgstr "最佳化 CSS 分派" + +#: inc/classes/admin/settings/class-page.php:714 +#, php-format +msgctxt "WP Critical CSS compatibility" +msgid "" +"Optimize CSS Delivery is currently handled by the %1$s plugin. If you want " +"to use WP Rocket’s Optimize CSS Delivery option, disable the %1$s plugin." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:716 +#, php-format +msgid "" +"Optimize CSS delivery eliminates render-blocking CSS on your website for " +"faster perceived load time. %1$sMore info%2$s" +msgstr "優化網站中清除前幾行內容中的禁止轉譯 CSS,讓網站載入更快速。%1$s更多資訊%2$s" + +#: inc/classes/admin/settings/class-page.php:727 +msgid "Fallback critical CSS" +msgstr "可視範圍的 CSS 回調" + +#: inc/classes/admin/settings/class-page.php:732 +#, php-format +msgid "" +"Provides a fallback if auto-generated critical path CSS is incomplete. " +"%1$sMore info%2$s" +msgstr "如果自動產生可視範圍的 CSS 未完成,將提供一個回調事件。%1$s更多資訊%2$s" + +#: inc/classes/admin/settings/class-page.php:741 +msgid "Minify JavaScript files" +msgstr "壓縮 JavaScript" + +#: inc/classes/admin/settings/class-page.php:742 +msgid "" +"Minify JavaScript removes whitespace and comments to reduce the file size." +msgstr "壓縮 JavaScript 會移除檔案裡所有空白和註解來減少檔案尺寸。" + +#: inc/classes/admin/settings/class-page.php:757 +msgid "Activate minify JavaScript" +msgstr "啟用 JavaScript 壓縮" + +#: inc/classes/admin/settings/class-page.php:762 +msgid "" +"Combine JavaScript files (Enable Minify JavaScript files to select)" +msgstr "合併 JavaScript 檔案(啟後壓縮以選取該功能)" + +#: inc/classes/admin/settings/class-page.php:764 +#, php-format +msgid "" +"Combine JavaScript files combines your site’s internal, 3rd party and inline" +" JS reducing HTTP requests. Not recommended if your site uses HTTP/2. " +"%1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:779 +msgid "Activate combine JavaScript" +msgstr "啟用 JavaScript 合併" + +#: inc/classes/admin/settings/class-page.php:786 +#, php-format +msgid "" +"Specify patterns of inline JavaScript to be excluded from concatenation (one" +" per line). %1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:803 +msgid "" +"Specify URLs of JavaScript files to be excluded from minification and " +"concatenation (one per line)." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:804 +msgid "" +"Internal: The domain part of the URL will be stripped " +"automatically. Use (.*).js wildcards to exclude all JS files located at a " +"specific path." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:806 +#, php-format +msgid "" +"3rd Party: Use either the full URL path or only the domain " +"name, to exclude external JS. %1$sMore info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:822 +msgid "Load JavaScript deferred" +msgstr "非同步載入 JavaScript" + +#: inc/classes/admin/settings/class-page.php:824 +#, php-format +msgid "" +"Load JavaScript deferred eliminates render-blocking JS on your site and can " +"improve load time. %1$sMore info%2$s" +msgstr "優化網站中清除前幾行內容中的禁止轉譯 JavaScript,讓網站載入更快速。%1$s更多資訊%2$s" + +#: inc/classes/admin/settings/class-page.php:835 +msgid "Safe Mode for jQuery (recommended)" +msgstr "針對 jQuery 的安全模式(建議)" + +#: inc/classes/admin/settings/class-page.php:836 +msgid "" +"Safe mode for jQuery for deferred JS ensures support for inline jQuery " +"references from themes and plugins by loading jQuery at the top of the " +"document as a render-blocking script.
      Deactivating may result in " +"broken functionality, test thoroughly!" +msgstr "" +"非同步載入 JS 的安全模式確保寫在主題或外掛中的 jQuery " +"能正確被執行到,
      不採用安全模式的話可能會發生錯誤!停用的話可能會造成錯誤!" + +#: inc/classes/admin/settings/class-page.php:861 +msgid "Media" +msgstr "媒體" + +#: inc/classes/admin/settings/class-page.php:862 +msgid "LazyLoad, emojis, embeds" +msgstr "延遲載入、表情符號、內嵌功能" + +#: inc/classes/admin/settings/class-page.php:869 +msgid "LazyLoad" +msgstr "延遲載入" + +#: inc/classes/admin/settings/class-page.php:872 +#, php-format +msgid "" +"It can improve actual and perceived loading time as images, iframes, and " +"videos will be loaded only as they enter (or about to enter) the viewport " +"and reduces the number of HTTP requests. %1$sMore Info%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:879 +#, php-format +msgid "" +"Lazyload is currently activated in Autoptimize. If you want" +" to use %1$s’s lazyload, disable this option in Autoptimize." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:882 +msgid "Emoji 👻" +msgstr "表情符號👻" + +#: inc/classes/admin/settings/class-page.php:884 +msgid "" +"Use default emoji of visitor's browser instead of loading emoji from " +"WordPress.org" +msgstr "使用預設的表情符號避免額外從 WordPress.org 下載來增加載入時間的負擔" + +#: inc/classes/admin/settings/class-page.php:888 +msgid "Embeds" +msgstr "內嵌" + +#: inc/classes/admin/settings/class-page.php:890 +msgid "" +"Prevents others from embedding content from your site, prevents you from " +"embedding content from other (non-whitelisted) sites, and removes JavaScript" +" requests related to WordPress embeds" +msgstr "預防你的網站被別人嵌入在他自己的網站(或是非白名單網站),以及移除 WordPress 自動內嵌影音功能的 JavaScript。" + +#: inc/classes/admin/settings/class-page.php:900 +msgid "Enable for images" +msgstr "針對圖片使用延遲載入" + +#: inc/classes/admin/settings/class-page.php:911 +msgctxt "Avada" +msgid "" +"Lazyload for images is currently activated in Avada. If you want to use WP " +"Rocket’s LazyLoad, disable this option in Avada." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:919 +msgid "Enable for iframes and videos" +msgstr "針對 iFrame 與影片使用延遲載入" + +#: inc/classes/admin/settings/class-page.php:934 +msgid "Replace YouTube iframe with preview image" +msgstr "使用預覽圖片取代 YouTube 的播放器" + +#: inc/classes/admin/settings/class-page.php:935 +msgid "" +"This can significantly improve your loading time if you have a lot of " +"YouTube videos on a page." +msgstr "如果你有大量 YouTube 影片在單一頁面中,這可以顯著地改善載入時間。" + +#: inc/classes/admin/settings/class-page.php:947 +msgid "Disable Emoji" +msgstr "停用表情符號" + +#: inc/classes/admin/settings/class-page.php:948 +msgid "Disable Emoji will reduce the number of external HTTP requests." +msgstr "停用表情符號來減少外部的 HTTP 請求。" + +#: inc/classes/admin/settings/class-page.php:956 +msgid "Disable WordPress embeds" +msgstr "關閉 WordPress 內嵌功能" + +#: inc/classes/admin/settings/class-page.php:978 +#: inc/classes/admin/settings/class-page.php:988 +#: inc/deprecated/deprecated.php:1778 +msgid "Preload" +msgstr "預先載入" + +#: inc/classes/admin/settings/class-page.php:979 +msgid "Generate cache files" +msgstr "產生快取檔案" + +#: inc/classes/admin/settings/class-page.php:991 +#, php-format +msgid "" +"When you enable preloading WP Rocket will generate the cache starting with " +"the links on your homepage followed by the sitemaps you specify. Preloading " +"is automatically triggered when you add or update content and can also be " +"manually triggered from the admin bar or from the %1$sWP Rocket " +"Dashboard%2$s." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:999 +msgid "Prefetch DNS Requests" +msgstr "預先取得 DNS 請求" + +#: inc/classes/admin/settings/class-page.php:1001 +msgid "" +"DNS prefetching can make external files load faster, especially on mobile " +"networks" +msgstr "預先取得 DNS 請求可以讓外部檔案載入更快速,特別是行動網路" + +#: inc/classes/admin/settings/class-page.php:1015 +msgid "Activate Preloading" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1034 +msgid "Activate sitemap-based cache preloading" +msgstr "啟用以網站地圖為快取的預先載入功能" + +#: inc/classes/admin/settings/class-page.php:1053 +msgid "Sitemaps for preloading" +msgstr "預先載入的網站地圖" + +#: inc/classes/admin/settings/class-page.php:1057 +msgid "Specify XML sitemap(s) to be used for preloading" +msgstr "使用預先載入的 XML 網站地圖" + +#: inc/classes/admin/settings/class-page.php:1067 +msgid "URLs to prefetch" +msgstr "預先取得的 URL" + +#: inc/classes/admin/settings/class-page.php:1068 +msgid "" +"Specify external hosts to be prefetched (no http:, one per " +"line)" +msgstr "指定外部主機網址來預先請求 DNS (輸入網址不需要打http:,每行一個)" + +#: inc/classes/admin/settings/class-page.php:1091 +msgid "Advanced Rules" +msgstr "進階規則" + +#: inc/classes/admin/settings/class-page.php:1092 +msgid "Fine-tune cache rules" +msgstr "調整快取規則" + +#: inc/classes/admin/settings/class-page.php:1101 +msgid "" +"Sensitive pages like custom login/logout URLs should be excluded from cache." +msgstr "較為敏感的頁面像是登入/登出頁的網址應該被排除在快取檔案外。" + +#: inc/classes/admin/settings/class-page.php:1104 +msgctxt "plugin name" +msgid "WooCommerce" +msgstr "WooCommerce" + +#: inc/classes/admin/settings/class-page.php:1106 +msgctxt "plugin name" +msgid "Easy Digital Downloads" +msgstr "Easy Digital Downloads" + +#: inc/classes/admin/settings/class-page.php:1108 +msgctxt "plugin name" +msgid "iThemes Exchange" +msgstr "iThemes Exchange" + +#: inc/classes/admin/settings/class-page.php:1110 +msgctxt "plugin name" +msgid "Jigoshop" +msgstr "Jigoshop" + +#: inc/classes/admin/settings/class-page.php:1112 +msgctxt "plugin name" +msgid "WP-Shop" +msgstr "WP-Shop" + +#: inc/classes/admin/settings/class-page.php:1118 +#, php-format +msgid "" +"
      Cart, checkout and \"my account\" pages set in " +"%1$s%2$s%3$s will be detected and never cached by default." +msgstr "
      購物車、結帳頁以及「我的帳號」頁面%1$s%2$s%3$s在預設情況下永遠不會被加入快取。" + +#: inc/classes/admin/settings/class-page.php:1139 +msgid "Never Cache Cookies" +msgstr "不快取的 Cookies" + +#: inc/classes/admin/settings/class-page.php:1158 +msgid "Cache Query String(s)" +msgstr "快取參數" + +#: inc/classes/admin/settings/class-page.php:1161 +#, php-format +msgid "" +"%1$sCache for query strings%2$s enables you to force caching for specific " +"GET parameters." +msgstr "%1$s快取參數%2$s讓你可以強制快取某些由 GET 方法所傳遞的參數。" + +#: inc/classes/admin/settings/class-page.php:1175 +msgid "" +"Specify URLs of pages or posts that should never be cached (one per line)" +msgstr "指定不使用快取的頁面或文章網址。(每行一個)" + +#: inc/classes/admin/settings/class-page.php:1176 +#: inc/classes/admin/settings/class-page.php:1204 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*) " +"wildcards to address multiple URLs under a given path." +msgstr "將自動截取網址中主網域的部份。
      使用 (.*) 來排除在指定路徑下所有的 網址。" + +#: inc/classes/admin/settings/class-page.php:1185 +msgid "" +"Specify the IDs of cookies that, when set in the visitor's browser, should " +"prevent a page from getting cached (one per line)" +msgstr "輸入 cookies 的 ID 來避免訪客瀏覽器將此 cookies 進行快取。(每行一個)" + +#: inc/classes/admin/settings/class-page.php:1193 +msgid "" +"Specify user agent strings that should never see cached pages (one per line)" +msgstr "指定當在以下裝置造訪網站時,不進行快取。(每行一個)" + +#: inc/classes/admin/settings/class-page.php:1194 +msgid "Use (.*) wildcards to detect parts of UA strings." +msgstr "使用 (.*) 來選取字串中要被排除的部份" + +#: inc/classes/admin/settings/class-page.php:1203 +msgid "" +"Specify URLs you always want purged from cache whenever you update any post " +"or page (one per line)" +msgstr "當文章或頁面更新時,自動清除此頁面中的快取(每行一個)" + +#: inc/classes/admin/settings/class-page.php:1212 +msgid "Specify query strings for caching (one per line)" +msgstr "列出可以被快取的查詢字串 (每行一個)" + +#: inc/classes/admin/settings/class-page.php:1240 +#: inc/deprecated/deprecated.php:1777 +msgid "Database" +msgstr "資料庫" + +#: inc/classes/admin/settings/class-page.php:1241 +msgid "Optimize, reduce bloat" +msgstr "優化減少資料肥大" + +#: inc/classes/admin/settings/class-page.php:1250 +msgid "Post Cleanup" +msgstr "文章清理" + +#: inc/classes/admin/settings/class-page.php:1252 +msgid "" +"Post revisions and drafts will be permanently deleted. Do not use this " +"option if you need to retain revisions or drafts." +msgstr "文章版本與草稿將會被刪除。如果你需要還原版本或草稿,不要使用此功能。" + +#: inc/classes/admin/settings/class-page.php:1260 +msgid "Comments Cleanup" +msgstr "迴響清理" + +#: inc/classes/admin/settings/class-page.php:1262 +msgid "Spam and trashed comments will be permanently deleted." +msgstr "垃圾留言將被刪除。" + +#: inc/classes/admin/settings/class-page.php:1266 +msgid "Transients Cleanup" +msgstr "臨時選項清理" + +#: inc/classes/admin/settings/class-page.php:1268 +msgid "" +"Transients are temporary options; they are safe to remove. They will be " +"automatically regenerated as your plugins require them." +msgstr "臨時選項可以安心移除,他們是由外掛所自動產生的。" + +#: inc/classes/admin/settings/class-page.php:1272 +msgid "Database Cleanup" +msgstr "資料庫清理" + +#: inc/classes/admin/settings/class-page.php:1274 +msgid "Reduces overhead of database tables" +msgstr "減少過大的資料表" + +#: inc/classes/admin/settings/class-page.php:1278 +msgid "Automatic cleanup" +msgstr "自動清理" + +#: inc/classes/admin/settings/class-page.php:1291 +#, php-format +msgid "%s revision in your database." +msgid_plural "%s revisions in your database." +msgstr[0] "" + +#: inc/classes/admin/settings/class-page.php:1301 +#, php-format +msgid "%s draft in your database." +msgid_plural "%s drafts in your database." +msgstr[0] "" + +#: inc/classes/admin/settings/class-page.php:1311 +#, php-format +msgid "%s trashed post in your database." +msgid_plural "%s trashed posts in your database." +msgstr[0] "" + +#: inc/classes/admin/settings/class-page.php:1321 +#, php-format +msgid "%s spam comment in your database." +msgid_plural "%s spam comments in your database." +msgstr[0] "" + +#: inc/classes/admin/settings/class-page.php:1331 +#, php-format +msgid "%s trashed comment in your database." +msgid_plural "%s trashed comments in your database." +msgstr[0] "" + +#: inc/classes/admin/settings/class-page.php:1341 +#, php-format +msgid "%s expired transient in your database." +msgid_plural "%s expired transients in your database." +msgstr[0] "" + +#: inc/classes/admin/settings/class-page.php:1349 +msgid "All transients" +msgstr "所有臨時選項" + +#: inc/classes/admin/settings/class-page.php:1351 +#, php-format +msgid "%s transient in your database." +msgid_plural "%s transients in your database." +msgstr[0] "" + +#: inc/classes/admin/settings/class-page.php:1359 +msgid "Optimize Tables" +msgstr "最佳化資料表" + +#: inc/classes/admin/settings/class-page.php:1361 +#, php-format +msgid "%s table to optimize in your database." +msgid_plural "%s tables to optimize in your database." +msgstr[0] "" + +#: inc/classes/admin/settings/class-page.php:1372 +msgid "Schedule Automatic Cleanup" +msgstr "排程自動清理" + +#: inc/classes/admin/settings/class-page.php:1384 +msgid "Frequency" +msgstr "頻率" + +#: inc/classes/admin/settings/class-page.php:1392 +msgid "Daily" +msgstr "每天" + +#: inc/classes/admin/settings/class-page.php:1393 +msgid "Weekly" +msgstr "每週" + +#: inc/classes/admin/settings/class-page.php:1394 +msgid "Monthly" +msgstr "每月" + +#: inc/classes/admin/settings/class-page.php:1414 +msgid "Integrate your CDN" +msgstr "整合你的 CDN 服務" + +#: inc/classes/admin/settings/class-page.php:1426 +msgid "" +"All URLs of static files (CSS, JS, images) will be rewritten to the CNAME(s)" +" you provide." +msgstr "所有靜態資源(CSS, JS, 圖片)的網址將會被下方的 CNAME 所覆寫。" + +#: inc/classes/admin/settings/class-page.php:1428 +#, php-format +msgid "" +"Not required for services like Cloudflare and Sucuri. Please see our " +"available %1$sAdd-ons%2$s." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1469 +#, php-format +msgid "" +"%1$s%2$s Add-on%3$s is currently enabled. Configuration of the CDN settings " +"is not required for %2$s to work on your site." +msgid_plural "" +"%1$s%2$s Add-ons%3$s are currently enabled. Configuration of the CDN " +"settings is not required for %2$s to work on your site." +msgstr[0] "" + +#: inc/classes/admin/settings/class-page.php:1484 +msgid "Enable Content Delivery Network" +msgstr "啟用內容傳遞網路 CDN" + +#: inc/classes/admin/settings/class-page.php:1493 +msgid "CDN CNAME(s)" +msgstr "CDN CNAME(S):" + +#: inc/classes/admin/settings/class-page.php:1494 +msgid "Specify the CNAME(s) below" +msgstr "在下方指定 CNAME(s)" + +#: inc/classes/admin/settings/class-page.php:1501 +msgid "" +"Specify URL(s) of files that should not get served via CDN (one per line)." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1502 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*) " +"wildcards to exclude all files of a given file type located at a specific " +"path." +msgstr "將自動截取網址中主網域的部份。
      使用(.*)來排除在指定路徑下的特定檔案類型。" + +#: inc/classes/admin/settings/class-page.php:1525 +#: inc/classes/admin/settings/class-page.php:1533 +msgid "Heartbeat" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1526 +msgid "Control WordPress Heartbeat API" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1534 +msgid "" +"Reducing or disabling the Heartbeat API’s activity can help save some of " +"your server’s resources." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1543 +msgid "Reduce or disable Heartbeat activity" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1544 +msgid "" +"Reducing activity will change Heartbeat frequency from one hit each minute " +"to one hit every 2 minutes." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1544 +msgid "" +"Disabling Heartbeat entirely may break plugins and themes using this API." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1558 +msgid "Do not limit" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1559 +msgid "Reduce activity" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1560 +msgid "Disable" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1568 +msgid "Control Heartbeat" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1577 +msgid "Behavior in backend" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1584 +msgid "Behavior in post editor" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1590 +msgid "Behavior in frontend" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1609 +msgid "Add-ons" +msgstr "附加功能" + +#: inc/classes/admin/settings/class-page.php:1610 +msgid "Add more features" +msgstr "新增更多功能" + +#: inc/classes/admin/settings/class-page.php:1617 +msgid "One-click Rocket Add-ons" +msgstr "一鍵安裝 WP Rocket 附加功能" + +#: inc/classes/admin/settings/class-page.php:1618 +msgid "" +"One-Click Add-ons are features extending available options without " +"configuration needed. Switch the option \"on\" to enable from this screen." +msgstr "一鍵安裝可以在不用額外設定就能取得更多功能。在此畫面中選擇「啟用」。" + +#: inc/classes/admin/settings/class-page.php:1628 +msgid "Rocket Add-ons" +msgstr "WP Rocket 附加功能" + +#: inc/classes/admin/settings/class-page.php:1629 +msgid "Rocket Add-ons are complementary features extending available options." +msgstr "WP Rocket 附加功能可以增強更多設定內容。" + +#: inc/classes/admin/settings/class-page.php:1642 +msgid "Google Tracking" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1648 +msgid "Improve browser caching for Google Analytics" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1650 +#, php-format +msgid "" +"WP Rocket will host these Google scripts locally on your server to help " +"satisfy the PageSpeed recommendation for Leverage browser " +"caching.
      %1$sLearn more%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1665 +msgid "Facebook Pixel" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1671 +msgid "Improve browser caching for Facebook Pixel" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1673 +#, php-format +msgid "" +"WP Rocket will host these Facebook Pixels locally on your server to help " +"satisfy the PageSpeed recommendation for Leverage browser " +"caching.
      %1$sLearn more%2$s" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1706 +msgid "Varnish" +msgstr "Varnish 快取" + +#: inc/classes/admin/settings/class-page.php:1712 +msgid "If Varnish runs on your server, you must activate this add-on." +msgstr "如果你的伺服器正在使用 Varnish 快取,你必須啟用此選項。" + +#: inc/classes/admin/settings/class-page.php:1714 +#, php-format +msgid "" +"Varnish cache will be purged each time WP Rocket clears its cache to ensure " +"content is always up-to-date.
      %1$sLearn more%2$s" +msgstr "當 WP Rocket 快取需要清除時,Varnish 快取將同時被清除以確保最新內容。
      %1$s了解更多%2$s" + +#: inc/classes/admin/settings/class-page.php:1729 +#: inc/classes/admin/settings/class-page.php:1789 +msgid "Cloudflare" +msgstr "Cloudflare" + +#: inc/classes/admin/settings/class-page.php:1735 +msgid "Integrate your Cloudflare account with this add-on." +msgstr "使用此工具整合 Cloudflare 設定" + +#: inc/classes/admin/settings/class-page.php:1736 +msgid "" +"Provide your account email, global API key, and domain to use options such " +"as clearing the Cloudflare cache and enabling optimal settings with WP " +"Rocket." +msgstr "請提供 Cloudflare 的帳戶電子郵件、API 金鑰以及網址來整合相關設定至 WP Rocket。" + +#: inc/classes/admin/settings/class-page.php:1748 +msgid "Clear the Sucuri cache when WP Rocket’s cache is cleared." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1751 +msgid "" +"Provide your API key to clear the Sucuri cache when WP Rocket’s cache is " +"cleared." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1759 +#: inc/classes/admin/settings/class-page.php:1907 +msgid "Sucuri" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1765 +msgid "Synchronize Sucuri cache with this add-on." +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1805 +msgid "Cloudflare credentials" +msgstr " CloudFlare 授權" + +#: inc/classes/admin/settings/class-page.php:1814 +msgid "Cloudflare settings" +msgstr "CloudFlare 設定" + +#: inc/classes/admin/settings/class-page.php:1828 +msgctxt "Cloudflare" +msgid "Global API key:" +msgstr "全域 API 金鑰:" + +#: inc/classes/admin/settings/class-page.php:1829 +msgid "" +"https://support.cloudflare.com/hc/en-us/articles/200167836-Where-do-I-find-" +"my-Cloudflare-API-key-" +msgstr "" +"https://support.cloudflare.com/hc/en-us/articles/200167836-Where-do-I-find-" +"my-Cloudflare-API-key-" + +#: inc/classes/admin/settings/class-page.php:1829 +msgctxt "Cloudflare" +msgid "Find your API key" +msgstr "尋找 API 金鑰" + +#: inc/classes/admin/settings/class-page.php:1841 +msgctxt "Cloudflare" +msgid "Account email" +msgstr "CloudFlare 帳號:" + +#: inc/classes/admin/settings/class-page.php:1850 +msgctxt "Cloudflare" +msgid "Zone ID" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1860 +msgid "Development mode" +msgstr "開發模式" + +#: inc/classes/admin/settings/class-page.php:1862 +#, php-format +msgid "" +"Temporarily activate development mode on your website. This setting will " +"automatically turn off after 3 hours. %1$sLearn more%2$s" +msgstr "你的網站暫時進入維護模式,如果不手動調整的話,3小時後會自動結束維護模式。%1$s了解更多%2$s" + +#: inc/classes/admin/settings/class-page.php:1870 +msgid "Optimal settings" +msgstr "最佳化設定" + +#: inc/classes/admin/settings/class-page.php:1871 +msgid "" +"Automatically enhances your Cloudflare configuration for speed, performance " +"grade and compatibility." +msgstr "在速度、效能以及穩定性上,自動最佳化你的 Cloudflare 設定。" + +#: inc/classes/admin/settings/class-page.php:1879 +msgid "Relative protocol" +msgstr "相對協定" + +#: inc/classes/admin/settings/class-page.php:1880 +msgid "" +"Should only be used with Cloudflare's flexible SSL feature. URLs of static " +"files (CSS, JS, images) will be rewritten to use // instead of http:// or " +"https://." +msgstr "" +"僅可使用 Cloudflare 中的 Flexible SSL 加密協定, 靜態資源( CSS、JS、圖片 )的網址將會使用 // 來取代 " +"http:// 或是 https://。" + +#: inc/classes/admin/settings/class-page.php:1920 +msgid "Sucuri credentials" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1933 +msgctxt "Sucuri" +msgid "" +"Firewall API key (for plugin), must be in format {32 characters}/{32 " +"characters}:" +msgstr "" + +#: inc/classes/admin/settings/class-page.php:1934 +msgctxt "Sucuri" +msgid "Find your API key" +msgstr "尋找 API 金鑰" + +#: inc/classes/admin/settings/class-render.php:486 +#: inc/deprecated/deprecated.php:1296 +msgid "Upload file and import settings" +msgstr "上傳檔案並匯入設定" + +#: inc/classes/admin/settings/class-settings.php:385 +msgid "" +"Sucuri Add-on: The API key for the Sucuri firewall must be in format " +"{32 characters}/{32 characters}." +msgstr "" + +#: inc/classes/admin/settings/class-settings.php:462 +#: inc/deprecated/deprecated.php:1247 +msgid "Settings saved." +msgstr "設定已儲存。" + +#: inc/classes/class-wp-rocket-requirements-check.php:148 +#, php-format +msgid "To function properly, %1$s %2$s requires at least:" +msgstr "為了能運作正常,%1$s%2$s至少一個必填:" + +#: inc/classes/class-wp-rocket-requirements-check.php:152 +#, php-format +msgid "" +"PHP %1$s. To use this WP Rocket version, please ask your web host how to " +"upgrade your server to PHP %1$s or higher." +msgstr "PHP%1$s。要使用這個版本的 WP Rocket,請先聯絡你的網站主機商將 PHP 版本升級為%1$s或更高。" + +#: inc/classes/class-wp-rocket-requirements-check.php:157 +#, php-format +msgid "" +"WordPress %1$s. To use this WP Rocket version, please upgrade WordPress to " +"version %1$s or higher." +msgstr "WordPress%1$s。要使用這個版本的 WP Rocket,請將 WordPress 版本升級到%1$s或更高。" + +#: inc/classes/class-wp-rocket-requirements-check.php:160 +msgid "" +"If you are not able to upgrade, you can rollback to the previous version by " +"using the button below." +msgstr "如果你無法升級,你可以使用下方的按鈕來還原先前的版本。" + +#: inc/classes/class-wp-rocket-requirements-check.php:162 +#: inc/deprecated/deprecated.php:1949 +#, php-format +msgid "Re-install version %s" +msgstr "重新安裝版本 %s" + +#: inc/classes/logger/class-logger.php:253 +#: inc/classes/logger/class-logger.php:285 +msgid "The log file does not exist." +msgstr "" + +#: inc/classes/logger/class-logger.php:259 +#: inc/classes/logger/class-logger.php:291 +msgid "The log file could not be read." +msgstr "" + +#: inc/classes/logger/class-logger.php:278 +msgid "The logs are not saved into a file." +msgstr "" + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:88 +#: inc/classes/optimization/CSS/class-critical-css-generation.php:99 +#: inc/classes/optimization/CSS/class-critical-css-generation.php:110 +#: inc/classes/optimization/CSS/class-critical-css-generation.php:120 +#: inc/classes/optimization/CSS/class-critical-css-generation.php:142 +#, php-format +msgid "Critical CSS for %1$s not generated. Error: %2$s" +msgstr " %1$s的 Critical CSS 未產生。錯誤訊息:%2$s" + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:99 +msgid "The API returned an invalid response code." +msgstr "API 返回一個錯誤的回應。" + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:110 +msgid "The API returned an empty response." +msgstr "API 返回一個空的回應。" + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:145 +#, php-format +msgid "The critical CSS content could not be saved as a file in %s." +msgstr "Critical CSS 無法儲存於%s檔案中。" + +#: inc/classes/optimization/CSS/class-critical-css-generation.php:154 +#, php-format +msgid "Critical CSS for %s generated." +msgstr " %s 的 Critical CSS 已產生。" + +#: inc/classes/preload/class-homepage.php:83 +#, php-format +msgid "" +"Preload encountered an error. Could not gather links on %1$s because of the " +"following error: %2$s. %3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-homepage.php:96 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: %2$s. Security measures could be preventing access. " +"%3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-homepage.php:102 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: 404. Please make sure your homepage is accessible in your " +"browser. %2$sLearn more%3$s." +msgstr "" + +#: inc/classes/preload/class-homepage.php:108 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following" +" response code: 500. Please check with your web host about server access. " +"%2$sLearn more%3$s." +msgstr "" + +#: inc/classes/preload/class-homepage.php:114 +#, php-format +msgid "" +"Preload encountered an error. Could not gather links on %1$s because it " +"returned the following response code: %2$s. %3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:138 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not gather links on %1$s because" +" of the following error: %2$s. %3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:153 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: %2$s. Security measures could be preventing access." +" %3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:158 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: 404. Please make sure you entered the correct " +"sitemap URL and it is accessible in your browser. %2$sLearn more%3$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:163 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: 500. Please check with your web host about server " +"access. %2$sLearn more%3$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:168 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not gather links on %1$s because" +" it returned the following response code: %2$s. %3$sLearn more%4$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:184 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not collect links from %1$s " +"because the file is empty. %2$sLearn more%3$s." +msgstr "" + +#: inc/classes/preload/class-sitemap.php:205 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not collect links from %1$s " +"because of an error during the XML sitemap parsing. %2$sLearn more%3$s." +msgstr "" + +#: inc/classes/subscriber/Optimization/class-critical-css-subscriber.php:138 +#, php-format +msgid "" +"Critical CSS generation is currently running: %1$d of %2$d page types " +"completed. (Refresh this page to view progress)" +msgstr "產生 Critical CSS 目前正在執行 : %1$d 之 %2$d 已完成(重整頁面以查看進度)" + +#: inc/classes/subscriber/Optimization/class-critical-css-subscriber.php:189 +#, php-format +msgid "Critical CSS generation finished for %1$d of %2$d page types." +msgstr "Critical CSS 已產生完畢。 %1$d 之 %2$d 頁面。" + +#: inc/classes/subscriber/Optimization/class-critical-css-subscriber.php:203 +msgid "Critical CSS generation encountered one or more errors." +msgstr "" + +#: inc/classes/subscriber/Optimization/class-critical-css-subscriber.php:203 +msgid "Learn more." +msgstr "" + +#: inc/classes/subscriber/Tools/class-cache-dir-size-check-subscriber.php:51 +#: inc/classes/subscriber/class-facebook-tracking-cache-busting-subscriber.php:97 +#: inc/classes/subscriber/class-google-tracking-cache-busting-subscriber.php:154 +#: inc/common/cron.php:33 +msgid "weekly" +msgstr "每週" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:148 +msgid "Database optimization process is running" +msgstr "資料庫最佳化程序正在執行..." + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:179 +msgid "" +"Database optimization process is complete. Everything was already optimized!" +msgstr "資料庫最佳化已完成。所有內容已被最佳化!" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:182 +msgid "" +"Database optimization process is complete. List of optimized items below:" +msgstr "資料庫最佳化已完成。已優化清單如下:" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:190 +#, php-format +msgid "%1$d %2$s optimized." +msgstr "%1$d %2$s 最佳化。" + +#: inc/classes/subscriber/admin/Settings/class-page-subscriber.php:137 +#: inc/deprecated/deprecated.php:1788 +#: views/settings/page-sections/tools.php:33 +msgid "Tools" +msgstr "工具" + +#: inc/classes/subscriber/admin/Settings/class-page-subscriber.php:138 +msgid "Import, Export, Rollback" +msgstr "匯入、匯出、還原" + +#: inc/classes/subscriber/admin/Settings/class-page-subscriber.php:160 +#: views/settings/page-sections/imagify.php:13 +msgid "Image Optimization" +msgstr "" + +#: inc/classes/subscriber/admin/Settings/class-page-subscriber.php:161 +msgid "Compress your images" +msgstr "" + +#: inc/classes/subscriber/preload/class-preload-subscriber.php:212 +#, php-format +msgid "" +"Preload: WP Rocket has started preloading your website. Go to the %1$sWP " +"Rocket settings%2$s page to track progress." +msgstr "" + +#: inc/classes/subscriber/preload/class-preload-subscriber.php:246 +#, php-format +msgid "" +"Preload: %1$s uncached page has now been preloaded. (refresh to see " +"progress)" +msgid_plural "" +"Preload: %1$s uncached pages have now been preloaded. (refresh to see " +"progress)" +msgstr[0] "" + +#: inc/classes/subscriber/preload/class-preload-subscriber.php:255 +msgid "The following error happened during gathering of the URLs to preload:" +msgid_plural "" +"The following errors happened during gathering of the URLs to preload:" +msgstr[0] "" + +#: inc/classes/subscriber/preload/class-preload-subscriber.php:308 +#, php-format +msgid "Preload complete: %d pages have been cached." +msgstr "" + +#: inc/classes/subscriber/preload/class-sitemap-preload-subscriber.php:117 +#, php-format +msgid "" +"%1$sSimpleXML PHP extension%2$s is not enabled on your server. Please " +"contact your host to enable it before running sitemap-based cache " +"preloading." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:72 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"Please deactivate the following %s option which conflicts with WP Rocket " +"features:" +msgid_plural "" +"Please deactivate the following %s options which conflict with WP Rocket " +"features:" +msgstr[0] "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:145 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sdisable emoji%3$s conflicts with WP Rockets %2$sdisable emoji%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:167 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sremove query strings%3$s conflicts with WP Rocket %2$sremove query " +"strings%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:203 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sGZIP compression%3$s conflicts with WP Rocket %2$sGZIP " +"compression%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:239 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sbrowser caching%3$s conflicts with WP Rocket %2$sbrowser " +"caching%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:271 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$spage caching%3$s conflicts with WP Rocket %2$spage caching%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/Optimization/class-hummingbird-subscriber.php:305 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sasset optimization%3$s conflicts with WP Rocket %2$sfile " +"optimization%3$s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:123 +#, php-format +msgid "Sucuri cache purge error: %s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:128 +msgid "" +"The Sucuri cache is being cleared. Note that it may take up to two minutes " +"for it to be fully flushed." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:242 +msgid "Sucuri firewall API key was not found." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:251 +msgid "Sucuri firewall API key is invalid." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:303 +msgid "Error when contacting Sucuri firewall API." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:313 +#, php-format +msgid "Error when contacting Sucuri firewall API. Error message was: %s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:324 +msgid "Could not get a response from the Sucuri firewall API." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:335 +msgid "Got an invalid response from the Sucuri firewall API." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:345 +msgid "The Sucuri firewall API returned an unknown error." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:348 +#, php-format +msgid "The Sucuri firewall API returned the following error: %s" +msgid_plural "The Sucuri firewall API returned the following errors: %s" +msgstr[0] "" + +#: inc/classes/traits/trait-updater-api-tools.php:53 +#: inc/deprecated/3.3.php:760 inc/deprecated/3.3.php:769 +#, php-format +msgid "" +"An unexpected error occurred. Something may be wrong with WP-Rocket.me or " +"this server’s configuration. If you continue to have problems, contact support." +msgstr "發生意料之外的錯誤。WP-Rocket.me 或此伺服器設定可能有誤。如果問題持續發生,請尋求支援。" + +#: inc/common/admin-bar.php:106 inc/common/admin-bar.php:260 +#: inc/functions/i18n.php:39 inc/functions/i18n.php:48 +msgid "All languages" +msgstr "所有語言" + +#: inc/common/admin-bar.php:133 +msgid "Clear this post" +msgstr "清除這篇文章" + +#: inc/common/admin-bar.php:147 +msgid "Purge this URL" +msgstr "清除這個網址" + +#: inc/common/admin-bar.php:163 +msgid "Purge OPcache" +msgstr "清除 OPcache" + +#: inc/common/admin-bar.php:180 +msgid "Regenerate Critical Path CSS" +msgstr "重新產生 Critical Path CSS" + +#: inc/common/admin-bar.php:196 +msgid "Clear Cloudflare cache" +msgstr "清理 CloudFlare 快取" + +#: inc/common/admin-bar.php:217 inc/common/admin-bar.php:272 +#: views/settings/page-sections/dashboard.php:135 +msgid "Preload cache" +msgstr "預先載入快取" + +#: inc/common/admin-bar.php:287 views/settings/partials/documentation.php:13 +msgid "Documentation" +msgstr "說明文件" + +#: inc/common/cron.php:24 +#, php-format +msgid "%s clear" +msgstr "%s 清除" + +#: inc/common/cron.php:39 +msgid "monthly" +msgstr "每月" + +#: inc/common/purge.php:456 +#, php-format +msgid "Cloudflare cache purge error: %s" +msgstr "CloudFlare 快取清除錯誤: %s" + +#: inc/common/purge.php:461 +msgid "Cloudflare cache successfully purged" +msgstr "CloudFlare 快取清除成功" + +#: inc/deprecated/3.2.php:51 views/settings/page-sections/imagify.php:35 +msgid "Activate Imagify" +msgstr "啟用 Imagify" + +#: inc/deprecated/3.2.php:51 +msgid "Install Imagify for Free" +msgstr "免費安裝 Imagify" + +#: inc/deprecated/3.2.php:66 +msgid "" +"Speed up your website and boost your SEO by reducing image file sizes " +"without losing quality with Imagify." +msgstr "使用 Imagify 自動壓縮圖片容量." + +#: inc/deprecated/3.2.php:71 +msgid "More details" +msgstr "了解更多" + +#: inc/deprecated/3.2.php:227 +#, php-format +msgid "Sitemap preload: %d pages have been cached." +msgstr "預先載入網站地圖: %d 頁面已加入快取。" + +#: inc/deprecated/3.2.php:260 +#, php-format +msgid "" +"Sitemap preload: %d uncached pages have now been preloaded. (refresh to see " +"progress)" +msgstr "預先載入網站地圖: %d 尚未被快取的頁面現在已被預先加載。(重整頁面檢視進度)" + +#: inc/deprecated/deprecated.php:242 +msgid "JS files with Deferred Loading JavaScript" +msgstr "延遲載入JavaScript 檔案" + +#: inc/deprecated/deprecated.php:295 +msgid "Add URL" +msgstr "新增網址" + +#: inc/deprecated/deprecated.php:1279 views/settings/fields/import-form.php:22 +msgid "" +"Before you can upload your import file, you will need to fix the following " +"error:" +msgstr "在上傳你的設定檔前,你必須先修復以下問題:" + +#: inc/deprecated/deprecated.php:1290 views/settings/fields/import-form.php:35 +#, php-format +msgid "Choose a file from your computer (maximum size: %s)" +msgstr "從你的電腦選擇一個檔案 (檔案上限為 %s )" + +#: inc/deprecated/deprecated.php:1387 +msgid "Your Cloudflare credentials are valid." +msgstr "您的 CloudFlare 授權已認證通過." + +#: inc/deprecated/deprecated.php:1391 +msgid "Your Cloudflare credentials are invalid!" +msgstr "您的 CloudFlare 授權認證失敗!" + +#: inc/deprecated/deprecated.php:1455 +msgid "Save and optimize" +msgstr "儲存並最佳化" + +#: inc/deprecated/deprecated.php:1455 +#: views/settings/page-sections/database.php:27 +msgid "Optimize" +msgstr "最佳化" + +#: inc/deprecated/deprecated.php:1466 inc/deprecated/deprecated.php:1668 +msgctxt "screen-reader-text" +msgid "Note:" +msgstr "注意:" + +#: inc/deprecated/deprecated.php:1472 +msgctxt "screen-reader-text" +msgid "Performance tip:" +msgstr "效能優化小秘訣:" + +#: inc/deprecated/deprecated.php:1478 +msgctxt "screen-reader-text" +msgid "Third-party feature detected:" +msgstr "檢測到第三方功能:" + +#: inc/deprecated/deprecated.php:1490 inc/deprecated/deprecated.php:1674 +msgctxt "screen-reader-text" +msgid "Warning:" +msgstr "警告:" + +#: inc/deprecated/deprecated.php:1503 +msgctxt "button text" +msgid "Download settings" +msgstr "下載設定" + +#: inc/deprecated/deprecated.php:1533 +msgid "Replace site's hostname with:" +msgstr "將網站網址重新設定為:" + +#: inc/deprecated/deprecated.php:1552 inc/deprecated/deprecated.php:1589 +#: inc/deprecated/deprecated.php:1617 views/settings/fields/cnames.php:32 +#: views/settings/fields/cnames.php:63 views/settings/fields/cnames.php:93 +msgid "reserved for" +msgstr "套用到" + +#: inc/deprecated/deprecated.php:1554 inc/deprecated/deprecated.php:1591 +#: inc/deprecated/deprecated.php:1619 views/settings/fields/cnames.php:35 +#: views/settings/fields/cnames.php:66 views/settings/fields/cnames.php:96 +msgid "All files" +msgstr "所有檔案" + +#: inc/deprecated/deprecated.php:1566 inc/deprecated/deprecated.php:1596 +#: inc/deprecated/deprecated.php:1624 views/settings/fields/cnames.php:47 +#: views/settings/fields/cnames.php:78 views/settings/fields/cnames.php:108 +msgid "Images" +msgstr "圖片" + +#: inc/deprecated/deprecated.php:1637 views/settings/fields/cnames.php:119 +msgid "Add CNAME" +msgstr "新增 CNAME" + +#: inc/deprecated/deprecated.php:1708 +msgid "Watch the video" +msgstr "觀看影片" + +#: inc/deprecated/deprecated.php:1773 +msgid "Basic" +msgstr "基本" + +#: inc/deprecated/deprecated.php:1774 +msgid "Static Files" +msgstr "靜態資源" + +#: inc/deprecated/deprecated.php:1776 +msgid "Advanced" +msgstr "進階" + +#: inc/deprecated/deprecated.php:1946 +#, php-format +msgid "" +"%1$s %2$s requires at least PHP %3$s to function properly. To use this " +"version, please ask your web host how to upgrade your server to PHP %3$s or " +"higher. If you are not able to upgrade, you can rollback to the previous " +"version by using the button below." +msgstr "" +"%1$s %2$s 至少要求 PHP %3$s 來正常運作。為使用此版本,請聯絡您的網站主機商並升級為 PHP %3$s " +"或是更高版本。如果您無法升級,請使用下方按鈕來恢復較早的 WP Rocket 版本。" + +#: inc/functions/admin.php:23 +msgid "" +"There seems to be an issue validating your license. Please see the error " +"message below." +msgid_plural "" +"There seems to be an issue validating your license. You can see the error " +"messages below." +msgstr[0] "" + +#: inc/functions/admin.php:361 +msgid "Server type:" +msgstr "伺服器類型:" + +#: inc/functions/admin.php:370 +msgid "PHP version number:" +msgstr "PHP 版本號:" + +#: inc/functions/admin.php:379 +msgid "WordPress version number:" +msgstr "WordPress 版本號:" + +#: inc/functions/admin.php:388 +msgid "WordPress multisite:" +msgstr "WordPress 網誌網路:" + +#: inc/functions/admin.php:397 +msgid "Current theme:" +msgstr "目前佈景主題:" + +#: inc/functions/admin.php:406 +msgid "Current site language:" +msgstr "目前網站語系:" + +#: inc/functions/admin.php:415 +msgid "Active plugins:" +msgstr "啟用外掛:" + +#: inc/functions/admin.php:418 +msgid "Plugin names of all active plugins" +msgstr "所有啟用的外掛名稱" + +#: inc/functions/admin.php:424 +msgid "Anonymized WP Rocket settings:" +msgstr "隱藏 WP Rocket 設定:" + +#: inc/functions/admin.php:427 +msgid "Which WP Rocket settings are active" +msgstr "WP Rocket 設定已啟用" + +#: inc/functions/cloudflare.php:14 +msgid "" +"Curl functions are disabled, they are required for the Cloudflare Add-on to " +"work correctly." +msgstr "" + +#: inc/functions/cloudflare.php:21 +msgid "Cloudflare Email and API key are not set" +msgstr "CloudFlare Email 與 API 金鑰尚未設定" + +#: inc/functions/cloudflare.php:52 +#, php-format +msgid "Missing Cloudflare zone ID. %s could not fix this automatically." +msgstr "遺失 Cloudflare 的 zone ID. %s 無法自動修復此問題。" + +#: inc/functions/cloudflare.php:58 +#, php-format +msgid "Read the %1$sdocumentation%2$s for further guidance." +msgstr "查看 %1$s文件%2$s 以取得更多說明。" + +#: inc/functions/cloudflare.php:60 +msgid "" +"https://docs.wp-rocket.me/article/18-using-wp-rocket-with-" +"cloudflare/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://docs.wp-rocket.me/article/18-using-wp-rocket-with-" +"cloudflare/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: inc/functions/cloudflare.php:100 +msgid "Connection to Cloudflare failed" +msgstr "連結 CloudFlare 失敗" + +#: inc/functions/cloudflare.php:122 +msgid "Choose a domain from the list" +msgstr "從清單中選擇網址" + +#: inc/functions/cloudflare.php:135 +msgid "No domain available in your Cloudflare account" +msgstr "在您的 CloudFlare 帳戶中沒有網址可供選擇" + +#: inc/functions/options.php:580 inc/functions/options.php:619 +msgid "" +"License validation failed. Our server could not resolve the request from " +"your website." +msgstr "" + +#: inc/functions/options.php:580 inc/functions/options.php:619 +#, php-format +msgid "" +"Try clicking %1$sSave Changes%2$s below. If the error persists, follow " +"%3$sthis guide%4$s." +msgstr "" + +#: inc/functions/options.php:596 +msgid "" +"License validation failed. You may be using a nulled version of the plugin. " +"Please do the following:" +msgstr "" + +#: inc/functions/options.php:596 inc/functions/options.php:638 +#, php-format +msgid "Login to your WP Rocket %1$saccount%2$s" +msgstr "" + +#: inc/functions/options.php:596 inc/functions/options.php:638 +msgid "Download the zip file" +msgstr "" + +#: inc/functions/options.php:596 inc/functions/options.php:638 +msgid "Reinstall" +msgstr "" + +#: inc/functions/options.php:596 +#, php-format +msgid "" +"If you do not have a WP Rocket account, please %1$spurchase a license%2$s." +msgstr "" + +#: inc/functions/options.php:604 +msgid "" +"License validation failed. This user account does not exist in our database." +msgstr "" + +#: inc/functions/options.php:604 +msgid "To resolve, please contact support." +msgstr "" + +#: inc/functions/options.php:612 +msgid "License validation failed. This user account is blacklisted." +msgstr "" + +#: inc/functions/options.php:612 +#, php-format +msgid "Please see %1$sthis guide%2$s for more info." +msgstr "" + +#: inc/functions/options.php:632 +msgid "Your license is not valid." +msgstr "你的註冊碼無效。" + +#: inc/functions/options.php:632 +#, php-format +msgid "Make sure you have an active %1$sWP Rocket license%2$s." +msgstr "" + +#: inc/functions/options.php:634 +msgid "You have added as many sites as your current license allows." +msgstr "" + +#: inc/functions/options.php:634 +#, php-format +msgid "" +"Upgrade your %1$saccount%2$s or %3$stransfer your license%2$s to this " +"domain." +msgstr "" + +#: inc/functions/options.php:636 +msgid "This website is not allowed." +msgstr "這個網站是不允許的。" + +#: inc/functions/options.php:636 +#, php-format +msgid "Please %1$scontact support%2$s." +msgstr "" + +#: inc/functions/options.php:638 +msgid "This license key is not recognized." +msgstr "" + +#: inc/functions/options.php:638 +#, php-format +msgid "If the issue persists, please %1$scontact support%2$s." +msgstr "" + +#: inc/functions/options.php:644 +#, php-format +msgid "License validation failed: %s" +msgstr "" + +#: inc/vendors/classes/class-imagify-partner.php:531 +msgid "Plugin installed successfully." +msgstr "" + +#: inc/vendors/classes/class-imagify-partner.php:532 +msgid "Sorry, you are not allowed to install plugins on this site." +msgstr "" + +#: inc/vendors/classes/class-imagify-partner.php:533 +msgid "Sorry, you are not allowed to do that." +msgstr "" + +#: inc/vendors/classes/class-imagify-partner.php:534 +msgid "Plugin install failed." +msgstr "" + +#: inc/vendors/classes/class-imagify-partner.php:535 +msgid "Go back" +msgstr "" + +#: views/deactivation-intent/form.php:20 +msgid "Return" +msgstr "返回" + +#: views/deactivation-intent/form.php:21 +msgid "WP Rocket feedback" +msgstr "WP Rocket 意見回饋" + +#: views/deactivation-intent/form.php:23 +msgid "Close" +msgstr "關閉" + +#: views/deactivation-intent/form.php:27 +msgid "May we have a little info about why you are deactivating?" +msgstr "可否請教您為何停用嗎?" + +#: views/deactivation-intent/form.php:31 +msgid "" +"It is a temporary deactivation. I am just debugging an " +"issue." +msgstr "這是暫時性的停用。我只是在進行除錯。" + +#: views/deactivation-intent/form.php:35 +msgid "The plugin broke my layout or some functionality." +msgstr "這外掛讓頁面跑版或是其它功能發生問題。" + +#: views/deactivation-intent/form.php:39 +msgid "My PageSpeed or GTMetrix score did not improve." +msgstr "我在 PageSpeed 或是 GTMetrix 的效能評分並未有改善" + +#: views/deactivation-intent/form.php:43 +msgid "I did not notice a difference in loading time." +msgstr "我並無發現在頁面載入上有任何的差異。" + +#: views/deactivation-intent/form.php:47 +msgid "The plugin is too complicated to configure." +msgstr "這外掛設定項太多大複雜不知道該怎麼設定。" + +#: views/deactivation-intent/form.php:51 +msgid "My host already has its own caching system." +msgstr "我的主機已經有做快取了。" + +#: views/deactivation-intent/form.php:53 +msgid "What is the name of your web host?" +msgstr "您的主機商是?" + +#: views/deactivation-intent/form.php:58 +msgid "Other" +msgstr "其它" + +#: views/deactivation-intent/form.php:60 +msgid "" +"Let us know why you are deactivating WP Rocket so we can improve the plugin" +msgstr "讓我們知道您為何停用 WP Rocket 以便我們進行改善" + +#: views/deactivation-intent/form.php:68 +msgid "The plugin broke my layout or some functionality" +msgstr "這外掛讓頁面跑版或是其它功能發生問題。" + +#: views/deactivation-intent/form.php:69 +msgid "" +"This type of issue can usually be fixed by deactivating some options in WP " +"Rocket." +msgstr "此類的問題通常只要停用幾個 WP Rocket 的設定項就能解決。" + +#: views/deactivation-intent/form.php:70 +msgid "" +"Click \"Apply Safe Mode\" to quickly disable LazyLoad, File Optimization, " +"Embeds and CDN options. Then check your site to see if the issue has " +"resolved." +msgstr "點選「安全模式」來快速關閉延遲載入、檔案優化、內嵌功能與 CDN 設定。然後再檢查看看您的網站是否正常。" + +#: views/deactivation-intent/form.php:72 +msgid "Apply safe mode" +msgstr "套用安全模式" + +#: views/deactivation-intent/form.php:75 +msgid "Safe mode applied." +msgstr "安全模式已套用。" + +#: views/deactivation-intent/form.php:76 +msgid "Review your site in a private/logged out browser window." +msgstr "在瀏覽器的無痕模式或是登出狀態下來檢視你的網站。" + +#: views/deactivation-intent/form.php:78 +msgid "" +"Is the issue fixed? Now you can reactivate options one at a time to " +"determine which one caused the problem. More info" +msgstr "" +"問題解決了嗎?現在你可以重新一個一個啟用設定來判斷是哪個選項造成問題。更多資訊" + +#: views/deactivation-intent/form.php:81 +msgid "My PageSpeed or GT Metrix score did not improve" +msgstr "我在 PageSpeed 或是 GTMetrix 的效能評分並未有所改善" + +#: views/deactivation-intent/form.php:82 +msgid "" +"WP Rocket makes your site faster. The PageSpeed grade or GTMetrix score are " +"not indicators of speed. Neither your real visitors, nor Google will ever " +"see your website’s “grade”. Speed is the only metric that matters for SEO " +"and conversions." +msgstr "" +"WP Rocket 可以讓你的網站變快。PageSpeed 或是 GTMetrix 的評分不一定代表載入速度。不管是真實使用者還是 Google " +"都不會看你網站的評分,載入速度才是 SEO 與轉換率的關鍵指標。" + +#: views/deactivation-intent/form.php:83 +msgid "Yoast, the expert on all things related to SEO for WordPress states:" +msgstr "Yoast - WordPress SEO 領域上的專業外掛:" + +#: views/deactivation-intent/form.php:84 +msgid "" +"[Google] just looks at how fast your website loads for users, so you don’t " +"have to obsess over that specific score. You have to make sure your website " +"is as fast as you can get it." +msgstr "[Google] 只會看你的網站載入時間,所以你不必特別關注評分,你必需確保你的網站能多快就多快載入。" + +#: views/deactivation-intent/form.php:87 +msgid "" +"How to measure the load time of your site:
      https" +"://wp-rocket.me/blog/correctly-measure-websites-page-load-time/" +msgstr "" +"如何測量網站載入時間:
      https://wp-rocket.me/blog/correctly-measure-websites-page-" +"load-time/" + +#: views/deactivation-intent/form.php:88 +msgid "" +"Why you should not be chasing a PageSpeed score:
      https://wp-rocket.me/blog/the-truth-about-google-" +"pagespeed-insights/" +msgstr "" +"為何你不該去追求 PageSpeed 的評分:
      https://wp-rocket.me/blog/the-truth-about-google-" +"pagespeed-insights/" + +#: views/deactivation-intent/form.php:91 +msgid "I did not notice a difference in loading time" +msgstr "我並無發現在頁面載入時間上有任何的差異。" + +#: views/deactivation-intent/form.php:92 +msgid "" +"Make sure you look at your site while logged out to see the fast, cached " +"pages!" +msgstr "請確認你在檢視網站時是在登出且有快取的狀態下瀏覽!" + +#: views/deactivation-intent/form.php:93 +msgid "" +"The best way to see the improvement WP Rocket provides is to perform speed " +"tests. Follow this guide to correctly measure the load time of your " +"website:
      https://wp-rocket.me/blog/correctly-measure-websites-page-" +"load-time/" +msgstr "" +"WP Rocket 提供的方便的測速工具,參考以下說明以測量你的網站載入速度:
      https" +"://wp-rocket.me/blog/correctly-measure-websites-page-load-time/" + +#: views/deactivation-intent/form.php:96 +msgid "The plugin is too complicated to configure" +msgstr "這外掛設定項太多大複雜,不知道該怎麼設定。" + +#: views/deactivation-intent/form.php:97 +msgid "We are sorry to hear you are finding it difficult to use WP Rocket." +msgstr "我們很抱歉讓你覺得 WP Rocket 不好操作。" + +#: views/deactivation-intent/form.php:98 +#, php-format +msgid "" +"WP Rocket is the only caching plugin that provides 80% of best practices in " +"speed optimization, by default. That means you do not have to do anything " +"besides activate WP Rocket and your site will already be faster!" +msgstr "WP Rocket 是唯一一套快取外掛在速度優化上增加了 80% ,這意味著在啟用後,你不需要進行任何額外設定就能讓網站變快!" + +#: views/deactivation-intent/form.php:99 +msgid "" +"The additional options are not required for a fast site, they are for fine-" +"tuning." +msgstr "這些額外的設定是非必要的,但能懂得如何設定會更好。" + +#: views/deactivation-intent/form.php:100 +msgid "" +"To see the benefit WP Rocket is already providing, measure the speed of your" +" site using a tool like Pingdom:
      https" +"://wp-rocket.me/blog/correctly-measure-websites-page-load-time/" +msgstr "" +"想到 WP Rocket 優化了哪些內容嗎?可以透過網站測速工具來進行測試,像是 Pingdom:
      https" +"://wp-rocket.me/blog/correctly-measure-websites-page-load-time/" + +#: views/deactivation-intent/form.php:105 +msgid "Send & Deactivate" +msgstr "送出 & 停用" + +#: views/deactivation-intent/form.php:106 +msgid "Cancel" +msgstr "取消" + +#: views/deactivation-intent/form.php:108 +msgid "Skip & Deactivate" +msgstr "略過 & 停用" + +#: views/settings/fields/cache-lifespan.php:26 +msgid "Clear cache after" +msgstr "在...之後清除快取" + +#: views/settings/fields/cnames.php:49 views/settings/fields/cnames.php:80 +#: views/settings/fields/cnames.php:110 +msgid "CSS & JavaScript" +msgstr "CSS & JavaScript" + +#: views/settings/fields/cnames.php:50 views/settings/fields/cnames.php:81 +#: views/settings/fields/cnames.php:111 +msgid "JavaScript" +msgstr "JavaScript" + +#: views/settings/fields/cnames.php:51 views/settings/fields/cnames.php:82 +#: views/settings/fields/cnames.php:112 +msgid "CSS" +msgstr "CSS" + +#: views/settings/fields/import-form.php:29 +msgid "Import settings" +msgstr "匯入設定" + +#: views/settings/fields/one-click-addon.php:39 +#: views/settings/fields/rocket-addon.php:31 +#: views/settings/fields/sliding-checkbox.php:24 views/settings/page.php:54 +msgctxt "Active state of checkbox" +msgid "On" +msgstr "開啟" + +#: views/settings/fields/one-click-addon.php:40 +#: views/settings/fields/rocket-addon.php:32 +#: views/settings/fields/sliding-checkbox.php:25 views/settings/page.php:55 +msgctxt "Inactive state of checkbox" +msgid "Off" +msgstr "關閉" + +#: views/settings/fields/one-click-addon.php:41 +#: views/settings/fields/rocket-addon.php:33 +msgid "Add-on status" +msgstr "附加功能狀態" + +#: views/settings/fields/rocket-addon.php:56 +msgid "Modify options" +msgstr "修改選項" + +#: views/settings/page-sections/cloudflare.php:26 +msgid "Cloudflare Cache" +msgstr "Cloudflare 快取" + +#: views/settings/page-sections/cloudflare.php:33 +#: views/settings/page-sections/sucuri.php:34 +#, php-format +msgid "Purges cached resources for your website. %s" +msgstr "立即為你的網站清除快取資源。%s" + +#: views/settings/page-sections/cloudflare.php:34 +msgid "https://support.cloudflare.com/hc/en-us/articles/200169246" +msgstr "https://support.cloudflare.com/hc/en-us/articles/200169246" + +#: views/settings/page-sections/cloudflare.php:34 +#: views/settings/page-sections/sucuri.php:35 +msgid "Learn more" +msgstr "了解更多" + +#: views/settings/page-sections/cloudflare.php:40 +msgid "Clear all Cloudflare cache files" +msgstr "清除所有 CloudFlare 快取檔案" + +#: views/settings/page-sections/dashboard.php:37 +msgid "Congratulations!" +msgstr "恭喜!" + +#: views/settings/page-sections/dashboard.php:39 +msgid "WP Rocket is now activated and already working for you." +msgstr "" + +#: views/settings/page-sections/dashboard.php:41 +msgid "Your website should be loading faster now!" +msgstr "" + +#: views/settings/page-sections/dashboard.php:43 +#, php-format +msgid "" +"To guarantee fast websites, WP Rocket applies 80% of web performance best " +"practices." +msgstr "" + +#: views/settings/page-sections/dashboard.php:43 +msgid "" +"We also enable options that provide immediate benefits to your website." +msgstr "" + +#: views/settings/page-sections/dashboard.php:44 +msgid "Continue to the options to further optimize your site!" +msgstr "繼續更多設定調整優化你的網站!" + +#: views/settings/page-sections/dashboard.php:54 +msgid "My Account" +msgstr "我的帳號" + +#: views/settings/page-sections/dashboard.php:60 +msgid "Refresh info" +msgstr "重新整理資訊" + +#: views/settings/page-sections/dashboard.php:74 +msgid "Expiration Date" +msgstr "過期時間" + +#: views/settings/page-sections/dashboard.php:83 +msgid "View my account" +msgstr "檢視我的帳號" + +#: views/settings/page-sections/dashboard.php:103 +msgid "Quick Actions" +msgstr "快速操作" + +#: views/settings/page-sections/dashboard.php:109 +msgid "Remove all cached files" +msgstr "移除所有快取檔案" + +#: views/settings/page-sections/dashboard.php:129 +msgid "Start cache preloading" +msgstr "開始快取預先載入" + +#: views/settings/page-sections/dashboard.php:147 +msgid "Purge OPCache content" +msgstr "清除 OPcache 內容" + +#: views/settings/page-sections/dashboard.php:153 +msgid "Purge OPCache" +msgstr "清除 OPcache" + +#: views/settings/page-sections/dashboard.php:164 +#: views/settings/page-sections/dashboard.php:170 +msgid "Regenerate Critical CSS" +msgstr "重新產生 Critical CSS" + +#: views/settings/page-sections/dashboard.php:186 +msgid "Frequently Asked Questions" +msgstr "常見問題" + +#: views/settings/page-sections/dashboard.php:199 +msgid "Still cannot find a solution?" +msgstr "仍然無法找到解決方案?" + +#: views/settings/page-sections/dashboard.php:200 +msgid "" +"Submit a ticket and get help from our friendly and knowledgeable Rocketeers." +msgstr "提送支援單或是在我們友善的知識庫中獲得幫助。" + +#: views/settings/page-sections/dashboard.php:208 +msgid "Ask support" +msgstr "尋求支援" + +#: views/settings/page-sections/database.php:24 +msgid "Backup your database before you run a cleanup!" +msgstr "在清理前請先備份你的資料庫" + +#: views/settings/page-sections/database.php:25 +msgid "" +"Once a database optimization has been performed, there is no way to undo it." +msgstr "一旦開始執行資料庫清理,是沒有辦法恢復的。" + +#: views/settings/page-sections/imagify.php:20 +#, php-format +msgid "" +"%1$sWP ROCKET%2$s created %3$sIMAGIFY%4$s %1$sfor best-in-class image " +"optimization.%2$s" +msgstr "" + +#: views/settings/page-sections/imagify.php:23 +msgid "" +"Compress image to make your website faster, all while maintaining image " +"quality." +msgstr "" + +#: views/settings/page-sections/imagify.php:24 +msgid "More on Imagify:" +msgstr "" + +#: views/settings/page-sections/imagify.php:26 +msgid "Imagify Plugin Page" +msgstr "" + +#: views/settings/page-sections/imagify.php:27 +msgid "Imagify Website" +msgstr "" + +#: views/settings/page-sections/imagify.php:28 +msgid "Review of Image Compression Plugins" +msgstr "" + +#: views/settings/page-sections/imagify.php:37 +msgid "Install Imagify" +msgstr "" + +#: views/settings/page-sections/license.php:21 +msgid "WP Rocket was not able to automatically validate your license." +msgstr "WP Rocket 不會自動驗證你的授權。" + +#: views/settings/page-sections/license.php:26 +#, php-format +msgid "" +"Follow this tutorial, or contact support to get the engine started." +msgstr "" +"依照此處的教學或是聯絡客服來開始。" + +#: views/settings/page-sections/license.php:26 +msgid "" +"https://docs.wp-rocket.me/article/100-resolving-problems-with-license-" +"validation/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://docs.wp-rocket.me/article/100-resolving-problems-with-license-" +"validation/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: views/settings/page-sections/sucuri.php:41 +msgid "Clear all Sucuri cache files" +msgstr "" + +#: views/settings/page-sections/tools.php:20 +#, php-format +msgid "Files size: %1$s. Number of entries: %2$s." +msgstr "" + +#: views/settings/page-sections/tools.php:23 +#, php-format +msgid "%1$sDownload the file%2$s." +msgstr "" + +#: views/settings/page-sections/tools.php:26 +#, php-format +msgid "%1$sDelete the file%2$s." +msgstr "" + +#: views/settings/page-sections/tools.php:37 +msgid "Export settings" +msgstr "匯出設定" + +#: views/settings/page-sections/tools.php:38 +msgid "Download a backup file of your settings" +msgstr "下載你的設定備份檔" + +#: views/settings/page-sections/tools.php:43 +msgid "Download settings" +msgstr "下載設定" + +#: views/settings/page-sections/tools.php:56 +msgid "Rollback" +msgstr "還原" + +#: views/settings/page-sections/tools.php:60 +#, php-format +msgid "Has version %s caused an issue on your website?" +msgstr "版本%s在你的網站上發生問題嗎?" + +#: views/settings/page-sections/tools.php:62 +msgid "" +"You can rollback to the previous major version here.
      Then send us a " +"support request." +msgstr "你可以還原到之前的版本,
      然後與我們聯絡。" + +#: views/settings/page-sections/tools.php:69 +#, php-format +msgid "Reinstall version %s" +msgstr "重新安裝版本%s" + +#: views/settings/page-sections/tools.php:85 +msgid "Debug mode" +msgstr "" + +#: views/settings/page-sections/tools.php:90 +msgid "Create a debug log file." +msgstr "" + +#: views/settings/page.php:16 +msgid "WP Rocket Settings" +msgstr "WP Rocket 設定" + +#: views/settings/page.php:30 +#, php-format +msgid "version %s" +msgstr "版本 %s" + +#: views/settings/page.php:40 +msgid "Save Changes" +msgstr "儲存修改" + +#: views/settings/page.php:56 +msgid "Show Sidebar" +msgstr "" + +#: views/settings/page.php:75 +msgid "Thanks for choosing to participate in the WP Rocket beta program!" +msgstr "" + +#: views/settings/page.php:76 +msgid "" +"A beta version is usually one that has new features and improvements, but we" +" want to test it a little more before full launch." +msgstr "" + +#: views/settings/page.php:77 +msgid "" +"We’d love it if you took our beta versions for a ride, but please keep in " +"mind that it might be less stable than our other releases. Don’t worry, you " +"can switch back to a full release version at any time." +msgstr "" + +#: views/settings/page.php:78 +msgid "" +"Your mission: please send all feedback about our beta versions, including " +"bug reports, to support@wp-rocket.me" +msgstr "" + +#: views/settings/page.php:80 +msgid "If you don’t want to join the beta program, simply close this window." +msgstr "" + +#: views/settings/page.php:82 +msgid "Activate Rocket Tester" +msgstr "" + +#: views/settings/page.php:93 +msgid "" +"Below is a detailed view of all data WP Rocket will collect if " +"granted permission." +msgstr "如果允許,以下是 WP Rocket 會從你的網站中收集的資料。" + +#: views/settings/page.php:96 +msgid "" +"WP Rocket will never transmit any domain names or email addresses (except " +"for license validation), IP addresses, or third-party API keys." +msgstr "WP Rocket 絕對不會傳送任何網域名稱或是電子郵件(除非是為了驗證註冊)、IP 地址以及第三方的 API 金鑰。" + +#: views/settings/page.php:98 +msgid "Activate Rocket analytics" +msgstr "啟用 Rocket 分析" + +#: views/settings/partials/documentation.php:14 +msgid "It is a great starting point to fix some of the most common issues." +msgstr "如要修復一些常見問題這是一個很好的起點。" + +#: views/settings/partials/documentation.php:18 +msgid "Read the documentation" +msgstr "閱讀說明文件" + +#: views/settings/partials/sidebar.php:11 +msgid "How to correctly measure your website’s loading time" +msgstr "如何正確的測量網站載入時間" + +#: views/settings/partials/sidebar.php:13 +msgid "" +"Learn how to use best practices to correctly measure your site's " +"performance." +msgstr "學習如何正確評估網站的效能表現。" + +#: views/settings/partials/sidebar.php:14 +msgid "" +"https://wp-rocket.me/blog/correctly-measure-websites-page-load-" +"time/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://wp-rocket.me/blog/correctly-measure-websites-page-load-" +"time/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: views/settings/partials/sidebar.php:14 +msgid "Read our guide" +msgstr "閱讀我們的指南" + +#: views/settings/partials/sidebar.php:17 +msgid "Why Google PageSpeed grade should not matter" +msgstr "為何不用在意 Google PageSpeed 的評分" + +#: views/settings/partials/sidebar.php:18 +msgid "" +"https://wp-rocket.me/blog/the-truth-about-google-pagespeed-" +"insights/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" +"https://wp-rocket.me/blog/the-truth-about-google-pagespeed-" +"insights/?utm_source=wp_plugin&utm_medium=wp_rocket" + +#: views/settings/partials/sidebar.php:18 +msgid "Read more" +msgstr "閱讀更多" + +#: views/settings/partials/sidebar.php:23 +msgid "You have not activated logged-in user cache." +msgstr "你沒有啟用登入會員的快取。" + +#: views/settings/partials/sidebar.php:24 +msgid "" +"Use a private browser to check your website's speed and visual appearance." +msgstr "使用瀏覽器的無痕模式來檢查網站速度以及版面。" + +#: views/settings/sections/addons-container.php:23 +#: views/settings/sections/fields-container.php:27 +msgid "Need Help?" +msgstr "需要幫助嗎?" diff --git a/wp-content/plugins/wp-rocket/languages/rocket.pot b/wp-content/plugins/wp-rocket/languages/rocket.pot new file mode 100644 index 0000000..18ede02 --- /dev/null +++ b/wp-content/plugins/wp-rocket/languages/rocket.pot @@ -0,0 +1,3739 @@ +# Copyright (C) 2016 WP Rocket +# This file is distributed under the same license as the WP Rocket package. +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: WP Rocket 3.4\n" +"Report-Msgid-Bugs-To: http://wp-rocket.me/\n" +"POT-Creation-Date: 2020-11-04 12:19-0500\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"PO-Revision-Date: 2016-MO-DA HO:MI+ZONE\n" +"Last-Translator: WP Media (http://wp-rocket.me/)\n" +"Language-Team: WP Media (http://www.transifex.com/projects/p/wp-media/) " +"\n" +"X-Generator: Poedit 1.8.11\n" +"X-Poedit-KeywordsList: __;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;" +"_nx_noop:1,2,3c;esc_attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;" +"esc_html_x:1,2c\n" +"Language: en_US\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-Basepath: ..\n" +"X-Textdomain-Support: yes\n" +"X-Poedit-SearchPath-0: .\n" +"X-Poedit-SearchPathExcluded-0: assets\n" +"X-Poedit-SearchPathExcluded-1: src\n" +"X-Poedit-SearchPathExcluded-2: vendor\n" +"X-Poedit-SearchPathExcluded-3: node_modules\n" +"X-Poedit-SearchPathExcluded-4: tests\n" + +#: inc/3rd-party/hosting/flywheel.php:18 inc/3rd-party/hosting/godaddy.php:18 +#: inc/3rd-party/hosting/pressidium.php:18 inc/3rd-party/hosting/wp-serveur.php:27 +#: inc/ThirdParty/Hostings/Cloudways.php:90 +#: inc/ThirdParty/Hostings/Dreampress.php:44 +#: inc/ThirdParty/Hostings/O2Switch.php:49 inc/ThirdParty/Hostings/Savvii.php:50 +#: inc/ThirdParty/Hostings/WPEngine.php:47 inc/deprecated/3.6.php:698 +#: inc/deprecated/3.6.php:1005 +#, php-format +msgid "" +"Your site is hosted on %s, we have enabled Varnish auto-purge for compatibility." +msgstr "" + +#: inc/3rd-party/hosting/kinsta.php:161 +#, php-format +msgid "" +"Your installation seems to be missing core Kinsta files managing Cache clearing " +"and CDN, which will prevent your Kinsta installation and WP Rocket from working " +"correctly. Please get in touch with Kinsta support through your %1$sMyKinsta%2$s " +"account to resolve this issue." +msgstr "" + +#: inc/3rd-party/plugins/jetpack.php:86 +msgid "Jetpack XML Sitemaps" +msgstr "" + +#: inc/3rd-party/plugins/jetpack.php:88 +msgid "Preload the sitemap from the Jetpack plugin" +msgstr "" + +#: inc/3rd-party/plugins/jetpack.php:96 +#: inc/3rd-party/plugins/seo/all-in-one-seo-pack.php:89 +#: inc/3rd-party/plugins/seo/rank-math-seo.php:34 +#: inc/3rd-party/plugins/seo/seopress.php:86 +#: inc/3rd-party/plugins/seo/the-seo-framework.php:144 +#: inc/3rd-party/plugins/seo/yoast-seo.php:87 +#, php-format +msgid "" +"We automatically detected the sitemap generated by the %s plugin. You can check " +"the option to preload it." +msgstr "" + +#: inc/3rd-party/plugins/seo/all-in-one-seo-pack.php:87 +msgid "All in One SEO XML sitemap" +msgstr "" + +#: inc/3rd-party/plugins/seo/rank-math-seo.php:32 +msgid "Rank Math XML sitemap" +msgstr "" + +#: inc/3rd-party/plugins/seo/seopress.php:84 +msgid "SEOPress XML sitemap" +msgstr "" + +#: inc/3rd-party/plugins/seo/the-seo-framework.php:142 +msgid "The SEO Framework XML sitemap" +msgstr "" + +#: inc/3rd-party/plugins/seo/yoast-seo.php:85 +msgid "Yoast SEO XML sitemap" +msgstr "" + +#: inc/Addon/Cloudflare/APIClient.php:309 +msgid "Cloudflare did not provide any reply. Please try again later." +msgstr "" + +#: inc/Addon/Cloudflare/APIClient.php:318 inc/deprecated/3.5.php:122 +#: inc/deprecated/3.5.php:179 +msgid "Incorrect Cloudflare email address or API key." +msgstr "" + +#: inc/Addon/Cloudflare/APIClient.php:322 inc/Addon/Cloudflare/APIClient.php:335 +#: inc/Addon/Cloudflare/Cloudflare.php:112 inc/Addon/Cloudflare/Cloudflare.php:144 +#: inc/classes/subscriber/Tools/class-detect-missing-tags-subscriber.php:157 +#: inc/deprecated/3.5.php:102 inc/deprecated/3.5.php:126 inc/deprecated/3.5.php:139 +#: inc/deprecated/3.5.php:167 inc/deprecated/3.5.php:183 +#, php-format +msgid "Read the %1$sdocumentation%2$s for further guidance." +msgstr "" + +#: inc/Addon/Cloudflare/APIClient.php:324 inc/Addon/Cloudflare/APIClient.php:337 +#: inc/Addon/Cloudflare/Cloudflare.php:101 inc/Addon/Cloudflare/Cloudflare.php:114 +#: inc/Addon/Cloudflare/Cloudflare.php:146 inc/deprecated/3.5.php:91 +#: inc/deprecated/3.5.php:104 inc/deprecated/3.5.php:128 inc/deprecated/3.5.php:141 +#: inc/deprecated/3.5.php:169 inc/deprecated/3.5.php:185 inc/deprecated/3.5.php:218 +msgid "" +"https://docs.wp-rocket.me/article/18-using-wp-rocket-with-cloudflare/?" +"utm_source=wp_plugin&utm_medium=wp_rocket#add-on" +msgstr "" + +#: inc/Addon/Cloudflare/APIClient.php:331 inc/deprecated/3.5.php:135 +msgid "Incorrect Cloudflare Zone ID." +msgstr "" + +#: inc/Addon/Cloudflare/Cloudflare.php:99 +#, php-format +msgid "" +"Cloudflare email and/or API key are not set. Read the %1$sdocumentation%2$s for " +"further guidance." +msgstr "" + +#: inc/Addon/Cloudflare/Cloudflare.php:108 inc/deprecated/3.5.php:98 +msgid "Missing Cloudflare Zone ID." +msgstr "" + +#: inc/Addon/Cloudflare/Cloudflare.php:140 inc/deprecated/3.5.php:163 +msgid "It looks like your domain is not set up on Cloudflare." +msgstr "" + +#: inc/Addon/Cloudflare/Subscriber.php:215 inc/deprecated/3.5.php:597 +#, php-format +msgid "WP Rocket: %s" +msgstr "" + +#: inc/Addon/Cloudflare/Subscriber.php:220 inc/deprecated/3.5.php:602 +msgid "WP Rocket: Cloudflare cache successfully purged." +msgstr "" + +#: inc/Addon/Cloudflare/Subscriber.php:364 inc/Addon/Cloudflare/Subscriber.php:370 +#: inc/Addon/Cloudflare/Subscriber.php:390 inc/Addon/Cloudflare/Subscriber.php:401 +#: inc/Addon/Cloudflare/Subscriber.php:420 inc/Addon/Cloudflare/Subscriber.php:426 +#: inc/Addon/Cloudflare/Subscriber.php:445 inc/Addon/Cloudflare/Subscriber.php:451 +#: inc/Addon/Cloudflare/Subscriber.php:470 inc/Addon/Cloudflare/Subscriber.php:476 +#: inc/Addon/Cloudflare/Subscriber.php:558 inc/admin/options.php:166 +#: inc/classes/subscriber/Tools/class-detect-missing-tags-subscriber.php:148 +msgid "WP Rocket: " +msgstr "" + +#: inc/Addon/Cloudflare/Subscriber.php:364 +#, php-format +msgid "Cloudflare development mode error: %s" +msgstr "" + +#: inc/Addon/Cloudflare/Subscriber.php:370 +#, php-format +msgid "Cloudflare development mode %s" +msgstr "" + +#: inc/Addon/Cloudflare/Subscriber.php:390 +#, php-format +msgid "Cloudflare cache level error: %s" +msgstr "" + +#: inc/Addon/Cloudflare/Subscriber.php:395 +msgctxt "Cloudflare caching level" +msgid "Standard" +msgstr "" + +#: inc/Addon/Cloudflare/Subscriber.php:401 +#, php-format +msgid "Cloudflare cache level set to %s" +msgstr "" + +#: inc/Addon/Cloudflare/Subscriber.php:420 +#, php-format +msgid "Cloudflare minification error: %s" +msgstr "" + +#: inc/Addon/Cloudflare/Subscriber.php:426 +#, php-format +msgid "Cloudflare minification %s" +msgstr "" + +#: inc/Addon/Cloudflare/Subscriber.php:445 +#, php-format +msgid "Cloudflare rocket loader error: %s" +msgstr "" + +#: inc/Addon/Cloudflare/Subscriber.php:451 +#, php-format +msgid "Cloudflare rocket loader %s" +msgstr "" + +#: inc/Addon/Cloudflare/Subscriber.php:470 +#, php-format +msgid "Cloudflare browser cache error: %s" +msgstr "" + +#: inc/Addon/Cloudflare/Subscriber.php:476 +#, php-format +msgid "Cloudflare browser cache set to %s seconds" +msgstr "" + +#: inc/Addon/FacebookTracking/Subscriber.php:87 +#: inc/Addon/GoogleTracking/Subscriber.php:132 +#: inc/Engine/HealthCheck/CacheDirSizeCheck.php:88 +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:92 +msgid "weekly" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:190 +msgid "Save Changes" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:190 +msgid "Validate License" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:246 inc/Engine/Admin/Settings/Page.php:247 +msgid "Unavailable" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:341 inc/deprecated/deprecated.php:1789 +#: views/settings/page-sections/dashboard.php:80 +msgid "License" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:358 +msgid "API key" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:373 +msgid "Email address" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:399 +msgid "Dashboard" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:400 +msgid "Get help, account info" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:409 +msgid "My Status" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:419 views/settings/page.php:72 +msgid "Rocket Tester" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:420 +msgid "I am part of the WP Rocket Beta Testing Program." +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:428 views/settings/page.php:90 +msgid "Rocket Analytics" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:430 +#, php-format +msgid "" +"I agree to share anonymous data with the development team to help improve WP " +"Rocket. %1$sWhat info will we collect?%2$s" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:454 inc/Engine/Cache/WPCache.php:347 +msgid "Cache" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:455 +msgid "Basic cache options" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:462 +msgid "Mobile Cache" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:464 +msgid "Speed up your site for mobile visitors." +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:469 +msgid "" +"We detected you use a plugin that requires a separate cache for mobile, and " +"automatically enabled this option for compatibility." +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:473 +msgid "User Cache" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:476 +#, php-format +msgid "" +"%1$sUser cache%2$s is great when you have user-specific or restricted content on " +"your website." +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:484 +msgid "Cache Lifespan" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:487 +#, php-format +msgid "" +"Cache files older than the specified lifespan will be deleted.
      Enable " +"%1$spreloading%2$s for the cache to be rebuilt automatically after lifespan " +"expiration." +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:501 +msgid "Enable caching for logged-in WordPress users" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:509 +msgid "Enable caching for mobile devices" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:524 +msgid "Separate cache files for mobile devices" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:526 +#, php-format +msgid "" +"Most modern themes are responsive and should work without a separate cache. " +"Enable this only if you have a dedicated mobile theme or plugin. %1$sMore info" +"%2$s" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:542 +msgid "Specify time after which the global cache is cleared
      (0 = unlimited )" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:544 +#, php-format +msgid "" +"Reduce lifespan to 10 hours or less if you notice issues that seem to appear " +"periodically. %1$sWhy?%2$s" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:550 +#: inc/Engine/License/views/promo-banner.php:31 +#: inc/Engine/License/views/renewal-soon-banner.php:14 +msgid "Minutes" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:551 +#: inc/Engine/License/views/promo-banner.php:30 +#: inc/Engine/License/views/renewal-soon-banner.php:13 +msgid "Hours" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:552 +#: inc/Engine/License/views/promo-banner.php:29 +#: inc/Engine/License/views/renewal-soon-banner.php:12 +msgid "Days" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:577 +#: views/settings/page-sections/tutorials.php:22 +msgid "File Optimization" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:578 +msgid "Optimize CSS & JS" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:585 +msgid "CSS Files" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:592 inc/Engine/Admin/Settings/Page.php:602 +#, php-format +msgid "" +"%1$s Minification is currently activated in Autoptimize. If you " +"want to use %2$s’s minification, disable those options in Autoptimize." +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:595 +msgid "JavaScript Files" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:611 +msgid "Minify CSS files" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:612 +msgid "Minify CSS removes whitespace and comments to reduce the file size." +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:625 inc/Engine/Admin/Settings/Page.php:647 +#: inc/Engine/Admin/Settings/Page.php:729 inc/Engine/Admin/Settings/Page.php:751 +msgid "This could break things!" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:626 inc/Engine/Admin/Settings/Page.php:648 +#: inc/Engine/Admin/Settings/Page.php:730 inc/Engine/Admin/Settings/Page.php:752 +msgid "" +"If you notice any errors on your website after having activated this setting, " +"just deactivate it again, and your site will be back to normal." +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:627 +msgid "Activate minify CSS" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:632 +msgid "Combine CSS files (Enable Minify CSS files to select)" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:634 +#, php-format +msgid "" +"Combine CSS merges all your files into 1, reducing HTTP requests. Not " +"recommended if your site uses HTTP/2. %1$sMore info%2$s" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:649 +msgid "Activate combine CSS" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:654 inc/admin/options.php:125 +msgid "Excluded CSS Files" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:655 +msgid "" +"Specify URLs of CSS files to be excluded from minification and concatenation " +"(one per line)." +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:656 +msgid "" +"Internal: The domain part of the URL will be stripped " +"automatically. Use (.*).css wildcards to exclude all CSS files located at a " +"specific path." +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:658 +#, php-format +msgid "" +"3rd Party: Use either the full URL path or only the domain " +"name, to exclude external CSS. %1$sMore info%2$s" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:671 +msgid "Optimize CSS delivery" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:678 +#, php-format +msgctxt "WP Critical CSS compatibility" +msgid "" +"Optimize CSS Delivery is currently handled by the %1$s plugin. If you want to " +"use WP Rocket’s Optimize CSS Delivery option, disable the %1$s plugin." +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:680 +#, php-format +msgid "" +"Optimize CSS delivery eliminates render-blocking CSS on your website for faster " +"perceived load time. %1$sMore info%2$s" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:691 +msgid "Fallback critical CSS" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:696 +#, php-format +msgid "" +"Provides a fallback if auto-generated critical path CSS is incomplete. %1$sMore " +"info%2$s" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:705 +msgid "Remove jQuery Migrate" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:707 +#, php-format +msgid "" +"Remove jQuery Migrate eliminates a JS file and can improve load time. %1$sMore " +"info%2$s" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:715 +msgid "Minify JavaScript files" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:716 +msgid "Minify JavaScript removes whitespace and comments to reduce the file size." +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:731 +msgid "Activate minify JavaScript" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:736 +msgid "" +"Combine JavaScript files (Enable Minify JavaScript files to select)" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:738 +#, php-format +msgid "" +"Combine JavaScript files combines your site’s internal, 3rd party and inline JS " +"reducing HTTP requests. Not recommended if your site uses HTTP/2. %1$sMore info" +"%2$s" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:753 +msgid "Activate combine JavaScript" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:758 inc/admin/options.php:126 +msgid "Excluded Inline JavaScript" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:760 +#, php-format +msgid "" +"Specify patterns of inline JavaScript to be excluded from concatenation (one per " +"line). %1$sMore info%2$s" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:776 inc/admin/options.php:127 +msgid "Excluded JavaScript Files" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:777 +msgid "" +"Specify URLs of JavaScript files to be excluded from minification and " +"concatenation (one per line)." +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:778 +msgid "" +"Internal: The domain part of the URL will be stripped " +"automatically. Use (.*).js wildcards to exclude all JS files located at a " +"specific path." +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:780 +#, php-format +msgid "" +"3rd Party: Use either the full URL path or only the domain " +"name, to exclude external JS. %1$sMore info%2$s" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:796 +msgid "Load JavaScript deferred" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:798 +#, php-format +msgid "" +"Load JavaScript deferred eliminates render-blocking JS on your site and can " +"improve load time. %1$sMore info%2$s" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:809 +msgid "Safe Mode for jQuery (recommended)" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:810 +msgid "" +"Safe mode for jQuery for deferred JS ensures support for inline jQuery " +"references from themes and plugins by loading jQuery at the top of the document " +"as a render-blocking script.
      Deactivating may result in broken " +"functionality, test thoroughly!" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:823 inc/admin/ui/meta-boxes.php:79 +msgid "Delay JavaScript execution" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:825 +#, php-format +msgid "" +"Improves performance by delaying the loading of JavaScript files until user " +"interaction (e.g. scroll, click). %1$sMore info%2$s" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:833 +msgid "Scripts to delay" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:834 +msgid "" +"Specify keywords that can identify inline or JavaScript files to be delayed (one " +"per line)." +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:835 +msgid "" +"A curated list of scripts that are safe to delay is provided. They may not all " +"apply to your website and it is safe to leave the list as-is unless you face " +"issues." +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:870 +msgid "Media" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:871 +msgid "LazyLoad, emojis, embeds, WebP" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:880 +msgid "Avada" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:884 +msgid "Autoptimize" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:929 +msgid "LazyLoad" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:932 +#, php-format +msgid "" +"It can improve actual and perceived loading time as images, iframes, and videos " +"will be loaded only as they enter (or about to enter) the viewport and reduces " +"the number of HTTP requests. %1$sMore Info%2$s" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:939 +#, php-format +msgid "" +"LazyLoad is currently activated in %2$s. If you want to use WP Rocket’s " +"LazyLoad, disable this option in %2$s." +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:942 +msgid "Emoji 👻" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:944 +msgid "" +"Use default emoji of visitor's browser instead of loading emoji from WordPress." +"org" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:948 +msgid "Embeds" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:950 +msgid "" +"Prevents others from embedding content from your site, prevents you from " +"embedding content from other (non-allowed) sites, and removes JavaScript " +"requests related to WordPress embeds" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:954 +msgid "WebP compatibility" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:958 +#, php-format +msgid "" +"Enable this option if you would like WP Rocket to serve WebP images to " +"compatible browsers. Please note that WP Rocket cannot create WebP images for " +"you. To create WebP images we recommend %1$sImagify%2$s. %3$sMore info%2$s" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:985 +msgid "Enable for images" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:997 +#, php-format +msgid "" +"LazyLoad for images is currently activated in %2$s. If you want to use %1$s’s " +"LazyLoad, disable this option in %2$s." +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1005 +msgid "Enable for iframes and videos" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1020 +msgid "Replace YouTube iframe with preview image" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1021 +msgid "" +"This can significantly improve your loading time if you have a lot of YouTube " +"videos on a page." +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1031 +#, php-format +msgid "Replace YouTube iframe with preview image is not compatible with %2$s." +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1035 +msgid "Disable Emoji" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1036 +msgid "Disable Emoji will reduce the number of external HTTP requests." +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1044 +msgid "Disable WordPress embeds" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1054 +#: inc/classes/subscriber/Media/class-webp-subscriber.php:362 +msgid "Enable WebP caching" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1074 inc/deprecated/deprecated.php:1776 +#: views/settings/page-sections/tutorials.php:30 +msgid "Preload" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1075 +msgid "Generate cache files, preload fonts" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1086 +msgid "Preload Cache" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1089 +#, php-format +msgid "" +"When you enable preloading WP Rocket will generate the cache starting with the " +"links on your homepage followed by the sitemaps you specify. Preloading is " +"automatically triggered when you add or update content and can also be manually " +"triggered from the admin bar or from the %1$sWP Rocket Dashboard%2$s." +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1097 +msgid "Preload Links" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1100 +#, php-format +msgid "" +"Link preloading improves the perceived load time by downloading a page when a " +"user hovers over the link. %1$sMore info%2$s" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1108 +msgid "Prefetch DNS Requests" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1110 +msgid "" +"DNS prefetching can make external files load faster, especially on mobile " +"networks" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1118 +msgid "Preload Fonts" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1121 +#, php-format +msgid "" +"Improves performance by helping browsers discover fonts in CSS files. %1$sMore " +"info%2$s" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1135 +msgid "Activate Preloading" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1154 +msgid "Activate sitemap-based cache preloading" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1173 +msgid "Sitemaps for preloading" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1177 +msgid "Specify XML sitemap(s) to be used for preloading" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1187 +msgid "URLs to prefetch" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1188 +msgid "" +"Specify external hosts to be prefetched (no http:, one per line)" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1197 +msgid "Fonts to preload" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1198 +msgid "" +"Specify urls of the font files to be preloaded (one per line). Fonts must be " +"hosted on your own domain, or the domain you have specified on the CDN tab." +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1199 +msgid "" +"The domain part of the URL will be stripped automatically.
      Allowed font " +"extensions: otf, ttf, svg, woff, woff2." +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1208 +msgid "Enable link preloading" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1227 +msgid "Advanced Rules" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1228 +msgid "Fine-tune cache rules" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1237 +msgid "" +"Sensitive pages like custom login/logout URLs should be excluded from cache." +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1240 +msgctxt "plugin name" +msgid "WooCommerce" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1242 +msgctxt "plugin name" +msgid "Easy Digital Downloads" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1244 +msgctxt "plugin name" +msgid "iThemes Exchange" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1246 +msgctxt "plugin name" +msgid "Jigoshop" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1248 +msgctxt "plugin name" +msgid "WP-Shop" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1254 +#, php-format +msgid "" +"
      Cart, checkout and \"my account\" pages set in %1$s%2$s%3$s " +"will be detected and never cached by default." +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1264 inc/admin/options.php:128 +msgid "Never Cache URL(s)" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1275 +msgid "Never Cache Cookies" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1280 inc/admin/options.php:129 +msgid "Never Cache User Agent(s)" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1285 inc/admin/options.php:130 +msgid "Always Purge URL(s)" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1294 +msgid "Cache Query String(s)" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1297 +#, php-format +msgid "" +"%1$sCache for query strings%2$s enables you to force caching for specific GET " +"parameters." +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1311 +msgid "Specify URLs of pages or posts that should never be cached (one per line)" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1312 inc/Engine/Admin/Settings/Page.php:1340 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*) wildcards " +"to address multiple URLs under a given path." +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1321 +msgid "" +"Specify the IDs of cookies that, when set in the visitor's browser, should " +"prevent a page from getting cached (one per line)" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1329 +msgid "" +"Specify user agent strings that should never see cached pages (one per line)" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1330 +msgid "Use (.*) wildcards to detect parts of UA strings." +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1339 +msgid "" +"Specify URLs you always want purged from cache whenever you update any post or " +"page (one per line)" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1348 +msgid "Specify query strings for caching (one per line)" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1373 inc/deprecated/deprecated.php:1775 +msgid "Database" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1374 +msgid "Optimize, reduce bloat" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1383 +msgid "Post Cleanup" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1385 +msgid "" +"Post revisions and drafts will be permanently deleted. Do not use this option if " +"you need to retain revisions or drafts." +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1393 +msgid "Comments Cleanup" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1395 +msgid "Spam and trashed comments will be permanently deleted." +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1399 +msgid "Transients Cleanup" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1401 +msgid "" +"Transients are temporary options; they are safe to remove. They will be " +"automatically regenerated as your plugins require them." +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1405 +msgid "Database Cleanup" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1407 +msgid "Reduces overhead of database tables" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1411 +msgid "Automatic cleanup" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1422 +#: inc/classes/admin/Database/class-optimization.php:41 +msgid "Revisions" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1424 +#, php-format +msgid "%s revision in your database." +msgid_plural "%s revisions in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/Engine/Admin/Settings/Page.php:1432 +#: inc/classes/admin/Database/class-optimization.php:42 +msgid "Auto Drafts" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1434 +#, php-format +msgid "%s draft in your database." +msgid_plural "%s drafts in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/Engine/Admin/Settings/Page.php:1442 +#: inc/classes/admin/Database/class-optimization.php:43 +msgid "Trashed Posts" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1444 +#, php-format +msgid "%s trashed post in your database." +msgid_plural "%s trashed posts in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/Engine/Admin/Settings/Page.php:1452 +#: inc/classes/admin/Database/class-optimization.php:44 +msgid "Spam Comments" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1454 +#, php-format +msgid "%s spam comment in your database." +msgid_plural "%s spam comments in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/Engine/Admin/Settings/Page.php:1462 +#: inc/classes/admin/Database/class-optimization.php:45 +msgid "Trashed Comments" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1464 +#, php-format +msgid "%s trashed comment in your database." +msgid_plural "%s trashed comments in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/Engine/Admin/Settings/Page.php:1472 +#: inc/classes/admin/Database/class-optimization.php:46 +msgid "Expired transients" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1474 +#, php-format +msgid "%s expired transient in your database." +msgid_plural "%s expired transients in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/Engine/Admin/Settings/Page.php:1482 +msgid "All transients" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1484 +#, php-format +msgid "%s transient in your database." +msgid_plural "%s transients in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/Engine/Admin/Settings/Page.php:1492 +msgid "Optimize Tables" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1494 +#, php-format +msgid "%s table to optimize in your database." +msgid_plural "%s tables to optimize in your database." +msgstr[0] "" +msgstr[1] "" + +#: inc/Engine/Admin/Settings/Page.php:1505 +msgid "Schedule Automatic Cleanup" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1517 +msgid "Frequency" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1525 +msgid "Daily" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1526 +msgid "Weekly" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1527 +msgid "Monthly" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1543 inc/Engine/Admin/Settings/Page.php:1554 +#: inc/admin/ui/meta-boxes.php:76 inc/deprecated/deprecated.php:1773 +msgid "CDN" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1544 +msgid "Integrate your CDN" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1556 +msgid "" +"All URLs of static files (CSS, JS, images) will be rewritten to the CNAME(s) you " +"provide." +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1558 +#, php-format +msgid "" +"Not required for services like Cloudflare and Sucuri. Please see our available " +"%1$sAdd-ons%2$s." +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1573 inc/admin/options.php:131 +msgid "Exclude files from CDN" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1599 +#, php-format +msgid "" +"%1$s%2$s Add-on%3$s is currently enabled. Configuration of the CDN settings is " +"not required for %2$s to work on your site." +msgid_plural "" +"%1$s%2$s Add-ons%3$s are currently enabled. Configuration of the CDN settings is " +"not required for %2$s to work on your site." +msgstr[0] "" +msgstr[1] "" + +#: inc/Engine/Admin/Settings/Page.php:1624 +msgid "Enable Content Delivery Network" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1633 +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:151 +msgid "CDN CNAME(s)" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1634 +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:152 +msgid "Specify the CNAME(s) below" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1641 +msgid "Specify URL(s) of files that should not get served via CDN (one per line)." +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1642 +msgid "" +"The domain part of the URL will be stripped automatically.
      Use (.*) wildcards " +"to exclude all files of a given file type located at a specific path." +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1664 inc/Engine/Admin/Settings/Page.php:1672 +msgid "Heartbeat" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1665 +msgid "Control WordPress Heartbeat API" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1673 +msgid "" +"Reducing or disabling the Heartbeat API’s activity can help save some of your " +"server’s resources." +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1682 +msgid "Reduce or disable Heartbeat activity" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1683 +msgid "" +"Reducing activity will change Heartbeat frequency from one hit each minute to " +"one hit every 2 minutes." +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1683 +msgid "Disabling Heartbeat entirely may break plugins and themes using this API." +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1697 +msgid "Do not limit" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1698 +msgid "Reduce activity" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1699 +msgid "Disable" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1707 +msgid "Control Heartbeat" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1716 +msgid "Behavior in backend" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1723 +msgid "Behavior in post editor" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1729 +msgid "Behavior in frontend" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1745 +#: views/settings/page-sections/tutorials.php:36 +msgid "Add-ons" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1746 +msgid "Add more features" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1753 +msgid "One-click Rocket Add-ons" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1754 +msgid "" +"One-Click Add-ons are features extending available options without configuration " +"needed. Switch the option \"on\" to enable from this screen." +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1764 +msgid "Rocket Add-ons" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1765 +msgid "Rocket Add-ons are complementary features extending available options." +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1778 +msgid "Google Tracking" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1784 +msgid "Improve browser caching for Google Analytics" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1786 +#, php-format +msgid "" +"WP Rocket will host these Google scripts locally on your server to help satisfy " +"the PageSpeed recommendation for Leverage browser caching.
      %1$sLearn " +"more%2$s" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1801 +msgid "Facebook Pixel" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1807 +msgid "Improve browser caching for Facebook Pixel" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1809 +#, php-format +msgid "" +"WP Rocket will host these Facebook Pixels locally on your server to help satisfy " +"the PageSpeed recommendation for Leverage browser caching.
      %1$sLearn " +"more%2$s" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1822 inc/Engine/Admin/Settings/Page.php:1923 +msgid "Cloudflare" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1828 +msgid "Integrate your Cloudflare account with this add-on." +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1829 +msgid "" +"Provide your account email, global API key, and domain to use options such as " +"clearing the Cloudflare cache and enabling optimal settings with WP Rocket." +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1863 +msgid "Varnish" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1869 +msgid "If Varnish runs on your server, you must activate this add-on." +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1871 +#, php-format +msgid "" +"Varnish cache will be purged each time WP Rocket clears its cache to ensure " +"content is always up-to-date.
      %1$sLearn more%2$s" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1885 +msgid "Clear the Sucuri cache when WP Rocket’s cache is cleared." +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1888 +msgid "" +"Provide your API key to clear the Sucuri cache when WP Rocket’s cache is cleared." +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1896 inc/Engine/Admin/Settings/Page.php:2040 +msgid "Sucuri" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1902 +msgid "Synchronize Sucuri cache with this add-on." +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1940 +msgid "Cloudflare credentials" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1949 +msgid "Cloudflare settings" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1963 +msgctxt "Cloudflare" +msgid "Global API key:" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1964 +msgctxt "Cloudflare" +msgid "Find your API key" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1976 +msgctxt "Cloudflare" +msgid "Account email" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1985 +msgctxt "Cloudflare" +msgid "Zone ID" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1995 +msgid "Development mode" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:1997 +#, php-format +msgid "" +"Temporarily activate development mode on your website. This setting will " +"automatically turn off after 3 hours. %1$sLearn more%2$s" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:2005 +msgid "Optimal settings" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:2006 +msgid "" +"Automatically enhances your Cloudflare configuration for speed, performance " +"grade and compatibility." +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:2014 +msgid "Relative protocol" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:2015 +msgid "" +"Should only be used with Cloudflare's flexible SSL feature. URLs of static files " +"(CSS, JS, images) will be rewritten to use // instead of http:// or https://." +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:2053 +msgid "Sucuri credentials" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:2066 +msgctxt "Sucuri" +msgid "" +"Firewall API key (for plugin), must be in format {32 characters}/{32 " +"characters}:" +msgstr "" + +#: inc/Engine/Admin/Settings/Page.php:2067 +msgctxt "Sucuri" +msgid "Find your API key" +msgstr "" + +#: inc/Engine/Admin/Settings/Render.php:461 inc/deprecated/deprecated.php:1294 +msgid "Upload file and import settings" +msgstr "" + +#: inc/Engine/Admin/Settings/Settings.php:400 +msgid "" +"Sucuri Add-on: The API key for the Sucuri firewall must be in format {32 " +"characters}/{32 characters}." +msgstr "" + +#: inc/Engine/Admin/Settings/Settings.php:491 inc/deprecated/deprecated.php:1245 +msgid "Settings saved." +msgstr "" + +#: inc/Engine/Admin/Settings/Subscriber.php:148 inc/deprecated/deprecated.php:1786 +#: views/settings/page-sections/tools.php:33 +msgid "Tools" +msgstr "" + +#: inc/Engine/Admin/Settings/Subscriber.php:149 +msgid "Import, Export, Rollback" +msgstr "" + +#: inc/Engine/Admin/Settings/Subscriber.php:170 +#: views/settings/page-sections/imagify.php:14 +msgid "Image Optimization" +msgstr "" + +#: inc/Engine/Admin/Settings/Subscriber.php:171 +msgid "Compress your images" +msgstr "" + +#: inc/Engine/Admin/Settings/Subscriber.php:188 +#: views/settings/page-sections/tutorials.php:45 +msgid "Tutorials" +msgstr "" + +#: inc/Engine/Admin/Settings/Subscriber.php:189 +msgid "Getting started and how to videos" +msgstr "" + +#: inc/Engine/CDN/RocketCDN/APIClient.php:154 +msgid "RocketCDN is not available at the moment. Please retry later" +msgstr "" + +#: inc/Engine/CDN/RocketCDN/APIClient.php:171 +msgid "RocketCDN cache purge failed: Missing identifier parameter." +msgstr "" + +#: inc/Engine/CDN/RocketCDN/APIClient.php:180 +msgid "RocketCDN cache purge failed: Missing user token." +msgstr "" + +#: inc/Engine/CDN/RocketCDN/APIClient.php:199 +msgid "RocketCDN cache purge failed: The API returned an unexpected response code." +msgstr "" + +#: inc/Engine/CDN/RocketCDN/APIClient.php:208 +msgid "RocketCDN cache purge failed: The API returned an empty response." +msgstr "" + +#: inc/Engine/CDN/RocketCDN/APIClient.php:217 +msgid "RocketCDN cache purge failed: The API returned an unexpected response." +msgstr "" + +#: inc/Engine/CDN/RocketCDN/APIClient.php:226 +#, php-format +msgid "RocketCDN cache purge failed: %s." +msgstr "" + +#: inc/Engine/CDN/RocketCDN/APIClient.php:234 +msgid "RocketCDN cache purge successful." +msgstr "" + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:82 +msgid "Next Billing Date" +msgstr "" + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:91 +msgid "No Subscription" +msgstr "" + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:127 +msgid "Your RocketCDN subscription is currently active." +msgstr "" + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:133 +#, php-format +msgid "To use RocketCDN, replace your CNAME with %1$s%2$s%3$s." +msgstr "" + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:144 +#, php-format +msgid "%1$sMore Info%2$s" +msgstr "" + +#: inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php:190 +msgid "Manage Subscription" +msgstr "" + +#: inc/Engine/CDN/RocketCDN/RESTSubscriber.php:137 +msgid "RocketCDN enabled" +msgstr "" + +#: inc/Engine/CDN/RocketCDN/RESTSubscriber.php:160 +msgid "RocketCDN disabled" +msgstr "" + +#: inc/Engine/CDN/RocketCDN/views/cta-big.php:27 +#, php-format +msgid "Valid until %s only!" +msgstr "" + +#: inc/Engine/CDN/RocketCDN/views/cta-big.php:36 +msgid "Speed up your website thanks to:" +msgstr "" + +#: inc/Engine/CDN/RocketCDN/views/cta-big.php:42 +#, php-format +msgid "" +"High performance Content Delivery Network (CDN) with %1$sunlimited bandwith%2$s" +msgstr "" + +#: inc/Engine/CDN/RocketCDN/views/cta-big.php:48 +#, php-format +msgid "Easy configuration: the %1$sbest CDN settings%2$s are automatically applied" +msgstr "" + +#: inc/Engine/CDN/RocketCDN/views/cta-big.php:54 +#, php-format +msgid "" +"WP Rocket integration: the CDN option is %1$sautomatically configured%2$s in our " +"plugin" +msgstr "" + +#: inc/Engine/CDN/RocketCDN/views/cta-big.php:69 +#, php-format +msgid "%s / month" +msgstr "" + +#: inc/Engine/CDN/RocketCDN/views/cta-big.php:74 +msgid "Get Started" +msgstr "" + +#: inc/Engine/CDN/RocketCDN/views/cta-big.php:80 +msgid "Learn more about RocketCDN" +msgstr "" + +#: inc/Engine/CDN/RocketCDN/views/cta-big.php:82 +msgid "Reduce this banner" +msgstr "" + +#: inc/Engine/CDN/RocketCDN/views/cta-big.php:88 +#, php-format +msgid "" +"* $%1$s/month for 12 months then $%2$s/month. You can cancel your subscription " +"at any time." +msgstr "" + +#: inc/Engine/CDN/RocketCDN/views/cta-small.php:17 +msgid "Speed up your website with RocketCDN, WP Rocket’s Content Delivery Network." +msgstr "" + +#: inc/Engine/CDN/RocketCDN/views/cta-small.php:20 +#: inc/Engine/CDN/RocketCDN/views/promote-notice.php:13 +msgid "Learn More" +msgstr "" + +#: inc/Engine/CDN/RocketCDN/views/dashboard-status.php:23 +msgid "RocketCDN is unavailable on local domains and staging sites." +msgstr "" + +#: inc/Engine/CDN/RocketCDN/views/dashboard-status.php:32 +msgid "Get RocketCDN" +msgstr "" + +#: inc/Engine/CDN/RocketCDN/views/promote-notice.php:11 +msgid "New!" +msgstr "" + +#: inc/Engine/CDN/RocketCDN/views/promote-notice.php:12 +msgid "Speed up your website with RocketCDN, WP Rocket’s Content Delivery Network!" +msgstr "" + +#: inc/Engine/Cache/AdminSubscriber.php:118 inc/admin/admin.php:71 +#: inc/admin/admin.php:92 inc/deprecated/3.5.php:908 +msgid "Clear this cache" +msgstr "" + +#: inc/Engine/Cache/WPCache.php:330 +msgid "WP_CACHE value" +msgstr "" + +#: inc/Engine/Cache/WPCache.php:351 +msgid "" +"The WP_CACHE constant needs to be set to true for WP Rocket cache to work " +"properly" +msgstr "" + +#: inc/Engine/Cache/WPCache.php:360 +msgid "WP_CACHE is set to true" +msgstr "" + +#: inc/Engine/Cache/WPCache.php:368 +msgid "WP_CACHE is not set" +msgstr "" + +#: inc/Engine/Cache/WPCache.php:376 +msgid "WP_CACHE is set to false" +msgstr "" + +#: inc/Engine/CriticalPath/APIClient.php:64 +#, php-format +msgid "Critical CSS for %1$s not generated. Error: %2$s" +msgstr "" + +#: inc/Engine/CriticalPath/APIClient.php:170 +#: inc/Engine/CriticalPath/DataManager.php:66 +#, php-format +msgid "" +"Critical CSS for %1$s on mobile not generated. Error: The API returned an empty " +"response." +msgstr "" + +#: inc/Engine/CriticalPath/APIClient.php:173 +#: inc/Engine/CriticalPath/DataManager.php:69 +#, php-format +msgid "" +"Critical CSS for %1$s not generated. Error: The API returned an empty response." +msgstr "" + +#: inc/Engine/CriticalPath/APIClient.php:185 +#, php-format +msgid "Critical CSS for %1$s on mobile not generated." +msgstr "" + +#: inc/Engine/CriticalPath/APIClient.php:187 +#: inc/Engine/CriticalPath/ProcessorService.php:193 +#, php-format +msgid "Critical CSS for %1$s not generated." +msgstr "" + +#: inc/Engine/CriticalPath/APIClient.php:195 +#, php-format +msgid "" +"Critical CSS for %1$s on mobile not generated. Error: The API returned an " +"invalid response code." +msgstr "" + +#: inc/Engine/CriticalPath/APIClient.php:197 +#, php-format +msgid "" +"Critical CSS for %1$s not generated. Error: The API returned an invalid response " +"code." +msgstr "" + +#: inc/Engine/CriticalPath/APIClient.php:205 +#: inc/Engine/CriticalPath/ProcessorService.php:200 +#, php-format +msgid "Error: %1$s" +msgstr "" + +#: inc/Engine/CriticalPath/Admin/Admin.php:260 +msgid "Regenerate Critical Path CSS" +msgstr "" + +#: inc/Engine/CriticalPath/Admin/Post.php:132 views/cpcss/metabox/generate.php:47 +msgid "Generate Specific CPCSS" +msgstr "" + +#: inc/Engine/CriticalPath/Admin/Post.php:133 views/cpcss/metabox/generate.php:45 +msgid "Regenerate specific CPCSS" +msgstr "" + +#: inc/Engine/CriticalPath/Admin/Post.php:199 +msgid "%l to use this feature." +msgstr "" + +#: inc/Engine/CriticalPath/Admin/Post.php:202 +#, php-format +msgid "Publish the %s" +msgstr "" + +#: inc/Engine/CriticalPath/Admin/Post.php:203 +msgid "Enable Optimize CSS delivery in WP Rocket settings" +msgstr "" + +#: inc/Engine/CriticalPath/Admin/Post.php:204 +msgid "Enable Optimize CSS delivery in the options above" +msgstr "" + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:147 +msgid "Critical CSS generation is currently running." +msgstr "" + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:152 +#: inc/Engine/Preload/PreloadSubscriber.php:242 +#, php-format +msgid "Go to the %1$sWP Rocket settings%2$s page to track progress." +msgstr "" + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:366 +#, php-format +msgid "" +"Critical CSS generation is currently running: %1$d of %2$d page types completed. " +"(Refresh this page to view progress)" +msgstr "" + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:438 +#, php-format +msgid "Critical CSS generation finished for %1$d of %2$d page types." +msgstr "" + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:445 +msgid "Critical CSS generation encountered one or more errors." +msgstr "" + +#: inc/Engine/CriticalPath/CriticalCSSSubscriber.php:445 +msgid "Learn more." +msgstr "" + +#: inc/Engine/CriticalPath/DataManager.php:102 +msgid "Critical CSS file for mobile does not exist" +msgstr "" + +#: inc/Engine/CriticalPath/DataManager.php:104 +msgid "Critical CSS file does not exist" +msgstr "" + +#: inc/Engine/CriticalPath/DataManager.php:116 +msgid "Critical CSS file for mobile cannot be deleted" +msgstr "" + +#: inc/Engine/CriticalPath/DataManager.php:118 +msgid "Critical CSS file cannot be deleted" +msgstr "" + +#: inc/Engine/CriticalPath/ProcessorService.php:186 +#, php-format +msgid "Mobile Critical CSS for %1$s not generated." +msgstr "" + +#: inc/Engine/CriticalPath/ProcessorService.php:227 +#, php-format +msgid "Critical CSS for %s in progress." +msgstr "" + +#: inc/Engine/CriticalPath/ProcessorService.php:261 +#, php-format +msgid "Mobile Critical CSS for %s generated." +msgstr "" + +#: inc/Engine/CriticalPath/ProcessorService.php:272 +#, php-format +msgid "Critical CSS for %s generated." +msgstr "" + +#: inc/Engine/CriticalPath/ProcessorService.php:294 +msgid "Critical CSS file deleted successfully." +msgstr "" + +#: inc/Engine/CriticalPath/ProcessorService.php:316 +#, php-format +msgid "Mobile Critical CSS for %1$s timeout. Please retry a little later." +msgstr "" + +#: inc/Engine/CriticalPath/ProcessorService.php:329 +#, php-format +msgid "Critical CSS for %1$s timeout. Please retry a little later." +msgstr "" + +#: inc/Engine/CriticalPath/RESTWP.php:141 +msgid "Mobile CPCSS generation not enabled." +msgstr "" + +#: inc/Engine/CriticalPath/RESTWPPost.php:36 +#: inc/Engine/CriticalPath/RESTWPPost.php:69 +msgid "Requested post does not exist." +msgstr "" + +#: inc/Engine/CriticalPath/RESTWPPost.php:46 +msgid "Cannot generate CPCSS for unpublished post." +msgstr "" + +#: inc/Engine/HealthCheck/HealthCheck.php:82 inc/deprecated/3.5.php:868 +msgid "" +"The following scheduled event failed to run. This may indicate the CRON system " +"is not running properly, which can prevent some WP Rocket features from working " +"as intended:" +msgid_plural "" +"The following scheduled events failed to run. This may indicate the CRON system " +"is not running properly, which can prevent some WP Rocket features from working " +"as intended:" +msgstr[0] "" +msgstr[1] "" + +#: inc/Engine/HealthCheck/HealthCheck.php:88 inc/deprecated/3.5.php:877 +msgid "Please contact your host to check if CRON is working." +msgstr "" + +#: inc/Engine/HealthCheck/HealthCheck.php:142 +msgid "Scheduled Cache Purge" +msgstr "" + +#: inc/Engine/HealthCheck/HealthCheck.php:143 +msgid "Scheduled Database Optimization" +msgstr "" + +#: inc/Engine/HealthCheck/HealthCheck.php:144 +msgid "Database Optimization Process" +msgstr "" + +#: inc/Engine/HealthCheck/HealthCheck.php:145 +msgctxt "noun" +msgid "Preload" +msgstr "" + +#: inc/Engine/HealthCheck/HealthCheck.php:146 +msgid "Critical Path CSS Generation Process" +msgstr "" + +#: inc/Engine/License/Upgrade.php:252 +#, php-format +msgid "" +"Take advantage of %1$s to speed up more websites:%2$s get a %3$s%4$s off%5$s for " +"%3$supgrading your license to Plus or Infinite!%5$s" +msgid_plural "" +"Take advantage of %1$s to speed up more websites:%2$s get a %3$s%4$s off%5$s for " +"%3$supgrading your license to Infinite!%5$s" +msgstr[0] "" +msgstr[1] "" + +#: inc/Engine/License/Upgrade.php:369 inc/Engine/License/Upgrade.php:392 +msgid "Unlimited" +msgstr "" + +#: inc/Engine/License/views/promo-banner.php:16 +#, php-format +msgid "%s off" +msgstr "" + +#: inc/Engine/License/views/promo-banner.php:21 +#, php-format +msgid "%s promotion is live!" +msgstr "" + +#: inc/Engine/License/views/promo-banner.php:27 +msgid "Hurry Up! Deal ends in:" +msgstr "" + +#: inc/Engine/License/views/promo-banner.php:32 +#: inc/Engine/License/views/renewal-soon-banner.php:15 +msgid "Seconds" +msgstr "" + +#: inc/Engine/License/views/promo-banner.php:34 +#: inc/Engine/License/views/upgrade-section.php:11 +msgid "Upgrade now" +msgstr "" + +#: inc/Engine/License/views/promo-banner.php:36 +#: inc/Engine/License/views/renewal-expired-banner.php:39 +#: inc/admin/ui/notices.php:812 views/settings/page-sections/dashboard.php:46 +msgid "Dismiss this notice." +msgstr "" + +#: inc/Engine/License/views/renewal-expired-banner.php:12 +msgid "Your WP Rocket license is expired!" +msgstr "" + +#: inc/Engine/License/views/renewal-expired-banner.php:17 +#, php-format +msgid "" +"Your website could be much faster if it could take advantage of our %1$snew " +"features and enhancements.%2$s" +msgstr "" + +#: inc/Engine/License/views/renewal-expired-banner.php:27 +#, php-format +msgid "" +"Renew your license for 1 year and get an immediate %1$s%2$s off%3$s on your " +"renewal rate: you will only pay %1$s%4$s%3$s!" +msgstr "" + +#: inc/Engine/License/views/renewal-expired-banner.php:37 +#: inc/Engine/License/views/renewal-soon-banner.php:42 +msgid "Renew now" +msgstr "" + +#: inc/Engine/License/views/renewal-soon-banner.php:22 +#, php-format +msgid "Your %1$sWP Rocket license is about to expire.%2$s" +msgstr "" + +#: inc/Engine/License/views/renewal-soon-banner.php:32 +#, php-format +msgid "" +"Renew with a %1$s%2$s discount%3$s before it is too late, you will only pay %1$s" +"%4$s%3$s!" +msgstr "" + +#: inc/Engine/License/views/upgrade-popin.php:12 +msgid "Speed Up More Websites" +msgstr "" + +#: inc/Engine/License/views/upgrade-popin.php:19 +#, php-format +msgid "" +"You can use WP Rocket on more websites by upgrading your license. To upgrade, " +"simply pay the %1$sprice difference%2$s between your current and new licenses, " +"as shown below." +msgstr "" + +#: inc/Engine/License/views/upgrade-popin.php:25 +#, php-format +msgid "%1$sN.B.%2$s: Upgrading your license does not change your expiration date" +msgstr "" + +#: inc/Engine/License/views/upgrade-popin.php:35 +#, php-format +msgid "Save $%s" +msgstr "" + +#: inc/Engine/License/views/upgrade-popin.php:48 +#, php-format +msgid "%s websites" +msgstr "" + +#: inc/Engine/License/views/upgrade-popin.php:54 +#, php-format +msgid "Upgrade to %s" +msgstr "" + +#: inc/Engine/License/views/upgrade-section.php:11 +msgid "" +"You can use WP Rocket on more websites by upgrading your license (you will only " +"pay the price difference between your current and new licenses)." +msgstr "" + +#: inc/Engine/Optimization/DelayJS/Admin/Settings.php:105 +msgid "Restore Defaults" +msgstr "" + +#: inc/Engine/Preload/Homepage.php:153 +#, php-format +msgid "" +"Preload encountered an error. Could not gather links on %1$s because of the " +"following error: %2$s. %3$sLearn more%4$s." +msgstr "" + +#: inc/Engine/Preload/Homepage.php:166 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following " +"response code: %2$s. Security measures could be preventing access. %3$sLearn more" +"%4$s." +msgstr "" + +#: inc/Engine/Preload/Homepage.php:172 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following " +"response code: 404. Please make sure your homepage is accessible in your " +"browser. %2$sLearn more%3$s." +msgstr "" + +#: inc/Engine/Preload/Homepage.php:178 +#, php-format +msgid "" +"Preload encountered an error. %1$s is not accessible to due to the following " +"response code: 500. Please check with your web host about server access. " +"%2$sLearn more%3$s." +msgstr "" + +#: inc/Engine/Preload/Homepage.php:184 +#, php-format +msgid "" +"Preload encountered an error. Could not gather links on %1$s because it returned " +"the following response code: %2$s. %3$sLearn more%4$s." +msgstr "" + +#: inc/Engine/Preload/PreloadSubscriber.php:237 +msgid "Preload: WP Rocket has started preloading your website." +msgstr "" + +#: inc/Engine/Preload/PreloadSubscriber.php:283 +#, php-format +msgid "" +"Preload: %1$s uncached page has now been preloaded. (refresh to see progress)" +msgid_plural "" +"Preload: %1$s uncached pages have now been preloaded. (refresh to see progress)" +msgstr[0] "" +msgstr[1] "" + +#: inc/Engine/Preload/PreloadSubscriber.php:292 +msgid "The following error happened during gathering of the URLs to preload:" +msgid_plural "" +"The following errors happened during gathering of the URLs to preload:" +msgstr[0] "" +msgstr[1] "" + +#: inc/Engine/Preload/PreloadSubscriber.php:344 +#, php-format +msgid "Preload complete: %d pages have been cached." +msgstr "" + +#: inc/Engine/Preload/Sitemap.php:150 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not gather links on %1$s because of " +"the following error: %2$s. %3$sLearn more%4$s." +msgstr "" + +#: inc/Engine/Preload/Sitemap.php:165 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: %2$s. Security measures could be preventing access. " +"%3$sLearn more%4$s." +msgstr "" + +#: inc/Engine/Preload/Sitemap.php:170 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: 404. Please make sure you entered the correct sitemap " +"URL and it is accessible in your browser. %2$sLearn more%3$s." +msgstr "" + +#: inc/Engine/Preload/Sitemap.php:175 +#, php-format +msgid "" +"Sitemap preload encountered an error. %1$s is not accessible to due to the " +"following response code: 500. Please check with your web host about server " +"access. %2$sLearn more%3$s." +msgstr "" + +#: inc/Engine/Preload/Sitemap.php:180 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not gather links on %1$s because it " +"returned the following response code: %2$s. %3$sLearn more%4$s." +msgstr "" + +#: inc/Engine/Preload/Sitemap.php:196 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not collect links from %1$s because " +"the file is empty. %2$sLearn more%3$s." +msgstr "" + +#: inc/Engine/Preload/Sitemap.php:217 +#, php-format +msgid "" +"Sitemap preload encountered an error. Could not collect links from %1$s because " +"of an error during the XML sitemap parsing. %2$sLearn more%3$s." +msgstr "" + +#: inc/Engine/Preload/SitemapPreloadSubscriber.php:120 +#, php-format +msgid "" +"%1$sSimpleXML PHP extension%2$s is not enabled on your server. Please contact " +"your host to enable it before running sitemap-based cache preloading." +msgstr "" + +#: inc/ThirdParty/Hostings/Cloudways.php:82 +#, php-format +msgid "" +"Varnish auto-purge will be automatically enabled once Varnish is enabled on your " +"%s server." +msgstr "" + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:78 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"Please deactivate the following %s option which conflicts with WP Rocket " +"features:" +msgid_plural "" +"Please deactivate the following %s options which conflict with WP Rocket " +"features:" +msgstr[0] "" +msgstr[1] "" + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:151 +#, php-format +msgctxt "Hummingbird notice" +msgid "%1$s %2$sdisable emoji%3$s conflicts with WP Rockets %2$sdisable emoji%3$s" +msgstr "" + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:187 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sGZIP compression%3$s conflicts with WP Rocket %2$sGZIP compression%3$s" +msgstr "" + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:223 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sbrowser caching%3$s conflicts with WP Rocket %2$sbrowser caching%3$s" +msgstr "" + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:255 +#, php-format +msgctxt "Hummingbird notice" +msgid "%1$s %2$spage caching%3$s conflicts with WP Rocket %2$spage caching%3$s" +msgstr "" + +#: inc/ThirdParty/Plugins/Optimization/Hummingbird.php:289 +#, php-format +msgctxt "Hummingbird notice" +msgid "" +"%1$s %2$sasset optimization%3$s conflicts with WP Rocket %2$sfile optimization" +"%3$s" +msgstr "" + +#: inc/ThirdParty/Plugins/Smush.php:110 inc/ThirdParty/Plugins/Smush.php:128 +msgid "Smush" +msgstr "" + +#: inc/admin/admin.php:18 inc/common/admin-bar.php:367 +#: inc/deprecated/deprecated.php:1787 +msgid "Support" +msgstr "" + +#: inc/admin/admin.php:20 +msgid "Docs" +msgstr "" + +#: inc/admin/admin.php:22 inc/common/admin-bar.php:355 +msgid "FAQ" +msgstr "" + +#: inc/admin/admin.php:24 inc/common/admin-bar.php:64 +msgid "Settings" +msgstr "" + +#: inc/admin/admin.php:225 inc/admin/admin.php:240 +#: inc/classes/class-wp-rocket-requirements-check.php:203 +#: inc/classes/class-wp-rocket-requirements-check.php:214 +#, php-format +msgid "%s Update Rollback" +msgstr "" + +#: inc/admin/admin.php:266 +#, php-format +msgid "%1$sReturn to WP Rocket%2$s or %3$sgo to Plugins page%2$s" +msgstr "" + +#: inc/admin/admin.php:503 +msgid "Settings import failed: you do not have the permissions to do this." +msgstr "" + +#: inc/admin/admin.php:507 +msgid "Settings import failed: no file uploaded." +msgstr "" + +#: inc/admin/admin.php:511 +msgid "Settings import failed: incorrect filename." +msgstr "" + +#: inc/admin/admin.php:522 +msgid "Settings import failed: incorrect filetype." +msgstr "" + +#: inc/admin/admin.php:532 +msgid "Settings import failed: " +msgstr "" + +#: inc/admin/admin.php:548 +msgid "Settings import failed: unexpected file content." +msgstr "" + +#: inc/admin/admin.php:569 +msgid "Settings imported and saved." +msgstr "" + +#: inc/admin/options.php:149 +#, php-format +msgid "%1$s: %2$s." +msgstr "" + +#: inc/admin/options.php:159 +msgid "The following pattern is invalid and has been removed:" +msgid_plural "The following patterns are invalid and have been removed:" +msgstr[0] "" +msgstr[1] "" + +#: inc/admin/ui/meta-boxes.php:14 inc/admin/ui/notices.php:768 +#: inc/common/admin-bar.php:85 inc/common/admin-bar.php:137 +#: views/settings/page-sections/dashboard.php:143 +msgid "Clear cache" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:36 +msgid "WP Rocket Options" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:65 +msgid "Never cache this page" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:69 +msgid "Activate these options on this post:" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:72 +msgid "LazyLoad for images" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:73 +msgid "LazyLoad for iframes/videos" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:74 +msgid "Minify/combine CSS" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:75 +msgid "Minify/combine JS" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:77 +msgid "Optimize CSS Delivery" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:78 +msgid "Defer JS" +msgstr "" + +#: inc/admin/ui/meta-boxes.php:85 +#, php-format +msgid "Activate first the %s option." +msgstr "" + +#: inc/admin/ui/meta-boxes.php:101 +#, php-format +msgid "" +"%1$sNote:%2$s None of these options will be applied if this post has been " +"excluded from cache in the global cache settings." +msgstr "" + +#: inc/admin/ui/notices.php:25 inc/admin/ui/notices.php:38 +#, php-format +msgid "" +"%1$s has not been deactivated due to missing writing " +"permissions.
      \n" +"Make %2$s writeable and retry deactivation, or force " +"deactivation now:" +msgstr "" + +#: inc/admin/ui/notices.php:91 +#, php-format +msgid "" +"%s: One or more plugins have been enabled or disabled, clear " +"the cache if they affect the front end of your site." +msgstr "" + +#: inc/admin/ui/notices.php:184 +msgid "" +"WP Rocket Cloudflare Add-on provides similar functionalities. They can not be " +"active at the same time." +msgstr "" + +#: inc/admin/ui/notices.php:208 +#, php-format +msgid "" +"%s: The following plugins are not compatible with this plugin " +"and may cause unexpected results:" +msgstr "" + +#: inc/admin/ui/notices.php:214 +msgid "Deactivate" +msgstr "" + +#: inc/admin/ui/notices.php:256 +msgid "" +"WP Rocket Footer JS is not an official add-on. It prevents some options in WP " +"Rocket from working correctly. Please deactivate it if you have problems." +msgstr "" + +#: inc/admin/ui/notices.php:296 +#, php-format +msgid "" +"Endurance Cache is currently enabled, which will conflict with WP Rocket Cache. " +"Please set the Endurance Cache cache level to Off (Level 0) on the %1$sSettings " +"> General%2$s page to prevent any issues." +msgstr "" + +#: inc/admin/ui/notices.php:317 +#, php-format +msgid "" +"%1$s: A custom permalink structure is required for the plugin to work properly. " +"%2$sGo to permalinks settings%3$s" +msgstr "" + +#: inc/admin/ui/notices.php:364 +#, php-format +msgid "%s could not modify the .htaccess file due to missing writing permissions." +msgstr "" + +#: inc/admin/ui/notices.php:370 inc/admin/ui/notices.php:845 +#, php-format +msgid "Troubleshoot: %1$sHow to make system files writeable%2$s" +msgstr "" + +#: inc/admin/ui/notices.php:372 inc/admin/ui/notices.php:847 +msgid "" +"https://docs.wp-rocket.me/article/626-how-to-make-system-files-htaccess-wp-" +"config-writeable/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" + +#: inc/admin/ui/notices.php:378 +msgid "" +"Don’t worry, WP Rocket’s page caching and settings will still function correctly." +msgstr "" + +#: inc/admin/ui/notices.php:378 +msgid "" +"For optimal performance, adding the following lines into your .htaccess is " +"recommended (not required):" +msgstr "" + +#: inc/admin/ui/notices.php:525 +#, php-format +msgid "" +"%1$s is good to go! %2$sTest your load time%4$s, or visit your %3$ssettings%4$s." +msgstr "" + +#: inc/admin/ui/notices.php:598 +msgid "" +"Would you allow WP Rocket to collect non-sensitive diagnostic data from this " +"website?" +msgstr "" + +#: inc/admin/ui/notices.php:599 +msgid "This would help us to improve WP Rocket for you in the future." +msgstr "" + +#: inc/admin/ui/notices.php:605 +msgid "What info will we collect?" +msgstr "" + +#: inc/admin/ui/notices.php:610 +msgid "" +"Below is a detailed view of all data WP Rocket will collect if granted " +"permission. WP Rocket will never transmit any domain names or email addresses " +"(except for license validation), IP addresses, or third-party API keys." +msgstr "" + +#: inc/admin/ui/notices.php:619 +msgid "Yes, allow" +msgstr "" + +#: inc/admin/ui/notices.php:622 +msgid "No, thanks" +msgstr "" + +#: inc/admin/ui/notices.php:661 +msgid "Thank you!" +msgstr "" + +#: inc/admin/ui/notices.php:666 +msgid "WP Rocket now collects these metrics from your website:" +msgstr "" + +#: inc/admin/ui/notices.php:704 +#, php-format +msgid "%s: Cache cleared." +msgstr "" + +#: inc/admin/ui/notices.php:711 +#, php-format +msgid "%s: Post cache cleared." +msgstr "" + +#: inc/admin/ui/notices.php:718 +#, php-format +msgid "%s: Term cache cleared." +msgstr "" + +#: inc/admin/ui/notices.php:725 +#, php-format +msgid "%s: User cache cleared." +msgstr "" + +#: inc/admin/ui/notices.php:771 +msgid "Stop Preload" +msgstr "" + +#: inc/admin/ui/notices.php:789 +msgid "Force deactivation " +msgstr "" + +#: inc/admin/ui/notices.php:802 +msgid "The following code should have been written to this file:" +msgstr "" + +#: inc/admin/ui/notices.php:833 +#, php-format +msgid "%s cannot configure itself due to missing writing permissions." +msgstr "" + +#: inc/admin/ui/notices.php:839 +#, php-format +msgid "Affected file/folder: %s" +msgstr "" + +#: inc/classes/admin/Database/class-optimization.php:47 +msgid "Transients" +msgstr "" + +#: inc/classes/admin/Database/class-optimization.php:48 +msgid "Tables" +msgstr "" + +#: inc/classes/admin/class-logs.php:124 +msgid "The debug file could not be deleted." +msgstr "" + +#: inc/classes/class-wp-rocket-requirements-check.php:147 +#, php-format +msgid "To function properly, %1$s %2$s requires at least:" +msgstr "" + +#: inc/classes/class-wp-rocket-requirements-check.php:151 +#, php-format +msgid "" +"PHP %1$s. To use this WP Rocket version, please ask your web host how to upgrade " +"your server to PHP %1$s or higher." +msgstr "" + +#: inc/classes/class-wp-rocket-requirements-check.php:156 +#, php-format +msgid "" +"WordPress %1$s. To use this WP Rocket version, please upgrade WordPress to " +"version %1$s or higher." +msgstr "" + +#: inc/classes/class-wp-rocket-requirements-check.php:159 +msgid "" +"If you are not able to upgrade, you can rollback to the previous version by " +"using the button below." +msgstr "" + +#: inc/classes/class-wp-rocket-requirements-check.php:161 +#: inc/deprecated/deprecated.php:1947 +#, php-format +msgid "Re-install version %s" +msgstr "" + +#: inc/classes/dependencies/wp-media/background-processing/wp-background-process.php:439 +#, php-format +msgid "Every %d Minutes" +msgstr "" + +#: inc/classes/logger/class-logger.php:254 inc/classes/logger/class-logger.php:286 +msgid "The log file does not exist." +msgstr "" + +#: inc/classes/logger/class-logger.php:260 inc/classes/logger/class-logger.php:292 +msgid "The log file could not be read." +msgstr "" + +#: inc/classes/logger/class-logger.php:279 +msgid "The logs are not saved into a file." +msgstr "" + +#: inc/classes/subscriber/Cache/class-expired-cache-purge-subscriber.php:128 +msgid "WP Rocket Expired Cache Interval" +msgstr "" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:269 +#, php-format +msgid "" +"You are using %1$s to serve WebP images so you do not need to enable this " +"option. If you prefer to have WP Rocket serve WebP for you instead, please " +"disable them from serving in %1$s. %2$sMore info%3$s" +msgid_plural "" +"You are using %1$s to serve WebP images so you do not need to enable this " +"option. If you prefer to have WP Rocket serve WebP for you instead, please " +"disable them from serving in %1$s. %2$sMore info%3$s" +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:280 +msgid "WebP cache is disabled by filter." +msgstr "" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:290 +#: inc/classes/subscriber/Media/class-webp-subscriber.php:316 +#, php-format +msgid "" +"You are using %1$s to convert images to WebP. If you want WP Rocket to serve " +"them for you, activate this option. %2$sMore info%3$s" +msgid_plural "" +"You are using %1$s to convert images to WebP. If you want WP Rocket to serve " +"them for you, activate this option. %2$sMore info%3$s" +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:302 +#: inc/classes/subscriber/Media/class-webp-subscriber.php:328 +#, php-format +msgid "" +"You are using %1$s to convert images to WebP. WP Rocket will create separate " +"cache files to serve your WebP images. %2$sMore info%3$s" +msgid_plural "" +"You are using %1$s to convert images to WebP. WP Rocket will create separate " +"cache files to serve your WebP images. %2$sMore info%3$s" +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:349 +#, php-format +msgid "" +"You don’t seem to be using a method to create and serve WebP that we are auto-" +"compatible with. If you are not using WebP do not enable this option. %1$sMore " +"info%2$s" +msgstr "" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:354 +msgid "We have not detected any compatible WebP plugin!" +msgstr "" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:357 +#, php-format +msgid "" +"If you activate this option WP Rocket will create separate cache files to serve " +"WebP images. Any WebP images you have on your site will be served from these " +"files to compatible browsers. If you don’t already have WebP images on your site " +"consider using %1$sImagify%3$s or another supported plugin. %2$sMore info%3$s" +msgstr "" + +#: inc/classes/subscriber/Media/class-webp-subscriber.php:369 +msgid "WP Rocket will create separate cache files to serve your WebP images." +msgstr "" + +#: inc/classes/subscriber/Tools/class-detect-missing-tags-subscriber.php:151 +#, php-format +msgid "Failed to detect the following requirement in your theme: closing %1$s." +msgid_plural "" +"Failed to detect the following requirements in your theme: closing %1$s." +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/subscriber/Tools/class-detect-missing-tags-subscriber.php:159 +msgid "" +"https://docs.wp-rocket.me/article/99-pages-not-cached-or-minify-cssjs-not-" +"working/?utm_source=wp_plugin&utm_medium=wp_rocket#theme" +msgstr "" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:98 +msgid "monthly" +msgstr "" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:211 +msgid "Database optimization process is running" +msgstr "" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:242 +msgid "" +"Database optimization process is complete. Everything was already optimized!" +msgstr "" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:245 +msgid "Database optimization process is complete. List of optimized items below:" +msgstr "" + +#: inc/classes/subscriber/admin/Database/class-optimization-subscriber.php:253 +#, php-format +msgid "%1$d %2$s optimized." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:116 +#, php-format +msgid "Sucuri cache purge error: %s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:121 +msgid "" +"The Sucuri cache is being cleared. Note that it may take up to two minutes for " +"it to be fully flushed." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:244 +msgid "Sucuri firewall API key was not found." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:256 +msgid "Sucuri firewall API key is invalid." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:311 +msgid "Error when contacting Sucuri firewall API." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:324 +#, php-format +msgid "Error when contacting Sucuri firewall API. Error message was: %s" +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:338 +msgid "Could not get a response from the Sucuri firewall API." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:352 +msgid "Got an invalid response from the Sucuri firewall API." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:365 +msgid "The Sucuri firewall API returned an unknown error." +msgstr "" + +#: inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php:368 +#, php-format +msgid "The Sucuri firewall API returned the following error: %s" +msgid_plural "The Sucuri firewall API returned the following errors: %s" +msgstr[0] "" +msgstr[1] "" + +#: inc/classes/traits/trait-updater-api-tools.php:53 inc/deprecated/3.3.php:761 +#: inc/deprecated/3.3.php:770 +#, php-format +msgid "" +"An unexpected error occurred. Something may be wrong with WP-Rocket.me or this " +"server’s configuration. If you continue to have problems, contact support." +msgstr "" + +#: inc/common/admin-bar.php:125 inc/common/admin-bar.php:293 +#: inc/functions/i18n.php:41 inc/functions/i18n.php:51 +msgid "All languages" +msgstr "" + +#: inc/common/admin-bar.php:152 +msgid "Clear this post" +msgstr "" + +#: inc/common/admin-bar.php:166 +msgid "Purge this URL" +msgstr "" + +#: inc/common/admin-bar.php:192 +msgid "Purge OPcache" +msgstr "" + +#: inc/common/admin-bar.php:210 +msgid "Clear Cloudflare cache" +msgstr "" + +#: inc/common/admin-bar.php:228 +msgid "Purge Sucuri cache" +msgstr "" + +#: inc/common/admin-bar.php:251 inc/common/admin-bar.php:305 +#: views/settings/page-sections/dashboard.php:163 +msgid "Preload cache" +msgstr "" + +#: inc/common/admin-bar.php:330 views/settings/fields/rocket-cdn.php:55 +msgid "Purge RocketCDN cache" +msgstr "" + +#: inc/common/admin-bar.php:343 views/settings/partials/documentation.php:14 +msgid "Documentation" +msgstr "" + +#: inc/common/purge.php:557 +msgid "OPcache purge failed." +msgstr "" + +#: inc/common/purge.php:562 +msgid "OPcache successfully purged" +msgstr "" + +#: inc/deprecated/3.2.php:52 views/settings/page-sections/imagify.php:36 +msgid "Activate Imagify" +msgstr "" + +#: inc/deprecated/3.2.php:52 +msgid "Install Imagify for Free" +msgstr "" + +#: inc/deprecated/3.2.php:67 +msgid "" +"Speed up your website and boost your SEO by reducing image file sizes without " +"losing quality with Imagify." +msgstr "" + +#: inc/deprecated/3.2.php:72 +msgid "More details" +msgstr "" + +#: inc/deprecated/3.2.php:228 +#, php-format +msgid "Sitemap preload: %d pages have been cached." +msgstr "" + +#: inc/deprecated/3.2.php:261 +#, php-format +msgid "" +"Sitemap preload: %d uncached pages have now been preloaded. (refresh to see " +"progress)" +msgstr "" + +#: inc/deprecated/3.4.php:18 +msgid "Choose a domain from the list" +msgstr "" + +#: inc/deprecated/3.4.php:31 +msgid "No domain available in your Cloudflare account" +msgstr "" + +#: inc/deprecated/3.5.php:81 inc/deprecated/3.5.php:205 +msgid "" +"Curl is disabled on your server. Please ask your host to enable it. This is " +"required for the Cloudflare Add-on to work correctly." +msgstr "" + +#: inc/deprecated/3.5.php:89 +#, php-format +msgid "" +"Cloudflare email, API key and Zone ID are not set. Read the %1$sdocumentation" +"%2$s for further guidance." +msgstr "" + +#: inc/deprecated/3.5.php:216 +#, php-format +msgid "" +"Cloudflare email and API key are not set. Read the %1$sdocumentation%2$s for " +"further guidance." +msgstr "" + +#: inc/deprecated/3.5.php:281 +msgid "Connection to Cloudflare failed" +msgstr "" + +#: inc/deprecated/DeprecatedClassTrait.php:54 +#, php-format +msgid "" +"The called class %1$s is deprecated since version %2$s! Use " +"%3$s instead." +msgstr "" + +#: inc/deprecated/DeprecatedClassTrait.php:65 +#, php-format +msgid "The called class %1$s is deprecated since version %2$s!" +msgstr "" + +#: inc/deprecated/deprecated.php:240 +msgid "JS files with Deferred Loading JavaScript" +msgstr "" + +#: inc/deprecated/deprecated.php:293 +msgid "Add URL" +msgstr "" + +#: inc/deprecated/deprecated.php:1277 views/settings/fields/import-form.php:22 +msgid "" +"Before you can upload your import file, you will need to fix the following error:" +msgstr "" + +#: inc/deprecated/deprecated.php:1288 views/settings/fields/import-form.php:35 +#, php-format +msgid "Choose a file from your computer (maximum size: %s)" +msgstr "" + +#: inc/deprecated/deprecated.php:1385 +msgid "Your Cloudflare credentials are valid." +msgstr "" + +#: inc/deprecated/deprecated.php:1389 +msgid "Your Cloudflare credentials are invalid!" +msgstr "" + +#: inc/deprecated/deprecated.php:1453 +msgid "Save and optimize" +msgstr "" + +#: inc/deprecated/deprecated.php:1453 +msgid "Optimize" +msgstr "" + +#: inc/deprecated/deprecated.php:1464 inc/deprecated/deprecated.php:1666 +msgctxt "screen-reader-text" +msgid "Note:" +msgstr "" + +#: inc/deprecated/deprecated.php:1470 +msgctxt "screen-reader-text" +msgid "Performance tip:" +msgstr "" + +#: inc/deprecated/deprecated.php:1476 +msgctxt "screen-reader-text" +msgid "Third-party feature detected:" +msgstr "" + +#: inc/deprecated/deprecated.php:1488 inc/deprecated/deprecated.php:1672 +msgctxt "screen-reader-text" +msgid "Warning:" +msgstr "" + +#: inc/deprecated/deprecated.php:1501 +msgctxt "button text" +msgid "Download settings" +msgstr "" + +#: inc/deprecated/deprecated.php:1531 +msgid "Replace site's hostname with:" +msgstr "" + +#: inc/deprecated/deprecated.php:1550 inc/deprecated/deprecated.php:1587 +#: inc/deprecated/deprecated.php:1615 views/settings/fields/cnames.php:32 +#: views/settings/fields/cnames.php:64 views/settings/fields/cnames.php:94 +msgid "reserved for" +msgstr "" + +#: inc/deprecated/deprecated.php:1552 inc/deprecated/deprecated.php:1589 +#: inc/deprecated/deprecated.php:1617 views/settings/fields/cnames.php:35 +#: views/settings/fields/cnames.php:67 views/settings/fields/cnames.php:97 +msgid "All files" +msgstr "" + +#: inc/deprecated/deprecated.php:1564 inc/deprecated/deprecated.php:1594 +#: inc/deprecated/deprecated.php:1622 views/settings/fields/cnames.php:47 +#: views/settings/fields/cnames.php:79 views/settings/fields/cnames.php:109 +msgid "Images" +msgstr "" + +#: inc/deprecated/deprecated.php:1635 views/settings/fields/cnames.php:120 +msgid "Add CNAME" +msgstr "" + +#: inc/deprecated/deprecated.php:1706 views/settings/partials/sidebar.php:16 +msgid "Watch the video" +msgstr "" + +#: inc/deprecated/deprecated.php:1771 +msgid "Basic" +msgstr "" + +#: inc/deprecated/deprecated.php:1772 +msgid "Static Files" +msgstr "" + +#: inc/deprecated/deprecated.php:1774 +msgid "Advanced" +msgstr "" + +#: inc/deprecated/deprecated.php:1944 +#, php-format +msgid "" +"%1$s %2$s requires at least PHP %3$s to function properly. To use this version, " +"please ask your web host how to upgrade your server to PHP %3$s or higher. If " +"you are not able to upgrade, you can rollback to the previous version by using " +"the button below." +msgstr "" + +#: inc/functions/admin.php:23 +msgid "" +"There seems to be an issue validating your license. Please see the error message " +"below." +msgid_plural "" +"There seems to be an issue validating your license. You can see the error " +"messages below." +msgstr[0] "" +msgstr[1] "" + +#: inc/functions/admin.php:363 +msgid "Server type:" +msgstr "" + +#: inc/functions/admin.php:372 +msgid "PHP version number:" +msgstr "" + +#: inc/functions/admin.php:381 +msgid "WordPress version number:" +msgstr "" + +#: inc/functions/admin.php:390 +msgid "WordPress multisite:" +msgstr "" + +#: inc/functions/admin.php:399 +msgid "Current theme:" +msgstr "" + +#: inc/functions/admin.php:408 +msgid "Current site language:" +msgstr "" + +#: inc/functions/admin.php:417 +msgid "Active plugins:" +msgstr "" + +#: inc/functions/admin.php:420 +msgid "Plugin names of all active plugins" +msgstr "" + +#: inc/functions/admin.php:426 +msgid "Anonymized WP Rocket settings:" +msgstr "" + +#: inc/functions/admin.php:429 +msgid "Which WP Rocket settings are active" +msgstr "" + +#: inc/functions/options.php:549 inc/functions/options.php:588 +msgid "" +"License validation failed. Our server could not resolve the request from your " +"website." +msgstr "" + +#: inc/functions/options.php:549 inc/functions/options.php:588 +#, php-format +msgid "" +"Try clicking %1$sSave Changes%2$s below. If the error persists, follow %3$sthis " +"guide%4$s." +msgstr "" + +#: inc/functions/options.php:565 +msgid "" +"License validation failed. You may be using a nulled version of the plugin. " +"Please do the following:" +msgstr "" + +#: inc/functions/options.php:565 inc/functions/options.php:607 +#, php-format +msgid "Login to your WP Rocket %1$saccount%2$s" +msgstr "" + +#: inc/functions/options.php:565 inc/functions/options.php:607 +msgid "Download the zip file" +msgstr "" + +#: inc/functions/options.php:565 inc/functions/options.php:607 +msgid "Reinstall" +msgstr "" + +#: inc/functions/options.php:565 +#, php-format +msgid "If you do not have a WP Rocket account, please %1$spurchase a license%2$s." +msgstr "" + +#: inc/functions/options.php:573 +msgid "" +"License validation failed. This user account does not exist in our database." +msgstr "" + +#: inc/functions/options.php:573 +msgid "To resolve, please contact support." +msgstr "" + +#: inc/functions/options.php:581 +msgid "License validation failed. This user account is blocked." +msgstr "" + +#: inc/functions/options.php:581 +#, php-format +msgid "Please see %1$sthis guide%2$s for more info." +msgstr "" + +#: inc/functions/options.php:601 +msgid "Your license is not valid." +msgstr "" + +#: inc/functions/options.php:601 +#, php-format +msgid "Make sure you have an active %1$sWP Rocket license%2$s." +msgstr "" + +#: inc/functions/options.php:603 +msgid "You have added as many sites as your current license allows." +msgstr "" + +#: inc/functions/options.php:603 +#, php-format +msgid "" +"Upgrade your %1$saccount%2$s or %3$stransfer your license%2$s to this domain." +msgstr "" + +#: inc/functions/options.php:605 +msgid "This website is not allowed." +msgstr "" + +#: inc/functions/options.php:605 +#, php-format +msgid "Please %1$scontact support%2$s." +msgstr "" + +#: inc/functions/options.php:607 +msgid "This license key is not recognized." +msgstr "" + +#: inc/functions/options.php:607 +#, php-format +msgid "If the issue persists, please %1$scontact support%2$s." +msgstr "" + +#: inc/functions/options.php:613 +#, php-format +msgid "License validation failed: %s" +msgstr "" + +#: inc/vendors/classes/class-imagify-partner.php:531 +msgid "Plugin installed successfully." +msgstr "" + +#: inc/vendors/classes/class-imagify-partner.php:532 +msgid "Sorry, you are not allowed to install plugins on this site." +msgstr "" + +#: inc/vendors/classes/class-imagify-partner.php:533 +msgid "Sorry, you are not allowed to do that." +msgstr "" + +#: inc/vendors/classes/class-imagify-partner.php:534 +msgid "Plugin install failed." +msgstr "" + +#: inc/vendors/classes/class-imagify-partner.php:535 +msgid "Go back" +msgstr "" + +#: views/cpcss/activate-cpcss-mobile.php:13 +msgid "Optimize CSS delivery for mobile" +msgstr "" + +#: views/cpcss/activate-cpcss-mobile.php:14 +msgid "" +"Your website currently uses the same Critical Path CSS for both desktop and " +"mobile." +msgstr "" + +#: views/cpcss/activate-cpcss-mobile.php:15 +msgid "Click the button to enable mobile-specific CPCSS for your site." +msgstr "" + +#: views/cpcss/activate-cpcss-mobile.php:20 +#: views/settings/enable-google-fonts.php:19 +#, php-format +msgid "" +"This is a one-time action and this button will be removed afterwards. %1$sMore " +"info%2$s" +msgstr "" + +#: views/cpcss/activate-cpcss-mobile.php:30 +#, php-format +msgid "Your site is now using mobile-specific critical path CSS. %1$sMore info%2$s" +msgstr "" + +#: views/cpcss/activate-cpcss-mobile.php:39 +msgid "Generate Mobile Specific CPCSS" +msgstr "" + +#: views/cpcss/metabox/container.php:19 +msgid "Critical Path CSS" +msgstr "" + +#: views/cpcss/metabox/generate.php:23 +#, php-format +msgid "Generate specific Critical Path CSS for this post. %1$sMore info%2$s" +msgstr "" + +#: views/cpcss/metabox/generate.php:33 +#, php-format +msgid "This post uses specific Critical Path CSS. %1$sMore info%2$s" +msgstr "" + +#: views/cpcss/metabox/generate.php:56 +msgid "Revert back to the default CPCSS" +msgstr "" + +#: views/deactivation-intent/form.php:21 +msgid "Return" +msgstr "" + +#: views/deactivation-intent/form.php:22 +msgid "WP Rocket feedback" +msgstr "" + +#: views/deactivation-intent/form.php:24 +msgid "Close" +msgstr "" + +#: views/deactivation-intent/form.php:28 +msgid "May we have a little info about why you are deactivating?" +msgstr "" + +#: views/deactivation-intent/form.php:35 +#, php-format +msgid "%1$sIt is a temporary deactivation.%2$s I am just debugging an issue." +msgstr "" + +#: views/deactivation-intent/form.php:44 +#, php-format +msgid "The plugin %1$sbroke my layout%2$s or some functionality." +msgstr "" + +#: views/deactivation-intent/form.php:53 +#, php-format +msgid "My PageSpeed or GTMetrix %1$sscore did not improve.%2$s" +msgstr "" + +#: views/deactivation-intent/form.php:59 +msgid "I did not notice a difference in loading time." +msgstr "" + +#: views/deactivation-intent/form.php:66 +#, php-format +msgid "The plugin is %1$stoo complicated to configure.%2$s" +msgstr "" + +#: views/deactivation-intent/form.php:72 +msgid "My host already has its own caching system." +msgstr "" + +#: views/deactivation-intent/form.php:74 +msgid "What is the name of your web host?" +msgstr "" + +#: views/deactivation-intent/form.php:79 +msgid "Other" +msgstr "" + +#: views/deactivation-intent/form.php:81 +msgid "Let us know why you are deactivating WP Rocket so we can improve the plugin" +msgstr "" + +#: views/deactivation-intent/form.php:89 +msgid "The plugin broke my layout or some functionality" +msgstr "" + +#: views/deactivation-intent/form.php:90 +msgid "" +"This type of issue can usually be fixed by deactivating some options in WP " +"Rocket." +msgstr "" + +#: views/deactivation-intent/form.php:91 +msgid "" +"Click \"Apply Safe Mode\" to quickly disable LazyLoad, File Optimization, Embeds " +"and CDN options. Then check your site to see if the issue has resolved." +msgstr "" + +#: views/deactivation-intent/form.php:93 +msgid "Apply safe mode" +msgstr "" + +#: views/deactivation-intent/form.php:96 +msgid "Safe mode applied." +msgstr "" + +#: views/deactivation-intent/form.php:97 +msgid "Review your site in a private/logged out browser window." +msgstr "" + +#: views/deactivation-intent/form.php:102 +#, php-format +msgid "" +"Is the issue fixed? Now you can reactivate options one at a time to determine " +"which one caused the problem. %1$sMore info%2$s" +msgstr "" + +#: views/deactivation-intent/form.php:107 +msgid "My PageSpeed or GT Metrix score did not improve" +msgstr "" + +#: views/deactivation-intent/form.php:108 +msgid "" +"WP Rocket makes your site faster. The PageSpeed grade or GTMetrix score are not " +"indicators of speed. Neither your real visitors, nor Google will ever see your " +"website’s “grade”. Speed is the only metric that matters for SEO and conversions." +msgstr "" + +#: views/deactivation-intent/form.php:109 +msgid "Yoast, the expert on all things related to SEO for WordPress states:" +msgstr "" + +#: views/deactivation-intent/form.php:110 +msgid "" +"[Google] just looks at how fast your website loads for users, so you don’t have " +"to obsess over that specific score. You have to make sure your website is as " +"fast as you can get it." +msgstr "" + +#: views/deactivation-intent/form.php:116 +#, php-format +msgid "" +"How to measure the load time of your site: %1$shttps://wp-rocket.me/blog/" +"correctly-measure-websites-page-load-time/%2$s" +msgstr "" + +#: views/deactivation-intent/form.php:122 +#, php-format +msgid "" +"Why you should not be chasing a PageSpeed score: %1$shttps://wp-rocket.me/blog/" +"the-truth-about-google-pagespeed-insights/%2$s" +msgstr "" + +#: views/deactivation-intent/form.php:127 +msgid "I did not notice a difference in loading time" +msgstr "" + +#: views/deactivation-intent/form.php:128 +msgid "" +"Make sure you look at your site while logged out to see the fast, cached pages!" +msgstr "" + +#: views/deactivation-intent/form.php:132 +#, php-format +msgid "" +"The best way to see the improvement WP Rocket provides is to perform speed " +"tests. Follow this guide to correctly measure the load time of your website: " +"%1$shttps://wp-rocket.me/blog/correctly-measure-websites-page-load-time/%2$s" +msgstr "" + +#: views/deactivation-intent/form.php:137 +msgid "The plugin is too complicated to configure" +msgstr "" + +#: views/deactivation-intent/form.php:138 +msgid "We are sorry to hear you are finding it difficult to use WP Rocket." +msgstr "" + +#: views/deactivation-intent/form.php:139 +#, php-format +msgid "" +"WP Rocket is the only caching plugin that provides 80% of best practices in " +"speed optimization, by default. That means you do not have to do anything " +"besides activate WP Rocket and your site will already be faster!" +msgstr "" + +#: views/deactivation-intent/form.php:140 +msgid "" +"The additional options are not required for a fast site, they are for fine-" +"tuning." +msgstr "" + +#: views/deactivation-intent/form.php:144 +#, php-format +msgid "" +"To see the benefit WP Rocket is already providing, measure the speed of your " +"site using a tool like Pingdom: %1$shttps://wp-rocket.me/blog/correctly-measure-" +"websites-page-load-time/%2$s" +msgstr "" + +#: views/deactivation-intent/form.php:151 +msgid "Send & Deactivate" +msgstr "" + +#: views/deactivation-intent/form.php:152 +msgid "Cancel" +msgstr "" + +#: views/deactivation-intent/form.php:154 +msgid "Skip & Deactivate" +msgstr "" + +#: views/settings/enable-google-fonts.php:13 +msgid "Enable Google Font Optimization" +msgstr "" + +#: views/settings/enable-google-fonts.php:14 +msgid "" +"Improves font performance and combines multiple font requests to reduce the " +"number of HTTP requests." +msgstr "" + +#: views/settings/enable-google-fonts.php:29 +#, php-format +msgid "Google Fonts Optimization is now enabled for your site. %1$sMore info%2$s" +msgstr "" + +#: views/settings/enable-google-fonts.php:38 +msgid "Optimize Google Fonts" +msgstr "" + +#: views/settings/fields/cache-lifespan.php:26 +msgid "Clear cache after" +msgstr "" + +#: views/settings/fields/cnames.php:49 views/settings/fields/cnames.php:81 +#: views/settings/fields/cnames.php:111 +msgid "CSS & JavaScript" +msgstr "" + +#: views/settings/fields/cnames.php:50 views/settings/fields/cnames.php:82 +#: views/settings/fields/cnames.php:112 +msgid "JavaScript" +msgstr "" + +#: views/settings/fields/cnames.php:51 views/settings/fields/cnames.php:83 +#: views/settings/fields/cnames.php:113 +msgid "CSS" +msgstr "" + +#: views/settings/fields/import-form.php:29 +msgid "Import settings" +msgstr "" + +#: views/settings/fields/one-click-addon.php:40 +#: views/settings/fields/rocket-addon.php:31 +#: views/settings/fields/sliding-checkbox.php:25 views/settings/page.php:55 +msgctxt "Active state of checkbox" +msgid "On" +msgstr "" + +#: views/settings/fields/one-click-addon.php:41 +#: views/settings/fields/rocket-addon.php:32 +#: views/settings/fields/sliding-checkbox.php:26 views/settings/page.php:56 +msgctxt "Inactive state of checkbox" +msgid "Off" +msgstr "" + +#: views/settings/fields/one-click-addon.php:42 +#: views/settings/fields/rocket-addon.php:33 +msgid "Add-on status" +msgstr "" + +#: views/settings/fields/rocket-addon.php:56 +msgid "Modify options" +msgstr "" + +#: views/settings/fields/rocket-cdn.php:29 views/settings/fields/rocket-cdn.php:41 +msgid "CDN CNAME" +msgstr "" + +#: views/settings/fields/rocket-cdn.php:62 +#, php-format +msgid "Purges RocketCDN cached resources for your website. %s" +msgstr "" + +#: views/settings/fields/rocket-cdn.php:63 +#: views/settings/page-sections/cloudflare.php:36 +#: views/settings/page-sections/sucuri.php:37 +msgid "Learn more" +msgstr "" + +#: views/settings/fields/rocket-cdn.php:72 +msgid "Clear all RocketCDN cache files" +msgstr "" + +#: views/settings/page-sections/cloudflare.php:27 +msgid "Cloudflare Cache" +msgstr "" + +#: views/settings/page-sections/cloudflare.php:35 +#: views/settings/page-sections/sucuri.php:36 +#, php-format +msgid "Purges cached resources for your website. %s" +msgstr "" + +#: views/settings/page-sections/cloudflare.php:36 +msgid "https://support.cloudflare.com/hc/en-us/articles/200169246" +msgstr "" + +#: views/settings/page-sections/cloudflare.php:45 +msgid "Clear all Cloudflare cache files" +msgstr "" + +#: views/settings/page-sections/dashboard.php:38 +msgid "Congratulations!" +msgstr "" + +#: views/settings/page-sections/dashboard.php:40 +msgid "WP Rocket is now activated and already working for you." +msgstr "" + +#: views/settings/page-sections/dashboard.php:42 +msgid "Your website should be loading faster now!" +msgstr "" + +#: views/settings/page-sections/dashboard.php:44 +#, php-format +msgid "" +"To guarantee fast websites, WP Rocket applies 80% of web performance best " +"practices." +msgstr "" + +#: views/settings/page-sections/dashboard.php:44 +msgid "We also enable options that provide immediate benefits to your website." +msgstr "" + +#: views/settings/page-sections/dashboard.php:45 +msgid "Continue to the options to further optimize your site!" +msgstr "" + +#: views/settings/page-sections/dashboard.php:62 +msgid "My Account" +msgstr "" + +#: views/settings/page-sections/dashboard.php:68 +msgid "Refresh info" +msgstr "" + +#: views/settings/page-sections/dashboard.php:93 +msgid "Expiration Date" +msgstr "" + +#: views/settings/page-sections/dashboard.php:103 +msgid "View my account" +msgstr "" + +#: views/settings/page-sections/dashboard.php:130 +msgid "Quick Actions" +msgstr "" + +#: views/settings/page-sections/dashboard.php:137 +msgid "Remove all cached files" +msgstr "" + +#: views/settings/page-sections/dashboard.php:157 +msgid "Start cache preloading" +msgstr "" + +#: views/settings/page-sections/dashboard.php:183 +msgid "Purge OPCache content" +msgstr "" + +#: views/settings/page-sections/dashboard.php:189 +msgid "Purge OPCache" +msgstr "" + +#: views/settings/page-sections/dashboard.php:200 +#: views/settings/page-sections/dashboard.php:206 +msgid "Regenerate Critical CSS" +msgstr "" + +#: views/settings/page-sections/dashboard.php:223 +msgid "Frequently Asked Questions" +msgstr "" + +#: views/settings/page-sections/dashboard.php:236 +msgid "Still cannot find a solution?" +msgstr "" + +#: views/settings/page-sections/dashboard.php:237 +msgid "" +"Submit a ticket and get help from our friendly and knowledgeable Rocketeers." +msgstr "" + +#: views/settings/page-sections/dashboard.php:245 +msgid "Ask support" +msgstr "" + +#: views/settings/page-sections/database.php:25 +msgid "Backup your database before you run a cleanup!" +msgstr "" + +#: views/settings/page-sections/database.php:26 +msgid "" +"Once a database optimization has been performed, there is no way to undo it." +msgstr "" + +#: views/settings/page-sections/database.php:28 +msgid "Save Changes and Optimize" +msgstr "" + +#: views/settings/page-sections/imagify.php:21 +#, php-format +msgid "" +"%1$sWP ROCKET%2$s created %3$sIMAGIFY%4$s %1$sfor best-in-class image " +"optimization.%2$s" +msgstr "" + +#: views/settings/page-sections/imagify.php:24 +msgid "" +"Compress image to make your website faster, all while maintaining image quality." +msgstr "" + +#: views/settings/page-sections/imagify.php:25 +msgid "More on Imagify:" +msgstr "" + +#: views/settings/page-sections/imagify.php:27 +msgid "Imagify Plugin Page" +msgstr "" + +#: views/settings/page-sections/imagify.php:28 +msgid "Imagify Website" +msgstr "" + +#: views/settings/page-sections/imagify.php:29 +msgid "Review of Image Compression Plugins" +msgstr "" + +#: views/settings/page-sections/imagify.php:38 +msgid "Install Imagify" +msgstr "" + +#: views/settings/page-sections/license.php:22 +msgid "WP Rocket was not able to automatically validate your license." +msgstr "" + +#: views/settings/page-sections/license.php:29 +#, php-format +msgid "Follow this %1$s, or contact %2$s to get the engine started." +msgstr "" + +#: views/settings/page-sections/license.php:32 +#, php-format +msgid "%1$s%2$s%3$stutorial%4$s" +msgstr "" + +#: views/settings/page-sections/license.php:34 +msgid "" +"https://docs.wp-rocket.me/article/100-resolving-problems-with-license-" +"validation/?utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" + +#: views/settings/page-sections/license.php:40 +#, php-format +msgid "%1$s%2$s%3$ssupport%4$s" +msgstr "" + +#: views/settings/page-sections/sucuri.php:46 +msgid "Clear all Sucuri cache files" +msgstr "" + +#: views/settings/page-sections/tools.php:20 +#, php-format +msgid "Files size: %1$s. Number of entries: %2$s." +msgstr "" + +#: views/settings/page-sections/tools.php:23 +#, php-format +msgid "%1$sDownload the file%2$s." +msgstr "" + +#: views/settings/page-sections/tools.php:26 +#, php-format +msgid "%1$sDelete the file%2$s." +msgstr "" + +#: views/settings/page-sections/tools.php:37 +msgid "Export settings" +msgstr "" + +#: views/settings/page-sections/tools.php:38 +msgid "Download a backup file of your settings" +msgstr "" + +#: views/settings/page-sections/tools.php:46 +msgid "Download settings" +msgstr "" + +#: views/settings/page-sections/tools.php:60 +msgid "Rollback" +msgstr "" + +#: views/settings/page-sections/tools.php:64 +#, php-format +msgid "Has version %s caused an issue on your website?" +msgstr "" + +#: views/settings/page-sections/tools.php:69 +#, php-format +msgid "" +"You can rollback to the previous major version here.%sThen send us a support " +"request." +msgstr "" + +#: views/settings/page-sections/tools.php:80 +#, php-format +msgid "Reinstall version %s" +msgstr "" + +#: views/settings/page-sections/tools.php:106 +msgid "Debug mode" +msgstr "" + +#: views/settings/page-sections/tools.php:111 +msgid "Create a debug log file." +msgstr "" + +#: views/settings/page-sections/tutorials.php:13 +#: views/settings/partials/getting-started.php:18 +msgid "Getting Started" +msgstr "" + +#: views/settings/page-sections/tutorials.php:15 +msgid "Getting Started with WP Rocket" +msgstr "" + +#: views/settings/page-sections/tutorials.php:16 +#: views/settings/partials/getting-started.php:12 +msgid "Finding the Best Settings for Your Site" +msgstr "" + +#: views/settings/page-sections/tutorials.php:17 +#: views/settings/partials/getting-started.php:13 +msgid "How to Check if WP Rocket is Caching Your Site" +msgstr "" + +#: views/settings/page-sections/tutorials.php:18 +#: views/settings/partials/getting-started.php:14 +msgid "How to Measure the Speed of Your Site" +msgstr "" + +#: views/settings/page-sections/tutorials.php:24 +msgid "Troubleshooting Display Issues with File Optimization" +msgstr "" + +#: views/settings/page-sections/tutorials.php:25 +msgid "How to Find the Right JavaScript to Exclude" +msgstr "" + +#: views/settings/page-sections/tutorials.php:26 +msgid "How External Content Slows Your Site" +msgstr "" + +#: views/settings/page-sections/tutorials.php:32 +msgid "How Preloading Works" +msgstr "" + +#: views/settings/page-sections/tutorials.php:38 +msgid "Set Up the Cloudflare Add-on" +msgstr "" + +#: views/settings/page.php:16 +msgid "WP Rocket Settings" +msgstr "" + +#: views/settings/page.php:30 +#, php-format +msgid "version %s" +msgstr "" + +#: views/settings/page.php:57 +msgid "Show Sidebar" +msgstr "" + +#: views/settings/page.php:76 +msgid "Thanks for choosing to participate in the WP Rocket beta program!" +msgstr "" + +#: views/settings/page.php:77 +msgid "" +"A beta version is usually one that has new features and improvements, but we " +"want to test it a little more before full launch." +msgstr "" + +#: views/settings/page.php:78 +msgid "" +"We’d love it if you took our beta versions for a ride, but please keep in mind " +"that it might be less stable than our other releases. Don’t worry, you can " +"switch back to a full release version at any time." +msgstr "" + +#: views/settings/page.php:79 +msgid "" +"Your mission: please send all feedback about our beta versions, including bug " +"reports, to support@wp-rocket.me" +msgstr "" + +#: views/settings/page.php:81 +msgid "If you don’t want to join the beta program, simply close this window." +msgstr "" + +#: views/settings/page.php:83 +msgid "Activate Rocket Tester" +msgstr "" + +#: views/settings/page.php:94 +msgid "" +"Below is a detailed view of all data WP Rocket will collect if granted " +"permission." +msgstr "" + +#: views/settings/page.php:97 +msgid "" +"WP Rocket will never transmit any domain names or email addresses (except for " +"license validation), IP addresses, or third-party API keys." +msgstr "" + +#: views/settings/page.php:99 +msgid "Activate Rocket analytics" +msgstr "" + +#: views/settings/partials/documentation.php:15 +msgid "It is a great starting point to fix some of the most common issues." +msgstr "" + +#: views/settings/partials/documentation.php:22 +msgid "Read the documentation" +msgstr "" + +#: views/settings/partials/getting-started.php:11 +msgid "What WP Rocket Does For You By Default" +msgstr "" + +#: views/settings/partials/sidebar.php:12 +msgid "How to correctly measure your website’s loading time" +msgstr "" + +#: views/settings/partials/sidebar.php:14 +msgid "Check our tutorial and learn how to measure the speed of your site." +msgstr "" + +#: views/settings/partials/sidebar.php:19 +msgid "" +"Learn how to use best practices to correctly measure your site's performance." +msgstr "" + +#: views/settings/partials/sidebar.php:20 +msgid "" +"https://wp-rocket.me/blog/correctly-measure-websites-page-load-time/?" +"utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" + +#: views/settings/partials/sidebar.php:20 +msgid "Read our guide" +msgstr "" + +#: views/settings/partials/sidebar.php:23 +msgid "Why Google PageSpeed grade should not matter" +msgstr "" + +#: views/settings/partials/sidebar.php:24 +msgid "" +"https://wp-rocket.me/blog/the-truth-about-google-pagespeed-insights/?" +"utm_source=wp_plugin&utm_medium=wp_rocket" +msgstr "" + +#: views/settings/partials/sidebar.php:24 +msgid "Read more" +msgstr "" + +#: views/settings/partials/sidebar.php:29 +msgid "You have not activated logged-in user cache." +msgstr "" + +#: views/settings/partials/sidebar.php:30 +msgid "Use a private browser to check your website's speed and visual appearance." +msgstr "" + +#: views/settings/sections/addons-container.php:24 +#: views/settings/sections/fields-container.php:28 +msgid "Need Help?" +msgstr "" diff --git a/wp-content/plugins/wp-rocket/uninstall.php b/wp-content/plugins/wp-rocket/uninstall.php new file mode 100644 index 0000000..1069330 --- /dev/null +++ b/wp-content/plugins/wp-rocket/uninstall.php @@ -0,0 +1,16 @@ +uninstall(); diff --git a/wp-content/plugins/wp-rocket/vendor/autoload.php b/wp-content/plugins/wp-rocket/vendor/autoload.php new file mode 100644 index 0000000..8200387 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/autoload.php @@ -0,0 +1,7 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Autoload; + +/** + * ClassLoader implements a PSR-0, PSR-4 and classmap class loader. + * + * $loader = new \Composer\Autoload\ClassLoader(); + * + * // register classes with namespaces + * $loader->add('Symfony\Component', __DIR__.'/component'); + * $loader->add('Symfony', __DIR__.'/framework'); + * + * // activate the autoloader + * $loader->register(); + * + * // to enable searching the include path (eg. for PEAR packages) + * $loader->setUseIncludePath(true); + * + * In this example, if you try to use a class in the Symfony\Component + * namespace or one of its children (Symfony\Component\Console for instance), + * the autoloader will first look for the class under the component/ + * directory, and it will then fallback to the framework/ directory if not + * found before giving up. + * + * This class is loosely based on the Symfony UniversalClassLoader. + * + * @author Fabien Potencier + * @author Jordi Boggiano + * @see http://www.php-fig.org/psr/psr-0/ + * @see http://www.php-fig.org/psr/psr-4/ + */ +class ClassLoader +{ + // PSR-4 + private $prefixLengthsPsr4 = array(); + private $prefixDirsPsr4 = array(); + private $fallbackDirsPsr4 = array(); + + // PSR-0 + private $prefixesPsr0 = array(); + private $fallbackDirsPsr0 = array(); + + private $useIncludePath = false; + private $classMap = array(); + private $classMapAuthoritative = false; + private $missingClasses = array(); + private $apcuPrefix; + + public function getPrefixes() + { + if (!empty($this->prefixesPsr0)) { + return call_user_func_array('array_merge', array_values($this->prefixesPsr0)); + } + + return array(); + } + + public function getPrefixesPsr4() + { + return $this->prefixDirsPsr4; + } + + public function getFallbackDirs() + { + return $this->fallbackDirsPsr0; + } + + public function getFallbackDirsPsr4() + { + return $this->fallbackDirsPsr4; + } + + public function getClassMap() + { + return $this->classMap; + } + + /** + * @param array $classMap Class to filename map + */ + public function addClassMap(array $classMap) + { + if ($this->classMap) { + $this->classMap = array_merge($this->classMap, $classMap); + } else { + $this->classMap = $classMap; + } + } + + /** + * Registers a set of PSR-0 directories for a given prefix, either + * appending or prepending to the ones previously set for this prefix. + * + * @param string $prefix The prefix + * @param array|string $paths The PSR-0 root directories + * @param bool $prepend Whether to prepend the directories + */ + public function add($prefix, $paths, $prepend = false) + { + if (!$prefix) { + if ($prepend) { + $this->fallbackDirsPsr0 = array_merge( + (array) $paths, + $this->fallbackDirsPsr0 + ); + } else { + $this->fallbackDirsPsr0 = array_merge( + $this->fallbackDirsPsr0, + (array) $paths + ); + } + + return; + } + + $first = $prefix[0]; + if (!isset($this->prefixesPsr0[$first][$prefix])) { + $this->prefixesPsr0[$first][$prefix] = (array) $paths; + + return; + } + if ($prepend) { + $this->prefixesPsr0[$first][$prefix] = array_merge( + (array) $paths, + $this->prefixesPsr0[$first][$prefix] + ); + } else { + $this->prefixesPsr0[$first][$prefix] = array_merge( + $this->prefixesPsr0[$first][$prefix], + (array) $paths + ); + } + } + + /** + * Registers a set of PSR-4 directories for a given namespace, either + * appending or prepending to the ones previously set for this namespace. + * + * @param string $prefix The prefix/namespace, with trailing '\\' + * @param array|string $paths The PSR-4 base directories + * @param bool $prepend Whether to prepend the directories + * + * @throws \InvalidArgumentException + */ + public function addPsr4($prefix, $paths, $prepend = false) + { + if (!$prefix) { + // Register directories for the root namespace. + if ($prepend) { + $this->fallbackDirsPsr4 = array_merge( + (array) $paths, + $this->fallbackDirsPsr4 + ); + } else { + $this->fallbackDirsPsr4 = array_merge( + $this->fallbackDirsPsr4, + (array) $paths + ); + } + } elseif (!isset($this->prefixDirsPsr4[$prefix])) { + // Register directories for a new namespace. + $length = strlen($prefix); + if ('\\' !== $prefix[$length - 1]) { + throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); + } + $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; + $this->prefixDirsPsr4[$prefix] = (array) $paths; + } elseif ($prepend) { + // Prepend directories for an already registered namespace. + $this->prefixDirsPsr4[$prefix] = array_merge( + (array) $paths, + $this->prefixDirsPsr4[$prefix] + ); + } else { + // Append directories for an already registered namespace. + $this->prefixDirsPsr4[$prefix] = array_merge( + $this->prefixDirsPsr4[$prefix], + (array) $paths + ); + } + } + + /** + * Registers a set of PSR-0 directories for a given prefix, + * replacing any others previously set for this prefix. + * + * @param string $prefix The prefix + * @param array|string $paths The PSR-0 base directories + */ + public function set($prefix, $paths) + { + if (!$prefix) { + $this->fallbackDirsPsr0 = (array) $paths; + } else { + $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths; + } + } + + /** + * Registers a set of PSR-4 directories for a given namespace, + * replacing any others previously set for this namespace. + * + * @param string $prefix The prefix/namespace, with trailing '\\' + * @param array|string $paths The PSR-4 base directories + * + * @throws \InvalidArgumentException + */ + public function setPsr4($prefix, $paths) + { + if (!$prefix) { + $this->fallbackDirsPsr4 = (array) $paths; + } else { + $length = strlen($prefix); + if ('\\' !== $prefix[$length - 1]) { + throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); + } + $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; + $this->prefixDirsPsr4[$prefix] = (array) $paths; + } + } + + /** + * Turns on searching the include path for class files. + * + * @param bool $useIncludePath + */ + public function setUseIncludePath($useIncludePath) + { + $this->useIncludePath = $useIncludePath; + } + + /** + * Can be used to check if the autoloader uses the include path to check + * for classes. + * + * @return bool + */ + public function getUseIncludePath() + { + return $this->useIncludePath; + } + + /** + * Turns off searching the prefix and fallback directories for classes + * that have not been registered with the class map. + * + * @param bool $classMapAuthoritative + */ + public function setClassMapAuthoritative($classMapAuthoritative) + { + $this->classMapAuthoritative = $classMapAuthoritative; + } + + /** + * Should class lookup fail if not found in the current class map? + * + * @return bool + */ + public function isClassMapAuthoritative() + { + return $this->classMapAuthoritative; + } + + /** + * APCu prefix to use to cache found/not-found classes, if the extension is enabled. + * + * @param string|null $apcuPrefix + */ + public function setApcuPrefix($apcuPrefix) + { + $this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null; + } + + /** + * The APCu prefix in use, or null if APCu caching is not enabled. + * + * @return string|null + */ + public function getApcuPrefix() + { + return $this->apcuPrefix; + } + + /** + * Registers this instance as an autoloader. + * + * @param bool $prepend Whether to prepend the autoloader or not + */ + public function register($prepend = false) + { + spl_autoload_register(array($this, 'loadClass'), true, $prepend); + } + + /** + * Unregisters this instance as an autoloader. + */ + public function unregister() + { + spl_autoload_unregister(array($this, 'loadClass')); + } + + /** + * Loads the given class or interface. + * + * @param string $class The name of the class + * @return bool|null True if loaded, null otherwise + */ + public function loadClass($class) + { + if ($file = $this->findFile($class)) { + includeFile($file); + + return true; + } + } + + /** + * Finds the path to the file where the class is defined. + * + * @param string $class The name of the class + * + * @return string|false The path if found, false otherwise + */ + public function findFile($class) + { + // class map lookup + if (isset($this->classMap[$class])) { + return $this->classMap[$class]; + } + if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) { + return false; + } + if (null !== $this->apcuPrefix) { + $file = apcu_fetch($this->apcuPrefix.$class, $hit); + if ($hit) { + return $file; + } + } + + $file = $this->findFileWithExtension($class, '.php'); + + // Search for Hack files if we are running on HHVM + if (false === $file && defined('HHVM_VERSION')) { + $file = $this->findFileWithExtension($class, '.hh'); + } + + if (null !== $this->apcuPrefix) { + apcu_add($this->apcuPrefix.$class, $file); + } + + if (false === $file) { + // Remember that this class does not exist. + $this->missingClasses[$class] = true; + } + + return $file; + } + + private function findFileWithExtension($class, $ext) + { + // PSR-4 lookup + $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext; + + $first = $class[0]; + if (isset($this->prefixLengthsPsr4[$first])) { + $subPath = $class; + while (false !== $lastPos = strrpos($subPath, '\\')) { + $subPath = substr($subPath, 0, $lastPos); + $search = $subPath . '\\'; + if (isset($this->prefixDirsPsr4[$search])) { + $pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1); + foreach ($this->prefixDirsPsr4[$search] as $dir) { + if (file_exists($file = $dir . $pathEnd)) { + return $file; + } + } + } + } + } + + // PSR-4 fallback dirs + foreach ($this->fallbackDirsPsr4 as $dir) { + if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) { + return $file; + } + } + + // PSR-0 lookup + if (false !== $pos = strrpos($class, '\\')) { + // namespaced class name + $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1) + . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR); + } else { + // PEAR-like class name + $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext; + } + + if (isset($this->prefixesPsr0[$first])) { + foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) { + if (0 === strpos($class, $prefix)) { + foreach ($dirs as $dir) { + if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { + return $file; + } + } + } + } + } + + // PSR-0 fallback dirs + foreach ($this->fallbackDirsPsr0 as $dir) { + if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { + return $file; + } + } + + // PSR-0 include paths. + if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) { + return $file; + } + + return false; + } +} + +/** + * Scope isolated include. + * + * Prevents access to $this/self from included files. + */ +function includeFile($file) +{ + include $file; +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/LICENSE b/wp-content/plugins/wp-rocket/vendor/composer/LICENSE new file mode 100644 index 0000000..f27399a --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/LICENSE @@ -0,0 +1,21 @@ + +Copyright (c) Nils Adermann, Jordi Boggiano + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is furnished +to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + diff --git a/wp-content/plugins/wp-rocket/vendor/composer/autoload_classmap.php b/wp-content/plugins/wp-rocket/vendor/composer/autoload_classmap.php new file mode 100644 index 0000000..446f54c --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/autoload_classmap.php @@ -0,0 +1,473 @@ + $vendorDir . '/composer/installers/src/Composer/Installers/AglInstaller.php', + 'Composer\\Installers\\AimeosInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/AimeosInstaller.php', + 'Composer\\Installers\\AnnotateCmsInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/AnnotateCmsInstaller.php', + 'Composer\\Installers\\AsgardInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/AsgardInstaller.php', + 'Composer\\Installers\\AttogramInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/AttogramInstaller.php', + 'Composer\\Installers\\BaseInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/BaseInstaller.php', + 'Composer\\Installers\\BitrixInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/BitrixInstaller.php', + 'Composer\\Installers\\BonefishInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/BonefishInstaller.php', + 'Composer\\Installers\\CakePHPInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/CakePHPInstaller.php', + 'Composer\\Installers\\ChefInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/ChefInstaller.php', + 'Composer\\Installers\\CiviCrmInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/CiviCrmInstaller.php', + 'Composer\\Installers\\ClanCatsFrameworkInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/ClanCatsFrameworkInstaller.php', + 'Composer\\Installers\\CockpitInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/CockpitInstaller.php', + 'Composer\\Installers\\CodeIgniterInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/CodeIgniterInstaller.php', + 'Composer\\Installers\\Concrete5Installer' => $vendorDir . '/composer/installers/src/Composer/Installers/Concrete5Installer.php', + 'Composer\\Installers\\CraftInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/CraftInstaller.php', + 'Composer\\Installers\\CroogoInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/CroogoInstaller.php', + 'Composer\\Installers\\DecibelInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/DecibelInstaller.php', + 'Composer\\Installers\\DframeInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/DframeInstaller.php', + 'Composer\\Installers\\DokuWikiInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/DokuWikiInstaller.php', + 'Composer\\Installers\\DolibarrInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/DolibarrInstaller.php', + 'Composer\\Installers\\DrupalInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/DrupalInstaller.php', + 'Composer\\Installers\\ElggInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/ElggInstaller.php', + 'Composer\\Installers\\EliasisInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/EliasisInstaller.php', + 'Composer\\Installers\\ExpressionEngineInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/ExpressionEngineInstaller.php', + 'Composer\\Installers\\EzPlatformInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/EzPlatformInstaller.php', + 'Composer\\Installers\\FuelInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/FuelInstaller.php', + 'Composer\\Installers\\FuelphpInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/FuelphpInstaller.php', + 'Composer\\Installers\\GravInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/GravInstaller.php', + 'Composer\\Installers\\HuradInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/HuradInstaller.php', + 'Composer\\Installers\\ImageCMSInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/ImageCMSInstaller.php', + 'Composer\\Installers\\Installer' => $vendorDir . '/composer/installers/src/Composer/Installers/Installer.php', + 'Composer\\Installers\\ItopInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/ItopInstaller.php', + 'Composer\\Installers\\JoomlaInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/JoomlaInstaller.php', + 'Composer\\Installers\\KanboardInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/KanboardInstaller.php', + 'Composer\\Installers\\KirbyInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/KirbyInstaller.php', + 'Composer\\Installers\\KnownInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/KnownInstaller.php', + 'Composer\\Installers\\KodiCMSInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/KodiCMSInstaller.php', + 'Composer\\Installers\\KohanaInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/KohanaInstaller.php', + 'Composer\\Installers\\LanManagementSystemInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/LanManagementSystemInstaller.php', + 'Composer\\Installers\\LaravelInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/LaravelInstaller.php', + 'Composer\\Installers\\LavaLiteInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/LavaLiteInstaller.php', + 'Composer\\Installers\\LithiumInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/LithiumInstaller.php', + 'Composer\\Installers\\MODULEWorkInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/MODULEWorkInstaller.php', + 'Composer\\Installers\\MODXEvoInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/MODXEvoInstaller.php', + 'Composer\\Installers\\MagentoInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/MagentoInstaller.php', + 'Composer\\Installers\\MajimaInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/MajimaInstaller.php', + 'Composer\\Installers\\MakoInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/MakoInstaller.php', + 'Composer\\Installers\\MauticInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/MauticInstaller.php', + 'Composer\\Installers\\MayaInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/MayaInstaller.php', + 'Composer\\Installers\\MediaWikiInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/MediaWikiInstaller.php', + 'Composer\\Installers\\MicroweberInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/MicroweberInstaller.php', + 'Composer\\Installers\\ModxInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/ModxInstaller.php', + 'Composer\\Installers\\MoodleInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/MoodleInstaller.php', + 'Composer\\Installers\\OctoberInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/OctoberInstaller.php', + 'Composer\\Installers\\OntoWikiInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/OntoWikiInstaller.php', + 'Composer\\Installers\\OsclassInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/OsclassInstaller.php', + 'Composer\\Installers\\OxidInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/OxidInstaller.php', + 'Composer\\Installers\\PPIInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/PPIInstaller.php', + 'Composer\\Installers\\PhiftyInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/PhiftyInstaller.php', + 'Composer\\Installers\\PhpBBInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/PhpBBInstaller.php', + 'Composer\\Installers\\PimcoreInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/PimcoreInstaller.php', + 'Composer\\Installers\\PiwikInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/PiwikInstaller.php', + 'Composer\\Installers\\PlentymarketsInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/PlentymarketsInstaller.php', + 'Composer\\Installers\\Plugin' => $vendorDir . '/composer/installers/src/Composer/Installers/Plugin.php', + 'Composer\\Installers\\PortoInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/PortoInstaller.php', + 'Composer\\Installers\\PrestashopInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/PrestashopInstaller.php', + 'Composer\\Installers\\PuppetInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/PuppetInstaller.php', + 'Composer\\Installers\\PxcmsInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/PxcmsInstaller.php', + 'Composer\\Installers\\RadPHPInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/RadPHPInstaller.php', + 'Composer\\Installers\\ReIndexInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/ReIndexInstaller.php', + 'Composer\\Installers\\Redaxo5Installer' => $vendorDir . '/composer/installers/src/Composer/Installers/Redaxo5Installer.php', + 'Composer\\Installers\\RedaxoInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/RedaxoInstaller.php', + 'Composer\\Installers\\RoundcubeInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/RoundcubeInstaller.php', + 'Composer\\Installers\\SMFInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/SMFInstaller.php', + 'Composer\\Installers\\ShopwareInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/ShopwareInstaller.php', + 'Composer\\Installers\\SilverStripeInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/SilverStripeInstaller.php', + 'Composer\\Installers\\SiteDirectInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/SiteDirectInstaller.php', + 'Composer\\Installers\\SyDESInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/SyDESInstaller.php', + 'Composer\\Installers\\Symfony1Installer' => $vendorDir . '/composer/installers/src/Composer/Installers/Symfony1Installer.php', + 'Composer\\Installers\\TYPO3CmsInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/TYPO3CmsInstaller.php', + 'Composer\\Installers\\TYPO3FlowInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/TYPO3FlowInstaller.php', + 'Composer\\Installers\\TaoInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/TaoInstaller.php', + 'Composer\\Installers\\TheliaInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/TheliaInstaller.php', + 'Composer\\Installers\\TuskInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/TuskInstaller.php', + 'Composer\\Installers\\UserFrostingInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/UserFrostingInstaller.php', + 'Composer\\Installers\\VanillaInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/VanillaInstaller.php', + 'Composer\\Installers\\VgmcpInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/VgmcpInstaller.php', + 'Composer\\Installers\\WHMCSInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/WHMCSInstaller.php', + 'Composer\\Installers\\WolfCMSInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/WolfCMSInstaller.php', + 'Composer\\Installers\\WordPressInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/WordPressInstaller.php', + 'Composer\\Installers\\YawikInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/YawikInstaller.php', + 'Composer\\Installers\\ZendInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/ZendInstaller.php', + 'Composer\\Installers\\ZikulaInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/ZikulaInstaller.php', + 'Imagify_Partner' => $baseDir . '/inc/vendors/classes/class-imagify-partner.php', + 'Minify_CSS_UriRewriter' => $baseDir . '/inc/vendors/classes/class-minify-css-urirewriter.php', + 'Monolog\\ErrorHandler' => $vendorDir . '/monolog/monolog/src/Monolog/ErrorHandler.php', + 'Monolog\\Formatter\\ChromePHPFormatter' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/ChromePHPFormatter.php', + 'Monolog\\Formatter\\ElasticaFormatter' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/ElasticaFormatter.php', + 'Monolog\\Formatter\\FlowdockFormatter' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/FlowdockFormatter.php', + 'Monolog\\Formatter\\FluentdFormatter' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/FluentdFormatter.php', + 'Monolog\\Formatter\\FormatterInterface' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/FormatterInterface.php', + 'Monolog\\Formatter\\GelfMessageFormatter' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/GelfMessageFormatter.php', + 'Monolog\\Formatter\\HtmlFormatter' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/HtmlFormatter.php', + 'Monolog\\Formatter\\JsonFormatter' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/JsonFormatter.php', + 'Monolog\\Formatter\\LineFormatter' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/LineFormatter.php', + 'Monolog\\Formatter\\LogglyFormatter' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/LogglyFormatter.php', + 'Monolog\\Formatter\\LogstashFormatter' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/LogstashFormatter.php', + 'Monolog\\Formatter\\MongoDBFormatter' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/MongoDBFormatter.php', + 'Monolog\\Formatter\\NormalizerFormatter' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/NormalizerFormatter.php', + 'Monolog\\Formatter\\ScalarFormatter' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/ScalarFormatter.php', + 'Monolog\\Formatter\\WildfireFormatter' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/WildfireFormatter.php', + 'Monolog\\Handler\\AbstractHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/AbstractHandler.php', + 'Monolog\\Handler\\AbstractProcessingHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php', + 'Monolog\\Handler\\AbstractSyslogHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/AbstractSyslogHandler.php', + 'Monolog\\Handler\\AmqpHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/AmqpHandler.php', + 'Monolog\\Handler\\BrowserConsoleHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/BrowserConsoleHandler.php', + 'Monolog\\Handler\\BufferHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/BufferHandler.php', + 'Monolog\\Handler\\ChromePHPHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/ChromePHPHandler.php', + 'Monolog\\Handler\\CouchDBHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/CouchDBHandler.php', + 'Monolog\\Handler\\CubeHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/CubeHandler.php', + 'Monolog\\Handler\\Curl\\Util' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/Curl/Util.php', + 'Monolog\\Handler\\DeduplicationHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/DeduplicationHandler.php', + 'Monolog\\Handler\\DoctrineCouchDBHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/DoctrineCouchDBHandler.php', + 'Monolog\\Handler\\DynamoDbHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/DynamoDbHandler.php', + 'Monolog\\Handler\\ElasticSearchHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/ElasticSearchHandler.php', + 'Monolog\\Handler\\ErrorLogHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/ErrorLogHandler.php', + 'Monolog\\Handler\\FilterHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/FilterHandler.php', + 'Monolog\\Handler\\FingersCrossedHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/FingersCrossedHandler.php', + 'Monolog\\Handler\\FingersCrossed\\ActivationStrategyInterface' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/FingersCrossed/ActivationStrategyInterface.php', + 'Monolog\\Handler\\FingersCrossed\\ChannelLevelActivationStrategy' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/FingersCrossed/ChannelLevelActivationStrategy.php', + 'Monolog\\Handler\\FingersCrossed\\ErrorLevelActivationStrategy' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/FingersCrossed/ErrorLevelActivationStrategy.php', + 'Monolog\\Handler\\FirePHPHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/FirePHPHandler.php', + 'Monolog\\Handler\\FleepHookHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/FleepHookHandler.php', + 'Monolog\\Handler\\FlowdockHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/FlowdockHandler.php', + 'Monolog\\Handler\\FormattableHandlerInterface' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/FormattableHandlerInterface.php', + 'Monolog\\Handler\\FormattableHandlerTrait' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/FormattableHandlerTrait.php', + 'Monolog\\Handler\\GelfHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/GelfHandler.php', + 'Monolog\\Handler\\GroupHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/GroupHandler.php', + 'Monolog\\Handler\\HandlerInterface' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/HandlerInterface.php', + 'Monolog\\Handler\\HandlerWrapper' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/HandlerWrapper.php', + 'Monolog\\Handler\\HipChatHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/HipChatHandler.php', + 'Monolog\\Handler\\IFTTTHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/IFTTTHandler.php', + 'Monolog\\Handler\\InsightOpsHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/InsightOpsHandler.php', + 'Monolog\\Handler\\LogEntriesHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/LogEntriesHandler.php', + 'Monolog\\Handler\\LogglyHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/LogglyHandler.php', + 'Monolog\\Handler\\MailHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/MailHandler.php', + 'Monolog\\Handler\\MandrillHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/MandrillHandler.php', + 'Monolog\\Handler\\MissingExtensionException' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/MissingExtensionException.php', + 'Monolog\\Handler\\MongoDBHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/MongoDBHandler.php', + 'Monolog\\Handler\\NativeMailerHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/NativeMailerHandler.php', + 'Monolog\\Handler\\NewRelicHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/NewRelicHandler.php', + 'Monolog\\Handler\\NullHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/NullHandler.php', + 'Monolog\\Handler\\PHPConsoleHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/PHPConsoleHandler.php', + 'Monolog\\Handler\\ProcessableHandlerInterface' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/ProcessableHandlerInterface.php', + 'Monolog\\Handler\\ProcessableHandlerTrait' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/ProcessableHandlerTrait.php', + 'Monolog\\Handler\\PsrHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/PsrHandler.php', + 'Monolog\\Handler\\PushoverHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/PushoverHandler.php', + 'Monolog\\Handler\\RavenHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/RavenHandler.php', + 'Monolog\\Handler\\RedisHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/RedisHandler.php', + 'Monolog\\Handler\\RollbarHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/RollbarHandler.php', + 'Monolog\\Handler\\RotatingFileHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/RotatingFileHandler.php', + 'Monolog\\Handler\\SamplingHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/SamplingHandler.php', + 'Monolog\\Handler\\SlackHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/SlackHandler.php', + 'Monolog\\Handler\\SlackWebhookHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/SlackWebhookHandler.php', + 'Monolog\\Handler\\Slack\\SlackRecord' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/Slack/SlackRecord.php', + 'Monolog\\Handler\\SlackbotHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/SlackbotHandler.php', + 'Monolog\\Handler\\SocketHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/SocketHandler.php', + 'Monolog\\Handler\\StreamHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/StreamHandler.php', + 'Monolog\\Handler\\SwiftMailerHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/SwiftMailerHandler.php', + 'Monolog\\Handler\\SyslogHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/SyslogHandler.php', + 'Monolog\\Handler\\SyslogUdpHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/SyslogUdpHandler.php', + 'Monolog\\Handler\\SyslogUdp\\UdpSocket' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/SyslogUdp/UdpSocket.php', + 'Monolog\\Handler\\TestHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/TestHandler.php', + 'Monolog\\Handler\\WhatFailureGroupHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/WhatFailureGroupHandler.php', + 'Monolog\\Handler\\ZendMonitorHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/ZendMonitorHandler.php', + 'Monolog\\Logger' => $vendorDir . '/monolog/monolog/src/Monolog/Logger.php', + 'Monolog\\Processor\\GitProcessor' => $vendorDir . '/monolog/monolog/src/Monolog/Processor/GitProcessor.php', + 'Monolog\\Processor\\IntrospectionProcessor' => $vendorDir . '/monolog/monolog/src/Monolog/Processor/IntrospectionProcessor.php', + 'Monolog\\Processor\\MemoryPeakUsageProcessor' => $vendorDir . '/monolog/monolog/src/Monolog/Processor/MemoryPeakUsageProcessor.php', + 'Monolog\\Processor\\MemoryProcessor' => $vendorDir . '/monolog/monolog/src/Monolog/Processor/MemoryProcessor.php', + 'Monolog\\Processor\\MemoryUsageProcessor' => $vendorDir . '/monolog/monolog/src/Monolog/Processor/MemoryUsageProcessor.php', + 'Monolog\\Processor\\MercurialProcessor' => $vendorDir . '/monolog/monolog/src/Monolog/Processor/MercurialProcessor.php', + 'Monolog\\Processor\\ProcessIdProcessor' => $vendorDir . '/monolog/monolog/src/Monolog/Processor/ProcessIdProcessor.php', + 'Monolog\\Processor\\ProcessorInterface' => $vendorDir . '/monolog/monolog/src/Monolog/Processor/ProcessorInterface.php', + 'Monolog\\Processor\\PsrLogMessageProcessor' => $vendorDir . '/monolog/monolog/src/Monolog/Processor/PsrLogMessageProcessor.php', + 'Monolog\\Processor\\TagProcessor' => $vendorDir . '/monolog/monolog/src/Monolog/Processor/TagProcessor.php', + 'Monolog\\Processor\\UidProcessor' => $vendorDir . '/monolog/monolog/src/Monolog/Processor/UidProcessor.php', + 'Monolog\\Processor\\WebProcessor' => $vendorDir . '/monolog/monolog/src/Monolog/Processor/WebProcessor.php', + 'Monolog\\Registry' => $vendorDir . '/monolog/monolog/src/Monolog/Registry.php', + 'Monolog\\ResettableInterface' => $vendorDir . '/monolog/monolog/src/Monolog/ResettableInterface.php', + 'Monolog\\SignalHandler' => $vendorDir . '/monolog/monolog/src/Monolog/SignalHandler.php', + 'Monolog\\Utils' => $vendorDir . '/monolog/monolog/src/Monolog/Utils.php', + 'Psr\\Container\\ContainerExceptionInterface' => $vendorDir . '/psr/container/src/ContainerExceptionInterface.php', + 'Psr\\Container\\ContainerInterface' => $vendorDir . '/psr/container/src/ContainerInterface.php', + 'Psr\\Container\\NotFoundExceptionInterface' => $vendorDir . '/psr/container/src/NotFoundExceptionInterface.php', + 'Psr\\Log\\AbstractLogger' => $vendorDir . '/psr/log/Psr/Log/AbstractLogger.php', + 'Psr\\Log\\InvalidArgumentException' => $vendorDir . '/psr/log/Psr/Log/InvalidArgumentException.php', + 'Psr\\Log\\LogLevel' => $vendorDir . '/psr/log/Psr/Log/LogLevel.php', + 'Psr\\Log\\LoggerAwareInterface' => $vendorDir . '/psr/log/Psr/Log/LoggerAwareInterface.php', + 'Psr\\Log\\LoggerAwareTrait' => $vendorDir . '/psr/log/Psr/Log/LoggerAwareTrait.php', + 'Psr\\Log\\LoggerInterface' => $vendorDir . '/psr/log/Psr/Log/LoggerInterface.php', + 'Psr\\Log\\LoggerTrait' => $vendorDir . '/psr/log/Psr/Log/LoggerTrait.php', + 'Psr\\Log\\NullLogger' => $vendorDir . '/psr/log/Psr/Log/NullLogger.php', + 'Psr\\Log\\Test\\DummyTest' => $vendorDir . '/psr/log/Psr/Log/Test/DummyTest.php', + 'Psr\\Log\\Test\\LoggerInterfaceTest' => $vendorDir . '/psr/log/Psr/Log/Test/LoggerInterfaceTest.php', + 'Psr\\Log\\Test\\TestLogger' => $vendorDir . '/psr/log/Psr/Log/Test/TestLogger.php', + 'WPMedia\\Cloudflare\\APIClient' => $baseDir . '/inc/Addon/Cloudflare/APIClient.php', + 'WPMedia\\Cloudflare\\AuthenticationException' => $baseDir . '/inc/Addon/Cloudflare/AuthenticationException.php', + 'WPMedia\\Cloudflare\\Cloudflare' => $baseDir . '/inc/Addon/Cloudflare/Cloudflare.php', + 'WPMedia\\Cloudflare\\Subscriber' => $baseDir . '/inc/Addon/Cloudflare/Subscriber.php', + 'WPMedia\\Cloudflare\\UnauthorizedException' => $baseDir . '/inc/Addon/Cloudflare/UnauthorizedException.php', + 'WP_Rocket\\Abstract_Render' => $baseDir . '/inc/classes/class-abstract-render.php', + 'WP_Rocket\\Addon\\Busting\\BustingFactory' => $baseDir . '/inc/Addon/Busting/BustingFactory.php', + 'WP_Rocket\\Addon\\Busting\\FileBustingTrait' => $baseDir . '/inc/Addon/Busting/FileBustingTrait.php', + 'WP_Rocket\\Addon\\FacebookTracking\\Subscriber' => $baseDir . '/inc/Addon/FacebookTracking/Subscriber.php', + 'WP_Rocket\\Addon\\GoogleTracking\\GoogleAnalytics' => $baseDir . '/inc/Addon/GoogleTracking/GoogleAnalytics.php', + 'WP_Rocket\\Addon\\GoogleTracking\\GoogleTagManager' => $baseDir . '/inc/Addon/GoogleTracking/GoogleTagManager.php', + 'WP_Rocket\\Addon\\GoogleTracking\\Subscriber' => $baseDir . '/inc/Addon/GoogleTracking/Subscriber.php', + 'WP_Rocket\\Addon\\ServiceProvider' => $baseDir . '/inc/Addon/ServiceProvider.php', + 'WP_Rocket\\Addon\\Varnish\\ServiceProvider' => $baseDir . '/inc/Addon/Varnish/ServiceProvider.php', + 'WP_Rocket\\Addon\\Varnish\\Subscriber' => $baseDir . '/inc/Addon/Varnish/Subscriber.php', + 'WP_Rocket\\Addon\\Varnish\\Varnish' => $baseDir . '/inc/Addon/Varnish/Varnish.php', + 'WP_Rocket\\Admin\\Abstract_Options' => $baseDir . '/inc/classes/admin/class-abstract-options.php', + 'WP_Rocket\\Admin\\Database\\Optimization' => $baseDir . '/inc/classes/admin/Database/class-optimization.php', + 'WP_Rocket\\Admin\\Database\\Optimization_Process' => $baseDir . '/inc/classes/admin/Database/class-optimization-process.php', + 'WP_Rocket\\Admin\\Deactivation\\Render' => $baseDir . '/inc/classes/admin/deactivation/class-render.php', + 'WP_Rocket\\Admin\\Logs' => $baseDir . '/inc/classes/admin/class-logs.php', + 'WP_Rocket\\Admin\\Options' => $baseDir . '/inc/classes/admin/class-options.php', + 'WP_Rocket\\Admin\\Options_Data' => $baseDir . '/inc/classes/admin/class-options-data.php', + 'WP_Rocket\\Buffer\\Abstract_Buffer' => $baseDir . '/inc/classes/Buffer/class-abstract-buffer.php', + 'WP_Rocket\\Buffer\\Cache' => $baseDir . '/inc/classes/Buffer/class-cache.php', + 'WP_Rocket\\Buffer\\Config' => $baseDir . '/inc/classes/Buffer/class-config.php', + 'WP_Rocket\\Buffer\\Optimization' => $baseDir . '/inc/classes/Buffer/class-optimization.php', + 'WP_Rocket\\Buffer\\Tests' => $baseDir . '/inc/classes/Buffer/class-tests.php', + 'WP_Rocket\\Busting\\Abstract_Busting' => $baseDir . '/inc/classes/busting/class-abstract-busting.php', + 'WP_Rocket\\Busting\\Facebook_Pickles' => $baseDir . '/inc/classes/busting/class-facebook-pickles.php', + 'WP_Rocket\\Busting\\Facebook_SDK' => $baseDir . '/inc/classes/busting/class-facebook-sdk.php', + 'WP_Rocket\\Cache\\Expired_Cache_Purge' => $baseDir . '/inc/classes/Cache/class-expired-cache-purge.php', + 'WP_Rocket\\Dependencies\\Minify\\CSS' => $baseDir . '/inc/Dependencies/Minify/CSS.php', + 'WP_Rocket\\Dependencies\\Minify\\Exception' => $baseDir . '/inc/Dependencies/Minify/Exception.php', + 'WP_Rocket\\Dependencies\\Minify\\Exceptions\\BasicException' => $baseDir . '/inc/Dependencies/Minify/Exceptions/BasicException.php', + 'WP_Rocket\\Dependencies\\Minify\\Exceptions\\FileImportException' => $baseDir . '/inc/Dependencies/Minify/Exceptions/FileImportException.php', + 'WP_Rocket\\Dependencies\\Minify\\Exceptions\\IOException' => $baseDir . '/inc/Dependencies/Minify/Exceptions/IOException.php', + 'WP_Rocket\\Dependencies\\Minify\\JS' => $baseDir . '/inc/Dependencies/Minify/JS.php', + 'WP_Rocket\\Dependencies\\Minify\\Minify' => $baseDir . '/inc/Dependencies/Minify/Minify.php', + 'WP_Rocket\\Dependencies\\PathConverter\\Converter' => $baseDir . '/inc/Dependencies/PathConverter/Converter.php', + 'WP_Rocket\\Dependencies\\PathConverter\\ConverterInterface' => $baseDir . '/inc/Dependencies/PathConverter/ConverterInterface.php', + 'WP_Rocket\\Dependencies\\PathConverter\\NoConverter' => $baseDir . '/inc/Dependencies/PathConverter/NoConverter.php', + 'WP_Rocket\\Dependencies\\RocketLazyload\\Assets' => $baseDir . '/inc/Dependencies/RocketLazyload/Assets.php', + 'WP_Rocket\\Dependencies\\RocketLazyload\\Iframe' => $baseDir . '/inc/Dependencies/RocketLazyload/Iframe.php', + 'WP_Rocket\\Dependencies\\RocketLazyload\\Image' => $baseDir . '/inc/Dependencies/RocketLazyload/Image.php', + 'WP_Rocket\\Engine\\Activation\\Activation' => $baseDir . '/inc/Engine/Activation/Activation.php', + 'WP_Rocket\\Engine\\Activation\\ActivationInterface' => $baseDir . '/inc/Engine/Activation/ActivationInterface.php', + 'WP_Rocket\\Engine\\Activation\\ServiceProvider' => $baseDir . '/inc/Engine/Activation/ServiceProvider.php', + 'WP_Rocket\\Engine\\Admin\\Beacon\\Beacon' => $baseDir . '/inc/Engine/Admin/Beacon/Beacon.php', + 'WP_Rocket\\Engine\\Admin\\Beacon\\ServiceProvider' => $baseDir . '/inc/Engine/Admin/Beacon/ServiceProvider.php', + 'WP_Rocket\\Engine\\Admin\\Deactivation\\DeactivationIntent' => $baseDir . '/inc/Engine/Admin/Deactivation/DeactivationIntent.php', + 'WP_Rocket\\Engine\\Admin\\ServiceProvider' => $baseDir . '/inc/Engine/Admin/ServiceProvider.php', + 'WP_Rocket\\Engine\\Admin\\Settings\\Page' => $baseDir . '/inc/Engine/Admin/Settings/Page.php', + 'WP_Rocket\\Engine\\Admin\\Settings\\Render' => $baseDir . '/inc/Engine/Admin/Settings/Render.php', + 'WP_Rocket\\Engine\\Admin\\Settings\\ServiceProvider' => $baseDir . '/inc/Engine/Admin/Settings/ServiceProvider.php', + 'WP_Rocket\\Engine\\Admin\\Settings\\Settings' => $baseDir . '/inc/Engine/Admin/Settings/Settings.php', + 'WP_Rocket\\Engine\\Admin\\Settings\\Subscriber' => $baseDir . '/inc/Engine/Admin/Settings/Subscriber.php', + 'WP_Rocket\\Engine\\CDN\\CDN' => $baseDir . '/inc/Engine/CDN/CDN.php', + 'WP_Rocket\\Engine\\CDN\\RocketCDN\\APIClient' => $baseDir . '/inc/Engine/CDN/RocketCDN/APIClient.php', + 'WP_Rocket\\Engine\\CDN\\RocketCDN\\AdminPageSubscriber' => $baseDir . '/inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php', + 'WP_Rocket\\Engine\\CDN\\RocketCDN\\CDNOptionsManager' => $baseDir . '/inc/Engine/CDN/RocketCDN/CDNOptionsManager.php', + 'WP_Rocket\\Engine\\CDN\\RocketCDN\\DataManagerSubscriber' => $baseDir . '/inc/Engine/CDN/RocketCDN/DataManagerSubscriber.php', + 'WP_Rocket\\Engine\\CDN\\RocketCDN\\NoticesSubscriber' => $baseDir . '/inc/Engine/CDN/RocketCDN/NoticesSubscriber.php', + 'WP_Rocket\\Engine\\CDN\\RocketCDN\\RESTSubscriber' => $baseDir . '/inc/Engine/CDN/RocketCDN/RESTSubscriber.php', + 'WP_Rocket\\Engine\\CDN\\RocketCDN\\ServiceProvider' => $baseDir . '/inc/Engine/CDN/RocketCDN/ServiceProvider.php', + 'WP_Rocket\\Engine\\CDN\\ServiceProvider' => $baseDir . '/inc/Engine/CDN/ServiceProvider.php', + 'WP_Rocket\\Engine\\CDN\\Subscriber' => $baseDir . '/inc/Engine/CDN/Subscriber.php', + 'WP_Rocket\\Engine\\Cache\\AdminSubscriber' => $baseDir . '/inc/Engine/Cache/AdminSubscriber.php', + 'WP_Rocket\\Engine\\Cache\\AdvancedCache' => $baseDir . '/inc/Engine/Cache/AdvancedCache.php', + 'WP_Rocket\\Engine\\Cache\\Purge' => $baseDir . '/inc/Engine/Cache/Purge.php', + 'WP_Rocket\\Engine\\Cache\\PurgeActionsSubscriber' => $baseDir . '/inc/Engine/Cache/PurgeActionsSubscriber.php', + 'WP_Rocket\\Engine\\Cache\\ServiceProvider' => $baseDir . '/inc/Engine/Cache/ServiceProvider.php', + 'WP_Rocket\\Engine\\Cache\\WPCache' => $baseDir . '/inc/Engine/Cache/WPCache.php', + 'WP_Rocket\\Engine\\Capabilities\\Manager' => $baseDir . '/inc/Engine/Capabilities/Manager.php', + 'WP_Rocket\\Engine\\Capabilities\\ServiceProvider' => $baseDir . '/inc/Engine/Capabilities/ServiceProvider.php', + 'WP_Rocket\\Engine\\Capabilities\\Subscriber' => $baseDir . '/inc/Engine/Capabilities/Subscriber.php', + 'WP_Rocket\\Engine\\Container\\Argument\\ArgumentResolverInterface' => $baseDir . '/inc/Engine/Container/Argument/ArgumentResolverInterface.php', + 'WP_Rocket\\Engine\\Container\\Argument\\ArgumentResolverTrait' => $baseDir . '/inc/Engine/Container/Argument/ArgumentResolverTrait.php', + 'WP_Rocket\\Engine\\Container\\Argument\\RawArgument' => $baseDir . '/inc/Engine/Container/Argument/RawArgument.php', + 'WP_Rocket\\Engine\\Container\\Argument\\RawArgumentInterface' => $baseDir . '/inc/Engine/Container/Argument/RawArgumentInterface.php', + 'WP_Rocket\\Engine\\Container\\Container' => $baseDir . '/inc/Engine/Container/Container.php', + 'WP_Rocket\\Engine\\Container\\ContainerAwareInterface' => $baseDir . '/inc/Engine/Container/ContainerAwareInterface.php', + 'WP_Rocket\\Engine\\Container\\ContainerAwareTrait' => $baseDir . '/inc/Engine/Container/ContainerAwareTrait.php', + 'WP_Rocket\\Engine\\Container\\ContainerInterface' => $baseDir . '/inc/Engine/Container/ContainerInterface.php', + 'WP_Rocket\\Engine\\Container\\Definition\\AbstractDefinition' => $baseDir . '/inc/Engine/Container/Definition/AbstractDefinition.php', + 'WP_Rocket\\Engine\\Container\\Definition\\CallableDefinition' => $baseDir . '/inc/Engine/Container/Definition/CallableDefinition.php', + 'WP_Rocket\\Engine\\Container\\Definition\\ClassDefinition' => $baseDir . '/inc/Engine/Container/Definition/ClassDefinition.php', + 'WP_Rocket\\Engine\\Container\\Definition\\ClassDefinitionInterface' => $baseDir . '/inc/Engine/Container/Definition/ClassDefinitionInterface.php', + 'WP_Rocket\\Engine\\Container\\Definition\\DefinitionFactory' => $baseDir . '/inc/Engine/Container/Definition/DefinitionFactory.php', + 'WP_Rocket\\Engine\\Container\\Definition\\DefinitionFactoryInterface' => $baseDir . '/inc/Engine/Container/Definition/DefinitionFactoryInterface.php', + 'WP_Rocket\\Engine\\Container\\Definition\\DefinitionInterface' => $baseDir . '/inc/Engine/Container/Definition/DefinitionInterface.php', + 'WP_Rocket\\Engine\\Container\\Exception\\NotFoundException' => $baseDir . '/inc/Engine/Container/Exception/NotFoundException.php', + 'WP_Rocket\\Engine\\Container\\ImmutableContainerAwareInterface' => $baseDir . '/inc/Engine/Container/ImmutableContainerAwareInterface.php', + 'WP_Rocket\\Engine\\Container\\ImmutableContainerAwareTrait' => $baseDir . '/inc/Engine/Container/ImmutableContainerAwareTrait.php', + 'WP_Rocket\\Engine\\Container\\ImmutableContainerInterface' => $baseDir . '/inc/Engine/Container/ImmutableContainerInterface.php', + 'WP_Rocket\\Engine\\Container\\Inflector\\Inflector' => $baseDir . '/inc/Engine/Container/Inflector/Inflector.php', + 'WP_Rocket\\Engine\\Container\\Inflector\\InflectorAggregate' => $baseDir . '/inc/Engine/Container/Inflector/InflectorAggregate.php', + 'WP_Rocket\\Engine\\Container\\Inflector\\InflectorAggregateInterface' => $baseDir . '/inc/Engine/Container/Inflector/InflectorAggregateInterface.php', + 'WP_Rocket\\Engine\\Container\\ReflectionContainer' => $baseDir . '/inc/Engine/Container/ReflectionContainer.php', + 'WP_Rocket\\Engine\\Container\\ServiceProvider\\AbstractServiceProvider' => $baseDir . '/inc/Engine/Container/ServiceProvider/AbstractServiceProvider.php', + 'WP_Rocket\\Engine\\Container\\ServiceProvider\\AbstractSignatureServiceProvider' => $baseDir . '/inc/Engine/Container/ServiceProvider/AbstractSignatureServiceProvider.php', + 'WP_Rocket\\Engine\\Container\\ServiceProvider\\BootableServiceProviderInterface' => $baseDir . '/inc/Engine/Container/ServiceProvider/BootableServiceProviderInterface.php', + 'WP_Rocket\\Engine\\Container\\ServiceProvider\\ServiceProviderAggregate' => $baseDir . '/inc/Engine/Container/ServiceProvider/ServiceProviderAggregate.php', + 'WP_Rocket\\Engine\\Container\\ServiceProvider\\ServiceProviderAggregateInterface' => $baseDir . '/inc/Engine/Container/ServiceProvider/ServiceProviderAggregateInterface.php', + 'WP_Rocket\\Engine\\Container\\ServiceProvider\\ServiceProviderInterface' => $baseDir . '/inc/Engine/Container/ServiceProvider/ServiceProviderInterface.php', + 'WP_Rocket\\Engine\\Container\\ServiceProvider\\SignatureServiceProviderInterface' => $baseDir . '/inc/Engine/Container/ServiceProvider/SignatureServiceProviderInterface.php', + 'WP_Rocket\\Engine\\CriticalPath\\APIClient' => $baseDir . '/inc/Engine/CriticalPath/APIClient.php', + 'WP_Rocket\\Engine\\CriticalPath\\Admin\\Admin' => $baseDir . '/inc/Engine/CriticalPath/Admin/Admin.php', + 'WP_Rocket\\Engine\\CriticalPath\\Admin\\Post' => $baseDir . '/inc/Engine/CriticalPath/Admin/Post.php', + 'WP_Rocket\\Engine\\CriticalPath\\Admin\\Settings' => $baseDir . '/inc/Engine/CriticalPath/Admin/Settings.php', + 'WP_Rocket\\Engine\\CriticalPath\\Admin\\Subscriber' => $baseDir . '/inc/Engine/CriticalPath/Admin/Subscriber.php', + 'WP_Rocket\\Engine\\CriticalPath\\CriticalCSS' => $baseDir . '/inc/Engine/CriticalPath/CriticalCSS.php', + 'WP_Rocket\\Engine\\CriticalPath\\CriticalCSSGeneration' => $baseDir . '/inc/Engine/CriticalPath/CriticalCSSGeneration.php', + 'WP_Rocket\\Engine\\CriticalPath\\CriticalCSSSubscriber' => $baseDir . '/inc/Engine/CriticalPath/CriticalCSSSubscriber.php', + 'WP_Rocket\\Engine\\CriticalPath\\DataManager' => $baseDir . '/inc/Engine/CriticalPath/DataManager.php', + 'WP_Rocket\\Engine\\CriticalPath\\ProcessorService' => $baseDir . '/inc/Engine/CriticalPath/ProcessorService.php', + 'WP_Rocket\\Engine\\CriticalPath\\RESTCSSSubscriber' => $baseDir . '/inc/Engine/CriticalPath/RESTCSSSubscriber.php', + 'WP_Rocket\\Engine\\CriticalPath\\RESTWP' => $baseDir . '/inc/Engine/CriticalPath/RESTWP.php', + 'WP_Rocket\\Engine\\CriticalPath\\RESTWPInterface' => $baseDir . '/inc/Engine/CriticalPath/RESTWPInterface.php', + 'WP_Rocket\\Engine\\CriticalPath\\RESTWPPost' => $baseDir . '/inc/Engine/CriticalPath/RESTWPPost.php', + 'WP_Rocket\\Engine\\CriticalPath\\ServiceProvider' => $baseDir . '/inc/Engine/CriticalPath/ServiceProvider.php', + 'WP_Rocket\\Engine\\CriticalPath\\TransientTrait' => $baseDir . '/inc/Engine/CriticalPath/TransientTrait.php', + 'WP_Rocket\\Engine\\Deactivation\\Deactivation' => $baseDir . '/inc/Engine/Deactivation/Deactivation.php', + 'WP_Rocket\\Engine\\Deactivation\\DeactivationInterface' => $baseDir . '/inc/Engine/Deactivation/DeactivationInterface.php', + 'WP_Rocket\\Engine\\Deactivation\\ServiceProvider' => $baseDir . '/inc/Engine/Deactivation/ServiceProvider.php', + 'WP_Rocket\\Engine\\HealthCheck\\CacheDirSizeCheck' => $baseDir . '/inc/Engine/HealthCheck/CacheDirSizeCheck.php', + 'WP_Rocket\\Engine\\HealthCheck\\HealthCheck' => $baseDir . '/inc/Engine/HealthCheck/HealthCheck.php', + 'WP_Rocket\\Engine\\HealthCheck\\ServiceProvider' => $baseDir . '/inc/Engine/HealthCheck/ServiceProvider.php', + 'WP_Rocket\\Engine\\Heartbeat\\HeartbeatSubscriber' => $baseDir . '/inc/Engine/Heartbeat/HeartbeatSubscriber.php', + 'WP_Rocket\\Engine\\Heartbeat\\ServiceProvider' => $baseDir . '/inc/Engine/Heartbeat/ServiceProvider.php', + 'WP_Rocket\\Engine\\License\\API\\Pricing' => $baseDir . '/inc/Engine/License/API/Pricing.php', + 'WP_Rocket\\Engine\\License\\API\\PricingClient' => $baseDir . '/inc/Engine/License/API/PricingClient.php', + 'WP_Rocket\\Engine\\License\\API\\User' => $baseDir . '/inc/Engine/License/API/User.php', + 'WP_Rocket\\Engine\\License\\API\\UserClient' => $baseDir . '/inc/Engine/License/API/UserClient.php', + 'WP_Rocket\\Engine\\License\\Renewal' => $baseDir . '/inc/Engine/License/Renewal.php', + 'WP_Rocket\\Engine\\License\\ServiceProvider' => $baseDir . '/inc/Engine/License/ServiceProvider.php', + 'WP_Rocket\\Engine\\License\\Subscriber' => $baseDir . '/inc/Engine/License/Subscriber.php', + 'WP_Rocket\\Engine\\License\\Upgrade' => $baseDir . '/inc/Engine/License/Upgrade.php', + 'WP_Rocket\\Engine\\Media\\Embeds\\EmbedsSubscriber' => $baseDir . '/inc/Engine/Media/Embeds/EmbedsSubscriber.php', + 'WP_Rocket\\Engine\\Media\\Emojis\\EmojisSubscriber' => $baseDir . '/inc/Engine/Media/Emojis/EmojisSubscriber.php', + 'WP_Rocket\\Engine\\Media\\LazyloadSubscriber' => $baseDir . '/inc/Engine/Media/LazyloadSubscriber.php', + 'WP_Rocket\\Engine\\Media\\ServiceProvider' => $baseDir . '/inc/Engine/Media/ServiceProvider.php', + 'WP_Rocket\\Engine\\Optimization\\AbstractOptimization' => $baseDir . '/inc/Engine/Optimization/AbstractOptimization.php', + 'WP_Rocket\\Engine\\Optimization\\AdminServiceProvider' => $baseDir . '/inc/Engine/Optimization/AdminServiceProvider.php', + 'WP_Rocket\\Engine\\Optimization\\AssetsLocalCache' => $baseDir . '/inc/Engine/Optimization/AssetsLocalCache.php', + 'WP_Rocket\\Engine\\Optimization\\CSSTrait' => $baseDir . '/inc/Engine/Optimization/CSSTrait.php', + 'WP_Rocket\\Engine\\Optimization\\CacheDynamicResource' => $baseDir . '/inc/Engine/Optimization/CacheDynamicResource.php', + 'WP_Rocket\\Engine\\Optimization\\DelayJS\\Admin\\Settings' => $baseDir . '/inc/Engine/Optimization/DelayJS/Admin/Settings.php', + 'WP_Rocket\\Engine\\Optimization\\DelayJS\\Admin\\Subscriber' => $baseDir . '/inc/Engine/Optimization/DelayJS/Admin/Subscriber.php', + 'WP_Rocket\\Engine\\Optimization\\DelayJS\\HTML' => $baseDir . '/inc/Engine/Optimization/DelayJS/HTML.php', + 'WP_Rocket\\Engine\\Optimization\\DelayJS\\ServiceProvider' => $baseDir . '/inc/Engine/Optimization/DelayJS/ServiceProvider.php', + 'WP_Rocket\\Engine\\Optimization\\DelayJS\\Subscriber' => $baseDir . '/inc/Engine/Optimization/DelayJS/Subscriber.php', + 'WP_Rocket\\Engine\\Optimization\\GoogleFonts\\Admin\\Settings' => $baseDir . '/inc/Engine/Optimization/GoogleFonts/Admin/Settings.php', + 'WP_Rocket\\Engine\\Optimization\\GoogleFonts\\Admin\\Subscriber' => $baseDir . '/inc/Engine/Optimization/GoogleFonts/Admin/Subscriber.php', + 'WP_Rocket\\Engine\\Optimization\\GoogleFonts\\Combine' => $baseDir . '/inc/Engine/Optimization/GoogleFonts/Combine.php', + 'WP_Rocket\\Engine\\Optimization\\GoogleFonts\\Subscriber' => $baseDir . '/inc/Engine/Optimization/GoogleFonts/Subscriber.php', + 'WP_Rocket\\Engine\\Optimization\\IEConditionalSubscriber' => $baseDir . '/inc/Engine/Optimization/IEConditionalSubscriber.php', + 'WP_Rocket\\Engine\\Optimization\\Minify\\AbstractMinifySubscriber' => $baseDir . '/inc/Engine/Optimization/Minify/AbstractMinifySubscriber.php', + 'WP_Rocket\\Engine\\Optimization\\Minify\\CSS\\AbstractCSSOptimization' => $baseDir . '/inc/Engine/Optimization/Minify/CSS/AbstractCSSOptimization.php', + 'WP_Rocket\\Engine\\Optimization\\Minify\\CSS\\AdminSubscriber' => $baseDir . '/inc/Engine/Optimization/Minify/CSS/AdminSubscriber.php', + 'WP_Rocket\\Engine\\Optimization\\Minify\\CSS\\Combine' => $baseDir . '/inc/Engine/Optimization/Minify/CSS/Combine.php', + 'WP_Rocket\\Engine\\Optimization\\Minify\\CSS\\Minify' => $baseDir . '/inc/Engine/Optimization/Minify/CSS/Minify.php', + 'WP_Rocket\\Engine\\Optimization\\Minify\\CSS\\Subscriber' => $baseDir . '/inc/Engine/Optimization/Minify/CSS/Subscriber.php', + 'WP_Rocket\\Engine\\Optimization\\Minify\\JS\\AbstractJSOptimization' => $baseDir . '/inc/Engine/Optimization/Minify/JS/AbstractJSOptimization.php', + 'WP_Rocket\\Engine\\Optimization\\Minify\\JS\\Combine' => $baseDir . '/inc/Engine/Optimization/Minify/JS/Combine.php', + 'WP_Rocket\\Engine\\Optimization\\Minify\\JS\\Minify' => $baseDir . '/inc/Engine/Optimization/Minify/JS/Minify.php', + 'WP_Rocket\\Engine\\Optimization\\Minify\\JS\\Subscriber' => $baseDir . '/inc/Engine/Optimization/Minify/JS/Subscriber.php', + 'WP_Rocket\\Engine\\Optimization\\Minify\\ProcessorInterface' => $baseDir . '/inc/Engine/Optimization/Minify/ProcessorInterface.php', + 'WP_Rocket\\Engine\\Optimization\\QueryString\\Remove' => $baseDir . '/inc/deprecated/Engine/Optimization/QueryString/Remove.php', + 'WP_Rocket\\Engine\\Optimization\\QueryString\\RemoveSubscriber' => $baseDir . '/inc/deprecated/Engine/Optimization/QueryString/RemoveSubscriber.php', + 'WP_Rocket\\Engine\\Optimization\\ServiceProvider' => $baseDir . '/inc/Engine/Optimization/ServiceProvider.php', + 'WP_Rocket\\Engine\\Preload\\AbstractPreload' => $baseDir . '/inc/Engine/Preload/AbstractPreload.php', + 'WP_Rocket\\Engine\\Preload\\AbstractProcess' => $baseDir . '/inc/Engine/Preload/AbstractProcess.php', + 'WP_Rocket\\Engine\\Preload\\Fonts' => $baseDir . '/inc/Engine/Preload/Fonts.php', + 'WP_Rocket\\Engine\\Preload\\FullProcess' => $baseDir . '/inc/Engine/Preload/FullProcess.php', + 'WP_Rocket\\Engine\\Preload\\Homepage' => $baseDir . '/inc/Engine/Preload/Homepage.php', + 'WP_Rocket\\Engine\\Preload\\Links\\AdminSubscriber' => $baseDir . '/inc/Engine/Preload/Links/AdminSubscriber.php', + 'WP_Rocket\\Engine\\Preload\\Links\\ServiceProvider' => $baseDir . '/inc/Engine/Preload/Links/ServiceProvider.php', + 'WP_Rocket\\Engine\\Preload\\Links\\Subscriber' => $baseDir . '/inc/Engine/Preload/Links/Subscriber.php', + 'WP_Rocket\\Engine\\Preload\\PartialPreloadSubscriber' => $baseDir . '/inc/Engine/Preload/PartialPreloadSubscriber.php', + 'WP_Rocket\\Engine\\Preload\\PartialProcess' => $baseDir . '/inc/Engine/Preload/PartialProcess.php', + 'WP_Rocket\\Engine\\Preload\\PreloadSubscriber' => $baseDir . '/inc/Engine/Preload/PreloadSubscriber.php', + 'WP_Rocket\\Engine\\Preload\\ServiceProvider' => $baseDir . '/inc/Engine/Preload/ServiceProvider.php', + 'WP_Rocket\\Engine\\Preload\\Sitemap' => $baseDir . '/inc/Engine/Preload/Sitemap.php', + 'WP_Rocket\\Engine\\Preload\\SitemapPreloadSubscriber' => $baseDir . '/inc/Engine/Preload/SitemapPreloadSubscriber.php', + 'WP_Rocket\\Engine\\Support\\Data' => $baseDir . '/inc/Engine/Support/Data.php', + 'WP_Rocket\\Engine\\Support\\Rest' => $baseDir . '/inc/Engine/Support/Rest.php', + 'WP_Rocket\\Engine\\Support\\ServiceProvider' => $baseDir . '/inc/Engine/Support/ServiceProvider.php', + 'WP_Rocket\\Engine\\Support\\Subscriber' => $baseDir . '/inc/Engine/Support/Subscriber.php', + 'WP_Rocket\\Event_Management\\Event_Manager' => $baseDir . '/inc/classes/event-management/class-event-manager.php', + 'WP_Rocket\\Event_Management\\Event_Manager_Aware_Subscriber_Interface' => $baseDir . '/inc/classes/event-management/event-manager-aware-subscriber-interface.php', + 'WP_Rocket\\Event_Management\\Subscriber_Interface' => $baseDir . '/inc/classes/event-management/subscriber-interface.php', + 'WP_Rocket\\Interfaces\\Render_Interface' => $baseDir . '/inc/classes/interfaces/class-render-interface.php', + 'WP_Rocket\\Logger\\HTML_Formatter' => $baseDir . '/inc/classes/logger/class-html-formatter.php', + 'WP_Rocket\\Logger\\Logger' => $baseDir . '/inc/classes/logger/class-logger.php', + 'WP_Rocket\\Logger\\Stream_Handler' => $baseDir . '/inc/classes/logger/class-stream-handler.php', + 'WP_Rocket\\Plugin' => $baseDir . '/inc/Plugin.php', + 'WP_Rocket\\ServiceProvider\\Common_Subscribers' => $baseDir . '/inc/classes/ServiceProvider/class-common-subscribers.php', + 'WP_Rocket\\ServiceProvider\\Database' => $baseDir . '/inc/classes/ServiceProvider/class-database.php', + 'WP_Rocket\\ServiceProvider\\Options' => $baseDir . '/inc/classes/ServiceProvider/class-options.php', + 'WP_Rocket\\ServiceProvider\\Updater_Subscribers' => $baseDir . '/inc/classes/ServiceProvider/class-updater-subscribers.php', + 'WP_Rocket\\Subscriber\\Admin\\Database\\Optimization_Subscriber' => $baseDir . '/inc/classes/subscriber/admin/Database/class-optimization-subscriber.php', + 'WP_Rocket\\Subscriber\\Admin\\Settings\\Beacon_Subscriber' => $baseDir . '/inc/deprecated/subscriber/admin/Settings/class-beacon-subscriber.php', + 'WP_Rocket\\Subscriber\\Cache\\Expired_Cache_Purge_Subscriber' => $baseDir . '/inc/classes/subscriber/Cache/class-expired-cache-purge-subscriber.php', + 'WP_Rocket\\Subscriber\\Media\\Webp_Subscriber' => $baseDir . '/inc/classes/subscriber/Media/class-webp-subscriber.php', + 'WP_Rocket\\Subscriber\\Optimization\\Buffer_Subscriber' => $baseDir . '/inc/classes/subscriber/Optimization/class-buffer-subscriber.php', + 'WP_Rocket\\Subscriber\\Optimization\\Dequeue_JQuery_Migrate_Subscriber' => $baseDir . '/inc/classes/subscriber/Optimization/class-dequeue-jquery-migrate-subscriber.php', + 'WP_Rocket\\Subscriber\\Optimization\\Minify_HTML_Subscriber' => $baseDir . '/inc/deprecated/subscriber/admin/Optimization/class-minify-html-subscriber.php', + 'WP_Rocket\\Subscriber\\Plugin\\Information_Subscriber' => $baseDir . '/inc/classes/subscriber/Plugin/class-information-subscriber.php', + 'WP_Rocket\\Subscriber\\Plugin\\Updater_Api_Common_Subscriber' => $baseDir . '/inc/classes/subscriber/Plugin/class-updater-api-common-subscriber.php', + 'WP_Rocket\\Subscriber\\Plugin\\Updater_Subscriber' => $baseDir . '/inc/classes/subscriber/Plugin/class-updater-subscriber.php', + 'WP_Rocket\\Subscriber\\Third_Party\\Hostings\\Litespeed_Subscriber' => $baseDir . '/inc/classes/subscriber/third-party/Hostings/class-litespeed-subscriber.php', + 'WP_Rocket\\Subscriber\\Third_Party\\Plugins\\Ecommerce\\BigCommerce_Subscriber' => $baseDir . '/inc/classes/subscriber/third-party/plugins/ecommerce/class-bigcommerce-subscriber.php', + 'WP_Rocket\\Subscriber\\Third_Party\\Plugins\\Images\\Webp\\EWWW_Subscriber' => $baseDir . '/inc/classes/subscriber/third-party/plugins/Images/Webp/class-ewww-subscriber.php', + 'WP_Rocket\\Subscriber\\Third_Party\\Plugins\\Images\\Webp\\Imagify_Subscriber' => $baseDir . '/inc/classes/subscriber/third-party/plugins/Images/Webp/class-imagify-subscriber.php', + 'WP_Rocket\\Subscriber\\Third_Party\\Plugins\\Images\\Webp\\Optimus_Subscriber' => $baseDir . '/inc/classes/subscriber/third-party/plugins/Images/Webp/class-optimus-subscriber.php', + 'WP_Rocket\\Subscriber\\Third_Party\\Plugins\\Images\\Webp\\ShortPixel_Subscriber' => $baseDir . '/inc/classes/subscriber/third-party/plugins/Images/Webp/class-shortpixel-subscriber.php', + 'WP_Rocket\\Subscriber\\Third_Party\\Plugins\\Images\\Webp\\Webp_Common' => $baseDir . '/inc/classes/subscriber/third-party/plugins/Images/Webp/trait-webp-common.php', + 'WP_Rocket\\Subscriber\\Third_Party\\Plugins\\Images\\Webp\\Webp_Interface' => $baseDir . '/inc/classes/subscriber/third-party/plugins/Images/Webp/webp-interface.php', + 'WP_Rocket\\Subscriber\\Third_Party\\Plugins\\Mobile_Subscriber' => $baseDir . '/inc/classes/subscriber/third-party/plugins/class-mobile-subscriber.php', + 'WP_Rocket\\Subscriber\\Third_Party\\Plugins\\NGG_Subscriber' => $baseDir . '/inc/classes/subscriber/third-party/plugins/class-ngg-subscriber.php', + 'WP_Rocket\\Subscriber\\Third_Party\\Plugins\\Security\\Sucuri_Subscriber' => $baseDir . '/inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php', + 'WP_Rocket\\Subscriber\\Third_Party\\Plugins\\SyntaxHighlighter_Subscriber' => $baseDir . '/inc/classes/subscriber/third-party/plugins/class-syntaxhighlighter-subscriber.php', + 'WP_Rocket\\Subscriber\\Tools\\Detect_Missing_Tags_Subscriber' => $baseDir . '/inc/classes/subscriber/Tools/class-detect-missing-tags-subscriber.php', + 'WP_Rocket\\ThirdParty\\Hostings\\AbstractNoCacheHost' => $baseDir . '/inc/ThirdParty/Hostings/AbstractNoCacheHost.php', + 'WP_Rocket\\ThirdParty\\Hostings\\Cloudways' => $baseDir . '/inc/ThirdParty/Hostings/Cloudways.php', + 'WP_Rocket\\ThirdParty\\Hostings\\Dreampress' => $baseDir . '/inc/ThirdParty/Hostings/Dreampress.php', + 'WP_Rocket\\ThirdParty\\Hostings\\HostResolver' => $baseDir . '/inc/ThirdParty/Hostings/HostResolver.php', + 'WP_Rocket\\ThirdParty\\Hostings\\HostSubscriberFactory' => $baseDir . '/inc/ThirdParty/Hostings/HostSubscriberFactory.php', + 'WP_Rocket\\ThirdParty\\Hostings\\O2Switch' => $baseDir . '/inc/ThirdParty/Hostings/O2Switch.php', + 'WP_Rocket\\ThirdParty\\Hostings\\Pressable' => $baseDir . '/inc/ThirdParty/Hostings/Pressable.php', + 'WP_Rocket\\ThirdParty\\Hostings\\Savvii' => $baseDir . '/inc/ThirdParty/Hostings/Savvii.php', + 'WP_Rocket\\ThirdParty\\Hostings\\ServiceProvider' => $baseDir . '/inc/ThirdParty/Hostings/ServiceProvider.php', + 'WP_Rocket\\ThirdParty\\Hostings\\SpinUpWP' => $baseDir . '/inc/ThirdParty/Hostings/SpinUpWP.php', + 'WP_Rocket\\ThirdParty\\Hostings\\WPEngine' => $baseDir . '/inc/ThirdParty/Hostings/WPEngine.php', + 'WP_Rocket\\ThirdParty\\Hostings\\WordPressCom' => $baseDir . '/inc/ThirdParty/Hostings/WordPressCom.php', + 'WP_Rocket\\ThirdParty\\NullSubscriber' => $baseDir . '/inc/ThirdParty/NullSubscriber.php', + 'WP_Rocket\\ThirdParty\\Plugins\\Ecommerce\\WooCommerceSubscriber' => $baseDir . '/inc/ThirdParty/Plugins/Ecommerce/WooCommerceSubscriber.php', + 'WP_Rocket\\ThirdParty\\Plugins\\Optimization\\AMP' => $baseDir . '/inc/ThirdParty/Plugins/Optimization/AMP.php', + 'WP_Rocket\\ThirdParty\\Plugins\\Optimization\\Hummingbird' => $baseDir . '/inc/ThirdParty/Plugins/Optimization/Hummingbird.php', + 'WP_Rocket\\ThirdParty\\Plugins\\PDFEmbedder' => $baseDir . '/inc/ThirdParty/Plugins/PDFEmbedder.php', + 'WP_Rocket\\ThirdParty\\Plugins\\PageBuilder\\BeaverBuilder' => $baseDir . '/inc/ThirdParty/Plugins/PageBuilder/BeaverBuilder.php', + 'WP_Rocket\\ThirdParty\\Plugins\\PageBuilder\\Elementor' => $baseDir . '/inc/ThirdParty/Plugins/PageBuilder/Elementor.php', + 'WP_Rocket\\ThirdParty\\Plugins\\SimpleCustomCss' => $baseDir . '/inc/ThirdParty/Plugins/SimpleCustomCss.php', + 'WP_Rocket\\ThirdParty\\Plugins\\Smush' => $baseDir . '/inc/ThirdParty/Plugins/Smush.php', + 'WP_Rocket\\ThirdParty\\ReturnTypesTrait' => $baseDir . '/inc/ThirdParty/ReturnTypesTrait.php', + 'WP_Rocket\\ThirdParty\\ServiceProvider' => $baseDir . '/inc/ThirdParty/ServiceProvider.php', + 'WP_Rocket\\ThirdParty\\SubscriberFactoryInterface' => $baseDir . '/inc/ThirdParty/SubscriberFactoryInterface.php', + 'WP_Rocket\\ThirdParty\\Themes\\Bridge' => $baseDir . '/inc/ThirdParty/Themes/Bridge.php', + 'WP_Rocket\\ThirdParty\\Themes\\Divi' => $baseDir . '/inc/ThirdParty/Themes/Divi.php', + 'WP_Rocket\\Traits\\Config_Updater' => $baseDir . '/inc/classes/traits/trait-config-updater.php', + 'WP_Rocket\\Traits\\Memoize' => $baseDir . '/inc/classes/traits/trait-memoize.php', + 'WP_Rocket\\Traits\\Updater_Api_Tools' => $baseDir . '/inc/classes/traits/trait-updater-api-tools.php', + 'WP_Rocket\\deprecated\\DeprecatedClassTrait' => $baseDir . '/inc/deprecated/DeprecatedClassTrait.php', + 'WP_Rocket_Mobile_Detect' => $baseDir . '/inc/classes/dependencies/mobiledetect/mobiledetectlib/Mobile_Detect.php', + 'WP_Rocket_WP_Async_Request' => $baseDir . '/inc/classes/dependencies/wp-media/background-processing/wp-async-request.php', + 'WP_Rocket_WP_Background_Process' => $baseDir . '/inc/classes/dependencies/wp-media/background-processing/wp-background-process.php', +); diff --git a/wp-content/plugins/wp-rocket/vendor/composer/autoload_namespaces.php b/wp-content/plugins/wp-rocket/vendor/composer/autoload_namespaces.php new file mode 100644 index 0000000..b7fc012 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/autoload_namespaces.php @@ -0,0 +1,9 @@ + array($baseDir . '/inc'), + 'WPMedia\\Cloudflare\\' => array($baseDir . '/inc/Addon/Cloudflare'), + 'Psr\\Log\\' => array($vendorDir . '/psr/log/Psr/Log'), + 'Psr\\Container\\' => array($vendorDir . '/psr/container/src'), + 'Monolog\\' => array($vendorDir . '/monolog/monolog/src/Monolog'), + 'Composer\\Installers\\' => array($vendorDir . '/composer/installers/src/Composer/Installers'), +); diff --git a/wp-content/plugins/wp-rocket/vendor/composer/autoload_real.php b/wp-content/plugins/wp-rocket/vendor/composer/autoload_real.php new file mode 100644 index 0000000..ce726ba --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/autoload_real.php @@ -0,0 +1,55 @@ += 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded()); + if ($useStaticLoader) { + require_once __DIR__ . '/autoload_static.php'; + + call_user_func(\Composer\Autoload\ComposerStaticInitbc80850d95b4c1edbb9e4f17493a5b6d::getInitializer($loader)); + } else { + $map = require __DIR__ . '/autoload_namespaces.php'; + foreach ($map as $namespace => $path) { + $loader->set($namespace, $path); + } + + $map = require __DIR__ . '/autoload_psr4.php'; + foreach ($map as $namespace => $path) { + $loader->setPsr4($namespace, $path); + } + + $classMap = require __DIR__ . '/autoload_classmap.php'; + if ($classMap) { + $loader->addClassMap($classMap); + } + } + + $loader->register(true); + + return $loader; + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/autoload_static.php b/wp-content/plugins/wp-rocket/vendor/composer/autoload_static.php new file mode 100644 index 0000000..427486e --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/autoload_static.php @@ -0,0 +1,533 @@ + + array ( + 'WP_Rocket\\' => 10, + 'WPMedia\\Cloudflare\\' => 19, + ), + 'P' => + array ( + 'Psr\\Log\\' => 8, + 'Psr\\Container\\' => 14, + ), + 'M' => + array ( + 'Monolog\\' => 8, + ), + 'C' => + array ( + 'Composer\\Installers\\' => 20, + ), + ); + + public static $prefixDirsPsr4 = array ( + 'WP_Rocket\\' => + array ( + 0 => __DIR__ . '/../..' . '/inc', + ), + 'WPMedia\\Cloudflare\\' => + array ( + 0 => __DIR__ . '/../..' . '/inc/Addon/Cloudflare', + ), + 'Psr\\Log\\' => + array ( + 0 => __DIR__ . '/..' . '/psr/log/Psr/Log', + ), + 'Psr\\Container\\' => + array ( + 0 => __DIR__ . '/..' . '/psr/container/src', + ), + 'Monolog\\' => + array ( + 0 => __DIR__ . '/..' . '/monolog/monolog/src/Monolog', + ), + 'Composer\\Installers\\' => + array ( + 0 => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers', + ), + ); + + public static $classMap = array ( + 'Composer\\Installers\\AglInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/AglInstaller.php', + 'Composer\\Installers\\AimeosInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/AimeosInstaller.php', + 'Composer\\Installers\\AnnotateCmsInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/AnnotateCmsInstaller.php', + 'Composer\\Installers\\AsgardInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/AsgardInstaller.php', + 'Composer\\Installers\\AttogramInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/AttogramInstaller.php', + 'Composer\\Installers\\BaseInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/BaseInstaller.php', + 'Composer\\Installers\\BitrixInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/BitrixInstaller.php', + 'Composer\\Installers\\BonefishInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/BonefishInstaller.php', + 'Composer\\Installers\\CakePHPInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/CakePHPInstaller.php', + 'Composer\\Installers\\ChefInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/ChefInstaller.php', + 'Composer\\Installers\\CiviCrmInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/CiviCrmInstaller.php', + 'Composer\\Installers\\ClanCatsFrameworkInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/ClanCatsFrameworkInstaller.php', + 'Composer\\Installers\\CockpitInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/CockpitInstaller.php', + 'Composer\\Installers\\CodeIgniterInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/CodeIgniterInstaller.php', + 'Composer\\Installers\\Concrete5Installer' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/Concrete5Installer.php', + 'Composer\\Installers\\CraftInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/CraftInstaller.php', + 'Composer\\Installers\\CroogoInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/CroogoInstaller.php', + 'Composer\\Installers\\DecibelInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/DecibelInstaller.php', + 'Composer\\Installers\\DframeInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/DframeInstaller.php', + 'Composer\\Installers\\DokuWikiInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/DokuWikiInstaller.php', + 'Composer\\Installers\\DolibarrInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/DolibarrInstaller.php', + 'Composer\\Installers\\DrupalInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/DrupalInstaller.php', + 'Composer\\Installers\\ElggInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/ElggInstaller.php', + 'Composer\\Installers\\EliasisInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/EliasisInstaller.php', + 'Composer\\Installers\\ExpressionEngineInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/ExpressionEngineInstaller.php', + 'Composer\\Installers\\EzPlatformInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/EzPlatformInstaller.php', + 'Composer\\Installers\\FuelInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/FuelInstaller.php', + 'Composer\\Installers\\FuelphpInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/FuelphpInstaller.php', + 'Composer\\Installers\\GravInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/GravInstaller.php', + 'Composer\\Installers\\HuradInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/HuradInstaller.php', + 'Composer\\Installers\\ImageCMSInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/ImageCMSInstaller.php', + 'Composer\\Installers\\Installer' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/Installer.php', + 'Composer\\Installers\\ItopInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/ItopInstaller.php', + 'Composer\\Installers\\JoomlaInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/JoomlaInstaller.php', + 'Composer\\Installers\\KanboardInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/KanboardInstaller.php', + 'Composer\\Installers\\KirbyInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/KirbyInstaller.php', + 'Composer\\Installers\\KnownInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/KnownInstaller.php', + 'Composer\\Installers\\KodiCMSInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/KodiCMSInstaller.php', + 'Composer\\Installers\\KohanaInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/KohanaInstaller.php', + 'Composer\\Installers\\LanManagementSystemInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/LanManagementSystemInstaller.php', + 'Composer\\Installers\\LaravelInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/LaravelInstaller.php', + 'Composer\\Installers\\LavaLiteInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/LavaLiteInstaller.php', + 'Composer\\Installers\\LithiumInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/LithiumInstaller.php', + 'Composer\\Installers\\MODULEWorkInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/MODULEWorkInstaller.php', + 'Composer\\Installers\\MODXEvoInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/MODXEvoInstaller.php', + 'Composer\\Installers\\MagentoInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/MagentoInstaller.php', + 'Composer\\Installers\\MajimaInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/MajimaInstaller.php', + 'Composer\\Installers\\MakoInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/MakoInstaller.php', + 'Composer\\Installers\\MauticInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/MauticInstaller.php', + 'Composer\\Installers\\MayaInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/MayaInstaller.php', + 'Composer\\Installers\\MediaWikiInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/MediaWikiInstaller.php', + 'Composer\\Installers\\MicroweberInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/MicroweberInstaller.php', + 'Composer\\Installers\\ModxInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/ModxInstaller.php', + 'Composer\\Installers\\MoodleInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/MoodleInstaller.php', + 'Composer\\Installers\\OctoberInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/OctoberInstaller.php', + 'Composer\\Installers\\OntoWikiInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/OntoWikiInstaller.php', + 'Composer\\Installers\\OsclassInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/OsclassInstaller.php', + 'Composer\\Installers\\OxidInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/OxidInstaller.php', + 'Composer\\Installers\\PPIInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/PPIInstaller.php', + 'Composer\\Installers\\PhiftyInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/PhiftyInstaller.php', + 'Composer\\Installers\\PhpBBInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/PhpBBInstaller.php', + 'Composer\\Installers\\PimcoreInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/PimcoreInstaller.php', + 'Composer\\Installers\\PiwikInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/PiwikInstaller.php', + 'Composer\\Installers\\PlentymarketsInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/PlentymarketsInstaller.php', + 'Composer\\Installers\\Plugin' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/Plugin.php', + 'Composer\\Installers\\PortoInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/PortoInstaller.php', + 'Composer\\Installers\\PrestashopInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/PrestashopInstaller.php', + 'Composer\\Installers\\PuppetInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/PuppetInstaller.php', + 'Composer\\Installers\\PxcmsInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/PxcmsInstaller.php', + 'Composer\\Installers\\RadPHPInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/RadPHPInstaller.php', + 'Composer\\Installers\\ReIndexInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/ReIndexInstaller.php', + 'Composer\\Installers\\Redaxo5Installer' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/Redaxo5Installer.php', + 'Composer\\Installers\\RedaxoInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/RedaxoInstaller.php', + 'Composer\\Installers\\RoundcubeInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/RoundcubeInstaller.php', + 'Composer\\Installers\\SMFInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/SMFInstaller.php', + 'Composer\\Installers\\ShopwareInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/ShopwareInstaller.php', + 'Composer\\Installers\\SilverStripeInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/SilverStripeInstaller.php', + 'Composer\\Installers\\SiteDirectInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/SiteDirectInstaller.php', + 'Composer\\Installers\\SyDESInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/SyDESInstaller.php', + 'Composer\\Installers\\Symfony1Installer' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/Symfony1Installer.php', + 'Composer\\Installers\\TYPO3CmsInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/TYPO3CmsInstaller.php', + 'Composer\\Installers\\TYPO3FlowInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/TYPO3FlowInstaller.php', + 'Composer\\Installers\\TaoInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/TaoInstaller.php', + 'Composer\\Installers\\TheliaInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/TheliaInstaller.php', + 'Composer\\Installers\\TuskInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/TuskInstaller.php', + 'Composer\\Installers\\UserFrostingInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/UserFrostingInstaller.php', + 'Composer\\Installers\\VanillaInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/VanillaInstaller.php', + 'Composer\\Installers\\VgmcpInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/VgmcpInstaller.php', + 'Composer\\Installers\\WHMCSInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/WHMCSInstaller.php', + 'Composer\\Installers\\WolfCMSInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/WolfCMSInstaller.php', + 'Composer\\Installers\\WordPressInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/WordPressInstaller.php', + 'Composer\\Installers\\YawikInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/YawikInstaller.php', + 'Composer\\Installers\\ZendInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/ZendInstaller.php', + 'Composer\\Installers\\ZikulaInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/ZikulaInstaller.php', + 'Imagify_Partner' => __DIR__ . '/../..' . '/inc/vendors/classes/class-imagify-partner.php', + 'Minify_CSS_UriRewriter' => __DIR__ . '/../..' . '/inc/vendors/classes/class-minify-css-urirewriter.php', + 'Monolog\\ErrorHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/ErrorHandler.php', + 'Monolog\\Formatter\\ChromePHPFormatter' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Formatter/ChromePHPFormatter.php', + 'Monolog\\Formatter\\ElasticaFormatter' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Formatter/ElasticaFormatter.php', + 'Monolog\\Formatter\\FlowdockFormatter' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Formatter/FlowdockFormatter.php', + 'Monolog\\Formatter\\FluentdFormatter' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Formatter/FluentdFormatter.php', + 'Monolog\\Formatter\\FormatterInterface' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Formatter/FormatterInterface.php', + 'Monolog\\Formatter\\GelfMessageFormatter' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Formatter/GelfMessageFormatter.php', + 'Monolog\\Formatter\\HtmlFormatter' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Formatter/HtmlFormatter.php', + 'Monolog\\Formatter\\JsonFormatter' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Formatter/JsonFormatter.php', + 'Monolog\\Formatter\\LineFormatter' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Formatter/LineFormatter.php', + 'Monolog\\Formatter\\LogglyFormatter' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Formatter/LogglyFormatter.php', + 'Monolog\\Formatter\\LogstashFormatter' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Formatter/LogstashFormatter.php', + 'Monolog\\Formatter\\MongoDBFormatter' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Formatter/MongoDBFormatter.php', + 'Monolog\\Formatter\\NormalizerFormatter' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Formatter/NormalizerFormatter.php', + 'Monolog\\Formatter\\ScalarFormatter' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Formatter/ScalarFormatter.php', + 'Monolog\\Formatter\\WildfireFormatter' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Formatter/WildfireFormatter.php', + 'Monolog\\Handler\\AbstractHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/AbstractHandler.php', + 'Monolog\\Handler\\AbstractProcessingHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php', + 'Monolog\\Handler\\AbstractSyslogHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/AbstractSyslogHandler.php', + 'Monolog\\Handler\\AmqpHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/AmqpHandler.php', + 'Monolog\\Handler\\BrowserConsoleHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/BrowserConsoleHandler.php', + 'Monolog\\Handler\\BufferHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/BufferHandler.php', + 'Monolog\\Handler\\ChromePHPHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/ChromePHPHandler.php', + 'Monolog\\Handler\\CouchDBHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/CouchDBHandler.php', + 'Monolog\\Handler\\CubeHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/CubeHandler.php', + 'Monolog\\Handler\\Curl\\Util' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/Curl/Util.php', + 'Monolog\\Handler\\DeduplicationHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/DeduplicationHandler.php', + 'Monolog\\Handler\\DoctrineCouchDBHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/DoctrineCouchDBHandler.php', + 'Monolog\\Handler\\DynamoDbHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/DynamoDbHandler.php', + 'Monolog\\Handler\\ElasticSearchHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/ElasticSearchHandler.php', + 'Monolog\\Handler\\ErrorLogHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/ErrorLogHandler.php', + 'Monolog\\Handler\\FilterHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/FilterHandler.php', + 'Monolog\\Handler\\FingersCrossedHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/FingersCrossedHandler.php', + 'Monolog\\Handler\\FingersCrossed\\ActivationStrategyInterface' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/FingersCrossed/ActivationStrategyInterface.php', + 'Monolog\\Handler\\FingersCrossed\\ChannelLevelActivationStrategy' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/FingersCrossed/ChannelLevelActivationStrategy.php', + 'Monolog\\Handler\\FingersCrossed\\ErrorLevelActivationStrategy' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/FingersCrossed/ErrorLevelActivationStrategy.php', + 'Monolog\\Handler\\FirePHPHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/FirePHPHandler.php', + 'Monolog\\Handler\\FleepHookHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/FleepHookHandler.php', + 'Monolog\\Handler\\FlowdockHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/FlowdockHandler.php', + 'Monolog\\Handler\\FormattableHandlerInterface' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/FormattableHandlerInterface.php', + 'Monolog\\Handler\\FormattableHandlerTrait' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/FormattableHandlerTrait.php', + 'Monolog\\Handler\\GelfHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/GelfHandler.php', + 'Monolog\\Handler\\GroupHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/GroupHandler.php', + 'Monolog\\Handler\\HandlerInterface' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/HandlerInterface.php', + 'Monolog\\Handler\\HandlerWrapper' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/HandlerWrapper.php', + 'Monolog\\Handler\\HipChatHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/HipChatHandler.php', + 'Monolog\\Handler\\IFTTTHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/IFTTTHandler.php', + 'Monolog\\Handler\\InsightOpsHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/InsightOpsHandler.php', + 'Monolog\\Handler\\LogEntriesHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/LogEntriesHandler.php', + 'Monolog\\Handler\\LogglyHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/LogglyHandler.php', + 'Monolog\\Handler\\MailHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/MailHandler.php', + 'Monolog\\Handler\\MandrillHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/MandrillHandler.php', + 'Monolog\\Handler\\MissingExtensionException' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/MissingExtensionException.php', + 'Monolog\\Handler\\MongoDBHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/MongoDBHandler.php', + 'Monolog\\Handler\\NativeMailerHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/NativeMailerHandler.php', + 'Monolog\\Handler\\NewRelicHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/NewRelicHandler.php', + 'Monolog\\Handler\\NullHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/NullHandler.php', + 'Monolog\\Handler\\PHPConsoleHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/PHPConsoleHandler.php', + 'Monolog\\Handler\\ProcessableHandlerInterface' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/ProcessableHandlerInterface.php', + 'Monolog\\Handler\\ProcessableHandlerTrait' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/ProcessableHandlerTrait.php', + 'Monolog\\Handler\\PsrHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/PsrHandler.php', + 'Monolog\\Handler\\PushoverHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/PushoverHandler.php', + 'Monolog\\Handler\\RavenHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/RavenHandler.php', + 'Monolog\\Handler\\RedisHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/RedisHandler.php', + 'Monolog\\Handler\\RollbarHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/RollbarHandler.php', + 'Monolog\\Handler\\RotatingFileHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/RotatingFileHandler.php', + 'Monolog\\Handler\\SamplingHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/SamplingHandler.php', + 'Monolog\\Handler\\SlackHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/SlackHandler.php', + 'Monolog\\Handler\\SlackWebhookHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/SlackWebhookHandler.php', + 'Monolog\\Handler\\Slack\\SlackRecord' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/Slack/SlackRecord.php', + 'Monolog\\Handler\\SlackbotHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/SlackbotHandler.php', + 'Monolog\\Handler\\SocketHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/SocketHandler.php', + 'Monolog\\Handler\\StreamHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/StreamHandler.php', + 'Monolog\\Handler\\SwiftMailerHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/SwiftMailerHandler.php', + 'Monolog\\Handler\\SyslogHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/SyslogHandler.php', + 'Monolog\\Handler\\SyslogUdpHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/SyslogUdpHandler.php', + 'Monolog\\Handler\\SyslogUdp\\UdpSocket' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/SyslogUdp/UdpSocket.php', + 'Monolog\\Handler\\TestHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/TestHandler.php', + 'Monolog\\Handler\\WhatFailureGroupHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/WhatFailureGroupHandler.php', + 'Monolog\\Handler\\ZendMonitorHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/ZendMonitorHandler.php', + 'Monolog\\Logger' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Logger.php', + 'Monolog\\Processor\\GitProcessor' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Processor/GitProcessor.php', + 'Monolog\\Processor\\IntrospectionProcessor' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Processor/IntrospectionProcessor.php', + 'Monolog\\Processor\\MemoryPeakUsageProcessor' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Processor/MemoryPeakUsageProcessor.php', + 'Monolog\\Processor\\MemoryProcessor' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Processor/MemoryProcessor.php', + 'Monolog\\Processor\\MemoryUsageProcessor' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Processor/MemoryUsageProcessor.php', + 'Monolog\\Processor\\MercurialProcessor' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Processor/MercurialProcessor.php', + 'Monolog\\Processor\\ProcessIdProcessor' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Processor/ProcessIdProcessor.php', + 'Monolog\\Processor\\ProcessorInterface' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Processor/ProcessorInterface.php', + 'Monolog\\Processor\\PsrLogMessageProcessor' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Processor/PsrLogMessageProcessor.php', + 'Monolog\\Processor\\TagProcessor' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Processor/TagProcessor.php', + 'Monolog\\Processor\\UidProcessor' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Processor/UidProcessor.php', + 'Monolog\\Processor\\WebProcessor' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Processor/WebProcessor.php', + 'Monolog\\Registry' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Registry.php', + 'Monolog\\ResettableInterface' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/ResettableInterface.php', + 'Monolog\\SignalHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/SignalHandler.php', + 'Monolog\\Utils' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Utils.php', + 'Psr\\Container\\ContainerExceptionInterface' => __DIR__ . '/..' . '/psr/container/src/ContainerExceptionInterface.php', + 'Psr\\Container\\ContainerInterface' => __DIR__ . '/..' . '/psr/container/src/ContainerInterface.php', + 'Psr\\Container\\NotFoundExceptionInterface' => __DIR__ . '/..' . '/psr/container/src/NotFoundExceptionInterface.php', + 'Psr\\Log\\AbstractLogger' => __DIR__ . '/..' . '/psr/log/Psr/Log/AbstractLogger.php', + 'Psr\\Log\\InvalidArgumentException' => __DIR__ . '/..' . '/psr/log/Psr/Log/InvalidArgumentException.php', + 'Psr\\Log\\LogLevel' => __DIR__ . '/..' . '/psr/log/Psr/Log/LogLevel.php', + 'Psr\\Log\\LoggerAwareInterface' => __DIR__ . '/..' . '/psr/log/Psr/Log/LoggerAwareInterface.php', + 'Psr\\Log\\LoggerAwareTrait' => __DIR__ . '/..' . '/psr/log/Psr/Log/LoggerAwareTrait.php', + 'Psr\\Log\\LoggerInterface' => __DIR__ . '/..' . '/psr/log/Psr/Log/LoggerInterface.php', + 'Psr\\Log\\LoggerTrait' => __DIR__ . '/..' . '/psr/log/Psr/Log/LoggerTrait.php', + 'Psr\\Log\\NullLogger' => __DIR__ . '/..' . '/psr/log/Psr/Log/NullLogger.php', + 'Psr\\Log\\Test\\DummyTest' => __DIR__ . '/..' . '/psr/log/Psr/Log/Test/DummyTest.php', + 'Psr\\Log\\Test\\LoggerInterfaceTest' => __DIR__ . '/..' . '/psr/log/Psr/Log/Test/LoggerInterfaceTest.php', + 'Psr\\Log\\Test\\TestLogger' => __DIR__ . '/..' . '/psr/log/Psr/Log/Test/TestLogger.php', + 'WPMedia\\Cloudflare\\APIClient' => __DIR__ . '/../..' . '/inc/Addon/Cloudflare/APIClient.php', + 'WPMedia\\Cloudflare\\AuthenticationException' => __DIR__ . '/../..' . '/inc/Addon/Cloudflare/AuthenticationException.php', + 'WPMedia\\Cloudflare\\Cloudflare' => __DIR__ . '/../..' . '/inc/Addon/Cloudflare/Cloudflare.php', + 'WPMedia\\Cloudflare\\Subscriber' => __DIR__ . '/../..' . '/inc/Addon/Cloudflare/Subscriber.php', + 'WPMedia\\Cloudflare\\UnauthorizedException' => __DIR__ . '/../..' . '/inc/Addon/Cloudflare/UnauthorizedException.php', + 'WP_Rocket\\Abstract_Render' => __DIR__ . '/../..' . '/inc/classes/class-abstract-render.php', + 'WP_Rocket\\Addon\\Busting\\BustingFactory' => __DIR__ . '/../..' . '/inc/Addon/Busting/BustingFactory.php', + 'WP_Rocket\\Addon\\Busting\\FileBustingTrait' => __DIR__ . '/../..' . '/inc/Addon/Busting/FileBustingTrait.php', + 'WP_Rocket\\Addon\\FacebookTracking\\Subscriber' => __DIR__ . '/../..' . '/inc/Addon/FacebookTracking/Subscriber.php', + 'WP_Rocket\\Addon\\GoogleTracking\\GoogleAnalytics' => __DIR__ . '/../..' . '/inc/Addon/GoogleTracking/GoogleAnalytics.php', + 'WP_Rocket\\Addon\\GoogleTracking\\GoogleTagManager' => __DIR__ . '/../..' . '/inc/Addon/GoogleTracking/GoogleTagManager.php', + 'WP_Rocket\\Addon\\GoogleTracking\\Subscriber' => __DIR__ . '/../..' . '/inc/Addon/GoogleTracking/Subscriber.php', + 'WP_Rocket\\Addon\\ServiceProvider' => __DIR__ . '/../..' . '/inc/Addon/ServiceProvider.php', + 'WP_Rocket\\Addon\\Varnish\\ServiceProvider' => __DIR__ . '/../..' . '/inc/Addon/Varnish/ServiceProvider.php', + 'WP_Rocket\\Addon\\Varnish\\Subscriber' => __DIR__ . '/../..' . '/inc/Addon/Varnish/Subscriber.php', + 'WP_Rocket\\Addon\\Varnish\\Varnish' => __DIR__ . '/../..' . '/inc/Addon/Varnish/Varnish.php', + 'WP_Rocket\\Admin\\Abstract_Options' => __DIR__ . '/../..' . '/inc/classes/admin/class-abstract-options.php', + 'WP_Rocket\\Admin\\Database\\Optimization' => __DIR__ . '/../..' . '/inc/classes/admin/Database/class-optimization.php', + 'WP_Rocket\\Admin\\Database\\Optimization_Process' => __DIR__ . '/../..' . '/inc/classes/admin/Database/class-optimization-process.php', + 'WP_Rocket\\Admin\\Deactivation\\Render' => __DIR__ . '/../..' . '/inc/classes/admin/deactivation/class-render.php', + 'WP_Rocket\\Admin\\Logs' => __DIR__ . '/../..' . '/inc/classes/admin/class-logs.php', + 'WP_Rocket\\Admin\\Options' => __DIR__ . '/../..' . '/inc/classes/admin/class-options.php', + 'WP_Rocket\\Admin\\Options_Data' => __DIR__ . '/../..' . '/inc/classes/admin/class-options-data.php', + 'WP_Rocket\\Buffer\\Abstract_Buffer' => __DIR__ . '/../..' . '/inc/classes/Buffer/class-abstract-buffer.php', + 'WP_Rocket\\Buffer\\Cache' => __DIR__ . '/../..' . '/inc/classes/Buffer/class-cache.php', + 'WP_Rocket\\Buffer\\Config' => __DIR__ . '/../..' . '/inc/classes/Buffer/class-config.php', + 'WP_Rocket\\Buffer\\Optimization' => __DIR__ . '/../..' . '/inc/classes/Buffer/class-optimization.php', + 'WP_Rocket\\Buffer\\Tests' => __DIR__ . '/../..' . '/inc/classes/Buffer/class-tests.php', + 'WP_Rocket\\Busting\\Abstract_Busting' => __DIR__ . '/../..' . '/inc/classes/busting/class-abstract-busting.php', + 'WP_Rocket\\Busting\\Facebook_Pickles' => __DIR__ . '/../..' . '/inc/classes/busting/class-facebook-pickles.php', + 'WP_Rocket\\Busting\\Facebook_SDK' => __DIR__ . '/../..' . '/inc/classes/busting/class-facebook-sdk.php', + 'WP_Rocket\\Cache\\Expired_Cache_Purge' => __DIR__ . '/../..' . '/inc/classes/Cache/class-expired-cache-purge.php', + 'WP_Rocket\\Dependencies\\Minify\\CSS' => __DIR__ . '/../..' . '/inc/Dependencies/Minify/CSS.php', + 'WP_Rocket\\Dependencies\\Minify\\Exception' => __DIR__ . '/../..' . '/inc/Dependencies/Minify/Exception.php', + 'WP_Rocket\\Dependencies\\Minify\\Exceptions\\BasicException' => __DIR__ . '/../..' . '/inc/Dependencies/Minify/Exceptions/BasicException.php', + 'WP_Rocket\\Dependencies\\Minify\\Exceptions\\FileImportException' => __DIR__ . '/../..' . '/inc/Dependencies/Minify/Exceptions/FileImportException.php', + 'WP_Rocket\\Dependencies\\Minify\\Exceptions\\IOException' => __DIR__ . '/../..' . '/inc/Dependencies/Minify/Exceptions/IOException.php', + 'WP_Rocket\\Dependencies\\Minify\\JS' => __DIR__ . '/../..' . '/inc/Dependencies/Minify/JS.php', + 'WP_Rocket\\Dependencies\\Minify\\Minify' => __DIR__ . '/../..' . '/inc/Dependencies/Minify/Minify.php', + 'WP_Rocket\\Dependencies\\PathConverter\\Converter' => __DIR__ . '/../..' . '/inc/Dependencies/PathConverter/Converter.php', + 'WP_Rocket\\Dependencies\\PathConverter\\ConverterInterface' => __DIR__ . '/../..' . '/inc/Dependencies/PathConverter/ConverterInterface.php', + 'WP_Rocket\\Dependencies\\PathConverter\\NoConverter' => __DIR__ . '/../..' . '/inc/Dependencies/PathConverter/NoConverter.php', + 'WP_Rocket\\Dependencies\\RocketLazyload\\Assets' => __DIR__ . '/../..' . '/inc/Dependencies/RocketLazyload/Assets.php', + 'WP_Rocket\\Dependencies\\RocketLazyload\\Iframe' => __DIR__ . '/../..' . '/inc/Dependencies/RocketLazyload/Iframe.php', + 'WP_Rocket\\Dependencies\\RocketLazyload\\Image' => __DIR__ . '/../..' . '/inc/Dependencies/RocketLazyload/Image.php', + 'WP_Rocket\\Engine\\Activation\\Activation' => __DIR__ . '/../..' . '/inc/Engine/Activation/Activation.php', + 'WP_Rocket\\Engine\\Activation\\ActivationInterface' => __DIR__ . '/../..' . '/inc/Engine/Activation/ActivationInterface.php', + 'WP_Rocket\\Engine\\Activation\\ServiceProvider' => __DIR__ . '/../..' . '/inc/Engine/Activation/ServiceProvider.php', + 'WP_Rocket\\Engine\\Admin\\Beacon\\Beacon' => __DIR__ . '/../..' . '/inc/Engine/Admin/Beacon/Beacon.php', + 'WP_Rocket\\Engine\\Admin\\Beacon\\ServiceProvider' => __DIR__ . '/../..' . '/inc/Engine/Admin/Beacon/ServiceProvider.php', + 'WP_Rocket\\Engine\\Admin\\Deactivation\\DeactivationIntent' => __DIR__ . '/../..' . '/inc/Engine/Admin/Deactivation/DeactivationIntent.php', + 'WP_Rocket\\Engine\\Admin\\ServiceProvider' => __DIR__ . '/../..' . '/inc/Engine/Admin/ServiceProvider.php', + 'WP_Rocket\\Engine\\Admin\\Settings\\Page' => __DIR__ . '/../..' . '/inc/Engine/Admin/Settings/Page.php', + 'WP_Rocket\\Engine\\Admin\\Settings\\Render' => __DIR__ . '/../..' . '/inc/Engine/Admin/Settings/Render.php', + 'WP_Rocket\\Engine\\Admin\\Settings\\ServiceProvider' => __DIR__ . '/../..' . '/inc/Engine/Admin/Settings/ServiceProvider.php', + 'WP_Rocket\\Engine\\Admin\\Settings\\Settings' => __DIR__ . '/../..' . '/inc/Engine/Admin/Settings/Settings.php', + 'WP_Rocket\\Engine\\Admin\\Settings\\Subscriber' => __DIR__ . '/../..' . '/inc/Engine/Admin/Settings/Subscriber.php', + 'WP_Rocket\\Engine\\CDN\\CDN' => __DIR__ . '/../..' . '/inc/Engine/CDN/CDN.php', + 'WP_Rocket\\Engine\\CDN\\RocketCDN\\APIClient' => __DIR__ . '/../..' . '/inc/Engine/CDN/RocketCDN/APIClient.php', + 'WP_Rocket\\Engine\\CDN\\RocketCDN\\AdminPageSubscriber' => __DIR__ . '/../..' . '/inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php', + 'WP_Rocket\\Engine\\CDN\\RocketCDN\\CDNOptionsManager' => __DIR__ . '/../..' . '/inc/Engine/CDN/RocketCDN/CDNOptionsManager.php', + 'WP_Rocket\\Engine\\CDN\\RocketCDN\\DataManagerSubscriber' => __DIR__ . '/../..' . '/inc/Engine/CDN/RocketCDN/DataManagerSubscriber.php', + 'WP_Rocket\\Engine\\CDN\\RocketCDN\\NoticesSubscriber' => __DIR__ . '/../..' . '/inc/Engine/CDN/RocketCDN/NoticesSubscriber.php', + 'WP_Rocket\\Engine\\CDN\\RocketCDN\\RESTSubscriber' => __DIR__ . '/../..' . '/inc/Engine/CDN/RocketCDN/RESTSubscriber.php', + 'WP_Rocket\\Engine\\CDN\\RocketCDN\\ServiceProvider' => __DIR__ . '/../..' . '/inc/Engine/CDN/RocketCDN/ServiceProvider.php', + 'WP_Rocket\\Engine\\CDN\\ServiceProvider' => __DIR__ . '/../..' . '/inc/Engine/CDN/ServiceProvider.php', + 'WP_Rocket\\Engine\\CDN\\Subscriber' => __DIR__ . '/../..' . '/inc/Engine/CDN/Subscriber.php', + 'WP_Rocket\\Engine\\Cache\\AdminSubscriber' => __DIR__ . '/../..' . '/inc/Engine/Cache/AdminSubscriber.php', + 'WP_Rocket\\Engine\\Cache\\AdvancedCache' => __DIR__ . '/../..' . '/inc/Engine/Cache/AdvancedCache.php', + 'WP_Rocket\\Engine\\Cache\\Purge' => __DIR__ . '/../..' . '/inc/Engine/Cache/Purge.php', + 'WP_Rocket\\Engine\\Cache\\PurgeActionsSubscriber' => __DIR__ . '/../..' . '/inc/Engine/Cache/PurgeActionsSubscriber.php', + 'WP_Rocket\\Engine\\Cache\\ServiceProvider' => __DIR__ . '/../..' . '/inc/Engine/Cache/ServiceProvider.php', + 'WP_Rocket\\Engine\\Cache\\WPCache' => __DIR__ . '/../..' . '/inc/Engine/Cache/WPCache.php', + 'WP_Rocket\\Engine\\Capabilities\\Manager' => __DIR__ . '/../..' . '/inc/Engine/Capabilities/Manager.php', + 'WP_Rocket\\Engine\\Capabilities\\ServiceProvider' => __DIR__ . '/../..' . '/inc/Engine/Capabilities/ServiceProvider.php', + 'WP_Rocket\\Engine\\Capabilities\\Subscriber' => __DIR__ . '/../..' . '/inc/Engine/Capabilities/Subscriber.php', + 'WP_Rocket\\Engine\\Container\\Argument\\ArgumentResolverInterface' => __DIR__ . '/../..' . '/inc/Engine/Container/Argument/ArgumentResolverInterface.php', + 'WP_Rocket\\Engine\\Container\\Argument\\ArgumentResolverTrait' => __DIR__ . '/../..' . '/inc/Engine/Container/Argument/ArgumentResolverTrait.php', + 'WP_Rocket\\Engine\\Container\\Argument\\RawArgument' => __DIR__ . '/../..' . '/inc/Engine/Container/Argument/RawArgument.php', + 'WP_Rocket\\Engine\\Container\\Argument\\RawArgumentInterface' => __DIR__ . '/../..' . '/inc/Engine/Container/Argument/RawArgumentInterface.php', + 'WP_Rocket\\Engine\\Container\\Container' => __DIR__ . '/../..' . '/inc/Engine/Container/Container.php', + 'WP_Rocket\\Engine\\Container\\ContainerAwareInterface' => __DIR__ . '/../..' . '/inc/Engine/Container/ContainerAwareInterface.php', + 'WP_Rocket\\Engine\\Container\\ContainerAwareTrait' => __DIR__ . '/../..' . '/inc/Engine/Container/ContainerAwareTrait.php', + 'WP_Rocket\\Engine\\Container\\ContainerInterface' => __DIR__ . '/../..' . '/inc/Engine/Container/ContainerInterface.php', + 'WP_Rocket\\Engine\\Container\\Definition\\AbstractDefinition' => __DIR__ . '/../..' . '/inc/Engine/Container/Definition/AbstractDefinition.php', + 'WP_Rocket\\Engine\\Container\\Definition\\CallableDefinition' => __DIR__ . '/../..' . '/inc/Engine/Container/Definition/CallableDefinition.php', + 'WP_Rocket\\Engine\\Container\\Definition\\ClassDefinition' => __DIR__ . '/../..' . '/inc/Engine/Container/Definition/ClassDefinition.php', + 'WP_Rocket\\Engine\\Container\\Definition\\ClassDefinitionInterface' => __DIR__ . '/../..' . '/inc/Engine/Container/Definition/ClassDefinitionInterface.php', + 'WP_Rocket\\Engine\\Container\\Definition\\DefinitionFactory' => __DIR__ . '/../..' . '/inc/Engine/Container/Definition/DefinitionFactory.php', + 'WP_Rocket\\Engine\\Container\\Definition\\DefinitionFactoryInterface' => __DIR__ . '/../..' . '/inc/Engine/Container/Definition/DefinitionFactoryInterface.php', + 'WP_Rocket\\Engine\\Container\\Definition\\DefinitionInterface' => __DIR__ . '/../..' . '/inc/Engine/Container/Definition/DefinitionInterface.php', + 'WP_Rocket\\Engine\\Container\\Exception\\NotFoundException' => __DIR__ . '/../..' . '/inc/Engine/Container/Exception/NotFoundException.php', + 'WP_Rocket\\Engine\\Container\\ImmutableContainerAwareInterface' => __DIR__ . '/../..' . '/inc/Engine/Container/ImmutableContainerAwareInterface.php', + 'WP_Rocket\\Engine\\Container\\ImmutableContainerAwareTrait' => __DIR__ . '/../..' . '/inc/Engine/Container/ImmutableContainerAwareTrait.php', + 'WP_Rocket\\Engine\\Container\\ImmutableContainerInterface' => __DIR__ . '/../..' . '/inc/Engine/Container/ImmutableContainerInterface.php', + 'WP_Rocket\\Engine\\Container\\Inflector\\Inflector' => __DIR__ . '/../..' . '/inc/Engine/Container/Inflector/Inflector.php', + 'WP_Rocket\\Engine\\Container\\Inflector\\InflectorAggregate' => __DIR__ . '/../..' . '/inc/Engine/Container/Inflector/InflectorAggregate.php', + 'WP_Rocket\\Engine\\Container\\Inflector\\InflectorAggregateInterface' => __DIR__ . '/../..' . '/inc/Engine/Container/Inflector/InflectorAggregateInterface.php', + 'WP_Rocket\\Engine\\Container\\ReflectionContainer' => __DIR__ . '/../..' . '/inc/Engine/Container/ReflectionContainer.php', + 'WP_Rocket\\Engine\\Container\\ServiceProvider\\AbstractServiceProvider' => __DIR__ . '/../..' . '/inc/Engine/Container/ServiceProvider/AbstractServiceProvider.php', + 'WP_Rocket\\Engine\\Container\\ServiceProvider\\AbstractSignatureServiceProvider' => __DIR__ . '/../..' . '/inc/Engine/Container/ServiceProvider/AbstractSignatureServiceProvider.php', + 'WP_Rocket\\Engine\\Container\\ServiceProvider\\BootableServiceProviderInterface' => __DIR__ . '/../..' . '/inc/Engine/Container/ServiceProvider/BootableServiceProviderInterface.php', + 'WP_Rocket\\Engine\\Container\\ServiceProvider\\ServiceProviderAggregate' => __DIR__ . '/../..' . '/inc/Engine/Container/ServiceProvider/ServiceProviderAggregate.php', + 'WP_Rocket\\Engine\\Container\\ServiceProvider\\ServiceProviderAggregateInterface' => __DIR__ . '/../..' . '/inc/Engine/Container/ServiceProvider/ServiceProviderAggregateInterface.php', + 'WP_Rocket\\Engine\\Container\\ServiceProvider\\ServiceProviderInterface' => __DIR__ . '/../..' . '/inc/Engine/Container/ServiceProvider/ServiceProviderInterface.php', + 'WP_Rocket\\Engine\\Container\\ServiceProvider\\SignatureServiceProviderInterface' => __DIR__ . '/../..' . '/inc/Engine/Container/ServiceProvider/SignatureServiceProviderInterface.php', + 'WP_Rocket\\Engine\\CriticalPath\\APIClient' => __DIR__ . '/../..' . '/inc/Engine/CriticalPath/APIClient.php', + 'WP_Rocket\\Engine\\CriticalPath\\Admin\\Admin' => __DIR__ . '/../..' . '/inc/Engine/CriticalPath/Admin/Admin.php', + 'WP_Rocket\\Engine\\CriticalPath\\Admin\\Post' => __DIR__ . '/../..' . '/inc/Engine/CriticalPath/Admin/Post.php', + 'WP_Rocket\\Engine\\CriticalPath\\Admin\\Settings' => __DIR__ . '/../..' . '/inc/Engine/CriticalPath/Admin/Settings.php', + 'WP_Rocket\\Engine\\CriticalPath\\Admin\\Subscriber' => __DIR__ . '/../..' . '/inc/Engine/CriticalPath/Admin/Subscriber.php', + 'WP_Rocket\\Engine\\CriticalPath\\CriticalCSS' => __DIR__ . '/../..' . '/inc/Engine/CriticalPath/CriticalCSS.php', + 'WP_Rocket\\Engine\\CriticalPath\\CriticalCSSGeneration' => __DIR__ . '/../..' . '/inc/Engine/CriticalPath/CriticalCSSGeneration.php', + 'WP_Rocket\\Engine\\CriticalPath\\CriticalCSSSubscriber' => __DIR__ . '/../..' . '/inc/Engine/CriticalPath/CriticalCSSSubscriber.php', + 'WP_Rocket\\Engine\\CriticalPath\\DataManager' => __DIR__ . '/../..' . '/inc/Engine/CriticalPath/DataManager.php', + 'WP_Rocket\\Engine\\CriticalPath\\ProcessorService' => __DIR__ . '/../..' . '/inc/Engine/CriticalPath/ProcessorService.php', + 'WP_Rocket\\Engine\\CriticalPath\\RESTCSSSubscriber' => __DIR__ . '/../..' . '/inc/Engine/CriticalPath/RESTCSSSubscriber.php', + 'WP_Rocket\\Engine\\CriticalPath\\RESTWP' => __DIR__ . '/../..' . '/inc/Engine/CriticalPath/RESTWP.php', + 'WP_Rocket\\Engine\\CriticalPath\\RESTWPInterface' => __DIR__ . '/../..' . '/inc/Engine/CriticalPath/RESTWPInterface.php', + 'WP_Rocket\\Engine\\CriticalPath\\RESTWPPost' => __DIR__ . '/../..' . '/inc/Engine/CriticalPath/RESTWPPost.php', + 'WP_Rocket\\Engine\\CriticalPath\\ServiceProvider' => __DIR__ . '/../..' . '/inc/Engine/CriticalPath/ServiceProvider.php', + 'WP_Rocket\\Engine\\CriticalPath\\TransientTrait' => __DIR__ . '/../..' . '/inc/Engine/CriticalPath/TransientTrait.php', + 'WP_Rocket\\Engine\\Deactivation\\Deactivation' => __DIR__ . '/../..' . '/inc/Engine/Deactivation/Deactivation.php', + 'WP_Rocket\\Engine\\Deactivation\\DeactivationInterface' => __DIR__ . '/../..' . '/inc/Engine/Deactivation/DeactivationInterface.php', + 'WP_Rocket\\Engine\\Deactivation\\ServiceProvider' => __DIR__ . '/../..' . '/inc/Engine/Deactivation/ServiceProvider.php', + 'WP_Rocket\\Engine\\HealthCheck\\CacheDirSizeCheck' => __DIR__ . '/../..' . '/inc/Engine/HealthCheck/CacheDirSizeCheck.php', + 'WP_Rocket\\Engine\\HealthCheck\\HealthCheck' => __DIR__ . '/../..' . '/inc/Engine/HealthCheck/HealthCheck.php', + 'WP_Rocket\\Engine\\HealthCheck\\ServiceProvider' => __DIR__ . '/../..' . '/inc/Engine/HealthCheck/ServiceProvider.php', + 'WP_Rocket\\Engine\\Heartbeat\\HeartbeatSubscriber' => __DIR__ . '/../..' . '/inc/Engine/Heartbeat/HeartbeatSubscriber.php', + 'WP_Rocket\\Engine\\Heartbeat\\ServiceProvider' => __DIR__ . '/../..' . '/inc/Engine/Heartbeat/ServiceProvider.php', + 'WP_Rocket\\Engine\\License\\API\\Pricing' => __DIR__ . '/../..' . '/inc/Engine/License/API/Pricing.php', + 'WP_Rocket\\Engine\\License\\API\\PricingClient' => __DIR__ . '/../..' . '/inc/Engine/License/API/PricingClient.php', + 'WP_Rocket\\Engine\\License\\API\\User' => __DIR__ . '/../..' . '/inc/Engine/License/API/User.php', + 'WP_Rocket\\Engine\\License\\API\\UserClient' => __DIR__ . '/../..' . '/inc/Engine/License/API/UserClient.php', + 'WP_Rocket\\Engine\\License\\Renewal' => __DIR__ . '/../..' . '/inc/Engine/License/Renewal.php', + 'WP_Rocket\\Engine\\License\\ServiceProvider' => __DIR__ . '/../..' . '/inc/Engine/License/ServiceProvider.php', + 'WP_Rocket\\Engine\\License\\Subscriber' => __DIR__ . '/../..' . '/inc/Engine/License/Subscriber.php', + 'WP_Rocket\\Engine\\License\\Upgrade' => __DIR__ . '/../..' . '/inc/Engine/License/Upgrade.php', + 'WP_Rocket\\Engine\\Media\\Embeds\\EmbedsSubscriber' => __DIR__ . '/../..' . '/inc/Engine/Media/Embeds/EmbedsSubscriber.php', + 'WP_Rocket\\Engine\\Media\\Emojis\\EmojisSubscriber' => __DIR__ . '/../..' . '/inc/Engine/Media/Emojis/EmojisSubscriber.php', + 'WP_Rocket\\Engine\\Media\\LazyloadSubscriber' => __DIR__ . '/../..' . '/inc/Engine/Media/LazyloadSubscriber.php', + 'WP_Rocket\\Engine\\Media\\ServiceProvider' => __DIR__ . '/../..' . '/inc/Engine/Media/ServiceProvider.php', + 'WP_Rocket\\Engine\\Optimization\\AbstractOptimization' => __DIR__ . '/../..' . '/inc/Engine/Optimization/AbstractOptimization.php', + 'WP_Rocket\\Engine\\Optimization\\AdminServiceProvider' => __DIR__ . '/../..' . '/inc/Engine/Optimization/AdminServiceProvider.php', + 'WP_Rocket\\Engine\\Optimization\\AssetsLocalCache' => __DIR__ . '/../..' . '/inc/Engine/Optimization/AssetsLocalCache.php', + 'WP_Rocket\\Engine\\Optimization\\CSSTrait' => __DIR__ . '/../..' . '/inc/Engine/Optimization/CSSTrait.php', + 'WP_Rocket\\Engine\\Optimization\\CacheDynamicResource' => __DIR__ . '/../..' . '/inc/Engine/Optimization/CacheDynamicResource.php', + 'WP_Rocket\\Engine\\Optimization\\DelayJS\\Admin\\Settings' => __DIR__ . '/../..' . '/inc/Engine/Optimization/DelayJS/Admin/Settings.php', + 'WP_Rocket\\Engine\\Optimization\\DelayJS\\Admin\\Subscriber' => __DIR__ . '/../..' . '/inc/Engine/Optimization/DelayJS/Admin/Subscriber.php', + 'WP_Rocket\\Engine\\Optimization\\DelayJS\\HTML' => __DIR__ . '/../..' . '/inc/Engine/Optimization/DelayJS/HTML.php', + 'WP_Rocket\\Engine\\Optimization\\DelayJS\\ServiceProvider' => __DIR__ . '/../..' . '/inc/Engine/Optimization/DelayJS/ServiceProvider.php', + 'WP_Rocket\\Engine\\Optimization\\DelayJS\\Subscriber' => __DIR__ . '/../..' . '/inc/Engine/Optimization/DelayJS/Subscriber.php', + 'WP_Rocket\\Engine\\Optimization\\GoogleFonts\\Admin\\Settings' => __DIR__ . '/../..' . '/inc/Engine/Optimization/GoogleFonts/Admin/Settings.php', + 'WP_Rocket\\Engine\\Optimization\\GoogleFonts\\Admin\\Subscriber' => __DIR__ . '/../..' . '/inc/Engine/Optimization/GoogleFonts/Admin/Subscriber.php', + 'WP_Rocket\\Engine\\Optimization\\GoogleFonts\\Combine' => __DIR__ . '/../..' . '/inc/Engine/Optimization/GoogleFonts/Combine.php', + 'WP_Rocket\\Engine\\Optimization\\GoogleFonts\\Subscriber' => __DIR__ . '/../..' . '/inc/Engine/Optimization/GoogleFonts/Subscriber.php', + 'WP_Rocket\\Engine\\Optimization\\IEConditionalSubscriber' => __DIR__ . '/../..' . '/inc/Engine/Optimization/IEConditionalSubscriber.php', + 'WP_Rocket\\Engine\\Optimization\\Minify\\AbstractMinifySubscriber' => __DIR__ . '/../..' . '/inc/Engine/Optimization/Minify/AbstractMinifySubscriber.php', + 'WP_Rocket\\Engine\\Optimization\\Minify\\CSS\\AbstractCSSOptimization' => __DIR__ . '/../..' . '/inc/Engine/Optimization/Minify/CSS/AbstractCSSOptimization.php', + 'WP_Rocket\\Engine\\Optimization\\Minify\\CSS\\AdminSubscriber' => __DIR__ . '/../..' . '/inc/Engine/Optimization/Minify/CSS/AdminSubscriber.php', + 'WP_Rocket\\Engine\\Optimization\\Minify\\CSS\\Combine' => __DIR__ . '/../..' . '/inc/Engine/Optimization/Minify/CSS/Combine.php', + 'WP_Rocket\\Engine\\Optimization\\Minify\\CSS\\Minify' => __DIR__ . '/../..' . '/inc/Engine/Optimization/Minify/CSS/Minify.php', + 'WP_Rocket\\Engine\\Optimization\\Minify\\CSS\\Subscriber' => __DIR__ . '/../..' . '/inc/Engine/Optimization/Minify/CSS/Subscriber.php', + 'WP_Rocket\\Engine\\Optimization\\Minify\\JS\\AbstractJSOptimization' => __DIR__ . '/../..' . '/inc/Engine/Optimization/Minify/JS/AbstractJSOptimization.php', + 'WP_Rocket\\Engine\\Optimization\\Minify\\JS\\Combine' => __DIR__ . '/../..' . '/inc/Engine/Optimization/Minify/JS/Combine.php', + 'WP_Rocket\\Engine\\Optimization\\Minify\\JS\\Minify' => __DIR__ . '/../..' . '/inc/Engine/Optimization/Minify/JS/Minify.php', + 'WP_Rocket\\Engine\\Optimization\\Minify\\JS\\Subscriber' => __DIR__ . '/../..' . '/inc/Engine/Optimization/Minify/JS/Subscriber.php', + 'WP_Rocket\\Engine\\Optimization\\Minify\\ProcessorInterface' => __DIR__ . '/../..' . '/inc/Engine/Optimization/Minify/ProcessorInterface.php', + 'WP_Rocket\\Engine\\Optimization\\QueryString\\Remove' => __DIR__ . '/../..' . '/inc/deprecated/Engine/Optimization/QueryString/Remove.php', + 'WP_Rocket\\Engine\\Optimization\\QueryString\\RemoveSubscriber' => __DIR__ . '/../..' . '/inc/deprecated/Engine/Optimization/QueryString/RemoveSubscriber.php', + 'WP_Rocket\\Engine\\Optimization\\ServiceProvider' => __DIR__ . '/../..' . '/inc/Engine/Optimization/ServiceProvider.php', + 'WP_Rocket\\Engine\\Preload\\AbstractPreload' => __DIR__ . '/../..' . '/inc/Engine/Preload/AbstractPreload.php', + 'WP_Rocket\\Engine\\Preload\\AbstractProcess' => __DIR__ . '/../..' . '/inc/Engine/Preload/AbstractProcess.php', + 'WP_Rocket\\Engine\\Preload\\Fonts' => __DIR__ . '/../..' . '/inc/Engine/Preload/Fonts.php', + 'WP_Rocket\\Engine\\Preload\\FullProcess' => __DIR__ . '/../..' . '/inc/Engine/Preload/FullProcess.php', + 'WP_Rocket\\Engine\\Preload\\Homepage' => __DIR__ . '/../..' . '/inc/Engine/Preload/Homepage.php', + 'WP_Rocket\\Engine\\Preload\\Links\\AdminSubscriber' => __DIR__ . '/../..' . '/inc/Engine/Preload/Links/AdminSubscriber.php', + 'WP_Rocket\\Engine\\Preload\\Links\\ServiceProvider' => __DIR__ . '/../..' . '/inc/Engine/Preload/Links/ServiceProvider.php', + 'WP_Rocket\\Engine\\Preload\\Links\\Subscriber' => __DIR__ . '/../..' . '/inc/Engine/Preload/Links/Subscriber.php', + 'WP_Rocket\\Engine\\Preload\\PartialPreloadSubscriber' => __DIR__ . '/../..' . '/inc/Engine/Preload/PartialPreloadSubscriber.php', + 'WP_Rocket\\Engine\\Preload\\PartialProcess' => __DIR__ . '/../..' . '/inc/Engine/Preload/PartialProcess.php', + 'WP_Rocket\\Engine\\Preload\\PreloadSubscriber' => __DIR__ . '/../..' . '/inc/Engine/Preload/PreloadSubscriber.php', + 'WP_Rocket\\Engine\\Preload\\ServiceProvider' => __DIR__ . '/../..' . '/inc/Engine/Preload/ServiceProvider.php', + 'WP_Rocket\\Engine\\Preload\\Sitemap' => __DIR__ . '/../..' . '/inc/Engine/Preload/Sitemap.php', + 'WP_Rocket\\Engine\\Preload\\SitemapPreloadSubscriber' => __DIR__ . '/../..' . '/inc/Engine/Preload/SitemapPreloadSubscriber.php', + 'WP_Rocket\\Engine\\Support\\Data' => __DIR__ . '/../..' . '/inc/Engine/Support/Data.php', + 'WP_Rocket\\Engine\\Support\\Rest' => __DIR__ . '/../..' . '/inc/Engine/Support/Rest.php', + 'WP_Rocket\\Engine\\Support\\ServiceProvider' => __DIR__ . '/../..' . '/inc/Engine/Support/ServiceProvider.php', + 'WP_Rocket\\Engine\\Support\\Subscriber' => __DIR__ . '/../..' . '/inc/Engine/Support/Subscriber.php', + 'WP_Rocket\\Event_Management\\Event_Manager' => __DIR__ . '/../..' . '/inc/classes/event-management/class-event-manager.php', + 'WP_Rocket\\Event_Management\\Event_Manager_Aware_Subscriber_Interface' => __DIR__ . '/../..' . '/inc/classes/event-management/event-manager-aware-subscriber-interface.php', + 'WP_Rocket\\Event_Management\\Subscriber_Interface' => __DIR__ . '/../..' . '/inc/classes/event-management/subscriber-interface.php', + 'WP_Rocket\\Interfaces\\Render_Interface' => __DIR__ . '/../..' . '/inc/classes/interfaces/class-render-interface.php', + 'WP_Rocket\\Logger\\HTML_Formatter' => __DIR__ . '/../..' . '/inc/classes/logger/class-html-formatter.php', + 'WP_Rocket\\Logger\\Logger' => __DIR__ . '/../..' . '/inc/classes/logger/class-logger.php', + 'WP_Rocket\\Logger\\Stream_Handler' => __DIR__ . '/../..' . '/inc/classes/logger/class-stream-handler.php', + 'WP_Rocket\\Plugin' => __DIR__ . '/../..' . '/inc/Plugin.php', + 'WP_Rocket\\ServiceProvider\\Common_Subscribers' => __DIR__ . '/../..' . '/inc/classes/ServiceProvider/class-common-subscribers.php', + 'WP_Rocket\\ServiceProvider\\Database' => __DIR__ . '/../..' . '/inc/classes/ServiceProvider/class-database.php', + 'WP_Rocket\\ServiceProvider\\Options' => __DIR__ . '/../..' . '/inc/classes/ServiceProvider/class-options.php', + 'WP_Rocket\\ServiceProvider\\Updater_Subscribers' => __DIR__ . '/../..' . '/inc/classes/ServiceProvider/class-updater-subscribers.php', + 'WP_Rocket\\Subscriber\\Admin\\Database\\Optimization_Subscriber' => __DIR__ . '/../..' . '/inc/classes/subscriber/admin/Database/class-optimization-subscriber.php', + 'WP_Rocket\\Subscriber\\Admin\\Settings\\Beacon_Subscriber' => __DIR__ . '/../..' . '/inc/deprecated/subscriber/admin/Settings/class-beacon-subscriber.php', + 'WP_Rocket\\Subscriber\\Cache\\Expired_Cache_Purge_Subscriber' => __DIR__ . '/../..' . '/inc/classes/subscriber/Cache/class-expired-cache-purge-subscriber.php', + 'WP_Rocket\\Subscriber\\Media\\Webp_Subscriber' => __DIR__ . '/../..' . '/inc/classes/subscriber/Media/class-webp-subscriber.php', + 'WP_Rocket\\Subscriber\\Optimization\\Buffer_Subscriber' => __DIR__ . '/../..' . '/inc/classes/subscriber/Optimization/class-buffer-subscriber.php', + 'WP_Rocket\\Subscriber\\Optimization\\Dequeue_JQuery_Migrate_Subscriber' => __DIR__ . '/../..' . '/inc/classes/subscriber/Optimization/class-dequeue-jquery-migrate-subscriber.php', + 'WP_Rocket\\Subscriber\\Optimization\\Minify_HTML_Subscriber' => __DIR__ . '/../..' . '/inc/deprecated/subscriber/admin/Optimization/class-minify-html-subscriber.php', + 'WP_Rocket\\Subscriber\\Plugin\\Information_Subscriber' => __DIR__ . '/../..' . '/inc/classes/subscriber/Plugin/class-information-subscriber.php', + 'WP_Rocket\\Subscriber\\Plugin\\Updater_Api_Common_Subscriber' => __DIR__ . '/../..' . '/inc/classes/subscriber/Plugin/class-updater-api-common-subscriber.php', + 'WP_Rocket\\Subscriber\\Plugin\\Updater_Subscriber' => __DIR__ . '/../..' . '/inc/classes/subscriber/Plugin/class-updater-subscriber.php', + 'WP_Rocket\\Subscriber\\Third_Party\\Hostings\\Litespeed_Subscriber' => __DIR__ . '/../..' . '/inc/classes/subscriber/third-party/Hostings/class-litespeed-subscriber.php', + 'WP_Rocket\\Subscriber\\Third_Party\\Plugins\\Ecommerce\\BigCommerce_Subscriber' => __DIR__ . '/../..' . '/inc/classes/subscriber/third-party/plugins/ecommerce/class-bigcommerce-subscriber.php', + 'WP_Rocket\\Subscriber\\Third_Party\\Plugins\\Images\\Webp\\EWWW_Subscriber' => __DIR__ . '/../..' . '/inc/classes/subscriber/third-party/plugins/Images/Webp/class-ewww-subscriber.php', + 'WP_Rocket\\Subscriber\\Third_Party\\Plugins\\Images\\Webp\\Imagify_Subscriber' => __DIR__ . '/../..' . '/inc/classes/subscriber/third-party/plugins/Images/Webp/class-imagify-subscriber.php', + 'WP_Rocket\\Subscriber\\Third_Party\\Plugins\\Images\\Webp\\Optimus_Subscriber' => __DIR__ . '/../..' . '/inc/classes/subscriber/third-party/plugins/Images/Webp/class-optimus-subscriber.php', + 'WP_Rocket\\Subscriber\\Third_Party\\Plugins\\Images\\Webp\\ShortPixel_Subscriber' => __DIR__ . '/../..' . '/inc/classes/subscriber/third-party/plugins/Images/Webp/class-shortpixel-subscriber.php', + 'WP_Rocket\\Subscriber\\Third_Party\\Plugins\\Images\\Webp\\Webp_Common' => __DIR__ . '/../..' . '/inc/classes/subscriber/third-party/plugins/Images/Webp/trait-webp-common.php', + 'WP_Rocket\\Subscriber\\Third_Party\\Plugins\\Images\\Webp\\Webp_Interface' => __DIR__ . '/../..' . '/inc/classes/subscriber/third-party/plugins/Images/Webp/webp-interface.php', + 'WP_Rocket\\Subscriber\\Third_Party\\Plugins\\Mobile_Subscriber' => __DIR__ . '/../..' . '/inc/classes/subscriber/third-party/plugins/class-mobile-subscriber.php', + 'WP_Rocket\\Subscriber\\Third_Party\\Plugins\\NGG_Subscriber' => __DIR__ . '/../..' . '/inc/classes/subscriber/third-party/plugins/class-ngg-subscriber.php', + 'WP_Rocket\\Subscriber\\Third_Party\\Plugins\\Security\\Sucuri_Subscriber' => __DIR__ . '/../..' . '/inc/classes/subscriber/third-party/plugins/security/class-sucuri-subscriber.php', + 'WP_Rocket\\Subscriber\\Third_Party\\Plugins\\SyntaxHighlighter_Subscriber' => __DIR__ . '/../..' . '/inc/classes/subscriber/third-party/plugins/class-syntaxhighlighter-subscriber.php', + 'WP_Rocket\\Subscriber\\Tools\\Detect_Missing_Tags_Subscriber' => __DIR__ . '/../..' . '/inc/classes/subscriber/Tools/class-detect-missing-tags-subscriber.php', + 'WP_Rocket\\ThirdParty\\Hostings\\AbstractNoCacheHost' => __DIR__ . '/../..' . '/inc/ThirdParty/Hostings/AbstractNoCacheHost.php', + 'WP_Rocket\\ThirdParty\\Hostings\\Cloudways' => __DIR__ . '/../..' . '/inc/ThirdParty/Hostings/Cloudways.php', + 'WP_Rocket\\ThirdParty\\Hostings\\Dreampress' => __DIR__ . '/../..' . '/inc/ThirdParty/Hostings/Dreampress.php', + 'WP_Rocket\\ThirdParty\\Hostings\\HostResolver' => __DIR__ . '/../..' . '/inc/ThirdParty/Hostings/HostResolver.php', + 'WP_Rocket\\ThirdParty\\Hostings\\HostSubscriberFactory' => __DIR__ . '/../..' . '/inc/ThirdParty/Hostings/HostSubscriberFactory.php', + 'WP_Rocket\\ThirdParty\\Hostings\\O2Switch' => __DIR__ . '/../..' . '/inc/ThirdParty/Hostings/O2Switch.php', + 'WP_Rocket\\ThirdParty\\Hostings\\Pressable' => __DIR__ . '/../..' . '/inc/ThirdParty/Hostings/Pressable.php', + 'WP_Rocket\\ThirdParty\\Hostings\\Savvii' => __DIR__ . '/../..' . '/inc/ThirdParty/Hostings/Savvii.php', + 'WP_Rocket\\ThirdParty\\Hostings\\ServiceProvider' => __DIR__ . '/../..' . '/inc/ThirdParty/Hostings/ServiceProvider.php', + 'WP_Rocket\\ThirdParty\\Hostings\\SpinUpWP' => __DIR__ . '/../..' . '/inc/ThirdParty/Hostings/SpinUpWP.php', + 'WP_Rocket\\ThirdParty\\Hostings\\WPEngine' => __DIR__ . '/../..' . '/inc/ThirdParty/Hostings/WPEngine.php', + 'WP_Rocket\\ThirdParty\\Hostings\\WordPressCom' => __DIR__ . '/../..' . '/inc/ThirdParty/Hostings/WordPressCom.php', + 'WP_Rocket\\ThirdParty\\NullSubscriber' => __DIR__ . '/../..' . '/inc/ThirdParty/NullSubscriber.php', + 'WP_Rocket\\ThirdParty\\Plugins\\Ecommerce\\WooCommerceSubscriber' => __DIR__ . '/../..' . '/inc/ThirdParty/Plugins/Ecommerce/WooCommerceSubscriber.php', + 'WP_Rocket\\ThirdParty\\Plugins\\Optimization\\AMP' => __DIR__ . '/../..' . '/inc/ThirdParty/Plugins/Optimization/AMP.php', + 'WP_Rocket\\ThirdParty\\Plugins\\Optimization\\Hummingbird' => __DIR__ . '/../..' . '/inc/ThirdParty/Plugins/Optimization/Hummingbird.php', + 'WP_Rocket\\ThirdParty\\Plugins\\PDFEmbedder' => __DIR__ . '/../..' . '/inc/ThirdParty/Plugins/PDFEmbedder.php', + 'WP_Rocket\\ThirdParty\\Plugins\\PageBuilder\\BeaverBuilder' => __DIR__ . '/../..' . '/inc/ThirdParty/Plugins/PageBuilder/BeaverBuilder.php', + 'WP_Rocket\\ThirdParty\\Plugins\\PageBuilder\\Elementor' => __DIR__ . '/../..' . '/inc/ThirdParty/Plugins/PageBuilder/Elementor.php', + 'WP_Rocket\\ThirdParty\\Plugins\\SimpleCustomCss' => __DIR__ . '/../..' . '/inc/ThirdParty/Plugins/SimpleCustomCss.php', + 'WP_Rocket\\ThirdParty\\Plugins\\Smush' => __DIR__ . '/../..' . '/inc/ThirdParty/Plugins/Smush.php', + 'WP_Rocket\\ThirdParty\\ReturnTypesTrait' => __DIR__ . '/../..' . '/inc/ThirdParty/ReturnTypesTrait.php', + 'WP_Rocket\\ThirdParty\\ServiceProvider' => __DIR__ . '/../..' . '/inc/ThirdParty/ServiceProvider.php', + 'WP_Rocket\\ThirdParty\\SubscriberFactoryInterface' => __DIR__ . '/../..' . '/inc/ThirdParty/SubscriberFactoryInterface.php', + 'WP_Rocket\\ThirdParty\\Themes\\Bridge' => __DIR__ . '/../..' . '/inc/ThirdParty/Themes/Bridge.php', + 'WP_Rocket\\ThirdParty\\Themes\\Divi' => __DIR__ . '/../..' . '/inc/ThirdParty/Themes/Divi.php', + 'WP_Rocket\\Traits\\Config_Updater' => __DIR__ . '/../..' . '/inc/classes/traits/trait-config-updater.php', + 'WP_Rocket\\Traits\\Memoize' => __DIR__ . '/../..' . '/inc/classes/traits/trait-memoize.php', + 'WP_Rocket\\Traits\\Updater_Api_Tools' => __DIR__ . '/../..' . '/inc/classes/traits/trait-updater-api-tools.php', + 'WP_Rocket\\deprecated\\DeprecatedClassTrait' => __DIR__ . '/../..' . '/inc/deprecated/DeprecatedClassTrait.php', + 'WP_Rocket_Mobile_Detect' => __DIR__ . '/../..' . '/inc/classes/dependencies/mobiledetect/mobiledetectlib/Mobile_Detect.php', + 'WP_Rocket_WP_Async_Request' => __DIR__ . '/../..' . '/inc/classes/dependencies/wp-media/background-processing/wp-async-request.php', + 'WP_Rocket_WP_Background_Process' => __DIR__ . '/../..' . '/inc/classes/dependencies/wp-media/background-processing/wp-background-process.php', + ); + + public static function getInitializer(ClassLoader $loader) + { + return \Closure::bind(function () use ($loader) { + $loader->prefixLengthsPsr4 = ComposerStaticInitbc80850d95b4c1edbb9e4f17493a5b6d::$prefixLengthsPsr4; + $loader->prefixDirsPsr4 = ComposerStaticInitbc80850d95b4c1edbb9e4f17493a5b6d::$prefixDirsPsr4; + $loader->classMap = ComposerStaticInitbc80850d95b4c1edbb9e4f17493a5b6d::$classMap; + + }, null, ClassLoader::class); + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installed.json b/wp-content/plugins/wp-rocket/vendor/composer/installed.json new file mode 100644 index 0000000..18580af --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installed.json @@ -0,0 +1,315 @@ +[ + { + "name": "composer/installers", + "version": "v1.7.0", + "version_normalized": "1.7.0.0", + "source": { + "type": "git", + "url": "https://github.com/composer/installers.git", + "reference": "141b272484481432cda342727a427dc1e206bfa0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/installers/zipball/141b272484481432cda342727a427dc1e206bfa0", + "reference": "141b272484481432cda342727a427dc1e206bfa0", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.0" + }, + "replace": { + "roundcube/plugin-installer": "*", + "shama/baton": "*" + }, + "require-dev": { + "composer/composer": "1.0.*@dev", + "phpunit/phpunit": "^4.8.36" + }, + "time": "2019-08-12T15:00:31+00:00", + "type": "composer-plugin", + "extra": { + "class": "Composer\\Installers\\Plugin", + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Composer\\Installers\\": "src/Composer/Installers" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Kyle Robinson Young", + "email": "kyle@dontkry.com", + "homepage": "https://github.com/shama" + } + ], + "description": "A multi-framework Composer library installer", + "homepage": "https://composer.github.io/installers/", + "keywords": [ + "Craft", + "Dolibarr", + "Eliasis", + "Hurad", + "ImageCMS", + "Kanboard", + "Lan Management System", + "MODX Evo", + "Mautic", + "Maya", + "OXID", + "Plentymarkets", + "Porto", + "RadPHP", + "SMF", + "Thelia", + "Whmcs", + "WolfCMS", + "agl", + "aimeos", + "annotatecms", + "attogram", + "bitrix", + "cakephp", + "chef", + "cockpit", + "codeigniter", + "concrete5", + "croogo", + "dokuwiki", + "drupal", + "eZ Platform", + "elgg", + "expressionengine", + "fuelphp", + "grav", + "installer", + "itop", + "joomla", + "known", + "kohana", + "laravel", + "lavalite", + "lithium", + "magento", + "majima", + "mako", + "mediawiki", + "modulework", + "modx", + "moodle", + "osclass", + "phpbb", + "piwik", + "ppi", + "puppet", + "pxcms", + "reindex", + "roundcube", + "shopware", + "silverstripe", + "sydes", + "symfony", + "typo3", + "wordpress", + "yawik", + "zend", + "zikula" + ] + }, + { + "name": "monolog/monolog", + "version": "1.25.5", + "version_normalized": "1.25.5.0", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/monolog.git", + "reference": "1817faadd1846cd08be9a49e905dc68823bc38c0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/1817faadd1846cd08be9a49e905dc68823bc38c0", + "reference": "1817faadd1846cd08be9a49e905dc68823bc38c0", + "shasum": "" + }, + "require": { + "php": ">=5.3.0", + "psr/log": "~1.0" + }, + "provide": { + "psr/log-implementation": "1.0.0" + }, + "require-dev": { + "aws/aws-sdk-php": "^2.4.9 || ^3.0", + "doctrine/couchdb": "~1.0@dev", + "graylog2/gelf-php": "~1.0", + "php-amqplib/php-amqplib": "~2.4", + "php-console/php-console": "^3.1.3", + "php-parallel-lint/php-parallel-lint": "^1.0", + "phpunit/phpunit": "~4.5", + "ruflin/elastica": ">=0.90 <3.0", + "sentry/sentry": "^0.13", + "swiftmailer/swiftmailer": "^5.3|^6.0" + }, + "suggest": { + "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", + "doctrine/couchdb": "Allow sending log messages to a CouchDB server", + "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", + "ext-mongo": "Allow sending log messages to a MongoDB server", + "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", + "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver", + "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", + "php-console/php-console": "Allow sending log messages to Google Chrome", + "rollbar/rollbar": "Allow sending log messages to Rollbar", + "ruflin/elastica": "Allow sending log messages to an Elastic Search server", + "sentry/sentry": "Allow sending log messages to a Sentry server" + }, + "time": "2020-07-23T08:35:51+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Monolog\\": "src/Monolog" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "Sends your logs to files, sockets, inboxes, databases and various web services", + "homepage": "http://github.com/Seldaek/monolog", + "keywords": [ + "log", + "logging", + "psr-3" + ], + "funding": [ + { + "url": "https://github.com/Seldaek", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", + "type": "tidelift" + } + ] + }, + { + "name": "psr/container", + "version": "1.0.0", + "version_normalized": "1.0.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", + "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "time": "2017-02-14T16:28:37+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ] + }, + { + "name": "psr/log", + "version": "1.1.3", + "version_normalized": "1.1.3.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc", + "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "time": "2020-03-23T09:12:05+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Psr\\Log\\": "Psr/Log/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ] + } +] diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/LICENSE b/wp-content/plugins/wp-rocket/vendor/composer/installers/LICENSE new file mode 100644 index 0000000..85f97fc --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2012 Kyle Robinson Young + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is furnished +to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. \ No newline at end of file diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/composer.json b/wp-content/plugins/wp-rocket/vendor/composer/installers/composer.json new file mode 100644 index 0000000..1f68e72 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/composer.json @@ -0,0 +1,107 @@ +{ + "name": "composer/installers", + "type": "composer-plugin", + "license": "MIT", + "description": "A multi-framework Composer library installer", + "keywords": [ + "installer", + "Aimeos", + "AGL", + "AnnotateCms", + "Attogram", + "Bitrix", + "CakePHP", + "Chef", + "Cockpit", + "CodeIgniter", + "concrete5", + "Craft", + "Croogo", + "DokuWiki", + "Dolibarr", + "Drupal", + "Elgg", + "Eliasis", + "ExpressionEngine", + "eZ Platform", + "FuelPHP", + "Grav", + "Hurad", + "ImageCMS", + "iTop", + "Joomla", + "Kanboard", + "Known", + "Kohana", + "Lan Management System", + "Laravel", + "Lavalite", + "Lithium", + "Magento", + "majima", + "Mako", + "Mautic", + "Maya", + "MODX", + "MODX Evo", + "MediaWiki", + "OXID", + "osclass", + "MODULEWork", + "Moodle", + "Piwik", + "pxcms", + "phpBB", + "Plentymarkets", + "PPI", + "Puppet", + "Porto", + "RadPHP", + "ReIndex", + "Roundcube", + "shopware", + "SilverStripe", + "SMF", + "SyDES", + "symfony", + "Thelia", + "TYPO3", + "WHMCS", + "WolfCMS", + "WordPress", + "YAWIK", + "Zend", + "Zikula" + ], + "homepage": "https://composer.github.io/installers/", + "authors": [ + { + "name": "Kyle Robinson Young", + "email": "kyle@dontkry.com", + "homepage": "https://github.com/shama" + } + ], + "autoload": { + "psr-4": { "Composer\\Installers\\": "src/Composer/Installers" } + }, + "extra": { + "class": "Composer\\Installers\\Plugin", + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "replace": { + "shama/baton": "*", + "roundcube/plugin-installer": "*" + }, + "require": { + "composer-plugin-api": "^1.0" + }, + "require-dev": { + "composer/composer": "1.0.*@dev", + "phpunit/phpunit": "^4.8.36" + }, + "scripts": { + "test": "phpunit" + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/AglInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/AglInstaller.php new file mode 100644 index 0000000..01b8a41 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/AglInstaller.php @@ -0,0 +1,21 @@ + 'More/{$name}/', + ); + + /** + * Format package name to CamelCase + */ + public function inflectPackageVars($vars) + { + $vars['name'] = preg_replace_callback('/(?:^|_|-)(.?)/', function ($matches) { + return strtoupper($matches[1]); + }, $vars['name']); + + return $vars; + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/AimeosInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/AimeosInstaller.php new file mode 100644 index 0000000..79a0e95 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/AimeosInstaller.php @@ -0,0 +1,9 @@ + 'ext/{$name}/', + ); +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/AnnotateCmsInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/AnnotateCmsInstaller.php new file mode 100644 index 0000000..89d7ad9 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/AnnotateCmsInstaller.php @@ -0,0 +1,11 @@ + 'addons/modules/{$name}/', + 'component' => 'addons/components/{$name}/', + 'service' => 'addons/services/{$name}/', + ); +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/AsgardInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/AsgardInstaller.php new file mode 100644 index 0000000..22dad1b --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/AsgardInstaller.php @@ -0,0 +1,49 @@ + 'Modules/{$name}/', + 'theme' => 'Themes/{$name}/' + ); + + /** + * Format package name. + * + * For package type asgard-module, cut off a trailing '-plugin' if present. + * + * For package type asgard-theme, cut off a trailing '-theme' if present. + * + */ + public function inflectPackageVars($vars) + { + if ($vars['type'] === 'asgard-module') { + return $this->inflectPluginVars($vars); + } + + if ($vars['type'] === 'asgard-theme') { + return $this->inflectThemeVars($vars); + } + + return $vars; + } + + protected function inflectPluginVars($vars) + { + $vars['name'] = preg_replace('/-module$/', '', $vars['name']); + $vars['name'] = str_replace(array('-', '_'), ' ', $vars['name']); + $vars['name'] = str_replace(' ', '', ucwords($vars['name'])); + + return $vars; + } + + protected function inflectThemeVars($vars) + { + $vars['name'] = preg_replace('/-theme$/', '', $vars['name']); + $vars['name'] = str_replace(array('-', '_'), ' ', $vars['name']); + $vars['name'] = str_replace(' ', '', ucwords($vars['name'])); + + return $vars; + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/AttogramInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/AttogramInstaller.php new file mode 100644 index 0000000..d62fd8f --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/AttogramInstaller.php @@ -0,0 +1,9 @@ + 'modules/{$name}/', + ); +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/BaseInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/BaseInstaller.php new file mode 100644 index 0000000..7082bf2 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/BaseInstaller.php @@ -0,0 +1,136 @@ +composer = $composer; + $this->package = $package; + $this->io = $io; + } + + /** + * Return the install path based on package type. + * + * @param PackageInterface $package + * @param string $frameworkType + * @return string + */ + public function getInstallPath(PackageInterface $package, $frameworkType = '') + { + $type = $this->package->getType(); + + $prettyName = $this->package->getPrettyName(); + if (strpos($prettyName, '/') !== false) { + list($vendor, $name) = explode('/', $prettyName); + } else { + $vendor = ''; + $name = $prettyName; + } + + $availableVars = $this->inflectPackageVars(compact('name', 'vendor', 'type')); + + $extra = $package->getExtra(); + if (!empty($extra['installer-name'])) { + $availableVars['name'] = $extra['installer-name']; + } + + if ($this->composer->getPackage()) { + $extra = $this->composer->getPackage()->getExtra(); + if (!empty($extra['installer-paths'])) { + $customPath = $this->mapCustomInstallPaths($extra['installer-paths'], $prettyName, $type, $vendor); + if ($customPath !== false) { + return $this->templatePath($customPath, $availableVars); + } + } + } + + $packageType = substr($type, strlen($frameworkType) + 1); + $locations = $this->getLocations(); + if (!isset($locations[$packageType])) { + throw new \InvalidArgumentException(sprintf('Package type "%s" is not supported', $type)); + } + + return $this->templatePath($locations[$packageType], $availableVars); + } + + /** + * For an installer to override to modify the vars per installer. + * + * @param array $vars + * @return array + */ + public function inflectPackageVars($vars) + { + return $vars; + } + + /** + * Gets the installer's locations + * + * @return array + */ + public function getLocations() + { + return $this->locations; + } + + /** + * Replace vars in a path + * + * @param string $path + * @param array $vars + * @return string + */ + protected function templatePath($path, array $vars = array()) + { + if (strpos($path, '{') !== false) { + extract($vars); + preg_match_all('@\{\$([A-Za-z0-9_]*)\}@i', $path, $matches); + if (!empty($matches[1])) { + foreach ($matches[1] as $var) { + $path = str_replace('{$' . $var . '}', $$var, $path); + } + } + } + + return $path; + } + + /** + * Search through a passed paths array for a custom install path. + * + * @param array $paths + * @param string $name + * @param string $type + * @param string $vendor = NULL + * @return string + */ + protected function mapCustomInstallPaths(array $paths, $name, $type, $vendor = NULL) + { + foreach ($paths as $path => $names) { + if (in_array($name, $names) || in_array('type:' . $type, $names) || in_array('vendor:' . $vendor, $names)) { + return $path; + } + } + + return false; + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/BitrixInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/BitrixInstaller.php new file mode 100644 index 0000000..e80cd1e --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/BitrixInstaller.php @@ -0,0 +1,126 @@ +.`. + * - `bitrix-d7-component` — copy the component to directory `bitrix/components//`. + * - `bitrix-d7-template` — copy the template to directory `bitrix/templates/_`. + * + * You can set custom path to directory with Bitrix kernel in `composer.json`: + * + * ```json + * { + * "extra": { + * "bitrix-dir": "s1/bitrix" + * } + * } + * ``` + * + * @author Nik Samokhvalov + * @author Denis Kulichkin + */ +class BitrixInstaller extends BaseInstaller +{ + protected $locations = array( + 'module' => '{$bitrix_dir}/modules/{$name}/', // deprecated, remove on the major release (Backward compatibility will be broken) + 'component' => '{$bitrix_dir}/components/{$name}/', // deprecated, remove on the major release (Backward compatibility will be broken) + 'theme' => '{$bitrix_dir}/templates/{$name}/', // deprecated, remove on the major release (Backward compatibility will be broken) + 'd7-module' => '{$bitrix_dir}/modules/{$vendor}.{$name}/', + 'd7-component' => '{$bitrix_dir}/components/{$vendor}/{$name}/', + 'd7-template' => '{$bitrix_dir}/templates/{$vendor}_{$name}/', + ); + + /** + * @var array Storage for informations about duplicates at all the time of installation packages. + */ + private static $checkedDuplicates = array(); + + /** + * {@inheritdoc} + */ + public function inflectPackageVars($vars) + { + if ($this->composer->getPackage()) { + $extra = $this->composer->getPackage()->getExtra(); + + if (isset($extra['bitrix-dir'])) { + $vars['bitrix_dir'] = $extra['bitrix-dir']; + } + } + + if (!isset($vars['bitrix_dir'])) { + $vars['bitrix_dir'] = 'bitrix'; + } + + return parent::inflectPackageVars($vars); + } + + /** + * {@inheritdoc} + */ + protected function templatePath($path, array $vars = array()) + { + $templatePath = parent::templatePath($path, $vars); + $this->checkDuplicates($templatePath, $vars); + + return $templatePath; + } + + /** + * Duplicates search packages. + * + * @param string $path + * @param array $vars + */ + protected function checkDuplicates($path, array $vars = array()) + { + $packageType = substr($vars['type'], strlen('bitrix') + 1); + $localDir = explode('/', $vars['bitrix_dir']); + array_pop($localDir); + $localDir[] = 'local'; + $localDir = implode('/', $localDir); + + $oldPath = str_replace( + array('{$bitrix_dir}', '{$name}'), + array($localDir, $vars['name']), + $this->locations[$packageType] + ); + + if (in_array($oldPath, static::$checkedDuplicates)) { + return; + } + + if ($oldPath !== $path && file_exists($oldPath) && $this->io && $this->io->isInteractive()) { + + $this->io->writeError(' Duplication of packages:'); + $this->io->writeError(' Package ' . $oldPath . ' will be called instead package ' . $path . ''); + + while (true) { + switch ($this->io->ask(' Delete ' . $oldPath . ' [y,n,?]? ', '?')) { + case 'y': + $fs = new Filesystem(); + $fs->removeDirectory($oldPath); + break 2; + + case 'n': + break 2; + + case '?': + default: + $this->io->writeError(array( + ' y - delete package ' . $oldPath . ' and to continue with the installation', + ' n - don\'t delete and to continue with the installation', + )); + $this->io->writeError(' ? - print help'); + break; + } + } + } + + static::$checkedDuplicates[] = $oldPath; + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/BonefishInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/BonefishInstaller.php new file mode 100644 index 0000000..da3aad2 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/BonefishInstaller.php @@ -0,0 +1,9 @@ + 'Packages/{$vendor}/{$name}/' + ); +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/CakePHPInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/CakePHPInstaller.php new file mode 100644 index 0000000..6352beb --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/CakePHPInstaller.php @@ -0,0 +1,82 @@ + 'Plugin/{$name}/', + ); + + /** + * Format package name to CamelCase + */ + public function inflectPackageVars($vars) + { + if ($this->matchesCakeVersion('>=', '3.0.0')) { + return $vars; + } + + $nameParts = explode('/', $vars['name']); + foreach ($nameParts as &$value) { + $value = strtolower(preg_replace('/(?<=\\w)([A-Z])/', '_\\1', $value)); + $value = str_replace(array('-', '_'), ' ', $value); + $value = str_replace(' ', '', ucwords($value)); + } + $vars['name'] = implode('/', $nameParts); + + return $vars; + } + + /** + * Change the default plugin location when cakephp >= 3.0 + */ + public function getLocations() + { + if ($this->matchesCakeVersion('>=', '3.0.0')) { + $this->locations['plugin'] = $this->composer->getConfig()->get('vendor-dir') . '/{$vendor}/{$name}/'; + } + return $this->locations; + } + + /** + * Check if CakePHP version matches against a version + * + * @param string $matcher + * @param string $version + * @return bool + */ + protected function matchesCakeVersion($matcher, $version) + { + if (class_exists('Composer\Semver\Constraint\MultiConstraint')) { + $multiClass = 'Composer\Semver\Constraint\MultiConstraint'; + $constraintClass = 'Composer\Semver\Constraint\Constraint'; + } else { + $multiClass = 'Composer\Package\LinkConstraint\MultiConstraint'; + $constraintClass = 'Composer\Package\LinkConstraint\VersionConstraint'; + } + + $repositoryManager = $this->composer->getRepositoryManager(); + if ($repositoryManager) { + $repos = $repositoryManager->getLocalRepository(); + if (!$repos) { + return false; + } + $cake3 = new $multiClass(array( + new $constraintClass($matcher, $version), + new $constraintClass('!=', '9999999-dev'), + )); + $pool = new Pool('dev'); + $pool->addRepository($repos); + $packages = $pool->whatProvides('cakephp/cakephp'); + foreach ($packages as $package) { + $installed = new $constraintClass('=', $package->getVersion()); + if ($cake3->matches($installed)) { + return true; + } + } + } + return false; + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/ChefInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/ChefInstaller.php new file mode 100644 index 0000000..ab2f9aa --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/ChefInstaller.php @@ -0,0 +1,11 @@ + 'Chef/{$vendor}/{$name}/', + 'role' => 'Chef/roles/{$name}/', + ); +} + diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/CiviCrmInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/CiviCrmInstaller.php new file mode 100644 index 0000000..6673aea --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/CiviCrmInstaller.php @@ -0,0 +1,9 @@ + 'ext/{$name}/' + ); +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/ClanCatsFrameworkInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/ClanCatsFrameworkInstaller.php new file mode 100644 index 0000000..c887815 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/ClanCatsFrameworkInstaller.php @@ -0,0 +1,10 @@ + 'CCF/orbit/{$name}/', + 'theme' => 'CCF/app/themes/{$name}/', + ); +} \ No newline at end of file diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/CockpitInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/CockpitInstaller.php new file mode 100644 index 0000000..c7816df --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/CockpitInstaller.php @@ -0,0 +1,34 @@ + 'cockpit/modules/addons/{$name}/', + ); + + /** + * Format module name. + * + * Strip `module-` prefix from package name. + * + * @param array @vars + * + * @return array + */ + public function inflectPackageVars($vars) + { + if ($vars['type'] == 'cockpit-module') { + return $this->inflectModuleVars($vars); + } + + return $vars; + } + + public function inflectModuleVars($vars) + { + $vars['name'] = ucfirst(preg_replace('/cockpit-/i', '', $vars['name'])); + + return $vars; + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/CodeIgniterInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/CodeIgniterInstaller.php new file mode 100644 index 0000000..3b4a4ec --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/CodeIgniterInstaller.php @@ -0,0 +1,11 @@ + 'application/libraries/{$name}/', + 'third-party' => 'application/third_party/{$name}/', + 'module' => 'application/modules/{$name}/', + ); +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/Concrete5Installer.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/Concrete5Installer.php new file mode 100644 index 0000000..5c01baf --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/Concrete5Installer.php @@ -0,0 +1,13 @@ + 'concrete/', + 'block' => 'application/blocks/{$name}/', + 'package' => 'packages/{$name}/', + 'theme' => 'application/themes/{$name}/', + 'update' => 'updates/{$name}/', + ); +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/CraftInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/CraftInstaller.php new file mode 100644 index 0000000..d37a77a --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/CraftInstaller.php @@ -0,0 +1,35 @@ + 'craft/plugins/{$name}/', + ); + + /** + * Strip `craft-` prefix and/or `-plugin` suffix from package names + * + * @param array $vars + * + * @return array + */ + final public function inflectPackageVars($vars) + { + return $this->inflectPluginVars($vars); + } + + private function inflectPluginVars($vars) + { + $vars['name'] = preg_replace('/-' . self::NAME_SUFFIX . '$/i', '', $vars['name']); + $vars['name'] = preg_replace('/^' . self::NAME_PREFIX . '-/i', '', $vars['name']); + + return $vars; + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/CroogoInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/CroogoInstaller.php new file mode 100644 index 0000000..d94219d --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/CroogoInstaller.php @@ -0,0 +1,21 @@ + 'Plugin/{$name}/', + 'theme' => 'View/Themed/{$name}/', + ); + + /** + * Format package name to CamelCase + */ + public function inflectPackageVars($vars) + { + $vars['name'] = strtolower(str_replace(array('-', '_'), ' ', $vars['name'])); + $vars['name'] = str_replace(' ', '', ucwords($vars['name'])); + + return $vars; + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/DecibelInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/DecibelInstaller.php new file mode 100644 index 0000000..f4837a6 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/DecibelInstaller.php @@ -0,0 +1,10 @@ + 'app/{$name}/', + ); +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/DframeInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/DframeInstaller.php new file mode 100644 index 0000000..7078816 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/DframeInstaller.php @@ -0,0 +1,10 @@ + 'modules/{$vendor}/{$name}/', + ); +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/DokuWikiInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/DokuWikiInstaller.php new file mode 100644 index 0000000..cfd638d --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/DokuWikiInstaller.php @@ -0,0 +1,50 @@ + 'lib/plugins/{$name}/', + 'template' => 'lib/tpl/{$name}/', + ); + + /** + * Format package name. + * + * For package type dokuwiki-plugin, cut off a trailing '-plugin', + * or leading dokuwiki_ if present. + * + * For package type dokuwiki-template, cut off a trailing '-template' if present. + * + */ + public function inflectPackageVars($vars) + { + + if ($vars['type'] === 'dokuwiki-plugin') { + return $this->inflectPluginVars($vars); + } + + if ($vars['type'] === 'dokuwiki-template') { + return $this->inflectTemplateVars($vars); + } + + return $vars; + } + + protected function inflectPluginVars($vars) + { + $vars['name'] = preg_replace('/-plugin$/', '', $vars['name']); + $vars['name'] = preg_replace('/^dokuwiki_?-?/', '', $vars['name']); + + return $vars; + } + + protected function inflectTemplateVars($vars) + { + $vars['name'] = preg_replace('/-template$/', '', $vars['name']); + $vars['name'] = preg_replace('/^dokuwiki_?-?/', '', $vars['name']); + + return $vars; + } + +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/DolibarrInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/DolibarrInstaller.php new file mode 100644 index 0000000..21f7e8e --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/DolibarrInstaller.php @@ -0,0 +1,16 @@ + + */ +class DolibarrInstaller extends BaseInstaller +{ + //TODO: Add support for scripts and themes + protected $locations = array( + 'module' => 'htdocs/custom/{$name}/', + ); +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/DrupalInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/DrupalInstaller.php new file mode 100644 index 0000000..f520bfe --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/DrupalInstaller.php @@ -0,0 +1,20 @@ + 'core/', + 'module' => 'modules/{$name}/', + 'theme' => 'themes/{$name}/', + 'library' => 'libraries/{$name}/', + 'profile' => 'profiles/{$name}/', + 'drush' => 'drush/{$name}/', + 'custom-theme' => 'themes/custom/{$name}/', + 'custom-module' => 'modules/custom/{$name}/', + 'custom-profile' => 'profiles/custom/{$name}/', + 'drupal-multisite' => 'sites/{$name}/', + 'console' => 'console/{$name}/', + 'console-language' => 'console/language/{$name}/', + ); +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/ElggInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/ElggInstaller.php new file mode 100644 index 0000000..c0bb609 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/ElggInstaller.php @@ -0,0 +1,9 @@ + 'mod/{$name}/', + ); +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/EliasisInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/EliasisInstaller.php new file mode 100644 index 0000000..6f3dc97 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/EliasisInstaller.php @@ -0,0 +1,12 @@ + 'components/{$name}/', + 'module' => 'modules/{$name}/', + 'plugin' => 'plugins/{$name}/', + 'template' => 'templates/{$name}/', + ); +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/ExpressionEngineInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/ExpressionEngineInstaller.php new file mode 100644 index 0000000..d5321a8 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/ExpressionEngineInstaller.php @@ -0,0 +1,29 @@ + 'system/expressionengine/third_party/{$name}/', + 'theme' => 'themes/third_party/{$name}/', + ); + + private $ee3Locations = array( + 'addon' => 'system/user/addons/{$name}/', + 'theme' => 'themes/user/{$name}/', + ); + + public function getInstallPath(PackageInterface $package, $frameworkType = '') + { + + $version = "{$frameworkType}Locations"; + $this->locations = $this->$version; + + return parent::getInstallPath($package, $frameworkType); + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/EzPlatformInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/EzPlatformInstaller.php new file mode 100644 index 0000000..f30ebcc --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/EzPlatformInstaller.php @@ -0,0 +1,10 @@ + 'web/assets/ezplatform/', + 'assets' => 'web/assets/ezplatform/{$name}/', + ); +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/FuelInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/FuelInstaller.php new file mode 100644 index 0000000..6eba2e3 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/FuelInstaller.php @@ -0,0 +1,11 @@ + 'fuel/app/modules/{$name}/', + 'package' => 'fuel/packages/{$name}/', + 'theme' => 'fuel/app/themes/{$name}/', + ); +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/FuelphpInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/FuelphpInstaller.php new file mode 100644 index 0000000..29d980b --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/FuelphpInstaller.php @@ -0,0 +1,9 @@ + 'components/{$name}/', + ); +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/GravInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/GravInstaller.php new file mode 100644 index 0000000..dbe63e0 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/GravInstaller.php @@ -0,0 +1,30 @@ + 'user/plugins/{$name}/', + 'theme' => 'user/themes/{$name}/', + ); + + /** + * Format package name + * + * @param array $vars + * + * @return array + */ + public function inflectPackageVars($vars) + { + $restrictedWords = implode('|', array_keys($this->locations)); + + $vars['name'] = strtolower($vars['name']); + $vars['name'] = preg_replace('/^(?:grav-)?(?:(?:'.$restrictedWords.')-)?(.*?)(?:-(?:'.$restrictedWords.'))?$/ui', + '$1', + $vars['name'] + ); + + return $vars; + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/HuradInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/HuradInstaller.php new file mode 100644 index 0000000..8fe017f --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/HuradInstaller.php @@ -0,0 +1,25 @@ + 'plugins/{$name}/', + 'theme' => 'plugins/{$name}/', + ); + + /** + * Format package name to CamelCase + */ + public function inflectPackageVars($vars) + { + $nameParts = explode('/', $vars['name']); + foreach ($nameParts as &$value) { + $value = strtolower(preg_replace('/(?<=\\w)([A-Z])/', '_\\1', $value)); + $value = str_replace(array('-', '_'), ' ', $value); + $value = str_replace(' ', '', ucwords($value)); + } + $vars['name'] = implode('/', $nameParts); + return $vars; + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/ImageCMSInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/ImageCMSInstaller.php new file mode 100644 index 0000000..5e2142e --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/ImageCMSInstaller.php @@ -0,0 +1,11 @@ + 'templates/{$name}/', + 'module' => 'application/modules/{$name}/', + 'library' => 'application/libraries/{$name}/', + ); +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/Installer.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/Installer.php new file mode 100644 index 0000000..651c190 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/Installer.php @@ -0,0 +1,278 @@ + 'AimeosInstaller', + 'asgard' => 'AsgardInstaller', + 'attogram' => 'AttogramInstaller', + 'agl' => 'AglInstaller', + 'annotatecms' => 'AnnotateCmsInstaller', + 'bitrix' => 'BitrixInstaller', + 'bonefish' => 'BonefishInstaller', + 'cakephp' => 'CakePHPInstaller', + 'chef' => 'ChefInstaller', + 'civicrm' => 'CiviCrmInstaller', + 'ccframework' => 'ClanCatsFrameworkInstaller', + 'cockpit' => 'CockpitInstaller', + 'codeigniter' => 'CodeIgniterInstaller', + 'concrete5' => 'Concrete5Installer', + 'craft' => 'CraftInstaller', + 'croogo' => 'CroogoInstaller', + 'dframe' => 'DframeInstaller', + 'dokuwiki' => 'DokuWikiInstaller', + 'dolibarr' => 'DolibarrInstaller', + 'decibel' => 'DecibelInstaller', + 'drupal' => 'DrupalInstaller', + 'elgg' => 'ElggInstaller', + 'eliasis' => 'EliasisInstaller', + 'ee3' => 'ExpressionEngineInstaller', + 'ee2' => 'ExpressionEngineInstaller', + 'ezplatform' => 'EzPlatformInstaller', + 'fuel' => 'FuelInstaller', + 'fuelphp' => 'FuelphpInstaller', + 'grav' => 'GravInstaller', + 'hurad' => 'HuradInstaller', + 'imagecms' => 'ImageCMSInstaller', + 'itop' => 'ItopInstaller', + 'joomla' => 'JoomlaInstaller', + 'kanboard' => 'KanboardInstaller', + 'kirby' => 'KirbyInstaller', + 'known' => 'KnownInstaller', + 'kodicms' => 'KodiCMSInstaller', + 'kohana' => 'KohanaInstaller', + 'lms' => 'LanManagementSystemInstaller', + 'laravel' => 'LaravelInstaller', + 'lavalite' => 'LavaLiteInstaller', + 'lithium' => 'LithiumInstaller', + 'magento' => 'MagentoInstaller', + 'majima' => 'MajimaInstaller', + 'mako' => 'MakoInstaller', + 'maya' => 'MayaInstaller', + 'mautic' => 'MauticInstaller', + 'mediawiki' => 'MediaWikiInstaller', + 'microweber' => 'MicroweberInstaller', + 'modulework' => 'MODULEWorkInstaller', + 'modx' => 'ModxInstaller', + 'modxevo' => 'MODXEvoInstaller', + 'moodle' => 'MoodleInstaller', + 'october' => 'OctoberInstaller', + 'ontowiki' => 'OntoWikiInstaller', + 'oxid' => 'OxidInstaller', + 'osclass' => 'OsclassInstaller', + 'pxcms' => 'PxcmsInstaller', + 'phpbb' => 'PhpBBInstaller', + 'pimcore' => 'PimcoreInstaller', + 'piwik' => 'PiwikInstaller', + 'plentymarkets'=> 'PlentymarketsInstaller', + 'ppi' => 'PPIInstaller', + 'puppet' => 'PuppetInstaller', + 'radphp' => 'RadPHPInstaller', + 'phifty' => 'PhiftyInstaller', + 'porto' => 'PortoInstaller', + 'redaxo' => 'RedaxoInstaller', + 'redaxo5' => 'Redaxo5Installer', + 'reindex' => 'ReIndexInstaller', + 'roundcube' => 'RoundcubeInstaller', + 'shopware' => 'ShopwareInstaller', + 'sitedirect' => 'SiteDirectInstaller', + 'silverstripe' => 'SilverStripeInstaller', + 'smf' => 'SMFInstaller', + 'sydes' => 'SyDESInstaller', + 'symfony1' => 'Symfony1Installer', + 'tao' => 'TaoInstaller', + 'thelia' => 'TheliaInstaller', + 'tusk' => 'TuskInstaller', + 'typo3-cms' => 'TYPO3CmsInstaller', + 'typo3-flow' => 'TYPO3FlowInstaller', + 'userfrosting' => 'UserFrostingInstaller', + 'vanilla' => 'VanillaInstaller', + 'whmcs' => 'WHMCSInstaller', + 'wolfcms' => 'WolfCMSInstaller', + 'wordpress' => 'WordPressInstaller', + 'yawik' => 'YawikInstaller', + 'zend' => 'ZendInstaller', + 'zikula' => 'ZikulaInstaller', + 'prestashop' => 'PrestashopInstaller' + ); + + /** + * Installer constructor. + * + * Disables installers specified in main composer extra installer-disable + * list + * + * @param IOInterface $io + * @param Composer $composer + * @param string $type + * @param Filesystem|null $filesystem + * @param BinaryInstaller|null $binaryInstaller + */ + public function __construct( + IOInterface $io, + Composer $composer, + $type = 'library', + Filesystem $filesystem = null, + BinaryInstaller $binaryInstaller = null + ) { + parent::__construct($io, $composer, $type, $filesystem, + $binaryInstaller); + $this->removeDisabledInstallers(); + } + + /** + * {@inheritDoc} + */ + public function getInstallPath(PackageInterface $package) + { + $type = $package->getType(); + $frameworkType = $this->findFrameworkType($type); + + if ($frameworkType === false) { + throw new \InvalidArgumentException( + 'Sorry the package type of this package is not yet supported.' + ); + } + + $class = 'Composer\\Installers\\' . $this->supportedTypes[$frameworkType]; + $installer = new $class($package, $this->composer, $this->getIO()); + + return $installer->getInstallPath($package, $frameworkType); + } + + public function uninstall(InstalledRepositoryInterface $repo, PackageInterface $package) + { + parent::uninstall($repo, $package); + $installPath = $this->getPackageBasePath($package); + $this->io->write(sprintf('Deleting %s - %s', $installPath, !file_exists($installPath) ? 'deleted' : 'not deleted')); + } + + /** + * {@inheritDoc} + */ + public function supports($packageType) + { + $frameworkType = $this->findFrameworkType($packageType); + + if ($frameworkType === false) { + return false; + } + + $locationPattern = $this->getLocationPattern($frameworkType); + + return preg_match('#' . $frameworkType . '-' . $locationPattern . '#', $packageType, $matches) === 1; + } + + /** + * Finds a supported framework type if it exists and returns it + * + * @param string $type + * @return string + */ + protected function findFrameworkType($type) + { + $frameworkType = false; + + krsort($this->supportedTypes); + + foreach ($this->supportedTypes as $key => $val) { + if ($key === substr($type, 0, strlen($key))) { + $frameworkType = substr($type, 0, strlen($key)); + break; + } + } + + return $frameworkType; + } + + /** + * Get the second part of the regular expression to check for support of a + * package type + * + * @param string $frameworkType + * @return string + */ + protected function getLocationPattern($frameworkType) + { + $pattern = false; + if (!empty($this->supportedTypes[$frameworkType])) { + $frameworkClass = 'Composer\\Installers\\' . $this->supportedTypes[$frameworkType]; + /** @var BaseInstaller $framework */ + $framework = new $frameworkClass(null, $this->composer, $this->getIO()); + $locations = array_keys($framework->getLocations()); + $pattern = $locations ? '(' . implode('|', $locations) . ')' : false; + } + + return $pattern ? : '(\w+)'; + } + + /** + * Get I/O object + * + * @return IOInterface + */ + private function getIO() + { + return $this->io; + } + + /** + * Look for installers set to be disabled in composer's extra config and + * remove them from the list of supported installers. + * + * Globals: + * - true, "all", and "*" - disable all installers. + * - false - enable all installers (useful with + * wikimedia/composer-merge-plugin or similar) + * + * @return void + */ + protected function removeDisabledInstallers() + { + $extra = $this->composer->getPackage()->getExtra(); + + if (!isset($extra['installer-disable']) || $extra['installer-disable'] === false) { + // No installers are disabled + return; + } + + // Get installers to disable + $disable = $extra['installer-disable']; + + // Ensure $disabled is an array + if (!is_array($disable)) { + $disable = array($disable); + } + + // Check which installers should be disabled + $all = array(true, "all", "*"); + $intersect = array_intersect($all, $disable); + if (!empty($intersect)) { + // Disable all installers + $this->supportedTypes = array(); + } else { + // Disable specified installers + foreach ($disable as $key => $installer) { + if (is_string($installer) && key_exists($installer, $this->supportedTypes)) { + unset($this->supportedTypes[$installer]); + } + } + } + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/ItopInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/ItopInstaller.php new file mode 100644 index 0000000..c6c1b33 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/ItopInstaller.php @@ -0,0 +1,9 @@ + 'extensions/{$name}/', + ); +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/JoomlaInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/JoomlaInstaller.php new file mode 100644 index 0000000..9ee7759 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/JoomlaInstaller.php @@ -0,0 +1,15 @@ + 'components/{$name}/', + 'module' => 'modules/{$name}/', + 'template' => 'templates/{$name}/', + 'plugin' => 'plugins/{$name}/', + 'library' => 'libraries/{$name}/', + ); + + // TODO: Add inflector for mod_ and com_ names +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/KanboardInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/KanboardInstaller.php new file mode 100644 index 0000000..9cb7b8c --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/KanboardInstaller.php @@ -0,0 +1,18 @@ + 'plugins/{$name}/', + ); +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/KirbyInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/KirbyInstaller.php new file mode 100644 index 0000000..36b2f84 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/KirbyInstaller.php @@ -0,0 +1,11 @@ + 'site/plugins/{$name}/', + 'field' => 'site/fields/{$name}/', + 'tag' => 'site/tags/{$name}/' + ); +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/KnownInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/KnownInstaller.php new file mode 100644 index 0000000..c5d08c5 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/KnownInstaller.php @@ -0,0 +1,11 @@ + 'IdnoPlugins/{$name}/', + 'theme' => 'Themes/{$name}/', + 'console' => 'ConsolePlugins/{$name}/', + ); +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/KodiCMSInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/KodiCMSInstaller.php new file mode 100644 index 0000000..7143e23 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/KodiCMSInstaller.php @@ -0,0 +1,10 @@ + 'cms/plugins/{$name}/', + 'media' => 'cms/media/vendor/{$name}/' + ); +} \ No newline at end of file diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/KohanaInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/KohanaInstaller.php new file mode 100644 index 0000000..dcd6d26 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/KohanaInstaller.php @@ -0,0 +1,9 @@ + 'modules/{$name}/', + ); +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/LanManagementSystemInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/LanManagementSystemInstaller.php new file mode 100644 index 0000000..903143a --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/LanManagementSystemInstaller.php @@ -0,0 +1,27 @@ + 'plugins/{$name}/', + 'template' => 'templates/{$name}/', + 'document-template' => 'documents/templates/{$name}/', + 'userpanel-module' => 'userpanel/modules/{$name}/', + ); + + /** + * Format package name to CamelCase + */ + public function inflectPackageVars($vars) + { + $vars['name'] = strtolower(preg_replace('/(?<=\\w)([A-Z])/', '_\\1', $vars['name'])); + $vars['name'] = str_replace(array('-', '_'), ' ', $vars['name']); + $vars['name'] = str_replace(' ', '', ucwords($vars['name'])); + + return $vars; + } + +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/LaravelInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/LaravelInstaller.php new file mode 100644 index 0000000..be4d53a --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/LaravelInstaller.php @@ -0,0 +1,9 @@ + 'libraries/{$name}/', + ); +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/LavaLiteInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/LavaLiteInstaller.php new file mode 100644 index 0000000..412c0b5 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/LavaLiteInstaller.php @@ -0,0 +1,10 @@ + 'packages/{$vendor}/{$name}/', + 'theme' => 'public/themes/{$name}/', + ); +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/LithiumInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/LithiumInstaller.php new file mode 100644 index 0000000..47bbd4c --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/LithiumInstaller.php @@ -0,0 +1,10 @@ + 'libraries/{$name}/', + 'source' => 'libraries/_source/{$name}/', + ); +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/MODULEWorkInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/MODULEWorkInstaller.php new file mode 100644 index 0000000..9c2e9fb --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/MODULEWorkInstaller.php @@ -0,0 +1,9 @@ + 'modules/{$name}/', + ); +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/MODXEvoInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/MODXEvoInstaller.php new file mode 100644 index 0000000..5a66460 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/MODXEvoInstaller.php @@ -0,0 +1,16 @@ + 'assets/snippets/{$name}/', + 'plugin' => 'assets/plugins/{$name}/', + 'module' => 'assets/modules/{$name}/', + 'template' => 'assets/templates/{$name}/', + 'lib' => 'assets/lib/{$name}/' + ); +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/MagentoInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/MagentoInstaller.php new file mode 100644 index 0000000..cf18e94 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/MagentoInstaller.php @@ -0,0 +1,11 @@ + 'app/design/frontend/{$name}/', + 'skin' => 'skin/frontend/default/{$name}/', + 'library' => 'lib/{$name}/', + ); +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/MajimaInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/MajimaInstaller.php new file mode 100644 index 0000000..e463756 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/MajimaInstaller.php @@ -0,0 +1,37 @@ + 'plugins/{$name}/', + ); + + /** + * Transforms the names + * @param array $vars + * @return array + */ + public function inflectPackageVars($vars) + { + return $this->correctPluginName($vars); + } + + /** + * Change hyphenated names to camelcase + * @param array $vars + * @return array + */ + private function correctPluginName($vars) + { + $camelCasedName = preg_replace_callback('/(-[a-z])/', function ($matches) { + return strtoupper($matches[0][1]); + }, $vars['name']); + $vars['name'] = ucfirst($camelCasedName); + return $vars; + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/MakoInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/MakoInstaller.php new file mode 100644 index 0000000..ca3cfac --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/MakoInstaller.php @@ -0,0 +1,9 @@ + 'app/packages/{$name}/', + ); +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/MauticInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/MauticInstaller.php new file mode 100644 index 0000000..3e1ce2b --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/MauticInstaller.php @@ -0,0 +1,25 @@ + 'plugins/{$name}/', + 'theme' => 'themes/{$name}/', + ); + + /** + * Format package name of mautic-plugins to CamelCase + */ + public function inflectPackageVars($vars) + { + if ($vars['type'] == 'mautic-plugin') { + $vars['name'] = preg_replace_callback('/(-[a-z])/', function ($matches) { + return strtoupper($matches[0][1]); + }, ucfirst($vars['name'])); + } + + return $vars; + } + +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/MayaInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/MayaInstaller.php new file mode 100644 index 0000000..30a9167 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/MayaInstaller.php @@ -0,0 +1,33 @@ + 'modules/{$name}/', + ); + + /** + * Format package name. + * + * For package type maya-module, cut off a trailing '-module' if present. + * + */ + public function inflectPackageVars($vars) + { + if ($vars['type'] === 'maya-module') { + return $this->inflectModuleVars($vars); + } + + return $vars; + } + + protected function inflectModuleVars($vars) + { + $vars['name'] = preg_replace('/-module$/', '', $vars['name']); + $vars['name'] = str_replace(array('-', '_'), ' ', $vars['name']); + $vars['name'] = str_replace(' ', '', ucwords($vars['name'])); + + return $vars; + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/MediaWikiInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/MediaWikiInstaller.php new file mode 100644 index 0000000..f5a8957 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/MediaWikiInstaller.php @@ -0,0 +1,51 @@ + 'core/', + 'extension' => 'extensions/{$name}/', + 'skin' => 'skins/{$name}/', + ); + + /** + * Format package name. + * + * For package type mediawiki-extension, cut off a trailing '-extension' if present and transform + * to CamelCase keeping existing uppercase chars. + * + * For package type mediawiki-skin, cut off a trailing '-skin' if present. + * + */ + public function inflectPackageVars($vars) + { + + if ($vars['type'] === 'mediawiki-extension') { + return $this->inflectExtensionVars($vars); + } + + if ($vars['type'] === 'mediawiki-skin') { + return $this->inflectSkinVars($vars); + } + + return $vars; + } + + protected function inflectExtensionVars($vars) + { + $vars['name'] = preg_replace('/-extension$/', '', $vars['name']); + $vars['name'] = str_replace('-', ' ', $vars['name']); + $vars['name'] = str_replace(' ', '', ucwords($vars['name'])); + + return $vars; + } + + protected function inflectSkinVars($vars) + { + $vars['name'] = preg_replace('/-skin$/', '', $vars['name']); + + return $vars; + } + +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/MicroweberInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/MicroweberInstaller.php new file mode 100644 index 0000000..b7d9703 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/MicroweberInstaller.php @@ -0,0 +1,119 @@ + 'userfiles/modules/{$install_item_dir}/', + 'module-skin' => 'userfiles/modules/{$install_item_dir}/templates/', + 'template' => 'userfiles/templates/{$install_item_dir}/', + 'element' => 'userfiles/elements/{$install_item_dir}/', + 'vendor' => 'vendor/{$install_item_dir}/', + 'components' => 'components/{$install_item_dir}/' + ); + + /** + * Format package name. + * + * For package type microweber-module, cut off a trailing '-module' if present + * + * For package type microweber-template, cut off a trailing '-template' if present. + * + */ + public function inflectPackageVars($vars) + { + + + if ($this->package->getTargetDir()) { + $vars['install_item_dir'] = $this->package->getTargetDir(); + } else { + $vars['install_item_dir'] = $vars['name']; + if ($vars['type'] === 'microweber-template') { + return $this->inflectTemplateVars($vars); + } + if ($vars['type'] === 'microweber-templates') { + return $this->inflectTemplatesVars($vars); + } + if ($vars['type'] === 'microweber-core') { + return $this->inflectCoreVars($vars); + } + if ($vars['type'] === 'microweber-adapter') { + return $this->inflectCoreVars($vars); + } + if ($vars['type'] === 'microweber-module') { + return $this->inflectModuleVars($vars); + } + if ($vars['type'] === 'microweber-modules') { + return $this->inflectModulesVars($vars); + } + if ($vars['type'] === 'microweber-skin') { + return $this->inflectSkinVars($vars); + } + if ($vars['type'] === 'microweber-element' or $vars['type'] === 'microweber-elements') { + return $this->inflectElementVars($vars); + } + } + + + return $vars; + } + + protected function inflectTemplateVars($vars) + { + $vars['install_item_dir'] = preg_replace('/-template$/', '', $vars['install_item_dir']); + $vars['install_item_dir'] = preg_replace('/template-$/', '', $vars['install_item_dir']); + + return $vars; + } + + protected function inflectTemplatesVars($vars) + { + $vars['install_item_dir'] = preg_replace('/-templates$/', '', $vars['install_item_dir']); + $vars['install_item_dir'] = preg_replace('/templates-$/', '', $vars['install_item_dir']); + + return $vars; + } + + protected function inflectCoreVars($vars) + { + $vars['install_item_dir'] = preg_replace('/-providers$/', '', $vars['install_item_dir']); + $vars['install_item_dir'] = preg_replace('/-provider$/', '', $vars['install_item_dir']); + $vars['install_item_dir'] = preg_replace('/-adapter$/', '', $vars['install_item_dir']); + + return $vars; + } + + protected function inflectModuleVars($vars) + { + $vars['install_item_dir'] = preg_replace('/-module$/', '', $vars['install_item_dir']); + $vars['install_item_dir'] = preg_replace('/module-$/', '', $vars['install_item_dir']); + + return $vars; + } + + protected function inflectModulesVars($vars) + { + $vars['install_item_dir'] = preg_replace('/-modules$/', '', $vars['install_item_dir']); + $vars['install_item_dir'] = preg_replace('/modules-$/', '', $vars['install_item_dir']); + + return $vars; + } + + protected function inflectSkinVars($vars) + { + $vars['install_item_dir'] = preg_replace('/-skin$/', '', $vars['install_item_dir']); + $vars['install_item_dir'] = preg_replace('/skin-$/', '', $vars['install_item_dir']); + + return $vars; + } + + protected function inflectElementVars($vars) + { + $vars['install_item_dir'] = preg_replace('/-elements$/', '', $vars['install_item_dir']); + $vars['install_item_dir'] = preg_replace('/elements-$/', '', $vars['install_item_dir']); + $vars['install_item_dir'] = preg_replace('/-element$/', '', $vars['install_item_dir']); + $vars['install_item_dir'] = preg_replace('/element-$/', '', $vars['install_item_dir']); + + return $vars; + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/ModxInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/ModxInstaller.php new file mode 100644 index 0000000..0ee140a --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/ModxInstaller.php @@ -0,0 +1,12 @@ + 'core/packages/{$name}/' + ); +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/MoodleInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/MoodleInstaller.php new file mode 100644 index 0000000..75dbe71 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/MoodleInstaller.php @@ -0,0 +1,58 @@ + 'mod/{$name}/', + 'admin_report' => 'admin/report/{$name}/', + 'atto' => 'lib/editor/atto/plugins/{$name}/', + 'tool' => 'admin/tool/{$name}/', + 'assignment' => 'mod/assignment/type/{$name}/', + 'assignsubmission' => 'mod/assign/submission/{$name}/', + 'assignfeedback' => 'mod/assign/feedback/{$name}/', + 'auth' => 'auth/{$name}/', + 'availability' => 'availability/condition/{$name}/', + 'block' => 'blocks/{$name}/', + 'booktool' => 'mod/book/tool/{$name}/', + 'cachestore' => 'cache/stores/{$name}/', + 'cachelock' => 'cache/locks/{$name}/', + 'calendartype' => 'calendar/type/{$name}/', + 'format' => 'course/format/{$name}/', + 'coursereport' => 'course/report/{$name}/', + 'customcertelement' => 'mod/customcert/element/{$name}/', + 'datafield' => 'mod/data/field/{$name}/', + 'datapreset' => 'mod/data/preset/{$name}/', + 'editor' => 'lib/editor/{$name}/', + 'enrol' => 'enrol/{$name}/', + 'filter' => 'filter/{$name}/', + 'gradeexport' => 'grade/export/{$name}/', + 'gradeimport' => 'grade/import/{$name}/', + 'gradereport' => 'grade/report/{$name}/', + 'gradingform' => 'grade/grading/form/{$name}/', + 'local' => 'local/{$name}/', + 'logstore' => 'admin/tool/log/store/{$name}/', + 'ltisource' => 'mod/lti/source/{$name}/', + 'ltiservice' => 'mod/lti/service/{$name}/', + 'message' => 'message/output/{$name}/', + 'mnetservice' => 'mnet/service/{$name}/', + 'plagiarism' => 'plagiarism/{$name}/', + 'portfolio' => 'portfolio/{$name}/', + 'qbehaviour' => 'question/behaviour/{$name}/', + 'qformat' => 'question/format/{$name}/', + 'qtype' => 'question/type/{$name}/', + 'quizaccess' => 'mod/quiz/accessrule/{$name}/', + 'quiz' => 'mod/quiz/report/{$name}/', + 'report' => 'report/{$name}/', + 'repository' => 'repository/{$name}/', + 'scormreport' => 'mod/scorm/report/{$name}/', + 'search' => 'search/engine/{$name}/', + 'theme' => 'theme/{$name}/', + 'tinymce' => 'lib/editor/tinymce/plugins/{$name}/', + 'profilefield' => 'user/profile/field/{$name}/', + 'webservice' => 'webservice/{$name}/', + 'workshopallocation' => 'mod/workshop/allocation/{$name}/', + 'workshopeval' => 'mod/workshop/eval/{$name}/', + 'workshopform' => 'mod/workshop/form/{$name}/' + ); +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/OctoberInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/OctoberInstaller.php new file mode 100644 index 0000000..08d5dc4 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/OctoberInstaller.php @@ -0,0 +1,47 @@ + 'modules/{$name}/', + 'plugin' => 'plugins/{$vendor}/{$name}/', + 'theme' => 'themes/{$name}/' + ); + + /** + * Format package name. + * + * For package type october-plugin, cut off a trailing '-plugin' if present. + * + * For package type october-theme, cut off a trailing '-theme' if present. + * + */ + public function inflectPackageVars($vars) + { + if ($vars['type'] === 'october-plugin') { + return $this->inflectPluginVars($vars); + } + + if ($vars['type'] === 'october-theme') { + return $this->inflectThemeVars($vars); + } + + return $vars; + } + + protected function inflectPluginVars($vars) + { + $vars['name'] = preg_replace('/^oc-|-plugin$/', '', $vars['name']); + $vars['vendor'] = preg_replace('/[^a-z0-9_]/i', '', $vars['vendor']); + + return $vars; + } + + protected function inflectThemeVars($vars) + { + $vars['name'] = preg_replace('/^oc-|-theme$/', '', $vars['name']); + + return $vars; + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/OntoWikiInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/OntoWikiInstaller.php new file mode 100644 index 0000000..5dd3438 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/OntoWikiInstaller.php @@ -0,0 +1,24 @@ + 'extensions/{$name}/', + 'theme' => 'extensions/themes/{$name}/', + 'translation' => 'extensions/translations/{$name}/', + ); + + /** + * Format package name to lower case and remove ".ontowiki" suffix + */ + public function inflectPackageVars($vars) + { + $vars['name'] = strtolower($vars['name']); + $vars['name'] = preg_replace('/.ontowiki$/', '', $vars['name']); + $vars['name'] = preg_replace('/-theme$/', '', $vars['name']); + $vars['name'] = preg_replace('/-translation$/', '', $vars['name']); + + return $vars; + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/OsclassInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/OsclassInstaller.php new file mode 100644 index 0000000..3ca7954 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/OsclassInstaller.php @@ -0,0 +1,14 @@ + 'oc-content/plugins/{$name}/', + 'theme' => 'oc-content/themes/{$name}/', + 'language' => 'oc-content/languages/{$name}/', + ); + +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/OxidInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/OxidInstaller.php new file mode 100644 index 0000000..49940ff --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/OxidInstaller.php @@ -0,0 +1,59 @@ +.+)\/.+/'; + + protected $locations = array( + 'module' => 'modules/{$name}/', + 'theme' => 'application/views/{$name}/', + 'out' => 'out/{$name}/', + ); + + /** + * getInstallPath + * + * @param PackageInterface $package + * @param string $frameworkType + * @return void + */ + public function getInstallPath(PackageInterface $package, $frameworkType = '') + { + $installPath = parent::getInstallPath($package, $frameworkType); + $type = $this->package->getType(); + if ($type === 'oxid-module') { + $this->prepareVendorDirectory($installPath); + } + return $installPath; + } + + /** + * prepareVendorDirectory + * + * Makes sure there is a vendormetadata.php file inside + * the vendor folder if there is a vendor folder. + * + * @param string $installPath + * @return void + */ + protected function prepareVendorDirectory($installPath) + { + $matches = ''; + $hasVendorDirectory = preg_match(self::VENDOR_PATTERN, $installPath, $matches); + if (!$hasVendorDirectory) { + return; + } + + $vendorDirectory = $matches['vendor']; + $vendorPath = getcwd() . '/modules/' . $vendorDirectory; + if (!file_exists($vendorPath)) { + mkdir($vendorPath, 0755, true); + } + + $vendorMetaDataPath = $vendorPath . '/vendormetadata.php'; + touch($vendorMetaDataPath); + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/PPIInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/PPIInstaller.php new file mode 100644 index 0000000..170136f --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/PPIInstaller.php @@ -0,0 +1,9 @@ + 'modules/{$name}/', + ); +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/PhiftyInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/PhiftyInstaller.php new file mode 100644 index 0000000..4e59a8a --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/PhiftyInstaller.php @@ -0,0 +1,11 @@ + 'bundles/{$name}/', + 'library' => 'libraries/{$name}/', + 'framework' => 'frameworks/{$name}/', + ); +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/PhpBBInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/PhpBBInstaller.php new file mode 100644 index 0000000..deb2b77 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/PhpBBInstaller.php @@ -0,0 +1,11 @@ + 'ext/{$vendor}/{$name}/', + 'language' => 'language/{$name}/', + 'style' => 'styles/{$name}/', + ); +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/PimcoreInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/PimcoreInstaller.php new file mode 100644 index 0000000..4781fa6 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/PimcoreInstaller.php @@ -0,0 +1,21 @@ + 'plugins/{$name}/', + ); + + /** + * Format package name to CamelCase + */ + public function inflectPackageVars($vars) + { + $vars['name'] = strtolower(preg_replace('/(?<=\\w)([A-Z])/', '_\\1', $vars['name'])); + $vars['name'] = str_replace(array('-', '_'), ' ', $vars['name']); + $vars['name'] = str_replace(' ', '', ucwords($vars['name'])); + + return $vars; + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/PiwikInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/PiwikInstaller.php new file mode 100644 index 0000000..c17f457 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/PiwikInstaller.php @@ -0,0 +1,32 @@ + 'plugins/{$name}/', + ); + + /** + * Format package name to CamelCase + * @param array $vars + * + * @return array + */ + public function inflectPackageVars($vars) + { + $vars['name'] = strtolower(preg_replace('/(?<=\\w)([A-Z])/', '_\\1', $vars['name'])); + $vars['name'] = str_replace(array('-', '_'), ' ', $vars['name']); + $vars['name'] = str_replace(' ', '', ucwords($vars['name'])); + + return $vars; + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/PlentymarketsInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/PlentymarketsInstaller.php new file mode 100644 index 0000000..903e55f --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/PlentymarketsInstaller.php @@ -0,0 +1,29 @@ + '{$name}/' + ); + + /** + * Remove hyphen, "plugin" and format to camelcase + * @param array $vars + * + * @return array + */ + public function inflectPackageVars($vars) + { + $vars['name'] = explode("-", $vars['name']); + foreach ($vars['name'] as $key => $name) { + $vars['name'][$key] = ucfirst($vars['name'][$key]); + if (strcasecmp($name, "Plugin") == 0) { + unset($vars['name'][$key]); + } + } + $vars['name'] = implode("",$vars['name']); + + return $vars; + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/Plugin.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/Plugin.php new file mode 100644 index 0000000..5eb04af --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/Plugin.php @@ -0,0 +1,17 @@ +getInstallationManager()->addInstaller($installer); + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/PortoInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/PortoInstaller.php new file mode 100644 index 0000000..dbf85e6 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/PortoInstaller.php @@ -0,0 +1,9 @@ + 'app/Containers/{$name}/', + ); +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/PrestashopInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/PrestashopInstaller.php new file mode 100644 index 0000000..4c8421e --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/PrestashopInstaller.php @@ -0,0 +1,10 @@ + 'modules/{$name}/', + 'theme' => 'themes/{$name}/', + ); +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/PuppetInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/PuppetInstaller.php new file mode 100644 index 0000000..77cc3dd --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/PuppetInstaller.php @@ -0,0 +1,11 @@ + 'modules/{$name}/', + ); +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/PxcmsInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/PxcmsInstaller.php new file mode 100644 index 0000000..6551058 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/PxcmsInstaller.php @@ -0,0 +1,63 @@ + 'app/Modules/{$name}/', + 'theme' => 'themes/{$name}/', + ); + + /** + * Format package name. + * + * @param array $vars + * + * @return array + */ + public function inflectPackageVars($vars) + { + if ($vars['type'] === 'pxcms-module') { + return $this->inflectModuleVars($vars); + } + + if ($vars['type'] === 'pxcms-theme') { + return $this->inflectThemeVars($vars); + } + + return $vars; + } + + /** + * For package type pxcms-module, cut off a trailing '-plugin' if present. + * + * return string + */ + protected function inflectModuleVars($vars) + { + $vars['name'] = str_replace('pxcms-', '', $vars['name']); // strip out pxcms- just incase (legacy) + $vars['name'] = str_replace('module-', '', $vars['name']); // strip out module- + $vars['name'] = preg_replace('/-module$/', '', $vars['name']); // strip out -module + $vars['name'] = str_replace('-', '_', $vars['name']); // make -'s be _'s + $vars['name'] = ucwords($vars['name']); // make module name camelcased + + return $vars; + } + + + /** + * For package type pxcms-module, cut off a trailing '-plugin' if present. + * + * return string + */ + protected function inflectThemeVars($vars) + { + $vars['name'] = str_replace('pxcms-', '', $vars['name']); // strip out pxcms- just incase (legacy) + $vars['name'] = str_replace('theme-', '', $vars['name']); // strip out theme- + $vars['name'] = preg_replace('/-theme$/', '', $vars['name']); // strip out -theme + $vars['name'] = str_replace('-', '_', $vars['name']); // make -'s be _'s + $vars['name'] = ucwords($vars['name']); // make module name camelcased + + return $vars; + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/RadPHPInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/RadPHPInstaller.php new file mode 100644 index 0000000..0f78b5c --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/RadPHPInstaller.php @@ -0,0 +1,24 @@ + 'src/{$name}/' + ); + + /** + * Format package name to CamelCase + */ + public function inflectPackageVars($vars) + { + $nameParts = explode('/', $vars['name']); + foreach ($nameParts as &$value) { + $value = strtolower(preg_replace('/(?<=\\w)([A-Z])/', '_\\1', $value)); + $value = str_replace(array('-', '_'), ' ', $value); + $value = str_replace(' ', '', ucwords($value)); + } + $vars['name'] = implode('/', $nameParts); + return $vars; + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/ReIndexInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/ReIndexInstaller.php new file mode 100644 index 0000000..252c733 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/ReIndexInstaller.php @@ -0,0 +1,10 @@ + 'themes/{$name}/', + 'plugin' => 'plugins/{$name}/' + ); +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/Redaxo5Installer.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/Redaxo5Installer.php new file mode 100644 index 0000000..23a2034 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/Redaxo5Installer.php @@ -0,0 +1,10 @@ + 'redaxo/src/addons/{$name}/', + 'bestyle-plugin' => 'redaxo/src/addons/be_style/plugins/{$name}/' + ); +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/RedaxoInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/RedaxoInstaller.php new file mode 100644 index 0000000..0954457 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/RedaxoInstaller.php @@ -0,0 +1,10 @@ + 'redaxo/include/addons/{$name}/', + 'bestyle-plugin' => 'redaxo/include/addons/be_style/plugins/{$name}/' + ); +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/RoundcubeInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/RoundcubeInstaller.php new file mode 100644 index 0000000..d8d795b --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/RoundcubeInstaller.php @@ -0,0 +1,22 @@ + 'plugins/{$name}/', + ); + + /** + * Lowercase name and changes the name to a underscores + * + * @param array $vars + * @return array + */ + public function inflectPackageVars($vars) + { + $vars['name'] = strtolower(str_replace('-', '_', $vars['name'])); + + return $vars; + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/SMFInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/SMFInstaller.php new file mode 100644 index 0000000..1acd3b1 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/SMFInstaller.php @@ -0,0 +1,10 @@ + 'Sources/{$name}/', + 'theme' => 'Themes/{$name}/', + ); +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/ShopwareInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/ShopwareInstaller.php new file mode 100644 index 0000000..7d20d27 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/ShopwareInstaller.php @@ -0,0 +1,60 @@ + 'engine/Shopware/Plugins/Local/Backend/{$name}/', + 'core-plugin' => 'engine/Shopware/Plugins/Local/Core/{$name}/', + 'frontend-plugin' => 'engine/Shopware/Plugins/Local/Frontend/{$name}/', + 'theme' => 'templates/{$name}/', + 'plugin' => 'custom/plugins/{$name}/', + 'frontend-theme' => 'themes/Frontend/{$name}/', + ); + + /** + * Transforms the names + * @param array $vars + * @return array + */ + public function inflectPackageVars($vars) + { + if ($vars['type'] === 'shopware-theme') { + return $this->correctThemeName($vars); + } + + return $this->correctPluginName($vars); + } + + /** + * Changes the name to a camelcased combination of vendor and name + * @param array $vars + * @return array + */ + private function correctPluginName($vars) + { + $camelCasedName = preg_replace_callback('/(-[a-z])/', function ($matches) { + return strtoupper($matches[0][1]); + }, $vars['name']); + + $vars['name'] = ucfirst($vars['vendor']) . ucfirst($camelCasedName); + + return $vars; + } + + /** + * Changes the name to a underscore separated name + * @param array $vars + * @return array + */ + private function correctThemeName($vars) + { + $vars['name'] = str_replace('-', '_', $vars['name']); + + return $vars; + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/SilverStripeInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/SilverStripeInstaller.php new file mode 100644 index 0000000..81910e9 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/SilverStripeInstaller.php @@ -0,0 +1,35 @@ + '{$name}/', + 'theme' => 'themes/{$name}/', + ); + + /** + * Return the install path based on package type. + * + * Relies on built-in BaseInstaller behaviour with one exception: silverstripe/framework + * must be installed to 'sapphire' and not 'framework' if the version is <3.0.0 + * + * @param PackageInterface $package + * @param string $frameworkType + * @return string + */ + public function getInstallPath(PackageInterface $package, $frameworkType = '') + { + if ( + $package->getName() == 'silverstripe/framework' + && preg_match('/^\d+\.\d+\.\d+/', $package->getVersion()) + && version_compare($package->getVersion(), '2.999.999') < 0 + ) { + return $this->templatePath($this->locations['module'], array('name' => 'sapphire')); + } + + return parent::getInstallPath($package, $frameworkType); + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/SiteDirectInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/SiteDirectInstaller.php new file mode 100644 index 0000000..762d94c --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/SiteDirectInstaller.php @@ -0,0 +1,25 @@ + 'modules/{$vendor}/{$name}/', + 'plugin' => 'plugins/{$vendor}/{$name}/' + ); + + public function inflectPackageVars($vars) + { + return $this->parseVars($vars); + } + + protected function parseVars($vars) + { + $vars['vendor'] = strtolower($vars['vendor']) == 'sitedirect' ? 'SiteDirect' : $vars['vendor']; + $vars['name'] = str_replace(array('-', '_'), ' ', $vars['name']); + $vars['name'] = str_replace(' ', '', ucwords($vars['name'])); + + return $vars; + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/SyDESInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/SyDESInstaller.php new file mode 100644 index 0000000..83ef9d0 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/SyDESInstaller.php @@ -0,0 +1,49 @@ + 'app/modules/{$name}/', + 'theme' => 'themes/{$name}/', + ); + + /** + * Format module name. + * + * Strip `sydes-` prefix and a trailing '-theme' or '-module' from package name if present. + * + * @param array @vars + * + * @return array + */ + public function inflectPackageVars($vars) + { + if ($vars['type'] == 'sydes-module') { + return $this->inflectModuleVars($vars); + } + + if ($vars['type'] === 'sydes-theme') { + return $this->inflectThemeVars($vars); + } + + return $vars; + } + + public function inflectModuleVars($vars) + { + $vars['name'] = preg_replace('/(^sydes-|-module$)/i', '', $vars['name']); + $vars['name'] = str_replace(array('-', '_'), ' ', $vars['name']); + $vars['name'] = str_replace(' ', '', ucwords($vars['name'])); + + return $vars; + } + + protected function inflectThemeVars($vars) + { + $vars['name'] = preg_replace('/(^sydes-|-theme$)/', '', $vars['name']); + $vars['name'] = strtolower($vars['name']); + + return $vars; + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/Symfony1Installer.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/Symfony1Installer.php new file mode 100644 index 0000000..1675c4f --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/Symfony1Installer.php @@ -0,0 +1,26 @@ + + */ +class Symfony1Installer extends BaseInstaller +{ + protected $locations = array( + 'plugin' => 'plugins/{$name}/', + ); + + /** + * Format package name to CamelCase + */ + public function inflectPackageVars($vars) + { + $vars['name'] = preg_replace_callback('/(-[a-z])/', function ($matches) { + return strtoupper($matches[0][1]); + }, $vars['name']); + + return $vars; + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/TYPO3CmsInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/TYPO3CmsInstaller.php new file mode 100644 index 0000000..b1663e8 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/TYPO3CmsInstaller.php @@ -0,0 +1,16 @@ + + */ +class TYPO3CmsInstaller extends BaseInstaller +{ + protected $locations = array( + 'extension' => 'typo3conf/ext/{$name}/', + ); +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/TYPO3FlowInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/TYPO3FlowInstaller.php new file mode 100644 index 0000000..42572f4 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/TYPO3FlowInstaller.php @@ -0,0 +1,38 @@ + 'Packages/Application/{$name}/', + 'framework' => 'Packages/Framework/{$name}/', + 'plugin' => 'Packages/Plugins/{$name}/', + 'site' => 'Packages/Sites/{$name}/', + 'boilerplate' => 'Packages/Boilerplates/{$name}/', + 'build' => 'Build/{$name}/', + ); + + /** + * Modify the package name to be a TYPO3 Flow style key. + * + * @param array $vars + * @return array + */ + public function inflectPackageVars($vars) + { + $autoload = $this->package->getAutoload(); + if (isset($autoload['psr-0']) && is_array($autoload['psr-0'])) { + $namespace = key($autoload['psr-0']); + $vars['name'] = str_replace('\\', '.', $namespace); + } + if (isset($autoload['psr-4']) && is_array($autoload['psr-4'])) { + $namespace = key($autoload['psr-4']); + $vars['name'] = rtrim(str_replace('\\', '.', $namespace), '.'); + } + + return $vars; + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/TaoInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/TaoInstaller.php new file mode 100644 index 0000000..108def1 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/TaoInstaller.php @@ -0,0 +1,12 @@ + '{$name}' + ); +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/TheliaInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/TheliaInstaller.php new file mode 100644 index 0000000..158af52 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/TheliaInstaller.php @@ -0,0 +1,12 @@ + 'local/modules/{$name}/', + 'frontoffice-template' => 'templates/frontOffice/{$name}/', + 'backoffice-template' => 'templates/backOffice/{$name}/', + 'email-template' => 'templates/email/{$name}/', + ); +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/TuskInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/TuskInstaller.php new file mode 100644 index 0000000..7c0113b --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/TuskInstaller.php @@ -0,0 +1,14 @@ + + */ + class TuskInstaller extends BaseInstaller + { + protected $locations = array( + 'task' => '.tusk/tasks/{$name}/', + 'command' => '.tusk/commands/{$name}/', + 'asset' => 'assets/tusk/{$name}/', + ); + } diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/UserFrostingInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/UserFrostingInstaller.php new file mode 100644 index 0000000..fcb414a --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/UserFrostingInstaller.php @@ -0,0 +1,9 @@ + 'app/sprinkles/{$name}/', + ); +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/VanillaInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/VanillaInstaller.php new file mode 100644 index 0000000..24ca645 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/VanillaInstaller.php @@ -0,0 +1,10 @@ + 'plugins/{$name}/', + 'theme' => 'themes/{$name}/', + ); +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/VgmcpInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/VgmcpInstaller.php new file mode 100644 index 0000000..7d90c5e --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/VgmcpInstaller.php @@ -0,0 +1,49 @@ + 'src/{$vendor}/{$name}/', + 'theme' => 'themes/{$name}/' + ); + + /** + * Format package name. + * + * For package type vgmcp-bundle, cut off a trailing '-bundle' if present. + * + * For package type vgmcp-theme, cut off a trailing '-theme' if present. + * + */ + public function inflectPackageVars($vars) + { + if ($vars['type'] === 'vgmcp-bundle') { + return $this->inflectPluginVars($vars); + } + + if ($vars['type'] === 'vgmcp-theme') { + return $this->inflectThemeVars($vars); + } + + return $vars; + } + + protected function inflectPluginVars($vars) + { + $vars['name'] = preg_replace('/-bundle$/', '', $vars['name']); + $vars['name'] = str_replace(array('-', '_'), ' ', $vars['name']); + $vars['name'] = str_replace(' ', '', ucwords($vars['name'])); + + return $vars; + } + + protected function inflectThemeVars($vars) + { + $vars['name'] = preg_replace('/-theme$/', '', $vars['name']); + $vars['name'] = str_replace(array('-', '_'), ' ', $vars['name']); + $vars['name'] = str_replace(' ', '', ucwords($vars['name'])); + + return $vars; + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/WHMCSInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/WHMCSInstaller.php new file mode 100644 index 0000000..b65dbba --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/WHMCSInstaller.php @@ -0,0 +1,21 @@ + 'modules/addons/{$vendor}_{$name}/', + 'fraud' => 'modules/fraud/{$vendor}_{$name}/', + 'gateways' => 'modules/gateways/{$vendor}_{$name}/', + 'notifications' => 'modules/notifications/{$vendor}_{$name}/', + 'registrars' => 'modules/registrars/{$vendor}_{$name}/', + 'reports' => 'modules/reports/{$vendor}_{$name}/', + 'security' => 'modules/security/{$vendor}_{$name}/', + 'servers' => 'modules/servers/{$vendor}_{$name}/', + 'social' => 'modules/social/{$vendor}_{$name}/', + 'support' => 'modules/support/{$vendor}_{$name}/', + 'templates' => 'templates/{$vendor}_{$name}/', + 'includes' => 'includes/{$vendor}_{$name}/' + ); +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/WolfCMSInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/WolfCMSInstaller.php new file mode 100644 index 0000000..cb38788 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/WolfCMSInstaller.php @@ -0,0 +1,9 @@ + 'wolf/plugins/{$name}/', + ); +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/WordPressInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/WordPressInstaller.php new file mode 100644 index 0000000..91c46ad --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/WordPressInstaller.php @@ -0,0 +1,12 @@ + 'wp-content/plugins/{$name}/', + 'theme' => 'wp-content/themes/{$name}/', + 'muplugin' => 'wp-content/mu-plugins/{$name}/', + 'dropin' => 'wp-content/{$name}/', + ); +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/YawikInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/YawikInstaller.php new file mode 100644 index 0000000..27f429f --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/YawikInstaller.php @@ -0,0 +1,32 @@ + 'module/{$name}/', + ); + + /** + * Format package name to CamelCase + * @param array $vars + * + * @return array + */ + public function inflectPackageVars($vars) + { + $vars['name'] = strtolower(preg_replace('/(?<=\\w)([A-Z])/', '_\\1', $vars['name'])); + $vars['name'] = str_replace(array('-', '_'), ' ', $vars['name']); + $vars['name'] = str_replace(' ', '', ucwords($vars['name'])); + + return $vars; + } +} \ No newline at end of file diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/ZendInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/ZendInstaller.php new file mode 100644 index 0000000..bde9bc8 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/ZendInstaller.php @@ -0,0 +1,11 @@ + 'library/{$name}/', + 'extra' => 'extras/library/{$name}/', + 'module' => 'module/{$name}/', + ); +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/ZikulaInstaller.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/ZikulaInstaller.php new file mode 100644 index 0000000..56cdf5d --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/Composer/Installers/ZikulaInstaller.php @@ -0,0 +1,10 @@ + 'modules/{$vendor}-{$name}/', + 'theme' => 'themes/{$vendor}-{$name}/' + ); +} diff --git a/wp-content/plugins/wp-rocket/vendor/composer/installers/src/bootstrap.php b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/bootstrap.php new file mode 100644 index 0000000..0de276e --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/composer/installers/src/bootstrap.php @@ -0,0 +1,13 @@ +useMicrosecondTimestamps(false)`, disabling it gets you a bit of performance boost but reduces the precision to the second instead of microsecond + * Added possibility to skip some extra stack frames in IntrospectionProcessor if you have some library wrapping Monolog that is always adding frames + * Added `Logger->withName` to clone a logger (keeping all handlers) with a new name + * Added FluentdFormatter for the Fluentd unix socket protocol + * Added HandlerWrapper base class to ease the creation of handler wrappers, just extend it and override as needed + * Added support for replacing context sub-keys using `%context.*%` in LineFormatter + * Added support for `payload` context value in RollbarHandler + * Added setRelease to RavenHandler to describe the application version, sent with every log + * Added support for `fingerprint` context value in RavenHandler + * Fixed JSON encoding errors that would gobble up the whole log record, we now handle those more gracefully by dropping chars as needed + * Fixed write timeouts in SocketHandler and derivatives, set to 10sec by default, lower it with `setWritingTimeout()` + * Fixed PHP7 compatibility with regard to Exception/Throwable handling in a few places + +### 1.17.2 (2015-10-14) + + * Fixed ErrorHandler compatibility with non-Monolog PSR-3 loggers + * Fixed SlackHandler handling to use slack functionalities better + * Fixed SwiftMailerHandler bug when sending multiple emails they all had the same id + * Fixed 5.3 compatibility regression + +### 1.17.1 (2015-08-31) + + * Fixed RollbarHandler triggering PHP notices + +### 1.17.0 (2015-08-30) + + * Added support for `checksum` and `release` context/extra values in RavenHandler + * Added better support for exceptions in RollbarHandler + * Added UidProcessor::getUid + * Added support for showing the resource type in NormalizedFormatter + * Fixed IntrospectionProcessor triggering PHP notices + +### 1.16.0 (2015-08-09) + + * Added IFTTTHandler to notify ifttt.com triggers + * Added Logger::setHandlers() to allow setting/replacing all handlers + * Added $capSize in RedisHandler to cap the log size + * Fixed StreamHandler creation of directory to only trigger when the first log write happens + * Fixed bug in the handling of curl failures + * Fixed duplicate logging of fatal errors when both error and fatal error handlers are registered in monolog's ErrorHandler + * Fixed missing fatal errors records with handlers that need to be closed to flush log records + * Fixed TagProcessor::addTags support for associative arrays + +### 1.15.0 (2015-07-12) + + * Added addTags and setTags methods to change a TagProcessor + * Added automatic creation of directories if they are missing for a StreamHandler to open a log file + * Added retry functionality to Loggly, Cube and Mandrill handlers so they retry up to 5 times in case of network failure + * Fixed process exit code being incorrectly reset to 0 if ErrorHandler::registerExceptionHandler was used + * Fixed HTML/JS escaping in BrowserConsoleHandler + * Fixed JSON encoding errors being silently suppressed (PHP 5.5+ only) + +### 1.14.0 (2015-06-19) + + * Added PHPConsoleHandler to send record to Chrome's PHP Console extension and library + * Added support for objects implementing __toString in the NormalizerFormatter + * Added support for HipChat's v2 API in HipChatHandler + * Added Logger::setTimezone() to initialize the timezone monolog should use in case date.timezone isn't correct for your app + * Added an option to send formatted message instead of the raw record on PushoverHandler via ->useFormattedMessage(true) + * Fixed curl errors being silently suppressed + +### 1.13.1 (2015-03-09) + + * Fixed regression in HipChat requiring a new token to be created + +### 1.13.0 (2015-03-05) + + * Added Registry::hasLogger to check for the presence of a logger instance + * Added context.user support to RavenHandler + * Added HipChat API v2 support in the HipChatHandler + * Added NativeMailerHandler::addParameter to pass params to the mail() process + * Added context data to SlackHandler when $includeContextAndExtra is true + * Added ability to customize the Swift_Message per-email in SwiftMailerHandler + * Fixed SwiftMailerHandler to lazily create message instances if a callback is provided + * Fixed serialization of INF and NaN values in Normalizer and LineFormatter + +### 1.12.0 (2014-12-29) + + * Break: HandlerInterface::isHandling now receives a partial record containing only a level key. This was always the intent and does not break any Monolog handler but is strictly speaking a BC break and you should check if you relied on any other field in your own handlers. + * Added PsrHandler to forward records to another PSR-3 logger + * Added SamplingHandler to wrap around a handler and include only every Nth record + * Added MongoDBFormatter to support better storage with MongoDBHandler (it must be enabled manually for now) + * Added exception codes in the output of most formatters + * Added LineFormatter::includeStacktraces to enable exception stack traces in logs (uses more than one line) + * Added $useShortAttachment to SlackHandler to minify attachment size and $includeExtra to append extra data + * Added $host to HipChatHandler for users of private instances + * Added $transactionName to NewRelicHandler and support for a transaction_name context value + * Fixed MandrillHandler to avoid outputing API call responses + * Fixed some non-standard behaviors in SyslogUdpHandler + +### 1.11.0 (2014-09-30) + + * Break: The NewRelicHandler extra and context data are now prefixed with extra_ and context_ to avoid clashes. Watch out if you have scripts reading those from the API and rely on names + * Added WhatFailureGroupHandler to suppress any exception coming from the wrapped handlers and avoid chain failures if a logging service fails + * Added MandrillHandler to send emails via the Mandrillapp.com API + * Added SlackHandler to log records to a Slack.com account + * Added FleepHookHandler to log records to a Fleep.io account + * Added LogglyHandler::addTag to allow adding tags to an existing handler + * Added $ignoreEmptyContextAndExtra to LineFormatter to avoid empty [] at the end + * Added $useLocking to StreamHandler and RotatingFileHandler to enable flock() while writing + * Added support for PhpAmqpLib in the AmqpHandler + * Added FingersCrossedHandler::clear and BufferHandler::clear to reset them between batches in long running jobs + * Added support for adding extra fields from $_SERVER in the WebProcessor + * Fixed support for non-string values in PrsLogMessageProcessor + * Fixed SwiftMailer messages being sent with the wrong date in long running scripts + * Fixed minor PHP 5.6 compatibility issues + * Fixed BufferHandler::close being called twice + +### 1.10.0 (2014-06-04) + + * Added Logger::getHandlers() and Logger::getProcessors() methods + * Added $passthruLevel argument to FingersCrossedHandler to let it always pass some records through even if the trigger level is not reached + * Added support for extra data in NewRelicHandler + * Added $expandNewlines flag to the ErrorLogHandler to create multiple log entries when a message has multiple lines + +### 1.9.1 (2014-04-24) + + * Fixed regression in RotatingFileHandler file permissions + * Fixed initialization of the BufferHandler to make sure it gets flushed after receiving records + * Fixed ChromePHPHandler and FirePHPHandler's activation strategies to be more conservative + +### 1.9.0 (2014-04-20) + + * Added LogEntriesHandler to send logs to a LogEntries account + * Added $filePermissions to tweak file mode on StreamHandler and RotatingFileHandler + * Added $useFormatting flag to MemoryProcessor to make it send raw data in bytes + * Added support for table formatting in FirePHPHandler via the table context key + * Added a TagProcessor to add tags to records, and support for tags in RavenHandler + * Added $appendNewline flag to the JsonFormatter to enable using it when logging to files + * Added sound support to the PushoverHandler + * Fixed multi-threading support in StreamHandler + * Fixed empty headers issue when ChromePHPHandler received no records + * Fixed default format of the ErrorLogHandler + +### 1.8.0 (2014-03-23) + + * Break: the LineFormatter now strips newlines by default because this was a bug, set $allowInlineLineBreaks to true if you need them + * Added BrowserConsoleHandler to send logs to any browser's console via console.log() injection in the output + * Added FilterHandler to filter records and only allow those of a given list of levels through to the wrapped handler + * Added FlowdockHandler to send logs to a Flowdock account + * Added RollbarHandler to send logs to a Rollbar account + * Added HtmlFormatter to send prettier log emails with colors for each log level + * Added GitProcessor to add the current branch/commit to extra record data + * Added a Monolog\Registry class to allow easier global access to pre-configured loggers + * Added support for the new official graylog2/gelf-php lib for GelfHandler, upgrade if you can by replacing the mlehner/gelf-php requirement + * Added support for HHVM + * Added support for Loggly batch uploads + * Added support for tweaking the content type and encoding in NativeMailerHandler + * Added $skipClassesPartials to tweak the ignored classes in the IntrospectionProcessor + * Fixed batch request support in GelfHandler + +### 1.7.0 (2013-11-14) + + * Added ElasticSearchHandler to send logs to an Elastic Search server + * Added DynamoDbHandler and ScalarFormatter to send logs to Amazon's Dynamo DB + * Added SyslogUdpHandler to send logs to a remote syslogd server + * Added LogglyHandler to send logs to a Loggly account + * Added $level to IntrospectionProcessor so it only adds backtraces when needed + * Added $version to LogstashFormatter to allow using the new v1 Logstash format + * Added $appName to NewRelicHandler + * Added configuration of Pushover notification retries/expiry + * Added $maxColumnWidth to NativeMailerHandler to change the 70 chars default + * Added chainability to most setters for all handlers + * Fixed RavenHandler batch processing so it takes the message from the record with highest priority + * Fixed HipChatHandler batch processing so it sends all messages at once + * Fixed issues with eAccelerator + * Fixed and improved many small things + +### 1.6.0 (2013-07-29) + + * Added HipChatHandler to send logs to a HipChat chat room + * Added ErrorLogHandler to send logs to PHP's error_log function + * Added NewRelicHandler to send logs to NewRelic's service + * Added Monolog\ErrorHandler helper class to register a Logger as exception/error/fatal handler + * Added ChannelLevelActivationStrategy for the FingersCrossedHandler to customize levels by channel + * Added stack traces output when normalizing exceptions (json output & co) + * Added Monolog\Logger::API constant (currently 1) + * Added support for ChromePHP's v4.0 extension + * Added support for message priorities in PushoverHandler, see $highPriorityLevel and $emergencyLevel + * Added support for sending messages to multiple users at once with the PushoverHandler + * Fixed RavenHandler's support for batch sending of messages (when behind a Buffer or FingersCrossedHandler) + * Fixed normalization of Traversables with very large data sets, only the first 1000 items are shown now + * Fixed issue in RotatingFileHandler when an open_basedir restriction is active + * Fixed minor issues in RavenHandler and bumped the API to Raven 0.5.0 + * Fixed SyslogHandler issue when many were used concurrently with different facilities + +### 1.5.0 (2013-04-23) + + * Added ProcessIdProcessor to inject the PID in log records + * Added UidProcessor to inject a unique identifier to all log records of one request/run + * Added support for previous exceptions in the LineFormatter exception serialization + * Added Monolog\Logger::getLevels() to get all available levels + * Fixed ChromePHPHandler so it avoids sending headers larger than Chrome can handle + +### 1.4.1 (2013-04-01) + + * Fixed exception formatting in the LineFormatter to be more minimalistic + * Fixed RavenHandler's handling of context/extra data, requires Raven client >0.1.0 + * Fixed log rotation in RotatingFileHandler to work with long running scripts spanning multiple days + * Fixed WebProcessor array access so it checks for data presence + * Fixed Buffer, Group and FingersCrossed handlers to make use of their processors + +### 1.4.0 (2013-02-13) + + * Added RedisHandler to log to Redis via the Predis library or the phpredis extension + * Added ZendMonitorHandler to log to the Zend Server monitor + * Added the possibility to pass arrays of handlers and processors directly in the Logger constructor + * Added `$useSSL` option to the PushoverHandler which is enabled by default + * Fixed ChromePHPHandler and FirePHPHandler issue when multiple instances are used simultaneously + * Fixed header injection capability in the NativeMailHandler + +### 1.3.1 (2013-01-11) + + * Fixed LogstashFormatter to be usable with stream handlers + * Fixed GelfMessageFormatter levels on Windows + +### 1.3.0 (2013-01-08) + + * Added PSR-3 compliance, the `Monolog\Logger` class is now an instance of `Psr\Log\LoggerInterface` + * Added PsrLogMessageProcessor that you can selectively enable for full PSR-3 compliance + * Added LogstashFormatter (combine with SocketHandler or StreamHandler to send logs to Logstash) + * Added PushoverHandler to send mobile notifications + * Added CouchDBHandler and DoctrineCouchDBHandler + * Added RavenHandler to send data to Sentry servers + * Added support for the new MongoClient class in MongoDBHandler + * Added microsecond precision to log records' timestamps + * Added `$flushOnOverflow` param to BufferHandler to flush by batches instead of losing + the oldest entries + * Fixed normalization of objects with cyclic references + +### 1.2.1 (2012-08-29) + + * Added new $logopts arg to SyslogHandler to provide custom openlog options + * Fixed fatal error in SyslogHandler + +### 1.2.0 (2012-08-18) + + * Added AmqpHandler (for use with AMQP servers) + * Added CubeHandler + * Added NativeMailerHandler::addHeader() to send custom headers in mails + * Added the possibility to specify more than one recipient in NativeMailerHandler + * Added the possibility to specify float timeouts in SocketHandler + * Added NOTICE and EMERGENCY levels to conform with RFC 5424 + * Fixed the log records to use the php default timezone instead of UTC + * Fixed BufferHandler not being flushed properly on PHP fatal errors + * Fixed normalization of exotic resource types + * Fixed the default format of the SyslogHandler to avoid duplicating datetimes in syslog + +### 1.1.0 (2012-04-23) + + * Added Monolog\Logger::isHandling() to check if a handler will + handle the given log level + * Added ChromePHPHandler + * Added MongoDBHandler + * Added GelfHandler (for use with Graylog2 servers) + * Added SocketHandler (for use with syslog-ng for example) + * Added NormalizerFormatter + * Added the possibility to change the activation strategy of the FingersCrossedHandler + * Added possibility to show microseconds in logs + * Added `server` and `referer` to WebProcessor output + +### 1.0.2 (2011-10-24) + + * Fixed bug in IE with large response headers and FirePHPHandler + +### 1.0.1 (2011-08-25) + + * Added MemoryPeakUsageProcessor and MemoryUsageProcessor + * Added Monolog\Logger::getName() to get a logger's channel name + +### 1.0.0 (2011-07-06) + + * Added IntrospectionProcessor to get info from where the logger was called + * Fixed WebProcessor in CLI + +### 1.0.0-RC1 (2011-07-01) + + * Initial release diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/LICENSE b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/LICENSE new file mode 100644 index 0000000..1647321 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2011-2016 Jordi Boggiano + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is furnished +to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/README.md b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/README.md new file mode 100644 index 0000000..a578eb2 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/README.md @@ -0,0 +1,94 @@ +# Monolog - Logging for PHP [![Build Status](https://img.shields.io/travis/Seldaek/monolog.svg)](https://travis-ci.org/Seldaek/monolog) + +[![Total Downloads](https://img.shields.io/packagist/dt/monolog/monolog.svg)](https://packagist.org/packages/monolog/monolog) +[![Latest Stable Version](https://img.shields.io/packagist/v/monolog/monolog.svg)](https://packagist.org/packages/monolog/monolog) + + +Monolog sends your logs to files, sockets, inboxes, databases and various +web services. See the complete list of handlers below. Special handlers +allow you to build advanced logging strategies. + +This library implements the [PSR-3](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md) +interface that you can type-hint against in your own libraries to keep +a maximum of interoperability. You can also use it in your applications to +make sure you can always use another compatible logger at a later time. +As of 1.11.0 Monolog public APIs will also accept PSR-3 log levels. +Internally Monolog still uses its own level scheme since it predates PSR-3. + +## Installation + +Install the latest version with + +```bash +$ composer require monolog/monolog +``` + +## Basic Usage + +```php +pushHandler(new StreamHandler('path/to/your.log', Logger::WARNING)); + +// add records to the log +$log->addWarning('Foo'); +$log->addError('Bar'); +``` + +## Documentation + +- [Usage Instructions](doc/01-usage.md) +- [Handlers, Formatters and Processors](doc/02-handlers-formatters-processors.md) +- [Utility classes](doc/03-utilities.md) +- [Extending Monolog](doc/04-extending.md) + +## Third Party Packages + +Third party handlers, formatters and processors are +[listed in the wiki](https://github.com/Seldaek/monolog/wiki/Third-Party-Packages). You +can also add your own there if you publish one. + +## About + +### Requirements + +- Monolog works with PHP 5.3 or above, and is also tested to work with HHVM. + +### Submitting bugs and feature requests + +Bugs and feature request are tracked on [GitHub](https://github.com/Seldaek/monolog/issues) + +### Framework Integrations + +- Frameworks and libraries using [PSR-3](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md) + can be used very easily with Monolog since it implements the interface. +- [Symfony2](http://symfony.com) comes out of the box with Monolog. +- [Silex](http://silex.sensiolabs.org/) comes out of the box with Monolog. +- [Laravel 4 & 5](http://laravel.com/) come out of the box with Monolog. +- [Lumen](http://lumen.laravel.com/) comes out of the box with Monolog. +- [PPI](http://www.ppi.io/) comes out of the box with Monolog. +- [CakePHP](http://cakephp.org/) is usable with Monolog via the [cakephp-monolog](https://github.com/jadb/cakephp-monolog) plugin. +- [Slim](http://www.slimframework.com/) is usable with Monolog via the [Slim-Monolog](https://github.com/Flynsarmy/Slim-Monolog) log writer. +- [XOOPS 2.6](http://xoops.org/) comes out of the box with Monolog. +- [Aura.Web_Project](https://github.com/auraphp/Aura.Web_Project) comes out of the box with Monolog. +- [Nette Framework](http://nette.org/en/) can be used with Monolog via [Kdyby/Monolog](https://github.com/Kdyby/Monolog) extension. +- [Proton Micro Framework](https://github.com/alexbilbie/Proton) comes out of the box with Monolog. + +### Author + +Jordi Boggiano - -
      +See also the list of [contributors](https://github.com/Seldaek/monolog/contributors) which participated in this project. + +### License + +Monolog is licensed under the MIT License - see the `LICENSE` file for details + +### Acknowledgements + +This library is heavily inspired by Python's [Logbook](https://logbook.readthedocs.io/en/stable/) +library, although most concepts have been adjusted to fit to the PHP world. diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/composer.json b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/composer.json new file mode 100644 index 0000000..e171e20 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/composer.json @@ -0,0 +1,65 @@ +{ + "name": "monolog/monolog", + "description": "Sends your logs to files, sockets, inboxes, databases and various web services", + "keywords": ["log", "logging", "psr-3"], + "homepage": "http://github.com/Seldaek/monolog", + "type": "library", + "license": "MIT", + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "require": { + "php": ">=5.3.0", + "psr/log": "~1.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.5", + "graylog2/gelf-php": "~1.0", + "sentry/sentry": "^0.13", + "ruflin/elastica": ">=0.90 <3.0", + "doctrine/couchdb": "~1.0@dev", + "aws/aws-sdk-php": "^2.4.9 || ^3.0", + "php-amqplib/php-amqplib": "~2.4", + "swiftmailer/swiftmailer": "^5.3|^6.0", + "php-console/php-console": "^3.1.3", + "php-parallel-lint/php-parallel-lint": "^1.0" + }, + "suggest": { + "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", + "sentry/sentry": "Allow sending log messages to a Sentry server", + "doctrine/couchdb": "Allow sending log messages to a CouchDB server", + "ruflin/elastica": "Allow sending log messages to an Elastic Search server", + "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", + "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", + "ext-mongo": "Allow sending log messages to a MongoDB server", + "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver", + "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", + "rollbar/rollbar": "Allow sending log messages to Rollbar", + "php-console/php-console": "Allow sending log messages to Google Chrome" + }, + "autoload": { + "psr-4": {"Monolog\\": "src/Monolog"} + }, + "autoload-dev": { + "psr-4": {"Monolog\\": "tests/Monolog"} + }, + "provide": { + "psr/log-implementation": "1.0.0" + }, + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "scripts": { + "test": [ + "parallel-lint . --exclude vendor --exclude src/Monolog/Handler/FormattableHandlerInterface.php --exclude src/Monolog/Handler/FormattableHandlerTrait.php --exclude src/Monolog/Handler/ProcessableHandlerInterface.php --exclude src/Monolog/Handler/ProcessableHandlerTrait.php", + "phpunit" + ] + }, + "lock": false +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/ErrorHandler.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/ErrorHandler.php new file mode 100644 index 0000000..36ec009 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/ErrorHandler.php @@ -0,0 +1,238 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog; + +use Psr\Log\LoggerInterface; +use Psr\Log\LogLevel; +use Monolog\Handler\AbstractHandler; + +/** + * Monolog error handler + * + * A facility to enable logging of runtime errors, exceptions and fatal errors. + * + * Quick setup: ErrorHandler::register($logger); + * + * @author Jordi Boggiano + */ +class ErrorHandler +{ + private $logger; + + private $previousExceptionHandler; + private $uncaughtExceptionLevel; + + private $previousErrorHandler; + private $errorLevelMap; + private $handleOnlyReportedErrors; + + private $hasFatalErrorHandler; + private $fatalLevel; + private $reservedMemory; + private $lastFatalTrace; + private static $fatalErrors = array(E_ERROR, E_PARSE, E_CORE_ERROR, E_COMPILE_ERROR, E_USER_ERROR); + + public function __construct(LoggerInterface $logger) + { + $this->logger = $logger; + } + + /** + * Registers a new ErrorHandler for a given Logger + * + * By default it will handle errors, exceptions and fatal errors + * + * @param LoggerInterface $logger + * @param array|false $errorLevelMap an array of E_* constant to LogLevel::* constant mapping, or false to disable error handling + * @param int|false $exceptionLevel a LogLevel::* constant, or false to disable exception handling + * @param int|false $fatalLevel a LogLevel::* constant, or false to disable fatal error handling + * @return ErrorHandler + */ + public static function register(LoggerInterface $logger, $errorLevelMap = array(), $exceptionLevel = null, $fatalLevel = null) + { + //Forces the autoloader to run for LogLevel. Fixes an autoload issue at compile-time on PHP5.3. See https://github.com/Seldaek/monolog/pull/929 + class_exists('\\Psr\\Log\\LogLevel', true); + + $handler = new static($logger); + if ($errorLevelMap !== false) { + $handler->registerErrorHandler($errorLevelMap); + } + if ($exceptionLevel !== false) { + $handler->registerExceptionHandler($exceptionLevel); + } + if ($fatalLevel !== false) { + $handler->registerFatalHandler($fatalLevel); + } + + return $handler; + } + + public function registerExceptionHandler($level = null, $callPrevious = true) + { + $prev = set_exception_handler(array($this, 'handleException')); + $this->uncaughtExceptionLevel = $level; + if ($callPrevious && $prev) { + $this->previousExceptionHandler = $prev; + } + } + + public function registerErrorHandler(array $levelMap = array(), $callPrevious = true, $errorTypes = -1, $handleOnlyReportedErrors = true) + { + $prev = set_error_handler(array($this, 'handleError'), $errorTypes); + $this->errorLevelMap = array_replace($this->defaultErrorLevelMap(), $levelMap); + if ($callPrevious) { + $this->previousErrorHandler = $prev ?: true; + } + + $this->handleOnlyReportedErrors = $handleOnlyReportedErrors; + } + + public function registerFatalHandler($level = null, $reservedMemorySize = 20) + { + register_shutdown_function(array($this, 'handleFatalError')); + + $this->reservedMemory = str_repeat(' ', 1024 * $reservedMemorySize); + $this->fatalLevel = $level; + $this->hasFatalErrorHandler = true; + } + + protected function defaultErrorLevelMap() + { + return array( + E_ERROR => LogLevel::CRITICAL, + E_WARNING => LogLevel::WARNING, + E_PARSE => LogLevel::ALERT, + E_NOTICE => LogLevel::NOTICE, + E_CORE_ERROR => LogLevel::CRITICAL, + E_CORE_WARNING => LogLevel::WARNING, + E_COMPILE_ERROR => LogLevel::ALERT, + E_COMPILE_WARNING => LogLevel::WARNING, + E_USER_ERROR => LogLevel::ERROR, + E_USER_WARNING => LogLevel::WARNING, + E_USER_NOTICE => LogLevel::NOTICE, + E_STRICT => LogLevel::NOTICE, + E_RECOVERABLE_ERROR => LogLevel::ERROR, + E_DEPRECATED => LogLevel::NOTICE, + E_USER_DEPRECATED => LogLevel::NOTICE, + ); + } + + /** + * @private + */ + public function handleException($e) + { + $this->logger->log( + $this->uncaughtExceptionLevel === null ? LogLevel::ERROR : $this->uncaughtExceptionLevel, + sprintf('Uncaught Exception %s: "%s" at %s line %s', Utils::getClass($e), $e->getMessage(), $e->getFile(), $e->getLine()), + array('exception' => $e) + ); + + if ($this->previousExceptionHandler) { + call_user_func($this->previousExceptionHandler, $e); + } + + exit(255); + } + + /** + * @private + */ + public function handleError($code, $message, $file = '', $line = 0, $context = array()) + { + if ($this->handleOnlyReportedErrors && !(error_reporting() & $code)) { + return; + } + + // fatal error codes are ignored if a fatal error handler is present as well to avoid duplicate log entries + if (!$this->hasFatalErrorHandler || !in_array($code, self::$fatalErrors, true)) { + $level = isset($this->errorLevelMap[$code]) ? $this->errorLevelMap[$code] : LogLevel::CRITICAL; + $this->logger->log($level, self::codeToString($code).': '.$message, array('code' => $code, 'message' => $message, 'file' => $file, 'line' => $line)); + } else { + // http://php.net/manual/en/function.debug-backtrace.php + // As of 5.3.6, DEBUG_BACKTRACE_IGNORE_ARGS option was added. + // Any version less than 5.3.6 must use the DEBUG_BACKTRACE_IGNORE_ARGS constant value '2'. + $trace = debug_backtrace((PHP_VERSION_ID < 50306) ? 2 : DEBUG_BACKTRACE_IGNORE_ARGS); + array_shift($trace); // Exclude handleError from trace + $this->lastFatalTrace = $trace; + } + + if ($this->previousErrorHandler === true) { + return false; + } elseif ($this->previousErrorHandler) { + return call_user_func($this->previousErrorHandler, $code, $message, $file, $line, $context); + } + } + + /** + * @private + */ + public function handleFatalError() + { + $this->reservedMemory = null; + + $lastError = error_get_last(); + if ($lastError && in_array($lastError['type'], self::$fatalErrors, true)) { + $this->logger->log( + $this->fatalLevel === null ? LogLevel::ALERT : $this->fatalLevel, + 'Fatal Error ('.self::codeToString($lastError['type']).'): '.$lastError['message'], + array('code' => $lastError['type'], 'message' => $lastError['message'], 'file' => $lastError['file'], 'line' => $lastError['line'], 'trace' => $this->lastFatalTrace) + ); + + if ($this->logger instanceof Logger) { + foreach ($this->logger->getHandlers() as $handler) { + if ($handler instanceof AbstractHandler) { + $handler->close(); + } + } + } + } + } + + private static function codeToString($code) + { + switch ($code) { + case E_ERROR: + return 'E_ERROR'; + case E_WARNING: + return 'E_WARNING'; + case E_PARSE: + return 'E_PARSE'; + case E_NOTICE: + return 'E_NOTICE'; + case E_CORE_ERROR: + return 'E_CORE_ERROR'; + case E_CORE_WARNING: + return 'E_CORE_WARNING'; + case E_COMPILE_ERROR: + return 'E_COMPILE_ERROR'; + case E_COMPILE_WARNING: + return 'E_COMPILE_WARNING'; + case E_USER_ERROR: + return 'E_USER_ERROR'; + case E_USER_WARNING: + return 'E_USER_WARNING'; + case E_USER_NOTICE: + return 'E_USER_NOTICE'; + case E_STRICT: + return 'E_STRICT'; + case E_RECOVERABLE_ERROR: + return 'E_RECOVERABLE_ERROR'; + case E_DEPRECATED: + return 'E_DEPRECATED'; + case E_USER_DEPRECATED: + return 'E_USER_DEPRECATED'; + } + + return 'Unknown PHP error'; + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Formatter/ChromePHPFormatter.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Formatter/ChromePHPFormatter.php new file mode 100644 index 0000000..9beda1e --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Formatter/ChromePHPFormatter.php @@ -0,0 +1,78 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Formatter; + +use Monolog\Logger; + +/** + * Formats a log message according to the ChromePHP array format + * + * @author Christophe Coevoet + */ +class ChromePHPFormatter implements FormatterInterface +{ + /** + * Translates Monolog log levels to Wildfire levels. + */ + private $logLevels = array( + Logger::DEBUG => 'log', + Logger::INFO => 'info', + Logger::NOTICE => 'info', + Logger::WARNING => 'warn', + Logger::ERROR => 'error', + Logger::CRITICAL => 'error', + Logger::ALERT => 'error', + Logger::EMERGENCY => 'error', + ); + + /** + * {@inheritdoc} + */ + public function format(array $record) + { + // Retrieve the line and file if set and remove them from the formatted extra + $backtrace = 'unknown'; + if (isset($record['extra']['file'], $record['extra']['line'])) { + $backtrace = $record['extra']['file'].' : '.$record['extra']['line']; + unset($record['extra']['file'], $record['extra']['line']); + } + + $message = array('message' => $record['message']); + if ($record['context']) { + $message['context'] = $record['context']; + } + if ($record['extra']) { + $message['extra'] = $record['extra']; + } + if (count($message) === 1) { + $message = reset($message); + } + + return array( + $record['channel'], + $message, + $backtrace, + $this->logLevels[$record['level']], + ); + } + + public function formatBatch(array $records) + { + $formatted = array(); + + foreach ($records as $record) { + $formatted[] = $this->format($record); + } + + return $formatted; + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Formatter/ElasticaFormatter.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Formatter/ElasticaFormatter.php new file mode 100644 index 0000000..4c556cf --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Formatter/ElasticaFormatter.php @@ -0,0 +1,89 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Formatter; + +use Elastica\Document; + +/** + * Format a log message into an Elastica Document + * + * @author Jelle Vink + */ +class ElasticaFormatter extends NormalizerFormatter +{ + /** + * @var string Elastic search index name + */ + protected $index; + + /** + * @var string Elastic search document type + */ + protected $type; + + /** + * @param string $index Elastic Search index name + * @param string $type Elastic Search document type + */ + public function __construct($index, $type) + { + // elasticsearch requires a ISO 8601 format date with optional millisecond precision. + parent::__construct('Y-m-d\TH:i:s.uP'); + + $this->index = $index; + $this->type = $type; + } + + /** + * {@inheritdoc} + */ + public function format(array $record) + { + $record = parent::format($record); + + return $this->getDocument($record); + } + + /** + * Getter index + * @return string + */ + public function getIndex() + { + return $this->index; + } + + /** + * Getter type + * @return string + */ + public function getType() + { + return $this->type; + } + + /** + * Convert a log message into an Elastica Document + * + * @param array $record Log message + * @return Document + */ + protected function getDocument($record) + { + $document = new Document(); + $document->setData($record); + $document->setType($this->type); + $document->setIndex($this->index); + + return $document; + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Formatter/FlowdockFormatter.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Formatter/FlowdockFormatter.php new file mode 100644 index 0000000..5094af3 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Formatter/FlowdockFormatter.php @@ -0,0 +1,116 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Formatter; + +/** + * formats the record to be used in the FlowdockHandler + * + * @author Dominik Liebler + */ +class FlowdockFormatter implements FormatterInterface +{ + /** + * @var string + */ + private $source; + + /** + * @var string + */ + private $sourceEmail; + + /** + * @param string $source + * @param string $sourceEmail + */ + public function __construct($source, $sourceEmail) + { + $this->source = $source; + $this->sourceEmail = $sourceEmail; + } + + /** + * {@inheritdoc} + */ + public function format(array $record) + { + $tags = array( + '#logs', + '#' . strtolower($record['level_name']), + '#' . $record['channel'], + ); + + foreach ($record['extra'] as $value) { + $tags[] = '#' . $value; + } + + $subject = sprintf( + 'in %s: %s - %s', + $this->source, + $record['level_name'], + $this->getShortMessage($record['message']) + ); + + $record['flowdock'] = array( + 'source' => $this->source, + 'from_address' => $this->sourceEmail, + 'subject' => $subject, + 'content' => $record['message'], + 'tags' => $tags, + 'project' => $this->source, + ); + + return $record; + } + + /** + * {@inheritdoc} + */ + public function formatBatch(array $records) + { + $formatted = array(); + + foreach ($records as $record) { + $formatted[] = $this->format($record); + } + + return $formatted; + } + + /** + * @param string $message + * + * @return string + */ + public function getShortMessage($message) + { + static $hasMbString; + + if (null === $hasMbString) { + $hasMbString = function_exists('mb_strlen'); + } + + $maxLength = 45; + + if ($hasMbString) { + if (mb_strlen($message, 'UTF-8') > $maxLength) { + $message = mb_substr($message, 0, $maxLength - 4, 'UTF-8') . ' ...'; + } + } else { + if (strlen($message) > $maxLength) { + $message = substr($message, 0, $maxLength - 4) . ' ...'; + } + } + + return $message; + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Formatter/FluentdFormatter.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Formatter/FluentdFormatter.php new file mode 100644 index 0000000..f8ead47 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Formatter/FluentdFormatter.php @@ -0,0 +1,88 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Formatter; + +use Monolog\Utils; + +/** + * Class FluentdFormatter + * + * Serializes a log message to Fluentd unix socket protocol + * + * Fluentd config: + * + * + * type unix + * path /var/run/td-agent/td-agent.sock + * + * + * Monolog setup: + * + * $logger = new Monolog\Logger('fluent.tag'); + * $fluentHandler = new Monolog\Handler\SocketHandler('unix:///var/run/td-agent/td-agent.sock'); + * $fluentHandler->setFormatter(new Monolog\Formatter\FluentdFormatter()); + * $logger->pushHandler($fluentHandler); + * + * @author Andrius Putna + */ +class FluentdFormatter implements FormatterInterface +{ + /** + * @var bool $levelTag should message level be a part of the fluentd tag + */ + protected $levelTag = false; + + public function __construct($levelTag = false) + { + if (!function_exists('json_encode')) { + throw new \RuntimeException('PHP\'s json extension is required to use Monolog\'s FluentdUnixFormatter'); + } + + $this->levelTag = (bool) $levelTag; + } + + public function isUsingLevelsInTag() + { + return $this->levelTag; + } + + public function format(array $record) + { + $tag = $record['channel']; + if ($this->levelTag) { + $tag .= '.' . strtolower($record['level_name']); + } + + $message = array( + 'message' => $record['message'], + 'context' => $record['context'], + 'extra' => $record['extra'], + ); + + if (!$this->levelTag) { + $message['level'] = $record['level']; + $message['level_name'] = $record['level_name']; + } + + return Utils::jsonEncode(array($tag, $record['datetime']->getTimestamp(), $message)); + } + + public function formatBatch(array $records) + { + $message = ''; + foreach ($records as $record) { + $message .= $this->format($record); + } + + return $message; + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Formatter/FormatterInterface.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Formatter/FormatterInterface.php new file mode 100644 index 0000000..b5de751 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Formatter/FormatterInterface.php @@ -0,0 +1,36 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Formatter; + +/** + * Interface for formatters + * + * @author Jordi Boggiano + */ +interface FormatterInterface +{ + /** + * Formats a log record. + * + * @param array $record A record to format + * @return mixed The formatted record + */ + public function format(array $record); + + /** + * Formats a set of log records. + * + * @param array $records A set of records to format + * @return mixed The formatted set of records + */ + public function formatBatch(array $records); +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Formatter/GelfMessageFormatter.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Formatter/GelfMessageFormatter.php new file mode 100644 index 0000000..2c1b0e8 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Formatter/GelfMessageFormatter.php @@ -0,0 +1,138 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Formatter; + +use Monolog\Logger; +use Gelf\Message; + +/** + * Serializes a log message to GELF + * @see http://www.graylog2.org/about/gelf + * + * @author Matt Lehner + */ +class GelfMessageFormatter extends NormalizerFormatter +{ + const DEFAULT_MAX_LENGTH = 32766; + + /** + * @var string the name of the system for the Gelf log message + */ + protected $systemName; + + /** + * @var string a prefix for 'extra' fields from the Monolog record (optional) + */ + protected $extraPrefix; + + /** + * @var string a prefix for 'context' fields from the Monolog record (optional) + */ + protected $contextPrefix; + + /** + * @var int max length per field + */ + protected $maxLength; + + /** + * Translates Monolog log levels to Graylog2 log priorities. + */ + private $logLevels = array( + Logger::DEBUG => 7, + Logger::INFO => 6, + Logger::NOTICE => 5, + Logger::WARNING => 4, + Logger::ERROR => 3, + Logger::CRITICAL => 2, + Logger::ALERT => 1, + Logger::EMERGENCY => 0, + ); + + public function __construct($systemName = null, $extraPrefix = null, $contextPrefix = 'ctxt_', $maxLength = null) + { + parent::__construct('U.u'); + + $this->systemName = $systemName ?: gethostname(); + + $this->extraPrefix = $extraPrefix; + $this->contextPrefix = $contextPrefix; + $this->maxLength = is_null($maxLength) ? self::DEFAULT_MAX_LENGTH : $maxLength; + } + + /** + * {@inheritdoc} + */ + public function format(array $record) + { + $record = parent::format($record); + + if (!isset($record['datetime'], $record['message'], $record['level'])) { + throw new \InvalidArgumentException('The record should at least contain datetime, message and level keys, '.var_export($record, true).' given'); + } + + $message = new Message(); + $message + ->setTimestamp($record['datetime']) + ->setShortMessage((string) $record['message']) + ->setHost($this->systemName) + ->setLevel($this->logLevels[$record['level']]); + + // message length + system name length + 200 for padding / metadata + $len = 200 + strlen((string) $record['message']) + strlen($this->systemName); + + if ($len > $this->maxLength) { + $message->setShortMessage(substr($record['message'], 0, $this->maxLength)); + } + + if (isset($record['channel'])) { + $message->setFacility($record['channel']); + } + if (isset($record['extra']['line'])) { + $message->setLine($record['extra']['line']); + unset($record['extra']['line']); + } + if (isset($record['extra']['file'])) { + $message->setFile($record['extra']['file']); + unset($record['extra']['file']); + } + + foreach ($record['extra'] as $key => $val) { + $val = is_scalar($val) || null === $val ? $val : $this->toJson($val); + $len = strlen($this->extraPrefix . $key . $val); + if ($len > $this->maxLength) { + $message->setAdditional($this->extraPrefix . $key, substr($val, 0, $this->maxLength)); + break; + } + $message->setAdditional($this->extraPrefix . $key, $val); + } + + foreach ($record['context'] as $key => $val) { + $val = is_scalar($val) || null === $val ? $val : $this->toJson($val); + $len = strlen($this->contextPrefix . $key . $val); + if ($len > $this->maxLength) { + $message->setAdditional($this->contextPrefix . $key, substr($val, 0, $this->maxLength)); + break; + } + $message->setAdditional($this->contextPrefix . $key, $val); + } + + if (null === $message->getFile() && isset($record['context']['exception']['file'])) { + if (preg_match("/^(.+):([0-9]+)$/", $record['context']['exception']['file'], $matches)) { + $message->setFile($matches[1]); + $message->setLine($matches[2]); + } + } + + return $message; + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Formatter/HtmlFormatter.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Formatter/HtmlFormatter.php new file mode 100644 index 0000000..9e8d2d0 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Formatter/HtmlFormatter.php @@ -0,0 +1,142 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Formatter; + +use Monolog\Logger; +use Monolog\Utils; + +/** + * Formats incoming records into an HTML table + * + * This is especially useful for html email logging + * + * @author Tiago Brito + */ +class HtmlFormatter extends NormalizerFormatter +{ + /** + * Translates Monolog log levels to html color priorities. + */ + protected $logLevels = array( + Logger::DEBUG => '#cccccc', + Logger::INFO => '#468847', + Logger::NOTICE => '#3a87ad', + Logger::WARNING => '#c09853', + Logger::ERROR => '#f0ad4e', + Logger::CRITICAL => '#FF7708', + Logger::ALERT => '#C12A19', + Logger::EMERGENCY => '#000000', + ); + + /** + * @param string $dateFormat The format of the timestamp: one supported by DateTime::format + */ + public function __construct($dateFormat = null) + { + parent::__construct($dateFormat); + } + + /** + * Creates an HTML table row + * + * @param string $th Row header content + * @param string $td Row standard cell content + * @param bool $escapeTd false if td content must not be html escaped + * @return string + */ + protected function addRow($th, $td = ' ', $escapeTd = true) + { + $th = htmlspecialchars($th, ENT_NOQUOTES, 'UTF-8'); + if ($escapeTd) { + $td = '

      '.htmlspecialchars($td, ENT_NOQUOTES, 'UTF-8').'
      '; + } + + return "\n$th:\n".$td."\n"; + } + + /** + * Create a HTML h1 tag + * + * @param string $title Text to be in the h1 + * @param int $level Error level + * @return string + */ + protected function addTitle($title, $level) + { + $title = htmlspecialchars($title, ENT_NOQUOTES, 'UTF-8'); + + return '

      '.$title.'

      '; + } + + /** + * Formats a log record. + * + * @param array $record A record to format + * @return mixed The formatted record + */ + public function format(array $record) + { + $output = $this->addTitle($record['level_name'], $record['level']); + $output .= ''; + + $output .= $this->addRow('Message', (string) $record['message']); + $output .= $this->addRow('Time', $record['datetime']->format($this->dateFormat)); + $output .= $this->addRow('Channel', $record['channel']); + if ($record['context']) { + $embeddedTable = '
      '; + foreach ($record['context'] as $key => $value) { + $embeddedTable .= $this->addRow($key, $this->convertToString($value)); + } + $embeddedTable .= '
      '; + $output .= $this->addRow('Context', $embeddedTable, false); + } + if ($record['extra']) { + $embeddedTable = ''; + foreach ($record['extra'] as $key => $value) { + $embeddedTable .= $this->addRow($key, $this->convertToString($value)); + } + $embeddedTable .= '
      '; + $output .= $this->addRow('Extra', $embeddedTable, false); + } + + return $output.''; + } + + /** + * Formats a set of log records. + * + * @param array $records A set of records to format + * @return mixed The formatted set of records + */ + public function formatBatch(array $records) + { + $message = ''; + foreach ($records as $record) { + $message .= $this->format($record); + } + + return $message; + } + + protected function convertToString($data) + { + if (null === $data || is_scalar($data)) { + return (string) $data; + } + + $data = $this->normalize($data); + if (version_compare(PHP_VERSION, '5.4.0', '>=')) { + return Utils::jsonEncode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE, true); + } + + return str_replace('\\/', '/', Utils::jsonEncode($data, null, true)); + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Formatter/JsonFormatter.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Formatter/JsonFormatter.php new file mode 100644 index 0000000..86966b0 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Formatter/JsonFormatter.php @@ -0,0 +1,212 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Formatter; + +use Exception; +use Monolog\Utils; +use Throwable; + +/** + * Encodes whatever record data is passed to it as json + * + * This can be useful to log to databases or remote APIs + * + * @author Jordi Boggiano + */ +class JsonFormatter extends NormalizerFormatter +{ + const BATCH_MODE_JSON = 1; + const BATCH_MODE_NEWLINES = 2; + + protected $batchMode; + protected $appendNewline; + + /** + * @var bool + */ + protected $includeStacktraces = false; + + /** + * @param int $batchMode + * @param bool $appendNewline + */ + public function __construct($batchMode = self::BATCH_MODE_JSON, $appendNewline = true) + { + $this->batchMode = $batchMode; + $this->appendNewline = $appendNewline; + } + + /** + * The batch mode option configures the formatting style for + * multiple records. By default, multiple records will be + * formatted as a JSON-encoded array. However, for + * compatibility with some API endpoints, alternative styles + * are available. + * + * @return int + */ + public function getBatchMode() + { + return $this->batchMode; + } + + /** + * True if newlines are appended to every formatted record + * + * @return bool + */ + public function isAppendingNewlines() + { + return $this->appendNewline; + } + + /** + * {@inheritdoc} + */ + public function format(array $record) + { + return $this->toJson($this->normalize($record), true) . ($this->appendNewline ? "\n" : ''); + } + + /** + * {@inheritdoc} + */ + public function formatBatch(array $records) + { + switch ($this->batchMode) { + case static::BATCH_MODE_NEWLINES: + return $this->formatBatchNewlines($records); + + case static::BATCH_MODE_JSON: + default: + return $this->formatBatchJson($records); + } + } + + /** + * @param bool $include + */ + public function includeStacktraces($include = true) + { + $this->includeStacktraces = $include; + } + + /** + * Return a JSON-encoded array of records. + * + * @param array $records + * @return string + */ + protected function formatBatchJson(array $records) + { + return $this->toJson($this->normalize($records), true); + } + + /** + * Use new lines to separate records instead of a + * JSON-encoded array. + * + * @param array $records + * @return string + */ + protected function formatBatchNewlines(array $records) + { + $instance = $this; + + $oldNewline = $this->appendNewline; + $this->appendNewline = false; + array_walk($records, function (&$value, $key) use ($instance) { + $value = $instance->format($value); + }); + $this->appendNewline = $oldNewline; + + return implode("\n", $records); + } + + /** + * Normalizes given $data. + * + * @param mixed $data + * + * @return mixed + */ + protected function normalize($data, $depth = 0) + { + if ($depth > 9) { + return 'Over 9 levels deep, aborting normalization'; + } + + if (is_array($data)) { + $normalized = array(); + + $count = 1; + foreach ($data as $key => $value) { + if ($count++ > 1000) { + $normalized['...'] = 'Over 1000 items ('.count($data).' total), aborting normalization'; + break; + } + + $normalized[$key] = $this->normalize($value, $depth+1); + } + + return $normalized; + } + + if ($data instanceof Exception || $data instanceof Throwable) { + return $this->normalizeException($data); + } + + if (is_resource($data)) { + return parent::normalize($data); + } + + return $data; + } + + /** + * Normalizes given exception with or without its own stack trace based on + * `includeStacktraces` property. + * + * @param Exception|Throwable $e + * + * @return array + */ + protected function normalizeException($e) + { + // TODO 2.0 only check for Throwable + if (!$e instanceof Exception && !$e instanceof Throwable) { + throw new \InvalidArgumentException('Exception/Throwable expected, got '.gettype($e).' / '.Utils::getClass($e)); + } + + $data = array( + 'class' => Utils::getClass($e), + 'message' => $e->getMessage(), + 'code' => (int) $e->getCode(), + 'file' => $e->getFile().':'.$e->getLine(), + ); + + if ($this->includeStacktraces) { + $trace = $e->getTrace(); + foreach ($trace as $frame) { + if (isset($frame['file'])) { + $data['trace'][] = $frame['file'].':'.$frame['line']; + } + } + } + + if ($previous = $e->getPrevious()) { + $data['previous'] = $this->normalizeException($previous); + } + + return $data; + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Formatter/LineFormatter.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Formatter/LineFormatter.php new file mode 100644 index 0000000..acc1fd3 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Formatter/LineFormatter.php @@ -0,0 +1,181 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Formatter; + +use Monolog\Utils; + +/** + * Formats incoming records into a one-line string + * + * This is especially useful for logging to files + * + * @author Jordi Boggiano + * @author Christophe Coevoet + */ +class LineFormatter extends NormalizerFormatter +{ + const SIMPLE_FORMAT = "[%datetime%] %channel%.%level_name%: %message% %context% %extra%\n"; + + protected $format; + protected $allowInlineLineBreaks; + protected $ignoreEmptyContextAndExtra; + protected $includeStacktraces; + + /** + * @param string $format The format of the message + * @param string $dateFormat The format of the timestamp: one supported by DateTime::format + * @param bool $allowInlineLineBreaks Whether to allow inline line breaks in log entries + * @param bool $ignoreEmptyContextAndExtra + */ + public function __construct($format = null, $dateFormat = null, $allowInlineLineBreaks = false, $ignoreEmptyContextAndExtra = false) + { + $this->format = $format ?: static::SIMPLE_FORMAT; + $this->allowInlineLineBreaks = $allowInlineLineBreaks; + $this->ignoreEmptyContextAndExtra = $ignoreEmptyContextAndExtra; + parent::__construct($dateFormat); + } + + public function includeStacktraces($include = true) + { + $this->includeStacktraces = $include; + if ($this->includeStacktraces) { + $this->allowInlineLineBreaks = true; + } + } + + public function allowInlineLineBreaks($allow = true) + { + $this->allowInlineLineBreaks = $allow; + } + + public function ignoreEmptyContextAndExtra($ignore = true) + { + $this->ignoreEmptyContextAndExtra = $ignore; + } + + /** + * {@inheritdoc} + */ + public function format(array $record) + { + $vars = parent::format($record); + + $output = $this->format; + + foreach ($vars['extra'] as $var => $val) { + if (false !== strpos($output, '%extra.'.$var.'%')) { + $output = str_replace('%extra.'.$var.'%', $this->stringify($val), $output); + unset($vars['extra'][$var]); + } + } + + + foreach ($vars['context'] as $var => $val) { + if (false !== strpos($output, '%context.'.$var.'%')) { + $output = str_replace('%context.'.$var.'%', $this->stringify($val), $output); + unset($vars['context'][$var]); + } + } + + if ($this->ignoreEmptyContextAndExtra) { + if (empty($vars['context'])) { + unset($vars['context']); + $output = str_replace('%context%', '', $output); + } + + if (empty($vars['extra'])) { + unset($vars['extra']); + $output = str_replace('%extra%', '', $output); + } + } + + foreach ($vars as $var => $val) { + if (false !== strpos($output, '%'.$var.'%')) { + $output = str_replace('%'.$var.'%', $this->stringify($val), $output); + } + } + + // remove leftover %extra.xxx% and %context.xxx% if any + if (false !== strpos($output, '%')) { + $output = preg_replace('/%(?:extra|context)\..+?%/', '', $output); + } + + return $output; + } + + public function formatBatch(array $records) + { + $message = ''; + foreach ($records as $record) { + $message .= $this->format($record); + } + + return $message; + } + + public function stringify($value) + { + return $this->replaceNewlines($this->convertToString($value)); + } + + protected function normalizeException($e) + { + // TODO 2.0 only check for Throwable + if (!$e instanceof \Exception && !$e instanceof \Throwable) { + throw new \InvalidArgumentException('Exception/Throwable expected, got '.gettype($e).' / '.Utils::getClass($e)); + } + + $previousText = ''; + if ($previous = $e->getPrevious()) { + do { + $previousText .= ', '.Utils::getClass($previous).'(code: '.$previous->getCode().'): '.$previous->getMessage().' at '.$previous->getFile().':'.$previous->getLine(); + } while ($previous = $previous->getPrevious()); + } + + $str = '[object] ('.Utils::getClass($e).'(code: '.$e->getCode().'): '.$e->getMessage().' at '.$e->getFile().':'.$e->getLine().$previousText.')'; + if ($this->includeStacktraces) { + $str .= "\n[stacktrace]\n".$e->getTraceAsString()."\n"; + } + + return $str; + } + + protected function convertToString($data) + { + if (null === $data || is_bool($data)) { + return var_export($data, true); + } + + if (is_scalar($data)) { + return (string) $data; + } + + if (version_compare(PHP_VERSION, '5.4.0', '>=')) { + return $this->toJson($data, true); + } + + return str_replace('\\/', '/', $this->toJson($data, true)); + } + + protected function replaceNewlines($str) + { + if ($this->allowInlineLineBreaks) { + if (0 === strpos($str, '{')) { + return str_replace(array('\r', '\n'), array("\r", "\n"), $str); + } + + return $str; + } + + return str_replace(array("\r\n", "\r", "\n"), ' ', $str); + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Formatter/LogglyFormatter.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Formatter/LogglyFormatter.php new file mode 100644 index 0000000..401859b --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Formatter/LogglyFormatter.php @@ -0,0 +1,47 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Formatter; + +/** + * Encodes message information into JSON in a format compatible with Loggly. + * + * @author Adam Pancutt + */ +class LogglyFormatter extends JsonFormatter +{ + /** + * Overrides the default batch mode to new lines for compatibility with the + * Loggly bulk API. + * + * @param int $batchMode + */ + public function __construct($batchMode = self::BATCH_MODE_NEWLINES, $appendNewline = false) + { + parent::__construct($batchMode, $appendNewline); + } + + /** + * Appends the 'timestamp' parameter for indexing by Loggly. + * + * @see https://www.loggly.com/docs/automated-parsing/#json + * @see \Monolog\Formatter\JsonFormatter::format() + */ + public function format(array $record) + { + if (isset($record["datetime"]) && ($record["datetime"] instanceof \DateTime)) { + $record["timestamp"] = $record["datetime"]->format("Y-m-d\TH:i:s.uO"); + // TODO 2.0 unset the 'datetime' parameter, retained for BC + } + + return parent::format($record); + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Formatter/LogstashFormatter.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Formatter/LogstashFormatter.php new file mode 100644 index 0000000..8f83bec --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Formatter/LogstashFormatter.php @@ -0,0 +1,166 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Formatter; + +/** + * Serializes a log message to Logstash Event Format + * + * @see http://logstash.net/ + * @see https://github.com/logstash/logstash/blob/master/lib/logstash/event.rb + * + * @author Tim Mower + */ +class LogstashFormatter extends NormalizerFormatter +{ + const V0 = 0; + const V1 = 1; + + /** + * @var string the name of the system for the Logstash log message, used to fill the @source field + */ + protected $systemName; + + /** + * @var string an application name for the Logstash log message, used to fill the @type field + */ + protected $applicationName; + + /** + * @var string a prefix for 'extra' fields from the Monolog record (optional) + */ + protected $extraPrefix; + + /** + * @var string a prefix for 'context' fields from the Monolog record (optional) + */ + protected $contextPrefix; + + /** + * @var int logstash format version to use + */ + protected $version; + + /** + * @param string $applicationName the application that sends the data, used as the "type" field of logstash + * @param string $systemName the system/machine name, used as the "source" field of logstash, defaults to the hostname of the machine + * @param string $extraPrefix prefix for extra keys inside logstash "fields" + * @param string $contextPrefix prefix for context keys inside logstash "fields", defaults to ctxt_ + * @param int $version the logstash format version to use, defaults to 0 + */ + public function __construct($applicationName, $systemName = null, $extraPrefix = null, $contextPrefix = 'ctxt_', $version = self::V0) + { + // logstash requires a ISO 8601 format date with optional millisecond precision. + parent::__construct('Y-m-d\TH:i:s.uP'); + + $this->systemName = $systemName ?: gethostname(); + $this->applicationName = $applicationName; + $this->extraPrefix = $extraPrefix; + $this->contextPrefix = $contextPrefix; + $this->version = $version; + } + + /** + * {@inheritdoc} + */ + public function format(array $record) + { + $record = parent::format($record); + + if ($this->version === self::V1) { + $message = $this->formatV1($record); + } else { + $message = $this->formatV0($record); + } + + return $this->toJson($message) . "\n"; + } + + protected function formatV0(array $record) + { + if (empty($record['datetime'])) { + $record['datetime'] = gmdate('c'); + } + $message = array( + '@timestamp' => $record['datetime'], + '@source' => $this->systemName, + '@fields' => array(), + ); + if (isset($record['message'])) { + $message['@message'] = $record['message']; + } + if (isset($record['channel'])) { + $message['@tags'] = array($record['channel']); + $message['@fields']['channel'] = $record['channel']; + } + if (isset($record['level'])) { + $message['@fields']['level'] = $record['level']; + } + if ($this->applicationName) { + $message['@type'] = $this->applicationName; + } + if (isset($record['extra']['server'])) { + $message['@source_host'] = $record['extra']['server']; + } + if (isset($record['extra']['url'])) { + $message['@source_path'] = $record['extra']['url']; + } + if (!empty($record['extra'])) { + foreach ($record['extra'] as $key => $val) { + $message['@fields'][$this->extraPrefix . $key] = $val; + } + } + if (!empty($record['context'])) { + foreach ($record['context'] as $key => $val) { + $message['@fields'][$this->contextPrefix . $key] = $val; + } + } + + return $message; + } + + protected function formatV1(array $record) + { + if (empty($record['datetime'])) { + $record['datetime'] = gmdate('c'); + } + $message = array( + '@timestamp' => $record['datetime'], + '@version' => 1, + 'host' => $this->systemName, + ); + if (isset($record['message'])) { + $message['message'] = $record['message']; + } + if (isset($record['channel'])) { + $message['type'] = $record['channel']; + $message['channel'] = $record['channel']; + } + if (isset($record['level_name'])) { + $message['level'] = $record['level_name']; + } + if ($this->applicationName) { + $message['type'] = $this->applicationName; + } + if (!empty($record['extra'])) { + foreach ($record['extra'] as $key => $val) { + $message[$this->extraPrefix . $key] = $val; + } + } + if (!empty($record['context'])) { + foreach ($record['context'] as $key => $val) { + $message[$this->contextPrefix . $key] = $val; + } + } + + return $message; + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Formatter/MongoDBFormatter.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Formatter/MongoDBFormatter.php new file mode 100644 index 0000000..bd9e4c0 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Formatter/MongoDBFormatter.php @@ -0,0 +1,107 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Formatter; + +use Monolog\Utils; + +/** + * Formats a record for use with the MongoDBHandler. + * + * @author Florian Plattner + */ +class MongoDBFormatter implements FormatterInterface +{ + private $exceptionTraceAsString; + private $maxNestingLevel; + + /** + * @param int $maxNestingLevel 0 means infinite nesting, the $record itself is level 1, $record['context'] is 2 + * @param bool $exceptionTraceAsString set to false to log exception traces as a sub documents instead of strings + */ + public function __construct($maxNestingLevel = 3, $exceptionTraceAsString = true) + { + $this->maxNestingLevel = max($maxNestingLevel, 0); + $this->exceptionTraceAsString = (bool) $exceptionTraceAsString; + } + + /** + * {@inheritDoc} + */ + public function format(array $record) + { + return $this->formatArray($record); + } + + /** + * {@inheritDoc} + */ + public function formatBatch(array $records) + { + foreach ($records as $key => $record) { + $records[$key] = $this->format($record); + } + + return $records; + } + + protected function formatArray(array $record, $nestingLevel = 0) + { + if ($this->maxNestingLevel == 0 || $nestingLevel <= $this->maxNestingLevel) { + foreach ($record as $name => $value) { + if ($value instanceof \DateTime) { + $record[$name] = $this->formatDate($value, $nestingLevel + 1); + } elseif ($value instanceof \Exception) { + $record[$name] = $this->formatException($value, $nestingLevel + 1); + } elseif (is_array($value)) { + $record[$name] = $this->formatArray($value, $nestingLevel + 1); + } elseif (is_object($value)) { + $record[$name] = $this->formatObject($value, $nestingLevel + 1); + } + } + } else { + $record = '[...]'; + } + + return $record; + } + + protected function formatObject($value, $nestingLevel) + { + $objectVars = get_object_vars($value); + $objectVars['class'] = Utils::getClass($value); + + return $this->formatArray($objectVars, $nestingLevel); + } + + protected function formatException(\Exception $exception, $nestingLevel) + { + $formattedException = array( + 'class' => Utils::getClass($exception), + 'message' => $exception->getMessage(), + 'code' => (int) $exception->getCode(), + 'file' => $exception->getFile() . ':' . $exception->getLine(), + ); + + if ($this->exceptionTraceAsString === true) { + $formattedException['trace'] = $exception->getTraceAsString(); + } else { + $formattedException['trace'] = $exception->getTrace(); + } + + return $this->formatArray($formattedException, $nestingLevel); + } + + protected function formatDate(\DateTime $value, $nestingLevel) + { + return new \MongoDate($value->getTimestamp()); + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Formatter/NormalizerFormatter.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Formatter/NormalizerFormatter.php new file mode 100644 index 0000000..3a01f2c --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Formatter/NormalizerFormatter.php @@ -0,0 +1,180 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Formatter; + +use Exception; +use Monolog\Utils; + +/** + * Normalizes incoming records to remove objects/resources so it's easier to dump to various targets + * + * @author Jordi Boggiano + */ +class NormalizerFormatter implements FormatterInterface +{ + const SIMPLE_DATE = "Y-m-d H:i:s"; + + protected $dateFormat; + + /** + * @param string $dateFormat The format of the timestamp: one supported by DateTime::format + */ + public function __construct($dateFormat = null) + { + $this->dateFormat = $dateFormat ?: static::SIMPLE_DATE; + if (!function_exists('json_encode')) { + throw new \RuntimeException('PHP\'s json extension is required to use Monolog\'s NormalizerFormatter'); + } + } + + /** + * {@inheritdoc} + */ + public function format(array $record) + { + return $this->normalize($record); + } + + /** + * {@inheritdoc} + */ + public function formatBatch(array $records) + { + foreach ($records as $key => $record) { + $records[$key] = $this->format($record); + } + + return $records; + } + + protected function normalize($data, $depth = 0) + { + if ($depth > 9) { + return 'Over 9 levels deep, aborting normalization'; + } + + if (null === $data || is_scalar($data)) { + if (is_float($data)) { + if (is_infinite($data)) { + return ($data > 0 ? '' : '-') . 'INF'; + } + if (is_nan($data)) { + return 'NaN'; + } + } + + return $data; + } + + if (is_array($data)) { + $normalized = array(); + + $count = 1; + foreach ($data as $key => $value) { + if ($count++ > 1000) { + $normalized['...'] = 'Over 1000 items ('.count($data).' total), aborting normalization'; + break; + } + + $normalized[$key] = $this->normalize($value, $depth+1); + } + + return $normalized; + } + + if ($data instanceof \DateTime) { + return $data->format($this->dateFormat); + } + + if (is_object($data)) { + // TODO 2.0 only check for Throwable + if ($data instanceof Exception || (PHP_VERSION_ID > 70000 && $data instanceof \Throwable)) { + return $this->normalizeException($data); + } + + // non-serializable objects that implement __toString stringified + if (method_exists($data, '__toString') && !$data instanceof \JsonSerializable) { + $value = $data->__toString(); + } else { + // the rest is json-serialized in some way + $value = $this->toJson($data, true); + } + + return sprintf("[object] (%s: %s)", Utils::getClass($data), $value); + } + + if (is_resource($data)) { + return sprintf('[resource] (%s)', get_resource_type($data)); + } + + return '[unknown('.gettype($data).')]'; + } + + protected function normalizeException($e) + { + // TODO 2.0 only check for Throwable + if (!$e instanceof Exception && !$e instanceof \Throwable) { + throw new \InvalidArgumentException('Exception/Throwable expected, got '.gettype($e).' / '.Utils::getClass($e)); + } + + $data = array( + 'class' => Utils::getClass($e), + 'message' => $e->getMessage(), + 'code' => (int) $e->getCode(), + 'file' => $e->getFile().':'.$e->getLine(), + ); + + if ($e instanceof \SoapFault) { + if (isset($e->faultcode)) { + $data['faultcode'] = $e->faultcode; + } + + if (isset($e->faultactor)) { + $data['faultactor'] = $e->faultactor; + } + + if (isset($e->detail)) { + if (is_string($e->detail)) { + $data['detail'] = $e->detail; + } elseif (is_object($e->detail) || is_array($e->detail)) { + $data['detail'] = $this->toJson($e->detail, true); + } + } + } + + $trace = $e->getTrace(); + foreach ($trace as $frame) { + if (isset($frame['file'])) { + $data['trace'][] = $frame['file'].':'.$frame['line']; + } + } + + if ($previous = $e->getPrevious()) { + $data['previous'] = $this->normalizeException($previous); + } + + return $data; + } + + /** + * Return the JSON representation of a value + * + * @param mixed $data + * @param bool $ignoreErrors + * @throws \RuntimeException if encoding fails and errors are not ignored + * @return string + */ + protected function toJson($data, $ignoreErrors = false) + { + return Utils::jsonEncode($data, null, $ignoreErrors); + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Formatter/ScalarFormatter.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Formatter/ScalarFormatter.php new file mode 100644 index 0000000..5d345d5 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Formatter/ScalarFormatter.php @@ -0,0 +1,48 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Formatter; + +/** + * Formats data into an associative array of scalar values. + * Objects and arrays will be JSON encoded. + * + * @author Andrew Lawson + */ +class ScalarFormatter extends NormalizerFormatter +{ + /** + * {@inheritdoc} + */ + public function format(array $record) + { + foreach ($record as $key => $value) { + $record[$key] = $this->normalizeValue($value); + } + + return $record; + } + + /** + * @param mixed $value + * @return mixed + */ + protected function normalizeValue($value) + { + $normalized = $this->normalize($value); + + if (is_array($normalized) || is_object($normalized)) { + return $this->toJson($normalized, true); + } + + return $normalized; + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Formatter/WildfireFormatter.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Formatter/WildfireFormatter.php new file mode 100644 index 0000000..65dba99 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Formatter/WildfireFormatter.php @@ -0,0 +1,113 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Formatter; + +use Monolog\Logger; + +/** + * Serializes a log message according to Wildfire's header requirements + * + * @author Eric Clemmons (@ericclemmons) + * @author Christophe Coevoet + * @author Kirill chEbba Chebunin + */ +class WildfireFormatter extends NormalizerFormatter +{ + const TABLE = 'table'; + + /** + * Translates Monolog log levels to Wildfire levels. + */ + private $logLevels = array( + Logger::DEBUG => 'LOG', + Logger::INFO => 'INFO', + Logger::NOTICE => 'INFO', + Logger::WARNING => 'WARN', + Logger::ERROR => 'ERROR', + Logger::CRITICAL => 'ERROR', + Logger::ALERT => 'ERROR', + Logger::EMERGENCY => 'ERROR', + ); + + /** + * {@inheritdoc} + */ + public function format(array $record) + { + // Retrieve the line and file if set and remove them from the formatted extra + $file = $line = ''; + if (isset($record['extra']['file'])) { + $file = $record['extra']['file']; + unset($record['extra']['file']); + } + if (isset($record['extra']['line'])) { + $line = $record['extra']['line']; + unset($record['extra']['line']); + } + + $record = $this->normalize($record); + $message = array('message' => $record['message']); + $handleError = false; + if ($record['context']) { + $message['context'] = $record['context']; + $handleError = true; + } + if ($record['extra']) { + $message['extra'] = $record['extra']; + $handleError = true; + } + if (count($message) === 1) { + $message = reset($message); + } + + if (isset($record['context'][self::TABLE])) { + $type = 'TABLE'; + $label = $record['channel'] .': '. $record['message']; + $message = $record['context'][self::TABLE]; + } else { + $type = $this->logLevels[$record['level']]; + $label = $record['channel']; + } + + // Create JSON object describing the appearance of the message in the console + $json = $this->toJson(array( + array( + 'Type' => $type, + 'File' => $file, + 'Line' => $line, + 'Label' => $label, + ), + $message, + ), $handleError); + + // The message itself is a serialization of the above JSON object + it's length + return sprintf( + '%s|%s|', + strlen($json), + $json + ); + } + + public function formatBatch(array $records) + { + throw new \BadMethodCallException('Batch formatting does not make sense for the WildfireFormatter'); + } + + protected function normalize($data, $depth = 0) + { + if (is_object($data) && !$data instanceof \DateTime) { + return $data; + } + + return parent::normalize($data, $depth); + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/AbstractHandler.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/AbstractHandler.php new file mode 100644 index 0000000..cdd9f7d --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/AbstractHandler.php @@ -0,0 +1,196 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Handler; + +use Monolog\Formatter\FormatterInterface; +use Monolog\Formatter\LineFormatter; +use Monolog\Logger; +use Monolog\ResettableInterface; + +/** + * Base Handler class providing the Handler structure + * + * @author Jordi Boggiano + */ +abstract class AbstractHandler implements HandlerInterface, ResettableInterface +{ + protected $level = Logger::DEBUG; + protected $bubble = true; + + /** + * @var FormatterInterface + */ + protected $formatter; + protected $processors = array(); + + /** + * @param int|string $level The minimum logging level at which this handler will be triggered + * @param bool $bubble Whether the messages that are handled can bubble up the stack or not + */ + public function __construct($level = Logger::DEBUG, $bubble = true) + { + $this->setLevel($level); + $this->bubble = $bubble; + } + + /** + * {@inheritdoc} + */ + public function isHandling(array $record) + { + return $record['level'] >= $this->level; + } + + /** + * {@inheritdoc} + */ + public function handleBatch(array $records) + { + foreach ($records as $record) { + $this->handle($record); + } + } + + /** + * Closes the handler. + * + * This will be called automatically when the object is destroyed + */ + public function close() + { + } + + /** + * {@inheritdoc} + */ + public function pushProcessor($callback) + { + if (!is_callable($callback)) { + throw new \InvalidArgumentException('Processors must be valid callables (callback or object with an __invoke method), '.var_export($callback, true).' given'); + } + array_unshift($this->processors, $callback); + + return $this; + } + + /** + * {@inheritdoc} + */ + public function popProcessor() + { + if (!$this->processors) { + throw new \LogicException('You tried to pop from an empty processor stack.'); + } + + return array_shift($this->processors); + } + + /** + * {@inheritdoc} + */ + public function setFormatter(FormatterInterface $formatter) + { + $this->formatter = $formatter; + + return $this; + } + + /** + * {@inheritdoc} + */ + public function getFormatter() + { + if (!$this->formatter) { + $this->formatter = $this->getDefaultFormatter(); + } + + return $this->formatter; + } + + /** + * Sets minimum logging level at which this handler will be triggered. + * + * @param int|string $level Level or level name + * @return self + */ + public function setLevel($level) + { + $this->level = Logger::toMonologLevel($level); + + return $this; + } + + /** + * Gets minimum logging level at which this handler will be triggered. + * + * @return int + */ + public function getLevel() + { + return $this->level; + } + + /** + * Sets the bubbling behavior. + * + * @param bool $bubble true means that this handler allows bubbling. + * false means that bubbling is not permitted. + * @return self + */ + public function setBubble($bubble) + { + $this->bubble = $bubble; + + return $this; + } + + /** + * Gets the bubbling behavior. + * + * @return bool true means that this handler allows bubbling. + * false means that bubbling is not permitted. + */ + public function getBubble() + { + return $this->bubble; + } + + public function __destruct() + { + try { + $this->close(); + } catch (\Exception $e) { + // do nothing + } catch (\Throwable $e) { + // do nothing + } + } + + public function reset() + { + foreach ($this->processors as $processor) { + if ($processor instanceof ResettableInterface) { + $processor->reset(); + } + } + } + + /** + * Gets the default formatter. + * + * @return FormatterInterface + */ + protected function getDefaultFormatter() + { + return new LineFormatter(); + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php new file mode 100644 index 0000000..e1e8953 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php @@ -0,0 +1,68 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Handler; + +use Monolog\ResettableInterface; + +/** + * Base Handler class providing the Handler structure + * + * Classes extending it should (in most cases) only implement write($record) + * + * @author Jordi Boggiano + * @author Christophe Coevoet + */ +abstract class AbstractProcessingHandler extends AbstractHandler +{ + /** + * {@inheritdoc} + */ + public function handle(array $record) + { + if (!$this->isHandling($record)) { + return false; + } + + $record = $this->processRecord($record); + + $record['formatted'] = $this->getFormatter()->format($record); + + $this->write($record); + + return false === $this->bubble; + } + + /** + * Writes the record down to the log of the implementing handler + * + * @param array $record + * @return void + */ + abstract protected function write(array $record); + + /** + * Processes a record. + * + * @param array $record + * @return array + */ + protected function processRecord(array $record) + { + if ($this->processors) { + foreach ($this->processors as $processor) { + $record = call_user_func($processor, $record); + } + } + + return $record; + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/AbstractSyslogHandler.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/AbstractSyslogHandler.php new file mode 100644 index 0000000..8c76aca --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/AbstractSyslogHandler.php @@ -0,0 +1,101 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Handler; + +use Monolog\Logger; +use Monolog\Formatter\LineFormatter; + +/** + * Common syslog functionality + */ +abstract class AbstractSyslogHandler extends AbstractProcessingHandler +{ + protected $facility; + + /** + * Translates Monolog log levels to syslog log priorities. + */ + protected $logLevels = array( + Logger::DEBUG => LOG_DEBUG, + Logger::INFO => LOG_INFO, + Logger::NOTICE => LOG_NOTICE, + Logger::WARNING => LOG_WARNING, + Logger::ERROR => LOG_ERR, + Logger::CRITICAL => LOG_CRIT, + Logger::ALERT => LOG_ALERT, + Logger::EMERGENCY => LOG_EMERG, + ); + + /** + * List of valid log facility names. + */ + protected $facilities = array( + 'auth' => LOG_AUTH, + 'authpriv' => LOG_AUTHPRIV, + 'cron' => LOG_CRON, + 'daemon' => LOG_DAEMON, + 'kern' => LOG_KERN, + 'lpr' => LOG_LPR, + 'mail' => LOG_MAIL, + 'news' => LOG_NEWS, + 'syslog' => LOG_SYSLOG, + 'user' => LOG_USER, + 'uucp' => LOG_UUCP, + ); + + /** + * @param mixed $facility + * @param int $level The minimum logging level at which this handler will be triggered + * @param bool $bubble Whether the messages that are handled can bubble up the stack or not + */ + public function __construct($facility = LOG_USER, $level = Logger::DEBUG, $bubble = true) + { + parent::__construct($level, $bubble); + + if (!defined('PHP_WINDOWS_VERSION_BUILD')) { + $this->facilities['local0'] = LOG_LOCAL0; + $this->facilities['local1'] = LOG_LOCAL1; + $this->facilities['local2'] = LOG_LOCAL2; + $this->facilities['local3'] = LOG_LOCAL3; + $this->facilities['local4'] = LOG_LOCAL4; + $this->facilities['local5'] = LOG_LOCAL5; + $this->facilities['local6'] = LOG_LOCAL6; + $this->facilities['local7'] = LOG_LOCAL7; + } else { + $this->facilities['local0'] = 128; // LOG_LOCAL0 + $this->facilities['local1'] = 136; // LOG_LOCAL1 + $this->facilities['local2'] = 144; // LOG_LOCAL2 + $this->facilities['local3'] = 152; // LOG_LOCAL3 + $this->facilities['local4'] = 160; // LOG_LOCAL4 + $this->facilities['local5'] = 168; // LOG_LOCAL5 + $this->facilities['local6'] = 176; // LOG_LOCAL6 + $this->facilities['local7'] = 184; // LOG_LOCAL7 + } + + // convert textual description of facility to syslog constant + if (array_key_exists(strtolower($facility), $this->facilities)) { + $facility = $this->facilities[strtolower($facility)]; + } elseif (!in_array($facility, array_values($this->facilities), true)) { + throw new \UnexpectedValueException('Unknown facility value "'.$facility.'" given'); + } + + $this->facility = $facility; + } + + /** + * {@inheritdoc} + */ + protected function getDefaultFormatter() + { + return new LineFormatter('%channel%.%level_name%: %message% %context% %extra%'); + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/AmqpHandler.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/AmqpHandler.php new file mode 100644 index 0000000..e5a46bc --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/AmqpHandler.php @@ -0,0 +1,148 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Handler; + +use Monolog\Logger; +use Monolog\Formatter\JsonFormatter; +use PhpAmqpLib\Message\AMQPMessage; +use PhpAmqpLib\Channel\AMQPChannel; +use AMQPExchange; + +class AmqpHandler extends AbstractProcessingHandler +{ + /** + * @var AMQPExchange|AMQPChannel $exchange + */ + protected $exchange; + + /** + * @var string + */ + protected $exchangeName; + + /** + * @param AMQPExchange|AMQPChannel $exchange AMQPExchange (php AMQP ext) or PHP AMQP lib channel, ready for use + * @param string $exchangeName + * @param int $level + * @param bool $bubble Whether the messages that are handled can bubble up the stack or not + */ + public function __construct($exchange, $exchangeName = 'log', $level = Logger::DEBUG, $bubble = true) + { + if ($exchange instanceof AMQPExchange) { + $exchange->setName($exchangeName); + } elseif ($exchange instanceof AMQPChannel) { + $this->exchangeName = $exchangeName; + } else { + throw new \InvalidArgumentException('PhpAmqpLib\Channel\AMQPChannel or AMQPExchange instance required'); + } + $this->exchange = $exchange; + + parent::__construct($level, $bubble); + } + + /** + * {@inheritDoc} + */ + protected function write(array $record) + { + $data = $record["formatted"]; + $routingKey = $this->getRoutingKey($record); + + if ($this->exchange instanceof AMQPExchange) { + $this->exchange->publish( + $data, + $routingKey, + 0, + array( + 'delivery_mode' => 2, + 'content_type' => 'application/json', + ) + ); + } else { + $this->exchange->basic_publish( + $this->createAmqpMessage($data), + $this->exchangeName, + $routingKey + ); + } + } + + /** + * {@inheritDoc} + */ + public function handleBatch(array $records) + { + if ($this->exchange instanceof AMQPExchange) { + parent::handleBatch($records); + + return; + } + + foreach ($records as $record) { + if (!$this->isHandling($record)) { + continue; + } + + $record = $this->processRecord($record); + $data = $this->getFormatter()->format($record); + + $this->exchange->batch_basic_publish( + $this->createAmqpMessage($data), + $this->exchangeName, + $this->getRoutingKey($record) + ); + } + + $this->exchange->publish_batch(); + } + + /** + * Gets the routing key for the AMQP exchange + * + * @param array $record + * @return string + */ + protected function getRoutingKey(array $record) + { + $routingKey = sprintf( + '%s.%s', + // TODO 2.0 remove substr call + substr($record['level_name'], 0, 4), + $record['channel'] + ); + + return strtolower($routingKey); + } + + /** + * @param string $data + * @return AMQPMessage + */ + private function createAmqpMessage($data) + { + return new AMQPMessage( + (string) $data, + array( + 'delivery_mode' => 2, + 'content_type' => 'application/json', + ) + ); + } + + /** + * {@inheritDoc} + */ + protected function getDefaultFormatter() + { + return new JsonFormatter(JsonFormatter::BATCH_MODE_JSON, false); + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/BrowserConsoleHandler.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/BrowserConsoleHandler.php new file mode 100644 index 0000000..68feb48 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/BrowserConsoleHandler.php @@ -0,0 +1,241 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Handler; + +use Monolog\Formatter\LineFormatter; + +/** + * Handler sending logs to browser's javascript console with no browser extension required + * + * @author Olivier Poitrey + */ +class BrowserConsoleHandler extends AbstractProcessingHandler +{ + protected static $initialized = false; + protected static $records = array(); + + /** + * {@inheritDoc} + * + * Formatted output may contain some formatting markers to be transferred to `console.log` using the %c format. + * + * Example of formatted string: + * + * You can do [[blue text]]{color: blue} or [[green background]]{background-color: green; color: white} + */ + protected function getDefaultFormatter() + { + return new LineFormatter('[[%channel%]]{macro: autolabel} [[%level_name%]]{font-weight: bold} %message%'); + } + + /** + * {@inheritDoc} + */ + protected function write(array $record) + { + // Accumulate records + static::$records[] = $record; + + // Register shutdown handler if not already done + if (!static::$initialized) { + static::$initialized = true; + $this->registerShutdownFunction(); + } + } + + /** + * Convert records to javascript console commands and send it to the browser. + * This method is automatically called on PHP shutdown if output is HTML or Javascript. + */ + public static function send() + { + $format = static::getResponseFormat(); + if ($format === 'unknown') { + return; + } + + if (count(static::$records)) { + if ($format === 'html') { + static::writeOutput(''); + } elseif ($format === 'js') { + static::writeOutput(static::generateScript()); + } + static::resetStatic(); + } + } + + public function close() + { + self::resetStatic(); + } + + public function reset() + { + self::resetStatic(); + } + + /** + * Forget all logged records + */ + public static function resetStatic() + { + static::$records = array(); + } + + /** + * Wrapper for register_shutdown_function to allow overriding + */ + protected function registerShutdownFunction() + { + if (PHP_SAPI !== 'cli') { + register_shutdown_function(array('Monolog\Handler\BrowserConsoleHandler', 'send')); + } + } + + /** + * Wrapper for echo to allow overriding + * + * @param string $str + */ + protected static function writeOutput($str) + { + echo $str; + } + + /** + * Checks the format of the response + * + * If Content-Type is set to application/javascript or text/javascript -> js + * If Content-Type is set to text/html, or is unset -> html + * If Content-Type is anything else -> unknown + * + * @return string One of 'js', 'html' or 'unknown' + */ + protected static function getResponseFormat() + { + // Check content type + foreach (headers_list() as $header) { + if (stripos($header, 'content-type:') === 0) { + // This handler only works with HTML and javascript outputs + // text/javascript is obsolete in favour of application/javascript, but still used + if (stripos($header, 'application/javascript') !== false || stripos($header, 'text/javascript') !== false) { + return 'js'; + } + if (stripos($header, 'text/html') === false) { + return 'unknown'; + } + break; + } + } + + return 'html'; + } + + private static function generateScript() + { + $script = array(); + foreach (static::$records as $record) { + $context = static::dump('Context', $record['context']); + $extra = static::dump('Extra', $record['extra']); + + if (empty($context) && empty($extra)) { + $script[] = static::call_array('log', static::handleStyles($record['formatted'])); + } else { + $script = array_merge($script, + array(static::call_array('groupCollapsed', static::handleStyles($record['formatted']))), + $context, + $extra, + array(static::call('groupEnd')) + ); + } + } + + return "(function (c) {if (c && c.groupCollapsed) {\n" . implode("\n", $script) . "\n}})(console);"; + } + + private static function handleStyles($formatted) + { + $args = array(); + $format = '%c' . $formatted; + preg_match_all('/\[\[(.*?)\]\]\{([^}]*)\}/s', $format, $matches, PREG_OFFSET_CAPTURE | PREG_SET_ORDER); + + foreach (array_reverse($matches) as $match) { + $args[] = '"font-weight: normal"'; + $args[] = static::quote(static::handleCustomStyles($match[2][0], $match[1][0])); + + $pos = $match[0][1]; + $format = substr($format, 0, $pos) . '%c' . $match[1][0] . '%c' . substr($format, $pos + strlen($match[0][0])); + } + + $args[] = static::quote('font-weight: normal'); + $args[] = static::quote($format); + + return array_reverse($args); + } + + private static function handleCustomStyles($style, $string) + { + static $colors = array('blue', 'green', 'red', 'magenta', 'orange', 'black', 'grey'); + static $labels = array(); + + return preg_replace_callback('/macro\s*:(.*?)(?:;|$)/', function ($m) use ($string, &$colors, &$labels) { + if (trim($m[1]) === 'autolabel') { + // Format the string as a label with consistent auto assigned background color + if (!isset($labels[$string])) { + $labels[$string] = $colors[count($labels) % count($colors)]; + } + $color = $labels[$string]; + + return "background-color: $color; color: white; border-radius: 3px; padding: 0 2px 0 2px"; + } + + return $m[1]; + }, $style); + } + + private static function dump($title, array $dict) + { + $script = array(); + $dict = array_filter($dict); + if (empty($dict)) { + return $script; + } + $script[] = static::call('log', static::quote('%c%s'), static::quote('font-weight: bold'), static::quote($title)); + foreach ($dict as $key => $value) { + $value = json_encode($value); + if (empty($value)) { + $value = static::quote(''); + } + $script[] = static::call('log', static::quote('%s: %o'), static::quote($key), $value); + } + + return $script; + } + + private static function quote($arg) + { + return '"' . addcslashes($arg, "\"\n\\") . '"'; + } + + private static function call() + { + $args = func_get_args(); + $method = array_shift($args); + + return static::call_array($method, $args); + } + + private static function call_array($method, array $args) + { + return 'c.' . $method . '(' . implode(', ', $args) . ');'; + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/BufferHandler.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/BufferHandler.php new file mode 100644 index 0000000..0957e55 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/BufferHandler.php @@ -0,0 +1,148 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Handler; + +use Monolog\Logger; +use Monolog\ResettableInterface; +use Monolog\Formatter\FormatterInterface; + +/** + * Buffers all records until closing the handler and then pass them as batch. + * + * This is useful for a MailHandler to send only one mail per request instead of + * sending one per log message. + * + * @author Christophe Coevoet + */ +class BufferHandler extends AbstractHandler +{ + protected $handler; + protected $bufferSize = 0; + protected $bufferLimit; + protected $flushOnOverflow; + protected $buffer = array(); + protected $initialized = false; + + /** + * @param HandlerInterface $handler Handler. + * @param int $bufferLimit How many entries should be buffered at most, beyond that the oldest items are removed from the buffer. + * @param int $level The minimum logging level at which this handler will be triggered + * @param bool $bubble Whether the messages that are handled can bubble up the stack or not + * @param bool $flushOnOverflow If true, the buffer is flushed when the max size has been reached, by default oldest entries are discarded + */ + public function __construct(HandlerInterface $handler, $bufferLimit = 0, $level = Logger::DEBUG, $bubble = true, $flushOnOverflow = false) + { + parent::__construct($level, $bubble); + $this->handler = $handler; + $this->bufferLimit = (int) $bufferLimit; + $this->flushOnOverflow = $flushOnOverflow; + } + + /** + * {@inheritdoc} + */ + public function handle(array $record) + { + if ($record['level'] < $this->level) { + return false; + } + + if (!$this->initialized) { + // __destructor() doesn't get called on Fatal errors + register_shutdown_function(array($this, 'close')); + $this->initialized = true; + } + + if ($this->bufferLimit > 0 && $this->bufferSize === $this->bufferLimit) { + if ($this->flushOnOverflow) { + $this->flush(); + } else { + array_shift($this->buffer); + $this->bufferSize--; + } + } + + if ($this->processors) { + foreach ($this->processors as $processor) { + $record = call_user_func($processor, $record); + } + } + + $this->buffer[] = $record; + $this->bufferSize++; + + return false === $this->bubble; + } + + public function flush() + { + if ($this->bufferSize === 0) { + return; + } + + $this->handler->handleBatch($this->buffer); + $this->clear(); + } + + public function __destruct() + { + // suppress the parent behavior since we already have register_shutdown_function() + // to call close(), and the reference contained there will prevent this from being + // GC'd until the end of the request + } + + /** + * {@inheritdoc} + */ + public function close() + { + $this->flush(); + } + + /** + * Clears the buffer without flushing any messages down to the wrapped handler. + */ + public function clear() + { + $this->bufferSize = 0; + $this->buffer = array(); + } + + public function reset() + { + $this->flush(); + + parent::reset(); + + if ($this->handler instanceof ResettableInterface) { + $this->handler->reset(); + } + } + + /** + * {@inheritdoc} + */ + public function setFormatter(FormatterInterface $formatter) + { + $this->handler->setFormatter($formatter); + + return $this; + } + + /** + * {@inheritdoc} + */ + public function getFormatter() + { + return $this->handler->getFormatter(); + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/ChromePHPHandler.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/ChromePHPHandler.php new file mode 100644 index 0000000..47120e5 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/ChromePHPHandler.php @@ -0,0 +1,212 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Handler; + +use Monolog\Formatter\ChromePHPFormatter; +use Monolog\Logger; +use Monolog\Utils; + +/** + * Handler sending logs to the ChromePHP extension (http://www.chromephp.com/) + * + * This also works out of the box with Firefox 43+ + * + * @author Christophe Coevoet + */ +class ChromePHPHandler extends AbstractProcessingHandler +{ + /** + * Version of the extension + */ + const VERSION = '4.0'; + + /** + * Header name + */ + const HEADER_NAME = 'X-ChromeLogger-Data'; + + /** + * Regular expression to detect supported browsers (matches any Chrome, or Firefox 43+) + */ + const USER_AGENT_REGEX = '{\b(?:Chrome/\d+(?:\.\d+)*|HeadlessChrome|Firefox/(?:4[3-9]|[5-9]\d|\d{3,})(?:\.\d)*)\b}'; + + protected static $initialized = false; + + /** + * Tracks whether we sent too much data + * + * Chrome limits the headers to 4KB, so when we sent 3KB we stop sending + * + * @var bool + */ + protected static $overflowed = false; + + protected static $json = array( + 'version' => self::VERSION, + 'columns' => array('label', 'log', 'backtrace', 'type'), + 'rows' => array(), + ); + + protected static $sendHeaders = true; + + /** + * @param int $level The minimum logging level at which this handler will be triggered + * @param bool $bubble Whether the messages that are handled can bubble up the stack or not + */ + public function __construct($level = Logger::DEBUG, $bubble = true) + { + parent::__construct($level, $bubble); + if (!function_exists('json_encode')) { + throw new \RuntimeException('PHP\'s json extension is required to use Monolog\'s ChromePHPHandler'); + } + } + + /** + * {@inheritdoc} + */ + public function handleBatch(array $records) + { + $messages = array(); + + foreach ($records as $record) { + if ($record['level'] < $this->level) { + continue; + } + $messages[] = $this->processRecord($record); + } + + if (!empty($messages)) { + $messages = $this->getFormatter()->formatBatch($messages); + self::$json['rows'] = array_merge(self::$json['rows'], $messages); + $this->send(); + } + } + + /** + * {@inheritDoc} + */ + protected function getDefaultFormatter() + { + return new ChromePHPFormatter(); + } + + /** + * Creates & sends header for a record + * + * @see sendHeader() + * @see send() + * @param array $record + */ + protected function write(array $record) + { + self::$json['rows'][] = $record['formatted']; + + $this->send(); + } + + /** + * Sends the log header + * + * @see sendHeader() + */ + protected function send() + { + if (self::$overflowed || !self::$sendHeaders) { + return; + } + + if (!self::$initialized) { + self::$initialized = true; + + self::$sendHeaders = $this->headersAccepted(); + if (!self::$sendHeaders) { + return; + } + + self::$json['request_uri'] = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : ''; + } + + $json = Utils::jsonEncode(self::$json, null, true); + $data = base64_encode(utf8_encode($json)); + if (strlen($data) > 3 * 1024) { + self::$overflowed = true; + + $record = array( + 'message' => 'Incomplete logs, chrome header size limit reached', + 'context' => array(), + 'level' => Logger::WARNING, + 'level_name' => Logger::getLevelName(Logger::WARNING), + 'channel' => 'monolog', + 'datetime' => new \DateTime(), + 'extra' => array(), + ); + self::$json['rows'][count(self::$json['rows']) - 1] = $this->getFormatter()->format($record); + $json = Utils::jsonEncode(self::$json, null, true); + $data = base64_encode(utf8_encode($json)); + } + + if (trim($data) !== '') { + $this->sendHeader(self::HEADER_NAME, $data); + } + } + + /** + * Send header string to the client + * + * @param string $header + * @param string $content + */ + protected function sendHeader($header, $content) + { + if (!headers_sent() && self::$sendHeaders) { + header(sprintf('%s: %s', $header, $content)); + } + } + + /** + * Verifies if the headers are accepted by the current user agent + * + * @return bool + */ + protected function headersAccepted() + { + if (empty($_SERVER['HTTP_USER_AGENT'])) { + return false; + } + + return preg_match(self::USER_AGENT_REGEX, $_SERVER['HTTP_USER_AGENT']); + } + + /** + * BC getter for the sendHeaders property that has been made static + */ + public function __get($property) + { + if ('sendHeaders' !== $property) { + throw new \InvalidArgumentException('Undefined property '.$property); + } + + return static::$sendHeaders; + } + + /** + * BC setter for the sendHeaders property that has been made static + */ + public function __set($property, $value) + { + if ('sendHeaders' !== $property) { + throw new \InvalidArgumentException('Undefined property '.$property); + } + + static::$sendHeaders = $value; + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/CouchDBHandler.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/CouchDBHandler.php new file mode 100644 index 0000000..cc98697 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/CouchDBHandler.php @@ -0,0 +1,72 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Handler; + +use Monolog\Formatter\JsonFormatter; +use Monolog\Logger; + +/** + * CouchDB handler + * + * @author Markus Bachmann + */ +class CouchDBHandler extends AbstractProcessingHandler +{ + private $options; + + public function __construct(array $options = array(), $level = Logger::DEBUG, $bubble = true) + { + $this->options = array_merge(array( + 'host' => 'localhost', + 'port' => 5984, + 'dbname' => 'logger', + 'username' => null, + 'password' => null, + ), $options); + + parent::__construct($level, $bubble); + } + + /** + * {@inheritDoc} + */ + protected function write(array $record) + { + $basicAuth = null; + if ($this->options['username']) { + $basicAuth = sprintf('%s:%s@', $this->options['username'], $this->options['password']); + } + + $url = 'http://'.$basicAuth.$this->options['host'].':'.$this->options['port'].'/'.$this->options['dbname']; + $context = stream_context_create(array( + 'http' => array( + 'method' => 'POST', + 'content' => $record['formatted'], + 'ignore_errors' => true, + 'max_redirects' => 0, + 'header' => 'Content-type: application/json', + ), + )); + + if (false === @file_get_contents($url, null, $context)) { + throw new \RuntimeException(sprintf('Could not connect to %s', $url)); + } + } + + /** + * {@inheritDoc} + */ + protected function getDefaultFormatter() + { + return new JsonFormatter(JsonFormatter::BATCH_MODE_JSON, false); + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/CubeHandler.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/CubeHandler.php new file mode 100644 index 0000000..44928ef --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/CubeHandler.php @@ -0,0 +1,152 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Handler; + +use Monolog\Logger; +use Monolog\Utils; + +/** + * Logs to Cube. + * + * @link http://square.github.com/cube/ + * @author Wan Chen + */ +class CubeHandler extends AbstractProcessingHandler +{ + private $udpConnection; + private $httpConnection; + private $scheme; + private $host; + private $port; + private $acceptedSchemes = array('http', 'udp'); + + /** + * Create a Cube handler + * + * @throws \UnexpectedValueException when given url is not a valid url. + * A valid url must consist of three parts : protocol://host:port + * Only valid protocols used by Cube are http and udp + */ + public function __construct($url, $level = Logger::DEBUG, $bubble = true) + { + $urlInfo = parse_url($url); + + if (!isset($urlInfo['scheme'], $urlInfo['host'], $urlInfo['port'])) { + throw new \UnexpectedValueException('URL "'.$url.'" is not valid'); + } + + if (!in_array($urlInfo['scheme'], $this->acceptedSchemes)) { + throw new \UnexpectedValueException( + 'Invalid protocol (' . $urlInfo['scheme'] . ').' + . ' Valid options are ' . implode(', ', $this->acceptedSchemes)); + } + + $this->scheme = $urlInfo['scheme']; + $this->host = $urlInfo['host']; + $this->port = $urlInfo['port']; + + parent::__construct($level, $bubble); + } + + /** + * Establish a connection to an UDP socket + * + * @throws \LogicException when unable to connect to the socket + * @throws MissingExtensionException when there is no socket extension + */ + protected function connectUdp() + { + if (!extension_loaded('sockets')) { + throw new MissingExtensionException('The sockets extension is required to use udp URLs with the CubeHandler'); + } + + $this->udpConnection = socket_create(AF_INET, SOCK_DGRAM, 0); + if (!$this->udpConnection) { + throw new \LogicException('Unable to create a socket'); + } + + if (!socket_connect($this->udpConnection, $this->host, $this->port)) { + throw new \LogicException('Unable to connect to the socket at ' . $this->host . ':' . $this->port); + } + } + + /** + * Establish a connection to a http server + * @throws \LogicException when no curl extension + */ + protected function connectHttp() + { + if (!extension_loaded('curl')) { + throw new \LogicException('The curl extension is needed to use http URLs with the CubeHandler'); + } + + $this->httpConnection = curl_init('http://'.$this->host.':'.$this->port.'/1.0/event/put'); + + if (!$this->httpConnection) { + throw new \LogicException('Unable to connect to ' . $this->host . ':' . $this->port); + } + + curl_setopt($this->httpConnection, CURLOPT_CUSTOMREQUEST, "POST"); + curl_setopt($this->httpConnection, CURLOPT_RETURNTRANSFER, true); + } + + /** + * {@inheritdoc} + */ + protected function write(array $record) + { + $date = $record['datetime']; + + $data = array('time' => $date->format('Y-m-d\TH:i:s.uO')); + unset($record['datetime']); + + if (isset($record['context']['type'])) { + $data['type'] = $record['context']['type']; + unset($record['context']['type']); + } else { + $data['type'] = $record['channel']; + } + + $data['data'] = $record['context']; + $data['data']['level'] = $record['level']; + + if ($this->scheme === 'http') { + $this->writeHttp(Utils::jsonEncode($data)); + } else { + $this->writeUdp(Utils::jsonEncode($data)); + } + } + + private function writeUdp($data) + { + if (!$this->udpConnection) { + $this->connectUdp(); + } + + socket_send($this->udpConnection, $data, strlen($data), 0); + } + + private function writeHttp($data) + { + if (!$this->httpConnection) { + $this->connectHttp(); + } + + curl_setopt($this->httpConnection, CURLOPT_POSTFIELDS, '['.$data.']'); + curl_setopt($this->httpConnection, CURLOPT_HTTPHEADER, array( + 'Content-Type: application/json', + 'Content-Length: ' . strlen('['.$data.']'), + )); + + Curl\Util::execute($this->httpConnection, 5, false); + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/Curl/Util.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/Curl/Util.php new file mode 100644 index 0000000..48d30b3 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/Curl/Util.php @@ -0,0 +1,57 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Handler\Curl; + +class Util +{ + private static $retriableErrorCodes = array( + CURLE_COULDNT_RESOLVE_HOST, + CURLE_COULDNT_CONNECT, + CURLE_HTTP_NOT_FOUND, + CURLE_READ_ERROR, + CURLE_OPERATION_TIMEOUTED, + CURLE_HTTP_POST_ERROR, + CURLE_SSL_CONNECT_ERROR, + ); + + /** + * Executes a CURL request with optional retries and exception on failure + * + * @param resource $ch curl handler + * @throws \RuntimeException + */ + public static function execute($ch, $retries = 5, $closeAfterDone = true) + { + while ($retries--) { + if (curl_exec($ch) === false) { + $curlErrno = curl_errno($ch); + + if (false === in_array($curlErrno, self::$retriableErrorCodes, true) || !$retries) { + $curlError = curl_error($ch); + + if ($closeAfterDone) { + curl_close($ch); + } + + throw new \RuntimeException(sprintf('Curl error (code %s): %s', $curlErrno, $curlError)); + } + + continue; + } + + if ($closeAfterDone) { + curl_close($ch); + } + break; + } + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/DeduplicationHandler.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/DeduplicationHandler.php new file mode 100644 index 0000000..35b55cb --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/DeduplicationHandler.php @@ -0,0 +1,169 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Handler; + +use Monolog\Logger; + +/** + * Simple handler wrapper that deduplicates log records across multiple requests + * + * It also includes the BufferHandler functionality and will buffer + * all messages until the end of the request or flush() is called. + * + * This works by storing all log records' messages above $deduplicationLevel + * to the file specified by $deduplicationStore. When further logs come in at the end of the + * request (or when flush() is called), all those above $deduplicationLevel are checked + * against the existing stored logs. If they match and the timestamps in the stored log is + * not older than $time seconds, the new log record is discarded. If no log record is new, the + * whole data set is discarded. + * + * This is mainly useful in combination with Mail handlers or things like Slack or HipChat handlers + * that send messages to people, to avoid spamming with the same message over and over in case of + * a major component failure like a database server being down which makes all requests fail in the + * same way. + * + * @author Jordi Boggiano + */ +class DeduplicationHandler extends BufferHandler +{ + /** + * @var string + */ + protected $deduplicationStore; + + /** + * @var int + */ + protected $deduplicationLevel; + + /** + * @var int + */ + protected $time; + + /** + * @var bool + */ + private $gc = false; + + /** + * @param HandlerInterface $handler Handler. + * @param string $deduplicationStore The file/path where the deduplication log should be kept + * @param int $deduplicationLevel The minimum logging level for log records to be looked at for deduplication purposes + * @param int $time The period (in seconds) during which duplicate entries should be suppressed after a given log is sent through + * @param bool $bubble Whether the messages that are handled can bubble up the stack or not + */ + public function __construct(HandlerInterface $handler, $deduplicationStore = null, $deduplicationLevel = Logger::ERROR, $time = 60, $bubble = true) + { + parent::__construct($handler, 0, Logger::DEBUG, $bubble, false); + + $this->deduplicationStore = $deduplicationStore === null ? sys_get_temp_dir() . '/monolog-dedup-' . substr(md5(__FILE__), 0, 20) .'.log' : $deduplicationStore; + $this->deduplicationLevel = Logger::toMonologLevel($deduplicationLevel); + $this->time = $time; + } + + public function flush() + { + if ($this->bufferSize === 0) { + return; + } + + $passthru = null; + + foreach ($this->buffer as $record) { + if ($record['level'] >= $this->deduplicationLevel) { + + $passthru = $passthru || !$this->isDuplicate($record); + if ($passthru) { + $this->appendRecord($record); + } + } + } + + // default of null is valid as well as if no record matches duplicationLevel we just pass through + if ($passthru === true || $passthru === null) { + $this->handler->handleBatch($this->buffer); + } + + $this->clear(); + + if ($this->gc) { + $this->collectLogs(); + } + } + + private function isDuplicate(array $record) + { + if (!file_exists($this->deduplicationStore)) { + return false; + } + + $store = file($this->deduplicationStore, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); + if (!is_array($store)) { + return false; + } + + $yesterday = time() - 86400; + $timestampValidity = $record['datetime']->getTimestamp() - $this->time; + $expectedMessage = preg_replace('{[\r\n].*}', '', $record['message']); + + for ($i = count($store) - 1; $i >= 0; $i--) { + list($timestamp, $level, $message) = explode(':', $store[$i], 3); + + if ($level === $record['level_name'] && $message === $expectedMessage && $timestamp > $timestampValidity) { + return true; + } + + if ($timestamp < $yesterday) { + $this->gc = true; + } + } + + return false; + } + + private function collectLogs() + { + if (!file_exists($this->deduplicationStore)) { + return false; + } + + $handle = fopen($this->deduplicationStore, 'rw+'); + flock($handle, LOCK_EX); + $validLogs = array(); + + $timestampValidity = time() - $this->time; + + while (!feof($handle)) { + $log = fgets($handle); + if (substr($log, 0, 10) >= $timestampValidity) { + $validLogs[] = $log; + } + } + + ftruncate($handle, 0); + rewind($handle); + foreach ($validLogs as $log) { + fwrite($handle, $log); + } + + flock($handle, LOCK_UN); + fclose($handle); + + $this->gc = false; + } + + private function appendRecord(array $record) + { + file_put_contents($this->deduplicationStore, $record['datetime']->getTimestamp() . ':' . $record['level_name'] . ':' . preg_replace('{[\r\n].*}', '', $record['message']) . "\n", FILE_APPEND); + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/DoctrineCouchDBHandler.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/DoctrineCouchDBHandler.php new file mode 100644 index 0000000..b91ffec --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/DoctrineCouchDBHandler.php @@ -0,0 +1,45 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Handler; + +use Monolog\Logger; +use Monolog\Formatter\NormalizerFormatter; +use Doctrine\CouchDB\CouchDBClient; + +/** + * CouchDB handler for Doctrine CouchDB ODM + * + * @author Markus Bachmann + */ +class DoctrineCouchDBHandler extends AbstractProcessingHandler +{ + private $client; + + public function __construct(CouchDBClient $client, $level = Logger::DEBUG, $bubble = true) + { + $this->client = $client; + parent::__construct($level, $bubble); + } + + /** + * {@inheritDoc} + */ + protected function write(array $record) + { + $this->client->postDocument($record['formatted']); + } + + protected function getDefaultFormatter() + { + return new NormalizerFormatter; + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/DynamoDbHandler.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/DynamoDbHandler.php new file mode 100644 index 0000000..237b71f --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/DynamoDbHandler.php @@ -0,0 +1,107 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Handler; + +use Aws\Sdk; +use Aws\DynamoDb\DynamoDbClient; +use Aws\DynamoDb\Marshaler; +use Monolog\Formatter\ScalarFormatter; +use Monolog\Logger; + +/** + * Amazon DynamoDB handler (http://aws.amazon.com/dynamodb/) + * + * @link https://github.com/aws/aws-sdk-php/ + * @author Andrew Lawson + */ +class DynamoDbHandler extends AbstractProcessingHandler +{ + const DATE_FORMAT = 'Y-m-d\TH:i:s.uO'; + + /** + * @var DynamoDbClient + */ + protected $client; + + /** + * @var string + */ + protected $table; + + /** + * @var int + */ + protected $version; + + /** + * @var Marshaler + */ + protected $marshaler; + + /** + * @param DynamoDbClient $client + * @param string $table + * @param int $level + * @param bool $bubble + */ + public function __construct(DynamoDbClient $client, $table, $level = Logger::DEBUG, $bubble = true) + { + if (defined('Aws\Sdk::VERSION') && version_compare(Sdk::VERSION, '3.0', '>=')) { + $this->version = 3; + $this->marshaler = new Marshaler; + } else { + $this->version = 2; + } + + $this->client = $client; + $this->table = $table; + + parent::__construct($level, $bubble); + } + + /** + * {@inheritdoc} + */ + protected function write(array $record) + { + $filtered = $this->filterEmptyFields($record['formatted']); + if ($this->version === 3) { + $formatted = $this->marshaler->marshalItem($filtered); + } else { + $formatted = $this->client->formatAttributes($filtered); + } + + $this->client->putItem(array( + 'TableName' => $this->table, + 'Item' => $formatted, + )); + } + + /** + * @param array $record + * @return array + */ + protected function filterEmptyFields(array $record) + { + return array_filter($record, function ($value) { + return !empty($value) || false === $value || 0 === $value; + }); + } + + /** + * {@inheritdoc} + */ + protected function getDefaultFormatter() + { + return new ScalarFormatter(self::DATE_FORMAT); + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/ElasticSearchHandler.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/ElasticSearchHandler.php new file mode 100644 index 0000000..bb0f83e --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/ElasticSearchHandler.php @@ -0,0 +1,128 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Handler; + +use Monolog\Formatter\FormatterInterface; +use Monolog\Formatter\ElasticaFormatter; +use Monolog\Logger; +use Elastica\Client; +use Elastica\Exception\ExceptionInterface; + +/** + * Elastic Search handler + * + * Usage example: + * + * $client = new \Elastica\Client(); + * $options = array( + * 'index' => 'elastic_index_name', + * 'type' => 'elastic_doc_type', + * ); + * $handler = new ElasticSearchHandler($client, $options); + * $log = new Logger('application'); + * $log->pushHandler($handler); + * + * @author Jelle Vink + */ +class ElasticSearchHandler extends AbstractProcessingHandler +{ + /** + * @var Client + */ + protected $client; + + /** + * @var array Handler config options + */ + protected $options = array(); + + /** + * @param Client $client Elastica Client object + * @param array $options Handler configuration + * @param int $level The minimum logging level at which this handler will be triggered + * @param bool $bubble Whether the messages that are handled can bubble up the stack or not + */ + public function __construct(Client $client, array $options = array(), $level = Logger::DEBUG, $bubble = true) + { + parent::__construct($level, $bubble); + $this->client = $client; + $this->options = array_merge( + array( + 'index' => 'monolog', // Elastic index name + 'type' => 'record', // Elastic document type + 'ignore_error' => false, // Suppress Elastica exceptions + ), + $options + ); + } + + /** + * {@inheritDoc} + */ + protected function write(array $record) + { + $this->bulkSend(array($record['formatted'])); + } + + /** + * {@inheritdoc} + */ + public function setFormatter(FormatterInterface $formatter) + { + if ($formatter instanceof ElasticaFormatter) { + return parent::setFormatter($formatter); + } + throw new \InvalidArgumentException('ElasticSearchHandler is only compatible with ElasticaFormatter'); + } + + /** + * Getter options + * @return array + */ + public function getOptions() + { + return $this->options; + } + + /** + * {@inheritDoc} + */ + protected function getDefaultFormatter() + { + return new ElasticaFormatter($this->options['index'], $this->options['type']); + } + + /** + * {@inheritdoc} + */ + public function handleBatch(array $records) + { + $documents = $this->getFormatter()->formatBatch($records); + $this->bulkSend($documents); + } + + /** + * Use Elasticsearch bulk API to send list of documents + * @param array $documents + * @throws \RuntimeException + */ + protected function bulkSend(array $documents) + { + try { + $this->client->addDocuments($documents); + } catch (ExceptionInterface $e) { + if (!$this->options['ignore_error']) { + throw new \RuntimeException("Error sending messages to Elasticsearch", 0, $e); + } + } + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/ErrorLogHandler.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/ErrorLogHandler.php new file mode 100644 index 0000000..b2986b0 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/ErrorLogHandler.php @@ -0,0 +1,82 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Handler; + +use Monolog\Formatter\LineFormatter; +use Monolog\Logger; + +/** + * Stores to PHP error_log() handler. + * + * @author Elan Ruusamäe + */ +class ErrorLogHandler extends AbstractProcessingHandler +{ + const OPERATING_SYSTEM = 0; + const SAPI = 4; + + protected $messageType; + protected $expandNewlines; + + /** + * @param int $messageType Says where the error should go. + * @param int $level The minimum logging level at which this handler will be triggered + * @param bool $bubble Whether the messages that are handled can bubble up the stack or not + * @param bool $expandNewlines If set to true, newlines in the message will be expanded to be take multiple log entries + */ + public function __construct($messageType = self::OPERATING_SYSTEM, $level = Logger::DEBUG, $bubble = true, $expandNewlines = false) + { + parent::__construct($level, $bubble); + + if (false === in_array($messageType, self::getAvailableTypes())) { + $message = sprintf('The given message type "%s" is not supported', print_r($messageType, true)); + throw new \InvalidArgumentException($message); + } + + $this->messageType = $messageType; + $this->expandNewlines = $expandNewlines; + } + + /** + * @return array With all available types + */ + public static function getAvailableTypes() + { + return array( + self::OPERATING_SYSTEM, + self::SAPI, + ); + } + + /** + * {@inheritDoc} + */ + protected function getDefaultFormatter() + { + return new LineFormatter('[%datetime%] %channel%.%level_name%: %message% %context% %extra%'); + } + + /** + * {@inheritdoc} + */ + protected function write(array $record) + { + if ($this->expandNewlines) { + $lines = preg_split('{[\r\n]+}', (string) $record['formatted']); + foreach ($lines as $line) { + error_log($line, $this->messageType); + } + } else { + error_log((string) $record['formatted'], $this->messageType); + } + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/FilterHandler.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/FilterHandler.php new file mode 100644 index 0000000..949f227 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/FilterHandler.php @@ -0,0 +1,172 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Handler; + +use Monolog\Logger; +use Monolog\Formatter\FormatterInterface; + +/** + * Simple handler wrapper that filters records based on a list of levels + * + * It can be configured with an exact list of levels to allow, or a min/max level. + * + * @author Hennadiy Verkh + * @author Jordi Boggiano + */ +class FilterHandler extends AbstractHandler +{ + /** + * Handler or factory callable($record, $this) + * + * @var callable|\Monolog\Handler\HandlerInterface + */ + protected $handler; + + /** + * Minimum level for logs that are passed to handler + * + * @var int[] + */ + protected $acceptedLevels; + + /** + * Whether the messages that are handled can bubble up the stack or not + * + * @var bool + */ + protected $bubble; + + /** + * @param callable|HandlerInterface $handler Handler or factory callable($record|null, $filterHandler). + * @param int|array $minLevelOrList A list of levels to accept or a minimum level if maxLevel is provided + * @param int $maxLevel Maximum level to accept, only used if $minLevelOrList is not an array + * @param bool $bubble Whether the messages that are handled can bubble up the stack or not + */ + public function __construct($handler, $minLevelOrList = Logger::DEBUG, $maxLevel = Logger::EMERGENCY, $bubble = true) + { + $this->handler = $handler; + $this->bubble = $bubble; + $this->setAcceptedLevels($minLevelOrList, $maxLevel); + + if (!$this->handler instanceof HandlerInterface && !is_callable($this->handler)) { + throw new \RuntimeException("The given handler (".json_encode($this->handler).") is not a callable nor a Monolog\Handler\HandlerInterface object"); + } + } + + /** + * @return array + */ + public function getAcceptedLevels() + { + return array_flip($this->acceptedLevels); + } + + /** + * @param int|string|array $minLevelOrList A list of levels to accept or a minimum level or level name if maxLevel is provided + * @param int|string $maxLevel Maximum level or level name to accept, only used if $minLevelOrList is not an array + */ + public function setAcceptedLevels($minLevelOrList = Logger::DEBUG, $maxLevel = Logger::EMERGENCY) + { + if (is_array($minLevelOrList)) { + $acceptedLevels = array_map('Monolog\Logger::toMonologLevel', $minLevelOrList); + } else { + $minLevelOrList = Logger::toMonologLevel($minLevelOrList); + $maxLevel = Logger::toMonologLevel($maxLevel); + $acceptedLevels = array_values(array_filter(Logger::getLevels(), function ($level) use ($minLevelOrList, $maxLevel) { + return $level >= $minLevelOrList && $level <= $maxLevel; + })); + } + $this->acceptedLevels = array_flip($acceptedLevels); + } + + /** + * {@inheritdoc} + */ + public function isHandling(array $record) + { + return isset($this->acceptedLevels[$record['level']]); + } + + /** + * {@inheritdoc} + */ + public function handle(array $record) + { + if (!$this->isHandling($record)) { + return false; + } + + if ($this->processors) { + foreach ($this->processors as $processor) { + $record = call_user_func($processor, $record); + } + } + + $this->getHandler($record)->handle($record); + + return false === $this->bubble; + } + + /** + * {@inheritdoc} + */ + public function handleBatch(array $records) + { + $filtered = array(); + foreach ($records as $record) { + if ($this->isHandling($record)) { + $filtered[] = $record; + } + } + + if (count($filtered) > 0) { + $this->getHandler($filtered[count($filtered) - 1])->handleBatch($filtered); + } + } + + /** + * Return the nested handler + * + * If the handler was provided as a factory callable, this will trigger the handler's instantiation. + * + * @return HandlerInterface + */ + public function getHandler(array $record = null) + { + if (!$this->handler instanceof HandlerInterface) { + $this->handler = call_user_func($this->handler, $record, $this); + if (!$this->handler instanceof HandlerInterface) { + throw new \RuntimeException("The factory callable should return a HandlerInterface"); + } + } + + return $this->handler; + } + + /** + * {@inheritdoc} + */ + public function setFormatter(FormatterInterface $formatter) + { + $this->getHandler()->setFormatter($formatter); + + return $this; + } + + /** + * {@inheritdoc} + */ + public function getFormatter() + { + return $this->getHandler()->getFormatter(); + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ActivationStrategyInterface.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ActivationStrategyInterface.php new file mode 100644 index 0000000..aaca12c --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ActivationStrategyInterface.php @@ -0,0 +1,28 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Handler\FingersCrossed; + +/** + * Interface for activation strategies for the FingersCrossedHandler. + * + * @author Johannes M. Schmitt + */ +interface ActivationStrategyInterface +{ + /** + * Returns whether the given record activates the handler. + * + * @param array $record + * @return bool + */ + public function isHandlerActivated(array $record); +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ChannelLevelActivationStrategy.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ChannelLevelActivationStrategy.php new file mode 100644 index 0000000..2a2a64d --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ChannelLevelActivationStrategy.php @@ -0,0 +1,59 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Handler\FingersCrossed; + +use Monolog\Logger; + +/** + * Channel and Error level based monolog activation strategy. Allows to trigger activation + * based on level per channel. e.g. trigger activation on level 'ERROR' by default, except + * for records of the 'sql' channel; those should trigger activation on level 'WARN'. + * + * Example: + * + * + * $activationStrategy = new ChannelLevelActivationStrategy( + * Logger::CRITICAL, + * array( + * 'request' => Logger::ALERT, + * 'sensitive' => Logger::ERROR, + * ) + * ); + * $handler = new FingersCrossedHandler(new StreamHandler('php://stderr'), $activationStrategy); + * + * + * @author Mike Meessen + */ +class ChannelLevelActivationStrategy implements ActivationStrategyInterface +{ + private $defaultActionLevel; + private $channelToActionLevel; + + /** + * @param int $defaultActionLevel The default action level to be used if the record's category doesn't match any + * @param array $channelToActionLevel An array that maps channel names to action levels. + */ + public function __construct($defaultActionLevel, $channelToActionLevel = array()) + { + $this->defaultActionLevel = Logger::toMonologLevel($defaultActionLevel); + $this->channelToActionLevel = array_map('Monolog\Logger::toMonologLevel', $channelToActionLevel); + } + + public function isHandlerActivated(array $record) + { + if (isset($this->channelToActionLevel[$record['channel']])) { + return $record['level'] >= $this->channelToActionLevel[$record['channel']]; + } + + return $record['level'] >= $this->defaultActionLevel; + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ErrorLevelActivationStrategy.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ErrorLevelActivationStrategy.php new file mode 100644 index 0000000..6e63085 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ErrorLevelActivationStrategy.php @@ -0,0 +1,34 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Handler\FingersCrossed; + +use Monolog\Logger; + +/** + * Error level based activation strategy. + * + * @author Johannes M. Schmitt + */ +class ErrorLevelActivationStrategy implements ActivationStrategyInterface +{ + private $actionLevel; + + public function __construct($actionLevel) + { + $this->actionLevel = Logger::toMonologLevel($actionLevel); + } + + public function isHandlerActivated(array $record) + { + return $record['level'] >= $this->actionLevel; + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossedHandler.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossedHandler.php new file mode 100644 index 0000000..cdabc44 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossedHandler.php @@ -0,0 +1,207 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Handler; + +use Monolog\Handler\FingersCrossed\ErrorLevelActivationStrategy; +use Monolog\Handler\FingersCrossed\ActivationStrategyInterface; +use Monolog\Logger; +use Monolog\ResettableInterface; +use Monolog\Formatter\FormatterInterface; + +/** + * Buffers all records until a certain level is reached + * + * The advantage of this approach is that you don't get any clutter in your log files. + * Only requests which actually trigger an error (or whatever your actionLevel is) will be + * in the logs, but they will contain all records, not only those above the level threshold. + * + * You can find the various activation strategies in the + * Monolog\Handler\FingersCrossed\ namespace. + * + * @author Jordi Boggiano + */ +class FingersCrossedHandler extends AbstractHandler +{ + protected $handler; + protected $activationStrategy; + protected $buffering = true; + protected $bufferSize; + protected $buffer = array(); + protected $stopBuffering; + protected $passthruLevel; + + /** + * @param callable|HandlerInterface $handler Handler or factory callable($record|null, $fingersCrossedHandler). + * @param int|ActivationStrategyInterface $activationStrategy Strategy which determines when this handler takes action + * @param int $bufferSize How many entries should be buffered at most, beyond that the oldest items are removed from the buffer. + * @param bool $bubble Whether the messages that are handled can bubble up the stack or not + * @param bool $stopBuffering Whether the handler should stop buffering after being triggered (default true) + * @param int $passthruLevel Minimum level to always flush to handler on close, even if strategy not triggered + */ + public function __construct($handler, $activationStrategy = null, $bufferSize = 0, $bubble = true, $stopBuffering = true, $passthruLevel = null) + { + if (null === $activationStrategy) { + $activationStrategy = new ErrorLevelActivationStrategy(Logger::WARNING); + } + + // convert simple int activationStrategy to an object + if (!$activationStrategy instanceof ActivationStrategyInterface) { + $activationStrategy = new ErrorLevelActivationStrategy($activationStrategy); + } + + $this->handler = $handler; + $this->activationStrategy = $activationStrategy; + $this->bufferSize = $bufferSize; + $this->bubble = $bubble; + $this->stopBuffering = $stopBuffering; + + if ($passthruLevel !== null) { + $this->passthruLevel = Logger::toMonologLevel($passthruLevel); + } + + if (!$this->handler instanceof HandlerInterface && !is_callable($this->handler)) { + throw new \RuntimeException("The given handler (".json_encode($this->handler).") is not a callable nor a Monolog\Handler\HandlerInterface object"); + } + } + + /** + * {@inheritdoc} + */ + public function isHandling(array $record) + { + return true; + } + + /** + * Manually activate this logger regardless of the activation strategy + */ + public function activate() + { + if ($this->stopBuffering) { + $this->buffering = false; + } + $this->getHandler(end($this->buffer) ?: null)->handleBatch($this->buffer); + $this->buffer = array(); + } + + /** + * {@inheritdoc} + */ + public function handle(array $record) + { + if ($this->processors) { + foreach ($this->processors as $processor) { + $record = call_user_func($processor, $record); + } + } + + if ($this->buffering) { + $this->buffer[] = $record; + if ($this->bufferSize > 0 && count($this->buffer) > $this->bufferSize) { + array_shift($this->buffer); + } + if ($this->activationStrategy->isHandlerActivated($record)) { + $this->activate(); + } + } else { + $this->getHandler($record)->handle($record); + } + + return false === $this->bubble; + } + + /** + * {@inheritdoc} + */ + public function close() + { + $this->flushBuffer(); + } + + public function reset() + { + $this->flushBuffer(); + + parent::reset(); + + if ($this->getHandler() instanceof ResettableInterface) { + $this->getHandler()->reset(); + } + } + + /** + * Clears the buffer without flushing any messages down to the wrapped handler. + * + * It also resets the handler to its initial buffering state. + */ + public function clear() + { + $this->buffer = array(); + $this->reset(); + } + + /** + * Resets the state of the handler. Stops forwarding records to the wrapped handler. + */ + private function flushBuffer() + { + if (null !== $this->passthruLevel) { + $level = $this->passthruLevel; + $this->buffer = array_filter($this->buffer, function ($record) use ($level) { + return $record['level'] >= $level; + }); + if (count($this->buffer) > 0) { + $this->getHandler(end($this->buffer) ?: null)->handleBatch($this->buffer); + } + } + + $this->buffer = array(); + $this->buffering = true; + } + + /** + * Return the nested handler + * + * If the handler was provided as a factory callable, this will trigger the handler's instantiation. + * + * @return HandlerInterface + */ + public function getHandler(array $record = null) + { + if (!$this->handler instanceof HandlerInterface) { + $this->handler = call_user_func($this->handler, $record, $this); + if (!$this->handler instanceof HandlerInterface) { + throw new \RuntimeException("The factory callable should return a HandlerInterface"); + } + } + + return $this->handler; + } + + /** + * {@inheritdoc} + */ + public function setFormatter(FormatterInterface $formatter) + { + $this->getHandler()->setFormatter($formatter); + + return $this; + } + + /** + * {@inheritdoc} + */ + public function getFormatter() + { + return $this->getHandler()->getFormatter(); + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/FirePHPHandler.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/FirePHPHandler.php new file mode 100644 index 0000000..c30b184 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/FirePHPHandler.php @@ -0,0 +1,195 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Handler; + +use Monolog\Formatter\WildfireFormatter; + +/** + * Simple FirePHP Handler (http://www.firephp.org/), which uses the Wildfire protocol. + * + * @author Eric Clemmons (@ericclemmons) + */ +class FirePHPHandler extends AbstractProcessingHandler +{ + /** + * WildFire JSON header message format + */ + const PROTOCOL_URI = 'http://meta.wildfirehq.org/Protocol/JsonStream/0.2'; + + /** + * FirePHP structure for parsing messages & their presentation + */ + const STRUCTURE_URI = 'http://meta.firephp.org/Wildfire/Structure/FirePHP/FirebugConsole/0.1'; + + /** + * Must reference a "known" plugin, otherwise headers won't display in FirePHP + */ + const PLUGIN_URI = 'http://meta.firephp.org/Wildfire/Plugin/FirePHP/Library-FirePHPCore/0.3'; + + /** + * Header prefix for Wildfire to recognize & parse headers + */ + const HEADER_PREFIX = 'X-Wf'; + + /** + * Whether or not Wildfire vendor-specific headers have been generated & sent yet + */ + protected static $initialized = false; + + /** + * Shared static message index between potentially multiple handlers + * @var int + */ + protected static $messageIndex = 1; + + protected static $sendHeaders = true; + + /** + * Base header creation function used by init headers & record headers + * + * @param array $meta Wildfire Plugin, Protocol & Structure Indexes + * @param string $message Log message + * @return array Complete header string ready for the client as key and message as value + */ + protected function createHeader(array $meta, $message) + { + $header = sprintf('%s-%s', self::HEADER_PREFIX, join('-', $meta)); + + return array($header => $message); + } + + /** + * Creates message header from record + * + * @see createHeader() + * @param array $record + * @return string + */ + protected function createRecordHeader(array $record) + { + // Wildfire is extensible to support multiple protocols & plugins in a single request, + // but we're not taking advantage of that (yet), so we're using "1" for simplicity's sake. + return $this->createHeader( + array(1, 1, 1, self::$messageIndex++), + $record['formatted'] + ); + } + + /** + * {@inheritDoc} + */ + protected function getDefaultFormatter() + { + return new WildfireFormatter(); + } + + /** + * Wildfire initialization headers to enable message parsing + * + * @see createHeader() + * @see sendHeader() + * @return array + */ + protected function getInitHeaders() + { + // Initial payload consists of required headers for Wildfire + return array_merge( + $this->createHeader(array('Protocol', 1), self::PROTOCOL_URI), + $this->createHeader(array(1, 'Structure', 1), self::STRUCTURE_URI), + $this->createHeader(array(1, 'Plugin', 1), self::PLUGIN_URI) + ); + } + + /** + * Send header string to the client + * + * @param string $header + * @param string $content + */ + protected function sendHeader($header, $content) + { + if (!headers_sent() && self::$sendHeaders) { + header(sprintf('%s: %s', $header, $content)); + } + } + + /** + * Creates & sends header for a record, ensuring init headers have been sent prior + * + * @see sendHeader() + * @see sendInitHeaders() + * @param array $record + */ + protected function write(array $record) + { + if (!self::$sendHeaders) { + return; + } + + // WildFire-specific headers must be sent prior to any messages + if (!self::$initialized) { + self::$initialized = true; + + self::$sendHeaders = $this->headersAccepted(); + if (!self::$sendHeaders) { + return; + } + + foreach ($this->getInitHeaders() as $header => $content) { + $this->sendHeader($header, $content); + } + } + + $header = $this->createRecordHeader($record); + if (trim(current($header)) !== '') { + $this->sendHeader(key($header), current($header)); + } + } + + /** + * Verifies if the headers are accepted by the current user agent + * + * @return bool + */ + protected function headersAccepted() + { + if (!empty($_SERVER['HTTP_USER_AGENT']) && preg_match('{\bFirePHP/\d+\.\d+\b}', $_SERVER['HTTP_USER_AGENT'])) { + return true; + } + + return isset($_SERVER['HTTP_X_FIREPHP_VERSION']); + } + + /** + * BC getter for the sendHeaders property that has been made static + */ + public function __get($property) + { + if ('sendHeaders' !== $property) { + throw new \InvalidArgumentException('Undefined property '.$property); + } + + return static::$sendHeaders; + } + + /** + * BC setter for the sendHeaders property that has been made static + */ + public function __set($property, $value) + { + if ('sendHeaders' !== $property) { + throw new \InvalidArgumentException('Undefined property '.$property); + } + + static::$sendHeaders = $value; + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/FleepHookHandler.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/FleepHookHandler.php new file mode 100644 index 0000000..c43c013 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/FleepHookHandler.php @@ -0,0 +1,126 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Handler; + +use Monolog\Formatter\LineFormatter; +use Monolog\Logger; + +/** + * Sends logs to Fleep.io using Webhook integrations + * + * You'll need a Fleep.io account to use this handler. + * + * @see https://fleep.io/integrations/webhooks/ Fleep Webhooks Documentation + * @author Ando Roots + */ +class FleepHookHandler extends SocketHandler +{ + const FLEEP_HOST = 'fleep.io'; + + const FLEEP_HOOK_URI = '/hook/'; + + /** + * @var string Webhook token (specifies the conversation where logs are sent) + */ + protected $token; + + /** + * Construct a new Fleep.io Handler. + * + * For instructions on how to create a new web hook in your conversations + * see https://fleep.io/integrations/webhooks/ + * + * @param string $token Webhook token + * @param bool|int $level The minimum logging level at which this handler will be triggered + * @param bool $bubble Whether the messages that are handled can bubble up the stack or not + * @throws MissingExtensionException + */ + public function __construct($token, $level = Logger::DEBUG, $bubble = true) + { + if (!extension_loaded('openssl')) { + throw new MissingExtensionException('The OpenSSL PHP extension is required to use the FleepHookHandler'); + } + + $this->token = $token; + + $connectionString = 'ssl://' . self::FLEEP_HOST . ':443'; + parent::__construct($connectionString, $level, $bubble); + } + + /** + * Returns the default formatter to use with this handler + * + * Overloaded to remove empty context and extra arrays from the end of the log message. + * + * @return LineFormatter + */ + protected function getDefaultFormatter() + { + return new LineFormatter(null, null, true, true); + } + + /** + * Handles a log record + * + * @param array $record + */ + public function write(array $record) + { + parent::write($record); + $this->closeSocket(); + } + + /** + * {@inheritdoc} + * + * @param array $record + * @return string + */ + protected function generateDataStream($record) + { + $content = $this->buildContent($record); + + return $this->buildHeader($content) . $content; + } + + /** + * Builds the header of the API Call + * + * @param string $content + * @return string + */ + private function buildHeader($content) + { + $header = "POST " . self::FLEEP_HOOK_URI . $this->token . " HTTP/1.1\r\n"; + $header .= "Host: " . self::FLEEP_HOST . "\r\n"; + $header .= "Content-Type: application/x-www-form-urlencoded\r\n"; + $header .= "Content-Length: " . strlen($content) . "\r\n"; + $header .= "\r\n"; + + return $header; + } + + /** + * Builds the body of API call + * + * @param array $record + * @return string + */ + private function buildContent($record) + { + $dataArray = array( + 'message' => $record['formatted'], + ); + + return http_build_query($dataArray); + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/FlowdockHandler.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/FlowdockHandler.php new file mode 100644 index 0000000..f0f010c --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/FlowdockHandler.php @@ -0,0 +1,128 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Handler; + +use Monolog\Logger; +use Monolog\Utils; +use Monolog\Formatter\FlowdockFormatter; +use Monolog\Formatter\FormatterInterface; + +/** + * Sends notifications through the Flowdock push API + * + * This must be configured with a FlowdockFormatter instance via setFormatter() + * + * Notes: + * API token - Flowdock API token + * + * @author Dominik Liebler + * @see https://www.flowdock.com/api/push + */ +class FlowdockHandler extends SocketHandler +{ + /** + * @var string + */ + protected $apiToken; + + /** + * @param string $apiToken + * @param bool|int $level The minimum logging level at which this handler will be triggered + * @param bool $bubble Whether the messages that are handled can bubble up the stack or not + * + * @throws MissingExtensionException if OpenSSL is missing + */ + public function __construct($apiToken, $level = Logger::DEBUG, $bubble = true) + { + if (!extension_loaded('openssl')) { + throw new MissingExtensionException('The OpenSSL PHP extension is required to use the FlowdockHandler'); + } + + parent::__construct('ssl://api.flowdock.com:443', $level, $bubble); + $this->apiToken = $apiToken; + } + + /** + * {@inheritdoc} + */ + public function setFormatter(FormatterInterface $formatter) + { + if (!$formatter instanceof FlowdockFormatter) { + throw new \InvalidArgumentException('The FlowdockHandler requires an instance of Monolog\Formatter\FlowdockFormatter to function correctly'); + } + + return parent::setFormatter($formatter); + } + + /** + * Gets the default formatter. + * + * @return FormatterInterface + */ + protected function getDefaultFormatter() + { + throw new \InvalidArgumentException('The FlowdockHandler must be configured (via setFormatter) with an instance of Monolog\Formatter\FlowdockFormatter to function correctly'); + } + + /** + * {@inheritdoc} + * + * @param array $record + */ + protected function write(array $record) + { + parent::write($record); + + $this->closeSocket(); + } + + /** + * {@inheritdoc} + * + * @param array $record + * @return string + */ + protected function generateDataStream($record) + { + $content = $this->buildContent($record); + + return $this->buildHeader($content) . $content; + } + + /** + * Builds the body of API call + * + * @param array $record + * @return string + */ + private function buildContent($record) + { + return Utils::jsonEncode($record['formatted']['flowdock']); + } + + /** + * Builds the header of the API Call + * + * @param string $content + * @return string + */ + private function buildHeader($content) + { + $header = "POST /v1/messages/team_inbox/" . $this->apiToken . " HTTP/1.1\r\n"; + $header .= "Host: api.flowdock.com\r\n"; + $header .= "Content-Type: application/json\r\n"; + $header .= "Content-Length: " . strlen($content) . "\r\n"; + $header .= "\r\n"; + + return $header; + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/FormattableHandlerInterface.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/FormattableHandlerInterface.php new file mode 100644 index 0000000..3e2f1b2 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/FormattableHandlerInterface.php @@ -0,0 +1,39 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Handler; + +use Monolog\Formatter\FormatterInterface; + +/** + * Interface to describe loggers that have a formatter + * + * This interface is present in monolog 1.x to ease forward compatibility. + * + * @author Jordi Boggiano + */ +interface FormattableHandlerInterface +{ + /** + * Sets the formatter. + * + * @param FormatterInterface $formatter + * @return HandlerInterface self + */ + public function setFormatter(FormatterInterface $formatter): HandlerInterface; + + /** + * Gets the formatter. + * + * @return FormatterInterface + */ + public function getFormatter(): FormatterInterface; +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/FormattableHandlerTrait.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/FormattableHandlerTrait.php new file mode 100644 index 0000000..e9ec5e7 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/FormattableHandlerTrait.php @@ -0,0 +1,63 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Handler; + +use Monolog\Formatter\FormatterInterface; +use Monolog\Formatter\LineFormatter; + +/** + * Helper trait for implementing FormattableInterface + * + * This trait is present in monolog 1.x to ease forward compatibility. + * + * @author Jordi Boggiano + */ +trait FormattableHandlerTrait +{ + /** + * @var FormatterInterface + */ + protected $formatter; + + /** + * {@inheritdoc} + * @suppress PhanTypeMismatchReturn + */ + public function setFormatter(FormatterInterface $formatter): HandlerInterface + { + $this->formatter = $formatter; + + return $this; + } + + /** + * {@inheritdoc} + */ + public function getFormatter(): FormatterInterface + { + if (!$this->formatter) { + $this->formatter = $this->getDefaultFormatter(); + } + + return $this->formatter; + } + + /** + * Gets the default formatter. + * + * Overwrite this if the LineFormatter is not a good default for your handler. + */ + protected function getDefaultFormatter(): FormatterInterface + { + return new LineFormatter(); + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/GelfHandler.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/GelfHandler.php new file mode 100644 index 0000000..71e4669 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/GelfHandler.php @@ -0,0 +1,65 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Handler; + +use Gelf\IMessagePublisher; +use Gelf\PublisherInterface; +use Gelf\Publisher; +use InvalidArgumentException; +use Monolog\Logger; +use Monolog\Formatter\GelfMessageFormatter; + +/** + * Handler to send messages to a Graylog2 (http://www.graylog2.org) server + * + * @author Matt Lehner + * @author Benjamin Zikarsky + */ +class GelfHandler extends AbstractProcessingHandler +{ + /** + * @var Publisher the publisher object that sends the message to the server + */ + protected $publisher; + + /** + * @param PublisherInterface|IMessagePublisher|Publisher $publisher a publisher object + * @param int $level The minimum logging level at which this handler will be triggered + * @param bool $bubble Whether the messages that are handled can bubble up the stack or not + */ + public function __construct($publisher, $level = Logger::DEBUG, $bubble = true) + { + parent::__construct($level, $bubble); + + if (!$publisher instanceof Publisher && !$publisher instanceof IMessagePublisher && !$publisher instanceof PublisherInterface) { + throw new InvalidArgumentException('Invalid publisher, expected a Gelf\Publisher, Gelf\IMessagePublisher or Gelf\PublisherInterface instance'); + } + + $this->publisher = $publisher; + } + + /** + * {@inheritdoc} + */ + protected function write(array $record) + { + $this->publisher->publish($record['formatted']); + } + + /** + * {@inheritDoc} + */ + protected function getDefaultFormatter() + { + return new GelfMessageFormatter(); + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/GroupHandler.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/GroupHandler.php new file mode 100644 index 0000000..0d461f9 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/GroupHandler.php @@ -0,0 +1,117 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Handler; + +use Monolog\Formatter\FormatterInterface; +use Monolog\ResettableInterface; + +/** + * Forwards records to multiple handlers + * + * @author Lenar Lõhmus + */ +class GroupHandler extends AbstractHandler +{ + protected $handlers; + + /** + * @param array $handlers Array of Handlers. + * @param bool $bubble Whether the messages that are handled can bubble up the stack or not + */ + public function __construct(array $handlers, $bubble = true) + { + foreach ($handlers as $handler) { + if (!$handler instanceof HandlerInterface) { + throw new \InvalidArgumentException('The first argument of the GroupHandler must be an array of HandlerInterface instances.'); + } + } + + $this->handlers = $handlers; + $this->bubble = $bubble; + } + + /** + * {@inheritdoc} + */ + public function isHandling(array $record) + { + foreach ($this->handlers as $handler) { + if ($handler->isHandling($record)) { + return true; + } + } + + return false; + } + + /** + * {@inheritdoc} + */ + public function handle(array $record) + { + if ($this->processors) { + foreach ($this->processors as $processor) { + $record = call_user_func($processor, $record); + } + } + + foreach ($this->handlers as $handler) { + $handler->handle($record); + } + + return false === $this->bubble; + } + + /** + * {@inheritdoc} + */ + public function handleBatch(array $records) + { + if ($this->processors) { + $processed = array(); + foreach ($records as $record) { + foreach ($this->processors as $processor) { + $record = call_user_func($processor, $record); + } + $processed[] = $record; + } + $records = $processed; + } + + foreach ($this->handlers as $handler) { + $handler->handleBatch($records); + } + } + + public function reset() + { + parent::reset(); + + foreach ($this->handlers as $handler) { + if ($handler instanceof ResettableInterface) { + $handler->reset(); + } + } + } + + /** + * {@inheritdoc} + */ + public function setFormatter(FormatterInterface $formatter) + { + foreach ($this->handlers as $handler) { + $handler->setFormatter($formatter); + } + + return $this; + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/HandlerInterface.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/HandlerInterface.php new file mode 100644 index 0000000..8d5a4a0 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/HandlerInterface.php @@ -0,0 +1,90 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Handler; + +use Monolog\Formatter\FormatterInterface; + +/** + * Interface that all Monolog Handlers must implement + * + * @author Jordi Boggiano + */ +interface HandlerInterface +{ + /** + * Checks whether the given record will be handled by this handler. + * + * This is mostly done for performance reasons, to avoid calling processors for nothing. + * + * Handlers should still check the record levels within handle(), returning false in isHandling() + * is no guarantee that handle() will not be called, and isHandling() might not be called + * for a given record. + * + * @param array $record Partial log record containing only a level key + * + * @return bool + */ + public function isHandling(array $record); + + /** + * Handles a record. + * + * All records may be passed to this method, and the handler should discard + * those that it does not want to handle. + * + * The return value of this function controls the bubbling process of the handler stack. + * Unless the bubbling is interrupted (by returning true), the Logger class will keep on + * calling further handlers in the stack with a given log record. + * + * @param array $record The record to handle + * @return bool true means that this handler handled the record, and that bubbling is not permitted. + * false means the record was either not processed or that this handler allows bubbling. + */ + public function handle(array $record); + + /** + * Handles a set of records at once. + * + * @param array $records The records to handle (an array of record arrays) + */ + public function handleBatch(array $records); + + /** + * Adds a processor in the stack. + * + * @param callable $callback + * @return self + */ + public function pushProcessor($callback); + + /** + * Removes the processor on top of the stack and returns it. + * + * @return callable + */ + public function popProcessor(); + + /** + * Sets the formatter. + * + * @param FormatterInterface $formatter + * @return self + */ + public function setFormatter(FormatterInterface $formatter); + + /** + * Gets the formatter. + * + * @return FormatterInterface + */ + public function getFormatter(); +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/HandlerWrapper.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/HandlerWrapper.php new file mode 100644 index 0000000..55e6498 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/HandlerWrapper.php @@ -0,0 +1,116 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Handler; + +use Monolog\ResettableInterface; +use Monolog\Formatter\FormatterInterface; + +/** + * This simple wrapper class can be used to extend handlers functionality. + * + * Example: A custom filtering that can be applied to any handler. + * + * Inherit from this class and override handle() like this: + * + * public function handle(array $record) + * { + * if ($record meets certain conditions) { + * return false; + * } + * return $this->handler->handle($record); + * } + * + * @author Alexey Karapetov + */ +class HandlerWrapper implements HandlerInterface, ResettableInterface +{ + /** + * @var HandlerInterface + */ + protected $handler; + + /** + * HandlerWrapper constructor. + * @param HandlerInterface $handler + */ + public function __construct(HandlerInterface $handler) + { + $this->handler = $handler; + } + + /** + * {@inheritdoc} + */ + public function isHandling(array $record) + { + return $this->handler->isHandling($record); + } + + /** + * {@inheritdoc} + */ + public function handle(array $record) + { + return $this->handler->handle($record); + } + + /** + * {@inheritdoc} + */ + public function handleBatch(array $records) + { + return $this->handler->handleBatch($records); + } + + /** + * {@inheritdoc} + */ + public function pushProcessor($callback) + { + $this->handler->pushProcessor($callback); + + return $this; + } + + /** + * {@inheritdoc} + */ + public function popProcessor() + { + return $this->handler->popProcessor(); + } + + /** + * {@inheritdoc} + */ + public function setFormatter(FormatterInterface $formatter) + { + $this->handler->setFormatter($formatter); + + return $this; + } + + /** + * {@inheritdoc} + */ + public function getFormatter() + { + return $this->handler->getFormatter(); + } + + public function reset() + { + if ($this->handler instanceof ResettableInterface) { + return $this->handler->reset(); + } + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/HipChatHandler.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/HipChatHandler.php new file mode 100644 index 0000000..179d626 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/HipChatHandler.php @@ -0,0 +1,367 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Handler; + +use Monolog\Logger; + +/** + * Sends notifications through the hipchat api to a hipchat room + * + * Notes: + * API token - HipChat API token + * Room - HipChat Room Id or name, where messages are sent + * Name - Name used to send the message (from) + * notify - Should the message trigger a notification in the clients + * version - The API version to use (HipChatHandler::API_V1 | HipChatHandler::API_V2) + * + * @author Rafael Dohms + * @see https://www.hipchat.com/docs/api + */ +class HipChatHandler extends SocketHandler +{ + /** + * Use API version 1 + */ + const API_V1 = 'v1'; + + /** + * Use API version v2 + */ + const API_V2 = 'v2'; + + /** + * The maximum allowed length for the name used in the "from" field. + */ + const MAXIMUM_NAME_LENGTH = 15; + + /** + * The maximum allowed length for the message. + */ + const MAXIMUM_MESSAGE_LENGTH = 9500; + + /** + * @var string + */ + private $token; + + /** + * @var string + */ + private $room; + + /** + * @var string + */ + private $name; + + /** + * @var bool + */ + private $notify; + + /** + * @var string + */ + private $format; + + /** + * @var string + */ + private $host; + + /** + * @var string + */ + private $version; + + /** + * @param string $token HipChat API Token + * @param string $room The room that should be alerted of the message (Id or Name) + * @param string $name Name used in the "from" field. + * @param bool $notify Trigger a notification in clients or not + * @param int $level The minimum logging level at which this handler will be triggered + * @param bool $bubble Whether the messages that are handled can bubble up the stack or not + * @param bool $useSSL Whether to connect via SSL. + * @param string $format The format of the messages (default to text, can be set to html if you have html in the messages) + * @param string $host The HipChat server hostname. + * @param string $version The HipChat API version (default HipChatHandler::API_V1) + */ + public function __construct($token, $room, $name = 'Monolog', $notify = false, $level = Logger::CRITICAL, $bubble = true, $useSSL = true, $format = 'text', $host = 'api.hipchat.com', $version = self::API_V1) + { + @trigger_error('The Monolog\Handler\HipChatHandler class is deprecated. You should migrate to Slack and the SlackWebhookHandler / SlackbotHandler, see https://www.atlassian.com/partnerships/slack', E_USER_DEPRECATED); + + if ($version == self::API_V1 && !$this->validateStringLength($name, static::MAXIMUM_NAME_LENGTH)) { + throw new \InvalidArgumentException('The supplied name is too long. HipChat\'s v1 API supports names up to 15 UTF-8 characters.'); + } + + $connectionString = $useSSL ? 'ssl://'.$host.':443' : $host.':80'; + parent::__construct($connectionString, $level, $bubble); + + $this->token = $token; + $this->name = $name; + $this->notify = $notify; + $this->room = $room; + $this->format = $format; + $this->host = $host; + $this->version = $version; + } + + /** + * {@inheritdoc} + * + * @param array $record + * @return string + */ + protected function generateDataStream($record) + { + $content = $this->buildContent($record); + + return $this->buildHeader($content) . $content; + } + + /** + * Builds the body of API call + * + * @param array $record + * @return string + */ + private function buildContent($record) + { + $dataArray = array( + 'notify' => $this->version == self::API_V1 ? + ($this->notify ? 1 : 0) : + ($this->notify ? 'true' : 'false'), + 'message' => $record['formatted'], + 'message_format' => $this->format, + 'color' => $this->getAlertColor($record['level']), + ); + + if (!$this->validateStringLength($dataArray['message'], static::MAXIMUM_MESSAGE_LENGTH)) { + if (function_exists('mb_substr')) { + $dataArray['message'] = mb_substr($dataArray['message'], 0, static::MAXIMUM_MESSAGE_LENGTH).' [truncated]'; + } else { + $dataArray['message'] = substr($dataArray['message'], 0, static::MAXIMUM_MESSAGE_LENGTH).' [truncated]'; + } + } + + // if we are using the legacy API then we need to send some additional information + if ($this->version == self::API_V1) { + $dataArray['room_id'] = $this->room; + } + + // append the sender name if it is set + // always append it if we use the v1 api (it is required in v1) + if ($this->version == self::API_V1 || $this->name !== null) { + $dataArray['from'] = (string) $this->name; + } + + return http_build_query($dataArray); + } + + /** + * Builds the header of the API Call + * + * @param string $content + * @return string + */ + private function buildHeader($content) + { + if ($this->version == self::API_V1) { + $header = "POST /v1/rooms/message?format=json&auth_token={$this->token} HTTP/1.1\r\n"; + } else { + // needed for rooms with special (spaces, etc) characters in the name + $room = rawurlencode($this->room); + $header = "POST /v2/room/{$room}/notification?auth_token={$this->token} HTTP/1.1\r\n"; + } + + $header .= "Host: {$this->host}\r\n"; + $header .= "Content-Type: application/x-www-form-urlencoded\r\n"; + $header .= "Content-Length: " . strlen($content) . "\r\n"; + $header .= "\r\n"; + + return $header; + } + + /** + * Assigns a color to each level of log records. + * + * @param int $level + * @return string + */ + protected function getAlertColor($level) + { + switch (true) { + case $level >= Logger::ERROR: + return 'red'; + case $level >= Logger::WARNING: + return 'yellow'; + case $level >= Logger::INFO: + return 'green'; + case $level == Logger::DEBUG: + return 'gray'; + default: + return 'yellow'; + } + } + + /** + * {@inheritdoc} + * + * @param array $record + */ + protected function write(array $record) + { + parent::write($record); + $this->finalizeWrite(); + } + + /** + * Finalizes the request by reading some bytes and then closing the socket + * + * If we do not read some but close the socket too early, hipchat sometimes + * drops the request entirely. + */ + protected function finalizeWrite() + { + $res = $this->getResource(); + if (is_resource($res)) { + @fread($res, 2048); + } + $this->closeSocket(); + } + + /** + * {@inheritdoc} + */ + public function handleBatch(array $records) + { + if (count($records) == 0) { + return true; + } + + $batchRecords = $this->combineRecords($records); + + $handled = false; + foreach ($batchRecords as $batchRecord) { + if ($this->isHandling($batchRecord)) { + $this->write($batchRecord); + $handled = true; + } + } + + if (!$handled) { + return false; + } + + return false === $this->bubble; + } + + /** + * Combines multiple records into one. Error level of the combined record + * will be the highest level from the given records. Datetime will be taken + * from the first record. + * + * @param $records + * @return array + */ + private function combineRecords($records) + { + $batchRecord = null; + $batchRecords = array(); + $messages = array(); + $formattedMessages = array(); + $level = 0; + $levelName = null; + $datetime = null; + + foreach ($records as $record) { + $record = $this->processRecord($record); + + if ($record['level'] > $level) { + $level = $record['level']; + $levelName = $record['level_name']; + } + + if (null === $datetime) { + $datetime = $record['datetime']; + } + + $messages[] = $record['message']; + $messageStr = implode(PHP_EOL, $messages); + $formattedMessages[] = $this->getFormatter()->format($record); + $formattedMessageStr = implode('', $formattedMessages); + + $batchRecord = array( + 'message' => $messageStr, + 'formatted' => $formattedMessageStr, + 'context' => array(), + 'extra' => array(), + ); + + if (!$this->validateStringLength($batchRecord['formatted'], static::MAXIMUM_MESSAGE_LENGTH)) { + // Pop the last message and implode the remaining messages + $lastMessage = array_pop($messages); + $lastFormattedMessage = array_pop($formattedMessages); + $batchRecord['message'] = implode(PHP_EOL, $messages); + $batchRecord['formatted'] = implode('', $formattedMessages); + + $batchRecords[] = $batchRecord; + $messages = array($lastMessage); + $formattedMessages = array($lastFormattedMessage); + + $batchRecord = null; + } + } + + if (null !== $batchRecord) { + $batchRecords[] = $batchRecord; + } + + // Set the max level and datetime for all records + foreach ($batchRecords as &$batchRecord) { + $batchRecord = array_merge( + $batchRecord, + array( + 'level' => $level, + 'level_name' => $levelName, + 'datetime' => $datetime, + ) + ); + } + + return $batchRecords; + } + + /** + * Validates the length of a string. + * + * If the `mb_strlen()` function is available, it will use that, as HipChat + * allows UTF-8 characters. Otherwise, it will fall back to `strlen()`. + * + * Note that this might cause false failures in the specific case of using + * a valid name with less than 16 characters, but 16 or more bytes, on a + * system where `mb_strlen()` is unavailable. + * + * @param string $str + * @param int $length + * + * @return bool + */ + private function validateStringLength($str, $length) + { + if (function_exists('mb_strlen')) { + return (mb_strlen($str) <= $length); + } + + return (strlen($str) <= $length); + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/IFTTTHandler.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/IFTTTHandler.php new file mode 100644 index 0000000..f4d3b97 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/IFTTTHandler.php @@ -0,0 +1,70 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Handler; + +use Monolog\Logger; +use Monolog\Utils; + +/** + * IFTTTHandler uses cURL to trigger IFTTT Maker actions + * + * Register a secret key and trigger/event name at https://ifttt.com/maker + * + * value1 will be the channel from monolog's Logger constructor, + * value2 will be the level name (ERROR, WARNING, ..) + * value3 will be the log record's message + * + * @author Nehal Patel + */ +class IFTTTHandler extends AbstractProcessingHandler +{ + private $eventName; + private $secretKey; + + /** + * @param string $eventName The name of the IFTTT Maker event that should be triggered + * @param string $secretKey A valid IFTTT secret key + * @param int $level The minimum logging level at which this handler will be triggered + * @param bool $bubble Whether the messages that are handled can bubble up the stack or not + */ + public function __construct($eventName, $secretKey, $level = Logger::ERROR, $bubble = true) + { + $this->eventName = $eventName; + $this->secretKey = $secretKey; + + parent::__construct($level, $bubble); + } + + /** + * {@inheritdoc} + */ + public function write(array $record) + { + $postData = array( + "value1" => $record["channel"], + "value2" => $record["level_name"], + "value3" => $record["message"], + ); + $postString = Utils::jsonEncode($postData); + + $ch = curl_init(); + curl_setopt($ch, CURLOPT_URL, "https://maker.ifttt.com/trigger/" . $this->eventName . "/with/key/" . $this->secretKey); + curl_setopt($ch, CURLOPT_POST, true); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + curl_setopt($ch, CURLOPT_POSTFIELDS, $postString); + curl_setopt($ch, CURLOPT_HTTPHEADER, array( + "Content-Type: application/json", + )); + + Curl\Util::execute($ch); + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/InsightOpsHandler.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/InsightOpsHandler.php new file mode 100644 index 0000000..8f683dc --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/InsightOpsHandler.php @@ -0,0 +1,62 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + + namespace Monolog\Handler; + + use Monolog\Logger; + +/** + * Inspired on LogEntriesHandler. + * + * @author Robert Kaufmann III + * @author Gabriel Machado + */ +class InsightOpsHandler extends SocketHandler +{ + /** + * @var string + */ + protected $logToken; + + /** + * @param string $token Log token supplied by InsightOps + * @param string $region Region where InsightOps account is hosted. Could be 'us' or 'eu'. + * @param bool $useSSL Whether or not SSL encryption should be used + * @param int $level The minimum logging level to trigger this handler + * @param bool $bubble Whether or not messages that are handled should bubble up the stack. + * + * @throws MissingExtensionException If SSL encryption is set to true and OpenSSL is missing + */ + public function __construct($token, $region = 'us', $useSSL = true, $level = Logger::DEBUG, $bubble = true) + { + if ($useSSL && !extension_loaded('openssl')) { + throw new MissingExtensionException('The OpenSSL PHP plugin is required to use SSL encrypted connection for InsightOpsHandler'); + } + + $endpoint = $useSSL + ? 'ssl://' . $region . '.data.logs.insight.rapid7.com:443' + : $region . '.data.logs.insight.rapid7.com:80'; + + parent::__construct($endpoint, $level, $bubble); + $this->logToken = $token; + } + + /** + * {@inheritdoc} + * + * @param array $record + * @return string + */ + protected function generateDataStream($record) + { + return $this->logToken . ' ' . $record['formatted']; + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/LogEntriesHandler.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/LogEntriesHandler.php new file mode 100644 index 0000000..ea89fb3 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/LogEntriesHandler.php @@ -0,0 +1,55 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Handler; + +use Monolog\Logger; + +/** + * @author Robert Kaufmann III + */ +class LogEntriesHandler extends SocketHandler +{ + /** + * @var string + */ + protected $logToken; + + /** + * @param string $token Log token supplied by LogEntries + * @param bool $useSSL Whether or not SSL encryption should be used. + * @param int $level The minimum logging level to trigger this handler + * @param bool $bubble Whether or not messages that are handled should bubble up the stack. + * + * @throws MissingExtensionException If SSL encryption is set to true and OpenSSL is missing + */ + public function __construct($token, $useSSL = true, $level = Logger::DEBUG, $bubble = true, $host = 'data.logentries.com') + { + if ($useSSL && !extension_loaded('openssl')) { + throw new MissingExtensionException('The OpenSSL PHP plugin is required to use SSL encrypted connection for LogEntriesHandler'); + } + + $endpoint = $useSSL ? 'ssl://' . $host . ':443' : $host . ':80'; + parent::__construct($endpoint, $level, $bubble); + $this->logToken = $token; + } + + /** + * {@inheritdoc} + * + * @param array $record + * @return string + */ + protected function generateDataStream($record) + { + return $this->logToken . ' ' . $record['formatted']; + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/LogglyHandler.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/LogglyHandler.php new file mode 100644 index 0000000..bcd62e1 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/LogglyHandler.php @@ -0,0 +1,102 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Handler; + +use Monolog\Logger; +use Monolog\Formatter\LogglyFormatter; + +/** + * Sends errors to Loggly. + * + * @author Przemek Sobstel + * @author Adam Pancutt + * @author Gregory Barchard + */ +class LogglyHandler extends AbstractProcessingHandler +{ + const HOST = 'logs-01.loggly.com'; + const ENDPOINT_SINGLE = 'inputs'; + const ENDPOINT_BATCH = 'bulk'; + + protected $token; + + protected $tag = array(); + + public function __construct($token, $level = Logger::DEBUG, $bubble = true) + { + if (!extension_loaded('curl')) { + throw new \LogicException('The curl extension is needed to use the LogglyHandler'); + } + + $this->token = $token; + + parent::__construct($level, $bubble); + } + + public function setTag($tag) + { + $tag = !empty($tag) ? $tag : array(); + $this->tag = is_array($tag) ? $tag : array($tag); + } + + public function addTag($tag) + { + if (!empty($tag)) { + $tag = is_array($tag) ? $tag : array($tag); + $this->tag = array_unique(array_merge($this->tag, $tag)); + } + } + + protected function write(array $record) + { + $this->send($record["formatted"], self::ENDPOINT_SINGLE); + } + + public function handleBatch(array $records) + { + $level = $this->level; + + $records = array_filter($records, function ($record) use ($level) { + return ($record['level'] >= $level); + }); + + if ($records) { + $this->send($this->getFormatter()->formatBatch($records), self::ENDPOINT_BATCH); + } + } + + protected function send($data, $endpoint) + { + $url = sprintf("https://%s/%s/%s/", self::HOST, $endpoint, $this->token); + + $headers = array('Content-Type: application/json'); + + if (!empty($this->tag)) { + $headers[] = 'X-LOGGLY-TAG: '.implode(',', $this->tag); + } + + $ch = curl_init(); + + curl_setopt($ch, CURLOPT_URL, $url); + curl_setopt($ch, CURLOPT_POST, true); + curl_setopt($ch, CURLOPT_POSTFIELDS, $data); + curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + + Curl\Util::execute($ch); + } + + protected function getDefaultFormatter() + { + return new LogglyFormatter(); + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/MailHandler.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/MailHandler.php new file mode 100644 index 0000000..9e23283 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/MailHandler.php @@ -0,0 +1,67 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Handler; + +/** + * Base class for all mail handlers + * + * @author Gyula Sallai + */ +abstract class MailHandler extends AbstractProcessingHandler +{ + /** + * {@inheritdoc} + */ + public function handleBatch(array $records) + { + $messages = array(); + + foreach ($records as $record) { + if ($record['level'] < $this->level) { + continue; + } + $messages[] = $this->processRecord($record); + } + + if (!empty($messages)) { + $this->send((string) $this->getFormatter()->formatBatch($messages), $messages); + } + } + + /** + * Send a mail with the given content + * + * @param string $content formatted email body to be sent + * @param array $records the array of log records that formed this content + */ + abstract protected function send($content, array $records); + + /** + * {@inheritdoc} + */ + protected function write(array $record) + { + $this->send((string) $record['formatted'], array($record)); + } + + protected function getHighestRecord(array $records) + { + $highestRecord = null; + foreach ($records as $record) { + if ($highestRecord === null || $highestRecord['level'] < $record['level']) { + $highestRecord = $record; + } + } + + return $highestRecord; + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/MandrillHandler.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/MandrillHandler.php new file mode 100644 index 0000000..3f0956a --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/MandrillHandler.php @@ -0,0 +1,68 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Handler; + +use Monolog\Logger; + +/** + * MandrillHandler uses cURL to send the emails to the Mandrill API + * + * @author Adam Nicholson + */ +class MandrillHandler extends MailHandler +{ + protected $message; + protected $apiKey; + + /** + * @param string $apiKey A valid Mandrill API key + * @param callable|\Swift_Message $message An example message for real messages, only the body will be replaced + * @param int $level The minimum logging level at which this handler will be triggered + * @param bool $bubble Whether the messages that are handled can bubble up the stack or not + */ + public function __construct($apiKey, $message, $level = Logger::ERROR, $bubble = true) + { + parent::__construct($level, $bubble); + + if (!$message instanceof \Swift_Message && is_callable($message)) { + $message = call_user_func($message); + } + if (!$message instanceof \Swift_Message) { + throw new \InvalidArgumentException('You must provide either a Swift_Message instance or a callable returning it'); + } + $this->message = $message; + $this->apiKey = $apiKey; + } + + /** + * {@inheritdoc} + */ + protected function send($content, array $records) + { + $message = clone $this->message; + $message->setBody($content); + $message->setDate(time()); + + $ch = curl_init(); + + curl_setopt($ch, CURLOPT_URL, 'https://mandrillapp.com/api/1.0/messages/send-raw.json'); + curl_setopt($ch, CURLOPT_POST, 1); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(array( + 'key' => $this->apiKey, + 'raw_message' => (string) $message, + 'async' => false, + ))); + + Curl\Util::execute($ch); + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/MissingExtensionException.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/MissingExtensionException.php new file mode 100644 index 0000000..4724a7e --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/MissingExtensionException.php @@ -0,0 +1,21 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Handler; + +/** + * Exception can be thrown if an extension for an handler is missing + * + * @author Christian Bergau + */ +class MissingExtensionException extends \Exception +{ +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/MongoDBHandler.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/MongoDBHandler.php new file mode 100644 index 0000000..56fe755 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/MongoDBHandler.php @@ -0,0 +1,59 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Handler; + +use Monolog\Logger; +use Monolog\Formatter\NormalizerFormatter; + +/** + * Logs to a MongoDB database. + * + * usage example: + * + * $log = new Logger('application'); + * $mongodb = new MongoDBHandler(new \Mongo("mongodb://localhost:27017"), "logs", "prod"); + * $log->pushHandler($mongodb); + * + * @author Thomas Tourlourat + */ +class MongoDBHandler extends AbstractProcessingHandler +{ + protected $mongoCollection; + + public function __construct($mongo, $database, $collection, $level = Logger::DEBUG, $bubble = true) + { + if (!($mongo instanceof \MongoClient || $mongo instanceof \Mongo || $mongo instanceof \MongoDB\Client)) { + throw new \InvalidArgumentException('MongoClient, Mongo or MongoDB\Client instance required'); + } + + $this->mongoCollection = $mongo->selectCollection($database, $collection); + + parent::__construct($level, $bubble); + } + + protected function write(array $record) + { + if ($this->mongoCollection instanceof \MongoDB\Collection) { + $this->mongoCollection->insertOne($record["formatted"]); + } else { + $this->mongoCollection->save($record["formatted"]); + } + } + + /** + * {@inheritDoc} + */ + protected function getDefaultFormatter() + { + return new NormalizerFormatter(); + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/NativeMailerHandler.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/NativeMailerHandler.php new file mode 100644 index 0000000..d7807fd --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/NativeMailerHandler.php @@ -0,0 +1,185 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Handler; + +use Monolog\Logger; +use Monolog\Formatter\LineFormatter; + +/** + * NativeMailerHandler uses the mail() function to send the emails + * + * @author Christophe Coevoet + * @author Mark Garrett + */ +class NativeMailerHandler extends MailHandler +{ + /** + * The email addresses to which the message will be sent + * @var array + */ + protected $to; + + /** + * The subject of the email + * @var string + */ + protected $subject; + + /** + * Optional headers for the message + * @var array + */ + protected $headers = array(); + + /** + * Optional parameters for the message + * @var array + */ + protected $parameters = array(); + + /** + * The wordwrap length for the message + * @var int + */ + protected $maxColumnWidth; + + /** + * The Content-type for the message + * @var string + */ + protected $contentType = 'text/plain'; + + /** + * The encoding for the message + * @var string + */ + protected $encoding = 'utf-8'; + + /** + * @param string|array $to The receiver of the mail + * @param string $subject The subject of the mail + * @param string $from The sender of the mail + * @param int $level The minimum logging level at which this handler will be triggered + * @param bool $bubble Whether the messages that are handled can bubble up the stack or not + * @param int $maxColumnWidth The maximum column width that the message lines will have + */ + public function __construct($to, $subject, $from, $level = Logger::ERROR, $bubble = true, $maxColumnWidth = 70) + { + parent::__construct($level, $bubble); + $this->to = is_array($to) ? $to : array($to); + $this->subject = $subject; + $this->addHeader(sprintf('From: %s', $from)); + $this->maxColumnWidth = $maxColumnWidth; + } + + /** + * Add headers to the message + * + * @param string|array $headers Custom added headers + * @return self + */ + public function addHeader($headers) + { + foreach ((array) $headers as $header) { + if (strpos($header, "\n") !== false || strpos($header, "\r") !== false) { + throw new \InvalidArgumentException('Headers can not contain newline characters for security reasons'); + } + $this->headers[] = $header; + } + + return $this; + } + + /** + * Add parameters to the message + * + * @param string|array $parameters Custom added parameters + * @return self + */ + public function addParameter($parameters) + { + $this->parameters = array_merge($this->parameters, (array) $parameters); + + return $this; + } + + /** + * {@inheritdoc} + */ + protected function send($content, array $records) + { + $content = wordwrap($content, $this->maxColumnWidth); + $headers = ltrim(implode("\r\n", $this->headers) . "\r\n", "\r\n"); + $headers .= 'Content-type: ' . $this->getContentType() . '; charset=' . $this->getEncoding() . "\r\n"; + if ($this->getContentType() == 'text/html' && false === strpos($headers, 'MIME-Version:')) { + $headers .= 'MIME-Version: 1.0' . "\r\n"; + } + + $subject = $this->subject; + if ($records) { + $subjectFormatter = new LineFormatter($this->subject); + $subject = $subjectFormatter->format($this->getHighestRecord($records)); + } + + $parameters = implode(' ', $this->parameters); + foreach ($this->to as $to) { + mail($to, $subject, $content, $headers, $parameters); + } + } + + /** + * @return string $contentType + */ + public function getContentType() + { + return $this->contentType; + } + + /** + * @return string $encoding + */ + public function getEncoding() + { + return $this->encoding; + } + + /** + * @param string $contentType The content type of the email - Defaults to text/plain. Use text/html for HTML + * messages. + * @return self + */ + public function setContentType($contentType) + { + if (strpos($contentType, "\n") !== false || strpos($contentType, "\r") !== false) { + throw new \InvalidArgumentException('The content type can not contain newline characters to prevent email header injection'); + } + + $this->contentType = $contentType; + + return $this; + } + + /** + * @param string $encoding + * @return self + */ + public function setEncoding($encoding) + { + if (strpos($encoding, "\n") !== false || strpos($encoding, "\r") !== false) { + throw new \InvalidArgumentException('The encoding can not contain newline characters to prevent email header injection'); + } + + $this->encoding = $encoding; + + return $this; + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/NewRelicHandler.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/NewRelicHandler.php new file mode 100644 index 0000000..64dc138 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/NewRelicHandler.php @@ -0,0 +1,205 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Handler; + +use Monolog\Logger; +use Monolog\Utils; +use Monolog\Formatter\NormalizerFormatter; + +/** + * Class to record a log on a NewRelic application. + * Enabling New Relic High Security mode may prevent capture of useful information. + * + * This handler requires a NormalizerFormatter to function and expects an array in $record['formatted'] + * + * @see https://docs.newrelic.com/docs/agents/php-agent + * @see https://docs.newrelic.com/docs/accounts-partnerships/accounts/security/high-security + */ +class NewRelicHandler extends AbstractProcessingHandler +{ + /** + * Name of the New Relic application that will receive logs from this handler. + * + * @var string + */ + protected $appName; + + /** + * Name of the current transaction + * + * @var string + */ + protected $transactionName; + + /** + * Some context and extra data is passed into the handler as arrays of values. Do we send them as is + * (useful if we are using the API), or explode them for display on the NewRelic RPM website? + * + * @var bool + */ + protected $explodeArrays; + + /** + * {@inheritDoc} + * + * @param string $appName + * @param bool $explodeArrays + * @param string $transactionName + */ + public function __construct( + $level = Logger::ERROR, + $bubble = true, + $appName = null, + $explodeArrays = false, + $transactionName = null + ) { + parent::__construct($level, $bubble); + + $this->appName = $appName; + $this->explodeArrays = $explodeArrays; + $this->transactionName = $transactionName; + } + + /** + * {@inheritDoc} + */ + protected function write(array $record) + { + if (!$this->isNewRelicEnabled()) { + throw new MissingExtensionException('The newrelic PHP extension is required to use the NewRelicHandler'); + } + + if ($appName = $this->getAppName($record['context'])) { + $this->setNewRelicAppName($appName); + } + + if ($transactionName = $this->getTransactionName($record['context'])) { + $this->setNewRelicTransactionName($transactionName); + unset($record['formatted']['context']['transaction_name']); + } + + if (isset($record['context']['exception']) && ($record['context']['exception'] instanceof \Exception || (PHP_VERSION_ID >= 70000 && $record['context']['exception'] instanceof \Throwable))) { + newrelic_notice_error($record['message'], $record['context']['exception']); + unset($record['formatted']['context']['exception']); + } else { + newrelic_notice_error($record['message']); + } + + if (isset($record['formatted']['context']) && is_array($record['formatted']['context'])) { + foreach ($record['formatted']['context'] as $key => $parameter) { + if (is_array($parameter) && $this->explodeArrays) { + foreach ($parameter as $paramKey => $paramValue) { + $this->setNewRelicParameter('context_' . $key . '_' . $paramKey, $paramValue); + } + } else { + $this->setNewRelicParameter('context_' . $key, $parameter); + } + } + } + + if (isset($record['formatted']['extra']) && is_array($record['formatted']['extra'])) { + foreach ($record['formatted']['extra'] as $key => $parameter) { + if (is_array($parameter) && $this->explodeArrays) { + foreach ($parameter as $paramKey => $paramValue) { + $this->setNewRelicParameter('extra_' . $key . '_' . $paramKey, $paramValue); + } + } else { + $this->setNewRelicParameter('extra_' . $key, $parameter); + } + } + } + } + + /** + * Checks whether the NewRelic extension is enabled in the system. + * + * @return bool + */ + protected function isNewRelicEnabled() + { + return extension_loaded('newrelic'); + } + + /** + * Returns the appname where this log should be sent. Each log can override the default appname, set in this + * handler's constructor, by providing the appname in it's context. + * + * @param array $context + * @return null|string + */ + protected function getAppName(array $context) + { + if (isset($context['appname'])) { + return $context['appname']; + } + + return $this->appName; + } + + /** + * Returns the name of the current transaction. Each log can override the default transaction name, set in this + * handler's constructor, by providing the transaction_name in it's context + * + * @param array $context + * + * @return null|string + */ + protected function getTransactionName(array $context) + { + if (isset($context['transaction_name'])) { + return $context['transaction_name']; + } + + return $this->transactionName; + } + + /** + * Sets the NewRelic application that should receive this log. + * + * @param string $appName + */ + protected function setNewRelicAppName($appName) + { + newrelic_set_appname($appName); + } + + /** + * Overwrites the name of the current transaction + * + * @param string $transactionName + */ + protected function setNewRelicTransactionName($transactionName) + { + newrelic_name_transaction($transactionName); + } + + /** + * @param string $key + * @param mixed $value + */ + protected function setNewRelicParameter($key, $value) + { + if (null === $value || is_scalar($value)) { + newrelic_add_custom_parameter($key, $value); + } else { + newrelic_add_custom_parameter($key, Utils::jsonEncode($value, null, true)); + } + } + + /** + * {@inheritDoc} + */ + protected function getDefaultFormatter() + { + return new NormalizerFormatter(); + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/NullHandler.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/NullHandler.php new file mode 100644 index 0000000..4b84588 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/NullHandler.php @@ -0,0 +1,45 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Handler; + +use Monolog\Logger; + +/** + * Blackhole + * + * Any record it can handle will be thrown away. This can be used + * to put on top of an existing stack to override it temporarily. + * + * @author Jordi Boggiano + */ +class NullHandler extends AbstractHandler +{ + /** + * @param int $level The minimum logging level at which this handler will be triggered + */ + public function __construct($level = Logger::DEBUG) + { + parent::__construct($level, false); + } + + /** + * {@inheritdoc} + */ + public function handle(array $record) + { + if ($record['level'] < $this->level) { + return false; + } + + return true; + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/PHPConsoleHandler.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/PHPConsoleHandler.php new file mode 100644 index 0000000..d0a8b43 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/PHPConsoleHandler.php @@ -0,0 +1,243 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Handler; + +use Exception; +use Monolog\Formatter\LineFormatter; +use Monolog\Logger; +use Monolog\Utils; +use PhpConsole\Connector; +use PhpConsole\Handler; +use PhpConsole\Helper; + +/** + * Monolog handler for Google Chrome extension "PHP Console" + * + * Display PHP error/debug log messages in Google Chrome console and notification popups, executes PHP code remotely + * + * Usage: + * 1. Install Google Chrome extension https://chrome.google.com/webstore/detail/php-console/nfhmhhlpfleoednkpnnnkolmclajemef + * 2. See overview https://github.com/barbushin/php-console#overview + * 3. Install PHP Console library https://github.com/barbushin/php-console#installation + * 4. Example (result will looks like http://i.hizliresim.com/vg3Pz4.png) + * + * $logger = new \Monolog\Logger('all', array(new \Monolog\Handler\PHPConsoleHandler())); + * \Monolog\ErrorHandler::register($logger); + * echo $undefinedVar; + * $logger->addDebug('SELECT * FROM users', array('db', 'time' => 0.012)); + * PC::debug($_SERVER); // PHP Console debugger for any type of vars + * + * @author Sergey Barbushin https://www.linkedin.com/in/barbushin + */ +class PHPConsoleHandler extends AbstractProcessingHandler +{ + private $options = array( + 'enabled' => true, // bool Is PHP Console server enabled + 'classesPartialsTraceIgnore' => array('Monolog\\'), // array Hide calls of classes started with... + 'debugTagsKeysInContext' => array(0, 'tag'), // bool Is PHP Console server enabled + 'useOwnErrorsHandler' => false, // bool Enable errors handling + 'useOwnExceptionsHandler' => false, // bool Enable exceptions handling + 'sourcesBasePath' => null, // string Base path of all project sources to strip in errors source paths + 'registerHelper' => true, // bool Register PhpConsole\Helper that allows short debug calls like PC::debug($var, 'ta.g.s') + 'serverEncoding' => null, // string|null Server internal encoding + 'headersLimit' => null, // int|null Set headers size limit for your web-server + 'password' => null, // string|null Protect PHP Console connection by password + 'enableSslOnlyMode' => false, // bool Force connection by SSL for clients with PHP Console installed + 'ipMasks' => array(), // array Set IP masks of clients that will be allowed to connect to PHP Console: array('192.168.*.*', '127.0.0.1') + 'enableEvalListener' => false, // bool Enable eval request to be handled by eval dispatcher(if enabled, 'password' option is also required) + 'dumperDetectCallbacks' => false, // bool Convert callback items in dumper vars to (callback SomeClass::someMethod) strings + 'dumperLevelLimit' => 5, // int Maximum dumped vars array or object nested dump level + 'dumperItemsCountLimit' => 100, // int Maximum dumped var same level array items or object properties number + 'dumperItemSizeLimit' => 5000, // int Maximum length of any string or dumped array item + 'dumperDumpSizeLimit' => 500000, // int Maximum approximate size of dumped vars result formatted in JSON + 'detectDumpTraceAndSource' => false, // bool Autodetect and append trace data to debug + 'dataStorage' => null, // PhpConsole\Storage|null Fixes problem with custom $_SESSION handler(see http://goo.gl/Ne8juJ) + ); + + /** @var Connector */ + private $connector; + + /** + * @param array $options See \Monolog\Handler\PHPConsoleHandler::$options for more details + * @param Connector|null $connector Instance of \PhpConsole\Connector class (optional) + * @param int $level + * @param bool $bubble + * @throws Exception + */ + public function __construct(array $options = array(), Connector $connector = null, $level = Logger::DEBUG, $bubble = true) + { + if (!class_exists('PhpConsole\Connector')) { + throw new Exception('PHP Console library not found. See https://github.com/barbushin/php-console#installation'); + } + parent::__construct($level, $bubble); + $this->options = $this->initOptions($options); + $this->connector = $this->initConnector($connector); + } + + private function initOptions(array $options) + { + $wrongOptions = array_diff(array_keys($options), array_keys($this->options)); + if ($wrongOptions) { + throw new Exception('Unknown options: ' . implode(', ', $wrongOptions)); + } + + return array_replace($this->options, $options); + } + + private function initConnector(Connector $connector = null) + { + if (!$connector) { + if ($this->options['dataStorage']) { + Connector::setPostponeStorage($this->options['dataStorage']); + } + $connector = Connector::getInstance(); + } + + if ($this->options['registerHelper'] && !Helper::isRegistered()) { + Helper::register(); + } + + if ($this->options['enabled'] && $connector->isActiveClient()) { + if ($this->options['useOwnErrorsHandler'] || $this->options['useOwnExceptionsHandler']) { + $handler = Handler::getInstance(); + $handler->setHandleErrors($this->options['useOwnErrorsHandler']); + $handler->setHandleExceptions($this->options['useOwnExceptionsHandler']); + $handler->start(); + } + if ($this->options['sourcesBasePath']) { + $connector->setSourcesBasePath($this->options['sourcesBasePath']); + } + if ($this->options['serverEncoding']) { + $connector->setServerEncoding($this->options['serverEncoding']); + } + if ($this->options['password']) { + $connector->setPassword($this->options['password']); + } + if ($this->options['enableSslOnlyMode']) { + $connector->enableSslOnlyMode(); + } + if ($this->options['ipMasks']) { + $connector->setAllowedIpMasks($this->options['ipMasks']); + } + if ($this->options['headersLimit']) { + $connector->setHeadersLimit($this->options['headersLimit']); + } + if ($this->options['detectDumpTraceAndSource']) { + $connector->getDebugDispatcher()->detectTraceAndSource = true; + } + $dumper = $connector->getDumper(); + $dumper->levelLimit = $this->options['dumperLevelLimit']; + $dumper->itemsCountLimit = $this->options['dumperItemsCountLimit']; + $dumper->itemSizeLimit = $this->options['dumperItemSizeLimit']; + $dumper->dumpSizeLimit = $this->options['dumperDumpSizeLimit']; + $dumper->detectCallbacks = $this->options['dumperDetectCallbacks']; + if ($this->options['enableEvalListener']) { + $connector->startEvalRequestsListener(); + } + } + + return $connector; + } + + public function getConnector() + { + return $this->connector; + } + + public function getOptions() + { + return $this->options; + } + + public function handle(array $record) + { + if ($this->options['enabled'] && $this->connector->isActiveClient()) { + return parent::handle($record); + } + + return !$this->bubble; + } + + /** + * Writes the record down to the log of the implementing handler + * + * @param array $record + * @return void + */ + protected function write(array $record) + { + if ($record['level'] < Logger::NOTICE) { + $this->handleDebugRecord($record); + } elseif (isset($record['context']['exception']) && $record['context']['exception'] instanceof Exception) { + $this->handleExceptionRecord($record); + } else { + $this->handleErrorRecord($record); + } + } + + private function handleDebugRecord(array $record) + { + $tags = $this->getRecordTags($record); + $message = $record['message']; + if ($record['context']) { + $message .= ' ' . Utils::jsonEncode($this->connector->getDumper()->dump(array_filter($record['context'])), null, true); + } + $this->connector->getDebugDispatcher()->dispatchDebug($message, $tags, $this->options['classesPartialsTraceIgnore']); + } + + private function handleExceptionRecord(array $record) + { + $this->connector->getErrorsDispatcher()->dispatchException($record['context']['exception']); + } + + private function handleErrorRecord(array $record) + { + $context = $record['context']; + + $this->connector->getErrorsDispatcher()->dispatchError( + isset($context['code']) ? $context['code'] : null, + isset($context['message']) ? $context['message'] : $record['message'], + isset($context['file']) ? $context['file'] : null, + isset($context['line']) ? $context['line'] : null, + $this->options['classesPartialsTraceIgnore'] + ); + } + + private function getRecordTags(array &$record) + { + $tags = null; + if (!empty($record['context'])) { + $context = & $record['context']; + foreach ($this->options['debugTagsKeysInContext'] as $key) { + if (!empty($context[$key])) { + $tags = $context[$key]; + if ($key === 0) { + array_shift($context); + } else { + unset($context[$key]); + } + break; + } + } + } + + return $tags ?: strtolower($record['level_name']); + } + + /** + * {@inheritDoc} + */ + protected function getDefaultFormatter() + { + return new LineFormatter('%message%'); + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/ProcessableHandlerInterface.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/ProcessableHandlerInterface.php new file mode 100644 index 0000000..66a3d83 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/ProcessableHandlerInterface.php @@ -0,0 +1,40 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Handler; + +use Monolog\Processor\ProcessorInterface; + +/** + * Interface to describe loggers that have processors + * + * This interface is present in monolog 1.x to ease forward compatibility. + * + * @author Jordi Boggiano + */ +interface ProcessableHandlerInterface +{ + /** + * Adds a processor in the stack. + * + * @param ProcessorInterface|callable $callback + * @return HandlerInterface self + */ + public function pushProcessor($callback): HandlerInterface; + + /** + * Removes the processor on top of the stack and returns it. + * + * @throws \LogicException In case the processor stack is empty + * @return callable + */ + public function popProcessor(): callable; +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/ProcessableHandlerTrait.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/ProcessableHandlerTrait.php new file mode 100644 index 0000000..09f32a1 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/ProcessableHandlerTrait.php @@ -0,0 +1,73 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Handler; + +use Monolog\ResettableInterface; + +/** + * Helper trait for implementing ProcessableInterface + * + * This trait is present in monolog 1.x to ease forward compatibility. + * + * @author Jordi Boggiano + */ +trait ProcessableHandlerTrait +{ + /** + * @var callable[] + */ + protected $processors = []; + + /** + * {@inheritdoc} + * @suppress PhanTypeMismatchReturn + */ + public function pushProcessor($callback): HandlerInterface + { + array_unshift($this->processors, $callback); + + return $this; + } + + /** + * {@inheritdoc} + */ + public function popProcessor(): callable + { + if (!$this->processors) { + throw new \LogicException('You tried to pop from an empty processor stack.'); + } + + return array_shift($this->processors); + } + + /** + * Processes a record. + */ + protected function processRecord(array $record): array + { + foreach ($this->processors as $processor) { + $record = $processor($record); + } + + return $record; + } + + protected function resetProcessors(): void + { + foreach ($this->processors as $processor) { + if ($processor instanceof ResettableInterface) { + $processor->reset(); + } + } + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/PsrHandler.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/PsrHandler.php new file mode 100644 index 0000000..a99e6ab --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/PsrHandler.php @@ -0,0 +1,56 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Handler; + +use Monolog\Logger; +use Psr\Log\LoggerInterface; + +/** + * Proxies log messages to an existing PSR-3 compliant logger. + * + * @author Michael Moussa + */ +class PsrHandler extends AbstractHandler +{ + /** + * PSR-3 compliant logger + * + * @var LoggerInterface + */ + protected $logger; + + /** + * @param LoggerInterface $logger The underlying PSR-3 compliant logger to which messages will be proxied + * @param int $level The minimum logging level at which this handler will be triggered + * @param bool $bubble Whether the messages that are handled can bubble up the stack or not + */ + public function __construct(LoggerInterface $logger, $level = Logger::DEBUG, $bubble = true) + { + parent::__construct($level, $bubble); + + $this->logger = $logger; + } + + /** + * {@inheritDoc} + */ + public function handle(array $record) + { + if (!$this->isHandling($record)) { + return false; + } + + $this->logger->log(strtolower($record['level_name']), $record['message'], $record['context']); + + return false === $this->bubble; + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/PushoverHandler.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/PushoverHandler.php new file mode 100644 index 0000000..f27bb3d --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/PushoverHandler.php @@ -0,0 +1,185 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Handler; + +use Monolog\Logger; + +/** + * Sends notifications through the pushover api to mobile phones + * + * @author Sebastian Göttschkes + * @see https://www.pushover.net/api + */ +class PushoverHandler extends SocketHandler +{ + private $token; + private $users; + private $title; + private $user; + private $retry; + private $expire; + + private $highPriorityLevel; + private $emergencyLevel; + private $useFormattedMessage = false; + + /** + * All parameters that can be sent to Pushover + * @see https://pushover.net/api + * @var array + */ + private $parameterNames = array( + 'token' => true, + 'user' => true, + 'message' => true, + 'device' => true, + 'title' => true, + 'url' => true, + 'url_title' => true, + 'priority' => true, + 'timestamp' => true, + 'sound' => true, + 'retry' => true, + 'expire' => true, + 'callback' => true, + ); + + /** + * Sounds the api supports by default + * @see https://pushover.net/api#sounds + * @var array + */ + private $sounds = array( + 'pushover', 'bike', 'bugle', 'cashregister', 'classical', 'cosmic', 'falling', 'gamelan', 'incoming', + 'intermission', 'magic', 'mechanical', 'pianobar', 'siren', 'spacealarm', 'tugboat', 'alien', 'climb', + 'persistent', 'echo', 'updown', 'none', + ); + + /** + * @param string $token Pushover api token + * @param string|array $users Pushover user id or array of ids the message will be sent to + * @param string $title Title sent to the Pushover API + * @param int $level The minimum logging level at which this handler will be triggered + * @param bool $bubble Whether the messages that are handled can bubble up the stack or not + * @param bool $useSSL Whether to connect via SSL. Required when pushing messages to users that are not + * the pushover.net app owner. OpenSSL is required for this option. + * @param int $highPriorityLevel The minimum logging level at which this handler will start + * sending "high priority" requests to the Pushover API + * @param int $emergencyLevel The minimum logging level at which this handler will start + * sending "emergency" requests to the Pushover API + * @param int $retry The retry parameter specifies how often (in seconds) the Pushover servers will send the same notification to the user. + * @param int $expire The expire parameter specifies how many seconds your notification will continue to be retried for (every retry seconds). + */ + public function __construct($token, $users, $title = null, $level = Logger::CRITICAL, $bubble = true, $useSSL = true, $highPriorityLevel = Logger::CRITICAL, $emergencyLevel = Logger::EMERGENCY, $retry = 30, $expire = 25200) + { + $connectionString = $useSSL ? 'ssl://api.pushover.net:443' : 'api.pushover.net:80'; + parent::__construct($connectionString, $level, $bubble); + + $this->token = $token; + $this->users = (array) $users; + $this->title = $title ?: gethostname(); + $this->highPriorityLevel = Logger::toMonologLevel($highPriorityLevel); + $this->emergencyLevel = Logger::toMonologLevel($emergencyLevel); + $this->retry = $retry; + $this->expire = $expire; + } + + protected function generateDataStream($record) + { + $content = $this->buildContent($record); + + return $this->buildHeader($content) . $content; + } + + private function buildContent($record) + { + // Pushover has a limit of 512 characters on title and message combined. + $maxMessageLength = 512 - strlen($this->title); + + $message = ($this->useFormattedMessage) ? $record['formatted'] : $record['message']; + $message = substr($message, 0, $maxMessageLength); + + $timestamp = $record['datetime']->getTimestamp(); + + $dataArray = array( + 'token' => $this->token, + 'user' => $this->user, + 'message' => $message, + 'title' => $this->title, + 'timestamp' => $timestamp, + ); + + if (isset($record['level']) && $record['level'] >= $this->emergencyLevel) { + $dataArray['priority'] = 2; + $dataArray['retry'] = $this->retry; + $dataArray['expire'] = $this->expire; + } elseif (isset($record['level']) && $record['level'] >= $this->highPriorityLevel) { + $dataArray['priority'] = 1; + } + + // First determine the available parameters + $context = array_intersect_key($record['context'], $this->parameterNames); + $extra = array_intersect_key($record['extra'], $this->parameterNames); + + // Least important info should be merged with subsequent info + $dataArray = array_merge($extra, $context, $dataArray); + + // Only pass sounds that are supported by the API + if (isset($dataArray['sound']) && !in_array($dataArray['sound'], $this->sounds)) { + unset($dataArray['sound']); + } + + return http_build_query($dataArray); + } + + private function buildHeader($content) + { + $header = "POST /1/messages.json HTTP/1.1\r\n"; + $header .= "Host: api.pushover.net\r\n"; + $header .= "Content-Type: application/x-www-form-urlencoded\r\n"; + $header .= "Content-Length: " . strlen($content) . "\r\n"; + $header .= "\r\n"; + + return $header; + } + + protected function write(array $record) + { + foreach ($this->users as $user) { + $this->user = $user; + + parent::write($record); + $this->closeSocket(); + } + + $this->user = null; + } + + public function setHighPriorityLevel($value) + { + $this->highPriorityLevel = $value; + } + + public function setEmergencyLevel($value) + { + $this->emergencyLevel = $value; + } + + /** + * Use the formatted message? + * @param bool $value + */ + public function useFormattedMessage($value) + { + $this->useFormattedMessage = (bool) $value; + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/RavenHandler.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/RavenHandler.php new file mode 100644 index 0000000..9d24dfe --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/RavenHandler.php @@ -0,0 +1,234 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Handler; + +use Monolog\Formatter\LineFormatter; +use Monolog\Formatter\FormatterInterface; +use Monolog\Logger; +use Raven_Client; + +/** + * Handler to send messages to a Sentry (https://github.com/getsentry/sentry) server + * using sentry-php (https://github.com/getsentry/sentry-php) + * + * @author Marc Abramowitz + */ +class RavenHandler extends AbstractProcessingHandler +{ + /** + * Translates Monolog log levels to Raven log levels. + */ + protected $logLevels = array( + Logger::DEBUG => Raven_Client::DEBUG, + Logger::INFO => Raven_Client::INFO, + Logger::NOTICE => Raven_Client::INFO, + Logger::WARNING => Raven_Client::WARNING, + Logger::ERROR => Raven_Client::ERROR, + Logger::CRITICAL => Raven_Client::FATAL, + Logger::ALERT => Raven_Client::FATAL, + Logger::EMERGENCY => Raven_Client::FATAL, + ); + + /** + * @var string should represent the current version of the calling + * software. Can be any string (git commit, version number) + */ + protected $release; + + /** + * @var Raven_Client the client object that sends the message to the server + */ + protected $ravenClient; + + /** + * @var LineFormatter The formatter to use for the logs generated via handleBatch() + */ + protected $batchFormatter; + + /** + * @param Raven_Client $ravenClient + * @param int $level The minimum logging level at which this handler will be triggered + * @param bool $bubble Whether the messages that are handled can bubble up the stack or not + */ + public function __construct(Raven_Client $ravenClient, $level = Logger::DEBUG, $bubble = true) + { + @trigger_error('The Monolog\Handler\RavenHandler class is deprecated. You should rather upgrade to the sentry/sentry 2.x and use Sentry\Monolog\Handler, see https://github.com/getsentry/sentry-php/blob/master/src/Monolog/Handler.php', E_USER_DEPRECATED); + + parent::__construct($level, $bubble); + + $this->ravenClient = $ravenClient; + } + + /** + * {@inheritdoc} + */ + public function handleBatch(array $records) + { + $level = $this->level; + + // filter records based on their level + $records = array_filter($records, function ($record) use ($level) { + return $record['level'] >= $level; + }); + + if (!$records) { + return; + } + + // the record with the highest severity is the "main" one + $record = array_reduce($records, function ($highest, $record) { + if (null === $highest || $record['level'] > $highest['level']) { + return $record; + } + + return $highest; + }); + + // the other ones are added as a context item + $logs = array(); + foreach ($records as $r) { + $logs[] = $this->processRecord($r); + } + + if ($logs) { + $record['context']['logs'] = (string) $this->getBatchFormatter()->formatBatch($logs); + } + + $this->handle($record); + } + + /** + * Sets the formatter for the logs generated by handleBatch(). + * + * @param FormatterInterface $formatter + */ + public function setBatchFormatter(FormatterInterface $formatter) + { + $this->batchFormatter = $formatter; + } + + /** + * Gets the formatter for the logs generated by handleBatch(). + * + * @return FormatterInterface + */ + public function getBatchFormatter() + { + if (!$this->batchFormatter) { + $this->batchFormatter = $this->getDefaultBatchFormatter(); + } + + return $this->batchFormatter; + } + + /** + * {@inheritdoc} + */ + protected function write(array $record) + { + $previousUserContext = false; + $options = array(); + $options['level'] = $this->logLevels[$record['level']]; + $options['tags'] = array(); + if (!empty($record['extra']['tags'])) { + $options['tags'] = array_merge($options['tags'], $record['extra']['tags']); + unset($record['extra']['tags']); + } + if (!empty($record['context']['tags'])) { + $options['tags'] = array_merge($options['tags'], $record['context']['tags']); + unset($record['context']['tags']); + } + if (!empty($record['context']['fingerprint'])) { + $options['fingerprint'] = $record['context']['fingerprint']; + unset($record['context']['fingerprint']); + } + if (!empty($record['context']['logger'])) { + $options['logger'] = $record['context']['logger']; + unset($record['context']['logger']); + } else { + $options['logger'] = $record['channel']; + } + foreach ($this->getExtraParameters() as $key) { + foreach (array('extra', 'context') as $source) { + if (!empty($record[$source][$key])) { + $options[$key] = $record[$source][$key]; + unset($record[$source][$key]); + } + } + } + if (!empty($record['context'])) { + $options['extra']['context'] = $record['context']; + if (!empty($record['context']['user'])) { + $previousUserContext = $this->ravenClient->context->user; + $this->ravenClient->user_context($record['context']['user']); + unset($options['extra']['context']['user']); + } + } + if (!empty($record['extra'])) { + $options['extra']['extra'] = $record['extra']; + } + + if (!empty($this->release) && !isset($options['release'])) { + $options['release'] = $this->release; + } + + if (isset($record['context']['exception']) && ($record['context']['exception'] instanceof \Exception || (PHP_VERSION_ID >= 70000 && $record['context']['exception'] instanceof \Throwable))) { + $options['message'] = $record['formatted']; + $this->ravenClient->captureException($record['context']['exception'], $options); + } else { + $this->ravenClient->captureMessage($record['formatted'], array(), $options); + } + + if ($previousUserContext !== false) { + $this->ravenClient->user_context($previousUserContext); + } + } + + /** + * {@inheritDoc} + */ + protected function getDefaultFormatter() + { + return new LineFormatter('[%channel%] %message%'); + } + + /** + * Gets the default formatter for the logs generated by handleBatch(). + * + * @return FormatterInterface + */ + protected function getDefaultBatchFormatter() + { + return new LineFormatter(); + } + + /** + * Gets extra parameters supported by Raven that can be found in "extra" and "context" + * + * @return array + */ + protected function getExtraParameters() + { + return array('contexts', 'checksum', 'release', 'event_id'); + } + + /** + * @param string $value + * @return self + */ + public function setRelease($value) + { + $this->release = $value; + + return $this; + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/RedisHandler.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/RedisHandler.php new file mode 100644 index 0000000..bb00db5 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/RedisHandler.php @@ -0,0 +1,98 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Handler; + +use Monolog\Formatter\LineFormatter; +use Monolog\Logger; + +/** + * Logs to a Redis key using rpush + * + * usage example: + * + * $log = new Logger('application'); + * $redis = new RedisHandler(new Predis\Client("tcp://localhost:6379"), "logs", "prod"); + * $log->pushHandler($redis); + * + * @author Thomas Tourlourat + */ +class RedisHandler extends AbstractProcessingHandler +{ + private $redisClient; + private $redisKey; + protected $capSize; + + /** + * @param \Predis\Client|\Redis $redis The redis instance + * @param string $key The key name to push records to + * @param int $level The minimum logging level at which this handler will be triggered + * @param bool $bubble Whether the messages that are handled can bubble up the stack or not + * @param int $capSize Number of entries to limit list size to + */ + public function __construct($redis, $key, $level = Logger::DEBUG, $bubble = true, $capSize = false) + { + if (!(($redis instanceof \Predis\Client) || ($redis instanceof \Redis))) { + throw new \InvalidArgumentException('Predis\Client or Redis instance required'); + } + + $this->redisClient = $redis; + $this->redisKey = $key; + $this->capSize = $capSize; + + parent::__construct($level, $bubble); + } + + /** + * {@inheritDoc} + */ + protected function write(array $record) + { + if ($this->capSize) { + $this->writeCapped($record); + } else { + $this->redisClient->rpush($this->redisKey, $record["formatted"]); + } + } + + /** + * Write and cap the collection + * Writes the record to the redis list and caps its + * + * @param array $record associative record array + * @return void + */ + protected function writeCapped(array $record) + { + if ($this->redisClient instanceof \Redis) { + $mode = defined('\Redis::MULTI') ? \Redis::MULTI : 1; + $this->redisClient->multi($mode) + ->rpush($this->redisKey, $record["formatted"]) + ->ltrim($this->redisKey, -$this->capSize, -1) + ->exec(); + } else { + $redisKey = $this->redisKey; + $capSize = $this->capSize; + $this->redisClient->transaction(function ($tx) use ($record, $redisKey, $capSize) { + $tx->rpush($redisKey, $record["formatted"]); + $tx->ltrim($redisKey, -$capSize, -1); + }); + } + } + + /** + * {@inheritDoc} + */ + protected function getDefaultFormatter() + { + return new LineFormatter(); + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/RollbarHandler.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/RollbarHandler.php new file mode 100644 index 0000000..65073ff --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/RollbarHandler.php @@ -0,0 +1,144 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Handler; + +use RollbarNotifier; +use Exception; +use Monolog\Logger; + +/** + * Sends errors to Rollbar + * + * If the context data contains a `payload` key, that is used as an array + * of payload options to RollbarNotifier's report_message/report_exception methods. + * + * Rollbar's context info will contain the context + extra keys from the log record + * merged, and then on top of that a few keys: + * + * - level (rollbar level name) + * - monolog_level (monolog level name, raw level, as rollbar only has 5 but monolog 8) + * - channel + * - datetime (unix timestamp) + * + * @author Paul Statezny + */ +class RollbarHandler extends AbstractProcessingHandler +{ + /** + * Rollbar notifier + * + * @var RollbarNotifier + */ + protected $rollbarNotifier; + + protected $levelMap = array( + Logger::DEBUG => 'debug', + Logger::INFO => 'info', + Logger::NOTICE => 'info', + Logger::WARNING => 'warning', + Logger::ERROR => 'error', + Logger::CRITICAL => 'critical', + Logger::ALERT => 'critical', + Logger::EMERGENCY => 'critical', + ); + + /** + * Records whether any log records have been added since the last flush of the rollbar notifier + * + * @var bool + */ + private $hasRecords = false; + + protected $initialized = false; + + /** + * @param RollbarNotifier $rollbarNotifier RollbarNotifier object constructed with valid token + * @param int $level The minimum logging level at which this handler will be triggered + * @param bool $bubble Whether the messages that are handled can bubble up the stack or not + */ + public function __construct(RollbarNotifier $rollbarNotifier, $level = Logger::ERROR, $bubble = true) + { + $this->rollbarNotifier = $rollbarNotifier; + + parent::__construct($level, $bubble); + } + + /** + * {@inheritdoc} + */ + protected function write(array $record) + { + if (!$this->initialized) { + // __destructor() doesn't get called on Fatal errors + register_shutdown_function(array($this, 'close')); + $this->initialized = true; + } + + $context = $record['context']; + $payload = array(); + if (isset($context['payload'])) { + $payload = $context['payload']; + unset($context['payload']); + } + $context = array_merge($context, $record['extra'], array( + 'level' => $this->levelMap[$record['level']], + 'monolog_level' => $record['level_name'], + 'channel' => $record['channel'], + 'datetime' => $record['datetime']->format('U'), + )); + + if (isset($context['exception']) && $context['exception'] instanceof Exception) { + $payload['level'] = $context['level']; + $exception = $context['exception']; + unset($context['exception']); + + $this->rollbarNotifier->report_exception($exception, $context, $payload); + } else { + $this->rollbarNotifier->report_message( + $record['message'], + $context['level'], + $context, + $payload + ); + } + + $this->hasRecords = true; + } + + public function flush() + { + if ($this->hasRecords) { + $this->rollbarNotifier->flush(); + $this->hasRecords = false; + } + } + + /** + * {@inheritdoc} + */ + public function close() + { + $this->flush(); + } + + /** + * {@inheritdoc} + */ + public function reset() + { + $this->flush(); + + parent::reset(); + } + + +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/RotatingFileHandler.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/RotatingFileHandler.php new file mode 100644 index 0000000..b8253ba --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/RotatingFileHandler.php @@ -0,0 +1,191 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Handler; + +use Monolog\Logger; +use Monolog\Utils; + +/** + * Stores logs to files that are rotated every day and a limited number of files are kept. + * + * This rotation is only intended to be used as a workaround. Using logrotate to + * handle the rotation is strongly encouraged when you can use it. + * + * @author Christophe Coevoet + * @author Jordi Boggiano + */ +class RotatingFileHandler extends StreamHandler +{ + const FILE_PER_DAY = 'Y-m-d'; + const FILE_PER_MONTH = 'Y-m'; + const FILE_PER_YEAR = 'Y'; + + protected $filename; + protected $maxFiles; + protected $mustRotate; + protected $nextRotation; + protected $filenameFormat; + protected $dateFormat; + + /** + * @param string $filename + * @param int $maxFiles The maximal amount of files to keep (0 means unlimited) + * @param int $level The minimum logging level at which this handler will be triggered + * @param bool $bubble Whether the messages that are handled can bubble up the stack or not + * @param int|null $filePermission Optional file permissions (default (0644) are only for owner read/write) + * @param bool $useLocking Try to lock log file before doing any writes + */ + public function __construct($filename, $maxFiles = 0, $level = Logger::DEBUG, $bubble = true, $filePermission = null, $useLocking = false) + { + $this->filename = Utils::canonicalizePath($filename); + $this->maxFiles = (int) $maxFiles; + $this->nextRotation = new \DateTime('tomorrow'); + $this->filenameFormat = '{filename}-{date}'; + $this->dateFormat = 'Y-m-d'; + + parent::__construct($this->getTimedFilename(), $level, $bubble, $filePermission, $useLocking); + } + + /** + * {@inheritdoc} + */ + public function close() + { + parent::close(); + + if (true === $this->mustRotate) { + $this->rotate(); + } + } + + /** + * {@inheritdoc} + */ + public function reset() + { + parent::reset(); + + if (true === $this->mustRotate) { + $this->rotate(); + } + } + + public function setFilenameFormat($filenameFormat, $dateFormat) + { + if (!preg_match('{^Y(([/_.-]?m)([/_.-]?d)?)?$}', $dateFormat)) { + trigger_error( + 'Invalid date format - format must be one of '. + 'RotatingFileHandler::FILE_PER_DAY ("Y-m-d"), RotatingFileHandler::FILE_PER_MONTH ("Y-m") '. + 'or RotatingFileHandler::FILE_PER_YEAR ("Y"), or you can set one of the '. + 'date formats using slashes, underscores and/or dots instead of dashes.', + E_USER_DEPRECATED + ); + } + if (substr_count($filenameFormat, '{date}') === 0) { + trigger_error( + 'Invalid filename format - format should contain at least `{date}`, because otherwise rotating is impossible.', + E_USER_DEPRECATED + ); + } + $this->filenameFormat = $filenameFormat; + $this->dateFormat = $dateFormat; + $this->url = $this->getTimedFilename(); + $this->close(); + } + + /** + * {@inheritdoc} + */ + protected function write(array $record) + { + // on the first record written, if the log is new, we should rotate (once per day) + if (null === $this->mustRotate) { + $this->mustRotate = !file_exists($this->url); + } + + if ($this->nextRotation < $record['datetime']) { + $this->mustRotate = true; + $this->close(); + } + + parent::write($record); + } + + /** + * Rotates the files. + */ + protected function rotate() + { + // update filename + $this->url = $this->getTimedFilename(); + $this->nextRotation = new \DateTime('tomorrow'); + + // skip GC of old logs if files are unlimited + if (0 === $this->maxFiles) { + return; + } + + $logFiles = glob($this->getGlobPattern()); + if ($this->maxFiles >= count($logFiles)) { + // no files to remove + return; + } + + // Sorting the files by name to remove the older ones + usort($logFiles, function ($a, $b) { + return strcmp($b, $a); + }); + + foreach (array_slice($logFiles, $this->maxFiles) as $file) { + if (is_writable($file)) { + // suppress errors here as unlink() might fail if two processes + // are cleaning up/rotating at the same time + set_error_handler(function ($errno, $errstr, $errfile, $errline) {}); + unlink($file); + restore_error_handler(); + } + } + + $this->mustRotate = false; + } + + protected function getTimedFilename() + { + $fileInfo = pathinfo($this->filename); + $timedFilename = str_replace( + array('{filename}', '{date}'), + array($fileInfo['filename'], date($this->dateFormat)), + $fileInfo['dirname'] . '/' . $this->filenameFormat + ); + + if (!empty($fileInfo['extension'])) { + $timedFilename .= '.'.$fileInfo['extension']; + } + + return $timedFilename; + } + + protected function getGlobPattern() + { + $fileInfo = pathinfo($this->filename); + $glob = str_replace( + array('{filename}', '{date}'), + array($fileInfo['filename'], '[0-9][0-9][0-9][0-9]*'), + $fileInfo['dirname'] . '/' . $this->filenameFormat + ); + if (!empty($fileInfo['extension'])) { + $glob .= '.'.$fileInfo['extension']; + } + + return $glob; + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/SamplingHandler.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/SamplingHandler.php new file mode 100644 index 0000000..b547ed7 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/SamplingHandler.php @@ -0,0 +1,113 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Handler; + +use Monolog\Formatter\FormatterInterface; + +/** + * Sampling handler + * + * A sampled event stream can be useful for logging high frequency events in + * a production environment where you only need an idea of what is happening + * and are not concerned with capturing every occurrence. Since the decision to + * handle or not handle a particular event is determined randomly, the + * resulting sampled log is not guaranteed to contain 1/N of the events that + * occurred in the application, but based on the Law of large numbers, it will + * tend to be close to this ratio with a large number of attempts. + * + * @author Bryan Davis + * @author Kunal Mehta + */ +class SamplingHandler extends AbstractHandler +{ + /** + * @var callable|HandlerInterface $handler + */ + protected $handler; + + /** + * @var int $factor + */ + protected $factor; + + /** + * @param callable|HandlerInterface $handler Handler or factory callable($record|null, $samplingHandler). + * @param int $factor Sample factor + */ + public function __construct($handler, $factor) + { + parent::__construct(); + $this->handler = $handler; + $this->factor = $factor; + + if (!$this->handler instanceof HandlerInterface && !is_callable($this->handler)) { + throw new \RuntimeException("The given handler (".json_encode($this->handler).") is not a callable nor a Monolog\Handler\HandlerInterface object"); + } + } + + public function isHandling(array $record) + { + return $this->getHandler($record)->isHandling($record); + } + + public function handle(array $record) + { + if ($this->isHandling($record) && mt_rand(1, $this->factor) === 1) { + if ($this->processors) { + foreach ($this->processors as $processor) { + $record = call_user_func($processor, $record); + } + } + + $this->getHandler($record)->handle($record); + } + + return false === $this->bubble; + } + + /** + * Return the nested handler + * + * If the handler was provided as a factory callable, this will trigger the handler's instantiation. + * + * @return HandlerInterface + */ + public function getHandler(array $record = null) + { + if (!$this->handler instanceof HandlerInterface) { + $this->handler = call_user_func($this->handler, $record, $this); + if (!$this->handler instanceof HandlerInterface) { + throw new \RuntimeException("The factory callable should return a HandlerInterface"); + } + } + + return $this->handler; + } + + /** + * {@inheritdoc} + */ + public function setFormatter(FormatterInterface $formatter) + { + $this->getHandler()->setFormatter($formatter); + + return $this; + } + + /** + * {@inheritdoc} + */ + public function getFormatter() + { + return $this->getHandler()->getFormatter(); + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/Slack/SlackRecord.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/Slack/SlackRecord.php new file mode 100644 index 0000000..3945550 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/Slack/SlackRecord.php @@ -0,0 +1,299 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Handler\Slack; + +use Monolog\Logger; +use Monolog\Utils; +use Monolog\Formatter\NormalizerFormatter; +use Monolog\Formatter\FormatterInterface; + +/** + * Slack record utility helping to log to Slack webhooks or API. + * + * @author Greg Kedzierski + * @author Haralan Dobrev + * @see https://api.slack.com/incoming-webhooks + * @see https://api.slack.com/docs/message-attachments + */ +class SlackRecord +{ + const COLOR_DANGER = 'danger'; + + const COLOR_WARNING = 'warning'; + + const COLOR_GOOD = 'good'; + + const COLOR_DEFAULT = '#e3e4e6'; + + /** + * Slack channel (encoded ID or name) + * @var string|null + */ + private $channel; + + /** + * Name of a bot + * @var string|null + */ + private $username; + + /** + * User icon e.g. 'ghost', 'http://example.com/user.png' + * @var string + */ + private $userIcon; + + /** + * Whether the message should be added to Slack as attachment (plain text otherwise) + * @var bool + */ + private $useAttachment; + + /** + * Whether the the context/extra messages added to Slack as attachments are in a short style + * @var bool + */ + private $useShortAttachment; + + /** + * Whether the attachment should include context and extra data + * @var bool + */ + private $includeContextAndExtra; + + /** + * Dot separated list of fields to exclude from slack message. E.g. ['context.field1', 'extra.field2'] + * @var array + */ + private $excludeFields; + + /** + * @var FormatterInterface + */ + private $formatter; + + /** + * @var NormalizerFormatter + */ + private $normalizerFormatter; + + public function __construct($channel = null, $username = null, $useAttachment = true, $userIcon = null, $useShortAttachment = false, $includeContextAndExtra = false, array $excludeFields = array(), FormatterInterface $formatter = null) + { + $this->channel = $channel; + $this->username = $username; + $this->userIcon = trim($userIcon, ':'); + $this->useAttachment = $useAttachment; + $this->useShortAttachment = $useShortAttachment; + $this->includeContextAndExtra = $includeContextAndExtra; + $this->excludeFields = $excludeFields; + $this->formatter = $formatter; + + if ($this->includeContextAndExtra) { + $this->normalizerFormatter = new NormalizerFormatter(); + } + } + + public function getSlackData(array $record) + { + $dataArray = array(); + $record = $this->excludeFields($record); + + if ($this->username) { + $dataArray['username'] = $this->username; + } + + if ($this->channel) { + $dataArray['channel'] = $this->channel; + } + + if ($this->formatter && !$this->useAttachment) { + $message = $this->formatter->format($record); + } else { + $message = $record['message']; + } + + if ($this->useAttachment) { + $attachment = array( + 'fallback' => $message, + 'text' => $message, + 'color' => $this->getAttachmentColor($record['level']), + 'fields' => array(), + 'mrkdwn_in' => array('fields'), + 'ts' => $record['datetime']->getTimestamp() + ); + + if ($this->useShortAttachment) { + $attachment['title'] = $record['level_name']; + } else { + $attachment['title'] = 'Message'; + $attachment['fields'][] = $this->generateAttachmentField('Level', $record['level_name']); + } + + + if ($this->includeContextAndExtra) { + foreach (array('extra', 'context') as $key) { + if (empty($record[$key])) { + continue; + } + + if ($this->useShortAttachment) { + $attachment['fields'][] = $this->generateAttachmentField( + $key, + $record[$key] + ); + } else { + // Add all extra fields as individual fields in attachment + $attachment['fields'] = array_merge( + $attachment['fields'], + $this->generateAttachmentFields($record[$key]) + ); + } + } + } + + $dataArray['attachments'] = array($attachment); + } else { + $dataArray['text'] = $message; + } + + if ($this->userIcon) { + if (filter_var($this->userIcon, FILTER_VALIDATE_URL)) { + $dataArray['icon_url'] = $this->userIcon; + } else { + $dataArray['icon_emoji'] = ":{$this->userIcon}:"; + } + } + + return $dataArray; + } + + /** + * Returned a Slack message attachment color associated with + * provided level. + * + * @param int $level + * @return string + */ + public function getAttachmentColor($level) + { + switch (true) { + case $level >= Logger::ERROR: + return self::COLOR_DANGER; + case $level >= Logger::WARNING: + return self::COLOR_WARNING; + case $level >= Logger::INFO: + return self::COLOR_GOOD; + default: + return self::COLOR_DEFAULT; + } + } + + /** + * Stringifies an array of key/value pairs to be used in attachment fields + * + * @param array $fields + * + * @return string + */ + public function stringify($fields) + { + $normalized = $this->normalizerFormatter->format($fields); + $prettyPrintFlag = defined('JSON_PRETTY_PRINT') ? JSON_PRETTY_PRINT : 128; + $flags = 0; + if (PHP_VERSION_ID >= 50400) { + $flags = JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE; + } + + $hasSecondDimension = count(array_filter($normalized, 'is_array')); + $hasNonNumericKeys = !count(array_filter(array_keys($normalized), 'is_numeric')); + + return $hasSecondDimension || $hasNonNumericKeys + ? Utils::jsonEncode($normalized, $prettyPrintFlag | $flags) + : Utils::jsonEncode($normalized, $flags); + } + + /** + * Sets the formatter + * + * @param FormatterInterface $formatter + */ + public function setFormatter(FormatterInterface $formatter) + { + $this->formatter = $formatter; + } + + /** + * Generates attachment field + * + * @param string $title + * @param string|array $value + * + * @return array + */ + private function generateAttachmentField($title, $value) + { + $value = is_array($value) + ? sprintf('```%s```', $this->stringify($value)) + : $value; + + return array( + 'title' => ucfirst($title), + 'value' => $value, + 'short' => false + ); + } + + /** + * Generates a collection of attachment fields from array + * + * @param array $data + * + * @return array + */ + private function generateAttachmentFields(array $data) + { + $fields = array(); + foreach ($this->normalizerFormatter->format($data) as $key => $value) { + $fields[] = $this->generateAttachmentField($key, $value); + } + + return $fields; + } + + /** + * Get a copy of record with fields excluded according to $this->excludeFields + * + * @param array $record + * + * @return array + */ + private function excludeFields(array $record) + { + foreach ($this->excludeFields as $field) { + $keys = explode('.', $field); + $node = &$record; + $lastKey = end($keys); + foreach ($keys as $key) { + if (!isset($node[$key])) { + break; + } + if ($lastKey === $key) { + unset($node[$key]); + break; + } + $node = &$node[$key]; + } + } + + return $record; + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/SlackHandler.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/SlackHandler.php new file mode 100644 index 0000000..88c4c4d --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/SlackHandler.php @@ -0,0 +1,221 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Handler; + +use Monolog\Formatter\FormatterInterface; +use Monolog\Logger; +use Monolog\Utils; +use Monolog\Handler\Slack\SlackRecord; + +/** + * Sends notifications through Slack API + * + * @author Greg Kedzierski + * @see https://api.slack.com/ + */ +class SlackHandler extends SocketHandler +{ + /** + * Slack API token + * @var string + */ + private $token; + + /** + * Instance of the SlackRecord util class preparing data for Slack API. + * @var SlackRecord + */ + private $slackRecord; + + /** + * @param string $token Slack API token + * @param string $channel Slack channel (encoded ID or name) + * @param string|null $username Name of a bot + * @param bool $useAttachment Whether the message should be added to Slack as attachment (plain text otherwise) + * @param string|null $iconEmoji The emoji name to use (or null) + * @param int $level The minimum logging level at which this handler will be triggered + * @param bool $bubble Whether the messages that are handled can bubble up the stack or not + * @param bool $useShortAttachment Whether the the context/extra messages added to Slack as attachments are in a short style + * @param bool $includeContextAndExtra Whether the attachment should include context and extra data + * @param array $excludeFields Dot separated list of fields to exclude from slack message. E.g. ['context.field1', 'extra.field2'] + * @throws MissingExtensionException If no OpenSSL PHP extension configured + */ + public function __construct($token, $channel, $username = null, $useAttachment = true, $iconEmoji = null, $level = Logger::CRITICAL, $bubble = true, $useShortAttachment = false, $includeContextAndExtra = false, array $excludeFields = array()) + { + if (!extension_loaded('openssl')) { + throw new MissingExtensionException('The OpenSSL PHP extension is required to use the SlackHandler'); + } + + parent::__construct('ssl://slack.com:443', $level, $bubble); + + $this->slackRecord = new SlackRecord( + $channel, + $username, + $useAttachment, + $iconEmoji, + $useShortAttachment, + $includeContextAndExtra, + $excludeFields, + $this->formatter + ); + + $this->token = $token; + } + + public function getSlackRecord() + { + return $this->slackRecord; + } + + public function getToken() + { + return $this->token; + } + + /** + * {@inheritdoc} + * + * @param array $record + * @return string + */ + protected function generateDataStream($record) + { + $content = $this->buildContent($record); + + return $this->buildHeader($content) . $content; + } + + /** + * Builds the body of API call + * + * @param array $record + * @return string + */ + private function buildContent($record) + { + $dataArray = $this->prepareContentData($record); + + return http_build_query($dataArray); + } + + /** + * Prepares content data + * + * @param array $record + * @return array + */ + protected function prepareContentData($record) + { + $dataArray = $this->slackRecord->getSlackData($record); + $dataArray['token'] = $this->token; + + if (!empty($dataArray['attachments'])) { + $dataArray['attachments'] = Utils::jsonEncode($dataArray['attachments']); + } + + return $dataArray; + } + + /** + * Builds the header of the API Call + * + * @param string $content + * @return string + */ + private function buildHeader($content) + { + $header = "POST /api/chat.postMessage HTTP/1.1\r\n"; + $header .= "Host: slack.com\r\n"; + $header .= "Content-Type: application/x-www-form-urlencoded\r\n"; + $header .= "Content-Length: " . strlen($content) . "\r\n"; + $header .= "\r\n"; + + return $header; + } + + /** + * {@inheritdoc} + * + * @param array $record + */ + protected function write(array $record) + { + parent::write($record); + $this->finalizeWrite(); + } + + /** + * Finalizes the request by reading some bytes and then closing the socket + * + * If we do not read some but close the socket too early, slack sometimes + * drops the request entirely. + */ + protected function finalizeWrite() + { + $res = $this->getResource(); + if (is_resource($res)) { + @fread($res, 2048); + } + $this->closeSocket(); + } + + /** + * Returned a Slack message attachment color associated with + * provided level. + * + * @param int $level + * @return string + * @deprecated Use underlying SlackRecord instead + */ + protected function getAttachmentColor($level) + { + trigger_error( + 'SlackHandler::getAttachmentColor() is deprecated. Use underlying SlackRecord instead.', + E_USER_DEPRECATED + ); + + return $this->slackRecord->getAttachmentColor($level); + } + + /** + * Stringifies an array of key/value pairs to be used in attachment fields + * + * @param array $fields + * @return string + * @deprecated Use underlying SlackRecord instead + */ + protected function stringify($fields) + { + trigger_error( + 'SlackHandler::stringify() is deprecated. Use underlying SlackRecord instead.', + E_USER_DEPRECATED + ); + + return $this->slackRecord->stringify($fields); + } + + public function setFormatter(FormatterInterface $formatter) + { + parent::setFormatter($formatter); + $this->slackRecord->setFormatter($formatter); + + return $this; + } + + public function getFormatter() + { + $formatter = parent::getFormatter(); + $this->slackRecord->setFormatter($formatter); + + return $formatter; + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/SlackWebhookHandler.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/SlackWebhookHandler.php new file mode 100644 index 0000000..b87be99 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/SlackWebhookHandler.php @@ -0,0 +1,121 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Handler; + +use Monolog\Formatter\FormatterInterface; +use Monolog\Logger; +use Monolog\Utils; +use Monolog\Handler\Slack\SlackRecord; + +/** + * Sends notifications through Slack Webhooks + * + * @author Haralan Dobrev + * @see https://api.slack.com/incoming-webhooks + */ +class SlackWebhookHandler extends AbstractProcessingHandler +{ + /** + * Slack Webhook token + * @var string + */ + private $webhookUrl; + + /** + * Instance of the SlackRecord util class preparing data for Slack API. + * @var SlackRecord + */ + private $slackRecord; + + /** + * @param string $webhookUrl Slack Webhook URL + * @param string|null $channel Slack channel (encoded ID or name) + * @param string|null $username Name of a bot + * @param bool $useAttachment Whether the message should be added to Slack as attachment (plain text otherwise) + * @param string|null $iconEmoji The emoji name to use (or null) + * @param bool $useShortAttachment Whether the the context/extra messages added to Slack as attachments are in a short style + * @param bool $includeContextAndExtra Whether the attachment should include context and extra data + * @param int $level The minimum logging level at which this handler will be triggered + * @param bool $bubble Whether the messages that are handled can bubble up the stack or not + * @param array $excludeFields Dot separated list of fields to exclude from slack message. E.g. ['context.field1', 'extra.field2'] + */ + public function __construct($webhookUrl, $channel = null, $username = null, $useAttachment = true, $iconEmoji = null, $useShortAttachment = false, $includeContextAndExtra = false, $level = Logger::CRITICAL, $bubble = true, array $excludeFields = array()) + { + parent::__construct($level, $bubble); + + $this->webhookUrl = $webhookUrl; + + $this->slackRecord = new SlackRecord( + $channel, + $username, + $useAttachment, + $iconEmoji, + $useShortAttachment, + $includeContextAndExtra, + $excludeFields, + $this->formatter + ); + } + + public function getSlackRecord() + { + return $this->slackRecord; + } + + public function getWebhookUrl() + { + return $this->webhookUrl; + } + + /** + * {@inheritdoc} + * + * @param array $record + */ + protected function write(array $record) + { + $postData = $this->slackRecord->getSlackData($record); + $postString = Utils::jsonEncode($postData); + + $ch = curl_init(); + $options = array( + CURLOPT_URL => $this->webhookUrl, + CURLOPT_POST => true, + CURLOPT_RETURNTRANSFER => true, + CURLOPT_HTTPHEADER => array('Content-type: application/json'), + CURLOPT_POSTFIELDS => $postString + ); + if (defined('CURLOPT_SAFE_UPLOAD')) { + $options[CURLOPT_SAFE_UPLOAD] = true; + } + + curl_setopt_array($ch, $options); + + Curl\Util::execute($ch); + } + + public function setFormatter(FormatterInterface $formatter) + { + parent::setFormatter($formatter); + $this->slackRecord->setFormatter($formatter); + + return $this; + } + + public function getFormatter() + { + $formatter = parent::getFormatter(); + $this->slackRecord->setFormatter($formatter); + + return $formatter; + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/SlackbotHandler.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/SlackbotHandler.php new file mode 100644 index 0000000..d3352ea --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/SlackbotHandler.php @@ -0,0 +1,84 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Handler; + +use Monolog\Logger; + +/** + * Sends notifications through Slack's Slackbot + * + * @author Haralan Dobrev + * @see https://slack.com/apps/A0F81R8ET-slackbot + * @deprecated According to Slack the API used on this handler it is deprecated. + * Therefore this handler will be removed on 2.x + * Slack suggests to use webhooks instead. Please contact slack for more information. + */ +class SlackbotHandler extends AbstractProcessingHandler +{ + /** + * The slug of the Slack team + * @var string + */ + private $slackTeam; + + /** + * Slackbot token + * @var string + */ + private $token; + + /** + * Slack channel name + * @var string + */ + private $channel; + + /** + * @param string $slackTeam Slack team slug + * @param string $token Slackbot token + * @param string $channel Slack channel (encoded ID or name) + * @param int $level The minimum logging level at which this handler will be triggered + * @param bool $bubble Whether the messages that are handled can bubble up the stack or not + */ + public function __construct($slackTeam, $token, $channel, $level = Logger::CRITICAL, $bubble = true) + { + @trigger_error('SlackbotHandler is deprecated and will be removed on 2.x', E_USER_DEPRECATED); + parent::__construct($level, $bubble); + + $this->slackTeam = $slackTeam; + $this->token = $token; + $this->channel = $channel; + } + + /** + * {@inheritdoc} + * + * @param array $record + */ + protected function write(array $record) + { + $slackbotUrl = sprintf( + 'https://%s.slack.com/services/hooks/slackbot?token=%s&channel=%s', + $this->slackTeam, + $this->token, + $this->channel + ); + + $ch = curl_init(); + curl_setopt($ch, CURLOPT_URL, $slackbotUrl); + curl_setopt($ch, CURLOPT_POST, true); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + curl_setopt($ch, CURLOPT_POSTFIELDS, $record['message']); + + Curl\Util::execute($ch); + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/SocketHandler.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/SocketHandler.php new file mode 100644 index 0000000..db50d97 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/SocketHandler.php @@ -0,0 +1,385 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Handler; + +use Monolog\Logger; + +/** + * Stores to any socket - uses fsockopen() or pfsockopen(). + * + * @author Pablo de Leon Belloc + * @see http://php.net/manual/en/function.fsockopen.php + */ +class SocketHandler extends AbstractProcessingHandler +{ + private $connectionString; + private $connectionTimeout; + private $resource; + private $timeout = 0; + private $writingTimeout = 10; + private $lastSentBytes = null; + private $chunkSize = null; + private $persistent = false; + private $errno; + private $errstr; + private $lastWritingAt; + + /** + * @param string $connectionString Socket connection string + * @param int $level The minimum logging level at which this handler will be triggered + * @param bool $bubble Whether the messages that are handled can bubble up the stack or not + */ + public function __construct($connectionString, $level = Logger::DEBUG, $bubble = true) + { + parent::__construct($level, $bubble); + $this->connectionString = $connectionString; + $this->connectionTimeout = (float) ini_get('default_socket_timeout'); + } + + /** + * Connect (if necessary) and write to the socket + * + * @param array $record + * + * @throws \UnexpectedValueException + * @throws \RuntimeException + */ + protected function write(array $record) + { + $this->connectIfNotConnected(); + $data = $this->generateDataStream($record); + $this->writeToSocket($data); + } + + /** + * We will not close a PersistentSocket instance so it can be reused in other requests. + */ + public function close() + { + if (!$this->isPersistent()) { + $this->closeSocket(); + } + } + + /** + * Close socket, if open + */ + public function closeSocket() + { + if (is_resource($this->resource)) { + fclose($this->resource); + $this->resource = null; + } + } + + /** + * Set socket connection to nbe persistent. It only has effect before the connection is initiated. + * + * @param bool $persistent + */ + public function setPersistent($persistent) + { + $this->persistent = (bool) $persistent; + } + + /** + * Set connection timeout. Only has effect before we connect. + * + * @param float $seconds + * + * @see http://php.net/manual/en/function.fsockopen.php + */ + public function setConnectionTimeout($seconds) + { + $this->validateTimeout($seconds); + $this->connectionTimeout = (float) $seconds; + } + + /** + * Set write timeout. Only has effect before we connect. + * + * @param float $seconds + * + * @see http://php.net/manual/en/function.stream-set-timeout.php + */ + public function setTimeout($seconds) + { + $this->validateTimeout($seconds); + $this->timeout = (float) $seconds; + } + + /** + * Set writing timeout. Only has effect during connection in the writing cycle. + * + * @param float $seconds 0 for no timeout + */ + public function setWritingTimeout($seconds) + { + $this->validateTimeout($seconds); + $this->writingTimeout = (float) $seconds; + } + + /** + * Set chunk size. Only has effect during connection in the writing cycle. + * + * @param float $bytes + */ + public function setChunkSize($bytes) + { + $this->chunkSize = $bytes; + } + + /** + * Get current connection string + * + * @return string + */ + public function getConnectionString() + { + return $this->connectionString; + } + + /** + * Get persistent setting + * + * @return bool + */ + public function isPersistent() + { + return $this->persistent; + } + + /** + * Get current connection timeout setting + * + * @return float + */ + public function getConnectionTimeout() + { + return $this->connectionTimeout; + } + + /** + * Get current in-transfer timeout + * + * @return float + */ + public function getTimeout() + { + return $this->timeout; + } + + /** + * Get current local writing timeout + * + * @return float + */ + public function getWritingTimeout() + { + return $this->writingTimeout; + } + + /** + * Get current chunk size + * + * @return float + */ + public function getChunkSize() + { + return $this->chunkSize; + } + + /** + * Check to see if the socket is currently available. + * + * UDP might appear to be connected but might fail when writing. See http://php.net/fsockopen for details. + * + * @return bool + */ + public function isConnected() + { + return is_resource($this->resource) + && !feof($this->resource); // on TCP - other party can close connection. + } + + /** + * Wrapper to allow mocking + */ + protected function pfsockopen() + { + return @pfsockopen($this->connectionString, -1, $this->errno, $this->errstr, $this->connectionTimeout); + } + + /** + * Wrapper to allow mocking + */ + protected function fsockopen() + { + return @fsockopen($this->connectionString, -1, $this->errno, $this->errstr, $this->connectionTimeout); + } + + /** + * Wrapper to allow mocking + * + * @see http://php.net/manual/en/function.stream-set-timeout.php + */ + protected function streamSetTimeout() + { + $seconds = floor($this->timeout); + $microseconds = round(($this->timeout - $seconds) * 1e6); + + return stream_set_timeout($this->resource, $seconds, $microseconds); + } + + /** + * Wrapper to allow mocking + * + * @see http://php.net/manual/en/function.stream-set-chunk-size.php + */ + protected function streamSetChunkSize() + { + return stream_set_chunk_size($this->resource, $this->chunkSize); + } + + /** + * Wrapper to allow mocking + */ + protected function fwrite($data) + { + return @fwrite($this->resource, $data); + } + + /** + * Wrapper to allow mocking + */ + protected function streamGetMetadata() + { + return stream_get_meta_data($this->resource); + } + + private function validateTimeout($value) + { + $ok = filter_var($value, FILTER_VALIDATE_FLOAT); + if ($ok === false || $value < 0) { + throw new \InvalidArgumentException("Timeout must be 0 or a positive float (got $value)"); + } + } + + private function connectIfNotConnected() + { + if ($this->isConnected()) { + return; + } + $this->connect(); + } + + protected function generateDataStream($record) + { + return (string) $record['formatted']; + } + + /** + * @return resource|null + */ + protected function getResource() + { + return $this->resource; + } + + private function connect() + { + $this->createSocketResource(); + $this->setSocketTimeout(); + $this->setStreamChunkSize(); + } + + private function createSocketResource() + { + if ($this->isPersistent()) { + $resource = $this->pfsockopen(); + } else { + $resource = $this->fsockopen(); + } + if (!$resource) { + throw new \UnexpectedValueException("Failed connecting to $this->connectionString ($this->errno: $this->errstr)"); + } + $this->resource = $resource; + } + + private function setSocketTimeout() + { + if (!$this->streamSetTimeout()) { + throw new \UnexpectedValueException("Failed setting timeout with stream_set_timeout()"); + } + } + + private function setStreamChunkSize() + { + if ($this->chunkSize && !$this->streamSetChunkSize()) { + throw new \UnexpectedValueException("Failed setting chunk size with stream_set_chunk_size()"); + } + } + + private function writeToSocket($data) + { + $length = strlen($data); + $sent = 0; + $this->lastSentBytes = $sent; + while ($this->isConnected() && $sent < $length) { + if (0 == $sent) { + $chunk = $this->fwrite($data); + } else { + $chunk = $this->fwrite(substr($data, $sent)); + } + if ($chunk === false) { + throw new \RuntimeException("Could not write to socket"); + } + $sent += $chunk; + $socketInfo = $this->streamGetMetadata(); + if ($socketInfo['timed_out']) { + throw new \RuntimeException("Write timed-out"); + } + + if ($this->writingIsTimedOut($sent)) { + throw new \RuntimeException("Write timed-out, no data sent for `{$this->writingTimeout}` seconds, probably we got disconnected (sent $sent of $length)"); + } + } + if (!$this->isConnected() && $sent < $length) { + throw new \RuntimeException("End-of-file reached, probably we got disconnected (sent $sent of $length)"); + } + } + + private function writingIsTimedOut($sent) + { + $writingTimeout = (int) floor($this->writingTimeout); + if (0 === $writingTimeout) { + return false; + } + + if ($sent !== $this->lastSentBytes) { + $this->lastWritingAt = time(); + $this->lastSentBytes = $sent; + + return false; + } else { + usleep(100); + } + + if ((time() - $this->lastWritingAt) >= $writingTimeout) { + $this->closeSocket(); + + return true; + } + + return false; + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php new file mode 100644 index 0000000..b52607d --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php @@ -0,0 +1,179 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Handler; + +use Monolog\Logger; +use Monolog\Utils; + +/** + * Stores to any stream resource + * + * Can be used to store into php://stderr, remote and local files, etc. + * + * @author Jordi Boggiano + */ +class StreamHandler extends AbstractProcessingHandler +{ + protected $stream; + protected $url; + private $errorMessage; + protected $filePermission; + protected $useLocking; + private $dirCreated; + + /** + * @param resource|string $stream + * @param int $level The minimum logging level at which this handler will be triggered + * @param bool $bubble Whether the messages that are handled can bubble up the stack or not + * @param int|null $filePermission Optional file permissions (default (0644) are only for owner read/write) + * @param bool $useLocking Try to lock log file before doing any writes + * + * @throws \Exception If a missing directory is not buildable + * @throws \InvalidArgumentException If stream is not a resource or string + */ + public function __construct($stream, $level = Logger::DEBUG, $bubble = true, $filePermission = null, $useLocking = false) + { + parent::__construct($level, $bubble); + if (is_resource($stream)) { + $this->stream = $stream; + } elseif (is_string($stream)) { + $this->url = Utils::canonicalizePath($stream); + } else { + throw new \InvalidArgumentException('A stream must either be a resource or a string.'); + } + + $this->filePermission = $filePermission; + $this->useLocking = $useLocking; + } + + /** + * {@inheritdoc} + */ + public function close() + { + if ($this->url && is_resource($this->stream)) { + fclose($this->stream); + } + $this->stream = null; + $this->dirCreated = null; + } + + /** + * Return the currently active stream if it is open + * + * @return resource|null + */ + public function getStream() + { + return $this->stream; + } + + /** + * Return the stream URL if it was configured with a URL and not an active resource + * + * @return string|null + */ + public function getUrl() + { + return $this->url; + } + + /** + * {@inheritdoc} + */ + protected function write(array $record) + { + if (!is_resource($this->stream)) { + if (null === $this->url || '' === $this->url) { + throw new \LogicException('Missing stream url, the stream can not be opened. This may be caused by a premature call to close().'); + } + $this->createDir(); + $this->errorMessage = null; + set_error_handler(array($this, 'customErrorHandler')); + $this->stream = fopen($this->url, 'a'); + if ($this->filePermission !== null) { + @chmod($this->url, $this->filePermission); + } + restore_error_handler(); + if (!is_resource($this->stream)) { + $this->stream = null; + + throw new \UnexpectedValueException(sprintf('The stream or file "%s" could not be opened in append mode: '.$this->errorMessage, $this->url)); + } + } + + if ($this->useLocking) { + // ignoring errors here, there's not much we can do about them + flock($this->stream, LOCK_EX); + } + + $this->streamWrite($this->stream, $record); + + if ($this->useLocking) { + flock($this->stream, LOCK_UN); + } + } + + /** + * Write to stream + * @param resource $stream + * @param array $record + */ + protected function streamWrite($stream, array $record) + { + fwrite($stream, (string) $record['formatted']); + } + + private function customErrorHandler($code, $msg) + { + $this->errorMessage = preg_replace('{^(fopen|mkdir)\(.*?\): }', '', $msg); + } + + /** + * @param string $stream + * + * @return null|string + */ + private function getDirFromStream($stream) + { + $pos = strpos($stream, '://'); + if ($pos === false) { + return dirname($stream); + } + + if ('file://' === substr($stream, 0, 7)) { + return dirname(substr($stream, 7)); + } + + return; + } + + private function createDir() + { + // Do not try to create dir if it has already been tried. + if ($this->dirCreated) { + return; + } + + $dir = $this->getDirFromStream($this->url); + if (null !== $dir && !is_dir($dir)) { + $this->errorMessage = null; + set_error_handler(array($this, 'customErrorHandler')); + $status = mkdir($dir, 0777, true); + restore_error_handler(); + if (false === $status && !is_dir($dir)) { + throw new \UnexpectedValueException(sprintf('There is no existing directory at "%s" and its not buildable: '.$this->errorMessage, $dir)); + } + } + $this->dirCreated = true; + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/SwiftMailerHandler.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/SwiftMailerHandler.php new file mode 100644 index 0000000..ac7b16f --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/SwiftMailerHandler.php @@ -0,0 +1,111 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Handler; + +use Monolog\Logger; +use Monolog\Formatter\FormatterInterface; +use Monolog\Formatter\LineFormatter; +use Swift; + +/** + * SwiftMailerHandler uses Swift_Mailer to send the emails + * + * @author Gyula Sallai + */ +class SwiftMailerHandler extends MailHandler +{ + protected $mailer; + private $messageTemplate; + + /** + * @param \Swift_Mailer $mailer The mailer to use + * @param callable|\Swift_Message $message An example message for real messages, only the body will be replaced + * @param int $level The minimum logging level at which this handler will be triggered + * @param bool $bubble Whether the messages that are handled can bubble up the stack or not + */ + public function __construct(\Swift_Mailer $mailer, $message, $level = Logger::ERROR, $bubble = true) + { + parent::__construct($level, $bubble); + + $this->mailer = $mailer; + $this->messageTemplate = $message; + } + + /** + * {@inheritdoc} + */ + protected function send($content, array $records) + { + $this->mailer->send($this->buildMessage($content, $records)); + } + + /** + * Gets the formatter for the Swift_Message subject. + * + * @param string $format The format of the subject + * @return FormatterInterface + */ + protected function getSubjectFormatter($format) + { + return new LineFormatter($format); + } + + /** + * Creates instance of Swift_Message to be sent + * + * @param string $content formatted email body to be sent + * @param array $records Log records that formed the content + * @return \Swift_Message + */ + protected function buildMessage($content, array $records) + { + $message = null; + if ($this->messageTemplate instanceof \Swift_Message) { + $message = clone $this->messageTemplate; + $message->generateId(); + } elseif (is_callable($this->messageTemplate)) { + $message = call_user_func($this->messageTemplate, $content, $records); + } + + if (!$message instanceof \Swift_Message) { + throw new \InvalidArgumentException('Could not resolve message as instance of Swift_Message or a callable returning it'); + } + + if ($records) { + $subjectFormatter = $this->getSubjectFormatter($message->getSubject()); + $message->setSubject($subjectFormatter->format($this->getHighestRecord($records))); + } + + $message->setBody($content); + if (version_compare(Swift::VERSION, '6.0.0', '>=')) { + $message->setDate(new \DateTimeImmutable()); + } else { + $message->setDate(time()); + } + + return $message; + } + + /** + * BC getter, to be removed in 2.0 + */ + public function __get($name) + { + if ($name === 'message') { + trigger_error('SwiftMailerHandler->message is deprecated, use ->buildMessage() instead to retrieve the message', E_USER_DEPRECATED); + + return $this->buildMessage(null, array()); + } + + throw new \InvalidArgumentException('Invalid property '.$name); + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/SyslogHandler.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/SyslogHandler.php new file mode 100644 index 0000000..f770c80 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/SyslogHandler.php @@ -0,0 +1,67 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Handler; + +use Monolog\Logger; + +/** + * Logs to syslog service. + * + * usage example: + * + * $log = new Logger('application'); + * $syslog = new SyslogHandler('myfacility', 'local6'); + * $formatter = new LineFormatter("%channel%.%level_name%: %message% %extra%"); + * $syslog->setFormatter($formatter); + * $log->pushHandler($syslog); + * + * @author Sven Paulus + */ +class SyslogHandler extends AbstractSyslogHandler +{ + protected $ident; + protected $logopts; + + /** + * @param string $ident + * @param mixed $facility + * @param int $level The minimum logging level at which this handler will be triggered + * @param bool $bubble Whether the messages that are handled can bubble up the stack or not + * @param int $logopts Option flags for the openlog() call, defaults to LOG_PID + */ + public function __construct($ident, $facility = LOG_USER, $level = Logger::DEBUG, $bubble = true, $logopts = LOG_PID) + { + parent::__construct($facility, $level, $bubble); + + $this->ident = $ident; + $this->logopts = $logopts; + } + + /** + * {@inheritdoc} + */ + public function close() + { + closelog(); + } + + /** + * {@inheritdoc} + */ + protected function write(array $record) + { + if (!openlog($this->ident, $this->logopts, $this->facility)) { + throw new \LogicException('Can\'t open syslog for ident "'.$this->ident.'" and facility "'.$this->facility.'"'); + } + syslog($this->logLevels[$record['level']], (string) $record['formatted']); + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/SyslogUdp/UdpSocket.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/SyslogUdp/UdpSocket.php new file mode 100644 index 0000000..3bff085 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/SyslogUdp/UdpSocket.php @@ -0,0 +1,56 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Handler\SyslogUdp; + +class UdpSocket +{ + const DATAGRAM_MAX_LENGTH = 65023; + + protected $ip; + protected $port; + protected $socket; + + public function __construct($ip, $port = 514) + { + $this->ip = $ip; + $this->port = $port; + $this->socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP); + } + + public function write($line, $header = "") + { + $this->send($this->assembleMessage($line, $header)); + } + + public function close() + { + if (is_resource($this->socket)) { + socket_close($this->socket); + $this->socket = null; + } + } + + protected function send($chunk) + { + if (!is_resource($this->socket)) { + throw new \LogicException('The UdpSocket to '.$this->ip.':'.$this->port.' has been closed and can not be written to anymore'); + } + socket_sendto($this->socket, $chunk, strlen($chunk), $flags = 0, $this->ip, $this->port); + } + + protected function assembleMessage($line, $header) + { + $chunkSize = self::DATAGRAM_MAX_LENGTH - strlen($header); + + return $header . substr($line, 0, $chunkSize); + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/SyslogUdpHandler.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/SyslogUdpHandler.php new file mode 100644 index 0000000..4dfd5f5 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/SyslogUdpHandler.php @@ -0,0 +1,124 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Handler; + +use Monolog\Logger; +use Monolog\Handler\SyslogUdp\UdpSocket; + +/** + * A Handler for logging to a remote syslogd server. + * + * @author Jesper Skovgaard Nielsen + * @author Dominik Kukacka + */ +class SyslogUdpHandler extends AbstractSyslogHandler +{ + const RFC3164 = 0; + const RFC5424 = 1; + + private $dateFormats = array( + self::RFC3164 => 'M d H:i:s', + self::RFC5424 => \DateTime::RFC3339, + ); + + protected $socket; + protected $ident; + protected $rfc; + + /** + * @param string $host + * @param int $port + * @param mixed $facility + * @param int $level The minimum logging level at which this handler will be triggered + * @param bool $bubble Whether the messages that are handled can bubble up the stack or not + * @param string $ident Program name or tag for each log message. + * @param int $rfc RFC to format the message for. + */ + public function __construct($host, $port = 514, $facility = LOG_USER, $level = Logger::DEBUG, $bubble = true, $ident = 'php', $rfc = self::RFC5424) + { + parent::__construct($facility, $level, $bubble); + + $this->ident = $ident; + $this->rfc = $rfc; + + $this->socket = new UdpSocket($host, $port ?: 514); + } + + protected function write(array $record) + { + $lines = $this->splitMessageIntoLines($record['formatted']); + + $header = $this->makeCommonSyslogHeader($this->logLevels[$record['level']]); + + foreach ($lines as $line) { + $this->socket->write($line, $header); + } + } + + public function close() + { + $this->socket->close(); + } + + private function splitMessageIntoLines($message) + { + if (is_array($message)) { + $message = implode("\n", $message); + } + + return preg_split('/$\R?^/m', $message, -1, PREG_SPLIT_NO_EMPTY); + } + + /** + * Make common syslog header (see rfc5424 or rfc3164) + */ + protected function makeCommonSyslogHeader($severity) + { + $priority = $severity + $this->facility; + + if (!$pid = getmypid()) { + $pid = '-'; + } + + if (!$hostname = gethostname()) { + $hostname = '-'; + } + + $date = $this->getDateTime(); + + if ($this->rfc === self::RFC3164) { + return "<$priority>" . + $date . " " . + $hostname . " " . + $this->ident . "[" . $pid . "]: "; + } else { + return "<$priority>1 " . + $date . " " . + $hostname . " " . + $this->ident . " " . + $pid . " - - "; + } + } + + protected function getDateTime() + { + return date($this->dateFormats[$this->rfc]); + } + + /** + * Inject your own socket, mainly used for testing + */ + public function setSocket($socket) + { + $this->socket = $socket; + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/TestHandler.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/TestHandler.php new file mode 100644 index 0000000..478db0a --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/TestHandler.php @@ -0,0 +1,177 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Handler; + +/** + * Used for testing purposes. + * + * It records all records and gives you access to them for verification. + * + * @author Jordi Boggiano + * + * @method bool hasEmergency($record) + * @method bool hasAlert($record) + * @method bool hasCritical($record) + * @method bool hasError($record) + * @method bool hasWarning($record) + * @method bool hasNotice($record) + * @method bool hasInfo($record) + * @method bool hasDebug($record) + * + * @method bool hasEmergencyRecords() + * @method bool hasAlertRecords() + * @method bool hasCriticalRecords() + * @method bool hasErrorRecords() + * @method bool hasWarningRecords() + * @method bool hasNoticeRecords() + * @method bool hasInfoRecords() + * @method bool hasDebugRecords() + * + * @method bool hasEmergencyThatContains($message) + * @method bool hasAlertThatContains($message) + * @method bool hasCriticalThatContains($message) + * @method bool hasErrorThatContains($message) + * @method bool hasWarningThatContains($message) + * @method bool hasNoticeThatContains($message) + * @method bool hasInfoThatContains($message) + * @method bool hasDebugThatContains($message) + * + * @method bool hasEmergencyThatMatches($message) + * @method bool hasAlertThatMatches($message) + * @method bool hasCriticalThatMatches($message) + * @method bool hasErrorThatMatches($message) + * @method bool hasWarningThatMatches($message) + * @method bool hasNoticeThatMatches($message) + * @method bool hasInfoThatMatches($message) + * @method bool hasDebugThatMatches($message) + * + * @method bool hasEmergencyThatPasses($message) + * @method bool hasAlertThatPasses($message) + * @method bool hasCriticalThatPasses($message) + * @method bool hasErrorThatPasses($message) + * @method bool hasWarningThatPasses($message) + * @method bool hasNoticeThatPasses($message) + * @method bool hasInfoThatPasses($message) + * @method bool hasDebugThatPasses($message) + */ +class TestHandler extends AbstractProcessingHandler +{ + protected $records = array(); + protected $recordsByLevel = array(); + private $skipReset = false; + + public function getRecords() + { + return $this->records; + } + + public function clear() + { + $this->records = array(); + $this->recordsByLevel = array(); + } + + public function reset() + { + if (!$this->skipReset) { + $this->clear(); + } + } + + public function setSkipReset($skipReset) + { + $this->skipReset = $skipReset; + } + + public function hasRecords($level) + { + return isset($this->recordsByLevel[$level]); + } + + /** + * @param string|array $record Either a message string or an array containing message and optionally context keys that will be checked against all records + * @param int $level Logger::LEVEL constant value + */ + public function hasRecord($record, $level) + { + if (is_string($record)) { + $record = array('message' => $record); + } + + return $this->hasRecordThatPasses(function ($rec) use ($record) { + if ($rec['message'] !== $record['message']) { + return false; + } + if (isset($record['context']) && $rec['context'] !== $record['context']) { + return false; + } + return true; + }, $level); + } + + public function hasRecordThatContains($message, $level) + { + return $this->hasRecordThatPasses(function ($rec) use ($message) { + return strpos($rec['message'], $message) !== false; + }, $level); + } + + public function hasRecordThatMatches($regex, $level) + { + return $this->hasRecordThatPasses(function ($rec) use ($regex) { + return preg_match($regex, $rec['message']) > 0; + }, $level); + } + + public function hasRecordThatPasses($predicate, $level) + { + if (!is_callable($predicate)) { + throw new \InvalidArgumentException("Expected a callable for hasRecordThatSucceeds"); + } + + if (!isset($this->recordsByLevel[$level])) { + return false; + } + + foreach ($this->recordsByLevel[$level] as $i => $rec) { + if (call_user_func($predicate, $rec, $i)) { + return true; + } + } + + return false; + } + + /** + * {@inheritdoc} + */ + protected function write(array $record) + { + $this->recordsByLevel[$record['level']][] = $record; + $this->records[] = $record; + } + + public function __call($method, $args) + { + if (preg_match('/(.*)(Debug|Info|Notice|Warning|Error|Critical|Alert|Emergency)(.*)/', $method, $matches) > 0) { + $genericMethod = $matches[1] . ('Records' !== $matches[3] ? 'Record' : '') . $matches[3]; + $level = constant('Monolog\Logger::' . strtoupper($matches[2])); + if (method_exists($this, $genericMethod)) { + $args[] = $level; + + return call_user_func_array(array($this, $genericMethod), $args); + } + } + + throw new \BadMethodCallException('Call to undefined method ' . get_class($this) . '::' . $method . '()'); + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/WhatFailureGroupHandler.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/WhatFailureGroupHandler.php new file mode 100644 index 0000000..7d7622a --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/WhatFailureGroupHandler.php @@ -0,0 +1,72 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Handler; + +/** + * Forwards records to multiple handlers suppressing failures of each handler + * and continuing through to give every handler a chance to succeed. + * + * @author Craig D'Amelio + */ +class WhatFailureGroupHandler extends GroupHandler +{ + /** + * {@inheritdoc} + */ + public function handle(array $record) + { + if ($this->processors) { + foreach ($this->processors as $processor) { + $record = call_user_func($processor, $record); + } + } + + foreach ($this->handlers as $handler) { + try { + $handler->handle($record); + } catch (\Exception $e) { + // What failure? + } catch (\Throwable $e) { + // What failure? + } + } + + return false === $this->bubble; + } + + /** + * {@inheritdoc} + */ + public function handleBatch(array $records) + { + if ($this->processors) { + $processed = array(); + foreach ($records as $record) { + foreach ($this->processors as $processor) { + $record = call_user_func($processor, $record); + } + $processed[] = $record; + } + $records = $processed; + } + + foreach ($this->handlers as $handler) { + try { + $handler->handleBatch($records); + } catch (\Exception $e) { + // What failure? + } catch (\Throwable $e) { + // What failure? + } + } + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/ZendMonitorHandler.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/ZendMonitorHandler.php new file mode 100644 index 0000000..a20aeae --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Handler/ZendMonitorHandler.php @@ -0,0 +1,101 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Handler; + +use Monolog\Formatter\NormalizerFormatter; +use Monolog\Logger; + +/** + * Handler sending logs to Zend Monitor + * + * @author Christian Bergau + * @author Jason Davis + */ +class ZendMonitorHandler extends AbstractProcessingHandler +{ + /** + * Monolog level / ZendMonitor Custom Event priority map + * + * @var array + */ + protected $levelMap = array(); + + /** + * Construct + * + * @param int $level + * @param bool $bubble + * @throws MissingExtensionException + */ + public function __construct($level = Logger::DEBUG, $bubble = true) + { + if (!function_exists('zend_monitor_custom_event')) { + throw new MissingExtensionException( + 'You must have Zend Server installed with Zend Monitor enabled in order to use this handler' + ); + } + //zend monitor constants are not defined if zend monitor is not enabled. + $this->levelMap = array( + Logger::DEBUG => \ZEND_MONITOR_EVENT_SEVERITY_INFO, + Logger::INFO => \ZEND_MONITOR_EVENT_SEVERITY_INFO, + Logger::NOTICE => \ZEND_MONITOR_EVENT_SEVERITY_INFO, + Logger::WARNING => \ZEND_MONITOR_EVENT_SEVERITY_WARNING, + Logger::ERROR => \ZEND_MONITOR_EVENT_SEVERITY_ERROR, + Logger::CRITICAL => \ZEND_MONITOR_EVENT_SEVERITY_ERROR, + Logger::ALERT => \ZEND_MONITOR_EVENT_SEVERITY_ERROR, + Logger::EMERGENCY => \ZEND_MONITOR_EVENT_SEVERITY_ERROR, + ); + parent::__construct($level, $bubble); + } + + /** + * {@inheritdoc} + */ + protected function write(array $record) + { + $this->writeZendMonitorCustomEvent( + Logger::getLevelName($record['level']), + $record['message'], + $record['formatted'], + $this->levelMap[$record['level']] + ); + } + + /** + * Write to Zend Monitor Events + * @param string $type Text displayed in "Class Name (custom)" field + * @param string $message Text displayed in "Error String" + * @param mixed $formatted Displayed in Custom Variables tab + * @param int $severity Set the event severity level (-1,0,1) + */ + protected function writeZendMonitorCustomEvent($type, $message, $formatted, $severity) + { + zend_monitor_custom_event($type, $message, $formatted, $severity); + } + + /** + * {@inheritdoc} + */ + public function getDefaultFormatter() + { + return new NormalizerFormatter(); + } + + /** + * Get the level map + * + * @return array + */ + public function getLevelMap() + { + return $this->levelMap; + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Logger.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Logger.php new file mode 100644 index 0000000..e649af5 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Logger.php @@ -0,0 +1,796 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog; + +use Monolog\Handler\HandlerInterface; +use Monolog\Handler\StreamHandler; +use Psr\Log\LoggerInterface; +use Psr\Log\InvalidArgumentException; +use Exception; + +/** + * Monolog log channel + * + * It contains a stack of Handlers and a stack of Processors, + * and uses them to store records that are added to it. + * + * @author Jordi Boggiano + */ +class Logger implements LoggerInterface, ResettableInterface +{ + /** + * Detailed debug information + */ + const DEBUG = 100; + + /** + * Interesting events + * + * Examples: User logs in, SQL logs. + */ + const INFO = 200; + + /** + * Uncommon events + */ + const NOTICE = 250; + + /** + * Exceptional occurrences that are not errors + * + * Examples: Use of deprecated APIs, poor use of an API, + * undesirable things that are not necessarily wrong. + */ + const WARNING = 300; + + /** + * Runtime errors + */ + const ERROR = 400; + + /** + * Critical conditions + * + * Example: Application component unavailable, unexpected exception. + */ + const CRITICAL = 500; + + /** + * Action must be taken immediately + * + * Example: Entire website down, database unavailable, etc. + * This should trigger the SMS alerts and wake you up. + */ + const ALERT = 550; + + /** + * Urgent alert. + */ + const EMERGENCY = 600; + + /** + * Monolog API version + * + * This is only bumped when API breaks are done and should + * follow the major version of the library + * + * @var int + */ + const API = 1; + + /** + * Logging levels from syslog protocol defined in RFC 5424 + * + * @var array $levels Logging levels + */ + protected static $levels = array( + self::DEBUG => 'DEBUG', + self::INFO => 'INFO', + self::NOTICE => 'NOTICE', + self::WARNING => 'WARNING', + self::ERROR => 'ERROR', + self::CRITICAL => 'CRITICAL', + self::ALERT => 'ALERT', + self::EMERGENCY => 'EMERGENCY', + ); + + /** + * @var \DateTimeZone + */ + protected static $timezone; + + /** + * @var string + */ + protected $name; + + /** + * The handler stack + * + * @var HandlerInterface[] + */ + protected $handlers; + + /** + * Processors that will process all log records + * + * To process records of a single handler instead, add the processor on that specific handler + * + * @var callable[] + */ + protected $processors; + + /** + * @var bool + */ + protected $microsecondTimestamps = true; + + /** + * @var callable + */ + protected $exceptionHandler; + + /** + * @param string $name The logging channel + * @param HandlerInterface[] $handlers Optional stack of handlers, the first one in the array is called first, etc. + * @param callable[] $processors Optional array of processors + */ + public function __construct($name, array $handlers = array(), array $processors = array()) + { + $this->name = $name; + $this->setHandlers($handlers); + $this->processors = $processors; + } + + /** + * @return string + */ + public function getName() + { + return $this->name; + } + + /** + * Return a new cloned instance with the name changed + * + * @return static + */ + public function withName($name) + { + $new = clone $this; + $new->name = $name; + + return $new; + } + + /** + * Pushes a handler on to the stack. + * + * @param HandlerInterface $handler + * @return $this + */ + public function pushHandler(HandlerInterface $handler) + { + array_unshift($this->handlers, $handler); + + return $this; + } + + /** + * Pops a handler from the stack + * + * @return HandlerInterface + */ + public function popHandler() + { + if (!$this->handlers) { + throw new \LogicException('You tried to pop from an empty handler stack.'); + } + + return array_shift($this->handlers); + } + + /** + * Set handlers, replacing all existing ones. + * + * If a map is passed, keys will be ignored. + * + * @param HandlerInterface[] $handlers + * @return $this + */ + public function setHandlers(array $handlers) + { + $this->handlers = array(); + foreach (array_reverse($handlers) as $handler) { + $this->pushHandler($handler); + } + + return $this; + } + + /** + * @return HandlerInterface[] + */ + public function getHandlers() + { + return $this->handlers; + } + + /** + * Adds a processor on to the stack. + * + * @param callable $callback + * @return $this + */ + public function pushProcessor($callback) + { + if (!is_callable($callback)) { + throw new \InvalidArgumentException('Processors must be valid callables (callback or object with an __invoke method), '.var_export($callback, true).' given'); + } + array_unshift($this->processors, $callback); + + return $this; + } + + /** + * Removes the processor on top of the stack and returns it. + * + * @return callable + */ + public function popProcessor() + { + if (!$this->processors) { + throw new \LogicException('You tried to pop from an empty processor stack.'); + } + + return array_shift($this->processors); + } + + /** + * @return callable[] + */ + public function getProcessors() + { + return $this->processors; + } + + /** + * Control the use of microsecond resolution timestamps in the 'datetime' + * member of new records. + * + * Generating microsecond resolution timestamps by calling + * microtime(true), formatting the result via sprintf() and then parsing + * the resulting string via \DateTime::createFromFormat() can incur + * a measurable runtime overhead vs simple usage of DateTime to capture + * a second resolution timestamp in systems which generate a large number + * of log events. + * + * @param bool $micro True to use microtime() to create timestamps + */ + public function useMicrosecondTimestamps($micro) + { + $this->microsecondTimestamps = (bool) $micro; + } + + /** + * Adds a log record. + * + * @param int $level The logging level + * @param string $message The log message + * @param array $context The log context + * @return bool Whether the record has been processed + */ + public function addRecord($level, $message, array $context = array()) + { + if (!$this->handlers) { + $this->pushHandler(new StreamHandler('php://stderr', static::DEBUG)); + } + + $levelName = static::getLevelName($level); + + // check if any handler will handle this message so we can return early and save cycles + $handlerKey = null; + reset($this->handlers); + while ($handler = current($this->handlers)) { + if ($handler->isHandling(array('level' => $level))) { + $handlerKey = key($this->handlers); + break; + } + + next($this->handlers); + } + + if (null === $handlerKey) { + return false; + } + + if (!static::$timezone) { + static::$timezone = new \DateTimeZone(date_default_timezone_get() ?: 'UTC'); + } + + // php7.1+ always has microseconds enabled, so we do not need this hack + if ($this->microsecondTimestamps && PHP_VERSION_ID < 70100) { + $ts = \DateTime::createFromFormat('U.u', sprintf('%.6F', microtime(true)), static::$timezone); + } else { + $ts = new \DateTime(null, static::$timezone); + } + $ts->setTimezone(static::$timezone); + + $record = array( + 'message' => (string) $message, + 'context' => $context, + 'level' => $level, + 'level_name' => $levelName, + 'channel' => $this->name, + 'datetime' => $ts, + 'extra' => array(), + ); + + try { + foreach ($this->processors as $processor) { + $record = call_user_func($processor, $record); + } + + while ($handler = current($this->handlers)) { + if (true === $handler->handle($record)) { + break; + } + + next($this->handlers); + } + } catch (Exception $e) { + $this->handleException($e, $record); + } + + return true; + } + + /** + * Ends a log cycle and frees all resources used by handlers. + * + * Closing a Handler means flushing all buffers and freeing any open resources/handles. + * Handlers that have been closed should be able to accept log records again and re-open + * themselves on demand, but this may not always be possible depending on implementation. + * + * This is useful at the end of a request and will be called automatically on every handler + * when they get destructed. + */ + public function close() + { + foreach ($this->handlers as $handler) { + if (method_exists($handler, 'close')) { + $handler->close(); + } + } + } + + /** + * Ends a log cycle and resets all handlers and processors to their initial state. + * + * Resetting a Handler or a Processor means flushing/cleaning all buffers, resetting internal + * state, and getting it back to a state in which it can receive log records again. + * + * This is useful in case you want to avoid logs leaking between two requests or jobs when you + * have a long running process like a worker or an application server serving multiple requests + * in one process. + */ + public function reset() + { + foreach ($this->handlers as $handler) { + if ($handler instanceof ResettableInterface) { + $handler->reset(); + } + } + + foreach ($this->processors as $processor) { + if ($processor instanceof ResettableInterface) { + $processor->reset(); + } + } + } + + /** + * Adds a log record at the DEBUG level. + * + * @param string $message The log message + * @param array $context The log context + * @return bool Whether the record has been processed + */ + public function addDebug($message, array $context = array()) + { + return $this->addRecord(static::DEBUG, $message, $context); + } + + /** + * Adds a log record at the INFO level. + * + * @param string $message The log message + * @param array $context The log context + * @return bool Whether the record has been processed + */ + public function addInfo($message, array $context = array()) + { + return $this->addRecord(static::INFO, $message, $context); + } + + /** + * Adds a log record at the NOTICE level. + * + * @param string $message The log message + * @param array $context The log context + * @return bool Whether the record has been processed + */ + public function addNotice($message, array $context = array()) + { + return $this->addRecord(static::NOTICE, $message, $context); + } + + /** + * Adds a log record at the WARNING level. + * + * @param string $message The log message + * @param array $context The log context + * @return bool Whether the record has been processed + */ + public function addWarning($message, array $context = array()) + { + return $this->addRecord(static::WARNING, $message, $context); + } + + /** + * Adds a log record at the ERROR level. + * + * @param string $message The log message + * @param array $context The log context + * @return bool Whether the record has been processed + */ + public function addError($message, array $context = array()) + { + return $this->addRecord(static::ERROR, $message, $context); + } + + /** + * Adds a log record at the CRITICAL level. + * + * @param string $message The log message + * @param array $context The log context + * @return bool Whether the record has been processed + */ + public function addCritical($message, array $context = array()) + { + return $this->addRecord(static::CRITICAL, $message, $context); + } + + /** + * Adds a log record at the ALERT level. + * + * @param string $message The log message + * @param array $context The log context + * @return bool Whether the record has been processed + */ + public function addAlert($message, array $context = array()) + { + return $this->addRecord(static::ALERT, $message, $context); + } + + /** + * Adds a log record at the EMERGENCY level. + * + * @param string $message The log message + * @param array $context The log context + * @return bool Whether the record has been processed + */ + public function addEmergency($message, array $context = array()) + { + return $this->addRecord(static::EMERGENCY, $message, $context); + } + + /** + * Gets all supported logging levels. + * + * @return array Assoc array with human-readable level names => level codes. + */ + public static function getLevels() + { + return array_flip(static::$levels); + } + + /** + * Gets the name of the logging level. + * + * @param int $level + * @return string + */ + public static function getLevelName($level) + { + if (!isset(static::$levels[$level])) { + throw new InvalidArgumentException('Level "'.$level.'" is not defined, use one of: '.implode(', ', array_keys(static::$levels))); + } + + return static::$levels[$level]; + } + + /** + * Converts PSR-3 levels to Monolog ones if necessary + * + * @param string|int Level number (monolog) or name (PSR-3) + * @return int + */ + public static function toMonologLevel($level) + { + if (is_string($level)) { + // Contains chars of all log levels and avoids using strtoupper() which may have + // strange results depending on locale (for example, "i" will become "İ") + $upper = strtr($level, 'abcdefgilmnortuwy', 'ABCDEFGILMNORTUWY'); + if (defined(__CLASS__.'::'.$upper)) { + return constant(__CLASS__ . '::' . $upper); + } + } + + return $level; + } + + /** + * Checks whether the Logger has a handler that listens on the given level + * + * @param int $level + * @return bool + */ + public function isHandling($level) + { + $record = array( + 'level' => $level, + ); + + foreach ($this->handlers as $handler) { + if ($handler->isHandling($record)) { + return true; + } + } + + return false; + } + + /** + * Set a custom exception handler + * + * @param callable $callback + * @return $this + */ + public function setExceptionHandler($callback) + { + if (!is_callable($callback)) { + throw new \InvalidArgumentException('Exception handler must be valid callable (callback or object with an __invoke method), '.var_export($callback, true).' given'); + } + $this->exceptionHandler = $callback; + + return $this; + } + + /** + * @return callable + */ + public function getExceptionHandler() + { + return $this->exceptionHandler; + } + + /** + * Delegates exception management to the custom exception handler, + * or throws the exception if no custom handler is set. + */ + protected function handleException(Exception $e, array $record) + { + if (!$this->exceptionHandler) { + throw $e; + } + + call_user_func($this->exceptionHandler, $e, $record); + } + + /** + * Adds a log record at an arbitrary level. + * + * This method allows for compatibility with common interfaces. + * + * @param mixed $level The log level + * @param string $message The log message + * @param array $context The log context + * @return bool Whether the record has been processed + */ + public function log($level, $message, array $context = array()) + { + $level = static::toMonologLevel($level); + + return $this->addRecord($level, $message, $context); + } + + /** + * Adds a log record at the DEBUG level. + * + * This method allows for compatibility with common interfaces. + * + * @param string $message The log message + * @param array $context The log context + * @return bool Whether the record has been processed + */ + public function debug($message, array $context = array()) + { + return $this->addRecord(static::DEBUG, $message, $context); + } + + /** + * Adds a log record at the INFO level. + * + * This method allows for compatibility with common interfaces. + * + * @param string $message The log message + * @param array $context The log context + * @return bool Whether the record has been processed + */ + public function info($message, array $context = array()) + { + return $this->addRecord(static::INFO, $message, $context); + } + + /** + * Adds a log record at the NOTICE level. + * + * This method allows for compatibility with common interfaces. + * + * @param string $message The log message + * @param array $context The log context + * @return bool Whether the record has been processed + */ + public function notice($message, array $context = array()) + { + return $this->addRecord(static::NOTICE, $message, $context); + } + + /** + * Adds a log record at the WARNING level. + * + * This method allows for compatibility with common interfaces. + * + * @param string $message The log message + * @param array $context The log context + * @return bool Whether the record has been processed + */ + public function warn($message, array $context = array()) + { + return $this->addRecord(static::WARNING, $message, $context); + } + + /** + * Adds a log record at the WARNING level. + * + * This method allows for compatibility with common interfaces. + * + * @param string $message The log message + * @param array $context The log context + * @return bool Whether the record has been processed + */ + public function warning($message, array $context = array()) + { + return $this->addRecord(static::WARNING, $message, $context); + } + + /** + * Adds a log record at the ERROR level. + * + * This method allows for compatibility with common interfaces. + * + * @param string $message The log message + * @param array $context The log context + * @return bool Whether the record has been processed + */ + public function err($message, array $context = array()) + { + return $this->addRecord(static::ERROR, $message, $context); + } + + /** + * Adds a log record at the ERROR level. + * + * This method allows for compatibility with common interfaces. + * + * @param string $message The log message + * @param array $context The log context + * @return bool Whether the record has been processed + */ + public function error($message, array $context = array()) + { + return $this->addRecord(static::ERROR, $message, $context); + } + + /** + * Adds a log record at the CRITICAL level. + * + * This method allows for compatibility with common interfaces. + * + * @param string $message The log message + * @param array $context The log context + * @return bool Whether the record has been processed + */ + public function crit($message, array $context = array()) + { + return $this->addRecord(static::CRITICAL, $message, $context); + } + + /** + * Adds a log record at the CRITICAL level. + * + * This method allows for compatibility with common interfaces. + * + * @param string $message The log message + * @param array $context The log context + * @return bool Whether the record has been processed + */ + public function critical($message, array $context = array()) + { + return $this->addRecord(static::CRITICAL, $message, $context); + } + + /** + * Adds a log record at the ALERT level. + * + * This method allows for compatibility with common interfaces. + * + * @param string $message The log message + * @param array $context The log context + * @return bool Whether the record has been processed + */ + public function alert($message, array $context = array()) + { + return $this->addRecord(static::ALERT, $message, $context); + } + + /** + * Adds a log record at the EMERGENCY level. + * + * This method allows for compatibility with common interfaces. + * + * @param string $message The log message + * @param array $context The log context + * @return bool Whether the record has been processed + */ + public function emerg($message, array $context = array()) + { + return $this->addRecord(static::EMERGENCY, $message, $context); + } + + /** + * Adds a log record at the EMERGENCY level. + * + * This method allows for compatibility with common interfaces. + * + * @param string $message The log message + * @param array $context The log context + * @return bool Whether the record has been processed + */ + public function emergency($message, array $context = array()) + { + return $this->addRecord(static::EMERGENCY, $message, $context); + } + + /** + * Set the timezone to be used for the timestamp of log records. + * + * This is stored globally for all Logger instances + * + * @param \DateTimeZone $tz Timezone object + */ + public static function setTimezone(\DateTimeZone $tz) + { + self::$timezone = $tz; + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Processor/GitProcessor.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Processor/GitProcessor.php new file mode 100644 index 0000000..cdf5ec7 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Processor/GitProcessor.php @@ -0,0 +1,64 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Processor; + +use Monolog\Logger; + +/** + * Injects Git branch and Git commit SHA in all records + * + * @author Nick Otter + * @author Jordi Boggiano + */ +class GitProcessor implements ProcessorInterface +{ + private $level; + private static $cache; + + public function __construct($level = Logger::DEBUG) + { + $this->level = Logger::toMonologLevel($level); + } + + /** + * @param array $record + * @return array + */ + public function __invoke(array $record) + { + // return if the level is not high enough + if ($record['level'] < $this->level) { + return $record; + } + + $record['extra']['git'] = self::getGitInfo(); + + return $record; + } + + private static function getGitInfo() + { + if (self::$cache) { + return self::$cache; + } + + $branches = `git branch -v --no-abbrev`; + if ($branches && preg_match('{^\* (.+?)\s+([a-f0-9]{40})(?:\s|$)}m', $branches, $matches)) { + return self::$cache = array( + 'branch' => $matches[1], + 'commit' => $matches[2], + ); + } + + return self::$cache = array(); + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Processor/IntrospectionProcessor.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Processor/IntrospectionProcessor.php new file mode 100644 index 0000000..6ae192a --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Processor/IntrospectionProcessor.php @@ -0,0 +1,112 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Processor; + +use Monolog\Logger; + +/** + * Injects line/file:class/function where the log message came from + * + * Warning: This only works if the handler processes the logs directly. + * If you put the processor on a handler that is behind a FingersCrossedHandler + * for example, the processor will only be called once the trigger level is reached, + * and all the log records will have the same file/line/.. data from the call that + * triggered the FingersCrossedHandler. + * + * @author Jordi Boggiano + */ +class IntrospectionProcessor implements ProcessorInterface +{ + private $level; + + private $skipClassesPartials; + + private $skipStackFramesCount; + + private $skipFunctions = array( + 'call_user_func', + 'call_user_func_array', + ); + + public function __construct($level = Logger::DEBUG, array $skipClassesPartials = array(), $skipStackFramesCount = 0) + { + $this->level = Logger::toMonologLevel($level); + $this->skipClassesPartials = array_merge(array('Monolog\\'), $skipClassesPartials); + $this->skipStackFramesCount = $skipStackFramesCount; + } + + /** + * @param array $record + * @return array + */ + public function __invoke(array $record) + { + // return if the level is not high enough + if ($record['level'] < $this->level) { + return $record; + } + + /* + * http://php.net/manual/en/function.debug-backtrace.php + * As of 5.3.6, DEBUG_BACKTRACE_IGNORE_ARGS option was added. + * Any version less than 5.3.6 must use the DEBUG_BACKTRACE_IGNORE_ARGS constant value '2'. + */ + $trace = debug_backtrace((PHP_VERSION_ID < 50306) ? 2 : DEBUG_BACKTRACE_IGNORE_ARGS); + + // skip first since it's always the current method + array_shift($trace); + // the call_user_func call is also skipped + array_shift($trace); + + $i = 0; + + while ($this->isTraceClassOrSkippedFunction($trace, $i)) { + if (isset($trace[$i]['class'])) { + foreach ($this->skipClassesPartials as $part) { + if (strpos($trace[$i]['class'], $part) !== false) { + $i++; + continue 2; + } + } + } elseif (in_array($trace[$i]['function'], $this->skipFunctions)) { + $i++; + continue; + } + + break; + } + + $i += $this->skipStackFramesCount; + + // we should have the call source now + $record['extra'] = array_merge( + $record['extra'], + array( + 'file' => isset($trace[$i - 1]['file']) ? $trace[$i - 1]['file'] : null, + 'line' => isset($trace[$i - 1]['line']) ? $trace[$i - 1]['line'] : null, + 'class' => isset($trace[$i]['class']) ? $trace[$i]['class'] : null, + 'function' => isset($trace[$i]['function']) ? $trace[$i]['function'] : null, + ) + ); + + return $record; + } + + private function isTraceClassOrSkippedFunction(array $trace, $index) + { + if (!isset($trace[$index])) { + return false; + } + + return isset($trace[$index]['class']) || in_array($trace[$index]['function'], $this->skipFunctions); + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Processor/MemoryPeakUsageProcessor.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Processor/MemoryPeakUsageProcessor.php new file mode 100644 index 0000000..0543e92 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Processor/MemoryPeakUsageProcessor.php @@ -0,0 +1,35 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Processor; + +/** + * Injects memory_get_peak_usage in all records + * + * @see Monolog\Processor\MemoryProcessor::__construct() for options + * @author Rob Jensen + */ +class MemoryPeakUsageProcessor extends MemoryProcessor +{ + /** + * @param array $record + * @return array + */ + public function __invoke(array $record) + { + $bytes = memory_get_peak_usage($this->realUsage); + $formatted = $this->formatBytes($bytes); + + $record['extra']['memory_peak_usage'] = $formatted; + + return $record; + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Processor/MemoryProcessor.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Processor/MemoryProcessor.php new file mode 100644 index 0000000..2a379a3 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Processor/MemoryProcessor.php @@ -0,0 +1,63 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Processor; + +/** + * Some methods that are common for all memory processors + * + * @author Rob Jensen + */ +abstract class MemoryProcessor implements ProcessorInterface +{ + /** + * @var bool If true, get the real size of memory allocated from system. Else, only the memory used by emalloc() is reported. + */ + protected $realUsage; + + /** + * @var bool If true, then format memory size to human readable string (MB, KB, B depending on size) + */ + protected $useFormatting; + + /** + * @param bool $realUsage Set this to true to get the real size of memory allocated from system. + * @param bool $useFormatting If true, then format memory size to human readable string (MB, KB, B depending on size) + */ + public function __construct($realUsage = true, $useFormatting = true) + { + $this->realUsage = (bool) $realUsage; + $this->useFormatting = (bool) $useFormatting; + } + + /** + * Formats bytes into a human readable string if $this->useFormatting is true, otherwise return $bytes as is + * + * @param int $bytes + * @return string|int Formatted string if $this->useFormatting is true, otherwise return $bytes as is + */ + protected function formatBytes($bytes) + { + $bytes = (int) $bytes; + + if (!$this->useFormatting) { + return $bytes; + } + + if ($bytes > 1024 * 1024) { + return round($bytes / 1024 / 1024, 2).' MB'; + } elseif ($bytes > 1024) { + return round($bytes / 1024, 2).' KB'; + } + + return $bytes . ' B'; + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Processor/MemoryUsageProcessor.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Processor/MemoryUsageProcessor.php new file mode 100644 index 0000000..2783d65 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Processor/MemoryUsageProcessor.php @@ -0,0 +1,35 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Processor; + +/** + * Injects memory_get_usage in all records + * + * @see Monolog\Processor\MemoryProcessor::__construct() for options + * @author Rob Jensen + */ +class MemoryUsageProcessor extends MemoryProcessor +{ + /** + * @param array $record + * @return array + */ + public function __invoke(array $record) + { + $bytes = memory_get_usage($this->realUsage); + $formatted = $this->formatBytes($bytes); + + $record['extra']['memory_usage'] = $formatted; + + return $record; + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Processor/MercurialProcessor.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Processor/MercurialProcessor.php new file mode 100644 index 0000000..2f5b326 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Processor/MercurialProcessor.php @@ -0,0 +1,63 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Processor; + +use Monolog\Logger; + +/** + * Injects Hg branch and Hg revision number in all records + * + * @author Jonathan A. Schweder + */ +class MercurialProcessor implements ProcessorInterface +{ + private $level; + private static $cache; + + public function __construct($level = Logger::DEBUG) + { + $this->level = Logger::toMonologLevel($level); + } + + /** + * @param array $record + * @return array + */ + public function __invoke(array $record) + { + // return if the level is not high enough + if ($record['level'] < $this->level) { + return $record; + } + + $record['extra']['hg'] = self::getMercurialInfo(); + + return $record; + } + + private static function getMercurialInfo() + { + if (self::$cache) { + return self::$cache; + } + + $result = explode(' ', trim(`hg id -nb`)); + if (count($result) >= 3) { + return self::$cache = array( + 'branch' => $result[1], + 'revision' => $result[2], + ); + } + + return self::$cache = array(); + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Processor/ProcessIdProcessor.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Processor/ProcessIdProcessor.php new file mode 100644 index 0000000..66b80fb --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Processor/ProcessIdProcessor.php @@ -0,0 +1,31 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Processor; + +/** + * Adds value of getmypid into records + * + * @author Andreas Hörnicke + */ +class ProcessIdProcessor implements ProcessorInterface +{ + /** + * @param array $record + * @return array + */ + public function __invoke(array $record) + { + $record['extra']['process_id'] = getmypid(); + + return $record; + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Processor/ProcessorInterface.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Processor/ProcessorInterface.php new file mode 100644 index 0000000..7e64d4d --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Processor/ProcessorInterface.php @@ -0,0 +1,25 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Processor; + +/** + * An optional interface to allow labelling Monolog processors. + * + * @author Nicolas Grekas + */ +interface ProcessorInterface +{ + /** + * @return array The processed records + */ + public function __invoke(array $records); +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Processor/PsrLogMessageProcessor.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Processor/PsrLogMessageProcessor.php new file mode 100644 index 0000000..0088505 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Processor/PsrLogMessageProcessor.php @@ -0,0 +1,50 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Processor; + +use Monolog\Utils; + +/** + * Processes a record's message according to PSR-3 rules + * + * It replaces {foo} with the value from $context['foo'] + * + * @author Jordi Boggiano + */ +class PsrLogMessageProcessor implements ProcessorInterface +{ + /** + * @param array $record + * @return array + */ + public function __invoke(array $record) + { + if (false === strpos($record['message'], '{')) { + return $record; + } + + $replacements = array(); + foreach ($record['context'] as $key => $val) { + if (is_null($val) || is_scalar($val) || (is_object($val) && method_exists($val, "__toString"))) { + $replacements['{'.$key.'}'] = $val; + } elseif (is_object($val)) { + $replacements['{'.$key.'}'] = '[object '.Utils::getClass($val).']'; + } else { + $replacements['{'.$key.'}'] = '['.gettype($val).']'; + } + } + + $record['message'] = strtr($record['message'], $replacements); + + return $record; + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Processor/TagProcessor.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Processor/TagProcessor.php new file mode 100644 index 0000000..615a4d9 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Processor/TagProcessor.php @@ -0,0 +1,44 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Processor; + +/** + * Adds a tags array into record + * + * @author Martijn Riemers + */ +class TagProcessor implements ProcessorInterface +{ + private $tags; + + public function __construct(array $tags = array()) + { + $this->setTags($tags); + } + + public function addTags(array $tags = array()) + { + $this->tags = array_merge($this->tags, $tags); + } + + public function setTags(array $tags = array()) + { + $this->tags = $tags; + } + + public function __invoke(array $record) + { + $record['extra']['tags'] = $this->tags; + + return $record; + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Processor/UidProcessor.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Processor/UidProcessor.php new file mode 100644 index 0000000..d1f708c --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Processor/UidProcessor.php @@ -0,0 +1,59 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Processor; + +use Monolog\ResettableInterface; + +/** + * Adds a unique identifier into records + * + * @author Simon Mönch + */ +class UidProcessor implements ProcessorInterface, ResettableInterface +{ + private $uid; + + public function __construct($length = 7) + { + if (!is_int($length) || $length > 32 || $length < 1) { + throw new \InvalidArgumentException('The uid length must be an integer between 1 and 32'); + } + + + $this->uid = $this->generateUid($length); + } + + public function __invoke(array $record) + { + $record['extra']['uid'] = $this->uid; + + return $record; + } + + /** + * @return string + */ + public function getUid() + { + return $this->uid; + } + + public function reset() + { + $this->uid = $this->generateUid(strlen($this->uid)); + } + + private function generateUid($length) + { + return substr(hash('md5', uniqid('', true)), 0, $length); + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Processor/WebProcessor.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Processor/WebProcessor.php new file mode 100644 index 0000000..2e8dfae --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Processor/WebProcessor.php @@ -0,0 +1,113 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Processor; + +/** + * Injects url/method and remote IP of the current web request in all records + * + * @author Jordi Boggiano + */ +class WebProcessor implements ProcessorInterface +{ + /** + * @var array|\ArrayAccess + */ + protected $serverData; + + /** + * Default fields + * + * Array is structured as [key in record.extra => key in $serverData] + * + * @var array + */ + protected $extraFields = array( + 'url' => 'REQUEST_URI', + 'ip' => 'REMOTE_ADDR', + 'http_method' => 'REQUEST_METHOD', + 'server' => 'SERVER_NAME', + 'referrer' => 'HTTP_REFERER', + ); + + /** + * @param array|\ArrayAccess $serverData Array or object w/ ArrayAccess that provides access to the $_SERVER data + * @param array|null $extraFields Field names and the related key inside $serverData to be added. If not provided it defaults to: url, ip, http_method, server, referrer + */ + public function __construct($serverData = null, array $extraFields = null) + { + if (null === $serverData) { + $this->serverData = &$_SERVER; + } elseif (is_array($serverData) || $serverData instanceof \ArrayAccess) { + $this->serverData = $serverData; + } else { + throw new \UnexpectedValueException('$serverData must be an array or object implementing ArrayAccess.'); + } + + if (isset($this->serverData['UNIQUE_ID'])) { + $this->extraFields['unique_id'] = 'UNIQUE_ID'; + } + + if (null !== $extraFields) { + if (isset($extraFields[0])) { + foreach (array_keys($this->extraFields) as $fieldName) { + if (!in_array($fieldName, $extraFields)) { + unset($this->extraFields[$fieldName]); + } + } + } else { + $this->extraFields = $extraFields; + } + } + } + + /** + * @param array $record + * @return array + */ + public function __invoke(array $record) + { + // skip processing if for some reason request data + // is not present (CLI or wonky SAPIs) + if (!isset($this->serverData['REQUEST_URI'])) { + return $record; + } + + $record['extra'] = $this->appendExtraFields($record['extra']); + + return $record; + } + + /** + * @param string $extraName + * @param string $serverName + * @return $this + */ + public function addExtraField($extraName, $serverName) + { + $this->extraFields[$extraName] = $serverName; + + return $this; + } + + /** + * @param array $extra + * @return array + */ + private function appendExtraFields(array $extra) + { + foreach ($this->extraFields as $extraName => $serverName) { + $extra[$extraName] = isset($this->serverData[$serverName]) ? $this->serverData[$serverName] : null; + } + + return $extra; + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Registry.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Registry.php new file mode 100644 index 0000000..159b751 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Registry.php @@ -0,0 +1,134 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog; + +use InvalidArgumentException; + +/** + * Monolog log registry + * + * Allows to get `Logger` instances in the global scope + * via static method calls on this class. + * + * + * $application = new Monolog\Logger('application'); + * $api = new Monolog\Logger('api'); + * + * Monolog\Registry::addLogger($application); + * Monolog\Registry::addLogger($api); + * + * function testLogger() + * { + * Monolog\Registry::api()->addError('Sent to $api Logger instance'); + * Monolog\Registry::application()->addError('Sent to $application Logger instance'); + * } + * + * + * @author Tomas Tatarko + */ +class Registry +{ + /** + * List of all loggers in the registry (by named indexes) + * + * @var Logger[] + */ + private static $loggers = array(); + + /** + * Adds new logging channel to the registry + * + * @param Logger $logger Instance of the logging channel + * @param string|null $name Name of the logging channel ($logger->getName() by default) + * @param bool $overwrite Overwrite instance in the registry if the given name already exists? + * @throws \InvalidArgumentException If $overwrite set to false and named Logger instance already exists + */ + public static function addLogger(Logger $logger, $name = null, $overwrite = false) + { + $name = $name ?: $logger->getName(); + + if (isset(self::$loggers[$name]) && !$overwrite) { + throw new InvalidArgumentException('Logger with the given name already exists'); + } + + self::$loggers[$name] = $logger; + } + + /** + * Checks if such logging channel exists by name or instance + * + * @param string|Logger $logger Name or logger instance + */ + public static function hasLogger($logger) + { + if ($logger instanceof Logger) { + $index = array_search($logger, self::$loggers, true); + + return false !== $index; + } else { + return isset(self::$loggers[$logger]); + } + } + + /** + * Removes instance from registry by name or instance + * + * @param string|Logger $logger Name or logger instance + */ + public static function removeLogger($logger) + { + if ($logger instanceof Logger) { + if (false !== ($idx = array_search($logger, self::$loggers, true))) { + unset(self::$loggers[$idx]); + } + } else { + unset(self::$loggers[$logger]); + } + } + + /** + * Clears the registry + */ + public static function clear() + { + self::$loggers = array(); + } + + /** + * Gets Logger instance from the registry + * + * @param string $name Name of the requested Logger instance + * @throws \InvalidArgumentException If named Logger instance is not in the registry + * @return Logger Requested instance of Logger + */ + public static function getInstance($name) + { + if (!isset(self::$loggers[$name])) { + throw new InvalidArgumentException(sprintf('Requested "%s" logger instance is not in the registry', $name)); + } + + return self::$loggers[$name]; + } + + /** + * Gets Logger instance from the registry via static method call + * + * @param string $name Name of the requested Logger instance + * @param array $arguments Arguments passed to static method call + * @throws \InvalidArgumentException If named Logger instance is not in the registry + * @return Logger Requested instance of Logger + */ + public static function __callStatic($name, $arguments) + { + return self::getInstance($name); + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/ResettableInterface.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/ResettableInterface.php new file mode 100644 index 0000000..635bc77 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/ResettableInterface.php @@ -0,0 +1,31 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog; + +/** + * Handler or Processor implementing this interface will be reset when Logger::reset() is called. + * + * Resetting ends a log cycle gets them back to their initial state. + * + * Resetting a Handler or a Processor means flushing/cleaning all buffers, resetting internal + * state, and getting it back to a state in which it can receive log records again. + * + * This is useful in case you want to avoid logs leaking between two requests or jobs when you + * have a long running process like a worker or an application server serving multiple requests + * in one process. + * + * @author Grégoire Pineau + */ +interface ResettableInterface +{ + public function reset(); +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/SignalHandler.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/SignalHandler.php new file mode 100644 index 0000000..d87018f --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/SignalHandler.php @@ -0,0 +1,115 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog; + +use Psr\Log\LoggerInterface; +use Psr\Log\LogLevel; +use ReflectionExtension; + +/** + * Monolog POSIX signal handler + * + * @author Robert Gust-Bardon + */ +class SignalHandler +{ + private $logger; + + private $previousSignalHandler = array(); + private $signalLevelMap = array(); + private $signalRestartSyscalls = array(); + + public function __construct(LoggerInterface $logger) + { + $this->logger = $logger; + } + + public function registerSignalHandler($signo, $level = LogLevel::CRITICAL, $callPrevious = true, $restartSyscalls = true, $async = true) + { + if (!extension_loaded('pcntl') || !function_exists('pcntl_signal')) { + return $this; + } + + if ($callPrevious) { + if (function_exists('pcntl_signal_get_handler')) { + $handler = pcntl_signal_get_handler($signo); + if ($handler === false) { + return $this; + } + $this->previousSignalHandler[$signo] = $handler; + } else { + $this->previousSignalHandler[$signo] = true; + } + } else { + unset($this->previousSignalHandler[$signo]); + } + $this->signalLevelMap[$signo] = $level; + $this->signalRestartSyscalls[$signo] = $restartSyscalls; + + if (function_exists('pcntl_async_signals') && $async !== null) { + pcntl_async_signals($async); + } + + pcntl_signal($signo, array($this, 'handleSignal'), $restartSyscalls); + + return $this; + } + + public function handleSignal($signo, array $siginfo = null) + { + static $signals = array(); + + if (!$signals && extension_loaded('pcntl')) { + $pcntl = new ReflectionExtension('pcntl'); + $constants = $pcntl->getConstants(); + if (!$constants) { + // HHVM 3.24.2 returns an empty array. + $constants = get_defined_constants(true); + $constants = $constants['Core']; + } + foreach ($constants as $name => $value) { + if (substr($name, 0, 3) === 'SIG' && $name[3] !== '_' && is_int($value)) { + $signals[$value] = $name; + } + } + unset($constants); + } + + $level = isset($this->signalLevelMap[$signo]) ? $this->signalLevelMap[$signo] : LogLevel::CRITICAL; + $signal = isset($signals[$signo]) ? $signals[$signo] : $signo; + $context = isset($siginfo) ? $siginfo : array(); + $this->logger->log($level, sprintf('Program received signal %s', $signal), $context); + + if (!isset($this->previousSignalHandler[$signo])) { + return; + } + + if ($this->previousSignalHandler[$signo] === true || $this->previousSignalHandler[$signo] === SIG_DFL) { + if (extension_loaded('pcntl') && function_exists('pcntl_signal') && function_exists('pcntl_sigprocmask') && function_exists('pcntl_signal_dispatch') + && extension_loaded('posix') && function_exists('posix_getpid') && function_exists('posix_kill')) { + $restartSyscalls = isset($this->signalRestartSyscalls[$signo]) ? $this->signalRestartSyscalls[$signo] : true; + pcntl_signal($signo, SIG_DFL, $restartSyscalls); + pcntl_sigprocmask(SIG_UNBLOCK, array($signo), $oldset); + posix_kill(posix_getpid(), $signo); + pcntl_signal_dispatch(); + pcntl_sigprocmask(SIG_SETMASK, $oldset); + pcntl_signal($signo, array($this, 'handleSignal'), $restartSyscalls); + } + } elseif (is_callable($this->previousSignalHandler[$signo])) { + if (PHP_VERSION_ID >= 70100) { + $this->previousSignalHandler[$signo]($signo, $siginfo); + } else { + $this->previousSignalHandler[$signo]($signo); + } + } + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Utils.php b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Utils.php new file mode 100644 index 0000000..712b196 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/monolog/monolog/src/Monolog/Utils.php @@ -0,0 +1,189 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog; + +class Utils +{ + /** + * @internal + */ + public static function getClass($object) + { + $class = \get_class($object); + + return 'c' === $class[0] && 0 === strpos($class, "class@anonymous\0") ? get_parent_class($class).'@anonymous' : $class; + } + + /** + * Makes sure if a relative path is passed in it is turned into an absolute path + * + * @param string $streamUrl stream URL or path without protocol + * + * @return string + */ + public static function canonicalizePath($streamUrl) + { + $prefix = ''; + if ('file://' === substr($streamUrl, 0, 7)) { + $streamUrl = substr($streamUrl, 7); + $prefix = 'file://'; + } + + // other type of stream, not supported + if (false !== strpos($streamUrl, '://')) { + return $streamUrl; + } + + // already absolute + if (substr($streamUrl, 0, 1) === '/' || substr($streamUrl, 1, 1) === ':' || substr($streamUrl, 0, 2) === '\\\\') { + return $prefix.$streamUrl; + } + + $streamUrl = getcwd() . '/' . $streamUrl; + + return $prefix.$streamUrl; + } + + /** + * Return the JSON representation of a value + * + * @param mixed $data + * @param int $encodeFlags flags to pass to json encode, defaults to JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE + * @param bool $ignoreErrors whether to ignore encoding errors or to throw on error, when ignored and the encoding fails, "null" is returned which is valid json for null + * @throws \RuntimeException if encoding fails and errors are not ignored + * @return string + */ + public static function jsonEncode($data, $encodeFlags = null, $ignoreErrors = false) + { + if (null === $encodeFlags && version_compare(PHP_VERSION, '5.4.0', '>=')) { + $encodeFlags = JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE; + } + + if ($ignoreErrors) { + $json = @json_encode($data, $encodeFlags); + if (false === $json) { + return 'null'; + } + + return $json; + } + + $json = json_encode($data, $encodeFlags); + if (false === $json) { + $json = self::handleJsonError(json_last_error(), $data); + } + + return $json; + } + + /** + * Handle a json_encode failure. + * + * If the failure is due to invalid string encoding, try to clean the + * input and encode again. If the second encoding attempt fails, the + * inital error is not encoding related or the input can't be cleaned then + * raise a descriptive exception. + * + * @param int $code return code of json_last_error function + * @param mixed $data data that was meant to be encoded + * @param int $encodeFlags flags to pass to json encode, defaults to JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE + * @throws \RuntimeException if failure can't be corrected + * @return string JSON encoded data after error correction + */ + public static function handleJsonError($code, $data, $encodeFlags = null) + { + if ($code !== JSON_ERROR_UTF8) { + self::throwEncodeError($code, $data); + } + + if (is_string($data)) { + self::detectAndCleanUtf8($data); + } elseif (is_array($data)) { + array_walk_recursive($data, array('Monolog\Utils', 'detectAndCleanUtf8')); + } else { + self::throwEncodeError($code, $data); + } + + if (null === $encodeFlags && version_compare(PHP_VERSION, '5.4.0', '>=')) { + $encodeFlags = JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE; + } + + $json = json_encode($data, $encodeFlags); + + if ($json === false) { + self::throwEncodeError(json_last_error(), $data); + } + + return $json; + } + + /** + * Throws an exception according to a given code with a customized message + * + * @param int $code return code of json_last_error function + * @param mixed $data data that was meant to be encoded + * @throws \RuntimeException + */ + private static function throwEncodeError($code, $data) + { + switch ($code) { + case JSON_ERROR_DEPTH: + $msg = 'Maximum stack depth exceeded'; + break; + case JSON_ERROR_STATE_MISMATCH: + $msg = 'Underflow or the modes mismatch'; + break; + case JSON_ERROR_CTRL_CHAR: + $msg = 'Unexpected control character found'; + break; + case JSON_ERROR_UTF8: + $msg = 'Malformed UTF-8 characters, possibly incorrectly encoded'; + break; + default: + $msg = 'Unknown error'; + } + + throw new \RuntimeException('JSON encoding failed: '.$msg.'. Encoding: '.var_export($data, true)); + } + + /** + * Detect invalid UTF-8 string characters and convert to valid UTF-8. + * + * Valid UTF-8 input will be left unmodified, but strings containing + * invalid UTF-8 codepoints will be reencoded as UTF-8 with an assumed + * original encoding of ISO-8859-15. This conversion may result in + * incorrect output if the actual encoding was not ISO-8859-15, but it + * will be clean UTF-8 output and will not rely on expensive and fragile + * detection algorithms. + * + * Function converts the input in place in the passed variable so that it + * can be used as a callback for array_walk_recursive. + * + * @param mixed &$data Input to check and convert if needed + * @private + */ + public static function detectAndCleanUtf8(&$data) + { + if (is_string($data) && !preg_match('//u', $data)) { + $data = preg_replace_callback( + '/[\x80-\xFF]+/', + function ($m) { return utf8_encode($m[0]); }, + $data + ); + $data = str_replace( + array('¤', '¦', '¨', '´', '¸', '¼', '½', '¾'), + array('€', 'Š', 'š', 'Ž', 'ž', 'Œ', 'œ', 'Ÿ'), + $data + ); + } + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/psr/container/.gitignore b/wp-content/plugins/wp-rocket/vendor/psr/container/.gitignore new file mode 100644 index 0000000..b2395aa --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/psr/container/.gitignore @@ -0,0 +1,3 @@ +composer.lock +composer.phar +/vendor/ diff --git a/wp-content/plugins/wp-rocket/vendor/psr/container/LICENSE b/wp-content/plugins/wp-rocket/vendor/psr/container/LICENSE new file mode 100644 index 0000000..2877a48 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/psr/container/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2013-2016 container-interop +Copyright (c) 2016 PHP Framework Interoperability Group + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/wp-content/plugins/wp-rocket/vendor/psr/container/README.md b/wp-content/plugins/wp-rocket/vendor/psr/container/README.md new file mode 100644 index 0000000..084f6df --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/psr/container/README.md @@ -0,0 +1,5 @@ +# PSR Container + +This repository holds all interfaces/classes/traits related to [PSR-11](https://github.com/container-interop/fig-standards/blob/master/proposed/container.md). + +Note that this is not a container implementation of its own. See the specification for more details. diff --git a/wp-content/plugins/wp-rocket/vendor/psr/container/composer.json b/wp-content/plugins/wp-rocket/vendor/psr/container/composer.json new file mode 100644 index 0000000..b8ee012 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/psr/container/composer.json @@ -0,0 +1,27 @@ +{ + "name": "psr/container", + "type": "library", + "description": "Common Container Interface (PHP FIG PSR-11)", + "keywords": ["psr", "psr-11", "container", "container-interop", "container-interface"], + "homepage": "https://github.com/php-fig/container", + "license": "MIT", + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "require": { + "php": ">=5.3.0" + }, + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/psr/container/src/ContainerExceptionInterface.php b/wp-content/plugins/wp-rocket/vendor/psr/container/src/ContainerExceptionInterface.php new file mode 100644 index 0000000..d35c6b4 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/psr/container/src/ContainerExceptionInterface.php @@ -0,0 +1,13 @@ +log(LogLevel::EMERGENCY, $message, $context); + } + + /** + * Action must be taken immediately. + * + * Example: Entire website down, database unavailable, etc. This should + * trigger the SMS alerts and wake you up. + * + * @param string $message + * @param array $context + * + * @return void + */ + public function alert($message, array $context = array()) + { + $this->log(LogLevel::ALERT, $message, $context); + } + + /** + * Critical conditions. + * + * Example: Application component unavailable, unexpected exception. + * + * @param string $message + * @param array $context + * + * @return void + */ + public function critical($message, array $context = array()) + { + $this->log(LogLevel::CRITICAL, $message, $context); + } + + /** + * Runtime errors that do not require immediate action but should typically + * be logged and monitored. + * + * @param string $message + * @param array $context + * + * @return void + */ + public function error($message, array $context = array()) + { + $this->log(LogLevel::ERROR, $message, $context); + } + + /** + * Exceptional occurrences that are not errors. + * + * Example: Use of deprecated APIs, poor use of an API, undesirable things + * that are not necessarily wrong. + * + * @param string $message + * @param array $context + * + * @return void + */ + public function warning($message, array $context = array()) + { + $this->log(LogLevel::WARNING, $message, $context); + } + + /** + * Normal but significant events. + * + * @param string $message + * @param array $context + * + * @return void + */ + public function notice($message, array $context = array()) + { + $this->log(LogLevel::NOTICE, $message, $context); + } + + /** + * Interesting events. + * + * Example: User logs in, SQL logs. + * + * @param string $message + * @param array $context + * + * @return void + */ + public function info($message, array $context = array()) + { + $this->log(LogLevel::INFO, $message, $context); + } + + /** + * Detailed debug information. + * + * @param string $message + * @param array $context + * + * @return void + */ + public function debug($message, array $context = array()) + { + $this->log(LogLevel::DEBUG, $message, $context); + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/psr/log/Psr/Log/InvalidArgumentException.php b/wp-content/plugins/wp-rocket/vendor/psr/log/Psr/Log/InvalidArgumentException.php new file mode 100644 index 0000000..67f852d --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/psr/log/Psr/Log/InvalidArgumentException.php @@ -0,0 +1,7 @@ +logger = $logger; + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/psr/log/Psr/Log/LoggerInterface.php b/wp-content/plugins/wp-rocket/vendor/psr/log/Psr/Log/LoggerInterface.php new file mode 100644 index 0000000..2206cfd --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/psr/log/Psr/Log/LoggerInterface.php @@ -0,0 +1,125 @@ +log(LogLevel::EMERGENCY, $message, $context); + } + + /** + * Action must be taken immediately. + * + * Example: Entire website down, database unavailable, etc. This should + * trigger the SMS alerts and wake you up. + * + * @param string $message + * @param array $context + * + * @return void + */ + public function alert($message, array $context = array()) + { + $this->log(LogLevel::ALERT, $message, $context); + } + + /** + * Critical conditions. + * + * Example: Application component unavailable, unexpected exception. + * + * @param string $message + * @param array $context + * + * @return void + */ + public function critical($message, array $context = array()) + { + $this->log(LogLevel::CRITICAL, $message, $context); + } + + /** + * Runtime errors that do not require immediate action but should typically + * be logged and monitored. + * + * @param string $message + * @param array $context + * + * @return void + */ + public function error($message, array $context = array()) + { + $this->log(LogLevel::ERROR, $message, $context); + } + + /** + * Exceptional occurrences that are not errors. + * + * Example: Use of deprecated APIs, poor use of an API, undesirable things + * that are not necessarily wrong. + * + * @param string $message + * @param array $context + * + * @return void + */ + public function warning($message, array $context = array()) + { + $this->log(LogLevel::WARNING, $message, $context); + } + + /** + * Normal but significant events. + * + * @param string $message + * @param array $context + * + * @return void + */ + public function notice($message, array $context = array()) + { + $this->log(LogLevel::NOTICE, $message, $context); + } + + /** + * Interesting events. + * + * Example: User logs in, SQL logs. + * + * @param string $message + * @param array $context + * + * @return void + */ + public function info($message, array $context = array()) + { + $this->log(LogLevel::INFO, $message, $context); + } + + /** + * Detailed debug information. + * + * @param string $message + * @param array $context + * + * @return void + */ + public function debug($message, array $context = array()) + { + $this->log(LogLevel::DEBUG, $message, $context); + } + + /** + * Logs with an arbitrary level. + * + * @param mixed $level + * @param string $message + * @param array $context + * + * @return void + * + * @throws \Psr\Log\InvalidArgumentException + */ + abstract public function log($level, $message, array $context = array()); +} diff --git a/wp-content/plugins/wp-rocket/vendor/psr/log/Psr/Log/NullLogger.php b/wp-content/plugins/wp-rocket/vendor/psr/log/Psr/Log/NullLogger.php new file mode 100644 index 0000000..c8f7293 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/psr/log/Psr/Log/NullLogger.php @@ -0,0 +1,30 @@ +logger) { }` + * blocks. + */ +class NullLogger extends AbstractLogger +{ + /** + * Logs with an arbitrary level. + * + * @param mixed $level + * @param string $message + * @param array $context + * + * @return void + * + * @throws \Psr\Log\InvalidArgumentException + */ + public function log($level, $message, array $context = array()) + { + // noop + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/psr/log/Psr/Log/Test/DummyTest.php b/wp-content/plugins/wp-rocket/vendor/psr/log/Psr/Log/Test/DummyTest.php new file mode 100644 index 0000000..9638c11 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/psr/log/Psr/Log/Test/DummyTest.php @@ -0,0 +1,18 @@ + ". + * + * Example ->error('Foo') would yield "error Foo". + * + * @return string[] + */ + abstract public function getLogs(); + + public function testImplements() + { + $this->assertInstanceOf('Psr\Log\LoggerInterface', $this->getLogger()); + } + + /** + * @dataProvider provideLevelsAndMessages + */ + public function testLogsAtAllLevels($level, $message) + { + $logger = $this->getLogger(); + $logger->{$level}($message, array('user' => 'Bob')); + $logger->log($level, $message, array('user' => 'Bob')); + + $expected = array( + $level.' message of level '.$level.' with context: Bob', + $level.' message of level '.$level.' with context: Bob', + ); + $this->assertEquals($expected, $this->getLogs()); + } + + public function provideLevelsAndMessages() + { + return array( + LogLevel::EMERGENCY => array(LogLevel::EMERGENCY, 'message of level emergency with context: {user}'), + LogLevel::ALERT => array(LogLevel::ALERT, 'message of level alert with context: {user}'), + LogLevel::CRITICAL => array(LogLevel::CRITICAL, 'message of level critical with context: {user}'), + LogLevel::ERROR => array(LogLevel::ERROR, 'message of level error with context: {user}'), + LogLevel::WARNING => array(LogLevel::WARNING, 'message of level warning with context: {user}'), + LogLevel::NOTICE => array(LogLevel::NOTICE, 'message of level notice with context: {user}'), + LogLevel::INFO => array(LogLevel::INFO, 'message of level info with context: {user}'), + LogLevel::DEBUG => array(LogLevel::DEBUG, 'message of level debug with context: {user}'), + ); + } + + /** + * @expectedException \Psr\Log\InvalidArgumentException + */ + public function testThrowsOnInvalidLevel() + { + $logger = $this->getLogger(); + $logger->log('invalid level', 'Foo'); + } + + public function testContextReplacement() + { + $logger = $this->getLogger(); + $logger->info('{Message {nothing} {user} {foo.bar} a}', array('user' => 'Bob', 'foo.bar' => 'Bar')); + + $expected = array('info {Message {nothing} Bob Bar a}'); + $this->assertEquals($expected, $this->getLogs()); + } + + public function testObjectCastToString() + { + if (method_exists($this, 'createPartialMock')) { + $dummy = $this->createPartialMock('Psr\Log\Test\DummyTest', array('__toString')); + } else { + $dummy = $this->getMock('Psr\Log\Test\DummyTest', array('__toString')); + } + $dummy->expects($this->once()) + ->method('__toString') + ->will($this->returnValue('DUMMY')); + + $this->getLogger()->warning($dummy); + + $expected = array('warning DUMMY'); + $this->assertEquals($expected, $this->getLogs()); + } + + public function testContextCanContainAnything() + { + $closed = fopen('php://memory', 'r'); + fclose($closed); + + $context = array( + 'bool' => true, + 'null' => null, + 'string' => 'Foo', + 'int' => 0, + 'float' => 0.5, + 'nested' => array('with object' => new DummyTest), + 'object' => new \DateTime, + 'resource' => fopen('php://memory', 'r'), + 'closed' => $closed, + ); + + $this->getLogger()->warning('Crazy context data', $context); + + $expected = array('warning Crazy context data'); + $this->assertEquals($expected, $this->getLogs()); + } + + public function testContextExceptionKeyCanBeExceptionOrOtherValues() + { + $logger = $this->getLogger(); + $logger->warning('Random message', array('exception' => 'oops')); + $logger->critical('Uncaught Exception!', array('exception' => new \LogicException('Fail'))); + + $expected = array( + 'warning Random message', + 'critical Uncaught Exception!' + ); + $this->assertEquals($expected, $this->getLogs()); + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/psr/log/Psr/Log/Test/TestLogger.php b/wp-content/plugins/wp-rocket/vendor/psr/log/Psr/Log/Test/TestLogger.php new file mode 100644 index 0000000..1be3230 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/psr/log/Psr/Log/Test/TestLogger.php @@ -0,0 +1,147 @@ + $level, + 'message' => $message, + 'context' => $context, + ]; + + $this->recordsByLevel[$record['level']][] = $record; + $this->records[] = $record; + } + + public function hasRecords($level) + { + return isset($this->recordsByLevel[$level]); + } + + public function hasRecord($record, $level) + { + if (is_string($record)) { + $record = ['message' => $record]; + } + return $this->hasRecordThatPasses(function ($rec) use ($record) { + if ($rec['message'] !== $record['message']) { + return false; + } + if (isset($record['context']) && $rec['context'] !== $record['context']) { + return false; + } + return true; + }, $level); + } + + public function hasRecordThatContains($message, $level) + { + return $this->hasRecordThatPasses(function ($rec) use ($message) { + return strpos($rec['message'], $message) !== false; + }, $level); + } + + public function hasRecordThatMatches($regex, $level) + { + return $this->hasRecordThatPasses(function ($rec) use ($regex) { + return preg_match($regex, $rec['message']) > 0; + }, $level); + } + + public function hasRecordThatPasses(callable $predicate, $level) + { + if (!isset($this->recordsByLevel[$level])) { + return false; + } + foreach ($this->recordsByLevel[$level] as $i => $rec) { + if (call_user_func($predicate, $rec, $i)) { + return true; + } + } + return false; + } + + public function __call($method, $args) + { + if (preg_match('/(.*)(Debug|Info|Notice|Warning|Error|Critical|Alert|Emergency)(.*)/', $method, $matches) > 0) { + $genericMethod = $matches[1] . ('Records' !== $matches[3] ? 'Record' : '') . $matches[3]; + $level = strtolower($matches[2]); + if (method_exists($this, $genericMethod)) { + $args[] = $level; + return call_user_func_array([$this, $genericMethod], $args); + } + } + throw new \BadMethodCallException('Call to undefined method ' . get_class($this) . '::' . $method . '()'); + } + + public function reset() + { + $this->records = []; + $this->recordsByLevel = []; + } +} diff --git a/wp-content/plugins/wp-rocket/vendor/psr/log/README.md b/wp-content/plugins/wp-rocket/vendor/psr/log/README.md new file mode 100644 index 0000000..a9f20c4 --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/psr/log/README.md @@ -0,0 +1,58 @@ +PSR Log +======= + +This repository holds all interfaces/classes/traits related to +[PSR-3](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md). + +Note that this is not a logger of its own. It is merely an interface that +describes a logger. See the specification for more details. + +Installation +------------ + +```bash +composer require psr/log +``` + +Usage +----- + +If you need a logger, you can use the interface like this: + +```php +logger = $logger; + } + + public function doSomething() + { + if ($this->logger) { + $this->logger->info('Doing work'); + } + + try { + $this->doSomethingElse(); + } catch (Exception $exception) { + $this->logger->error('Oh no!', array('exception' => $exception)); + } + + // do something useful + } +} +``` + +You can then pick one of the implementations of the interface to get a logger. + +If you want to implement the interface, you can require this package and +implement `Psr\Log\LoggerInterface` in your code. Please read the +[specification text](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md) +for details. diff --git a/wp-content/plugins/wp-rocket/vendor/psr/log/composer.json b/wp-content/plugins/wp-rocket/vendor/psr/log/composer.json new file mode 100644 index 0000000..3f6d4ee --- /dev/null +++ b/wp-content/plugins/wp-rocket/vendor/psr/log/composer.json @@ -0,0 +1,26 @@ +{ + "name": "psr/log", + "description": "Common interface for logging libraries", + "keywords": ["psr", "psr-3", "log"], + "homepage": "https://github.com/php-fig/log", + "license": "MIT", + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "require": { + "php": ">=5.3.0" + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "Psr/Log/" + } + }, + "extra": { + "branch-alias": { + "dev-master": "1.1.x-dev" + } + } +} diff --git a/wp-content/plugins/wp-rocket/views/cache/advanced-cache.php b/wp-content/plugins/wp-rocket/views/cache/advanced-cache.php new file mode 100644 index 0000000..018f69f --- /dev/null +++ b/wp-content/plugins/wp-rocket/views/cache/advanced-cache.php @@ -0,0 +1,81 @@ + $rocket_path . 'inc/classes/Buffer/class-abstract-buffer.php', + 'WP_Rocket\\Buffer\\Cache' => $rocket_path . 'inc/classes/Buffer/class-cache.php', + 'WP_Rocket\\Buffer\\Tests' => $rocket_path . 'inc/classes/Buffer/class-tests.php', + 'WP_Rocket\\Buffer\\Config' => $rocket_path . 'inc/classes/Buffer/class-config.php', + 'WP_Rocket\\Logger\\HTML_Formatter' => $rocket_path . 'inc/classes/logger/class-html-formatter.php', + 'WP_Rocket\\Logger\\Logger' => $rocket_path . 'inc/classes/logger/class-logger.php', + 'WP_Rocket\\Logger\\Stream_Handler' => $rocket_path . 'inc/classes/logger/class-stream-handler.php', + 'WP_Rocket\\Traits\\Memoize' => $rocket_path . 'inc/classes/traits/trait-memoize.php', + ]; + + if ( isset( $rocket_classes[ $class ] ) ) { + $file = $rocket_classes[ $class ]; + } elseif ( strpos( $class, 'Monolog\\' ) === 0 ) { + $file = $rocket_path . 'vendor/monolog/monolog/src/' . str_replace( '\\', '/', $class ) . '.php'; + } elseif ( strpos( $class, 'Psr\\Log\\' ) === 0 ) { + $file = $rocket_path . 'vendor/psr/log/' . str_replace( '\\', '/', $class ) . '.php'; + } else { + return; + } + + if ( file_exists( $file ) ) { + require $file; + } + } +); + +if ( ! class_exists( '\WP_Rocket\Buffer\Cache' ) ) { + if ( ! defined( 'DONOTROCKETOPTIMIZE' ) ) { + define( 'DONOTROCKETOPTIMIZE', true ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedConstantFound + } + return; +} + +$rocket_config_class = new Config( + [ + 'config_dir_path' => $rocket_config_path, + ] +); + +( new Cache( + new Tests( + $rocket_config_class + ), + $rocket_config_class, + [ + 'cache_dir_path' => $rocket_cache_path, + ] +) )->maybe_init_process(); diff --git a/wp-content/plugins/wp-rocket/views/cpcss/activate-cpcss-mobile.php b/wp-content/plugins/wp-rocket/views/cpcss/activate-cpcss-mobile.php new file mode 100644 index 0000000..8bc64c9 --- /dev/null +++ b/wp-content/plugins/wp-rocket/views/cpcss/activate-cpcss-mobile.php @@ -0,0 +1,42 @@ + +
      +
      +
      +
      +
      +
      + ', + '' + ); + ?> +
      +
      + ', + '' + ); + ?> +
      +
      +
      + +
      +
      diff --git a/wp-content/plugins/wp-rocket/views/cpcss/metabox/container.php b/wp-content/plugins/wp-rocket/views/cpcss/metabox/container.php new file mode 100644 index 0000000..f59297d --- /dev/null +++ b/wp-content/plugins/wp-rocket/views/cpcss/metabox/container.php @@ -0,0 +1,30 @@ + +
      +

      +
      + +
      +
      +
      +
      + +

      + +
      +
      diff --git a/wp-content/plugins/wp-rocket/views/cpcss/metabox/generate.php b/wp-content/plugins/wp-rocket/views/cpcss/metabox/generate.php new file mode 100644 index 0000000..601fe8b --- /dev/null +++ b/wp-content/plugins/wp-rocket/views/cpcss/metabox/generate.php @@ -0,0 +1,59 @@ + +

      +', + '' + ); + ?> +

      +

      +', + '' + ); + ?> +

      +
      + +
      +
      + +
      diff --git a/wp-content/plugins/wp-rocket/views/deactivation-intent/form.php b/wp-content/plugins/wp-rocket/views/deactivation-intent/form.php new file mode 100644 index 0000000..db1a84e --- /dev/null +++ b/wp-content/plugins/wp-rocket/views/deactivation-intent/form.php @@ -0,0 +1,157 @@ + +
      +
      +
      + +

      +
      + +
      +
      +
      +

      +
        +
      • + + +
      • +
      • + + +
      • +
      • + + +
      • +
      • + + +
      • +
      • + + +
      • +
      • + + +
        + +
        +
      • +
      • + + +
        + +
        +
      • +
      + + +
      +
      +

      +

      +

      +
      + +
      +
      +
      + +
      +

      + , %2$s = . + printf( esc_html__( 'Is the issue fixed? Now you can reactivate options one at a time to determine which one caused the problem. %1$sMore info%2$s', 'rocket' ), '', '' ); + ?> +

      +
      +
      +

      +

      +

      +
      + https://yoast.com/ask-yoast-google-page-speed/ + +

      + , %2$s = . + printf( esc_html__( 'How to measure the load time of your site: %1$shttps://wp-rocket.me/blog/correctly-measure-websites-page-load-time/%2$s', 'rocket' ), '
      ', '' ); + ?> +

      +

      + , %2$s = . + printf( esc_html__( 'Why you should not be chasing a PageSpeed score: %1$shttps://wp-rocket.me/blog/the-truth-about-google-pagespeed-insights/%2$s', 'rocket' ), '
      ', '' ); + ?> +

      +
      +
      +

      +

      +

      + , %2$s = . + printf( esc_html__( 'The best way to see the improvement WP Rocket provides is to perform speed tests. Follow this guide to correctly measure the load time of your website: %1$shttps://wp-rocket.me/blog/correctly-measure-websites-page-load-time/%2$s', 'rocket' ), '
      ', '' ); + ?> +

      +
      +
      +

      +

      +

      +

      +

      + , %2$s = . + printf( esc_html__( 'To see the benefit WP Rocket is already providing, measure the speed of your site using a tool like Pingdom: %1$shttps://wp-rocket.me/blog/correctly-measure-websites-page-load-time/%2$s', 'rocket' ), '
      ', '' ); + ?> +

      +
      +
      + +
      +
      diff --git a/wp-content/plugins/wp-rocket/views/settings/beacon.php b/wp-content/plugins/wp-rocket/views/settings/beacon.php new file mode 100644 index 0000000..ef42deb --- /dev/null +++ b/wp-content/plugins/wp-rocket/views/settings/beacon.php @@ -0,0 +1,25 @@ + + diff --git a/wp-content/plugins/wp-rocket/views/settings/buttons/button.php b/wp-content/plugins/wp-rocket/views/settings/buttons/button.php new file mode 100644 index 0000000..e338ddd --- /dev/null +++ b/wp-content/plugins/wp-rocket/views/settings/buttons/button.php @@ -0,0 +1,19 @@ + tag, e.g. class, etc. + * } + */ + +defined( 'ABSPATH' ) || exit; + +?> + diff --git a/wp-content/plugins/wp-rocket/views/settings/buttons/link.php b/wp-content/plugins/wp-rocket/views/settings/buttons/link.php new file mode 100644 index 0000000..76eb34c --- /dev/null +++ b/wp-content/plugins/wp-rocket/views/settings/buttons/link.php @@ -0,0 +1,19 @@ + tag, e.g. class, target, etc. + * } + */ + +defined( 'ABSPATH' ) || exit; + +?> +> diff --git a/wp-content/plugins/wp-rocket/views/settings/enable-google-fonts.php b/wp-content/plugins/wp-rocket/views/settings/enable-google-fonts.php new file mode 100644 index 0000000..548f2de --- /dev/null +++ b/wp-content/plugins/wp-rocket/views/settings/enable-google-fonts.php @@ -0,0 +1,41 @@ + +
      +
      +
      +
      +
      + ', + '' + ); + ?> +
      +
      + ', + '' + ); + ?> +
      +
      +
      + +
      +
      diff --git a/wp-content/plugins/wp-rocket/views/settings/fields/cache-lifespan.php b/wp-content/plugins/wp-rocket/views/settings/fields/cache-lifespan.php new file mode 100644 index 0000000..a550e34 --- /dev/null +++ b/wp-content/plugins/wp-rocket/views/settings/fields/cache-lifespan.php @@ -0,0 +1,39 @@ + + +
      +
      + +
      + +
      + +
      + +
      +
      + + +
      +
      +
      +
      + +
      +
      +
      diff --git a/wp-content/plugins/wp-rocket/views/settings/fields/checkbox.php b/wp-content/plugins/wp-rocket/views/settings/fields/checkbox.php new file mode 100644 index 0000000..9341171 --- /dev/null +++ b/wp-content/plugins/wp-rocket/views/settings/fields/checkbox.php @@ -0,0 +1,71 @@ + + + +
      + + +
      > +
      + + > + +
      + + +
      + +
      + +
      + + +
      +
      + +
      + +
      + +
      + + +
      + + + +
      + +
      + + + +
      + + +
      +
      +
      + +
      + +
      + +
      + +
      + $url ) : // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound + ?> +
      +
      + +
      +
      +
      + +
      + +
      + +
      +
      + +
      +
      +
      + +
      +
      + +
      +
      +
      +
      + +
      +
      +
      + +
      + +
      +
      + +
      +
      diff --git a/wp-content/plugins/wp-rocket/views/settings/fields/hidden.php b/wp-content/plugins/wp-rocket/views/settings/fields/hidden.php new file mode 100644 index 0000000..694d2d8 --- /dev/null +++ b/wp-content/plugins/wp-rocket/views/settings/fields/hidden.php @@ -0,0 +1,18 @@ + + diff --git a/wp-content/plugins/wp-rocket/views/settings/fields/import-form.php b/wp-content/plugins/wp-rocket/views/settings/fields/import-form.php new file mode 100644 index 0000000..b27a8cc --- /dev/null +++ b/wp-content/plugins/wp-rocket/views/settings/fields/import-form.php @@ -0,0 +1,50 @@ + +

      +

      + +
      +
      + +
      + + + + +
      + + +
      +
      + + +
      +
      + + +
      +
      + + +
      + + +
      + +
      + +
      diff --git a/wp-content/plugins/wp-rocket/views/settings/fields/one-click-addon.php b/wp-content/plugins/wp-rocket/views/settings/fields/one-click-addon.php new file mode 100644 index 0000000..a8d85c5 --- /dev/null +++ b/wp-content/plugins/wp-rocket/views/settings/fields/one-click-addon.php @@ -0,0 +1,68 @@ + +
      +
      +
      +

      + +
      + > + +
      + +
      +
      + +
      +
      + +
      + +
      + +
      + + +
      + +
      + +
      +
      +
      +
      diff --git a/wp-content/plugins/wp-rocket/views/settings/fields/rocket-addon.php b/wp-content/plugins/wp-rocket/views/settings/fields/rocket-addon.php new file mode 100644 index 0000000..acfe81f --- /dev/null +++ b/wp-content/plugins/wp-rocket/views/settings/fields/rocket-addon.php @@ -0,0 +1,61 @@ + + +
      +
      +
      +

      +
      + > + +
      +
      +
      + +
      +
      + +
      + +
      + +
      + + +
      + +
      + + + + +
      +
      +
      +
      diff --git a/wp-content/plugins/wp-rocket/views/settings/fields/rocket-cdn.php b/wp-content/plugins/wp-rocket/views/settings/fields/rocket-cdn.php new file mode 100644 index 0000000..a78712e --- /dev/null +++ b/wp-content/plugins/wp-rocket/views/settings/fields/rocket-cdn.php @@ -0,0 +1,79 @@ + +
      +
      +
      + +
      + +
      + +
      + +
      + $url ) : // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound + ?> +
      + + + + +
      + +
      + +
      + + +
      + + + + +
      + +
      + +
      + +
      +
      +
      +
      +

      +
      +
      +
      + ' . esc_html__( 'Learn more', 'rocket' ) . '' + ); + ?> +

      + render_action_button( + 'link', + 'rocket_purge_rocketcdn', + [ + 'label' => __( 'Clear all RocketCDN cache files', 'rocket' ), + 'attributes' => [ + 'class' => 'wpr-button wpr-button--icon wpr-button--small wpr-button--purple wpr-icon-trash', + ], + ] + ); + ?> +
      diff --git a/wp-content/plugins/wp-rocket/views/settings/fields/select.php b/wp-content/plugins/wp-rocket/views/settings/fields/select.php new file mode 100644 index 0000000..57be1c9 --- /dev/null +++ b/wp-content/plugins/wp-rocket/views/settings/fields/select.php @@ -0,0 +1,43 @@ + + +
      > +
      + + +
      + + +
      + +
      + +
      diff --git a/wp-content/plugins/wp-rocket/views/settings/fields/sliding-checkbox.php b/wp-content/plugins/wp-rocket/views/settings/fields/sliding-checkbox.php new file mode 100644 index 0000000..a5ab3ca --- /dev/null +++ b/wp-content/plugins/wp-rocket/views/settings/fields/sliding-checkbox.php @@ -0,0 +1,36 @@ + + +
      +
      + > + +
      + + +
      + +
      + +
      diff --git a/wp-content/plugins/wp-rocket/views/settings/fields/text.php b/wp-content/plugins/wp-rocket/views/settings/fields/text.php new file mode 100644 index 0000000..be7e7e8 --- /dev/null +++ b/wp-content/plugins/wp-rocket/views/settings/fields/text.php @@ -0,0 +1,43 @@ + + +
      +
      + +
      + +
      + +
      +
      + + + + > + +
      + +
      + +
      +
      diff --git a/wp-content/plugins/wp-rocket/views/settings/fields/textarea.php b/wp-content/plugins/wp-rocket/views/settings/fields/textarea.php new file mode 100644 index 0000000..47e51e1 --- /dev/null +++ b/wp-content/plugins/wp-rocket/views/settings/fields/textarea.php @@ -0,0 +1,50 @@ + + +
      > + + + + +
      + +
      + +
      + +
      + +
      + +
      + + +
      diff --git a/wp-content/plugins/wp-rocket/views/settings/navigation.php b/wp-content/plugins/wp-rocket/views/settings/navigation.php new file mode 100644 index 0000000..7ce663f --- /dev/null +++ b/wp-content/plugins/wp-rocket/views/settings/navigation.php @@ -0,0 +1,30 @@ + + + +
      +
      +
      + + +
      +
      +

      +
      + render_settings_sections( $data['id'] ); ?> +
      diff --git a/wp-content/plugins/wp-rocket/views/settings/page-sections/advanced-cache.php b/wp-content/plugins/wp-rocket/views/settings/page-sections/advanced-cache.php new file mode 100644 index 0000000..90977a5 --- /dev/null +++ b/wp-content/plugins/wp-rocket/views/settings/page-sections/advanced-cache.php @@ -0,0 +1,24 @@ + + +
      +
      +

      +
      + render_settings_sections( $data['id'] ); ?> +
      diff --git a/wp-content/plugins/wp-rocket/views/settings/page-sections/cache.php b/wp-content/plugins/wp-rocket/views/settings/page-sections/cache.php new file mode 100644 index 0000000..db734a8 --- /dev/null +++ b/wp-content/plugins/wp-rocket/views/settings/page-sections/cache.php @@ -0,0 +1,24 @@ + + +
      +
      +

      +
      + render_settings_sections( $data['id'] ); ?> +
      diff --git a/wp-content/plugins/wp-rocket/views/settings/page-sections/cloudflare.php b/wp-content/plugins/wp-rocket/views/settings/page-sections/cloudflare.php new file mode 100644 index 0000000..f822ae9 --- /dev/null +++ b/wp-content/plugins/wp-rocket/views/settings/page-sections/cloudflare.php @@ -0,0 +1,54 @@ + + +
      +
      +

      + Logo Cloudflare +

      +
      + render_settings_sections( $data['id'] ); ?> +
      +

      +
      + +
      +
      + ' . esc_html__( 'Learn more', 'rocket' ) . '' + ); + ?> +

      + render_action_button( + 'link', + 'rocket_purge_cloudflare', + [ + 'label' => __( 'Clear all Cloudflare cache files', 'rocket' ), + 'attributes' => [ + 'class' => 'wpr-button wpr-button--icon wpr-button--small wpr-button--purple wpr-icon-trash', + ], + ] + ); + ?> +
      + +
      diff --git a/wp-content/plugins/wp-rocket/views/settings/page-sections/dashboard.php b/wp-content/plugins/wp-rocket/views/settings/page-sections/dashboard.php new file mode 100644 index 0000000..f0e0f11 --- /dev/null +++ b/wp-content/plugins/wp-rocket/views/settings/page-sections/dashboard.php @@ -0,0 +1,263 @@ + +
      +
      +

      +
      + + +
      +
      +
      +

      + +
      + +

      +

      +
      + +
      +
      + + +
      +
      + +
      +

      + render_action_button( + 'button', + 'refresh_account', + [ + 'label' => __( 'Refresh info', 'rocket' ), + 'attributes' => [ + 'class' => 'wpr-infoAction wpr-icon-refresh', + ], + ] + ); + ?> +
      + + + + + render_settings_sections( $data['id'] ); + ?> +
      + +
      +
      +

      +
      + +
      +
      + +
      +

      + render_action_button( + 'link', + 'purge_cache', + [ + 'label' => __( 'Clear cache', 'rocket' ), + 'parameters' => [ + 'type' => 'all', + ], + 'attributes' => [ + 'class' => 'wpr-button wpr-button--icon wpr-button--small wpr-icon-trash', + ], + ] + ); + ?> +
      + + +
      +

      + render_action_button( + 'link', + 'preload', + [ + 'label' => __( 'Preload cache', 'rocket' ), + 'attributes' => [ + 'class' => 'wpr-button wpr-button--icon wpr-button--small wpr-icon-refresh', + ], + ] + ); + ?> +
      + + + +
      +

      + render_action_button( + 'link', + 'rocket_purge_opcache', + [ + 'label' => __( 'Purge OPCache', 'rocket' ), + 'attributes' => [ + 'class' => 'wpr-button wpr-button--icon wpr-button--small wpr-icon-trash', + ], + ] + ); + ?> +
      + + +
      +

      + render_action_button( + 'link', + 'rocket_generate_critical_css', + [ + 'label' => __( 'Regenerate Critical CSS', 'rocket' ), + 'attributes' => [ + 'class' => 'wpr-button wpr-button--icon wpr-button--small wpr-icon-refresh', + ], + ] + ); + ?> +
      + +
      +
      +
      +
      +
      +
      + render_part( 'getting-started' ); ?> +
      +

      +
      +
      +
      +
        + +
      • + +
      +
      +
      +
      +
      +

      +

      +
      +
      + render_action_button( + 'link', + 'ask_support', + [ + 'label' => __( 'Ask support', 'rocket' ), + 'attributes' => [ + 'class' => 'wpr-button wpr-button--icon wpr-button--small wpr-button--blue wpr-icon-help wpr-js-askSupport', + 'target' => '_blank', + ], + ] + ); + ?> +
      +
      +
      +
      +
      + +
      + render_part( 'documentation' ); ?> +
      +
      +
      diff --git a/wp-content/plugins/wp-rocket/views/settings/page-sections/database.php b/wp-content/plugins/wp-rocket/views/settings/page-sections/database.php new file mode 100644 index 0000000..3faab78 --- /dev/null +++ b/wp-content/plugins/wp-rocket/views/settings/page-sections/database.php @@ -0,0 +1,29 @@ + + +
      +
      +

      +
      + render_settings_sections( $data['id'] ); ?> +
      + +

      +
      + +
      diff --git a/wp-content/plugins/wp-rocket/views/settings/page-sections/file-optimization.php b/wp-content/plugins/wp-rocket/views/settings/page-sections/file-optimization.php new file mode 100644 index 0000000..0f8fc37 --- /dev/null +++ b/wp-content/plugins/wp-rocket/views/settings/page-sections/file-optimization.php @@ -0,0 +1,24 @@ + + +
      +
      +

      +
      + render_settings_sections( $data['id'] ); ?> +
      diff --git a/wp-content/plugins/wp-rocket/views/settings/page-sections/heartbeat.php b/wp-content/plugins/wp-rocket/views/settings/page-sections/heartbeat.php new file mode 100644 index 0000000..2daffb1 --- /dev/null +++ b/wp-content/plugins/wp-rocket/views/settings/page-sections/heartbeat.php @@ -0,0 +1,25 @@ + + +
      +
      +

      +
      + render_settings_sections( $data['id'] ); ?> +
      diff --git a/wp-content/plugins/wp-rocket/views/settings/page-sections/imagify.php b/wp-content/plugins/wp-rocket/views/settings/page-sections/imagify.php new file mode 100644 index 0000000..cea1efe --- /dev/null +++ b/wp-content/plugins/wp-rocket/views/settings/page-sections/imagify.php @@ -0,0 +1,49 @@ + + +
      +
      +

      +
      +
      +
      +

      + , %2$s = , %3$s = , %4$s = . + printf( esc_html__( '%1$sWP ROCKET%2$s created %3$sIMAGIFY%4$s %1$sfor best-in-class image optimization.%2$s', 'rocket' ), '', '', '', '' ); + ?> +

      +

      +

      +
        +
      • +
      • +
      • +
      + get_post_install_url() ) . '">' . esc_html( $button_text ) . ''; + } + ?> +
      +
      + +
      +
      +
      diff --git a/wp-content/plugins/wp-rocket/views/settings/page-sections/license.php b/wp-content/plugins/wp-rocket/views/settings/page-sections/license.php new file mode 100644 index 0000000..2025b01 --- /dev/null +++ b/wp-content/plugins/wp-rocket/views/settings/page-sections/license.php @@ -0,0 +1,61 @@ + + +
      +

      +
      + +
      +
      + , %4$s = . + esc_html__( '%1$s%2$s%3$stutorial%4$s', 'rocket' ), + '', + '' + ), + sprintf( + // translators: %1$s = , %4$s = . + esc_html__( '%1$s%2$s%3$ssupport%4$s', 'rocket' ), + '', + '' + ) + ); + ?> +
      +

      + +
      +
      + render_settings_sections( $data['id'] ); ?> +
      +
      diff --git a/wp-content/plugins/wp-rocket/views/settings/page-sections/media.php b/wp-content/plugins/wp-rocket/views/settings/page-sections/media.php new file mode 100644 index 0000000..0f9800f --- /dev/null +++ b/wp-content/plugins/wp-rocket/views/settings/page-sections/media.php @@ -0,0 +1,24 @@ + + +
      +
      +

      +
      + render_settings_sections( $data['id'] ); ?> +
      diff --git a/wp-content/plugins/wp-rocket/views/settings/page-sections/page-cdn.php b/wp-content/plugins/wp-rocket/views/settings/page-sections/page-cdn.php new file mode 100644 index 0000000..ba79706 --- /dev/null +++ b/wp-content/plugins/wp-rocket/views/settings/page-sections/page-cdn.php @@ -0,0 +1,40 @@ + + +
      +
      +

      +
      + + render_settings_sections( $data['id'] ); ?> + +
      diff --git a/wp-content/plugins/wp-rocket/views/settings/page-sections/preload.php b/wp-content/plugins/wp-rocket/views/settings/page-sections/preload.php new file mode 100644 index 0000000..550d20a --- /dev/null +++ b/wp-content/plugins/wp-rocket/views/settings/page-sections/preload.php @@ -0,0 +1,24 @@ + + +
      +
      +

      +
      + render_settings_sections( $data['id'] ); ?> +
      diff --git a/wp-content/plugins/wp-rocket/views/settings/page-sections/sucuri.php b/wp-content/plugins/wp-rocket/views/settings/page-sections/sucuri.php new file mode 100644 index 0000000..bb69526 --- /dev/null +++ b/wp-content/plugins/wp-rocket/views/settings/page-sections/sucuri.php @@ -0,0 +1,55 @@ + + +
      +
      +

      + <?php echo esc_attr( $data['title'] ); ?> +

      +
      + render_settings_sections( $data['id'] ); ?> + +
      +

      +
      +
      +
      + ' . esc_html__( 'Learn more', 'rocket' ) . '' + ); + ?> +

      + render_action_button( + 'link', + 'rocket_purge_sucuri', + [ + 'label' => __( 'Clear all Sucuri cache files', 'rocket' ), + 'attributes' => [ + 'class' => 'wpr-button wpr-button--icon wpr-button--small wpr-button--purple wpr-icon-trash', + ], + ] + ); + ?> +
      + +
      diff --git a/wp-content/plugins/wp-rocket/views/settings/page-sections/tools.php b/wp-content/plugins/wp-rocket/views/settings/page-sections/tools.php new file mode 100644 index 0000000..84f8f57 --- /dev/null +++ b/wp-content/plugins/wp-rocket/views/settings/page-sections/tools.php @@ -0,0 +1,119 @@ +exists( Logger::get_log_file_path() ) ) { + $rocket_stats = Logger::get_log_file_stats(); + + if ( ! is_wp_error( $rocket_stats ) ) { + // translators: %1$s = formatted file size, %2$s = formatted number of entries (don't use %2$d). + $rocket_log_description .= sprintf( esc_html__( 'Files size: %1$s. Number of entries: %2$s.', 'rocket' ), '' . esc_html( $rocket_stats['bytes'] ) . '', '' . esc_html( $rocket_stats['entries'] ) . '' ); + + // translators: %1$s = opening tag, %2$s = closing tag. + $rocket_log_description .= '
      ' . sprintf( esc_html__( '%1$sDownload the file%2$s.', 'rocket' ), '', '' ); + + // translators: %1$s = opening tag, %2$s = closing tag. + $rocket_log_description .= ' - ' . sprintf( esc_html__( '%1$sDelete the file%2$s.', 'rocket' ), '', '' ); + } +} +?> + +
      +
      +

      +
      +
      +
      +
      +
      +
      +
      + render_action_button( + 'link', + 'rocket_export', + [ + 'label' => __( 'Download settings', 'rocket' ), + 'attributes' => [ + 'class' => 'wpr-button wpr-button--icon wpr-button--small wpr-button--purple wpr-icon-chevron-down', + ], + ] + ); + ?> +
      +
      + + render_import_form(); ?> + +
      +
      +
      +
      + +

      + . + printf( esc_html__( 'You can rollback to the previous major version here.%sThen send us a support request.', 'rocket' ), '
      ' ); + ?> +
      +
      +
      + render_action_button( + 'link', + 'rocket_rollback', + [ + // translators: %s = WP Rocket previous version. + 'label' => sprintf( __( 'Reinstall version %s', 'rocket' ), WP_ROCKET_LASTVERSION ), + 'attributes' => [ + 'class' => 'wpr-button wpr-button--icon wpr-button--small wpr-button--red wpr-icon-refresh', + ], + ] + ); + ?> +
      +
      + + + + +
      diff --git a/wp-content/plugins/wp-rocket/views/settings/page-sections/tutorials.php b/wp-content/plugins/wp-rocket/views/settings/page-sections/tutorials.php new file mode 100644 index 0000000..37785cc --- /dev/null +++ b/wp-content/plugins/wp-rocket/views/settings/page-sections/tutorials.php @@ -0,0 +1,65 @@ + __( 'Getting Started', 'rocket' ), + 'tutorials' => [ + '7seqacq2ol' => __( 'Getting Started with WP Rocket', 'rocket' ), + 'fj42vucf99' => __( 'Finding the Best Settings for Your Site', 'rocket' ), + 'z1qxl7s2zn' => __( 'How to Check if WP Rocket is Caching Your Site', 'rocket' ), + 'j042jylrre' => __( 'How to Measure the Speed of Your Site', 'rocket' ), + ], + ], + [ + 'title' => __( 'File Optimization', 'rocket' ), + 'tutorials' => [ + 'frwm2xrksl' => __( 'Troubleshooting Display Issues with File Optimization', 'rocket' ), + '95z0cb0yxb' => __( 'How to Find the Right JavaScript to Exclude', 'rocket' ), + '9m1zg8p5wc' => __( 'How External Content Slows Your Site', 'rocket' ), + ], + ], + [ + 'title' => __( 'Preload', 'rocket' ), + 'tutorials' => [ + '803tlui8oi' => __( 'How Preloading Works', 'rocket' ), + ], + ], + [ + 'title' => __( 'Add-ons', 'rocket' ), + 'tutorials' => [ + '09kolaz9o0' => __( 'Set Up the Cloudflare Add-on', 'rocket' ), + ], + ], +]; +?> +
      +
      +

      +
      +
      +
      + +
      +

      +
      +
      + $rocket_tutorial_title ) : ?> +
      + +
       
      +

      +
      + +
      + +
      +
      +
      diff --git a/wp-content/plugins/wp-rocket/views/settings/page.php b/wp-content/plugins/wp-rocket/views/settings/page.php new file mode 100644 index 0000000..009e05e --- /dev/null +++ b/wp-content/plugins/wp-rocket/views/settings/page.php @@ -0,0 +1,114 @@ + +
      +

      +
      + +
      + +
      + render_navigation(); ?> +
      + +
      + +
      +
      + + render_form_sections(); ?> + render_hidden_fields(); ?> + +
      + render_imagify_section(); + } + + $this->render_tools_section(); + $this->render_tutorials_section(); + ?> +
      +
      + + +
      +
      + +
      + + +
      + +
      +
      +

      + +
      +
      +

      +

      +

      +

      +
      +

      +
      + +
      +
      +
      +
      +
      +
      +

      + +
      +
      +

      if granted permission.', 'rocket' ); ?>

      + +
      +

      +
      + +
      +
      +
      +
      +
      + +
      diff --git a/wp-content/plugins/wp-rocket/views/settings/partials/documentation.php b/wp-content/plugins/wp-rocket/views/settings/partials/documentation.php new file mode 100644 index 0000000..0e9a5d9 --- /dev/null +++ b/wp-content/plugins/wp-rocket/views/settings/partials/documentation.php @@ -0,0 +1,31 @@ + + +
      + +

      +

      + + render_action_button( + 'link', + 'documentation', + [ + 'label' => __( 'Read the documentation', 'rocket' ), + 'attributes' => [ + 'target' => '_blank', + 'class' => 'wpr-button wpr-button--small wpr-button--blueDark', + ], + ] + ); + ?> + +
      diff --git a/wp-content/plugins/wp-rocket/views/settings/partials/getting-started.php b/wp-content/plugins/wp-rocket/views/settings/partials/getting-started.php new file mode 100644 index 0000000..7340f64 --- /dev/null +++ b/wp-content/plugins/wp-rocket/views/settings/partials/getting-started.php @@ -0,0 +1,29 @@ + __( 'What WP Rocket Does For You By Default', 'rocket' ), + 'fj42vucf99' => __( 'Finding the Best Settings for Your Site', 'rocket' ), + 'z1qxl7s2zn' => __( 'How to Check if WP Rocket is Caching Your Site', 'rocket' ), + 'j042jylrre' => __( 'How to Measure the Speed of Your Site', 'rocket' ), +]; +?> +
      +

      +
      +
      +
      +
        + $rocket_tutorial_title ) : ?> + +
      • + +
      +
      +
      diff --git a/wp-content/plugins/wp-rocket/views/settings/partials/sidebar.php b/wp-content/plugins/wp-rocket/views/settings/partials/sidebar.php new file mode 100644 index 0000000..7077e69 --- /dev/null +++ b/wp-content/plugins/wp-rocket/views/settings/partials/sidebar.php @@ -0,0 +1,34 @@ + + +

      +
      +

      + + +
      +
      +

      + +
      +
      +

      + +
      + +
      + +

      +

      +
      + +render_part( 'documentation' ); diff --git a/wp-content/plugins/wp-rocket/views/settings/sections/addons-container.php b/wp-content/plugins/wp-rocket/views/settings/sections/addons-container.php new file mode 100644 index 0000000..c25532b --- /dev/null +++ b/wp-content/plugins/wp-rocket/views/settings/sections/addons-container.php @@ -0,0 +1,33 @@ + + +
      +

      + + + +
      + +
      +
      + +
      + render_settings_fields( $data['page'], $data['id'] ); ?> +
      diff --git a/wp-content/plugins/wp-rocket/views/settings/sections/fields-container.php b/wp-content/plugins/wp-rocket/views/settings/sections/fields-container.php new file mode 100644 index 0000000..eb0a64e --- /dev/null +++ b/wp-content/plugins/wp-rocket/views/settings/sections/fields-container.php @@ -0,0 +1,46 @@ + + + +
      +

      + + + +
      + +
      +
      + +
      + +
      + render_settings_fields( $data['page'], $data['id'] ); ?> +
      + + +
      + +
      + +
      diff --git a/wp-content/plugins/wp-rocket/views/settings/sections/nocontainer.php b/wp-content/plugins/wp-rocket/views/settings/sections/nocontainer.php new file mode 100644 index 0000000..0f1e62b --- /dev/null +++ b/wp-content/plugins/wp-rocket/views/settings/sections/nocontainer.php @@ -0,0 +1,23 @@ + + +render_settings_fields( $data['page'], $data['id'] ); diff --git a/wp-content/plugins/wp-rocket/wp-rocket.php b/wp-content/plugins/wp-rocket/wp-rocket.php new file mode 100644 index 0000000..a8e9866 --- /dev/null +++ b/wp-content/plugins/wp-rocket/wp-rocket.php @@ -0,0 +1,127 @@ + 'WP Rocket', + 'plugin_file' => WP_ROCKET_FILE, + 'plugin_version' => WP_ROCKET_VERSION, + 'plugin_last_version' => WP_ROCKET_LASTVERSION, + 'wp_version' => WP_ROCKET_WP_VERSION, + 'php_version' => WP_ROCKET_PHP_VERSION, + ] +); + +if ( $wp_rocket_requirement_checks->check() ) { + require WP_ROCKET_INC_PATH . 'main.php'; +} + +unset( $wp_rocket_requirement_checks ); diff --git a/wp-content/wp-rocket-config/index.html b/wp-content/wp-rocket-config/index.html new file mode 100644 index 0000000..e69de29 diff --git a/wp-content/wp-rocket-config/localhost.php b/wp-content/wp-rocket-config/localhost.php new file mode 100644 index 0000000..8ebaeb9 --- /dev/null +++ b/wp-content/wp-rocket-config/localhost.php @@ -0,0 +1,50 @@ + 1, + 'utm_medium' => 1, + 'utm_campaign' => 1, + 'utm_expid' => 1, + 'utm_term' => 1, + 'utm_content' => 1, + 'mtm_source' => 1, + 'mtm_medium' => 1, + 'mtm_campaign' => 1, + 'mtm_keyword' => 1, + 'mtm_cid' => 1, + 'mtm_content' => 1, + 'pk_source' => 1, + 'pk_medium' => 1, + 'pk_campaign' => 1, + 'pk_keyword' => 1, + 'pk_cid' => 1, + 'pk_content' => 1, + 'fb_action_ids' => 1, + 'fb_action_types' => 1, + 'fb_source' => 1, + 'fbclid' => 1, + 'campaignid' => 1, + 'adgroupid' => 1, + 'adid' => 1, + 'gclid' => 1, + 'age-verified' => 1, + 'ao_noptimize' => 1, + 'usqp' => 1, + 'cn-reloaded' => 1, + '_ga' => 1, + 'sscid' => 1, +); +$rocket_cache_mandatory_cookies = ''; +$rocket_cache_dynamic_cookies = array();